From: fujinhua Date: Thu, 1 Nov 2018 08:13:04 +0000 (+0800) Subject: Add vnfVms to get vnf resp X-Git-Tag: 3.0.0-ONAP~23 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=54a3a58c5c57788b24265cf99bde972678c917e5;p=vfc%2Fnfvo%2Flcm.git Add vnfVms to get vnf resp Change-Id: I537a5f633f29c98da3423ae4c96799f143aea408 Issue-ID: VFC-1177 Signed-off-by: fujinhua --- diff --git a/lcm/ns_vnfs/biz/get_vnfs.py b/lcm/ns_vnfs/biz/get_vnfs.py index 0ca8e66e..d2e8ef00 100644 --- a/lcm/ns_vnfs/biz/get_vnfs.py +++ b/lcm/ns_vnfs/biz/get_vnfs.py @@ -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 diff --git a/lcm/ns_vnfs/serializers/serializers.py b/lcm/ns_vnfs/serializers/serializers.py index 6351f911..7dd01150 100644 --- a/lcm/ns_vnfs/serializers/serializers.py +++ b/lcm/ns_vnfs/serializers/serializers.py @@ -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): diff --git a/lcm/ns_vnfs/views/views.py b/lcm/ns_vnfs/views/views.py index 412551f5..5756b8d9 100644 --- a/lcm/ns_vnfs/views/views.py +++ b/lcm/ns_vnfs/views/views.py @@ -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():