Fix VFC swagger bug
[vfc/nfvo/lcm.git] / lcm / workflows / views.py
index 92f029f..41779e8 100644 (file)
 
 import logging
 import traceback
+import sys
 
 from rest_framework import status
 from rest_framework.decorators import api_view
 from rest_framework.response import Response
 
-from lcm.pub.database import models
+from lcm.pub.database.models import WFPlanModel
 from lcm.pub.utils.syscomm import fun_name
 from lcm.pub.utils.values import ignore_case_get
+from lcm.pub.msapi import activiti
 
 
 logger = logging.getLogger(__name__)
@@ -30,16 +32,31 @@ logger = logging.getLogger(__name__)
 @api_view(http_method_names=['POST'])
 def deploy_workflow(request, *args, **kwargs):
     logger.debug("Enter %s", fun_name())
-    file_path = ignore_case_get(request.data, "filePath")
-    logger.debug("file_path is %s", file_path)
-    ret = None
     try:
-        ret = [0, "TODO"]
+        file_path = ignore_case_get(request.data, "filePath")
+        force_deploy = ignore_case_get(request.data, "forceDeploy")
+        logger.debug("file_path is %s, force_deploy is %s", file_path, force_deploy)
+        if force_deploy.upper() == "TRUE":
+            plans = WFPlanModel.objects.filter()
+            if len(plans) > 0:
+                activiti.undeploy_workflow(plans[0].deployed_id)
+                plans.delete()
+        else:
+            if WFPlanModel.objects.filter():
+                logger.warn("Already deployed.")
+                return Response(data={'msg': 'Already deployed.'}, status=status.HTTP_202_ACCEPTED)
+        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()
     except:
         logger.error(traceback.format_exc())
         return Response(data={'error': str(sys.exc_info())}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-    logger.debug("Leave %s, Return value is %s", fun_name(), ret)
-    return Response(data=ret[1], status=status.HTTP_202_ACCEPTED)
+    logger.debug("Leave %s", fun_name())
+    return Response(data={'msg': 'OK'}, status=status.HTTP_202_ACCEPTED)