summaryrefslogtreecommitdiffstats
path: root/lcm/lcm/nf/biz/query_vnf.py
diff options
context:
space:
mode:
Diffstat (limited to 'lcm/lcm/nf/biz/query_vnf.py')
-rw-r--r--lcm/lcm/nf/biz/query_vnf.py139
1 files changed, 139 insertions, 0 deletions
diff --git a/lcm/lcm/nf/biz/query_vnf.py b/lcm/lcm/nf/biz/query_vnf.py
new file mode 100644
index 00000000..1a6bdd90
--- /dev/null
+++ b/lcm/lcm/nf/biz/query_vnf.py
@@ -0,0 +1,139 @@
+# Copyright 2017 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# 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.
+
+import logging
+
+from lcm.pub.database.models import NfInstModel, StorageInstModel, VLInstModel, NetworkInstModel, VNFCInstModel, \
+ VmInstModel
+from lcm.pub.exceptions import NFLCMException
+
+logger = logging.getLogger(__name__)
+
+
+class QueryVnf:
+ def __init__(self, data, instanceid=''):
+ self.vnf_inst_id = instanceid
+ self.data = data
+
+ def query_single_vnf(self):
+ vnf_inst = NfInstModel.objects.filter(nfinstid=self.vnf_inst_id)
+ if not vnf_inst.exists():
+ raise NFLCMException('VnfInst(%s) does not exist' % self.vnf_inst_id)
+ resp_data = self.fill_resp_data(vnf_inst[0])
+ return resp_data
+
+ def query_multi_vnf(self):
+ vnf_insts = NfInstModel.objects.all()
+ if not vnf_insts:
+ raise NFLCMException('VnfInsts does not exist')
+ resp_data = []
+ for vnf_inst in vnf_insts:
+ resp_data.append(self.fill_resp_data(vnf_inst))
+ return resp_data
+
+ def fill_resp_data(self, vnf):
+ logger.info('Get storages')
+ storage_inst = StorageInstModel.objects.filter(instid=vnf.nfinstid)
+ arr = []
+ for s in storage_inst:
+ storage = {
+ "virtualStorageInstanceId": s.storageid,
+ "storageResource": {
+ "vimId": s.vimid,
+ "resourceId": s.resouceid
+ }
+ }
+ arr.append(storage)
+ logger.info('Get networks')
+ vl_inst = VLInstModel.objects.filter(ownerid=vnf.nfinstid)
+ vl_arr = []
+ for v in vl_inst:
+ net = NetworkInstModel.objects.filter(networkid=v.relatednetworkid)
+ if not net:
+ raise NFLCMException('NetworkInst(%s) does not exist.' % v.relatednetworkid)
+ v_dic = {
+ "virtualLinkInstanceId": v.vlinstanceid,
+ "virtualLinkDescId": v.vldid,
+ "networkResource": {
+ "vimId": net[0].vimid,
+ "resourceId": net[0].resouceid
+ }
+ }
+ vl_arr.append(v_dic)
+ logger.info('Get vnfcs')
+ vnfc_insts = VNFCInstModel.objects.filter(instid=vnf.nfinstid)
+ vnfc_arr = []
+ for vnfc in vnfc_insts:
+ vm = VmInstModel.objects.filter(vmid=vnfc.vmid)
+ if not vm:
+ raise NFLCMException('VmInst(%s) does not exist.' % vnfc.vmid)
+ storage = StorageInstModel.objects.filter(ownerid=vm[0].vmid)
+ if not storage:
+ raise NFLCMException('StorageInst(%s) does not exist.' % vm[0].vmid)
+ vnfc_dic = {
+ "vnfcInstanceId": vnfc.vnfcinstanceid,
+ "vduId": vnfc.vduid,
+ "computeResource": {
+ "vimId": vm[0].vimid,
+ "resourceId": vm[0].resouceid
+ },
+ "storageResourceIds": [s.storageid for s in storage]
+ }
+ vnfc_arr.append(vnfc_dic)
+ logger.info('Get vms')
+ vms = VmInstModel.objects.filter(instid=vnf.nfinstid)
+ vm_arr = []
+ for vm in vms:
+ vm_dic = {
+ "vmid": vm.vmid,
+ "vimid": vm.vimid,
+ "tenant": vm.tenant,
+ "resouceid": vm.resouceid,
+ "vmname": vm.vmname,
+ "nic_array": vm.nic_array,
+ "metadata": vm.metadata,
+ "volume_array": vm.volume_array,
+ "server_group": vm.server_group,
+ "availability_zone": vm.availability_zone,
+ "flavor_id": vm.flavor_id,
+ "security_groups": vm.security_groups,
+ "operationalstate": vm.operationalstate,
+ "insttype": vm.insttype,
+ "is_predefined": vm.is_predefined,
+ "create_time": vm.create_time,
+ "instid": vm.instid,
+ "nodeId": vm.nodeId
+ }
+ vm_arr.append(vm_dic)
+
+ resp_data = {
+ "vnfInstanceId": vnf.nfinstid,
+ "vnfInstanceName": vnf.nf_name,
+ "onboardedVnfPkgInfoId": vnf.package_id,
+ "vnfdVersion": vnf.version,
+ "vnfProvider": vnf.vendor,
+ "instantiatedVnfInfo": {
+ "flavourId": vnf.flavour_id,
+ "vnfState": vnf.status,
+ "scaleStatus": [],
+ "extCpInfo": [],
+ "extVirtualLink": [],
+ "monitoringParameters": {},
+ "vimInfo": vm_arr,
+ "vnfcResourceInfo": vnfc_arr,
+ "virtualLinkResourceInfo": vl_arr,
+ "virtualStorageResourceInfo": arr
+ }
+ }
+ return resp_data