Fix query lcc href bug 04/83604/6
authormaopengzhang <zhang.maopeng1@zte.com.cn>
Thu, 28 Mar 2019 12:37:21 +0000 (20:37 +0800)
committermaopeng zhang <zhang.maopeng1@zte.com.cn>
Fri, 29 Mar 2019 02:45:15 +0000 (02:45 +0000)
Fix query lcc href and serilizer bug

Change-Id: Ia1396f6083aaad16ca8b2f247c7068e34cd2b7ca
Issue-ID: VFC-1059
Signed-off-by: maopengzhang <zhang.maopeng1@zte.com.cn>
lcm/ns/biz/query_ns_lcm_op_occ.py
lcm/ns/serializers/sol/ns_lcm_op_occ.py
lcm/ns/tests/test_query_ns_lcm_op.py

index 051efb2..1c8741e 100644 (file)
@@ -17,6 +17,7 @@ import logging
 
 from lcm.pub.database.models import NSLcmOpOccModel
 from lcm.pub.exceptions import NSLCMException
+from lcm.ns.const import NS_OCC_BASE_URI, NS_INSTANCE_BASE_URI
 
 logger = logging.getLogger(__name__)
 FILTERS = {
@@ -51,6 +52,7 @@ class QueryNsLcmOpOcc:
         return [self.fill_resp_data(lcm_op) for lcm_op in lcm_ops]
 
     def fill_resp_data(self, lcm_op):
+        NS_LCM_OP_OCC_URI = NS_OCC_BASE_URI % lcm_op.id
         resp_data = {
             'id': lcm_op.id,
             'operationState': lcm_op.operation_state,
@@ -64,7 +66,15 @@ class QueryNsLcmOpOcc:
             'cancelMode': lcm_op.cancel_mode,
             'error': None if not lcm_op.error else json.loads(lcm_op.error),
             'resourceChanges': None if not lcm_op.resource_changes else json.loads(lcm_op.resource_changes),
-            '_links': json.loads(lcm_op.links)
+            '_links': {
+                'self': {'href': NS_LCM_OP_OCC_URI},
+                'nsInstance': {'href': NS_INSTANCE_BASE_URI % lcm_op.ns_instance_id},
+                'retry': {'href': NS_LCM_OP_OCC_URI + '/retry'},
+                'rollback': {'href': NS_LCM_OP_OCC_URI + '/rollback'},
+                'continue': {'href': NS_LCM_OP_OCC_URI + '/continue'},
+                'fail': {'href': NS_LCM_OP_OCC_URI + '/fail'},
+                'cancel': {'href': NS_LCM_OP_OCC_URI + '/cancel'}
+            }  # json.loads(lcm_op.links)
         }
         return resp_data
 
index 9ccf920..565b876 100644 (file)
@@ -1,4 +1,5 @@
 # Copyright (c) 2019, CMCC Technologies Co., Ltd.
+# Copyright (c) 2019, ZTE
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -64,20 +65,20 @@ class LcmOpLinkSerializer(serializers.Serializer):
         help_text="URI of this resource.",
         required=True,
         allow_null=False)
-    nsInstance = serializers.CharField(
+    nsInstance = LinkSerializer(
         help_text="Link to the NS instance that the operation applies to.",
         required=True)
-    cancel = serializers.CharField(
+    cancel = LinkSerializer(
         help_text="Link to the task resource that represents the 'cancel' operation for this LCM operation occurrence.",
         required=False)
-    retry = serializers.CharField(
+    retry = LinkSerializer(
         help_text="Link to the task resource that represents the 'retry' operation for this LCM operation occurrence, "
                   "if retrying is currently allowed",
         required=False)
-    rollback = serializers.CharField(
+    rollback = LinkSerializer(
         help_text="Link to the task resource that represents the 'cancel' operation for this LCM operation occurrence.",
         required=False)
-    fail = serializers.CharField(
+    fail = LinkSerializer(
         help_text="Link to the task resource that represents the 'fail' operation for this LCM operation occurrence.",
         required=False)
 
index 102325c..e5dfa5e 100644 (file)
@@ -99,7 +99,7 @@ class TestNSLcmOpOccs(TestCase):
                         links=json.dumps({"self": {"href": "demo"}, "nsInstance": "demo"})).save()
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs", format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertEqual([self.test_single_ns_lcm_op], response.data)
+        self.assertEqual([self.test_single_ns_lcm_op], response.data)
 
     def test_get_nslcmopoccs_with_id_not_exist(self):
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs?id=dummy", format='json')
@@ -127,15 +127,15 @@ class TestNSLcmOpOccs(TestCase):
                         links=json.dumps({"self": {"href": "demo"}, "nsInstance": "demo"})).save()
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs", format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertEqual(self.test_multiple_ns_lcm_op, response.data)
+        self.assertEqual(self.test_multiple_ns_lcm_op, response.data)
 
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs?operation=SCALE", format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertEqual([self.test_single_ns_lcm_op], response.data)
+        self.assertEqual([self.test_single_ns_lcm_op], response.data)
 
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs?nsInstanceId=%s" % ns_instance_id, format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertEqual(self.test_multiple_ns_lcm_op, response.data)
+        self.assertEqual(self.test_multiple_ns_lcm_op, response.data)
 
     def test_get_nslcmopoccs_with_extra_flags(self):
         lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
@@ -147,7 +147,7 @@ class TestNSLcmOpOccs(TestCase):
                         links=json.dumps({"self": {"href": "demo"}, "nsInstance": "demo"})).save()
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs?exclude_default", format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertEqual(self.test_nslcmop_with_exclude_default, response.data)
+        self.assertEqual(self.test_nslcmop_with_exclude_default, response.data)
 
     def test_get_nslcmopocc_with_id(self):
         lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"
@@ -159,7 +159,7 @@ class TestNSLcmOpOccs(TestCase):
                         links=json.dumps({"self": {"href": "demo"}, "nsInstance": "demo"})).save()
         response = self.client.get("/api/nslcm/v1/ns_lcm_op_occs/" + lcm_op_id, format='json')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
-        self.assertEqual(self.test_single_ns_lcm_op, response.data)
+        self.assertEqual(self.test_single_ns_lcm_op['id'], response.data['id'])
 
     def test_single_nslcmopocc_with_unknown_id(self):
         lcm_op_id = "99442b18-a5c7-11e8-998c-bf1755941f16"