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.
18 from lcm.pub.config.config import AAI_BASE_URL, AAI_USER, AAI_PASSWORD
19 from lcm.pub.exceptions import NFLCMException
20 from lcm.pub.utils.restcall import call_req_aai, rest_no_auth
22 logger = logging.getLogger(__name__)
24 def call_aai(resource, method, data=''):
25 return call_req_aai(AAI_BASE_URL, AAI_USER, AAI_PASSWORD, rest_no_auth, resource, method, data)
28 def create_ns(global_customer_id, service_type, service_instance_id, data):
29 resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
30 "%s/service-instances/service-instance/%s" % \
31 (global_customer_id, service_type, service_instance_id)
32 ret = call_aai(resource, "PUT", data)
34 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
35 raise NFLCMException("Ns instance creation exception in AAI")
36 return json.JSONDecoder().decode(ret[1])
39 def delete_ns(global_customer_id, service_type, service_instance_id):
40 resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
41 "%s/service-instances/service-instance/%s" % \
42 (global_customer_id, service_type, service_instance_id)
43 ret = call_aai(resource, "DELETE")
45 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
46 raise NFLCMException("Ns instance delete exception in AAI")
47 return json.JSONDecoder().decode(ret[1])
50 def query_ns(global_customer_id, service_type, service_instance_id, data):
51 resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
52 "%s/service-instances/service-instance/%s" % \
53 (global_customer_id, service_type, service_instance_id)
54 ret = call_aai(resource, "GET", data)
56 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
57 raise NFLCMException("Ns instance query exception in AAI")
58 return json.JSONDecoder().decode(ret[1])
61 def create_vnf(vnf_id, data):
62 resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
63 ret = call_aai(resource, "PUT", data)
65 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
66 raise NFLCMException("Vnf instance creation exception in AAI")
67 return json.JSONDecoder().decode(ret[1])
70 def delete_vnf(vnf_id):
71 resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
72 ret = call_aai(resource, "DELETE")
74 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
75 raise NFLCMException("Vnf instance delete exception in AAI")
76 return json.JSONDecoder().decode(ret[1])
79 def query_vnf(vnf_id, data):
80 resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
81 ret = call_aai(resource, "GET", data)
83 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
84 raise NFLCMException("Vnf instance query exception in AAI")
85 return json.JSONDecoder().decode(ret[1])
88 def create_vserver(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):
89 resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
90 "%s/tenants/tenant/%s/vservers/vserver/%s" % \
91 (cloud_owner, cloud_region_id, tenant_id, vserver_id)
92 ret = call_aai(resource, "PUT", data)
94 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
95 raise NFLCMException("Vserver creation exception in AAI")
96 return json.JSONDecoder().decode(ret[1])
99 def delete_vserver(cloud_owner, cloud_region_id, tenant_id, vserver_id):
100 resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
101 "%s/tenants/tenant/%s/vservers/vserver/%s" % \
102 (cloud_owner, cloud_region_id, tenant_id, vserver_id)
103 ret = call_aai(resource, "DELETE")
105 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
106 raise NFLCMException("Vserver delete exception in AAI")
107 return json.JSONDecoder().decode(ret[1])
110 def query_vserver(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):
111 resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
112 "%s/tenants/tenant/%s/vservers/vserver/%s" % \
113 (cloud_owner, cloud_region_id, tenant_id, vserver_id)
114 ret = call_aai(resource, "GET", data)
116 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
117 raise NFLCMException("Vserver query exception in AAI")
118 return json.JSONDecoder().decode(ret[1])
121 def put_vserver_relationship(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):
122 resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
123 "%s/tenants/tenant/%s/vservers/vserver/%s/relationship-list/relationship" % \
124 (cloud_owner, cloud_region_id, tenant_id, vserver_id)
125 ret = call_aai(resource, "PUT", data)
127 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
128 raise NFLCMException("Put or update vserver relationship exception in AAI")
129 return json.JSONDecoder().decode(ret[1])
132 def delete_vserver_relationship(cloud_owner, cloud_region_id, tenant_id, vserver_id):
133 resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
134 "%s/tenants/tenant/%s/vservers/vserver/%s/relationship-list/relationship" % \
135 (cloud_owner, cloud_region_id, tenant_id, vserver_id)
136 ret = call_aai(resource, "DELETE")
138 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
139 raise NFLCMException("Delete vserver relationship exception in AAI")
140 return json.JSONDecoder().decode(ret[1])
143 def put_vnf_relationship(vnf_id, data):
144 resource = "/network/generic-vnfs/generic-vnf/%s/relationship-list/relationship" % vnf_id
145 ret = call_aai(resource, "PUT", data)
147 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
148 raise NFLCMException("Put or update vnf instance relationship exception in AAI")
149 return json.JSONDecoder().decode(ret[1])
152 def delete_vnf_relationship(vnf_id):
153 resource = "/network/generic-vnfs/generic-vnf/%s/relationship-list/relationship" % vnf_id
154 ret = call_aai(resource, "DELETE")
156 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
157 raise NFLCMException("Delete vnf instance relationship exception in AAI")
158 return json.JSONDecoder().decode(ret[1])
161 def put_ns_relationship(global_customer_id, service_type, service_instance_id, data):
162 resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
163 "%s/service-instances/service-instance/%s/relationship-list/relationship" % \
164 (global_customer_id, service_type, service_instance_id)
165 ret = call_aai(resource, "PUT", data)
167 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
168 raise NFLCMException("Put or update ns instance relationship exception in AAI")
169 return json.JSONDecoder().decode(ret[1])
172 def delete_ns_relationship(global_customer_id, service_type, service_instance_id):
173 resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
174 "%s/service-instances/service-instance/%s/relationship-list/relationship" % \
175 (global_customer_id, service_type, service_instance_id)
176 ret = call_aai(resource, "DELETE")
178 logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
179 raise NFLCMException("Delete ns instance relationship exception in AAI")
180 return json.JSONDecoder().decode(ret[1])