update portid in when create vm
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / biz / common.py
1 # Copyright 2017 ZTE Corporation.
2 #
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
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
15 import uuid
16
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
21
22
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"),
34         insttype=0,
35         is_predefined=ignore_case_get(ret, "returnCode"),
36         nodeId=ignore_case_get(ret, "nodeId"),
37         instid=nf_inst_id)
38
39
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")),
54         insttype=0,
55         is_predefined=ignore_case_get(ret, "returnCode"),
56         nodeId=ignore_case_get(ret, "nodeId"),
57         instid=nf_inst_id)
58
59
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"),
76         insttype=0,
77         is_predefined=ignore_case_get(ret, "returnCode"),
78         instid=nf_inst_id)
79
80
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"),
95         insttype=0,
96         is_predefined=ignore_case_get(ret, "returnCode"),
97         nodeId=ignore_case_get(ret, "nodeId"),
98         instid=nf_inst_id)
99
100
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)),
117         instid=nf_inst_id)
118
119
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(
126         vmid=vm_id,
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"),
139         insttype=0,
140         is_predefined=ignore_case_get(ret, "returnCode"),
141         instid=nf_inst_id)
142     VNFCInstModel.objects.create(
143         vnfcinstanceid=str(uuid.uuid4()),
144         vduid=ignore_case_get(ret, "id"),
145         is_predefined=ignore_case_get(ret, "returnCode"),
146         instid=nf_inst_id,
147         vmid=vm_id)
148     for portid in ignore_case_get(ret, "ports"):
149         PortInstModel.objects.filter(
150             resourceid=portid
151         ).update(
152             vmid=ignore_case_get(ret, "id")
153         )