Add creation and deletion of VNF instance
[vfc/nfvo/lcm.git] / lcm / pub / msapi / aai.py
index 64cb896..25f6162 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+
 import json
 import logging
 import uuid
 
+from lcm.pub.config.config import AAI_BASE_URL, AAI_USER, AAI_PASSWD
 from lcm.pub.exceptions import NSLCMException
 from lcm.pub.utils import restcall
-from lcm.pub.config.config import AAI_BASE_URL, AAI_USER, AAI_PASSWD
-from lcm.pub.utils.values import ignore_case_get
 
 logger = logging.getLogger(__name__)
 
@@ -39,6 +39,34 @@ def call_aai(resource, method, content=''):
                              content,
                              additional_headers)
 
+def create_customer_aai(global_customer_id, data):
+    resource = "/business/customers/customer/%s" % global_customer_id
+    ret = call_aai(resource, "PUT", data)
+    if ret[0] != 0:
+        logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
+        raise NSLCMException("Customer creation exception in AAI")
+    return json.JSONDecoder().decode(ret[1]), ret[2]
+
+
+def get_customer_aai(global_customer_id):
+    resource = "/business/customers/customer/%s?depth=all" % global_customer_id
+    ret = call_aai(resource, "GET")
+    if ret[0] != 0:
+        logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
+        raise NSLCMException("Get customer info exception in AAI")
+    return json.JSONDecoder().decode(ret[1])
+
+
+def delete_customer_aai(global_customer_id, resource_version=""):
+    resource = "/business/customers/customer/%s" % global_customer_id
+    if resource_version:
+        resource = resource + "?resource-version=%s" % resource_version
+    ret = call_aai(resource, "DELETE")
+    if ret[0] != 0:
+        logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
+        raise NSLCMException("Customer delete exception in AAI")
+    return json.JSONDecoder().decode(ret[1]), ret[2]
+
 
 def create_ns_aai(global_customer_id, service_type, service_instance_id, data):
     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
@@ -48,13 +76,15 @@ def create_ns_aai(global_customer_id, service_type, service_instance_id, data):
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Ns instance creation exception in AAI")
-    return json.JSONDecoder().decode(ret[1])
+    return json.JSONDecoder().decode(ret[1]), ret[2]
 
-def delete_ns_aai(global_customer_id, service_type, service_instance_id, data=''):
+def delete_ns_aai(global_customer_id, service_type, service_instance_id, resource_version=""):
     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
                "%s/service-instances/service-instance/%s" % \
                (global_customer_id, service_type, service_instance_id)
-    ret = call_aai(resource, "DELETE", data)
+    if resource_version:
+        resource = resource + "?resource-version=%s" % resource_version
+    ret = call_aai(resource, "DELETE")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Ns instance delete exception in AAI")
@@ -62,7 +92,7 @@ def delete_ns_aai(global_customer_id, service_type, service_instance_id, data=''
 
 def query_ns_aai(global_customer_id, service_type, service_instance_id, data):
     resource = "/business/customers/customer/%s/service-subscriptions/service-subscription/" \
-               "%s/service-instances/service-instance/%s" % \
+               "%s/service-instances/service-instance/%s?depth=all" % \
                (global_customer_id, service_type, service_instance_id)
     ret = call_aai(resource, "GET", data)
     if ret[0] != 0:
@@ -76,19 +106,21 @@ def create_vnf_aai(vnf_id, data):
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Vnf instance creation exception in AAI")
-    return json.JSONDecoder().decode(ret[1])
+    return json.JSONDecoder().decode(ret[1]), ret[2]
 
-def delete_vnf_aai(vnf_id, data=''):
+def delete_vnf_aai(vnf_id, resource_version=""):
     resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
-    ret = call_aai(resource, "DELETE", data)
+    if resource_version:
+        resource = resource + "?resource-version=%s" % resource_version
+    ret = call_aai(resource, "DELETE")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Vnf instance delete exception in AAI")
     return json.JSONDecoder().decode(ret[1])
 
-def query_vnf_aai(vnf_id, data):
-    resource = "/network/generic-vnfs/generic-vnf/%s" % vnf_id
-    ret = call_aai(resource, "GET", data)
+def query_vnf_aai(vnf_id):
+    resource = "/network/generic-vnfs/generic-vnf/%s?depth=all" % vnf_id
+    ret = call_aai(resource, "GET")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Vnf instance query exception in AAI")
@@ -102,13 +134,15 @@ def create_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id, data
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Vserver creation exception in AAI")
-    return json.JSONDecoder().decode(ret[1])
+    return json.JSONDecoder().decode(ret[1]), ret[2]
 
-def delete_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id, data=''):
+def delete_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id, resource_version=""):
     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
                "%s/tenants/tenant/%s/vservers/vserver/%s" % \
                (cloud_owner, cloud_region_id, tenant_id, vserver_id)
-    ret = call_aai(resource, "DELETE", data)
+    if resource_version:
+        resource = resource + "?resource-version=%s" % resource_version
+    ret = call_aai(resource, "DELETE")
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
         raise NSLCMException("Vserver delete exception in AAI")
@@ -116,7 +150,7 @@ def delete_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id, data
 
 def query_vserver_aai(cloud_owner, cloud_region_id, tenant_id, vserver_id, data):
     resource = "/cloud-infrastructure/cloud-regions/cloud-region/%s/" \
-               "%s/tenants/tenant/%s/vservers/vserver/%s" % \
+               "%s/tenants/tenant/%s/vservers/vserver/%s?depth=all" % \
                (cloud_owner, cloud_region_id, tenant_id, vserver_id)
     ret = call_aai(resource, "GET", data)
     if ret[0] != 0: