Fix docker file of vfc-gvnfm-vnflcm
[vfc/gvnfm/vnflcm.git] / lcm / lcm / pub / msapi / aai.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 json
16 import logging
17
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
21
22 logger = logging.getLogger(__name__)
23
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)
26
27
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)
33     if ret[0] != 0:
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])
37
38
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")
44     if ret[0] != 0:
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])
48
49
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)
55     if ret[0] != 0:
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])
59
60
61 def create_vnf(vnf_id, data):
62     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
63     ret = call_aai(resource, "PUT", data)
64     if ret[0] != 0:
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])
68
69
70 def delete_vnf(vnf_id):
71     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
72     ret = call_aai(resource, "DELETE")
73     if ret[0] != 0:
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])
77
78
79 def query_vnf(vnf_id, data):
80     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
81     ret = call_aai(resource, "GET", data)
82     if ret[0] != 0:
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])
86
87
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)
93     if ret[0] != 0:
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])
97
98
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")
104     if ret[0] != 0:
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])
108
109
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)
115     if ret[0] != 0:
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])
119
120
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)
126     if ret[0] != 0:
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])
130
131
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")
137     if ret[0] != 0:
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])
141
142
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)
146     if ret[0] != 0:
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])
150
151
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")
155     if ret[0] != 0:
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])
159
160
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)
166     if ret[0] != 0:
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])
170
171
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")
177     if ret[0] != 0:
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])