Refactor codes for manual scale ns 21/91121/3
authorfujinhua <fu.jinhua@zte.com.cn>
Wed, 10 Jul 2019 02:57:31 +0000 (10:57 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Wed, 10 Jul 2019 03:16:53 +0000 (11:16 +0800)
Change-Id: Ib738fc6e9c5c7c4b4120402af6a1eebd2f15aad8
Issue-ID: VFC-1429
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/ns/tests/test_ns_manual_scale.py
lcm/ns/views/deprecated/scale_ns_views.py

index 4c31611..e4c3c71 100644 (file)
@@ -131,7 +131,7 @@ class TestNsManualScale(TestCase):
         mock_start.side_effect = NSLCMException("NS scale failed.")
         response = self.client.post("/api/nslcm/v1/ns/%s/scale" % self.ns_inst_id, data={}, format='json')
         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
-        self.assertIn("error", response.data)
+        self.assertIn("detail", response.data)
 
     @mock.patch.object(NSManualScaleService, 'start')
     def test_ns_manual_scale_when_ns_not_exist(self, mock_start):
@@ -139,4 +139,4 @@ class TestNsManualScale(TestCase):
         scale_ns_json = SCALE_NS_DICT.copy()
         response = self.client.post("/api/nslcm/v1/ns/11/scale", data=scale_ns_json, format='json')
         self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
-        self.assertIn("error", response.data)
+        self.assertIn("detail", response.data)
index ed51e86..a260ce8 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import logging
-import traceback
+
 from drf_yasg.utils import swagger_auto_schema
 from rest_framework import status
 from rest_framework.response import Response
@@ -24,6 +24,7 @@ from lcm.ns.serializers.deprecated.ns_serializers import _ManualScaleNsReqSerial
 from lcm.pub.exceptions import NSLCMException
 from lcm.pub.utils.jobutil import JobUtil
 from lcm.jobs.enum import JOB_TYPE, JOB_ACTION
+from .common import view_safe_call_with_log
 
 logger = logging.getLogger(__name__)
 
@@ -36,27 +37,29 @@ class NSManualScaleView(APIView):
             status.HTTP_500_INTERNAL_SERVER_ERROR: "Inner error"
         }
     )
+    @view_safe_call_with_log(logger=logger)
     def post(self, request, ns_instance_id):
         logger.debug("Enter NSManualScaleView::post %s, %s", request.data, ns_instance_id)
-        job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.MANUAL_SCALE, ns_instance_id)
-        try:
-            req_serializer = _ManualScaleNsReqSerializer(data=request.data)
-            if not req_serializer.is_valid():
-                raise NSLCMException(req_serializer.errors)
-            req = request.data
-            scale_data = {}
-            scale_data['scaleType'] = req['scaleType']
-            scaleNsData = req['scaleNsData'][0]
-            scale_data['scaleNsData'] = {"scaleNsByStepsData": scaleNsData['scaleNsByStepsData'][0]}
-            NSManualScaleService(ns_instance_id, scale_data, job_id).start()
-
-            resp_serializer = _NsOperateJobSerializer(data={'jobId': job_id})
-            if not resp_serializer.is_valid():
-                raise NSLCMException(resp_serializer.errors)
-
-            return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED)
-        except Exception as e:
-            logger.error(traceback.format_exc())
-            JobUtil.add_job_status(job_id, 255, 'NS scale failed: %s' % e.args[0])
-            return Response(data={'error': 'NS scale failed: %s' % ns_instance_id},
-                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+        req_serializer = _ManualScaleNsReqSerializer(data=request.data)
+        if not req_serializer.is_valid():
+            raise NSLCMException(req_serializer.errors)
+
+        req = request.data
+        scale_data = {}
+        scale_data['scaleType'] = req['scaleType']
+        scaleNsData = req['scaleNsData'][0]
+        scale_data['scaleNsData'] = {
+            "scaleNsByStepsData": scaleNsData['scaleNsByStepsData'][0]
+        }
+        job_id = JobUtil.create_job(
+            JOB_TYPE.NS,
+            JOB_ACTION.MANUAL_SCALE,
+            ns_instance_id
+        )
+        NSManualScaleService(ns_instance_id, scale_data, job_id).start()
+
+        resp_serializer = _NsOperateJobSerializer(data={'jobId': job_id})
+        if not resp_serializer.is_valid():
+            raise NSLCMException(resp_serializer.errors)
+
+        return Response(data=resp_serializer.data, status=status.HTTP_202_ACCEPTED)