Added V0 Registry API
[multicloud/azure.git] / azure / multicloud_azure / pub / utils / restcall.py
similarity index 64%
rename from azure/azure/pub/utils/restcall.py
rename to azure/multicloud_azure/pub/utils/restcall.py
index 4b28098..984c425 100644 (file)
@@ -18,13 +18,13 @@ import uuid
 import httplib2
 import json
 
-from azure.pub.config.config import AAI_SCHEMA_VERSION
-from azure.pub.config.config import AAI_SERVICE_URL
-from azure.pub.config.config import AAI_USERNAME
-from azure.pub.config.config import AAI_PASSWORD
-from azure.pub.config.config import MSB_SERVICE_IP, MSB_SERVICE_PORT
+from multicloud_azure.pub.config.config import AAI_SCHEMA_VERSION
+from multicloud_azure.pub.config.config import AAI_SERVICE_URL
+from multicloud_azure.pub.config.config import AAI_USERNAME
+from multicloud_azure.pub.config.config import AAI_PASSWORD
+from multicloud_azure.pub.config.config import MSB_SERVICE_IP, MSB_SERVICE_PORT
 
-from azure.pub.exceptions import VimDriverAzureException
+from multicloud_azure.pub.exceptions import VimDriverAzureException
 
 rest_no_auth, rest_oneway_auth, rest_bothway_auth = 0, 1, 2
 HTTP_200_OK, HTTP_201_CREATED = '200', '201'
@@ -133,7 +133,7 @@ class AAIClient(object):
         self.username = AAI_USERNAME
         self.password = AAI_PASSWORD
         self.default_headers = {
-            'X-FromAppId': 'multicloud-openstack-vmware',
+            'X-FromAppId': 'multicloud-azure',
             'X-TransactionId': '9004',
             'content-type': 'application/json',
             'accept': 'application/json'
@@ -159,16 +159,6 @@ class AAIClient(object):
 
     def delete_vim(self):
         resp = self.get_vim(get_all=True)
-        logger.debug('Delete tenants')
-        self._del_tenants(resp)
-        logger.debug('Delete images')
-        self._del_images(resp)
-        logger.debug('Delete flavors')
-        self._del_flavors(resp)
-        logger.debug('Delete networks')
-        self._del_networks(resp)
-        logger.debug('Delete availability zones')
-        self._del_azs(resp)
         logger.debug('Delete cloud region')
         resource = ("/cloud-infrastructure/cloud-regions/cloud-region"
                     "/%s/%s?resource-version=%s" %
@@ -184,18 +174,7 @@ class AAIClient(object):
                     self.cloud_owner, self.cloud_region, resp[1]))
 
     def update_vim(self, content):
-        # update identity url
-        self.update_identity_url()
-        # update tenants
-        self.add_tenants(content)
-        # update flavors
-        self.add_images(content)
-        # update images
         self.add_flavors(content)
-        # update networks
-        self.add_networks(content)
-        # update pservers
-        self.add_pservers(content)
 
     def update_identity_url(self):
         vim = self.get_vim()
@@ -210,33 +189,18 @@ class AAIClient(object):
                  content=json.dumps(vim),
                  headers=self.default_headers)
 
-    def add_tenants(self, content):
-        for tenant in content['tenants']:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/tenants/tenant/%s" % (
-                            self.cloud_owner, self.cloud_region, tenant['id']))
-            body = {'tenant-name': tenant['name']}
-            logger.debug("Adding tenants to cloud region")
-            call_req(self.base_url, self.username, self.password,
-                     rest_no_auth, resource, "PUT",
-                     content=json.dumps(body),
-                     headers=self.default_headers)
-
     def add_flavors(self, content):
         for flavor in content['flavors']:
             resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
                         "%s/%s/flavors/flavor/%s" % (
-                            self.cloud_owner, self.cloud_region, flavor['id']))
+                            self.cloud_owner, self.cloud_region,
+                            flavor['name']))
             body = {
                 'flavor-name': flavor['name'],
                 'flavor-vcpus': flavor['vcpus'],
                 'flavor-ram': flavor['ram'],
                 'flavor-disk': flavor['disk'],
-                'flavor-ephemeral': flavor['ephemeral'],
-                'flavor-swap': flavor['swap'],
-                'flavor-is-public': flavor['is_public'],
-                'flavor-selflink': flavor['links'][0]['href'],
-                'flavor-disabled': flavor['is_disabled']
+                'flavor-selflink': ""
             }
             # Handle extra specs
             if flavor['name'].startswith("onap."):
@@ -251,222 +215,6 @@ class AAIClient(object):
                      content=json.dumps(body),
                      headers=self.default_headers)
 
-    def add_images(self, content):
-        for image in content['images']:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/images/image/%s" % (
-                            self.cloud_owner, self.cloud_region, image['id']))
-            split_image_name = image['name'].split("-")
-            os_distro = split_image_name[0]
-            os_version = split_image_name[1] if \
-                len(split_image_name) > 1 else ""
-            body = {
-                'image-name': image['name'],
-                # 'image-architecture': image[''],
-                'image-os-distro': os_distro,
-                'image-os-version': os_version,
-                # 'application': image[''],
-                # 'application-vendor': image[''],
-                # 'application-version': image[''],
-                # TODO replace this with image proxy endpoint
-                'image-selflink': "",
-            }
-            logger.debug("Adding images to cloud region")
-            call_req(self.base_url, self.username, self.password,
-                     rest_no_auth, resource, "PUT",
-                     content=json.dumps(body),
-                     headers=self.default_headers)
-
-    def add_networks(self, content):
-        for network in content['networks']:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/oam-networks/oam-network/%s" % (
-                            self.cloud_owner, self.cloud_region,
-                            network['id']))
-            body = {
-                'network-uuid': network['id'],
-                'network-name': network['name'],
-                'cvlan-tag': network['segmentationId'] or 0,
-            }
-            logger.debug("Adding networks to cloud region")
-            call_req(self.base_url, self.username, self.password,
-                     rest_no_auth, resource, "PUT",
-                     content=json.dumps(body),
-                     headers=self.default_headers)
-
-    def add_pservers(self, content):
-        for hypervisor in content['hypervisors']:
-            resource = ("/cloud-infrastructure/pservers/pserver/%s" % (
-                hypervisor['name']))
-            body = {
-                # 'ptnii-equip-name'
-                'number-of-cpus': hypervisor['vcpus'],
-                'disk-in-gigabytes': hypervisor['local_disk_size'],
-                'ram-in-megabytes': hypervisor['memory_size'],
-                # 'equip-type'
-                # 'equip-vendor'
-                # 'equip-model'
-                # 'fqdn'
-                # 'pserver-selflink'
-                'ipv4-oam-address': hypervisor['host_ip'],
-                # 'serial-number'
-                # 'ipaddress-v4-loopback-0'
-                # 'ipaddress-v6-loopback-0'
-                # 'ipaddress-v4-aim'
-                # 'ipaddress-v6-aim'
-                # 'ipaddress-v6-oam'
-                # 'inv-status'
-                'pserver-id': hypervisor['id'],
-                # 'internet-topology'
-            }
-            logger.debug("Adding pservers")
-            call_req(self.base_url, self.username, self.password,
-                     rest_no_auth, resource, "PUT",
-                     content=json.dumps(body),
-                     headers=self.default_headers)
-            # update relationship
-            resource = ("/cloud-infrastructure/pservers/pserver/%s/"
-                        "relationship-list/relationship" %
-                        hypervisor['name'])
-            related_link = ("%s/cloud-infrastructure/cloud-regions/"
-                            "cloud-region/%s/%s" % (
-                                self.base_url, self.cloud_owner,
-                                self.cloud_region))
-            body = {
-                'related-to': 'cloud-region',
-                'related-link': related_link,
-                'relationship-data': [
-                    {
-                        'relationship-key': 'cloud-region.cloud-owner',
-                        'relationship-value': self.cloud_owner
-                    },
-                    {
-                        'relationship-key': 'cloud-region.cloud-region-id',
-                        'relationship-value': self.cloud_region
-                    }
-                ]
-            }
-            logger.debug("Connecting pservers and cloud region")
-            call_req(self.base_url, self.username, self.password,
-                     rest_no_auth, resource, "PUT",
-                     content=json.dumps(body),
-                     headers=self.default_headers)
-
-    def _del_tenants(self, rsp):
-        tenants = rsp.get("tenants", [])
-        if not tenants:
-            return
-        for tenant in tenants["tenant"]:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/tenants/tenant/%s?resource-version=%s" % (
-                            self.cloud_owner, self.cloud_region,
-                            tenant['tenant-id'], tenant['resource-version']))
-            resp = call_req(self.base_url, self.username, self.password,
-                            rest_no_auth, resource, "DELETE",
-                            headers=self.default_headers)
-            if resp[0] != 0:
-                raise VimDriverAzureException(
-                    status_code=400,
-                    content="Failed to delete tenant %s: %s." % (
-                        tenant['tenant-id'], resp[1]))
-
-    def _del_hpa(self, flavor):
-        hpas = flavor.get("hpa-capabilities", {}).get("hpa-capability", [])
-        for hpa in hpas:
-            resource = (
-                "/cloud-infrastructure/cloud-regions/cloud-region/"
-                "%s/%s/flavors/flavor/%s/hpa-capabilities/hpa-capability/%s"
-                "?resource-version=%s" % (
-                    self.cloud_owner, self.cloud_region,
-                    flavor['flavor-id'], hpa['hpa-capability-id'],
-                    hpa['resource-version']))
-            resp = call_req(self.base_url, self.username, self.password,
-                            rest_no_auth, resource, "DELETE",
-                            headers=self.default_headers)
-            if resp[0] != 0:
-                raise VimDriverAzureException(
-                    status_code=400,
-                    content="Failed to delete flavor %s on hpa %s: %s." % (
-                        flavor['flavor-id'], hpa['hpa-capability-id'],
-                        resp[1]))
-
-    def _del_flavors(self, rsp):
-        flavors = rsp.get("flavors", [])
-        if not flavors:
-            return
-        for flavor in flavors["flavor"]:
-            self._del_hpa(flavor)
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/flavors/flavor/%s?resource-version=%s" % (
-                            self.cloud_owner, self.cloud_region,
-                            flavor['flavor-id'], flavor['resource-version']))
-            resp = call_req(self.base_url, self.username, self.password,
-                            rest_no_auth, resource, "DELETE",
-                            headers=self.default_headers)
-            if resp[0] != 0:
-                raise VimDriverAzureException(
-                    status_code=400,
-                    content="Failed to delete flavor %s: %s." % (
-                        flavor['flavor-id'], resp[1]))
-
-    def _del_images(self, rsp):
-        tenants = rsp.get("images", [])
-        if not tenants:
-            return
-        for tenant in tenants["image"]:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/images/image/%s?resource-version=%s" % (
-                            self.cloud_owner, self.cloud_region,
-                            tenant['image-id'], tenant['resource-version']))
-            resp = call_req(self.base_url, self.username, self.password,
-                            rest_no_auth, resource, "DELETE",
-                            headers=self.default_headers)
-            if resp[0] != 0:
-                raise VimDriverAzureException(
-                    status_code=400,
-                    content="Failed to delete image %s: %s." % (
-                        tenant['image-id'], resp[1]))
-
-    def _del_networks(self, rsp):
-        networks = rsp.get("oam-networks", [])
-        if not networks:
-            return
-        for network in networks["oam-network"]:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/oam-networks/oam-network/%s?"
-                        "resource-version=%s" % (
-                            self.cloud_owner, self.cloud_region,
-                            network['network-uuid'],
-                            network['resource-version']))
-            resp = call_req(self.base_url, self.username, self.password,
-                            rest_no_auth, resource, "DELETE",
-                            headers=self.default_headers)
-            if resp[0] != 0:
-                raise VimDriverAzureException(
-                    status_code=400,
-                    content="Failed to delete network %s: %s." % (
-                        network['network-uuid'], resp[1]))
-
-    def _del_azs(self, rsp):
-        azs = rsp.get("availability-zones", [])
-        if not azs:
-            return
-        for az in azs["availability-zone"]:
-            resource = ("/cloud-infrastructure/cloud-regions/cloud-region/"
-                        "%s/%s/availability-zones/availability-zone/%s?"
-                        "resource-version=%s" % (
-                            self.cloud_owner, self.cloud_region,
-                            az['availability-zone-name'],
-                            az['resource-version']))
-            resp = call_req(self.base_url, self.username, self.password,
-                            rest_no_auth, resource, "DELETE",
-                            headers=self.default_headers)
-            if resp[0] != 0:
-                raise VimDriverAzureException(
-                    status_code=400,
-                    content="Failed to delete availability zone %s: %s." % (
-                        az['availability-zone-name'], resp[1]))
-
     def _get_hpa_capabilities(self, flavor):
         hpa_caps = []
 
@@ -545,7 +293,7 @@ class AAIClient(object):
         basic_capability['hpa-feature-attributes'].append({
             'hpa-attribute-key': 'virtualMemSize',
             'hpa-attribute-value': json.dumps({'value': str(
-                flavor['ram']), 'unit': 'MB'})})
+                flavor['ram']), 'unit': 'GB'})})
 
         return basic_capability
 
@@ -689,7 +437,7 @@ class AAIClient(object):
         storage_capability['hpa-feature-attributes'].append({
             'hpa-attribute-key': 'diskSize',
             'hpa-attribute-value': json.dumps({'value': str(
-                flavor['disk']), 'unit': 'GB'})
+                flavor['disk']), 'unit': 'MB'})
             })
         storage_capability['hpa-feature-attributes'].append({
             'hpa-attribute-key': 'swapMemSize',