Browse Source

Refactored code for resource model id

vikramdoda 9 years ago
parent
commit
d1f0a6a30b

+ 78 - 23
azure_integration_test/test_integration_azure_instance_service.py

@@ -8,14 +8,14 @@ from azure_integration_test.helpers import ProviderTestBase
 class AzureIntegrationInstanceServiceTestCase(ProviderTestBase):
     @helpers.skipIfNoService(['compute.instances'])
     def test_azure_instance_service(self):
-        instance_name = 'CbAzure-inst-{0}'.format(uuid.uuid4().hex[:6])
-        image_name = 'CbAzure-img-{0}'.format(uuid.uuid4().hex[:6])
+        instance_name = 'CbAzure-test6-{0}'.format(uuid.uuid4().hex[:6])
+        # image_name = 'CbAzure-img-{0}'.format(uuid.uuid4().hex[:6])
         security_group_name = 'CbAzure-sg-{0}'.format(uuid.uuid4().hex[:6])
-        # key_pair_name = 'CbAzure-keypair-{0}'.format(uuid.uuid4().hex[:6])
+        network_name = 'CbAzure-net-{0}'.format(uuid.uuid4().hex[:6])
+        subnet_name = 'CbAzure-subnet-{0}'.format(uuid.uuid4().hex[:6])
+        # key_pair_name = 'CbAzure-keypair-4e36b7'
 
-        image_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                   '/resourceGroups/VM-TEST-RG/providers' \
-                   '/Microsoft.Compute/images/CbAzure-da80a6'
+        image_id = 'CBAZURE-USER-TEST-IMG'
 
         img = self.provider.compute.images.get(image_id)
 
@@ -30,14 +30,58 @@ class AzureIntegrationInstanceServiceTestCase(ProviderTestBase):
         #     f.write(key_pair.material)
 
         inst_type = [t for t in self.provider.compute.instance_types.list()
-                     if t.name == 'Standard_DS1_v2'][0]
+                     if t.name == 'Standard_DS2_v2'][0]
+
+        net = self.provider.network.create(network_name)
+
+        self.assertIsNotNone(net)
+
+        subnet = net.create_subnet('10.0.0.0/23', name=subnet_name)
+
+        self.assertIsNotNone(subnet)
 
         sg = self.provider.security.security_groups.\
             create(security_group_name,
                    'A security group used by CloudBridge', '')
+
+        self.assertIsNotNone(sg)
+
         sg.add_rule('tcp', 22, 22, '0.0.0.0/0')
 
-        subnet = self.provider.network.subnets.list()[1]
+        # lc = self.provider.compute.instances.create_launch_config()
+        #
+        # volume = self.provider.block_store.\
+        #     volumes.create('CbAzure-Vol-{0}'.
+        # format(uuid.uuid4().hex[:6]), 30)
+        #
+        # volume.wait_till_ready()
+        #
+        # self.assertIsNotNone(volume)
+        #
+        # snapshot = volume.\
+        #     create_snapshot('CbAzure-Snap-{0}'.format(uuid.uuid4().hex[:6]))
+        #
+        # snapshot.wait_till_ready()
+        #
+        # self.assertIsNotNone(snapshot)
+        #
+        # lc.add_volume_device(
+        #     is_root=False,
+        #     source=volume,
+        #     size=volume.size,
+        #     delete_on_terminate=True)
+        #
+        # lc.add_volume_device(
+        #     is_root=False,
+        #     source=snapshot,
+        #     size=snapshot.size,
+        #     delete_on_terminate=True)
+        #
+        # lc.add_volume_device(
+        #     is_root=False,
+        #     source=None,
+        #     size=40,
+        #     delete_on_terminate=True)
 
         inst = self.provider.compute.instances.create(
             name=instance_name, image=img, instance_type=inst_type,
@@ -47,22 +91,33 @@ class AzureIntegrationInstanceServiceTestCase(ProviderTestBase):
 
         inst.wait_till_ready()
 
-        # floating_ip = self.provider.network.create_floating_ip()
-        #
-        # self.assertIsNotNone(floating_ip)
-        #
-        # inst.add_floating_ip(floating_ip.public_ip)
-        #
-        # inst.refresh()
-        #
-        # self.assertIsNotNone(inst.public_ips[0])
+        floating_ip = self.provider.network.create_floating_ip()
+
+        self.assertIsNotNone(floating_ip)
 
-        instance = self.provider.compute.\
-            instances.find(name=instance_name)[0]
+        inst.add_floating_ip(floating_ip.public_ip)
 
-        self.assertIsNotNone(instance)
+        inst.refresh()
 
-        new_img = instance.create_image(image_name)
-        self.assertIsNotNone(new_img)
+        self.assertIsNotNone(inst.public_ips[0])
 
-        instance.terminate()
+        # inst = self.provider.compute.instances.
+        # get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96
+        # /resourceGroups/CB-INST-DEMO-RG/providers/
+        # Microsoft.Compute/virtualMachines/CbAzure-inst-304a17-968334')
+        #
+        # img = inst.\
+        #     create_image(image_name)
+        # self.assertIsNotNone(img)
+
+        # inst.terminate()
+        #
+        # subnet.delete()
+        #
+        # net.delete()
+        #
+        # sg.delete()
+        #
+        # snapshot.delete()
+        #
+        # img.delete()

+ 2 - 4
azure_integration_test/test_integration_azure_region_service.py

@@ -20,15 +20,13 @@ class AzureIntegrationRegionServiceTestCase(helpers.ProviderTestBase):
                 "Region name should be a non-empty string")
 
     def test_azure_integration_region_service_get(self):
-        region_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/" \
-                    "locations/koreasouth"
+        region_id = "koreasouth"
         region = self.provider.compute.regions.get(region_id)
         self.assertIsNotNone(region)
         self.assertEqual(region.name, "koreasouth")
 
     def test_azure_integration_region_service_get_invalid_region_id(self):
-        region_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/" \
-                    "locations/invalid"
+        region_id = "invalid"
         region = self.provider.compute.regions.get(region_id)
         self.assertIsNone(region)
 

+ 2 - 6
azure_test/test_azure_image_service.py

@@ -11,9 +11,7 @@ class AzureImageServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_images_get_exist(self):
-        image1_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CLOUDBRIDGE-AZURE/providers/' \
-                    'Microsoft.Compute/images/image1'
+        image1_id = 'image1'
         image_get = self.provider.compute.images.get(image1_id)
         print("Get Image Exist - " + str(image_get))
         print(str(image_get.min_disk))
@@ -30,9 +28,7 @@ class AzureImageServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_images_get_notExist(self):
-        image1_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CLOUDBRIDGE-AZURE/providers/' \
-                    'Microsoft.Compute/images/imageNotExist'
+        image1_id = 'imageNotExist'
         image_get = self.provider.compute.images.get(image1_id)
         print("Get Image Not Exist- " + str(image_get))
         self.assertIsNone(image_get)

+ 4 - 14
azure_test/test_azure_instance_service.py

@@ -11,19 +11,13 @@ class AzureInstanceServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_instances_get_exist(self):
-        instance_get = self.provider.compute.instances. \
-            get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/'
-                'resourceGroups/cloudbridge-azure/providers/'
-                'Microsoft.Compute/virtualMachines/VM1')
+        instance_get = self.provider.compute.instances.get('VM1')
         print("Get Instance - " + str(instance_get))
         self.assertIsNotNone(instance_get)
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_instances_get_Not_exist(self):
-        instance_get = self.provider.compute.instances. \
-            get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/'
-                'resourceGroups/cloudbridge-azure/providers/'
-                'Microsoft.Compute/virtualMachines/VM_dontfindme')
+        instance_get = self.provider.compute.instances.get('VM_dontfindme')
         print("Get Instance Not Exist - " + str(instance_get))
         self.assertIsNone(instance_get)
 
@@ -36,9 +30,7 @@ class AzureInstanceServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['block_store.snapshots'])
     def test_azure_instance_create_and_get(self):
-        image_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                   'resourceGroups/CLOUDBRIDGE-AZURE/providers/' \
-                   'Microsoft.Compute/images/image3'
+        image_id = 'image3'
 
         img = self.provider.compute.images.get(image_id)
 
@@ -50,9 +42,7 @@ class AzureInstanceServiceTestCase(ProviderTestBase):
 
         inst_type = [t for t in self.provider.compute.instance_types.list()
                      if t.name == 'Standard_DS1_v2'][0]
-        sg_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                '/resourceGroups/CloudBridge-Azure' \
-                '/providers/Microsoft.Network/networkSecurityGroups/sg2'
+        sg_id = 'sg2'
         sg = self.provider.security.\
             security_groups.get(sg_id)
 

+ 9 - 44
azure_test/test_azure_network_service.py

@@ -20,20 +20,12 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
                   str(network.id) + ", State: " + network.state +
                   ", Cidr_Block: " + str(network.cidr_block) + " )")
         self.assertTrue(len(networks) == 2, "Count should be 2")
-        self.assertEqual(networks[0].id,
-                         '/subscriptions'
-                         '/7904d702-e01c-4826-8519-f5a25c866a96'
-                         '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                         '/Microsoft.Network/virtualNetworks/CloudBridgeNet1')
+        self.assertEqual(networks[0].id, 'CloudBridgeNet1')
         self.assertEqual(networks[0].name, "CloudBridgeNet1")
         self.assertEqual(networks[0].cidr_block,
                          '10.0.0.0/16')
         self.assertEqual(networks[0].state, "available")
-        self.assertEqual(networks[1].id,
-                         '/subscriptions'
-                         '/7904d702-e01c-4826-8519-f5a25c866a96'
-                         '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                         '/Microsoft.Network/virtualNetworks/CloudBridgeNet2')
+        self.assertEqual(networks[1].id, 'CloudBridgeNet2')
         self.assertEqual(networks[1].name, "CloudBridgeNet2")
         self.assertEqual(networks[1].cidr_block,
                          '10.0.0.0/16')
@@ -41,16 +33,9 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['network'])
     def test_azure_network_service_get_exist(self):
-        network = self.provider.network \
-            .get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'
-                 '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                 '/Microsoft.Network/virtualNetworks/CloudBridgeNet1')
+        network = self.provider.network.get('CloudBridgeNet1')
         print("get exist: " + str(network))
-        self.assertEqual(network.id,
-                         '/subscriptions'
-                         '/7904d702-e01c-4826-8519-f5a25c866a96'
-                         '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                         '/Microsoft.Network/virtualNetworks/CloudBridgeNet1')
+        self.assertEqual(network.id, 'CloudBridgeNet1')
         self.assertEqual(network.name, "CloudBridgeNet1")
         self.assertEqual(network.cidr_block,
                          '10.0.0.0/16')
@@ -58,10 +43,7 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['network'])
     def test_azure_network_service_get_doesnt_exist(self):
-        network = self.provider.network \
-            .get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'
-                 '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                 '/Microsoft.Network/virtualNetworks/CloudBridgeNet10')
+        network = self.provider.network.get('CloudBridgeNet10')
         print("get does not exist: " + str(network))
         self.assertEqual(
             str(network), 'None')
@@ -96,19 +78,13 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['network'])
     def test_azure_network_service_delete_networkid_exists(self):
-        isdeleted = self.provider.network.delete(
-            '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'
-            '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-            '/Microsoft.Network/virtualNetworks/CloudBridgeNet3')
+        isdeleted = self.provider.network.delete('CloudBridgeNet3')
 
         print("Delete Network Id exist: " + str(isdeleted))
         self.assertEqual(isdeleted, True)
 
         # Calling get network to make sure network was actually deleted
-        network = self.provider.network \
-            .get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'
-                 '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                 '/Microsoft.Network/virtualNetworks/CloudBridgeNet3')
+        network = self.provider.network.get('CloudBridgeNet3')
         print("get does not exist: " + str(network))
 
         self.assertEqual(
@@ -116,10 +92,7 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['network'])
     def test_azure_network_service_delete_networkid_does_not_exist(self):
-        isdeleted = self.provider.network.delete(
-            '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'
-            '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-            '/Microsoft.Network/virtualNetworks/CloudBridgeNet10')
+        isdeleted = self.provider.network.delete('CloudBridgeNet10')
 
         print("Delete Network Id does not exist: " + str(isdeleted))
         self.assertEqual(isdeleted, False)
@@ -144,10 +117,7 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
             self.assertIsNotNone(router)
 
     def test_network_create_and_list_subnet(self):
-        network = self.provider.network \
-            .get('/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'
-                 '/resourceGroups/CLOUDBRIDGE-AZURE/providers'
-                 '/Microsoft.Network/virtualNetworks/CloudBridgeNet1')
+        network = self.provider.network.get('CloudBridgeNet1')
 
         subnet = network.create_subnet('10.0.0.0/24')
         self.assertIsNotNone(subnet)
@@ -162,11 +132,6 @@ class AzureNetworkServiceTestCase(ProviderTestBase):
 
         floating_ip = self.provider.network.create_floating_ip()
         print("create: " + str(floating_ip))
-        self.assertEqual(floating_ip.id,
-                         '/subscriptions'
-                         '/7904d702-e01c-4826-8519-f5a25c866a96'
-                         '/resourceGroups/cloudbridge-azure/providers'
-                         '/Microsoft.Network/publicIPAddresses/public_ip_test')
         self.assertEqual(floating_ip.public_ip, '13.82.104.38')
         self.assertEqual(floating_ip.private_ip, None)
 

+ 2 - 4
azure_test/test_azure_region_service.py

@@ -23,8 +23,7 @@ class AzureRegionServiceTestCase(ProviderTestBase):
                 "Region name should be a non-empty string")
 
     def test_azure_region_service_get(self):
-        region_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/" \
-                    "locations/westus2"
+        region_id = "westus2"
         region = self.provider.compute.regions.get(region_id)
         self.assertIsNotNone(region)
         self.assertEqual(region.name, "westus2")
@@ -33,8 +32,7 @@ class AzureRegionServiceTestCase(ProviderTestBase):
         self.assertEqual(region.zones[0].region_name, region.name)
 
     def test_azure_region_service_get_invalid_region_id(self):
-        region_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/" \
-                    "locations/invalid"
+        region_id = "invalid"
         region = self.provider.compute.regions.get(region_id)
         self.assertIsNone(region)
 

+ 5 - 15
azure_test/test_azure_snapshots_service.py

@@ -7,9 +7,7 @@ from cloudbridge.cloud.interfaces import SnapshotState
 class AzureSnapshotsServiceTestCase(ProviderTestBase):
     @helpers.skipIfNoService(['block_store.snapshots'])
     def test_azure_snapshot_create_and_get(self):
-        volume_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-            '/resourceGroups/cloudbridge-azure'\
-            '/providers/Microsoft.Compute/disks/Volume1"
+        volume_id = "Volume1"
         snapshot = self.provider.block_store. \
             snapshots.create("MySnapshot",
                              volume_id)
@@ -34,9 +32,7 @@ class AzureSnapshotsServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['block_store.snapshots'])
     def test_azure_snapshot_delete(self):
-        volume_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-            '/resourceGroups/cloudbridge-azure'\
-            '/providers/Microsoft.Compute/disks/Volume1"
+        volume_id = "Volume1"
         snapshot = self.provider.block_store. \
             snapshots.create("MySnapshot",
                              volume_id, description='My snapshot')
@@ -53,18 +49,14 @@ class AzureSnapshotsServiceTestCase(ProviderTestBase):
         snapshot.refresh()
         self.assertEqual(snapshot.state, SnapshotState.UNKNOWN)
 
-        snapshot_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-                '/resourceGroups/cloudbridge-azure'\
-                '/providers/Microsoft.Compute/snapshots/MySnapshot"
+        snapshot_id = "MySnapshot"
         snapshot1 = self.provider.block_store.snapshots.get(snapshot_id)
         self.assertTrue(
             snapshot1 is None, "Snapshot still exists")
 
     @helpers.skipIfNoService(['block_store.snapshots'])
     def test_azure_snapshot_create_volume(self):
-        volume_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-            '/resourceGroups/cloudbridge-azure'\
-            '/providers/Microsoft.Compute/disks/Volume1"
+        volume_id = "Volume1"
         snapshot = self.provider.block_store. \
             snapshots.create("MySnapshot",
                              volume_id,
@@ -82,9 +74,7 @@ class AzureSnapshotsServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['block_store.snapshots'])
     def test_azure_snapshot_get_ifNotExist(self):
-        snapshot_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-                '/resourceGroups/cloudbridge-azure'\
-                '/providers/Microsoft.Compute/snapshots/MySnapshot123"
+        snapshot_id = "MySnapshot123"
         snapshot = self.provider.block_store.snapshots.get(snapshot_id)
         self.assertTrue(
             snapshot is None, "Snapshot should not be available")

+ 2 - 2
azure_test/test_azure_storage_account.py

@@ -10,7 +10,7 @@ class AzureStorageAccountTestCase(ProviderTestBase):
             'kind': 'storage',
             'location': 'eastus',
         }
-        rg = self.provider._azure_client. \
+        rg = self.provider.azure_client. \
             create_storage_account('cloudbridgeazure',
                                    storage_account_params)
         print("Create Resource - " + str(rg))
@@ -19,7 +19,7 @@ class AzureStorageAccountTestCase(ProviderTestBase):
             "Storage account name should be cloudbridgeazure")
 
     def test_storage_account_get(self):
-        sa = self.provider._azure_client.get_storage_account('MyGroup')
+        sa = self.provider.azure_client.get_storage_account('MyGroup')
         self.assertTrue(
             sa.name == "MyGroup",
             "storage account should be MyGroup")

+ 6 - 22
azure_test/test_azure_subnet_service.py

@@ -12,9 +12,7 @@ class AzureSubnetServiceTestCase(ProviderTestBase):
             print("network_id" + subnet.network_id)
 
     def test_azure_subnet_service_list_filter_network_id(self):
-        network_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                     'resourceGroups/CloudBridge-Azure/providers/' \
-                     'Microsoft.Network/virtualNetworks/CloudBridgeNet2'
+        network_id = 'CloudBridgeNet2'
         subnets = self.provider.network.subnets.list(network_id)
         self.assertIsNotNone(subnets)
         for subnet in subnets:
@@ -24,9 +22,7 @@ class AzureSubnetServiceTestCase(ProviderTestBase):
             print("network_id" + subnet.network_id)
 
     def test_azure_subnet_service_list_filter_network_object(self):
-        network_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                     'resourceGroups/CloudBridge-Azure/providers/' \
-                     'Microsoft.Network/virtualNetworks/CloudBridgeNet2'
+        network_id = 'CloudBridgeNet2'
         network = self.provider.network.get(network_id)
         subnets = self.provider.network.subnets.list(network)
         self.assertIsNotNone(subnets)
@@ -37,10 +33,7 @@ class AzureSubnetServiceTestCase(ProviderTestBase):
             print("network_id" + subnet.network_id)
 
     def test_azure_subnet_service_get(self):
-        subnet_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CloudBridge-Azure/providers/' \
-                    'Microsoft.Network/virtualNetworks/' \
-                    'CloudBridgeNet2/subnets/MySN1'
+        subnet_id = 'MySN1'
         subnet = self.provider.network.subnets.get(subnet_id)
         self.assertIsNotNone(subnet)
         if subnet:
@@ -51,18 +44,12 @@ class AzureSubnetServiceTestCase(ProviderTestBase):
             print("network_id" + subnet.network_id)
 
     def test_azure_subnet_service_get_invalid_subnet(self):
-        subnet_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CloudBridge-Azure/providers/' \
-                    'Microsoft.Network/virtualNetworks/' \
-                    'CloudBridgeNet/subnets/MySN'
+        subnet_id = 'MySN'
         subnet = self.provider.network.subnets.get(subnet_id)
         self.assertIsNone(subnet)
 
     def test_azure_create_and_delete_from_resource_subnet(self):
-        network_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CloudBridge-Azure/providers/' \
-                    'Microsoft.Network/virtualNetworks/' \
-                    'CloudBridgeNet2'
+        network_id = 'CloudBridgeNet2'
         subnet = self.provider.network.\
             subnets.create(network=network_id,
                            cidr_block='10.0.0.0/24')
@@ -74,10 +61,7 @@ class AzureSubnetServiceTestCase(ProviderTestBase):
         self.assertFalse(deleted)
 
     def test_azure_create_and_delete_from_service_subnet(self):
-        network_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CloudBridge-Azure/providers/' \
-                    'Microsoft.Network/virtualNetworks/' \
-                    'CloudBridgeNet2'
+        network_id = 'CloudBridgeNet2'
         subnet = self.provider.network.\
             subnets.create(network=network_id,
                            name='test', cidr_block='10.0.0.0/24')

+ 57 - 57
cloudbridge/cloud/providers/azure/azure_client.py

@@ -37,16 +37,16 @@ class AzureClient(object):
     def access_key_result(self):
         if not self._access_key_result:
             self._access_key_result = self.storage_client.storage_accounts. \
-                list_keys(self.resource_group_name, self.storage_account_name)
+                list_keys(self.resource_group, self.storage_account)
         return self._access_key_result
 
     @property
-    def resource_group_name(self):
+    def resource_group(self):
         return self._config.get('azure_resource_group')
 
     @property
-    def storage_account_name(self):
-        return self._config.get('azure_storage_account_name')
+    def storage_account(self):
+        return self._config.get('azure_storage_account')
 
     @property
     def region_name(self):
@@ -97,7 +97,7 @@ class AzureClient(object):
     def blob_service(self):
         if not self._block_blob_service:
             self._block_blob_service = BlockBlobService(
-                self.storage_account_name,
+                self.storage_account,
                 self.access_key_result.keys[0].value)
         return self._block_blob_service
 
@@ -108,13 +108,13 @@ class AzureClient(object):
         return self.resource_client.resource_groups. \
             create_or_update(name, parameters)
 
-    def get_storage_account(self, storage_account_name):
+    def get_storage_account(self, storage_account):
         return self.storage_client.storage_accounts. \
-            get_properties(self.resource_group_name, storage_account_name)
+            get_properties(self.resource_group, storage_account)
 
     def create_storage_account(self, name, params):
         return self.storage_client.storage_accounts. \
-            create(self.resource_group_name, name, params).result()
+            create(self.resource_group, name, params).result()
 
     def list_locations(self):
         return self.subscription_client.subscriptions. \
@@ -122,36 +122,36 @@ class AzureClient(object):
 
     def list_security_group(self):
         return self.network_management_client.network_security_groups. \
-            list(self.resource_group_name)
+            list(self.resource_group)
 
     def create_security_group(self, name, parameters):
         return self.network_management_client.network_security_groups. \
-            create_or_update(self.resource_group_name, name,
+            create_or_update(self.resource_group, name,
                              parameters).result()
 
     def update_security_group_tags(self, name, tags):
         return self.network_management_client.network_security_groups. \
-            create_or_update(self.resource_group_name, name,
+            create_or_update(self.resource_group, name,
                              {'tags': tags}).result()
 
     def create_security_group_rule(self, security_group,
                                    rule_name, parameters):
         return self.network_management_client.security_rules. \
-            create_or_update(self.resource_group_name, security_group,
+            create_or_update(self.resource_group, security_group,
                              rule_name, parameters).result()
 
     def delete_security_group_rule(self, name, security_group):
         return self.network_management_client.security_rules. \
-            delete(self.resource_group_name, security_group, name).result()
+            delete(self.resource_group, security_group, name).result()
 
     def get_security_group(self, name):
         return self.network_management_client.network_security_groups. \
-            get(self.resource_group_name, name)
+            get(self.resource_group, name)
 
     def delete_security_group(self, name):
         delete_async = self.network_management_client \
             .network_security_groups. \
-            delete(self.resource_group_name, name)
+            delete(self.resource_group, name)
         delete_async.wait()
 
     def list_containers(self, prefix=None):
@@ -195,7 +195,7 @@ class AzureClient(object):
 
     def create_empty_disk(self, disk_name, params):
         return self.compute_client.disks.create_or_update(
-            self.resource_group_name,
+            self.resource_group,
             disk_name,
             params,
             raw=True
@@ -203,7 +203,7 @@ class AzureClient(object):
 
     def create_snapshot_disk(self, disk_name, params):
         return self.compute_client.disks.create_or_update(
-            self.resource_group_name,
+            self.resource_group,
             disk_name,
             params,
             raw=True
@@ -211,11 +211,11 @@ class AzureClient(object):
 
     def list_snapshots(self):
         return self.compute_client.snapshots. \
-            list_by_resource_group(self.resource_group_name)
+            list_by_resource_group(self.resource_group)
 
     def update_disk_tags(self, disk_name, tags):
         return self.compute_client.disks.update(
-            self.resource_group_name,
+            self.resource_group,
             disk_name,
             {'tags': tags},
             raw=True
@@ -223,45 +223,45 @@ class AzureClient(object):
 
     def get_disk(self, disk_name):
         return self.compute_client.disks. \
-            get(self.resource_group_name, disk_name)
+            get(self.resource_group, disk_name)
 
     def list_networks(self):
         return self.network_management_client.virtual_networks.list(
-            self.resource_group_name)
+            self.resource_group)
 
     def get_network(self, network_name):
         return self.network_management_client.virtual_networks.get(
-            self.resource_group_name, network_name)
+            self.resource_group, network_name)
 
     def create_network(self, name, params):
         return self.network_management_client.virtual_networks. \
-            create_or_update(self.resource_group_name,
+            create_or_update(self.resource_group,
                              name,
                              parameters=params,
                              raw=True)
 
     def delete_network(self, network_name):
         return self.network_management_client.virtual_networks. \
-            delete(self.resource_group_name, network_name).wait()
+            delete(self.resource_group, network_name).wait()
 
     def create_floating_ip(self, public_ip_name, public_ip_parameters):
         return self.network_management_client.public_ip_addresses. \
-            create_or_update(self.resource_group_name,
+            create_or_update(self.resource_group,
                              public_ip_name,
                              public_ip_parameters).result()
 
     def delete_floating_ip(self, public_ip_address_name):
         return self.network_management_client.public_ip_addresses. \
-            delete(self.resource_group_name,
+            delete(self.resource_group,
                    public_ip_address_name).result()
 
     def list_floating_ips(self):
         return self.network_management_client.public_ip_addresses.list(
-            self.resource_group_name)
+            self.resource_group)
 
     def update_network_tags(self, network_name, tags):
         return self.network_management_client.virtual_networks. \
-            create_or_update(self.resource_group_name,
+            create_or_update(self.resource_group,
                              network_name,
                              {
                                  'tags': tags
@@ -269,20 +269,20 @@ class AzureClient(object):
 
     def list_disks(self):
         return self.compute_client.disks. \
-            list_by_resource_group(self.resource_group_name)
+            list_by_resource_group(self.resource_group)
 
     def delete_disk(self, disk_name):
         async_deletion = self.compute_client.disks. \
-            delete(self.resource_group_name, disk_name)
+            delete(self.resource_group, disk_name)
         async_deletion.wait()
 
     def get_snapshot(self, snapshot_name):
-        return self.compute_client.snapshots.get(self.resource_group_name,
+        return self.compute_client.snapshots.get(self.resource_group,
                                                  snapshot_name)
 
     def create_snapshot(self, snapshot_name, params):
         return self.compute_client.snapshots.create_or_update(
-            self.resource_group_name,
+            self.resource_group,
             snapshot_name,
             params,
             raw=True
@@ -290,12 +290,12 @@ class AzureClient(object):
 
     def delete_snapshot(self, snapshot_name):
         async_delete = self.compute_client.snapshots. \
-            delete(self.resource_group_name, snapshot_name)
+            delete(self.resource_group, snapshot_name)
         async_delete.wait()
 
     def update_snapshot_tags(self, snapshot_name, tags):
         return self.compute_client.snapshots.update(
-            self.resource_group_name,
+            self.resource_group,
             snapshot_name,
             {'tags': tags},
             raw=True
@@ -303,24 +303,24 @@ class AzureClient(object):
 
     def create_image(self, name, params):
         return self.compute_client.images. \
-            create_or_update(self.resource_group_name, name,
+            create_or_update(self.resource_group, name,
                              params, raw=True)
 
     def delete_image(self, name):
         self.compute_client.images. \
-            delete(self.resource_group_name, name).wait()
+            delete(self.resource_group, name).wait()
 
     def list_images(self):
         return self.compute_client.images. \
-            list_by_resource_group(self.resource_group_name)
+            list_by_resource_group(self.resource_group)
 
     def get_image(self, image_name):
         return self.compute_client.images. \
-            get(self.resource_group_name, image_name)
+            get(self.resource_group, image_name)
 
     def update_image_tags(self, name, tags):
         return self.compute_client.images. \
-            create_or_update(self.resource_group_name, name,
+            create_or_update(self.resource_group, name,
                              {
                                  'tags': tags
                              }).result()
@@ -331,17 +331,17 @@ class AzureClient(object):
 
     def list_subnets(self, network_name):
         return self.network_management_client.subnets.\
-            list(self.resource_group_name, network_name)
+            list(self.resource_group, network_name)
 
     def get_subnet(self, network_name, subnet_name):
         return self.network_management_client.subnets.\
-            get(self.resource_group_name, network_name, subnet_name)
+            get(self.resource_group, network_name, subnet_name)
 
     def create_subnet(self, network_name,
                       subnet_name, params):
         result_create = self.network_management_client \
             .subnets.create_or_update(
-                self.resource_group_name,
+                self.resource_group,
                 network_name,
                 subnet_name,
                 params
@@ -353,7 +353,7 @@ class AzureClient(object):
     def delete_subnet(self, network_name, subnet_name):
         result_delete = self.network_management_client \
             .subnets.delete(
-                self.resource_group_name,
+                self.resource_group,
                 network_name,
                 subnet_name
             )
@@ -361,65 +361,65 @@ class AzureClient(object):
 
     def list_vm(self):
         return self.compute_client.virtual_machines.list(
-            self.resource_group_name
+            self.resource_group
         )
 
     def restart_vm(self, vm_name):
         return self.compute_client.virtual_machines.restart(
-            self.resource_group_name,
+            self.resource_group,
             vm_name
         ).wait()
 
     def delete_vm(self, vm_name):
         return self.compute_client.virtual_machines.delete(
-            self.resource_group_name,
+            self.resource_group,
             vm_name
         ).wait()
 
     def get_vm(self, vm_name):
         return self.compute_client.virtual_machines.get(
-            self.resource_group_name,
+            self.resource_group,
             vm_name,
             expand='instanceView'
         )
 
     def create_vm(self, vm_name, params):
         return self.compute_client.virtual_machines. \
-            create_or_update(self.resource_group_name,
+            create_or_update(self.resource_group,
                              vm_name, params, raw=True)
 
     def deallocate_vm(self, vm_name):
         self.compute_client. \
-            virtual_machines.deallocate(self.resource_group_name,
+            virtual_machines.deallocate(self.resource_group,
                                         vm_name).wait()
 
     def generalize_vm(self, vm_name):
         self.compute_client.virtual_machines. \
-            generalize(self.resource_group_name, vm_name)
+            generalize(self.resource_group, vm_name)
 
     def start_vm(self, vm_name):
         self.compute_client.virtual_machines. \
-            start(self.resource_group_name,
+            start(self.resource_group,
                   vm_name).wait()
 
     def update_vm_tags(self, vm_name, tags):
         self.compute_client.virtual_machines. \
-            create_or_update(self.resource_group_name,
+            create_or_update(self.resource_group,
                              vm_name, {'tags': tags})
 
     def delete_nic(self, nic_name):
         self.network_management_client. \
-            network_interfaces.delete(self.resource_group_name,
+            network_interfaces.delete(self.resource_group,
                                       nic_name).wait()
 
     def get_nic(self, name):
         return self.network_management_client. \
-            network_interfaces.get(self.resource_group_name, name)
+            network_interfaces.get(self.resource_group, name)
 
     def create_nic(self, nic_name, params):
         async_nic_creation = self.network_management_client. \
             network_interfaces.create_or_update(
-                self.resource_group_name,
+                self.resource_group,
                 nic_name,
                 params
             )
@@ -429,9 +429,9 @@ class AzureClient(object):
 
     def get_public_ip(self, name):
         return self.network_management_client. \
-            public_ip_addresses.get(self.resource_group_name, name)
+            public_ip_addresses.get(self.resource_group, name)
 
     def delete_public_ip(self, public_ip_name):
         self.network_management_client. \
-            public_ip_addresses.delete(self.resource_group_name,
+            public_ip_addresses.delete(self.resource_group,
                                        public_ip_name).wait()

+ 47 - 50
cloudbridge/cloud/providers/azure/mock_azure_client.py

@@ -6,8 +6,8 @@ from io import BytesIO
 from azure.common import AzureException
 from azure.mgmt.compute.models import CreationData, DataDisk, \
     Disk, DiskCreateOption, Image, InstanceViewStatus, \
-    ManagedDiskParameters, \
-    NetworkProfile, OSDisk, Snapshot, StorageProfile, VirtualMachine, \
+    ManagedDiskParameters, NetworkProfile, OSDisk, Snapshot,\
+    StorageProfile, VirtualMachine, \
     VirtualMachineInstanceView, VirtualMachineSize
 
 from azure.mgmt.network.models import AddressSpace, NetworkInterface, \
@@ -48,7 +48,7 @@ class MockAzureClient:
 
     sec_gr1 = NetworkSecurityGroup()
     sec_gr1.name = "sg1"
-    sec_gr1.id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
+    sec_gr1.id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/cloudbridge'\
     '/providers/Microsoft.Network/networkSecurityGroups/sg1"
     sec_gr1.tags = None
     sec_gr1.resource_guid = uuid.uuid4()
@@ -56,14 +56,14 @@ class MockAzureClient:
 
     sec_gr2 = NetworkSecurityGroup()
     sec_gr2.name = "sg2"
-    sec_gr2.id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
+    sec_gr2.id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/cloudbridge'\
     '/providers/Microsoft.Network/networkSecurityGroups/sg2"
     sec_gr2.tags = None
     sec_gr2.security_rules = [sg_rule1, sg_rule2]
 
     sec_gr3 = NetworkSecurityGroup()
     sec_gr3.name = "sg3"
-    sec_gr3.id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
+    sec_gr3.id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/cloudbridge'\
     '/providers/Microsoft.Network/networkSecurityGroups/sg3"
     sec_gr3.tags = {'Name': 'sg3'}
     sec_gr3.security_rules = [sg_rule1, sg_rule2]
@@ -102,7 +102,7 @@ class MockAzureClient:
 
     network1 = VirtualNetwork()
     network1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                  '/resourceGroups/CLOUDBRIDGE-AZURE/providers' \
+                  '/resourceGroups/cloudbridge/providers' \
                   '/Microsoft.Network/virtualNetworks/CloudBridgeNet1'
     network1.name = "CloudBridgeNet1"
     network1.location = 'eastus'
@@ -112,7 +112,7 @@ class MockAzureClient:
 
     network2 = VirtualNetwork()
     network2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                  '/resourceGroups/CLOUDBRIDGE-AZURE/providers' \
+                  '/resourceGroups/cloudbridge/providers' \
                   '/Microsoft.Network/virtualNetworks/CloudBridgeNet2'
     network2.name = "CloudBridgeNet2"
     network2.location = 'eastus'
@@ -122,7 +122,7 @@ class MockAzureClient:
 
     network3 = VirtualNetwork()
     network3.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                  '/resourceGroups/CLOUDBRIDGE-AZURE/providers' \
+                  '/resourceGroups/cloudbridge/providers' \
                   '/Microsoft.Network/virtualNetworks/CloudBridgeNet3'
     network3.name = "CloudBridgeNet3"
     network3.location = 'eastus'
@@ -134,7 +134,7 @@ class MockAzureClient:
 
     floating_ip1 = PublicIPAddress()
     floating_ip1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                      '/resourceGroups/cloudbridge-azure/providers' \
+                      '/resourceGroups/cloudbridge/providers' \
                       '/Microsoft.Network/publicIPAddresses/public_ip_1'
     floating_ip1.name = 'public_ip_1'
     floating_ip1.public_ip = '13.82.104.1'
@@ -142,7 +142,7 @@ class MockAzureClient:
 
     floating_ip2 = PublicIPAddress()
     floating_ip2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                      '/resourceGroups/cloudbridge-azure/providers' \
+                      '/resourceGroups/cloudbridge/providers' \
                       '/Microsoft.Network/publicIPAddresses/public_ip_2'
     floating_ip2.name = 'public_ip_2'
     floating_ip2.public_ip = '13.82.104.2'
@@ -150,7 +150,7 @@ class MockAzureClient:
 
     floating_ip3 = PublicIPAddress()
     floating_ip3.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                      '/resourceGroups/cloudbridge-azure/providers' \
+                      '/resourceGroups/cloudbridge/providers' \
                       '/Microsoft.Network/publicIPAddresses/public_ip_3'
     floating_ip3.name = 'public_ip_3'
     floating_ip3.public_ip = '13.82.104.3'
@@ -160,7 +160,7 @@ class MockAzureClient:
 
     volume1 = Disk(location='eastus', creation_data=None)
     volume1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                 'resourceGroups/CLOUDBRIDGE-AZURE' \
+                 'resourceGroups/cloudbridge' \
                  '/providers/Microsoft.Compute/disks/Volume1'
     volume1.name = "Volume1"
     volume1.disk_size_gb = 1
@@ -171,12 +171,12 @@ class MockAzureClient:
     volume1.tags = {'Name': 'Volume1'}
     volume1.creation_data.source_uri = \
         '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-        '/resourceGroups/CLOUDBRIDGE-AZURE' \
+        '/resourceGroups/cloudbridge' \
         '/providers/Microsoft.Compute/snapshots/snapshot1'
 
     volume2 = Disk(location='eastus', creation_data=None)
     volume2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                 '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                 '/resourceGroups/cloudbridge' \
                  '/providers/Microsoft.Compute/disks/Volume2'
     volume2.name = "Volume2"
     volume2.disk_size_gb = 1
@@ -196,7 +196,7 @@ class MockAzureClient:
     snapshot1.disk_size_gb = 1
 
     snapshot1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                   '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                   '/resourceGroups/cloudbridge' \
                    '/providers/Microsoft.Compute/snapshots/snapshot1'
     snapshot1.os_type = 'Linux'
     snapshot1.account_type = 'Premium_LRS'
@@ -208,7 +208,7 @@ class MockAzureClient:
     snapshot2.creation_data = \
         CreationData(create_option=DiskCreateOption.empty)
     snapshot2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                   '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                   '/resourceGroups/cloudbridge' \
                    '/providers/Microsoft.Compute/snapshots/snapshot2'
     snapshot2.os_type = 'Windows'
     snapshot2.account_type = ' Standard_LRS'
@@ -218,14 +218,14 @@ class MockAzureClient:
     nic1 = NetworkInterface()
     nic1.name = 'nic1'
     nic1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-              'resourceGroups/CLOUDBRIDGE-AZURE' \
+              'resourceGroups/cloudbridge' \
               '/providers/Microsoft.Network/' \
               'networkInterfaces/nic1'
 
     nic2 = NetworkInterface()
     nic2.name = 'nic2'
     nic2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-              'resourceGroups/CLOUDBRIDGE-AZURE' \
+              'resourceGroups/cloudbridge' \
               '/providers/Microsoft.Network/' \
               'networkInterfaces/nic2'
 
@@ -234,7 +234,7 @@ class MockAzureClient:
     vm1 = VirtualMachine(location='eastus')
     vm1.name = 'VM1'
     vm1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-             '/resourceGroups/CLOUDBRIDGE-AZURE'\
+             '/resourceGroups/cloudbridge'\
              '/providers/Microsoft.Compute/virtualMachines/VM1'
     vm1.provisioning_state = 'Succeeded'
     vm1.storage_profile = StorageProfile()
@@ -246,7 +246,7 @@ class MockAzureClient:
     ]
     data_disk_id = '/subscriptions'\
                    '/7904d702-e01c-4826-8519-f5a25c866a96' \
-                   '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                   '/resourceGroups/cloudbridge' \
                    '/providers/Microsoft.Compute/disks/Volume2'
     data_dik = \
         DataDisk(managed_disk=ManagedDiskParameters(id=data_disk_id),
@@ -270,7 +270,7 @@ class MockAzureClient:
         InstanceViewStatus(display_status='VM running'),
     ]
     vm2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-             '/resourceGroups/CLOUDBRIDGE-AZURE' \
+             '/resourceGroups/cloudbridge' \
              '/providers/Microsoft.Compute/virtualMachines/VM2'
     vm2.provisioning_state = 'Succeeded'
     vm2.storage_profile = StorageProfile()
@@ -290,7 +290,7 @@ class MockAzureClient:
     image1.name = 'image1'
     image1.tags = {'Name': 'image1'}
     image1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                'resourceGroups/CLOUDBRIDGE-AZURE/providers/' \
+                'resourceGroups/cloudbridge/providers/' \
                 'Microsoft.Compute/images/image1'
     image1.storage_profile = StorageProfile()
     image1.storage_profile.os_disk = ManagedDiskParameters(id='')
@@ -304,7 +304,7 @@ class MockAzureClient:
     image2.name = 'image2'
     image2.tags = {'Name': 'image2'}
     image2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                '/resourceGroups/cloudbridge' \
                 '/providers/Microsoft.Compute/images/image2'
     image2.storage_profile = StorageProfile()
     image2.storage_profile.os_disk = ManagedDiskParameters(id='')
@@ -319,7 +319,7 @@ class MockAzureClient:
     image3.name = 'image3'
     image3.tags = {'Name': 'image3'}
     image3.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                '/resourceGroups/cloudbridge' \
                 '/providers/Microsoft.Compute/images/image3'
     image3.storage_profile = StorageProfile()
     image3.storage_profile.os_disk = ManagedDiskParameters(id='')
@@ -351,14 +351,14 @@ class MockAzureClient:
 
     subnet1 = Subnet()
     subnet1.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                 '/resourceGroups/CloudBridge-Azure/providers/' \
+                 '/resourceGroups/cloudbridge/providers/' \
                  'Microsoft.Network/virtualNetworks/CloudBridgeNet1/subnets/' \
                  'MySN1'
     subnet1.name = 'MySN1'
     subnet1.address_prefix = '10.0.0.0/24'
     subnet2 = Subnet()
     subnet2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                 'resourceGroups/CloudBridge-Azure/providers/' \
+                 'resourceGroups/cloudbridge/providers/' \
                  'Microsoft.Network/virtualNetworks/CloudBridgeNet1/' \
                  'subnets/MySN2'
     subnet2.name = 'MySN2'
@@ -438,7 +438,7 @@ class MockAzureClient:
         pass
 
     def get_resource_group(self, resource_group_name):
-        if resource_group_name == 'cloudbridge-azure':
+        if resource_group_name == 'cloudbridge':
             response = Response()
             response.status_code = 404
             raise CloudError(response=response, error='Resource not found')
@@ -459,7 +459,7 @@ class MockAzureClient:
     def create_network(self, name, params):
         network = VirtualNetwork()
         network.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                     '/resourceGroups/CLOUDBRIDGE-AZURE/providers' \
+                     '/resourceGroups/cloudbridge/providers' \
                      '/Microsoft.Network/virtualNetworks/{0}'.\
             format(name)
         network.name = name
@@ -482,8 +482,10 @@ class MockAzureClient:
         floating_ip = PublicIPAddress()
         floating_ip.id = '/subscriptions' \
                          '/7904d702-e01c-4826-8519-f5a25c866a96' \
-                         '/resourceGroups/cloudbridge-azure/providers' \
-                         '/Microsoft.Network/publicIPAddresses/public_ip_test'
+                         '/resourceGroups/cloudbridge/providers' \
+                         '/Microsoft.Network/publicIPAddresses/' \
+                         + public_ip_address_name
+        floating_ip.name = public_ip_address_name
         floating_ip.ip_address = '13.82.104.38'
         floating_ip.private_ip = None
         self.floating_ips.append(floating_ip)
@@ -574,7 +576,7 @@ class MockAzureClient:
     def create_empty_disk(self, disk_name, params):
         volume = Disk(location='eastus', creation_data=None)
         volume.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/cloudbridge-azure' \
+                    'resourceGroups/cloudbridge' \
                     '/providers/Microsoft.Compute/disks/{0}'.format(disk_name)
         volume.name = disk_name
         volume.disk_size_gb = 30
@@ -587,7 +589,7 @@ class MockAzureClient:
         if disk_name.startswith('attach'):
             volume.owner_id = \
                 '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-                '/resourceGroups/CLOUDBRIDGE-AZURE'\
+                '/resourceGroups/cloudbridge'\
                 '/providers/Microsoft.Compute/virtualMachines/VM1'
         self.volumes.append(volume)
         return volume
@@ -609,7 +611,7 @@ class MockAzureClient:
         return True
 
     def get_storage_account(self, storage_account_name):
-        if storage_account_name == 'cloudbridgeazure':
+        if storage_account_name == 'cloudbridgestorage':
             response = Response()
             response.status_code = 404
             raise CloudError(response=response, error='Resource not found')
@@ -629,7 +631,7 @@ class MockAzureClient:
     def create_snapshot(self, snapshot_name, params):
         snapshot = Snapshot(location='eastus', creation_data=None)
         snapshot.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                      '/resourceGroups/cloudbridge-azure' \
+                      '/resourceGroups/cloudbridge' \
                       '/providers/Microsoft.Compute/Snapshots/{0}'.format(
                         snapshot_name)
         snapshot.name = snapshot_name
@@ -639,7 +641,7 @@ class MockAzureClient:
         snapshot.time_created = datetime(year=2017, month=5, day=2)
         snapshot.creation_data.source_uri = \
             '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-            '/resourceGroups/CloudBridge-Azure/providers' \
+            '/resourceGroups/cloudbridge/providers' \
             '/Microsoft.Compute/disks/{0}'.format(
                 snapshot_name)
         snapshot.tags = params.get('tags', None)
@@ -668,7 +670,7 @@ class MockAzureClient:
     def create_snapshot_disk(self, disk_name, params):
         volume = Disk(location='eastus', creation_data=None)
         volume.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                    '/resourceGroups/cloudbridge-azure/providers' \
+                    '/resourceGroups/cloudbridge/providers' \
                     '/Microsoft.Compute/disks/{0}'.format(
                         disk_name)
         volume.name = disk_name
@@ -705,14 +707,14 @@ class MockAzureClient:
         vm = VirtualMachine(location='eastus')
         vm.name = vm_name
         vm.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                '/resourceGroups/cloudbridge' \
                 '/providers/Microsoft.Compute/virtualMachines/' + vm_name
         vm.provisioning_state = 'Succeeded'
         vm.storage_profile = StorageProfile()
         vm.tags = {'Name': vm_name}
         data_disk_id = '/subscriptions' \
                        '/7904d702-e01c-4826-8519-f5a25c866a96' \
-                       '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                       '/resourceGroups/cloudbridge' \
                        '/providers/Microsoft.Compute/disks/Volume2'
         data_dik = \
             DataDisk(managed_disk=ManagedDiskParameters(id=data_disk_id),
@@ -722,7 +724,7 @@ class MockAzureClient:
         vm.storage_profile.os_disk = OSDisk(create_option='fromImage')
         os_disk_id = '/subscriptions' \
                      '/7904d702-e01c-4826-8519-f5a25c866a96' \
-                     '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                     '/resourceGroups/cloudbridge' \
                      '/providers/Microsoft.Compute/disks/os_disk'
 
         vm.storage_profile.os_disk.managed_disk = \
@@ -731,7 +733,7 @@ class MockAzureClient:
 
         os_disk = Disk(location='eastus', creation_data=None)
         os_disk.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                     '/resourceGroups/CLOUDBRIDGE-AZURE' \
+                     '/resourceGroups/cloudbridge' \
                      '/providers/Microsoft.Compute/disks/os_dsk'
         os_disk.name = "os_disk"
         os_disk.disk_size_gb = 30
@@ -747,7 +749,7 @@ class MockAzureClient:
         nic = NetworkInterface()
         nic.name = vm_name + '_NIC'
         nic.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                 'resourceGroups/CLOUDBRIDGE-AZURE' \
+                 'resourceGroups/cloudbridge' \
                  '/providers/Microsoft.Network/' \
                  'networkInterfaces/{0}_NIC'.format(vm_name)
 
@@ -806,7 +808,7 @@ class MockAzureClient:
     def create_subnet(self, network_name, subnet_name, params):
         subnet = Subnet()
         subnet.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                    'resourceGroups/CloudBridge-Azure/providers/' \
+                    'resourceGroups/cloudbridge/providers/' \
                     'Microsoft.Network/virtualNetworks/{0}/' \
                     'subnets/{1}'.format(network_name, subnet_name)
         subnet.name = subnet_name
@@ -823,7 +825,7 @@ class MockAzureClient:
         image.name = name
         image.tags = {'Name': name}
         image.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                   'resourceGroups/CLOUDBRIDGE-AZURE/providers/' \
+                   'resourceGroups/cloudbridge/providers/' \
                    'Microsoft.Compute/images/' + name
         image.storage_profile = StorageProfile()
         image.storage_profile.os_disk = ManagedDiskParameters(id='')
@@ -848,18 +850,13 @@ class MockAzureClient:
         pass
 
     def get_nic(self, name):
-        for nic in self.nics:
-            if nic.name == name:
-                return nic
-        response = Response()
-        response.status_code = 404
-        raise CloudError(response=response, error='Resource Not found')
+        return [nic for nic in self.nics if nic.name == name][0]
 
     def create_nic(self, name, params):
         nic = NetworkInterface()
         nic.name = name
         nic.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                 'resourceGroups/CLOUDBRIDGE-AZURE' \
+                 'resourceGroups/cloudbridge' \
                  '/providers/Microsoft.Network/' \
                  'networkInterfaces/' + name
         self.nics.append(nic)

+ 53 - 43
cloudbridge/cloud/providers/azure/provider.py

@@ -39,50 +39,18 @@ class AzureCloudProvider(BaseCloudProvider):
                                                 'eastus'))
         self.resource_group = self._get_config_value(
             'azure_resource_group', os.environ.get('AZURE_RESOURCE_GROUP',
-                                                   'cloudbridge-azure'))
-
-        self.storage_account_name = self._get_config_value(
-            'azure_storage_account_name', os.environ.get
-            ('AZURE_STORAGE_ACCOUNT_NAME', 'cloudbridgeazure'))
-
-        self.default_user_name = self._get_config_value(
-            'azure_default_user_name', os.environ.get
-            ('AZURE_DEFAULT_USER_NAME', 'cbazureuser'))
-
-        # create a dict with both optional and mandatory configuration values
-        # to pass to the azureclient class, rather
-        # than passing the provider object and taking a dependency.
-
-        self.allconfig = {'azure_subscription_id': self.subscription_id,
-                          'azure_client_Id': self.client_Id,
-                          'azure_secret': self.secret,
-                          'azure_tenant': self.tenant,
-                          'azure_region_name': self.region_name,
-                          'azure_resource_group': self.resource_group,
-                          'azure_storage_account_name':
-                              self.storage_account_name}
-
-        self._azure_client = azureclient or AzureClient(self.allconfig)
-        try:
-            self._azure_client.get_resource_group(self.resource_group)
-        except CloudError:
-            resource_group_params = {'location': self.region_name}
-            self._azure_client.create_resource_group(self.resource_group,
-                                                     resource_group_params)
+                                                   'cloudbridge'))
 
-        try:
-            self._azure_client.get_storage_account(self.storage_account_name)
-        except CloudError:
-            storage_account_params = {
-                'sku': {
-                    'name': 'Standard_LRS'
-                },
-                'kind': 'storage',
-                'location': self.region_name,
-            }
-            self._azure_client. \
-                create_storage_account(self.storage_account_name,
-                                       storage_account_params)
+        self.storage_account = self._get_config_value(
+            'azure_storage_account', os.environ.get
+            ('AZURE_STORAGE_ACCOUNT', 'cloudbridgestorage'))
+
+        self.vm_default_user_name = self._get_config_value(
+            'azure_vm_default_user_name', os.environ.get
+            ('AZURE_VM_DEFAULT_USER_NAME', 'cbuser'))
+
+        self._mock_azure_client = azureclient
+        self._azure_client = None
 
         self._security = AzureSecurityService(self)
         self._object_store = AzureObjectStoreService(self)
@@ -112,8 +80,50 @@ class AzureCloudProvider(BaseCloudProvider):
 
     @property
     def azure_client(self):
+        if not self._azure_client:
+
+            # create a dict with both optional and mandatory configuration
+            # values to pass to the azureclient class, rather
+            # than passing the provider object and taking a dependency.
+
+            provider_config = {
+                'azure_subscription_id': self.subscription_id,
+                'azure_client_Id': self.client_Id,
+                'azure_secret': self.secret,
+                'azure_tenant': self.tenant,
+                'azure_region_name': self.region_name,
+                'azure_resource_group': self.resource_group,
+                'azure_storage_account': self.storage_account
+            }
+
+            self._azure_client = \
+                self._mock_azure_client or AzureClient(provider_config)
+            self._initialize()
         return self._azure_client
 
+    def _initialize(self):
+
+        try:
+            self._azure_client.get_resource_group(self.resource_group)
+        except CloudError:
+            resource_group_params = {'location': self.region_name}
+            self._azure_client.create_resource_group(self.resource_group,
+                                                     resource_group_params)
+
+        try:
+            self._azure_client.get_storage_account(self.storage_account)
+        except CloudError:
+            storage_account_params = {
+                'sku': {
+                    'name': 'Standard_LRS'
+                },
+                'kind': 'storage',
+                'location': self.region_name,
+            }
+            self._azure_client. \
+                create_storage_account(self.storage_account,
+                                       storage_account_params)
+
 
 class MockAzureCloudProvider(AzureCloudProvider, TestMockHelperMixin):
     def __init__(self, config):

+ 183 - 226
cloudbridge/cloud/providers/azure/resources.py

@@ -15,8 +15,8 @@ from cloudbridge.cloud.base.resources import BaseAttachmentInfo, \
     BaseBucket, BaseBucketObject, BaseFloatingIP, \
     BaseInstance, BaseInstanceType, \
     BaseLaunchConfig, BaseMachineImage, BaseNetwork, \
-    BasePlacementZone, BaseRegion, \
-    BaseSecurityGroup, BaseSecurityGroupRule, BaseSnapshot, BaseSubnet, \
+    BasePlacementZone, BaseRegion, BaseSecurityGroup, \
+    BaseSecurityGroupRule, BaseSnapshot, BaseSubnet, \
     BaseVolume, ClientPagedResultList
 from cloudbridge.cloud.interfaces import InstanceState, VolumeState
 from cloudbridge.cloud.interfaces.resources import Instance, \
@@ -29,68 +29,43 @@ import pysftp
 
 log = logging.getLogger(__name__)
 
-NETWORK_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
-                      '{resourceGroupName}/providers/Microsoft.Network/' \
-                      'virtualNetworks/{virtualNetworkName}'
-IMAGE_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
-                    '{resourceGroupName}/providers/Microsoft.Compute/' \
-                    'images/{imageName}'
-INSTANCE_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
-                       '{resourceGroupName}/providers/Microsoft.Compute/' \
-                       'virtualMachines/{vmName}'
+NETWORK_INTERFACE_RESOURCE_ID = '/subscriptions/{subscriptionId}/' \
+                                'resourceGroups/{resourceGroupName}' \
+                                '/providers/Microsoft.Network/' \
+                                'networkInterfaces/{networkInterfaceName}'
+PUBLIC_IP_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups' \
+                        '/{resourceGroupName}/providers/Microsoft.Network' \
+                        '/publicIPAddresses/{publicIpAddressName}'
+SUBNET_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
+                     '{resourceGroupName}/providers/Microsoft.Network' \
+                     '/virtualNetworks/{virtualNetworkName}/subnets' \
+                     '/{subnetName}'
 VOLUME_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
                      '{resourceGroupName}/providers/Microsoft.Compute/' \
                      'disks/{diskName}'
+SECURITY_GROUP_RESOURCE_ID = '/subscriptions/{subscriptionId}/' \
+                             'resourceGroups/{resourceGroupName}/' \
+                             'providers/Microsoft.Network/' \
+                             'networkSecurityGroups/' \
+                             '{networkSecurityGroupName}'
 SNAPSHOT_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
                        '{resourceGroupName}/providers/Microsoft.Compute/' \
                        'snapshots/{snapshotName}'
-NETWORK_SECURITY_GROUP_RESOURCE_ID = '/subscriptions/{subscriptionId}/' \
-                                     'resourceGroups/{resourceGroupName}/' \
-                                     'providers/Microsoft.Network/' \
-                                     'networkSecurityGroups/' \
-                                     '{networkSecurityGroupName}'
-NETWORK_SECURITY_RULE_RESOURCE_ID = '/subscriptions/{subscriptionId}/' \
-                                    'resourceGroups/{resourceGroupName}/' \
-                                    'providers/Microsoft.Network/' \
-                                    'networkSecurityGroups/' \
-                                    '{networkSecurityGroupName}' \
-                                    '/securityRules/{securityRuleName}'
-SUBNET_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
-                     '{resourceGroupName}/providers/Microsoft.Network' \
-                     '/virtualNetworks/{virtualNetworkName}/subnets' \
-                     '/{subnetName}'
-PUBLIC_IP_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups' \
-                        '/{resourceGroupName}/providers/Microsoft.Network' \
-                        '/publicIPAddresses/{publicIpAddressName}'
-ROUTE_TABLE_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups' \
-                          '/{resourceGroupName}/providers/Microsoft.Network' \
-                          '/routeTables/{routeTableName}'
-ROUTE_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
-                    '{resourceGroupName}/providers/Microsoft.Network' \
-                    '/routeTables/{routeTableName}/routes/{routeName}'
-NETWORK_INTERFACE_RESOURCE_ID = '/subscriptions/{subscriptionId}/' \
-                                'resourceGroups/{resourceGroupName}' \
-                                '/providers/Microsoft.Network/' \
-                                'networkInterfaces/{networkInterfaceName}'
-
-LOCATION_RESOURCE_ID = '/subscriptions/{subscriptionId}/' \
-                       'locations/{locationName}'
+IMAGE_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
+                    '{resourceGroupName}/providers/Microsoft.Compute/' \
+                    'images/{imageName}'
+INSTANCE_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
+                       '{resourceGroupName}/providers/Microsoft.Compute/' \
+                       'virtualMachines/{vmName}'
 
-RESOURCE_GROUP_NAME = 'resourceGroupName'
-SUBSCRIPTION_ID = 'subscriptionId'
 NETWORK_NAME = 'virtualNetworkName'
+NETWORK_INTERFACE_NAME = 'networkInterfaceName'
+PUBLIC_IP_NAME = 'publicIpAddressName'
 IMAGE_NAME = 'imageName'
 VM_NAME = 'vmName'
 VOLUME_NAME = 'diskName'
-SNAPSHOT_NAME = 'snapshotName'
 SECURITY_GROUP_NAME = 'networkSecurityGroupName'
-SECURITY_GROUP_RULE_NAME = 'securityRuleName'
-SUBNET_NAME = 'subnetName'
-PUBLIC_IP_NAME = 'publicIpAddressName'
-ROUTE_TABLE_NAME = 'routeTableName'
-ROUTE_NAME = 'routeName'
-NETWORK_INTERFACE_NAME = 'networkInterfaceName'
-LOCATION_NAME = 'locationName'
+SNAPSHOT_NAME = 'snapshotName'
 
 
 class AzureSecurityGroup(BaseSecurityGroup):
@@ -102,10 +77,14 @@ class AzureSecurityGroup(BaseSecurityGroup):
 
     @property
     def network_id(self):
-        return self._security_group.resource_guid
+        return None
 
     @property
-    def resource_name(self):
+    def resource_id(self):
+        return self._security_group.id
+
+    @property
+    def id(self):
         return self._security_group.name
 
     @property
@@ -116,7 +95,7 @@ class AzureSecurityGroup(BaseSecurityGroup):
     def name(self, value):
         self._security_group.tags.update(Name=value)
         self._provider.azure_client. \
-            update_security_group_tags(self.resource_name,
+            update_security_group_tags(self.id,
                                        self._security_group.tags)
 
     @property
@@ -127,7 +106,7 @@ class AzureSecurityGroup(BaseSecurityGroup):
     def description(self, value):
         self._security_group.tags.update(Description=value)
         self._provider.azure_client.\
-            update_security_group_tags(self.resource_name,
+            update_security_group_tags(self.id,
                                        self._security_group.tags)
 
     @property
@@ -145,7 +124,7 @@ class AzureSecurityGroup(BaseSecurityGroup):
     def delete(self):
         try:
             self._provider.azure_client.\
-                delete_security_group(self.resource_name)
+                delete_security_group(self.id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -207,7 +186,7 @@ class AzureSecurityGroup(BaseSecurityGroup):
                               destination_address_prefix,
                           "access": access, "direction": direction}
             result = self._provider.azure_client. \
-                create_security_group_rule(self.resource_name,
+                create_security_group_rule(self.id,
                                            rule_name, parameters)
             self._security_group.security_rules.append(result)
             return AzureSecurityGroupRule(self._provider, result, self)
@@ -239,12 +218,12 @@ class AzureSecurityGroupRule(BaseSecurityGroupRule):
         super(AzureSecurityGroupRule, self).__init__(provider, rule, parent)
 
     @property
-    def name(self):
+    def id(self):
         return self._rule.name
 
     @property
-    def id(self):
-        return self._rule.id
+    def name(self):
+        return self._rule.name
 
     @property
     def ip_protocol(self):
@@ -284,7 +263,7 @@ class AzureSecurityGroupRule(BaseSecurityGroupRule):
     def delete(self):
         security_group = self.parent.name
         self._provider.azure_client. \
-            delete_security_group_rule(self.name, security_group)
+            delete_security_group_rule(self.id, security_group)
         for i, o in enumerate(self.parent._security_group.security_rules):
             if o.name == self.name:
                 del self.parent._security_group.security_rules[i]
@@ -463,29 +442,27 @@ class AzureVolume(BaseVolume):
     def __init__(self, provider, volume):
         super(AzureVolume, self).__init__(provider)
         self._volume = volume
-        self._url_params = azure_helpers. \
-            parse_url(VOLUME_RESOURCE_ID, volume.id)
         self._description = None
-        self._status = 'unknown'
-        self.update_status()
+        self._state = 'unknown'
+        self._update_state()
         if not self._volume.tags:
             self._volume.tags = {}
 
-    def update_status(self):
+    def _update_state(self):
         if not self._volume.provisioning_state == 'Succeeded':
-            self._status = self._volume.provisioning_state
+            self._state = self._volume.provisioning_state
         elif self._volume.owner_id:
-            self._status = 'Attached'
+            self._state = 'Attached'
         else:
-            self._status = 'Unattached'
+            self._state = 'Unattached'
 
     @property
     def id(self):
-        return self._volume.id
+        return self._volume.name
 
     @property
-    def resource_name(self):
-        return self._volume.name
+    def resource_id(self):
+        return self._volume.id
 
     @property
     def tags(self):
@@ -509,7 +486,7 @@ class AzureVolume(BaseVolume):
         # self._volume.name = value
         self._volume.tags.update(Name=value)
         self._provider.azure_client. \
-            update_disk_tags(self.resource_name,
+            update_disk_tags(self.id,
                              self._volume.tags)
 
     @property
@@ -520,7 +497,7 @@ class AzureVolume(BaseVolume):
     def description(self, value):
         self._volume.tags.update(Description=value)
         self._provider.azure_client. \
-            update_disk_tags(self.resource_name,
+            update_disk_tags(self.id,
                              self._volume.tags)
 
     @property
@@ -538,15 +515,20 @@ class AzureVolume(BaseVolume):
     @property
     def source(self):
         if self._volume.creation_data.source_uri:
+            url_params = azure_helpers.\
+                parse_url(SNAPSHOT_RESOURCE_ID,
+                          self._volume.creation_data.source_uri)
             return self._provider.block_store.snapshots. \
-                get(self._volume.creation_data.source_uri)
+                get(url_params.get(SNAPSHOT_NAME))
         return None
 
     @property
     def attachments(self):
         if self._volume.owner_id:
+            url_params = azure_helpers.parse_url(INSTANCE_RESOURCE_ID,
+                                                 self._volume.owner_id)
             return BaseAttachmentInfo(self,
-                                      self._volume.owner_id,
+                                      url_params.get(VM_NAME),
                                       None)
         else:
             return None
@@ -559,21 +541,18 @@ class AzureVolume(BaseVolume):
             instance_id = instance.id if isinstance(
                 instance,
                 Instance) else instance
-            params = azure_helpers.parse_url(INSTANCE_RESOURCE_ID,
-                                             instance_id)
-
-            vm = self._provider.azure_client.get_vm(params.get(VM_NAME))
+            vm = self._provider.azure_client.get_vm(instance_id)
 
             vm.storage_profile.data_disks.append({
                 'lun': len(vm.storage_profile.data_disks),
-                'name': self.resource_name,
+                'name': self.id,
                 'create_option': 'attach',
                 'managed_disk': {
-                    'id': self.id
+                    'id': self.resource_id
                 }
             })
             self._provider.azure_client \
-                .create_vm(params.get(VM_NAME), vm)
+                .create_vm(instance_id, vm)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -587,7 +566,8 @@ class AzureVolume(BaseVolume):
         for index, vm in enumerate(
                 self._provider.azure_client.list_vm()):
             for item in vm.storage_profile.data_disks:
-                if item.managed_disk and item.managed_disk.id == self.id:
+                if item.managed_disk and \
+                                item.managed_disk.id == self.resource_id:
                     vm.storage_profile.data_disks.remove(item)
                     virtual_machine = vm
                     break
@@ -606,7 +586,7 @@ class AzureVolume(BaseVolume):
         """
         Create a snapshot of this Volume.
         """
-        return self._provider.block_store.snapshots.create(name, self.id)
+        return self._provider.block_store.snapshots.create(name, self)
 
     def delete(self):
         """
@@ -614,7 +594,7 @@ class AzureVolume(BaseVolume):
         """
         try:
             self._provider.azure_client. \
-                delete_disk(self.resource_name)
+                delete_disk(self.id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -623,7 +603,7 @@ class AzureVolume(BaseVolume):
     @property
     def state(self):
         return AzureVolume.VOLUME_STATE_MAP.get(
-            self._status, VolumeState.UNKNOWN)
+            self._state, VolumeState.UNKNOWN)
 
     def refresh(self):
         """
@@ -632,13 +612,13 @@ class AzureVolume(BaseVolume):
         """
         try:
             self._volume = self._provider.azure_client. \
-                get_disk(self.resource_name)
-            self.update_status()
+                get_disk(self.id)
+            self._update_state()
         except (CloudError, ValueError) as cloudError:
             log.exception(cloudError.message)
             # The volume no longer exists and cannot be refreshed.
-            # set the status to unknown
-            self._status = 'unknown'
+            # set the state to unknown
+            self._state = 'unknown'
 
 
 class AzureSnapshot(BaseSnapshot):
@@ -656,19 +636,17 @@ class AzureSnapshot(BaseSnapshot):
         super(AzureSnapshot, self).__init__(provider)
         self._snapshot = snapshot
         self._description = None
-        self._url_params = azure_helpers. \
-            parse_url(SNAPSHOT_RESOURCE_ID, snapshot.id)
-        self._status = self._snapshot.provisioning_state
+        self._state = self._snapshot.provisioning_state
         if not self._snapshot.tags:
             self._snapshot.tags = {}
 
     @property
     def id(self):
-        return self._snapshot.id
+        return self._snapshot.name
 
     @property
-    def resource_name(self):
-        return self._snapshot.name
+    def resource_id(self):
+        return self._snapshot.id
 
     @property
     def name(self):
@@ -688,7 +666,7 @@ class AzureSnapshot(BaseSnapshot):
         # self._snapshot.name = value
         self._snapshot.tags.update(Name=value)
         self._provider.azure_client. \
-            update_snapshot_tags(self.resource_name,
+            update_snapshot_tags(self.id,
                                  self._snapshot.tags)
 
     @property
@@ -699,7 +677,7 @@ class AzureSnapshot(BaseSnapshot):
     def description(self, value):
         self._snapshot.tags.update(Description=value)
         self._provider.azure_client. \
-            update_snapshot_tags(self.resource_name,
+            update_snapshot_tags(self.id,
                                  self._snapshot.tags)
 
     @property
@@ -708,7 +686,10 @@ class AzureSnapshot(BaseSnapshot):
 
     @property
     def volume_id(self):
-        return self._snapshot.creation_data.source_uri
+        url_params = azure_helpers.\
+            parse_url(VOLUME_RESOURCE_ID,
+                      self._snapshot.creation_data.source_uri)
+        return url_params.get(VOLUME_NAME)
 
     @property
     def create_time(self):
@@ -717,7 +698,7 @@ class AzureSnapshot(BaseSnapshot):
     @property
     def state(self):
         return AzureSnapshot.SNAPSHOT_STATE_MAP.get(
-            self._status, SnapshotState.UNKNOWN)
+            self._state, SnapshotState.UNKNOWN)
 
     def refresh(self):
         """
@@ -726,20 +707,20 @@ class AzureSnapshot(BaseSnapshot):
         """
         try:
             self._snapshot = self._provider.azure_client. \
-                get_snapshot(self.resource_name)
-            self._status = self._snapshot.provisioning_state
+                get_snapshot(self.id)
+            self._state = self._snapshot.provisioning_state
         except (CloudError, ValueError) as cloudError:
             log.exception(cloudError.message)
             # The snapshot no longer exists and cannot be refreshed.
-            # set the status to unknown
-            self._status = 'unknown'
+            # set the state to unknown
+            self._state = 'unknown'
 
     def delete(self):
         """
         Delete this snapshot.
         """
         try:
-            self._provider.azure_client.delete_snapshot(self.resource_name)
+            self._provider.azure_client.delete_snapshot(self.id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -751,7 +732,7 @@ class AzureSnapshot(BaseSnapshot):
         Create a new Volume from this Snapshot.
         """
         return self._provider.block_store.volumes. \
-            create(self.resource_name, self.size,
+            create(self.id, self.size,
                    zone=placement, snapshot=self)
 
 
@@ -765,8 +746,6 @@ class AzureMachineImage(BaseMachineImage):
     def __init__(self, provider, image):
         super(AzureMachineImage, self).__init__(provider)
         self._image = image
-        self._url_params = azure_helpers. \
-            parse_url(IMAGE_RESOURCE_ID, image.id)
         self._state = self._image.provisioning_state
 
         if not self._image.tags:
@@ -780,6 +759,10 @@ class AzureMachineImage(BaseMachineImage):
         :rtype: ``str``
         :return: ID for this instance as returned by the cloud middleware.
         """
+        return self._image.name
+
+    @property
+    def resource_id(self):
         return self._image.id
 
     @property
@@ -799,7 +782,7 @@ class AzureMachineImage(BaseMachineImage):
         """
         self._image.tags.update(Name=value)
         self._provider.azure_client. \
-            update_image_tags(self.resource_name, self._image.tags)
+            update_image_tags(self.id, self._image.tags)
 
     @property
     def description(self):
@@ -818,11 +801,7 @@ class AzureMachineImage(BaseMachineImage):
         """
         self._image.tags.update(Description=value)
         self._provider.azure_client. \
-            update_image_tags(self.resource_name, self._image.tags)
-
-    @property
-    def resource_name(self):
-        return self._image.name
+            update_image_tags(self.id, self._image.tags)
 
     @property
     def min_disk(self):
@@ -835,15 +814,11 @@ class AzureMachineImage(BaseMachineImage):
         """
         return self._image.storage_profile.os_disk.disk_size_gb
 
-    @property
-    def os_type(self):
-        return self._image.storage_profile.os_disk.os_type.value
-
     def delete(self):
         """
         Delete this image
         """
-        self._provider.azure_client.delete_image(self.resource_name)
+        self._provider.azure_client.delete_image(self.id)
 
     @property
     def state(self):
@@ -857,7 +832,7 @@ class AzureMachineImage(BaseMachineImage):
         """
         try:
             self._image = self._provider.azure_client\
-                .get_image(self.resource_name)
+                .get_image(self.id)
             self._state = self._image.provisioning_state
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -880,6 +855,10 @@ class AzureNetwork(BaseNetwork):
 
     @property
     def id(self):
+        return self._network.name
+
+    @property
+    def resource_id(self):
         return self._network.id
 
     @property
@@ -891,10 +870,6 @@ class AzureNetwork(BaseNetwork):
         """
         return self._network.tags.get('Name', self._network.name)
 
-    @property
-    def resource_name(self):
-        return self._network.name
-
     @name.setter
     # pylint:disable=arguments-differ
     def name(self, value):
@@ -903,7 +878,7 @@ class AzureNetwork(BaseNetwork):
         """
         self._network.tags.update(Name=value)
         self._provider.azure_client.\
-            update_network_tags(self.resource_name, self._network.tags)
+            update_network_tags(self.id, self._network.tags)
 
     @property
     def external(self):
@@ -925,12 +900,12 @@ class AzureNetwork(BaseNetwork):
         """
         try:
             self._network = self._provider.azure_client.\
-                get_network(self.resource_name)
+                get_network(self.id)
             self._state = self._network.provisioning_state
         except (CloudError, ValueError) as cloudError:
             log.exception(cloudError.message)
             # The network no longer exists and cannot be refreshed.
-            # set the status to unknown
+            # set the state to unknown
             self._state = 'unknown'
 
     @property
@@ -943,7 +918,7 @@ class AzureNetwork(BaseNetwork):
         """
         try:
             self._provider.azure_client.\
-                delete_network(self.resource_name)
+                delete_network(self.id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -965,6 +940,10 @@ class AzureFloatingIP(BaseFloatingIP):
 
     @property
     def id(self):
+        return self._ip.name
+
+    @property
+    def resource_id(self):
         return self._ip.id
 
     @property
@@ -984,7 +963,7 @@ class AzureFloatingIP(BaseFloatingIP):
         Delete an existing floating ip.
         """
         try:
-            self._provider.azure_client.delete_floating_ip(self._ip.name)
+            self._provider.azure_client.delete_floating_ip(self.id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -998,7 +977,7 @@ class AzureRegion(BaseRegion):
 
     @property
     def id(self):
-        return self._azure_region.id
+        return self._azure_region.name
 
     @property
     def name(self):
@@ -1012,7 +991,7 @@ class AzureRegion(BaseRegion):
         # As Azure does not have zones feature, mapping the region
         # information in the zones.
         return [AzurePlacementZone(self._provider,
-                                   self._azure_region.id,
+                                   self._azure_region.name,
                                    self._azure_region.name)]
 
 
@@ -1067,6 +1046,10 @@ class AzureSubnet(BaseSubnet):
 
     @property
     def id(self):
+        return self._subnet.name
+
+    @property
+    def resource_id(self):
         return self._subnet.id
 
     @property
@@ -1080,12 +1063,9 @@ class AzureSubnet(BaseSubnet):
 
     @property
     def zone(self):
-        regions = [region
-                   for region in self._provider.
-                   compute.regions.list()
-                   if region.name == self._network.location]
-
-        return regions[0].zones[0]
+        region = self._provider.\
+            compute.regions.get(self._network.location)
+        return region.zones[0]
 
     @property
     def cidr_block(self):
@@ -1093,13 +1073,13 @@ class AzureSubnet(BaseSubnet):
 
     @property
     def network_id(self):
-        return self._network.id
+        return self._url_params.get(NETWORK_NAME)
 
     def delete(self):
         try:
             self._provider.azure_client.\
-                delete_subnet(self._url_params.get(NETWORK_NAME),
-                              self._url_params.get(SUBNET_NAME))
+                delete_subnet(self.network_id,
+                              self.id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -1107,8 +1087,7 @@ class AzureSubnet(BaseSubnet):
 
 
 class AzureInstance(BaseInstance):
-    # ref:
-    # http://docs.azure.amazon.com/AzureEC2/latest/UserGuide/ec2-instance-lifecycle.html
+
     INSTANCE_STATE_MAP = {
         'InProgress': InstanceState.PENDING,
         'Creating': InstanceState.PENDING,
@@ -1130,9 +1109,7 @@ class AzureInstance(BaseInstance):
     def __init__(self, provider, vm_instance):
         super(AzureInstance, self).__init__(provider)
         self._vm = vm_instance
-        self._url_params = azure_helpers.\
-            parse_url(INSTANCE_RESOURCE_ID, vm_instance.id)
-        self.update_state()
+        self._update_state()
         self._get_network_attributes()
         if not self._vm.tags:
             self._vm.tags = {}
@@ -1144,13 +1121,17 @@ class AzureInstance(BaseInstance):
         self._public_ip_ids = []
         self._nic_ids = []
         for nic in self._vm.network_profile.network_interfaces:
-            self._nic_ids.append(nic.id)
             nic_params = azure_helpers.\
                 parse_url(NETWORK_INTERFACE_RESOURCE_ID, nic.id)
-            nic = self._provider.azure_client.\
-                get_nic(nic_params.get(NETWORK_INTERFACE_NAME))
+            nic_name = nic_params.get(NETWORK_INTERFACE_NAME)
+            self._nic_ids.append(nic_name)
+            nic = self._provider.azure_client.get_nic(nic_name)
             if nic.network_security_group:
-                self._security_group_ids.append(nic.network_security_group.id)
+                sg_params = azure_helpers. \
+                    parse_url(SECURITY_GROUP_RESOURCE_ID,
+                              nic.network_security_group.id)
+                self._security_group_ids.\
+                    append(sg_params.get(SECURITY_GROUP_NAME))
             if nic.ip_configurations:
                 for ip_config in nic.ip_configurations:
                     self._private_ips.append(ip_config.private_ip_address)
@@ -1158,10 +1139,10 @@ class AzureInstance(BaseInstance):
                         url_params = azure_helpers.\
                             parse_url(PUBLIC_IP_RESOURCE_ID,
                                       ip_config.public_ip_address.id)
-                        public_ip = self._provider.\
-                            azure_client.\
-                            get_public_ip(url_params.get(PUBLIC_IP_NAME))
-                        self._public_ip_ids.append(public_ip.id)
+                        public_ip_name = url_params.get(PUBLIC_IP_NAME)
+                        public_ip = self._provider.azure_client.\
+                            get_public_ip(public_ip_name)
+                        self._public_ip_ids.append(public_ip_name)
                         self._public_ips.append(public_ip.ip_address)
 
     @property
@@ -1169,11 +1150,11 @@ class AzureInstance(BaseInstance):
         """
         Get the instance identifier.
         """
-        return self._vm.id
+        return self._vm.name
 
     @property
-    def resource_name(self):
-        return self._vm.name
+    def resource_id(self):
+        return self._vm.id
 
     @property
     def name(self):
@@ -1192,7 +1173,7 @@ class AzureInstance(BaseInstance):
         """
         self._vm.tags.update(Name=value)
         self._provider.azure_client.\
-            update_vm_tags(self.resource_name, self._vm.tags)
+            update_vm_tags(self.id, self._vm.tags)
 
     @property
     def public_ips(self):
@@ -1227,24 +1208,18 @@ class AzureInstance(BaseInstance):
         """
         Reboot this instance (using the cloud middleware API).
         """
-        self._provider.azure_client.restart_vm(self.resource_name)
+        self._provider.azure_client.restart_vm(self.id)
 
     def terminate(self):
         """
         Permanently terminate this instance.
         """
-        self._provider.azure_client.deallocate_vm(self.resource_name)
-        self._provider.azure_client.delete_vm(self.resource_name)
+        self._provider.azure_client.deallocate_vm(self.id)
+        self._provider.azure_client.delete_vm(self.id)
         for nic_id in self._nic_ids:
-            nic_id_params = azure_helpers.\
-                parse_url(NETWORK_INTERFACE_RESOURCE_ID, nic_id)
-            self._provider.azure_client.\
-                delete_nic(nic_id_params.get(NETWORK_INTERFACE_NAME))
+            self._provider.azure_client.delete_nic(nic_id)
         for public_ip_id in self._public_ip_ids:
-            public_ip_id_params = azure_helpers.\
-                parse_url(PUBLIC_IP_RESOURCE_ID, public_ip_id)
-            self._provider.azure_client.\
-                delete_public_ip(public_ip_id_params.get(PUBLIC_IP_NAME))
+            self._provider.azure_client.delete_public_ip(public_ip_id)
         for data_disk in self._vm.storage_profile.data_disks:
             if data_disk.managed_disk:
                 disk_params = azure_helpers.\
@@ -1269,7 +1244,13 @@ class AzureInstance(BaseInstance):
         """
         Get the image ID for this insance.
         """
-        return self._vm.storage_profile.image_reference.id
+        image_ref_id = self._vm.storage_profile.image_reference.id
+        if image_ref_id:
+            url_params = azure_helpers.parse_url(IMAGE_RESOURCE_ID,
+                                                 image_ref_id)
+            return url_params.get(IMAGE_NAME)
+        else:
+            return None
 
     @property
     def zone_id(self):
@@ -1310,19 +1291,19 @@ class AzureInstance(BaseInstance):
 
         if not self._state == 'VM generalized':
             if not self._state == 'VM running':
-                self._provider.azure_client.start_vm(self.resource_name)
-                time.sleep(60)
+                self._provider.azure_client.start_vm(self.id)
+                time.sleep(10)
                 self._get_network_attributes()
 
-            if private_key_path:
-                self._deprovision(private_key_path)
-            self._provider.azure_client.deallocate_vm(self.resource_name)
-            self._provider.azure_client.generalize_vm(self.resource_name)
+            # if private_key_path:
+            self._deprovision(private_key_path)
+            self._provider.azure_client.deallocate_vm(self.id)
+            self._provider.azure_client.generalize_vm(self.id)
 
         create_params = {
             'location': self._provider.region_name,
             'source_virtual_machine': {
-                'id': self.id
+                'id': self.resource_id
             },
             'tags': {'Name': name}
         }
@@ -1336,13 +1317,14 @@ class AzureInstance(BaseInstance):
     def _deprovision(self, private_key_path):
         cnopts = pysftp.CnOpts()
         cnopts.hostkeys = None
-
-        with pysftp.Connection(self.public_ips[0],
-                               username=self._provider.default_user_name,
+        if private_key_path:
+            with pysftp.\
+                    Connection(self.public_ips[0],
+                               username=self._provider.vm_default_user_name,
                                cnopts=cnopts,
                                private_key=private_key_path) as sftp:
-            sftp.execute('sudo waagent -deprovision -force')
-            sftp.close()
+                sftp.execute('sudo waagent -deprovision -force')
+                sftp.close()
 
     def add_floating_ip(self, ip_address):
         try:
@@ -1353,19 +1335,12 @@ class AzureInstance(BaseInstance):
                 """
                 Add an elastic IP address to this instance.
                 """
-                nic_params = azure_helpers. \
-                    parse_url(NETWORK_INTERFACE_RESOURCE_ID,
-                              self._vm.network_profile.
-                              network_interfaces[0].id)
-                nic_name = nic_params.get(NETWORK_INTERFACE_NAME)
-                nic = self._provider.azure_client.get_nic(nic_name)
+                nic = self._provider.azure_client.get_nic(self._nic_ids[0])
 
                 nic.ip_configurations[0].public_ip_address = {
                     'id': ip_addresses[0].id
                 }
-                self._provider.azure_client.\
-                    create_nic(nic_name, nic)
-
+                self._provider.azure_client.create_nic(self._nic_ids[0], nic)
                 return True
             return False
         except CloudError as cloudError:
@@ -1377,15 +1352,9 @@ class AzureInstance(BaseInstance):
         Remove a elastic IP address from this instance.
         """
         try:
-            nic_params = azure_helpers. \
-                parse_url(NETWORK_INTERFACE_RESOURCE_ID,
-                          self._vm.network_profile.network_interfaces[0].id)
-            nic_name = nic_params.get(NETWORK_INTERFACE_NAME)
-            nic = self._provider.azure_client.get_nic(nic_name)
-
+            nic = self._provider.azure_client.get_nic(self._nic_ids[0])
             nic.ip_configurations[0].public_ip_address = None
-            self._provider.azure_client. \
-                create_nic(nic_name, nic)
+            self._provider.azure_client.create_nic(self._nic_ids[0], nic)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -1404,36 +1373,26 @@ class AzureInstance(BaseInstance):
         else replacing the existing security group.
         '''
 
-        nic_id = \
-            self._vm.network_profile.network_interfaces[0].id
-        nic_params = azure_helpers.\
-            parse_url(NETWORK_INTERFACE_RESOURCE_ID, nic_id)
-        nic_name = nic_params.get(NETWORK_INTERFACE_NAME)
-        nic = self._provider.azure_client.get_nic(nic_name)
+        nic = self._provider.azure_client.get_nic(self._nic_ids[0])
         if not nic.network_security_group:
             nic.network_security_group = NetworkSecurityGroup()
 
-        sg_id = sg.id if isinstance(sg, AzureSecurityGroup) else sg
-        nic.network_security_group.id = sg_id
+        sg = (self._provicer.security.security_groups.get(sg)
+              if isinstance(sg, str) else sg)
+        nic.network_security_group.id = sg.resource_id
 
-        self._provider.azure_client.\
-            create_nic(nic_name, nic)
+        self._provider.azure_client.create_nic(self._nic_ids[0], nic)
 
     def remove_security_group(self, sg):
-        nic_id = \
-            self._vm.network_profile.network_interfaces[0].id
-        nic_params = azure_helpers. \
-            parse_url(NETWORK_INTERFACE_RESOURCE_ID, nic_id)
-        nic_name = nic_params.get(NETWORK_INTERFACE_NAME)
-        nic = self._provider.azure_client.get_nic(nic_name)
-        sg_id = sg.id if isinstance(sg, AzureSecurityGroup) else sg
+        nic = self._provider.azure_client.get_nic(self._nic_ids[0])
+        sg = (self._provicer.security.security_groups.get(sg)
+              if isinstance(sg, str) else sg)
         if nic.network_security_group and \
-                nic.network_security_group.id == sg_id:
+                nic.network_security_group.id == sg.resource_id:
             nic.network_security_group = None
-            self._provider.azure_client. \
-                create_nic(nic_name, nic)
+            self._provider.azure_client.create_nic(self._nic_ids[0], nic)
 
-    def update_state(self):
+    def _update_state(self):
         if not self._vm.instance_view:
             self.refresh()
         if self._vm.instance_view and len(
@@ -1455,17 +1414,15 @@ class AzureInstance(BaseInstance):
         for its latest state.
         """
         try:
-            self._vm = self._provider.\
-                azure_client.get_vm(self.resource_name)
+            self._vm = self._provider.azure_client.get_vm(self.id)
             if not self._vm.tags:
                 self._vm.tags = {}
-            self.update_state()
+            self._update_state()
             self._get_network_attributes()
-            print(self._state + ' : Vm state')
         except (CloudError, ValueError) as cloudError:
             log.exception(cloudError.message)
             # The volume no longer exists and cannot be refreshed.
-            # set the status to unknown
+            # set the state to unknown
             self._state = 'unknown'
 
 

+ 71 - 122
cloudbridge/cloud/providers/azure/services.py

@@ -6,17 +6,14 @@ from azure.common import AzureException
 from cloudbridge.cloud.base.resources import ClientPagedResultList
 from cloudbridge.cloud.base.services import BaseBlockStoreService, \
     BaseComputeService, BaseImageService, BaseInstanceService, \
-    BaseInstanceTypesService, \
-    BaseNetworkService, \
-    BaseObjectStoreService, BaseRegionService, \
-    BaseSecurityGroupService, \
-    BaseSecurityService, BaseSnapshotService, \
-    BaseSubnetService, BaseVolumeService
+    BaseInstanceTypesService, BaseNetworkService, BaseObjectStoreService,\
+    BaseRegionService, BaseSecurityGroupService, BaseSecurityService, \
+    BaseSnapshotService, BaseSubnetService, BaseVolumeService
 from cloudbridge.cloud.interfaces import InvalidConfigurationException
 
 from cloudbridge.cloud.interfaces.resources import InstanceType, \
-    KeyPair, MachineImage, Network, PlacementZone, SecurityGroup, \
-    Snapshot, Subnet, Volume
+     MachineImage, Network, PlacementZone, SecurityGroup, \
+     Snapshot, Subnet, Volume
 
 from cloudbridge.cloud.providers.azure import helpers as azure_helpers
 
@@ -26,13 +23,7 @@ from .resources import AzureBucket, AzureFloatingIP, \
     AzureInstance, AzureInstanceType, \
     AzureLaunchConfig, AzureMachineImage, \
     AzureNetwork, AzureRegion, AzureSecurityGroup, \
-    AzureSnapshot, AzureSubnet, AzureVolume, \
-    IMAGE_NAME, IMAGE_RESOURCE_ID, INSTANCE_RESOURCE_ID, \
-    LOCATION_NAME, LOCATION_RESOURCE_ID, NETWORK_NAME, \
-    NETWORK_RESOURCE_ID, NETWORK_SECURITY_GROUP_RESOURCE_ID, \
-    SECURITY_GROUP_NAME, SNAPSHOT_NAME, \
-    SNAPSHOT_RESOURCE_ID, SUBNET_NAME, SUBNET_RESOURCE_ID, \
-    VM_NAME, VOLUME_NAME, VOLUME_RESOURCE_ID
+    AzureSnapshot, AzureSubnet, AzureVolume
 
 log = logging.getLogger(__name__)
 
@@ -73,10 +64,7 @@ class AzureSecurityGroupService(BaseSecurityGroupService):
 
     def get(self, sg_id):
         try:
-            params = azure_helpers.parse_url(
-                NETWORK_SECURITY_GROUP_RESOURCE_ID, sg_id)
-            sgs = self.provider.azure_client.get_security_group(
-                params.get(SECURITY_GROUP_NAME))
+            sgs = self.provider.azure_client.get_security_group(sg_id)
             return AzureSecurityGroup(self.provider, sgs)
 
         except CloudError as cloudError:
@@ -114,11 +102,7 @@ class AzureSecurityGroupService(BaseSecurityGroupService):
 
     def delete(self, group_id):
         try:
-            params = azure_helpers.\
-                parse_url(NETWORK_SECURITY_GROUP_RESOURCE_ID,
-                          group_id)
-            self.provider.azure_client.delete_security_group(
-                params.get(SECURITY_GROUP_NAME))
+            self.provider.azure_client.delete_security_group(group_id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -192,9 +176,7 @@ class AzureVolumeService(BaseVolumeService):
 
     def get(self, volume_id):
         try:
-            params = azure_helpers.parse_url(VOLUME_RESOURCE_ID, volume_id)
-            volume = self.provider.azure_client.get_disk(
-                params.get(VOLUME_NAME))
+            volume = self.provider.azure_client.get_disk(volume_id)
             return AzureVolume(self.provider, volume)
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -219,24 +201,19 @@ class AzureVolumeService(BaseVolumeService):
 
     def create(self, name, size, zone=None, snapshot=None, description=None):
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
-        zone_name = None
-        if zone_id:
-            zone_params = azure_helpers.\
-                parse_url(LOCATION_RESOURCE_ID, zone_id)
-            zone_name = zone_params.get(LOCATION_NAME)
-        snapshot_id = snapshot.id if isinstance(
-            snapshot, Snapshot) and snapshot else snapshot
+        snapshot = (self.provider.block_store.snapshots.get(snapshot)
+                    if snapshot and isinstance(snapshot, str) else snapshot)
         disk_name = "{0}-{1}".format(name, uuid.uuid4().hex[:6])
         tags = {'Name': name}
         if description:
             tags.update(Description=description)
-        if snapshot_id:
+        if snapshot:
             params = {
                 'location':
-                    zone_name or self.provider.azure_client.region_name,
+                    zone_id or self.provider.azure_client.region_name,
                 'creation_data': {
                     'create_option': 'copy',
-                    'source_uri': snapshot_id
+                    'source_uri': snapshot.resource_id
                 },
                 'tags': tags
             }
@@ -246,7 +223,7 @@ class AzureVolumeService(BaseVolumeService):
         else:
             params = {
                 'location':
-                    zone_name or self.provider.azure_client.region_name,
+                    zone_id or self.provider.region_name,
                 'disk_size_gb': size,
                 'creation_data': {
                     'create_option': 'empty'
@@ -267,9 +244,7 @@ class AzureSnapshotService(BaseSnapshotService):
 
     def get(self, ss_id):
         try:
-            params = azure_helpers.parse_url(SNAPSHOT_RESOURCE_ID, ss_id)
-            snapshot = self.provider.azure_client. \
-                get_snapshot(params.get(SNAPSHOT_NAME))
+            snapshot = self.provider.azure_client.get_snapshot(ss_id)
             return AzureSnapshot(self.provider, snapshot)
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -296,9 +271,8 @@ class AzureSnapshotService(BaseSnapshotService):
         return ClientPagedResultList(self.provider, snaps, limit, marker)
 
     def create(self, name, volume, description=None):
-        volume_id = volume.id if isinstance(volume, Volume) else volume
-        disk_size = volume.size if isinstance(volume, Volume) else \
-            self.provider.block_store.volumes.get(volume_id).size
+        volume = (self.provider.block_store.volumes.get(volume)
+                  if isinstance(volume, str) else volume)
 
         tags = {'Name': name}
         snapshot_name = "{0}-{1}".format(name, uuid.uuid4().hex[:6])
@@ -310,9 +284,9 @@ class AzureSnapshotService(BaseSnapshotService):
             'location': self.provider.azure_client.region_name,
             'creation_data': {
                 'create_option': 'Copy',
-                'source_uri': volume_id
+                'source_uri': volume.resource_id
             },
-            'disk_size_gb': disk_size,
+            'disk_size_gb': volume.size,
             'tags': tags
         }
 
@@ -356,23 +330,21 @@ class AzureInstanceService(BaseInstanceService):
     def create(self, name, image, instance_type, subnet, zone=None,
                key_pair=None, security_groups=None, user_data=None,
                launch_config=None, **kwargs):
-        image_id = image.id if isinstance(image, MachineImage) else image
 
         if key_pair:
-            if isinstance(key_pair, KeyPair):
-                key_pair_name = key_pair.name
-            else:
-                key_pair_name = key_pair
-                # retrieving key pair as we need to pass the public key
-                key_pair = self.provider.security.\
-                    key_pairs.get(key_pair_name)
+            key_pair = (self.provider.security.key_pairs.get(key_pair)
+                        if isinstance(key_pair, str) else key_pair)
         # else:
         #     raise Exception("Keypair required")
 
+        image = (self.provider.compute.images.get(image)
+                 if isinstance(image, str) else image)
+
         key = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI8EAhG3jKdF/raX3J3UBt9/zAXVn0aaiHd5JcgJNjwR5t6ggonvHlsELjnmT43URzu1GKsDMk6BB8jq8bWBHpuXJ+0203JHqbfmLoScB4JzWgb3dEwFahdTNVI44I31/DgpQ8KN/jA/i6XvGybf/uvuknjMEDwsv0MUiX1tDj4Hpnm2pznjdB3K4CtizUQKz3RHZvb3096vf5Rix/s4a6AVAtH0kWbKCGIbra5ahKew0wn/XV3aJGygW9EFP7DWdSfDe2gsATdNyyZFvWYO7uJU0J4ZBzLP1lrZNuTQzJoYGaPT5iV/PRY9cvikWDH+t7HQ59+duvMl7wmAdl/Xw7'  # noqa
 
         instance_size = instance_type.id if \
             isinstance(instance_type, InstanceType) else instance_type
+
         subnet = (self.provider.network.subnets.get(subnet)
                   if isinstance(subnet, str) else subnet)
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
@@ -380,12 +352,6 @@ class AzureInstanceService(BaseInstanceService):
         subnet_id, zone_id, security_group_ids = \
             self._resolve_launch_options(subnet, zone_id, security_groups)
 
-        zone_params = azure_helpers.parse_url(LOCATION_RESOURCE_ID, zone_id)
-
-        zone_name = None
-        if zone_id:
-            zone_name = zone_params.get(LOCATION_NAME)
-
         if launch_config:
             disks = self._process_block_device_mappings(launch_config,
                                                         name, zone_id)
@@ -403,7 +369,7 @@ class AzureInstanceService(BaseInstanceService):
                 }]
             }
 
-        if security_groups:
+        if security_group_ids and len(security_group_ids) > 0:
             nic_params['network_security_group'] = {
                 'id': security_group_ids[0]
             }
@@ -413,9 +379,9 @@ class AzureInstanceService(BaseInstanceService):
         )
 
         params = {
-            'location': zone_name or self._provider.region_name,
+            'location': zone_id or self._provider.region_name,
             'os_profile': {
-                'admin_username': self.provider.default_user_name,
+                'admin_username': self.provider.vm_default_user_name,
                 'computer_name': name,
                 'linux_configuration': {
                              "disable_password_authentication": True,
@@ -423,8 +389,8 @@ class AzureInstanceService(BaseInstanceService):
                                  "public_keys": [{
                                       "path":
                                       "/home/{}/.ssh/authorized_keys".format(
-                                          self.provider.default_user_name),
-                                      "key_data": key
+                                          self.provider.vm_default_user_name),
+                                      "key_data": key  # key_pair._key_pair.Key
                                      }]
                                    }
                            }
@@ -439,7 +405,7 @@ class AzureInstanceService(BaseInstanceService):
             },
             'storage_profile': {
                 'image_reference': {
-                    'id': image_id
+                    'id': image.resource_id
                 },
                 "os_disk": {
                     "name": name + '_Os_Disk',
@@ -451,7 +417,7 @@ class AzureInstanceService(BaseInstanceService):
         }
 
         if key_pair:
-            params['tags'].update(Key_Pair=key_pair_name)
+            params['tags'].update(Key_Pair=key_pair.name)
 
         instance_name = "{0}-{1}".format(name, uuid.uuid4().hex[:6])
 
@@ -484,12 +450,18 @@ class AzureInstanceService(BaseInstanceService):
         if subnet:
             # subnet's zone takes precedence
             zone_id = subnet.zone.id
-        if isinstance(security_groups, list) and isinstance(
-                security_groups[0], SecurityGroup):
-            security_group_ids = [sg.id for sg in security_groups]
-        else:
-            security_group_ids = security_groups
-        return subnet.id, zone_id, security_group_ids
+        security_group_ids = None
+        if isinstance(security_groups, list):
+            if isinstance(security_groups[0], SecurityGroup):
+                security_group_ids = [sg.resource_id for sg in security_groups]
+            else:
+                groups = []
+                for sg in security_groups:
+                    sg_obj = self.provider.security.security_groups.get(sg)
+                    groups.append(sg_obj)
+                security_group_ids = [sg.resource_id for sg in groups]
+
+        return subnet.resource_id, zone_id, security_group_ids
 
     def _process_block_device_mappings(self, launch_config,
                                        vm_name, zone=None):
@@ -505,16 +477,16 @@ class AzureInstanceService(BaseInstanceService):
         def attach_volume(volume, delete_on_terminate):
             disks.append({
                 'lun': volumes_count,
-                'name': volume.resource_name,
+                'name': volume.id,
                 'create_option': 'attach',
                 'managed_disk': {
-                    'id': volume.id
+                    'id': volume.resource_id
                 }
             })
             delete_on_terminate = delete_on_terminate or False
             volume.tags.update(delete_on_terminate=str(delete_on_terminate))
             self.provider.azure_client.\
-                update_disk_tags(volume.resource_name, volume.tags)
+                update_disk_tags(volume.id, volume.tags)
 
         for device in launch_config.block_devices:
             if device.is_volume:
@@ -574,10 +546,7 @@ class AzureInstanceService(BaseInstanceService):
         if the object does not exist.
         """
         try:
-            params = azure_helpers.\
-                parse_url(INSTANCE_RESOURCE_ID, instance_id)
-            vm = self.provider.azure_client. \
-                get_vm(params.get(VM_NAME))
+            vm = self.provider.azure_client.get_vm(instance_id)
             return AzureInstance(self.provider, vm)
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -604,9 +573,7 @@ class AzureImageService(BaseImageService):
 
     def get(self, image_id):
         try:
-            params = azure_helpers.parse_url(IMAGE_RESOURCE_ID, image_id)
-            image = self.provider.azure_client. \
-                get_image(params.get(IMAGE_NAME))
+            image = self.provider.azure_client.get_image(image_id)
             return AzureMachineImage(self.provider, image)
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -659,9 +626,7 @@ class AzureNetworkService(BaseNetworkService):
 
     def get(self, network_id):
         try:
-            params = azure_helpers.parse_url(NETWORK_RESOURCE_ID, network_id)
-            network = self.provider.azure_client. \
-                get_network(params.get(NETWORK_NAME))
+            network = self.provider.azure_client.get_network(network_id)
             return AzureNetwork(self.provider, network)
 
         except CloudError as cloudError:
@@ -737,9 +702,7 @@ class AzureNetworkService(BaseNetworkService):
                 Delete an existing network.
                 """
         try:
-            params = azure_helpers.parse_url(NETWORK_RESOURCE_ID, network_id)
-            self.provider.azure_client. \
-                delete_network(params.get(NETWORK_NAME))
+            self.provider.azure_client.delete_network(network_id)
             return True
         except CloudError as cloudError:
             log.exception(cloudError.message)
@@ -753,7 +716,7 @@ class AzureRegionService(BaseRegionService):
     def get(self, region_id):
         region = None
         for azureRegion in self.provider.azure_client.list_locations():
-            if azureRegion.id == region_id:
+            if azureRegion.name == region_id:
                 region = AzureRegion(self.provider, azureRegion)
                 break
         return region
@@ -770,13 +733,7 @@ class AzureRegionService(BaseRegionService):
         # of BaseRegion and as such calling get() with the id works
         # but Azure sdk returns both id & name and are set to
         # the BaseRegion properties
-        regions = [region
-                   for region in self.provider.
-                   azure_client.list_locations()
-                   if region.name == self.provider.
-                   azure_client.region_name]
-
-        return AzureRegion(self.provider, regions[0])
+        return self.get(self.provider.region_name)
 
 
 class AzureSubnetService(BaseSubnetService):
@@ -785,40 +742,34 @@ class AzureSubnetService(BaseSubnetService):
         super(AzureSubnetService, self).__init__(provider)
 
     def get(self, subnet_id):
-        try:
-            params = azure_helpers.parse_url(SUBNET_RESOURCE_ID, subnet_id)
-            subnet = self.provider.azure_client. \
-                get_subnet(params.get(NETWORK_NAME), params.get(SUBNET_NAME))
-            return AzureSubnet(self.provider, subnet)
-
-        except CloudError as cloudError:
-            log.exception(cloudError.message)
-            return None
+        subnets = [subnet for subnet in self._list_subnets()
+                   if subnet.id == subnet_id]
+        return subnets[0] if len(subnets) else None
 
     def list(self, network=None, limit=None, marker=None):
+        return ClientPagedResultList(self.provider,
+                                     self._list_subnets(network),
+                                     limit=limit, marker=marker)
+
+    def _list_subnets(self, network=None):
         result_list = []
         if network:
             network_id = network.id \
                 if isinstance(network, Network) else network
-            params = azure_helpers.parse_url(NETWORK_RESOURCE_ID, network_id)
-            result_list = self.provider.azure_client.list_subnets(
-                params.get(NETWORK_NAME)
-            )
+            result_list = self.provider.azure_client.list_subnets(network_id)
         else:
             for net in self.provider.azure_client.list_networks():
                 result_list.extend(self.provider.azure_client.list_subnets(
-                 net.name
+                    net.name
                 ))
         subnets = [AzureSubnet(self.provider, subnet)
                    for subnet in result_list]
-        return ClientPagedResultList(self.provider, subnets,
-                                     limit=limit, marker=marker)
+
+        return subnets
 
     def create(self, network, cidr_block, name=None, **kwargs):
         network_id = network.id \
             if isinstance(network, Network) else network
-        params = azure_helpers.parse_url(NETWORK_RESOURCE_ID, network_id)
-        network_name = params.get(NETWORK_NAME)
 
         if not name:
             subnet_name = AzureSubnet.CB_DEFAULT_SUBNET_NAME
@@ -827,7 +778,7 @@ class AzureSubnetService(BaseSubnetService):
 
         subnet_info = self.provider.azure_client\
             .create_subnet(
-                            network_name,
+                            network_id,
                             subnet_name,
                             {
                                 'address_prefix': cidr_block
@@ -873,13 +824,11 @@ class AzureSubnetService(BaseSubnetService):
 
     def delete(self, subnet):
         try:
-            subnet_id = subnet.id if \
-                isinstance(subnet, Subnet) else subnet
-            params = azure_helpers.\
-                parse_url(SUBNET_RESOURCE_ID, subnet_id)
+            if not isinstance(subnet, Subnet):
+                subnet = self.get(subnet)
             self.provider.azure_client.delete_subnet(
-                params.get(NETWORK_NAME),
-                params.get(SUBNET_NAME)
+                subnet.network_id,
+                subnet.id
             )
             return True
         except CloudError as cloudError:

+ 5 - 14
integration_test/test_integration_azure_security_group.py

@@ -25,17 +25,13 @@ class AzureIntegrationSecurityServiceTestCase(ProviderTestBase):
         print("Length After create - " + str(len(listAfterCreate)))
         self.assertEqual(len(listAfterCreate), len(listBeforeCreate) + 1)
 
-        get = self.provider.security.security_groups.get(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure/providers'\
-            '/Microsoft.Network/networkSecurityGroups/" + sg_name)
+        get = self.provider.security.security_groups.get(sg_name)
         print("Get SG - " + str(get))
         print(str(get.rules))
         self.assertEqual(get.name, sg_name)
 
-        get_notfound = self.provider.security.security_groups.get(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96"
-            "/resourceGroups/cloudbridge-azure/providers/Microsoft.Network"
-            "/networkSecurityGroups/SecgrupDontFindMe")
+        get_notfound = self.provider.security.\
+            security_groups.get("SecgrupDontFindMe")
         self.assertEqual(get_notfound, None)
 
         find_exists_list = self.provider.security.security_groups.find(sg_name)
@@ -78,18 +74,13 @@ class AzureIntegrationSecurityServiceTestCase(ProviderTestBase):
         self.assertIsNotNone(sg_json)
 
         listBeforeDeleteFound = self.provider.security.security_groups.list()
-        sg_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96" \
-                "/resourceGroups/cloudbridge-azure/providers" \
-                "/Microsoft.Network/networkSecurityGroups/" + sg_name
-        self.provider.security.security_groups.delete(sg_id)
+        self.provider.security.security_groups.delete(sg_name)
         listAfterDeleteFound = self.provider.security.security_groups.list()
         print("Length before delete - " + str(len(listBeforeDeleteFound)))
         print("Length after delete - " + str(len(listAfterDeleteFound)))
         self.assertEqual(
             len(listAfterDeleteFound), len(listBeforeDeleteFound) - 1)
-        sg_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96" \
-                "/resourceGroups/cloudbridge-azure/providers" \
-                "/Microsoft.Network/networkSecurityGroups/sg5"
+        sg_id = "sg5"
         self.provider.security.security_groups.delete(sg_id)
         listAfterDeleteNotFound = self.provider.security.security_groups.list()
         self.assertEqual(

+ 1 - 3
integration_test/test_integration_azure_volume_service.py

@@ -32,9 +32,7 @@ class AzureIntegrationVolumeServiceTestCase(helpers.ProviderTestBase):
         print("Find Volume  - " + str(volume))
         self.assertEqual(
             len(volume_find), 1)
-        instance_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
-                      '/resourceGroups/CloudBridge-Azure/providers'\
-                      '/Microsoft.Compute/virtualMachines/ubuntu-intro1'
+        instance_id = 'ubuntu-intro1'
         volume.attach(instance_id)
         # TODO: Add logic to verify that disk is attached to instance
 

+ 3 - 3
test/test_azure_resource_group.py

@@ -4,16 +4,16 @@ from azure_test.helpers import ProviderTestBase
 class AzureResourceGroupTestCase(ProviderTestBase):
     def test_resource_group_create(self):
         resource_group_params = {'location': self.provider.region_name}
-        rg = self.provider._azure_client. \
+        rg = self.provider.azure_client. \
             create_resource_group(self.provider.resource_group,
                                   resource_group_params)
         print("Create Resource - " + str(rg))
         self.assertTrue(
-            rg.name == "cloudbridge-azure",
+            rg.name == "cloudbridge",
             "Resource Group should be Cloudbridge")
 
     def test_resource_group_get(self):
-        rg = self.provider._azure_client.get_resource_group('MyGroup')
+        rg = self.provider.azure_client.get_resource_group('MyGroup')
         print("Get Resource - " + str(rg))
         self.assertTrue(
             rg.name == "testResourceGroup",

+ 5 - 17
test/test_azure_security_service.py

@@ -38,11 +38,7 @@ class AzureSecurityServiceTestCase(ProviderTestBase):
         sg.description = name
         sg.name = 'NewName'
         self.assertEqual(name, sg.description)
-        self.provider.security.security_groups.delete(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-            '/resourceGroups/CloudBridge-Azure'\
-            '/providers/Microsoft.Network'\
-            '/networkSecurityGroups/testCreateSecGroup13")
+        self.provider.security.security_groups.delete('testCreateSecGroup13')
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_security_group_find_exists(self):
@@ -67,9 +63,7 @@ class AzureSecurityServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_security_group_get_found(self):
-        sgl = self.provider.security.security_groups.get(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
-            '/providers/Microsoft.Network/networkSecurityGroups/sg3")
+        sgl = self.provider.security.security_groups.get('sg3')
         print("Get ( " + "Name - " + sgl.name + "  Id - " + sgl.id + " )")
         self.assertTrue(
             sgl.name == "sg3",
@@ -77,9 +71,7 @@ class AzureSecurityServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_security_group_get_not_found(self):
-        sgl = self.provider.security.security_groups.get(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
-            '/providers/Microsoft.Network/networkSecurityGroups/sg4")
+        sgl = self.provider.security.security_groups.get('sg4')
         print(str(sgl))
         self.assertTrue(
             sgl is None,
@@ -87,17 +79,13 @@ class AzureSecurityServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_security_group_delete_IdExists(self):
-        deleted = self.provider.security.security_groups.delete(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
-            '/providers/Microsoft.Network/networkSecurityGroups/sg2")
+        deleted = self.provider.security.security_groups.delete('sg2')
         print("Delete - ")
         self.assertEqual(deleted, True)
 
     @helpers.skipIfNoService(['security.security_groups'])
     def test_azure_security_group_delete_IdNotExist(self):
-        deleted = self.provider.security.security_groups.delete(
-            "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/resourceGroups/CloudBridge-Azure'\
-            '/providers/Microsoft.Network/networkSecurityGroups/sg5")
+        deleted = self.provider.security.security_groups.delete('sg5')
         self.assertEqual(deleted, False)
 
     @helpers.skipIfNoService(['security.security_groups'])

+ 3 - 9
test/test_azure_volume_service.py

@@ -40,9 +40,7 @@ class AzureVolumeServiceTestCase(ProviderTestBase):
         self.assertTrue(volume.name == "MyTestVolume",
                         "Volume name should be MyVolume")
         volume.delete()
-        volume1_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96" \
-                     "/resourceGroups/cloudbridge-azure/providers" \
-                     "/Microsoft.Compute/disks/MyVolume"
+        volume1_id = "MyVolume"
         delete_volume = volume.delete()
         self.assertEqual(delete_volume, False)
 
@@ -59,9 +57,7 @@ class AzureVolumeServiceTestCase(ProviderTestBase):
             "attach", 1, description='My volume')
         self.assertTrue(
             volume.name == "attach", "Volume name should be MyVolume")
-        instance_id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96'\
-                      '/resourceGroups/CLOUDBRIDGE-AZURE'\
-                      '/providers/Microsoft.Compute/virtualMachines/VM1'
+        instance_id = 'VM1'
         attached = volume.attach(instance_id)
 
         self.assertEqual(attached, True)
@@ -92,9 +88,7 @@ class AzureVolumeServiceTestCase(ProviderTestBase):
 
     @helpers.skipIfNoService(['block_store.volumes'])
     def test_azure_volume_get_ifNotExist(self):
-        volume_id = "/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96" \
-                    "/resourceGroups/cloudbridge-azure/providers" \
-                    "/Microsoft.Compute/disks/MyVolume123"
+        volume_id = "MyVolume123"
         volume = self.provider.block_store.volumes.get(volume_id)
         self.assertTrue(
             volume is None, "Volume should not be available")