632e4f37993c9bc7e0e32caa040dd57445e0d904
[vfc/gvnfm/vnflcm.git] / lcm / lcm / pub / aaiapi / aai.py
1 # Copyright 2017 ZTE Corporation.\r
2 #\r
3 # Licensed under the Apache License, Version 2.0 (the "License");\r
4 # you may not use this file except in compliance with the License.\r
5 # You may obtain a copy of the License at\r
6 #\r
7 #         http://www.apache.org/licenses/LICENSE-2.0\r
8 #\r
9 # Unless required by applicable law or agreed to in writing, software\r
10 # distributed under the License is distributed on an "AS IS" BASIS,\r
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 # See the License for the specific language governing permissions and\r
13 # limitations under the License.\r
14 \r
15 import json\r
16 import logging\r
17 \r
18 from lcm.pub.config.config import AAI_BASE_URL, AAI_USER, AAI_PASSWORD\r
19 from lcm.pub.exceptions import NFLCMException\r
20 from lcm.pub.utils.restcall import call_req_aai, rest_no_auth\r
21 \r
22 logger = logging.getLogger(__name__)\r
23 \r
24 def call_aai(resource, method, data=''):\r
25     return call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, method, data)\r
26 \r
27 def create_ns(global_customer_id, service_type, service_instance_id, data):\r
28     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \\r
29                "%s/service-instances/service-instance/%s" % \\r
30                (global_customer_id, service_type, service_instance_id)\r
31     ret = call_aai(resource, "PUT", data)\r
32     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "PUT", data)\r
33     if ret[0] != 0:\r
34         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
35         raise NFLCMException("Ns instance creation exception in AAI")\r
36     return json.JSONDecoder().decode(ret[1])\r
37 \r
38 def delete_ns(global_customer_id, service_type, service_instance_id, data):\r
39     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \\r
40                "%s/service-instances/service-instance/%s" % \\r
41                (global_customer_id, service_type, service_instance_id)\r
42     ret = call_aai(resource, "DELETE", data)\r
43     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)\r
44     if ret[0] != 0:\r
45         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
46         raise NFLCMException("Ns instance delete exception in AAI")\r
47     return json.JSONDecoder().decode(ret[1])\r
48 \r
49 def query_ns(global_customer_id, service_type, service_instance_id, data):\r
50     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \\r
51                "%s/service-instances/service-instance/%s" % \\r
52                (global_customer_id, service_type, service_instance_id)\r
53     ret = call_aai(resource, "GET", data)\r
54     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "GET", data)\r
55     if ret[0] != 0:\r
56         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
57         raise NFLCMException("Ns instance query exception in AAI")\r
58     return json.JSONDecoder().decode(ret[1])\r
59 \r
60 \r
61 def create_vnf(vnf_id, data):\r
62     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id\r
63     ret = call_aai(resource, "PUT", data)\r
64     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "PUT", data)\r
65     if ret[0] != 0:\r
66         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
67         raise NFLCMException("Vnf instance creation exception in AAI")\r
68     return json.JSONDecoder().decode(ret[1])\r
69 \r
70 def delete_vnf(vnf_id, data=[]):\r
71     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id\r
72     ret = call_aai(resource, "DELETE", data)\r
73     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)\r
74     if ret[0] != 0:\r
75         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
76         raise NFLCMException("Vnf instance delete exception in AAI")\r
77     return json.JSONDecoder().decode(ret[1])\r
78 \r
79 def query_vnf(vnf_id, data):\r
80     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id\r
81     ret = call_aai(resource, "GET", data)\r
82     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "GET", data)\r
83     if ret[0] != 0:\r
84         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
85         raise NFLCMException("Vnf instance query exception in AAI")\r
86     return json.JSONDecoder().decode(ret[1])\r
87 \r
88 \r
89 def create_vserver(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):\r
90     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \\r
91                "%s/tenants/tenant/%s/vservers/vserver/%s" % \\r
92                (cloud_owner, cloud_region_id, tenant_id, vserver_id)\r
93     ret = call_aai(resource, "PUT", data)\r
94     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "PUT", data)\r
95     if ret[0] != 0:\r
96         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
97         raise NFLCMException("Vserver creation exception in AAI")\r
98     return json.JSONDecoder().decode(ret[1])\r
99 \r
100 def delete_vserver(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):\r
101     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \\r
102                "%s/tenants/tenant/%s/vservers/vserver/%s" % \\r
103                (cloud_owner, cloud_region_id, tenant_id, vserver_id)\r
104     ret = call_aai(resource, "DELETE", data)\r
105     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)\r
106     if ret[0] != 0:\r
107         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
108         raise NFLCMException("Vserver delete exception in AAI")\r
109     return json.JSONDecoder().decode(ret[1])\r
110 \r
111 def query_vserver(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):\r
112     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \\r
113                "%s/tenants/tenant/%s/vservers/vserver/%s" % \\r
114                (cloud_owner, cloud_region_id, tenant_id, vserver_id)\r
115     ret = call_aai(resource, "GET", data)\r
116     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "GET", data)\r
117     if ret[0] != 0:\r
118         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
119         raise NFLCMException("Vserver query exception in AAI")\r
120     return json.JSONDecoder().decode(ret[1])\r
121 \r
122 \r
123 def put_vserver_relationship(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):\r
124     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \\r
125                "%s/tenants/tenant/%s/vservers/vserver/%s/relationship-list/relationship" % \\r
126                (cloud_owner, cloud_region_id, tenant_id, vserver_id)\r
127     ret = call_aai(resource, "PUT", data)\r
128     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "PUT", data)\r
129     if ret[0] != 0:\r
130         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
131         raise NFLCMException("Put or update vserver relationship exception in AAI")\r
132     return json.JSONDecoder().decode(ret[1])\r
133 \r
134 def delete_vserver_relationship(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):\r
135     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \\r
136                "%s/tenants/tenant/%s/vservers/vserver/%s/relationship-list/relationship" % \\r
137                (cloud_owner, cloud_region_id, tenant_id, vserver_id)\r
138     ret = call_aai(resource, "DELETE", data)\r
139     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)\r
140     if ret[0] != 0:\r
141         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
142         raise NFLCMException("Delete vserver relationship exception in AAI")\r
143     return json.JSONDecoder().decode(ret[1])\r
144 \r
145 \r
146 def put_vnf_relationship(vnf_id, data):\r
147     resource = "/network/generic-vnfs/generic-vnf/%s/relationship-list/relationship" % vnf_id\r
148     ret = call_aai(resource, "PUT", data)\r
149     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "PUT", data)\r
150     if ret[0] != 0:\r
151         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
152         raise NFLCMException("Put or update vnf instance relationship exception in AAI")\r
153     return json.JSONDecoder().decode(ret[1])\r
154 \r
155 def delete_vnf_relationship(vnf_id, data):\r
156     resource = "/network/generic-vnfs/generic-vnf/%s/relationship-list/relationship" % vnf_id\r
157     ret = call_aai(resource, "DELETE", data)\r
158     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)\r
159     if ret[0] != 0:\r
160         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
161         raise NFLCMException("Delete vnf instance relationship exception in AAI")\r
162     return json.JSONDecoder().decode(ret[1])\r
163 \r
164 \r
165 def put_ns_relationship(global_customer_id, service_type, service_instance_id, data):\r
166     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \\r
167                "%s/service-instances/service-instance/%s/relationship-list/relationship" % \\r
168                (global_customer_id, service_type, service_instance_id)\r
169     ret = call_aai(resource, "PUT", data)\r
170     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "PUT", data)\r
171     if ret[0] != 0:\r
172         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
173         raise NFLCMException("Put or update ns instance relationship exception in AAI")\r
174     return json.JSONDecoder().decode(ret[1])\r
175 \r
176 def delete_ns_relationship(global_customer_id, service_type, service_instance_id, data):\r
177     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \\r
178                "%s/service-instances/service-instance/%s/relationship-list/relationship" % \\r
179                (global_customer_id, service_type, service_instance_id)\r
180     ret = call_aai(resource, "DELETE", data)\r
181     # ret = call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, "DELETE", data)\r
182     if ret[0] != 0:\r
183         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])\r
184         raise NFLCMException("Delete ns instance relationship exception in AAI")\r
185     return json.JSONDecoder().decode(ret[1])\r