diff options
-rw-r--r-- | lcm/pub/config/config.py | 3 | ||||
-rw-r--r-- | lcm/settings.py | 1 | ||||
-rw-r--r-- | lcm/urls.py | 6 | ||||
-rw-r--r-- | lcm/workflows/auto_deploy.py | 38 |
4 files changed, 48 insertions, 0 deletions
diff --git a/lcm/pub/config/config.py b/lcm/pub/config/config.py index 85ba24d8..f501d338 100644 --- a/lcm/pub/config/config.py +++ b/lcm/pub/config/config.py @@ -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 + diff --git a/lcm/settings.py b/lcm/settings.py index f338ac29..1cf13714 100644 --- a/lcm/settings.py +++ b/lcm/settings.py @@ -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', diff --git a/lcm/urls.py b/lcm/urls.py index 9471def9..b0333513 100644 --- a/lcm/urls.py +++ b/lcm/urls.py @@ -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 index 00000000..8813542b --- /dev/null +++ b/lcm/workflows/auto_deploy.py @@ -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()) + |