Add vnfVms to get vnf resp 21/71621/1
authorfujinhua <fu.jinhua@zte.com.cn>
Thu, 1 Nov 2018 08:13:04 +0000 (16:13 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Thu, 1 Nov 2018 08:13:04 +0000 (16:13 +0800)
Change-Id: I537a5f633f29c98da3423ae4c96799f143aea408
Issue-ID: VFC-1177
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/ns_vnfs/biz/get_vnfs.py
lcm/ns_vnfs/serializers/serializers.py
lcm/ns_vnfs/views/views.py

index 0ca8e66..d2e8ef0 100644 (file)
@@ -11,7 +11,7 @@
 # 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.
-from lcm.pub.database.models import NfInstModel
+from lcm.pub.database.models import NfInstModel, VmInstModel
 
 
 class GetVnf(object):
@@ -21,3 +21,12 @@ class GetVnf(object):
     def do_biz(self):
         nf_inst_info = NfInstModel.objects.filter(nfinstid=self.nf_inst_id)
         return nf_inst_info
+
+
+class GetVnfVms(object):
+    def __init__(self, nf_inst_id):
+        self.nf_inst_id = nf_inst_id
+
+    def do_biz(self):
+        vnf_vms = VmInstModel.objects.filter(instid=self.nf_inst_id)
+        return vnf_vms
index 6351f91..7dd0115 100644 (file)
@@ -26,10 +26,16 @@ class InstVnfRespSerializer(serializers.Serializer):
     jobId = serializers.CharField(help_text="ID of Job", required=True)
 
 
+class VnfVmsSerializer(serializers.Serializer):
+    vmID = serializers.CharField(help_text="ID of VM", required=True)
+    vmName = serializers.CharField(help_text="Name of VM", required=False, allow_null=True)
+
+
 class GetVnfRespSerializer(serializers.Serializer):
     vnfInstId = serializers.CharField(help_text="ID of VNF instance", required=True)
     vnfName = serializers.CharField(help_text="Name of VNF instance", required=True)
     vnfStatus = serializers.CharField(help_text="Status of VNF instance", required=True)
+    vnfVms = VnfVmsSerializer(help_text="VMs of VNF", many=True)
 
 
 class TerminateVnfReqSerializer(serializers.Serializer):
index 412551f..5756b8d 100644 (file)
@@ -25,7 +25,7 @@ from lcm.pub.msapi.extsys import get_vnfm_by_id, get_vim_by_id
 from lcm.pub.utils.jobutil import JobUtil, JOB_TYPE
 from lcm.pub.utils.values import ignore_case_get
 from lcm.ns_vnfs.biz.create_vnfs import CreateVnfs
-from lcm.ns_vnfs.biz.get_vnfs import GetVnf
+from lcm.ns_vnfs.biz.get_vnfs import GetVnf, GetVnfVms
 from lcm.ns_vnfs.serializers.serializers import GetVnfRespSerializer
 from lcm.ns_vnfs.serializers.serializers import GrantVnfReqSerializer
 from lcm.ns_vnfs.serializers.serializers import GrantVnfRespSerializer
@@ -96,10 +96,16 @@ class NfDetailView(APIView):
         if not nf_inst_info:
             return Response(status=status.HTTP_404_NOT_FOUND)
 
+        vnf_vms = GetVnfVms(vnfinstid).do_biz()
+
         rsp = {
             'vnfInstId': nf_inst_info[0].nfinstid,
             'vnfName': nf_inst_info[0].nf_name,
-            'vnfStatus': nf_inst_info[0].status
+            'vnfStatus': nf_inst_info[0].status,
+            'vnfVms': [{
+                'vmId': vm.vmid,
+                'vmName': vm.vmname
+            } for vm in vnf_vms]
         }
         resp_serializer = GetVnfRespSerializer(data=rsp)
         if not resp_serializer.is_valid():