Parcourir la source

Merge branch 'master' into azure_dev_v4

jatin il y a 8 ans
Parent
commit
aa0dbb42a2

+ 2 - 10
.travis.yml

@@ -9,17 +9,9 @@ matrix:
     - os: osx
   include:
     - python: 2.7
-      env: TOX_ENV=py27-aws
-    - python: 2.7
-      env: TOX_ENV=py27-openstack
-    - python: 3.6
-      env: TOX_ENV=py36-aws
+      env: TOX_ENV=py27-azure
     - python: 3.6
-      env: TOX_ENV=py36-openstack
-    - python: pypy-5.3.1
-      env: TOX_ENV=pypy-aws
-    - python: pypy-5.3.1
-      env: TOX_ENV=pypy-openstack
+      env: TOX_ENV=py36-azure
 before_install:
     - |
       case "$TRAVIS_EVENT_TYPE" in

+ 36 - 52
cloudbridge/cloud/providers/azure/resources.py

@@ -19,7 +19,6 @@ from cloudbridge.cloud.base.resources import BaseAttachmentInfo, \
     BaseSecurityGroupRule, BaseSnapshot, BaseSubnet, \
     BaseVolume, ClientPagedResultList
 from cloudbridge.cloud.interfaces import InstanceState, VolumeState
-from cloudbridge.cloud.interfaces.exceptions import InvalidNameException
 from cloudbridge.cloud.interfaces.resources import Instance, \
     MachineImageState, NetworkState, RouterState, \
     SnapshotState, SubnetState
@@ -95,13 +94,11 @@ class AzureSecurityGroup(BaseSecurityGroup):
 
     @name.setter
     def name(self, value):
-        if self.is_valid_resource_name(value):
-            self._security_group.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_security_group_tags(self.id,
-                                           self._security_group.tags)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._security_group.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_security_group_tags(self.id,
+                                       self._security_group.tags)
 
     @property
     def description(self):
@@ -520,13 +517,11 @@ class AzureVolume(BaseVolume):
         Set the volume name.
         """
         # self._volume.name = value
-        if self.is_valid_resource_name(value):
-            self._volume.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_disk_tags(self.id,
-                                 self._volume.tags)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._volume.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_disk_tags(self.id,
+                             self._volume.tags)
 
     @property
     def description(self):
@@ -710,14 +705,11 @@ class AzureSnapshot(BaseSnapshot):
         """
         Set the snapshot name.
         """
-        # self._snapshot.name = value
-        if self.is_valid_resource_name(value):
-            self._snapshot.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_snapshot_tags(self.id,
-                                     self._snapshot.tags)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._snapshot.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_snapshot_tags(self.id,
+                                 self._snapshot.tags)
 
     @property
     def description(self):
@@ -830,12 +822,10 @@ class AzureMachineImage(BaseMachineImage):
         """
         Set the image name.
         """
-        if self.is_valid_resource_name(value):
-            self._image.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_image_tags(self.id, self._image.tags)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._image.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_image_tags(self.id, self._image.tags)
 
     @property
     def description(self):
@@ -931,12 +921,10 @@ class AzureNetwork(BaseNetwork):
         """
         Set the network name.
         """
-        if self.is_valid_resource_name(value):
-            self._network.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_network_tags(self.id, self._network)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._network.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_network_tags(self.id, self._network)
 
     @property
     def external(self):
@@ -1279,12 +1267,10 @@ class AzureInstance(BaseInstance):
         """
         Set the instance name.
         """
-        if self.is_valid_resource_name(value):
-            self._vm.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_vm_tags(self.id, self._vm)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._vm.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_vm_tags(self.id, self._vm)
 
     @property
     def public_ips(self):
@@ -1410,6 +1396,8 @@ class AzureInstance(BaseInstance):
         the private key file path
         """
 
+        self.assert_valid_resource_name(name)
+
         if not self._state == 'VM generalized':
             if not self._state == 'VM running':
                 self._provider.azure_client.start_vm(self.id)
@@ -1713,13 +1701,11 @@ class AzureRouter(BaseRouter):
         """
         Set the router name.
         """
-        if self.is_valid_resource_name(value):
-            self._route_table.tags.update(Name=value)
-            self._provider.azure_client. \
-                update_route_table_tags(self._route_table.name,
-                                        self._route_table)
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._route_table.tags.update(Name=value)
+        self._provider.azure_client. \
+            update_route_table_tags(self._route_table.name,
+                                    self._route_table)
 
     def refresh(self):
         self._route_table = self._provider.azure_client. \
@@ -1794,10 +1780,8 @@ class AzureInternetGateway(BaseInternetGateway):
         """
         Set the router name.
         """
-        if self.is_valid_resource_name(value):
-            self._name = value
-        else:
-            raise InvalidNameException(value)
+        self.assert_valid_resource_name(value)
+        self._name = value
 
     def refresh(self):
         pass

+ 16 - 15
cloudbridge/cloud/providers/azure/services.py

@@ -108,6 +108,7 @@ class AzureSecurityGroupService(BaseSecurityGroupService):
         :rtype: ``object`` of :class:`.SecurityGroup`
         :return:  A SecurityGroup instance or ``None`` if one was not created.
         """
+        AzureSecurityGroup.assert_valid_resource_name(name)
         parameters = {"location": self.provider.region_name,
                       'tags': {'Name': name}}
 
@@ -184,6 +185,7 @@ class AzureKeyPairService(BaseKeyPairService):
                                      limit, marker)
 
     def create(self, name):
+        AzureKeyPair.assert_valid_resource_name(name)
 
         key_pair = self.get(name)
 
@@ -249,6 +251,7 @@ class AzureObjectStoreService(BaseObjectStoreService):
         """
         Create a new bucket.
         """
+        AzureBucket.assert_valid_resource_name(name)
         bucket = self.provider.azure_client.create_container(name.lower())
         return AzureBucket(self.provider, bucket)
 
@@ -310,6 +313,7 @@ class AzureVolumeService(BaseVolumeService):
         """
         Creates a new volume.
         """
+        AzureVolume.assert_valid_resource_name(name)
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         snapshot = (self.provider.block_store.snapshots.get(snapshot)
                     if snapshot and isinstance(snapshot, str) else snapshot)
@@ -388,6 +392,7 @@ class AzureSnapshotService(BaseSnapshotService):
         """
         Creates a new snapshot of a given volume.
         """
+        AzureSnapshot.assert_valid_resource_name(name)
         volume = (self.provider.block_store.volumes.get(volume)
                   if isinstance(volume, str) else volume)
 
@@ -450,6 +455,9 @@ class AzureInstanceService(BaseInstanceService):
 
         instance_name = name.replace("_", "-") if name \
             else "{0} - {1}".format("cb", uuid.uuid4())
+
+        AzureInstance.assert_valid_resource_name(instance_name)
+
         # Key_pair is mandatory in azure and it should not be None.
         if key_pair:
             key_pair = (self.provider.security.key_pairs.get(key_pair)
@@ -465,9 +473,9 @@ class AzureInstanceService(BaseInstanceService):
             isinstance(instance_type, InstanceType) else instance_type
 
         if not subnet:
-            subnet = self.provider.network.subnets.get_or_create_default()
+            subnet = self.provider.networking.subnets.get_or_create_default()
         else:
-            subnet = (self.provider.network.subnets.get(subnet)
+            subnet = (self.provider.networking.subnets.get(subnet)
                       if isinstance(subnet, str) else subnet)
 
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
@@ -812,7 +820,6 @@ class AzureNetworkingService(BaseNetworkingService):
 class AzureNetworkService(BaseNetworkService):
     def __init__(self, provider):
         super(AzureNetworkService, self).__init__(provider)
-        self._subnet_svc = AzureSubnetService(self.provider)
 
     def get(self, network_id):
         try:
@@ -848,6 +855,8 @@ class AzureNetworkService(BaseNetworkService):
         if name:
             network_name = "{0}-{1}".format(name, uuid.uuid4().hex[:6])
 
+        AzureNetwork.assert_valid_resource_name(network_name)
+
         params = {
             'location': self.provider.azure_client.region_name,
             'address_space': {
@@ -872,10 +881,6 @@ class AzureNetworkService(BaseNetworkService):
             create_floating_ip(public_ip_address_name, public_ip_parameters)
         return AzureFloatingIP(self.provider, floating_ip)
 
-    @property
-    def subnets(self):
-        return self._subnet_svc
-
     @property
     def floating_ips(self, network_id=None):
         """
@@ -886,14 +891,6 @@ class AzureNetworkService(BaseNetworkService):
                         list_floating_ips()]
         return ClientPagedResultList(self.provider, floating_ips)
 
-    def routers(self):
-        return ClientPagedResultList(self.provider, [])
-
-    def create_router(self, name=None):
-        ar = AzureRouter(self.provider, None)
-        ar.name = name
-        return ar
-
     def delete(self, network_id):
         """
                 Delete an existing network.
@@ -986,6 +983,7 @@ class AzureSubnetService(BaseSubnetService):
         """
         Create subnet
         """
+        AzureSubnet.assert_valid_resource_name(name)
         network_id = network.id \
             if isinstance(network, Network) else network
 
@@ -1093,6 +1091,7 @@ class AzureRouterService(BaseRouterService):
                                      limit=limit, marker=marker)
 
     def create(self, name, network):
+        AzureRouter.assert_valid_resource_name(name)
         parameters = {"location": self.provider.region_name,
                       'tags': {'Name': name}}
         route = self.provider.azure_client. \
@@ -1105,6 +1104,8 @@ class AzureGatewayService(BaseGatewayService):
         super(AzureGatewayService, self).__init__(provider)
 
     def get_or_create_inet_gateway(self, name):
+        AzureInternetGateway.assert_valid_resource_name(name)
+
         gateway = AzureInternetGateway(self.provider, None)
         gateway.name = name
         return gateway

+ 1 - 2
test/helpers/__init__.py

@@ -118,8 +118,7 @@ def delete_test_network(network):
     """
     with cleanup_action(lambda: network.delete()):
         for sn in network.subnets:
-            with cleanup_action(lambda: sn.delete()):
-                pass
+            sn.delete()
 
 
 def create_test_instance(

+ 1 - 1
test/test_network_service.py

@@ -76,7 +76,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
 
         def create_subnet(name):
             return self.provider.networking.subnets.create(
-                network=net, cidr_block="10.0.0.1/24", name=name)
+                network=net, cidr_block="10.0.0.0/24", name=name)
 
         def cleanup_subnet(subnet):
             self.provider.networking.subnets.delete(subnet=subnet)