1 # Copyright 2017 ZTE Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
17 from lcm.pub.database.models import VmInstModel, NetworkInstModel, \
18 SubNetworkInstModel, PortInstModel, StorageInstModel, FlavourInstModel, VNFCInstModel
19 from lcm.pub.utils.jobutil import JobUtil
20 from lcm.pub.utils.values import ignore_case_get, get_none, get_boolean, get_integer
23 def volume_save(job_id, nf_inst_id, ret):
24 JobUtil.add_job_status(job_id, 25, 'Create vloumns!')
25 StorageInstModel.objects.create(
26 storageid=str(uuid.uuid4()),
27 vimid=ignore_case_get(ret, "vimId"),
28 resourceid=ignore_case_get(ret, "id"),
29 name=ignore_case_get(ret, "name"),
30 tenant=ignore_case_get(ret, "tenantId"),
31 create_time=ignore_case_get(ret, "createTime"),
32 storagetype=get_none(ignore_case_get(ret, "type")),
33 size=ignore_case_get(ret, "size"),
35 is_predefined=ignore_case_get(ret, "returnCode"),
36 nodeId=ignore_case_get(ret, "nodeId"),
40 def network_save(job_id, nf_inst_id, ret):
41 JobUtil.add_job_status(job_id, 35, 'Create networks!')
42 NetworkInstModel.objects.create(
43 networkid=str(uuid.uuid4()),
44 name=ignore_case_get(ret, "name"),
45 vimid=ignore_case_get(ret, "vimId"),
46 resourceid=ignore_case_get(ret, "id"),
47 tenant=ignore_case_get(ret, "tenantId"),
48 segmentid=str(ignore_case_get(ret, "segmentationId")),
49 network_type=ignore_case_get(ret, "networkType"),
50 physicalNetwork=ignore_case_get(ret, "physicalNetwork"),
51 vlantrans=get_boolean(ignore_case_get(ret, "vlanTransparent")),
52 is_shared=get_boolean(ignore_case_get(ret, "shared")),
53 routerExternal=get_boolean(ignore_case_get(ret, "routerExternal")),
55 is_predefined=ignore_case_get(ret, "returnCode"),
56 nodeId=ignore_case_get(ret, "nodeId"),
60 def subnet_save(job_id, nf_inst_id, ret):
61 JobUtil.add_job_status(job_id, 40, 'Create subnets!')
62 SubNetworkInstModel.objects.create(
63 subnetworkid=str(uuid.uuid4()),
64 name=ignore_case_get(ret, "name"),
65 vimid=ignore_case_get(ret, "vimId"),
66 resourceid=ignore_case_get(ret, "id"),
67 tenant=ignore_case_get(ret, "tenantId"),
68 networkid=ignore_case_get(ret, "networkId"),
69 cidr=ignore_case_get(ret, "cidr"),
70 ipversion=ignore_case_get(ret, "ipversion"),
71 isdhcpenabled=ignore_case_get(ret, "enableDhcp"),
72 gatewayip=ignore_case_get(ret, "gatewayIp"),
73 dnsNameservers=ignore_case_get(ret, "dnsNameservers"),
74 hostRoutes=ignore_case_get(ret, "hostRoutes"),
75 allocationPools=ignore_case_get(ret, "allocationPools"),
77 is_predefined=ignore_case_get(ret, "returnCode"),
81 def port_save(job_id, nf_inst_id, ret):
82 JobUtil.add_job_status(job_id, 50, 'Create ports!')
83 PortInstModel.objects.create(
84 portid=str(uuid.uuid4()),
85 networkid=ignore_case_get(ret, "networkId"),
86 subnetworkid=ignore_case_get(ret, "subnetId"),
87 name=ignore_case_get(ret, "name"),
88 vimid=ignore_case_get(ret, "vimId"),
89 resourceid=ignore_case_get(ret, "id"),
90 tenant=ignore_case_get(ret, "tenantId"),
91 macaddress=ignore_case_get(ret, "macAddress"),
92 ipaddress=ignore_case_get(ret, "ip"),
93 typevirtualnic=ignore_case_get(ret, "vnicType"),
94 securityGroups=ignore_case_get(ret, "securityGroups"),
96 is_predefined=ignore_case_get(ret, "returnCode"),
97 nodeId=ignore_case_get(ret, "nodeId"),
101 def flavor_save(job_id, nf_inst_id, ret):
102 JobUtil.add_job_status(job_id, 60, 'Create flavors!')
103 FlavourInstModel.objects.create(
104 flavourid=str(uuid.uuid4()),
105 name=ignore_case_get(ret, "name"),
106 vimid=ignore_case_get(ret, "vimId"),
107 resourceid=ignore_case_get(ret, "id"),
108 tenant=ignore_case_get(ret, "tenantId"),
109 vcpu=get_integer(ignore_case_get(ret, "vcpu")),
110 memory=get_integer(ignore_case_get(ret, "memory")),
111 disk=get_integer(ignore_case_get(ret, "disk")),
112 ephemeral=get_integer(ignore_case_get(ret, "ephemeral")),
113 swap=get_integer(ignore_case_get(ret, "swap")),
114 isPublic=get_boolean(ignore_case_get(ret, "isPublic")),
115 extraspecs=ignore_case_get(ret, "extraSpecs"),
116 is_predefined=ret.get("returnCode", int(0)),
120 def vm_save(job_id, nf_inst_id, ret):
121 JobUtil.add_job_status(job_id, 70, 'Create vms!')
122 vm_id = str(uuid.uuid4())
123 nics = ignore_case_get(ret, "nicArray")
124 volumes = ignore_case_get(ret, "volumeArray")
125 VmInstModel.objects.create(
127 vmname=ignore_case_get(ret, "name"),
128 vimid=ignore_case_get(ret, "vimId"),
129 resourceid=ignore_case_get(ret, "id"),
130 tenant=ignore_case_get(ret, "tenantId"),
131 nic_array=nics if nics else "null",
132 metadata=ignore_case_get(ret, "metadata"),
133 volume_array=volumes if volumes else "null",
134 server_group=ignore_case_get(ret, "serverGroup"),
135 availability_zone=str(ignore_case_get(ret, "availabilityZone", "undefined")),
136 flavor_id=ignore_case_get(ret, "flavorId"),
137 security_groups=ignore_case_get(ret, "securityGroups"),
138 operationalstate=ignore_case_get(ret, "status"),
140 is_predefined=ignore_case_get(ret, "returnCode"),
142 VNFCInstModel.objects.create(
143 vnfcinstanceid=str(uuid.uuid4()),
144 vduid=ignore_case_get(ret, "id"),
145 is_predefined=ignore_case_get(ret, "returnCode"),