Przeglądaj źródła

Implemented flake 8 coding styles

vikramdoda 9 lat temu
rodzic
commit
6e097a39ee

+ 2 - 2
cloudbridge/cloud/providers/azure/__init__.py

@@ -2,5 +2,5 @@
 Exports from this provider
 """
 
-from .provider import AzureCloudProvider
-from .provider import MockAzureCloudProvider
+from .provider import AzureCloudProvider  # noqa
+from .provider import MockAzureCloudProvider  # noqa

+ 27 - 9
cloudbridge/cloud/providers/azure/azure_client.py

@@ -127,7 +127,8 @@ class AzureClient(object):
             get(self.resource_group_name, name)
 
     def delete_security_group(self, name):
-        delete_async = self.network_management_client.network_security_groups. \
+        delete_async = self.network_management_client \
+            .network_security_groups. \
             delete(self.resource_group_name, name)
         delete_async.wait()
 
@@ -171,21 +172,27 @@ class AzureClient(object):
         return out_stream
 
     def create_empty_disk(self, disk_name, size,
-                          region=None, snapshot_id=None):
+                          region=None, snapshot_id=None,
+                          description=None):
+
         if snapshot_id:
             return self.create_snapshot_disk(disk_name,
                                              snapshot_id, region=region)
 
+        params = {
+            'location': region or self.region_name,
+            'disk_size_gb': size,
+            'creation_data': {
+                'create_option': 'empty'
+            }
+        }
+        if description:
+            params['tags'] = {'Description': description}
+
         async_creation = self.compute_client.disks.create_or_update(
             self.resource_group_name,
             disk_name,
-            {
-                'location': region or self.region_name,
-                'disk_size_gb': size,
-                'creation_data': {
-                    'create_option': 'empty'
-                }
-            },
+            params,
             raw=True
         )
         return async_creation
@@ -206,6 +213,17 @@ class AzureClient(object):
 
         return disk_response
 
+    def update_disk_tags(self, disk_name, tags, region=None):
+        disk_result = self.compute_client.disks.update(
+            self.resource_group_name,
+            disk_name,
+            {
+                'tags': tags
+            },
+            raw=True
+        )
+        return disk_result
+
     def get_disk(self, disk_name):
         return self.compute_client.disks. \
             get(self.resource_group_name, disk_name)

+ 13 - 5
cloudbridge/cloud/providers/azure/mock_azure_client.py

@@ -1,13 +1,15 @@
 from io import BytesIO
 
 from azure.common import AzureException
-from azure.mgmt.compute.models import Disk, CreationData, DiskCreateOption
+from azure.mgmt.compute.models import CreationData, Disk, DiskCreateOption
 from azure.mgmt.network.models import NetworkSecurityGroup
 from azure.mgmt.network.models import SecurityRule
 from azure.mgmt.resource.resources.models import ResourceGroup
 from azure.mgmt.storage.models import StorageAccount
-from azure.storage.blob.models import Container, Blob
+from azure.storage.blob.models import Blob, Container
+
 from msrestazure.azure_exceptions import CloudError
+
 from requests import Response
 
 
@@ -84,10 +86,11 @@ class MockAzureClient:
     volume1.time_created = '20-04-2017'
     volume1.owner_id = 'ubuntu-intro1'
     volume1.provisioning_state = 'InProgress'
+    volume1.tags = {'Name': 'Volume1'}
 
     volume2 = Disk(location='eastus', creation_data=None)
-    volume2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
-                 'resourceGroups/CLOUDBRIDGE-AZURE' \
+    volume2.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96' \
+                 '/resourceGroups/CLOUDBRIDGE-AZURE' \
                  '/providers/Microsoft.Compute/disks/Volume2'
     volume2.name = "Volume2"
     volume2.disk_size_gb = 1
@@ -95,6 +98,7 @@ class MockAzureClient:
     volume2.time_created = '20-04-2017'
     volume2.owner_id = None
     volume2.provisioning_state = 'Succeeded'
+    volume2.tags = {'Name': 'Volume2'}
 
     volumes = [volume1, volume2]
 
@@ -217,7 +221,7 @@ class MockAzureClient:
         return 'https://cloudbridgeazure.blob.core.windows.net/vhds/block1'
 
     def create_empty_disk(self, disk_name, size,
-                          region=None, snapshot_id=None):
+                          region=None, snapshot_id=None, description=None):
         volume = Disk(location='eastus', creation_data=None)
         volume.id = '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
                     'resourceGroups/cloudbridge-azure' \
@@ -232,6 +236,7 @@ class MockAzureClient:
             '/subscriptions/7904d702-e01c-4826-8519-f5a25c866a96/' \
             'resourceGroups/CloudBridge-Azure' \
             's/providers/Microsoft.Compute/virtualMachines/ubuntu-intro1'
+        volume.tags = {'Name': disk_name}
         self.volumes.append(volume)
         return volume
 
@@ -263,3 +268,6 @@ class MockAzureClient:
         storage_account = StorageAccount()
         storage_account.name = storage_account_name
         return storage_account
+
+    def update_disk_tags(self, disk_name, tags):
+        pass

+ 5 - 5
cloudbridge/cloud/providers/azure/provider.py

@@ -1,16 +1,16 @@
 import logging
 import os
 
-from msrestazure.azure_exceptions import CloudError
-
 from cloudbridge.cloud.base import BaseCloudProvider
 from cloudbridge.cloud.interfaces import TestMockHelperMixin
-
 from cloudbridge.cloud.providers.azure.azure_client import AzureClient
 from cloudbridge.cloud.providers.azure.mock_azure_client import MockAzureClient
 from cloudbridge.cloud.providers.azure.services \
-    import AzureSecurityService, AzureObjectStoreService, \
-    AzureBlockStoreService
+    import AzureBlockStoreService, AzureObjectStoreService, \
+    AzureSecurityService
+
+
+from msrestazure.azure_exceptions import CloudError
 
 log = logging.getLogger(__name__)
 

+ 27 - 14
cloudbridge/cloud/providers/azure/resources.py

@@ -4,16 +4,18 @@ DataTypes used by this provider
 import inspect
 import json
 
-from cloudbridge.cloud.providers.azure import helpers as azure_helpers
-
 from azure.common import AzureException
-from msrestazure.azure_exceptions import CloudError
 
-from cloudbridge.cloud.base.resources import BaseBucket, BaseSecurityGroup, \
-    BaseSecurityGroupRule, BaseBucketObject, \
-    ClientPagedResultList, BaseVolume, BaseAttachmentInfo
+
+from cloudbridge.cloud.base.resources import BaseAttachmentInfo,\
+    BaseBucket, BaseBucketObject, BaseSecurityGroup, \
+    BaseSecurityGroupRule, BaseVolume, \
+    ClientPagedResultList
 from cloudbridge.cloud.interfaces import VolumeState
 from cloudbridge.cloud.interfaces.resources import Instance
+from cloudbridge.cloud.providers.azure import helpers as azure_helpers
+
+from msrestazure.azure_exceptions import CloudError
 
 NETWORK_RESOURCE_ID = '/subscriptions/{subscriptionId}/resourceGroups/' \
                       '{resourceGroupName}/providers/Microsoft.Network/' \
@@ -166,9 +168,9 @@ class AzureSecurityGroup(BaseSecurityGroup):
                  cidr_ip=None, src_group=None):
         for rule in self.rules:
             if (rule.ip_protocol == ip_protocol and
-                        rule.from_port == str(from_port) and
-                        rule.to_port == str(to_port) and
-                        rule.cidr_ip == cidr_ip):
+                rule.from_port == str(from_port) and
+                rule.to_port == str(to_port) and
+                    rule.cidr_ip == cidr_ip):
                 return rule
         return None
 
@@ -393,6 +395,7 @@ class AzureBucket(BaseBucket):
 class AzureVolume(BaseVolume):
     VOLUME_STATE_MAP = {
         'InProgress': VolumeState.CREATING,
+        'Creating': VolumeState.CREATING,
         'Unattached': VolumeState.AVAILABLE,
         'Attached': VolumeState.IN_USE,
         'Deleting': VolumeState.CONFIGURING,
@@ -404,9 +407,13 @@ 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()
+        if not self._volume.tags:
+            self._volume.tags = {}
 
     def update_status(self):
         if not self._volume.provisioning_state == 'Succeeded':
@@ -418,7 +425,7 @@ class AzureVolume(BaseVolume):
 
     @property
     def id(self):
-        return self._volume.id.lower()
+        return self._volume.id
 
     @property
     def name(self):
@@ -439,11 +446,14 @@ class AzureVolume(BaseVolume):
 
     @property
     def description(self):
-        return self._description
+        return self._volume.tags.get('Description', None)
 
     @description.setter
     def description(self, value):
-        self._description = value
+        self._volume.tags.update(Description=value)
+        self._provider.azure_client.\
+            update_disk_tags(self._url_params.get(VOLUME_NAME),
+                             self._volume.tags)
 
     @property
     def size(self):
@@ -510,7 +520,8 @@ class AzureVolume(BaseVolume):
         Delete this volume.
         """
         try:
-            self._provider.azure_client.delete_disk(self.name)
+            self._provider.azure_client.\
+                delete_disk(self._url_params.get(VOLUME_NAME))
             return True
         except CloudError:
             return False
@@ -526,7 +537,9 @@ class AzureVolume(BaseVolume):
         for its latest state.
         """
         try:
-            self._volume = self._provider.azure_client.get_disk(self.name)
+            print('Volume status ' + self._status)
+            self._volume = self._provider.azure_client.\
+                get_disk(self._url_params.get(VOLUME_NAME))
             self.update_status()
         except (CloudError, ValueError):
             # The volume no longer exists and cannot be refreshed.

+ 12 - 12
cloudbridge/cloud/providers/azure/services.py

@@ -1,21 +1,21 @@
 import logging
 
 from azure.common import AzureException
-from msrestazure.azure_exceptions import CloudError
-
-from cloudbridge.cloud.interfaces.resources import PlacementZone, Snapshot
-
-from .resources import VOLUME_RESOURCE_ID, VOLUME_NAME, \
-    NETWORK_SECURITY_GROUP_RESOURCE_ID, SECURITY_GROUP_NAME, AzureVolume
 
 from cloudbridge.cloud.base.resources import ClientPagedResultList
-from cloudbridge.cloud.base.services import BaseObjectStoreService, \
-    BaseSecurityGroupService, BaseSecurityService, \
-    BaseVolumeService, BaseBlockStoreService, BaseSnapshotService
-
+from cloudbridge.cloud.base.services import BaseBlockStoreService, \
+    BaseObjectStoreService, BaseSecurityGroupService, \
+    BaseSecurityService, BaseSnapshotService, BaseVolumeService
+from cloudbridge.cloud.interfaces.resources import PlacementZone,\
+    Snapshot
 from cloudbridge.cloud.providers.azure import helpers as azure_helpers
 
-from .resources import AzureBucket, AzureSecurityGroup
+from msrestazure.azure_exceptions import CloudError
+
+from .resources import AzureBucket, AzureSecurityGroup,\
+    AzureVolume,\
+    NETWORK_SECURITY_GROUP_RESOURCE_ID, SECURITY_GROUP_NAME, \
+    VOLUME_NAME, VOLUME_RESOURCE_ID
 
 log = logging.getLogger(__name__)
 
@@ -140,7 +140,7 @@ class AzureObjectStoreService(BaseObjectStoreService):
         """
         Create a new bucket.
         """
-        bucket = self.provider.azure_client.create_container(name)
+        bucket = self.provider.azure_client.create_container(name.lower())
         return AzureBucket(self.provider, bucket)
 
 

+ 2 - 1
integration_test/test_integration_azure_security_group.py

@@ -1,8 +1,9 @@
 import uuid
 
-from azure_integration_test.helpers import ProviderTestBase
 import azure_integration_test.helpers as helpers
 
+from azure_integration_test.helpers import ProviderTestBase
+
 
 class AzureIntegrationSecurityServiceTestCase(ProviderTestBase):
     @helpers.skipIfNoService(['security.security_groups'])

+ 1 - 1
test/helpers/__init__.py

@@ -198,7 +198,7 @@ class ProviderTestBase(unittest.TestCase):
             return 1
 
     def create_provider_instance(self):
-        provider_name = os.environ.get("CB_TEST_PROVIDER", "aws")
+        provider_name = os.environ.get("CB_TEST_PROVIDER", "azure")
         use_mock_drivers = parse_bool(
             os.environ.get("CB_USE_MOCK_PROVIDERS", "True"))
         factory = CloudProviderFactory()

+ 1 - 0
test/test_azure_helpers.py

@@ -1,4 +1,5 @@
 from azure_test.helpers import ProviderTestBase
+
 from cloudbridge.cloud.providers.azure import helpers as azure_helpers