Add deploy workflow when startup 45/8145/1
authorfujinhua <fu.jinhua@zte.com.cn>
Mon, 21 Aug 2017 08:22:31 +0000 (16:22 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Mon, 21 Aug 2017 08:22:31 +0000 (16:22 +0800)
Change-Id: Idcae0c2e439de7238eaa5f4f6afde0a6b448d48c
Issue-Id: VFC-122
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/pub/config/config.py
lcm/settings.py
lcm/urls.py
lcm/workflows/auto_deploy.py [new file with mode: 0644]

index 85ba24d..f501d33 100644 (file)
@@ -61,6 +61,9 @@ SDC_BASE_URL = "https://127.0.0.1:1234/api"
 SDC_USER = "admin"
 SDC_PASSWD = "admin"
 
+# [workflow]
+DEPLOY_WORKFLOW_WHEN_START = True
+
 
 
 
index f338ac2..1cf1371 100644 (file)
@@ -136,6 +136,7 @@ LOGGING = {
 
 if 'test' in sys.argv:
     config.REG_TO_MSB_WHEN_START = False
+    config.DEPLOY_WORKFLOW_WHEN_START = False
     DATABASES = {}
     DATABASES['default'] = {
         'ENGINE': 'django.db.backends.sqlite3',
index 9471def..b033351 100644 (file)
@@ -14,6 +14,7 @@
 
 from django.conf.urls import include, url
 from lcm.pub.config.config import REG_TO_MSB_WHEN_START, REG_TO_MSB_REG_URL, REG_TO_MSB_REG_PARAM
+from lcm.pub.config.config import DEPLOY_WORKFLOW_WHEN_START
 
 urlpatterns = [
     url(r'^', include('lcm.samples.urls')),
@@ -31,3 +32,8 @@ if REG_TO_MSB_WHEN_START:
     import json
     from lcm.pub.utils.restcall import req_by_msb
     req_by_msb(REG_TO_MSB_REG_URL, "POST", json.JSONEncoder().encode(REG_TO_MSB_REG_PARAM))
+
+# deploy workflow when startup
+if DEPLOY_WORKFLOW_WHEN_START:
+    from lcm.workflows import auto_deploy
+    auto_deploy.deploy_workflow_on_startup()
diff --git a/lcm/workflows/auto_deploy.py b/lcm/workflows/auto_deploy.py
new file mode 100644 (file)
index 0000000..8813542
--- /dev/null
@@ -0,0 +1,38 @@
+# Copyright 2017 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import logging
+import traceback
+
+from lcm.pub.database.models import WFPlanModel
+from lcm.pub.msapi import activiti
+
+logger = logging.getLogger(__name__)
+
+def deploy_workflow_on_startup():
+    try:
+        if WFPlanModel.objects.filter():
+            logger.warn("Workflow is already deployed.")
+            return
+        file_path = "TODO:"
+        deploy_info = activiti.deploy_workflow(file_path)
+        WFPlanModel(
+            deployed_id=deploy_info["deployedId"], 
+            process_id=deploy_info["processId"], 
+            status=deploy_info["status"],
+            message=deploy_info["message"],
+            plan_name="ns_instantiate").save()
+        logger.info("Deploy workflow successfully.")
+    except:
+        logger.error(traceback.format_exc())
+