2
0
Эх сурвалжийг харах

Renaming, test dashes, and Azure dashboard doc

almahmoud 7 жил өмнө
parent
commit
7a8f680207

+ 3 - 3
cloudbridge/cloud/base/resources.py

@@ -202,7 +202,7 @@ class BaseCloudResource(CloudResource):
                 else False)
                 else False)
 
 
     @staticmethod
     @staticmethod
-    def assert_valid_resource_label(label):
+    def assert_valid_resource_name(label):
         if not BaseCloudResource.is_valid_resource_label(label):
         if not BaseCloudResource.is_valid_resource_label(label):
             log.debug("InvalidLabelException raised on %s", label)
             log.debug("InvalidLabelException raised on %s", label)
             raise InvalidLabelException(
             raise InvalidLabelException(
@@ -846,7 +846,7 @@ class BaseBucketObject(BaseCloudResource, BucketObject):
                 else False)
                 else False)
 
 
     @staticmethod
     @staticmethod
-    def assert_valid_resource_label(label):
+    def assert_valid_resource_name(label):
         if not BaseBucketObject.is_valid_resource_label(label):
         if not BaseBucketObject.is_valid_resource_label(label):
             log.debug("InvalidLabelException raised on %s", label,
             log.debug("InvalidLabelException raised on %s", label,
                       exc_info=True)
                       exc_info=True)
@@ -889,7 +889,7 @@ class BaseBucket(BaseCloudResource, Bucket):
         return True if BaseBucket.CB_LABEL_PATTERN.match(label) else False
         return True if BaseBucket.CB_LABEL_PATTERN.match(label) else False
 
 
     @staticmethod
     @staticmethod
-    def assert_valid_resource_label(label):
+    def assert_valid_resource_name(label):
         if not BaseBucket.is_valid_resource_label(label):
         if not BaseBucket.is_valid_resource_label(label):
             log.debug("Invalid bucket name %s", label, exc_info=True)
             log.debug("Invalid bucket name %s", label, exc_info=True)
             raise InvalidLabelException(
             raise InvalidLabelException(

+ 10 - 10
cloudbridge/cloud/providers/aws/resources.py

@@ -236,7 +236,7 @@ class AWSInstance(BaseInstance):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._ec2_instance.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._ec2_instance.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     @property
     @property
@@ -295,7 +295,7 @@ class AWSInstance(BaseInstance):
         return self._ec2_instance.key_name
         return self._ec2_instance.key_name
 
 
     def create_image(self, label=None):
     def create_image(self, label=None):
-        self.assert_valid_resource_label(label)
+        self.assert_valid_resource_name(label)
         name = self._generate_name_from_label(label)
         name = self._generate_name_from_label(label)
 
 
         image = AWSMachineImage(self._provider,
         image = AWSMachineImage(self._provider,
@@ -406,7 +406,7 @@ class AWSVolume(BaseVolume):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._volume.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._volume.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     @property
     @property
@@ -523,7 +523,7 @@ class AWSSnapshot(BaseSnapshot):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._snapshot.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._snapshot.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     @property
     @property
@@ -607,7 +607,7 @@ class AWSVMFirewall(BaseVMFirewall):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._vm_firewall.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._vm_firewall.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     @property
     @property
@@ -952,7 +952,7 @@ class AWSNetwork(BaseNetwork):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._vpc.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._vpc.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     @property
     @property
@@ -1028,7 +1028,7 @@ class AWSSubnet(BaseSubnet):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._subnet.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._subnet.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     @property
     @property
@@ -1141,7 +1141,7 @@ class AWSRouter(BaseRouter):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._route_table.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._route_table.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     def refresh(self):
     def refresh(self):
@@ -1203,7 +1203,7 @@ class AWSGatewayContainer(BaseGatewayContainer):
         log.debug("Get or create inet gateway %s on net %s", label,
         log.debug("Get or create inet gateway %s on net %s", label,
                   self._network)
                   self._network)
         if label:
         if label:
-            AWSInternetGateway.assert_valid_resource_label(label)
+            AWSInternetGateway.assert_valid_resource_name(label)
 
 
         network_id = self._network.id if isinstance(
         network_id = self._network.id if isinstance(
             self._network, AWSNetwork) else self._network
             self._network, AWSNetwork) else self._network
@@ -1259,7 +1259,7 @@ class AWSInternetGateway(BaseInternetGateway):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._gateway.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
         self._gateway.create_tags(Tags=[{'Key': 'Name', 'Value': value}])
 
 
     def refresh(self):
     def refresh(self):

+ 9 - 9
cloudbridge/cloud/providers/aws/services.py

@@ -100,7 +100,7 @@ class AWSKeyPairService(BaseKeyPairService):
 
 
     def create(self, name, public_key_material=None):
     def create(self, name, public_key_material=None):
         log.debug("Creating Key Pair Service %s", name)
         log.debug("Creating Key Pair Service %s", name)
-        AWSKeyPair.assert_valid_resource_label(name)
+        AWSKeyPair.assert_valid_resource_name(name)
         private_key = None
         private_key = None
         if not public_key_material:
         if not public_key_material:
             public_key_material, private_key = cb_helpers.generate_key_pair()
             public_key_material, private_key = cb_helpers.generate_key_pair()
@@ -136,7 +136,7 @@ class AWSVMFirewallService(BaseVMFirewallService):
         log.debug("Creating Firewall Service with the parameters "
         log.debug("Creating Firewall Service with the parameters "
                   "[label: %s id: %s description: %s]", label, network_id,
                   "[label: %s id: %s description: %s]", label, network_id,
                   description)
                   description)
-        AWSVMFirewall.assert_valid_resource_label(label)
+        AWSVMFirewall.assert_valid_resource_name(label)
         name = AWSVMFirewall._generate_name_from_label(label)
         name = AWSVMFirewall._generate_name_from_label(label)
         obj = self.svc.create('create_security_group', GroupName=name,
         obj = self.svc.create('create_security_group', GroupName=name,
                               Description=description, VpcId=network_id)
                               Description=description, VpcId=network_id)
@@ -216,7 +216,7 @@ class AWSVolumeService(BaseVolumeService):
                   "[label: %s size: %s zone: %s snapshot: %s "
                   "[label: %s size: %s zone: %s snapshot: %s "
                   "description: %s]", label, size, zone, snapshot,
                   "description: %s]", label, size, zone, snapshot,
                   description)
                   description)
-        AWSVolume.assert_valid_resource_label(label)
+        AWSVolume.assert_valid_resource_name(label)
 
 
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         snapshot_id = snapshot.id if isinstance(
         snapshot_id = snapshot.id if isinstance(
@@ -267,7 +267,7 @@ class AWSSnapshotService(BaseSnapshotService):
         log.debug("Creating a new AWS snapshot Service with the "
         log.debug("Creating a new AWS snapshot Service with the "
                   "parameters [label: %s volume: %s description: %s]",
                   "parameters [label: %s volume: %s description: %s]",
                   label, volume, description)
                   label, volume, description)
-        AWSSnapshot.assert_valid_resource_label(label)
+        AWSSnapshot.assert_valid_resource_name(label)
 
 
         volume_id = volume.id if isinstance(volume, AWSVolume) else volume
         volume_id = volume.id if isinstance(volume, AWSVolume) else volume
 
 
@@ -331,7 +331,7 @@ class AWSBucketService(BaseBucketService):
     def create(self, name, location=None):
     def create(self, name, location=None):
         log.debug("Creating AWS Bucket with the params "
         log.debug("Creating AWS Bucket with the params "
                   "[name: %s, location: %s]", name, location)
                   "[name: %s, location: %s]", name, location)
-        AWSBucket.assert_valid_resource_label(name)
+        AWSBucket.assert_valid_resource_name(name)
         loc_constraint = location or self.provider.region_name
         loc_constraint = location or self.provider.region_name
         # Due to an API issue in S3, specifying us-east-1 as a
         # Due to an API issue in S3, specifying us-east-1 as a
         # LocationConstraint results in an InvalidLocationConstraint.
         # LocationConstraint results in an InvalidLocationConstraint.
@@ -416,7 +416,7 @@ class AWSInstanceService(BaseInstanceService):
                   "key pair: %s firewalls: %s user data: %s config %s "
                   "key pair: %s firewalls: %s user data: %s config %s "
                   "others: %s]", label, image, vm_type, subnet, zone,
                   "others: %s]", label, image, vm_type, subnet, zone,
                   key_pair, vm_firewalls, user_data, launch_config, kwargs)
                   key_pair, vm_firewalls, user_data, launch_config, kwargs)
-        AWSInstance.assert_valid_resource_label(label)
+        AWSInstance.assert_valid_resource_name(label)
 
 
         image_id = image.id if isinstance(image, MachineImage) else image
         image_id = image.id if isinstance(image, MachineImage) else image
         vm_size = vm_type.id if \
         vm_size = vm_type.id if \
@@ -669,7 +669,7 @@ class AWSNetworkService(BaseNetworkService):
     def create(self, cidr_block, label=None):
     def create(self, cidr_block, label=None):
         log.debug("Creating AWS Network Service with the params "
         log.debug("Creating AWS Network Service with the params "
                   "[label: %s block: %s]", label, cidr_block)
                   "[label: %s block: %s]", label, cidr_block)
-        AWSNetwork.assert_valid_resource_label(label)
+        AWSNetwork.assert_valid_resource_name(label)
 
 
         cb_net = self.svc.create('create_vpc', CidrBlock=cidr_block)
         cb_net = self.svc.create('create_vpc', CidrBlock=cidr_block)
         # Wait until ready to tag instance
         # Wait until ready to tag instance
@@ -715,7 +715,7 @@ class AWSSubnetService(BaseSubnetService):
         log.debug("Creating AWS Subnet Service with the params "
         log.debug("Creating AWS Subnet Service with the params "
                   "[label: %s network: %s block: %s zone: %s]",
                   "[label: %s network: %s block: %s zone: %s]",
                   label, network, cidr_block, zone)
                   label, network, cidr_block, zone)
-        AWSSubnet.assert_valid_resource_label(label)
+        AWSSubnet.assert_valid_resource_name(label)
 
 
         network_id = network.id if isinstance(network, AWSNetwork) else network
         network_id = network.id if isinstance(network, AWSNetwork) else network
 
 
@@ -802,7 +802,7 @@ class AWSRouterService(BaseRouterService):
     def create(self, network, label=None):
     def create(self, network, label=None):
         log.debug("Creating AWS Router Service with the params "
         log.debug("Creating AWS Router Service with the params "
                   "[label: %s network: %s]", label, network)
                   "[label: %s network: %s]", label, network)
-        AWSRouter.assert_valid_resource_label(label)
+        AWSRouter.assert_valid_resource_name(label)
 
 
         network_id = network.id if isinstance(network, AWSNetwork) else network
         network_id = network.id if isinstance(network, AWSNetwork) else network
 
 

+ 13 - 12
cloudbridge/cloud/providers/azure/resources.py

@@ -59,7 +59,7 @@ class AzureVMFirewall(BaseVMFirewall):
 
 
     @label.setter
     @label.setter
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._vm_firewall.tags.update(Label=value)
         self._vm_firewall.tags.update(Label=value)
         self._provider.azure_client.update_vm_firewall_tags(
         self._provider.azure_client.update_vm_firewall_tags(
             self.id, self._vm_firewall.tags)
             self.id, self._vm_firewall.tags)
@@ -469,7 +469,7 @@ class AzureVolume(BaseVolume):
         """
         """
         Set the volume label.
         Set the volume label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._volume.tags.update(Label=value)
         self._volume.tags.update(Label=value)
         self._provider.azure_client. \
         self._provider.azure_client. \
             update_disk_tags(self.id,
             update_disk_tags(self.id,
@@ -547,11 +547,12 @@ class AzureVolume(BaseVolume):
                     vm.storage_profile.data_disks.remove(item)
                     vm.storage_profile.data_disks.remove(item)
                     self._provider.azure_client.update_vm(vm.id, vm)
                     self._provider.azure_client.update_vm(vm.id, vm)
 
 
-    def create_snapshot(self, name, description=None):
+    def create_snapshot(self, label=None, description=None):
         """
         """
         Create a snapshot of this Volume.
         Create a snapshot of this Volume.
         """
         """
-        return self._provider.storage.snapshots.create(name, self)
+        return self._provider.storage.snapshots.create(self,
+                                                       label, description)
 
 
     def delete(self):
     def delete(self):
         """
         """
@@ -626,7 +627,7 @@ class AzureSnapshot(BaseSnapshot):
         """
         """
         Set the snapshot label.
         Set the snapshot label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._snapshot.tags.update(Label=value)
         self._snapshot.tags.update(Label=value)
         self._provider.azure_client. \
         self._provider.azure_client. \
             update_snapshot_tags(self.id,
             update_snapshot_tags(self.id,
@@ -750,7 +751,7 @@ class AzureMachineImage(BaseMachineImage):
         Set the image label when it is a private image.
         Set the image label when it is a private image.
         """
         """
         if not self.is_gallery_image:
         if not self.is_gallery_image:
-            self.assert_valid_resource_label(value)
+            self.assert_valid_resource_name(value)
             self._image.tags.update(Label=value)
             self._image.tags.update(Label=value)
             self._provider.azure_client. \
             self._provider.azure_client. \
                 update_image_tags(self.id, self._image.tags)
                 update_image_tags(self.id, self._image.tags)
@@ -896,7 +897,7 @@ class AzureNetwork(BaseNetwork):
         """
         """
         Set the network label.
         Set the network label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._network.tags.update(Label=value)
         self._network.tags.update(Label=value)
         self._provider.azure_client. \
         self._provider.azure_client. \
             update_network_tags(self.id, self._network)
             update_network_tags(self.id, self._network)
@@ -995,7 +996,7 @@ class AzureFloatingIPContainer(BaseFloatingIPContainer):
         if label:
         if label:
             public_ip_parameters.update(tags={'Label': label})
             public_ip_parameters.update(tags={'Label': label})
 
 
-        AzureFloatingIP.assert_valid_resource_label(label)
+        AzureFloatingIP.assert_valid_resource_name(label)
         public_ip_name = AzureFloatingIP._generate_name_from_label(label)
         public_ip_name = AzureFloatingIP._generate_name_from_label(label)
 
 
         floating_ip = self._provider.azure_client.\
         floating_ip = self._provider.azure_client.\
@@ -1037,7 +1038,7 @@ class AzureFloatingIP(BaseFloatingIP):
         """
         """
         Set the floating IP label.
         Set the floating IP label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._ip.tags.update(Label=value)
         self._ip.tags.update(Label=value)
         self._provider.azure_client. \
         self._provider.azure_client. \
             update_fip_tags(self.id, self._ip)
             update_fip_tags(self.id, self._ip)
@@ -1284,7 +1285,7 @@ class AzureInstance(BaseInstance):
         """
         """
         Set the instance label.
         Set the instance label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._vm.tags.update(Label=value)
         self._vm.tags.update(Label=value)
         self._provider.azure_client. \
         self._provider.azure_client. \
             update_vm_tags(self.id, self._vm)
             update_vm_tags(self.id, self._vm)
@@ -1416,7 +1417,7 @@ class AzureInstance(BaseInstance):
         CloudBridge interface to pass the private key file path
         CloudBridge interface to pass the private key file path
         """
         """
 
 
-        self.assert_valid_resource_label(name)
+        self.assert_valid_resource_name(name)
 
 
         if not self._state == 'VM generalized':
         if not self._state == 'VM generalized':
             if not self._state == 'VM running':
             if not self._state == 'VM running':
@@ -1688,7 +1689,7 @@ class AzureRouter(BaseRouter):
         """
         """
         Set the router label.
         Set the router label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._route_table.tags.update(Label=value)
         self._route_table.tags.update(Label=value)
         self._provider.azure_client. \
         self._provider.azure_client. \
             update_route_table_tags(self._route_table.name,
             update_route_table_tags(self._route_table.name,

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

@@ -69,7 +69,7 @@ class AzureVMFirewallService(BaseVMFirewallService):
     def create(self, label=None, description=None, network_id=None):
     def create(self, label=None, description=None, network_id=None):
         parameters = {"location": self.provider.region_name}
         parameters = {"location": self.provider.region_name}
         if label:
         if label:
-            AzureVMFirewall.assert_valid_resource_label(label)
+            AzureVMFirewall.assert_valid_resource_name(label)
             parameters.update({'tags': {'Label': label}})
             parameters.update({'tags': {'Label': label}})
         else:
         else:
             label = "cb-fw"
             label = "cb-fw"
@@ -175,7 +175,7 @@ class AzureKeyPairService(BaseKeyPairService):
                                      matches if matches else [])
                                      matches if matches else [])
 
 
     def create(self, name, public_key_material=None):
     def create(self, name, public_key_material=None):
-        AzureKeyPair.assert_valid_resource_label(name)
+        AzureKeyPair.assert_valid_resource_name(name)
 
 
         key_pair = self.get(name)
         key_pair = self.get(name)
 
 
@@ -243,7 +243,7 @@ class AzureBucketService(BaseBucketService):
         """
         """
         Create a new bucket.
         Create a new bucket.
         """
         """
-        AzureBucket.assert_valid_resource_label(name)
+        AzureBucket.assert_valid_resource_name(name)
         bucket = self.provider.azure_client.create_container(name.lower())
         bucket = self.provider.azure_client.create_container(name.lower())
         return AzureBucket(self.provider, bucket)
         return AzureBucket(self.provider, bucket)
 
 
@@ -314,9 +314,9 @@ class AzureVolumeService(BaseVolumeService):
         """
         """
         Creates a new volume.
         Creates a new volume.
         """
         """
-        AzureVolume.assert_valid_resource_label(label)
+        AzureVolume.assert_valid_resource_name(label)
         if label:
         if label:
-            AzureVolume.assert_valid_resource_label(label)
+            AzureVolume.assert_valid_resource_name(label)
             tags = {'Label': label}
             tags = {'Label': label}
         else:
         else:
             label = "cb-vol"
             label = "cb-vol"
@@ -417,7 +417,7 @@ class AzureSnapshotService(BaseSnapshotService):
                   if isinstance(volume, str) else volume)
                   if isinstance(volume, str) else volume)
 
 
         if label:
         if label:
-            AzureSnapshot.assert_valid_resource_label(label)
+            AzureSnapshot.assert_valid_resource_name(label)
             tags = {'Label': label}
             tags = {'Label': label}
         else:
         else:
             label = "cb-snap"
             label = "cb-snap"
@@ -486,7 +486,7 @@ class AzureInstanceService(BaseInstanceService):
 
 
         instance_name = "{0}-{1}".format(prefix, uuid.uuid4().hex[:6])
         instance_name = "{0}-{1}".format(prefix, uuid.uuid4().hex[:6])
 
 
-        AzureInstance.assert_valid_resource_label(instance_name)
+        AzureInstance.assert_valid_resource_name(instance_name)
 
 
         image = (image if isinstance(image, AzureMachineImage) else
         image = (image if isinstance(image, AzureMachineImage) else
                  self.provider.compute.images.get(image))
                  self.provider.compute.images.get(image))
@@ -551,7 +551,7 @@ class AzureInstanceService(BaseInstanceService):
             # but useless. However, this will allow an instance to be launched
             # but useless. However, this will allow an instance to be launched
             # without specifying a keypair, so users may still be able to login
             # without specifying a keypair, so users may still be able to login
             # if they have a preinstalled keypair/password baked into the image
             # if they have a preinstalled keypair/password baked into the image
-            temp_kp_name = "".join(["cb_default_kp_",
+            temp_kp_name = "".join(["cb-default-kp_",
                                    str(uuid.uuid5(uuid.NAMESPACE_OID,
                                    str(uuid.uuid5(uuid.NAMESPACE_OID,
                                                   instance_name))[-6:]])
                                                   instance_name))[-6:]])
             key_pair = self.provider.security.key_pairs.create(
             key_pair = self.provider.security.key_pairs.create(
@@ -913,7 +913,7 @@ class AzureNetworkService(BaseNetworkService):
     def create(self, cidr_block, label=None):
     def create(self, cidr_block, label=None):
         # Azure requires CIDR block to be specified when creating a network
         # Azure requires CIDR block to be specified when creating a network
         # so set a default one and use the largest allowed netmask.
         # so set a default one and use the largest allowed netmask.
-        AzureNetwork.assert_valid_resource_label(label)
+        AzureNetwork.assert_valid_resource_name(label)
         network_name = AzureNetwork._generate_name_from_label(label)
         network_name = AzureNetwork._generate_name_from_label(label)
 
 
         params = {
         params = {
@@ -1037,7 +1037,7 @@ class AzureSubnetService(BaseSubnetService):
             if isinstance(network, Network) else network
             if isinstance(network, Network) else network
 
 
         if prefix:
         if prefix:
-            AzureSubnet.assert_valid_resource_label(prefix)
+            AzureSubnet.assert_valid_resource_name(prefix)
 
 
         else:
         else:
             prefix = "cb-sn"
             prefix = "cb-sn"
@@ -1118,7 +1118,7 @@ class AzureRouterService(BaseRouterService):
                                      limit=limit, marker=marker)
                                      limit=limit, marker=marker)
 
 
     def create(self, network, label=None):
     def create(self, network, label=None):
-        AzureRouter.assert_valid_resource_label(label)
+        AzureRouter.assert_valid_resource_name(label)
         parameters = {"location": self.provider.region_name}
         parameters = {"location": self.provider.region_name}
         if label:
         if label:
             parameters.update(tags={'Label': label})
             parameters.update(tags={'Label': label})

+ 11 - 11
cloudbridge/cloud/providers/openstack/resources.py

@@ -116,7 +116,7 @@ class OpenStackMachineImage(BaseMachineImage):
         """
         """
         Set the image label.
         Set the image label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._os_image.name = value
         self._os_image.name = value
         self._os_image.update(name=value)
         self._os_image.update(name=value)
 
 
@@ -317,7 +317,7 @@ class OpenStackInstance(BaseInstance):
         """
         """
         Set the instance label.
         Set the instance label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
 
 
         self._os_instance.name = value
         self._os_instance.name = value
         self._os_instance.update(name=value)
         self._os_instance.update(name=value)
@@ -452,7 +452,7 @@ class OpenStackInstance(BaseInstance):
         Create a new image based on this instance.
         Create a new image based on this instance.
         """
         """
         log.debug("Creating OpenStack Image with the label %s", label)
         log.debug("Creating OpenStack Image with the label %s", label)
-        self.assert_valid_resource_label(label)
+        self.assert_valid_resource_name(label)
         name = self._generate_name_from_label(label)
         name = self._generate_name_from_label(label)
 
 
         image_id = self._os_instance.create_image(name)
         image_id = self._os_instance.create_image(name)
@@ -600,7 +600,7 @@ class OpenStackVolume(BaseVolume):
         """
         """
         Set the volume label.
         Set the volume label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._volume.name = value
         self._volume.name = value
         self._volume.update(name=value)
         self._volume.update(name=value)
 
 
@@ -731,7 +731,7 @@ class OpenStackSnapshot(BaseSnapshot):
         """
         """
         Set the snapshot label.
         Set the snapshot label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._snapshot.name = value
         self._snapshot.name = value
         self._snapshot.update(name=value)
         self._snapshot.update(name=value)
 
 
@@ -821,7 +821,7 @@ class OpenStackGatewayContainer(BaseGatewayContainer):
     def get_or_create_inet_gateway(self, label=None):
     def get_or_create_inet_gateway(self, label=None):
         """For OS, inet gtw is any net that has `external` property set."""
         """For OS, inet gtw is any net that has `external` property set."""
         if label:
         if label:
-            OpenStackInternetGateway.assert_valid_resource_label(label)
+            OpenStackInternetGateway.assert_valid_resource_name(label)
 
 
         external_nets = (n for n in self._provider.networking.networks
         external_nets = (n for n in self._provider.networking.networks
                          if n.external)
                          if n.external)
@@ -880,7 +880,7 @@ class OpenStackNetwork(BaseNetwork):
         """
         """
         Set the network label.
         Set the network label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._provider.neutron.update_network(self.id,
         self._provider.neutron.update_network(self.id,
                                               {'network': {'name': value}})
                                               {'network': {'name': value}})
         self.refresh()
         self.refresh()
@@ -961,7 +961,7 @@ class OpenStackSubnet(BaseSubnet):
         """
         """
         Set the subnet label.
         Set the subnet label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._provider.neutron.update_subnet(
         self._provider.neutron.update_subnet(
             self.id, {'subnet': {'name': value}})
             self.id, {'subnet': {'name': value}})
         self._subnet['name'] = value
         self._subnet['name'] = value
@@ -1087,7 +1087,7 @@ class OpenStackRouter(BaseRouter):
         """
         """
         Set the router label.
         Set the router label.
         """
         """
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._provider.neutron.update_router(
         self._provider.neutron.update_router(
             self.id, {'router': {'name': value}})
             self.id, {'router': {'name': value}})
         self.refresh()
         self.refresh()
@@ -1169,7 +1169,7 @@ class OpenStackInternetGateway(BaseInternetGateway):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._provider.neutron.update_network(self.id,
         self._provider.neutron.update_network(self.id,
                                               {'network': {'name': value}})
                                               {'network': {'name': value}})
         self.refresh()
         self.refresh()
@@ -1237,7 +1237,7 @@ class OpenStackVMFirewall(BaseVMFirewall):
     @label.setter
     @label.setter
     # pylint:disable=arguments-differ
     # pylint:disable=arguments-differ
     def label(self, value):
     def label(self, value):
-        self.assert_valid_resource_label(value)
+        self.assert_valid_resource_name(value)
         self._provider.os_conn.network.update_security_group(self.id,
         self._provider.os_conn.network.update_security_group(self.id,
                                                              name=value)
                                                              name=value)
         self.refresh()
         self.refresh()

+ 9 - 9
cloudbridge/cloud/providers/openstack/services.py

@@ -169,7 +169,7 @@ class OpenStackKeyPairService(BaseKeyPairService):
 
 
     def create(self, name, public_key_material=None):
     def create(self, name, public_key_material=None):
         log.debug("Creating a new key pair with the name: %s", name)
         log.debug("Creating a new key pair with the name: %s", name)
-        OpenStackKeyPair.assert_valid_resource_label(name)
+        OpenStackKeyPair.assert_valid_resource_name(name)
 
 
         existing_kp = self.find(name=name)
         existing_kp = self.find(name=name)
         if existing_kp:
         if existing_kp:
@@ -211,7 +211,7 @@ class OpenStackVMFirewallService(BaseVMFirewallService):
                                      limit=limit, marker=marker)
                                      limit=limit, marker=marker)
 
 
     def create(self, description, network_id, label=None):
     def create(self, description, network_id, label=None):
-        OpenStackVMFirewall.assert_valid_resource_label(label)
+        OpenStackVMFirewall.assert_valid_resource_name(label)
         log.debug("Creating OpenStack VM Firewall with the params: "
         log.debug("Creating OpenStack VM Firewall with the params: "
                   "[label: %s network id: %s description: %s]", label,
                   "[label: %s network id: %s description: %s]", label,
                   network_id, description)
                   network_id, description)
@@ -383,7 +383,7 @@ class OpenStackVolumeService(BaseVolumeService):
         log.debug("Creating a new volume with the params: "
         log.debug("Creating a new volume with the params: "
                   "[label: %s size: %s zone: %s snapshot: %s description: %s]",
                   "[label: %s size: %s zone: %s snapshot: %s description: %s]",
                   label, size, zone, snapshot, description)
                   label, size, zone, snapshot, description)
-        OpenStackVolume.assert_valid_resource_label(label)
+        OpenStackVolume.assert_valid_resource_name(label)
 
 
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
         snapshot_id = snapshot.id if isinstance(
         snapshot_id = snapshot.id if isinstance(
@@ -449,7 +449,7 @@ class OpenStackSnapshotService(BaseSnapshotService):
         Creates a new snapshot of a given volume.
         Creates a new snapshot of a given volume.
         """
         """
         log.debug("Creating a new snapshot of the %s volume.", label)
         log.debug("Creating a new snapshot of the %s volume.", label)
-        OpenStackSnapshot.assert_valid_resource_label(label)
+        OpenStackSnapshot.assert_valid_resource_name(label)
 
 
         volume_id = (volume.id if isinstance(volume, OpenStackVolume)
         volume_id = (volume.id if isinstance(volume, OpenStackVolume)
                      else volume)
                      else volume)
@@ -514,7 +514,7 @@ class OpenStackBucketService(BaseBucketService):
         Create a new bucket.
         Create a new bucket.
         """
         """
         log.debug("Creating a new OpenStack Bucket with the name: %s", name)
         log.debug("Creating a new OpenStack Bucket with the name: %s", name)
-        OpenStackBucket.assert_valid_resource_label(name)
+        OpenStackBucket.assert_valid_resource_name(name)
 
 
         self.provider.swift.put_container(name)
         self.provider.swift.put_container(name)
         return self.get(name)
         return self.get(name)
@@ -594,7 +594,7 @@ class OpenStackInstanceService(BaseInstanceService):
                launch_config=None,
                launch_config=None,
                **kwargs):
                **kwargs):
         """Create a new virtual machine instance."""
         """Create a new virtual machine instance."""
-        OpenStackInstance.assert_valid_resource_label(label)
+        OpenStackInstance.assert_valid_resource_name(label)
 
 
         image_id = image.id if isinstance(image, MachineImage) else image
         image_id = image.id if isinstance(image, MachineImage) else image
         vm_size = vm_type.id if \
         vm_size = vm_type.id if \
@@ -819,7 +819,7 @@ class OpenStackNetworkService(BaseNetworkService):
     def create(self, cidr_block, label=None):
     def create(self, cidr_block, label=None):
         log.debug("Creating OpenStack Network with the params: "
         log.debug("Creating OpenStack Network with the params: "
                   "[label: %s Cinder Block: %s]", label, cidr_block)
                   "[label: %s Cinder Block: %s]", label, cidr_block)
-        OpenStackNetwork.assert_valid_resource_label(label)
+        OpenStackNetwork.assert_valid_resource_name(label)
         name = OpenStackNetwork._generate_name_from_label(label)
         name = OpenStackNetwork._generate_name_from_label(label)
         net_info = {'name': name}
         net_info = {'name': name}
         network = self.provider.neutron.create_network({'network': net_info})
         network = self.provider.neutron.create_network({'network': net_info})
@@ -853,7 +853,7 @@ class OpenStackSubnetService(BaseSubnetService):
         log.debug("Creating OpenStack Subnet with the params: "
         log.debug("Creating OpenStack Subnet with the params: "
                   "[Label: %s Network: %s Cinder Block: %s Zone: -ignored-]",
                   "[Label: %s Network: %s Cinder Block: %s Zone: -ignored-]",
                   label, network, cidr_block)
                   label, network, cidr_block)
-        OpenStackSubnet.assert_valid_resource_label(label)
+        OpenStackSubnet.assert_valid_resource_name(label)
 
 
         network_id = (network.id if isinstance(network, OpenStackNetwork)
         network_id = (network.id if isinstance(network, OpenStackNetwork)
                       else network)
                       else network)
@@ -929,7 +929,7 @@ class OpenStackRouterService(BaseRouterService):
             ?expanded=delete-router-detail,create-router-detail#create-router
             ?expanded=delete-router-detail,create-router-detail#create-router
         """
         """
         log.debug("Creating OpenStack Router with the label: %s", label)
         log.debug("Creating OpenStack Router with the label: %s", label)
-        OpenStackRouter.assert_valid_resource_label(label)
+        OpenStackRouter.assert_valid_resource_name(label)
 
 
         body = {'router': {'name': label}} if label else None
         body = {'router': {'name': label}} if label else None
         router = self.provider.neutron.create_router(body)
         router = self.provider.neutron.create_router(body)

BIN
docs/topics/captures/az-label-dash.png


BIN
docs/topics/captures/az-net-id.png


BIN
docs/topics/captures/az-net-label.png


+ 120 - 0
docs/topics/dashboard.rst

@@ -0,0 +1,120 @@
+Dashboard Mapping
+=================
+
+Cross-Platform Concepts
+-----------------------
+
+Given cloudbridge's goal to work uniformly across cloud providers, some
+compromises were necessary in order to bridge the many differences between
+providers' resources and features. Notably, in order to create a robust and
+conceptually consistent cross-cloud library, resources were given three main
+properties: ID, name, and label.
+The `ID` corresponds to a unique identifier that can be reliably used to
+reference a resource. Users can safely use an ID knowing that it will always
+point to the same resource.
+The `name` property corresponds to an unchangeable and unique designation for
+a particular resource. This property is meant to be, in some ways, a more
+human-readable identifier. However, when no conceptually comparable property
+exists for a given resource in a particular provider, the ID is returned
+instead, as is the case for OpenStack resources. When the name can be
+determined by a user at resource creation, either the name parameter will be
+used for resources that support it, or the label will be used, when provided
+as a prefix, with an appended uuid to ensure that the name remains unique.
+The `label` property, conversely, is a changeable value that does not need
+to be unique. Unlike the name property, it is not used to identify a
+particular resource, but rather label a resource for easier distinction. It
+is however important to note that not all resources support labels. When
+supported, labels given at creation will also be used as a prefix to the name.
+
+Properties per Resource per Provider
+------------------------------------
+The sections below will present a summary table detailing the cloudbridge
+properties implemented for each resource, and their corresponding value in
+the provider's dashboard.
+
+Azure
+-----
++-----------------------------------+-------+---------------+---------------+
+| CloudServiceType                 	| CB_ID	| CB_Name      	| CB_Label  	|
++===================================+=======+===============+===============+
+| Instance                         	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| MachineImage (Private)           	| ID   	| Name       	| Tags:Label 	|
+| MachineImage (Gallery Reference) 	| URN  	| URN        	| URN        	|
++-----------------------------------+-------+---------------+---------------+
+| Network                          	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| Subnet                           	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| FloatingIP                       	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| Router                           	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| InternetGateway                  	| None 	| None       	| -          	|
++-----------------------------------+-------+---------------+---------------+
+| Volume                           	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| Snapshot                         	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| KeyPair                          	| Name 	| Name       	| -          	|
++-----------------------------------+-------+---------------+---------------+
+| VMFirewall                       	| ID   	| Name       	| Tags:Label 	|
++-----------------------------------+-------+---------------+---------------+
+| VMFirewallRule                   	| ID   	| Name       	| -          	|
++-----------------------------------+-------+---------------+---------------+
+| Bucket                           	| Name 	| Name       	| -          	|
++-----------------------------------+-------+---------------+---------------+
+| BucketObject                     	| Name 	| Name       	| -          	|
++-----------------------------------+-------+---------------+---------------+
+
+One of the major discrepancies in Azure is the non-existence of an Internet
+Gateway. In fact, Azure resources are automatically exposed to the internet,
+and thus an internet gateway object is not necessary for this purpose. Thus,
+a gateway object created through cloudbridge in Azure will not appear on the
+dashboard, as a cloudbridge-level wrapper object is returned when trying to
+create or get a gateway, but no object corresponds to that concept in Azure.
+For a succinct comparison between AWS Gateways and Azure, see:
+https://social.msdn.microsoft.com/Forums/en-US/
+814ccee0-9fbb-4c04-8135-49d0aaea5f38/
+equivalent-of-aws-internet-gateways-in-azure?
+forum=WAVirtualMachinesVirtualNetwork
+
+
+.. figure:: captures/az-label-dash.png
+   :scale: 50 %
+   :alt: name and label properties in Azure portal
+
+   The cloudbridge `name` property always maps to the unchangeable resource
+   name in Azure. The `label` property maps to the tag with key 'Label' in
+   Azure. By default, this label will appear in the tags column, but can also
+   be made into its own column, following the button indicated in the
+   screenshot above.
+
+.. figure:: captures/az-net-id.png
+   :scale: 50 %
+   :alt: network id in Azure portal
+
+   The cloudbridge `ID` property most often maps to the Resource ID in Azure,
+   which can be found under the properties tab within a resource. The above
+   screenshot shows where to find a resource's label in Azure's web portal
+
+.. figure:: captures/az-net-label.png
+   :scale: 50 %
+   :alt: network label in Azure portal
+
+   The cloudbridge `label` property most often maps to the Resource ID in
+   Azure, which can be found under the tags tab within a resource. The above
+   screenshot shows where to find a resource's label in Azure's web portal.
+
+.. figure:: captures/az-storacc.png
+   :scale: 50 %
+   :alt: storage account in Azure portal
+
+   Bucket and Key Pair objects are different than other resources in Azure,
+   as they are not resources residing in a resource group, but rather reside
+   in a storage account. As a result of this difference, these resources do
+   not support labels, and cannot be seen on the default dashboard. In order
+   to find these resources in the Azure web portal, one must head to the
+   storage account containing them, and look in the `Blobs` and `Tables`
+   services respectively for `Buckets` and `KeyPairs`.
+

+ 9 - 9
test/test_block_store_service.py

@@ -39,14 +39,14 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                              terminal_states=[VolumeState.ERROR])
                              terminal_states=[VolumeState.ERROR])
 
 
         sit.check_crud(self, self.provider.storage.volumes, Volume,
         sit.check_crud(self, self.provider.storage.volumes, Volume,
-                       "cb_createvol", create_vol, cleanup_vol)
+                       "cb-createvol", create_vol, cleanup_vol)
 
 
     @helpers.skipIfNoService(['storage.volumes'])
     @helpers.skipIfNoService(['storage.volumes'])
     def test_attach_detach_volume(self):
     def test_attach_detach_volume(self):
         """
         """
         Create a new volume, and attempt to attach it to an instance
         Create a new volume, and attempt to attach it to an instance
         """
         """
-        label = "cb_attachvol-{0}".format(helpers.get_uuid())
+        label = "cb-attachvol-{0}".format(helpers.get_uuid())
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         net = None
         net = None
@@ -76,7 +76,7 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
         """
         """
         Test volume properties
         Test volume properties
         """
         """
-        label = "cb_volprops-{0}".format(helpers.get_uuid())
+        label = "cb-volprops-{0}".format(helpers.get_uuid())
         vol_desc = 'newvoldesc1'
         vol_desc = 'newvoldesc1'
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
@@ -139,7 +139,7 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
         whether list_snapshots properly detects the new snapshot.
         whether list_snapshots properly detects the new snapshot.
         Delete everything afterwards.
         Delete everything afterwards.
         """
         """
-        label = "cb_crudsnap-{0}".format(helpers.get_uuid())
+        label = "cb-crudsnap-{0}".format(helpers.get_uuid())
         test_vol = self.provider.storage.volumes.create(
         test_vol = self.provider.storage.volumes.create(
             1,
             1,
             helpers.get_provider_test_data(self.provider, "placement"),
             helpers.get_provider_test_data(self.provider, "placement"),
@@ -158,7 +158,7 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                                   terminal_states=[SnapshotState.ERROR])
                                   terminal_states=[SnapshotState.ERROR])
 
 
             sit.check_crud(self, self.provider.storage.snapshots, Snapshot,
             sit.check_crud(self, self.provider.storage.snapshots, Snapshot,
-                           "cb_snap", create_snap, cleanup_snap)
+                           "cb-snap", create_snap, cleanup_snap)
 
 
             # Test creation of a snap via SnapshotService
             # Test creation of a snap via SnapshotService
             def create_snap2(label):
             def create_snap2(label):
@@ -169,21 +169,21 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                     not isinstance(self.provider, TestMockHelperMixin)):
                     not isinstance(self.provider, TestMockHelperMixin)):
                 time.sleep(15)  # Or get SnapshotCreationPerVolumeRateExceeded
                 time.sleep(15)  # Or get SnapshotCreationPerVolumeRateExceeded
             sit.check_crud(self, self.provider.storage.snapshots, Snapshot,
             sit.check_crud(self, self.provider.storage.snapshots, Snapshot,
-                           "cb_snaptwo", create_snap2, cleanup_snap)
+                           "cb-snaptwo", create_snap2, cleanup_snap)
 
 
     @helpers.skipIfNoService(['storage.snapshots'])
     @helpers.skipIfNoService(['storage.snapshots'])
     def test_snapshot_properties(self):
     def test_snapshot_properties(self):
         """
         """
         Test snapshot properties
         Test snapshot properties
         """
         """
-        label = "cb_snapprop-{0}".format(uuid.uuid4())
+        label = "cb-snapprop-{0}".format(uuid.uuid4())
         test_vol = self.provider.storage.volumes.create(
         test_vol = self.provider.storage.volumes.create(
             1,
             1,
             helpers.get_provider_test_data(self.provider, "placement"),
             helpers.get_provider_test_data(self.provider, "placement"),
             label=label)
             label=label)
         with helpers.cleanup_action(lambda: test_vol.delete()):
         with helpers.cleanup_action(lambda: test_vol.delete()):
             test_vol.wait_till_ready()
             test_vol.wait_till_ready()
-            snap_label = "cb_snap-{0}".format(label)
+            snap_label = "cb-snap-{0}".format(label)
             test_snap = test_vol.create_snapshot(label=snap_label,
             test_snap = test_vol.create_snapshot(label=snap_label,
                                                  description=snap_label)
                                                  description=snap_label)
 
 
@@ -214,7 +214,7 @@ class CloudBlockStoreServiceTestCase(ProviderTestBase):
                 self.assertEqual(test_snap.description, 'snapnewdescription1')
                 self.assertEqual(test_snap.description, 'snapnewdescription1')
 
 
                 # Test volume creation from a snapshot (via VolumeService)
                 # Test volume creation from a snapshot (via VolumeService)
-                sv_label = "cb_snapvol_{0}".format(test_snap.name)
+                sv_label = "cb-snapvol-{0}".format(test_snap.name)
                 snap_vol = self.provider.storage.volumes.create(
                 snap_vol = self.provider.storage.volumes.create(
                     1,
                     1,
                     helpers.get_provider_test_data(self.provider, "placement"),
                     helpers.get_provider_test_data(self.provider, "placement"),

+ 5 - 5
test/test_compute_service.py

@@ -21,7 +21,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
 
 
     @helpers.skipIfNoService(['compute.instances', 'networking.networks'])
     @helpers.skipIfNoService(['compute.instances', 'networking.networks'])
     def test_crud_instance(self):
     def test_crud_instance(self):
-        label = "cb_instcrud-{0}".format(helpers.get_uuid())
+        label = "cb-instcrud-{0}".format(helpers.get_uuid())
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
         net = None
         net = None
@@ -53,7 +53,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
             net, subnet = helpers.create_test_network(self.provider, label)
             net, subnet = helpers.create_test_network(self.provider, label)
 
 
             sit.check_crud(self, self.provider.compute.instances, Instance,
             sit.check_crud(self, self.provider.compute.instances, Instance,
-                           "cb_instcrud", create_inst, cleanup_inst,
+                           "cb-instcrud", create_inst, cleanup_inst,
                            custom_check_delete=check_deleted)
                            custom_check_delete=check_deleted)
 
 
     def _is_valid_ip(self, address):
     def _is_valid_ip(self, address):
@@ -67,7 +67,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
                               'security.vm_firewalls',
                               'security.vm_firewalls',
                               'security.key_pairs'])
                               'security.key_pairs'])
     def test_instance_properties(self):
     def test_instance_properties(self):
-        label = "cb_inst_props-{0}".format(helpers.get_uuid())
+        label = "cb-inst_props-{0}".format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
@@ -217,7 +217,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
     @helpers.skipIfNoService(['compute.instances', 'compute.images',
     @helpers.skipIfNoService(['compute.instances', 'compute.images',
                               'compute.vm_types', 'storage.volumes'])
                               'compute.vm_types', 'storage.volumes'])
     def test_block_device_mapping_attachments(self):
     def test_block_device_mapping_attachments(self):
-        label = "cb_blkattch-{0}".format(helpers.get_uuid())
+        label = "cb-blkattch-{0}".format(helpers.get_uuid())
 
 
         if self.provider.PROVIDER_ID == ProviderList.OPENSTACK:
         if self.provider.PROVIDER_ID == ProviderList.OPENSTACK:
             raise self.skipTest("Not running BDM tests because OpenStack is"
             raise self.skipTest("Not running BDM tests because OpenStack is"
@@ -302,7 +302,7 @@ class CloudComputeServiceTestCase(ProviderTestBase):
     @helpers.skipIfNoService(['compute.instances', 'networking.networks',
     @helpers.skipIfNoService(['compute.instances', 'networking.networks',
                               'security.vm_firewalls'])
                               'security.vm_firewalls'])
     def test_instance_methods(self):
     def test_instance_methods(self):
-        label = "cb_instmethods-{0}".format(helpers.get_uuid())
+        label = "cb-instmethods-{0}".format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values

+ 2 - 2
test/test_image_service.py

@@ -18,7 +18,7 @@ class CloudImageServiceTestCase(ProviderTestBase):
         This covers waiting till the image is ready, checking that the image
         This covers waiting till the image is ready, checking that the image
         label is the expected one and whether list_images is functional.
         label is the expected one and whether list_images is functional.
         """
         """
-        instance_label = "cb_crudimage-{0}".format(helpers.get_uuid())
+        instance_label = "cb-crudimage-{0}".format(helpers.get_uuid())
 
 
         # Declare these variables and late binding will allow
         # Declare these variables and late binding will allow
         # the cleanup method access to the most current values
         # the cleanup method access to the most current values
@@ -48,5 +48,5 @@ class CloudImageServiceTestCase(ProviderTestBase):
             test_instance = helpers.get_test_instance(
             test_instance = helpers.get_test_instance(
                 self.provider, instance_label, subnet=subnet)
                 self.provider, instance_label, subnet=subnet)
             sit.check_crud(self, self.provider.compute.images, MachineImage,
             sit.check_crud(self, self.provider.compute.images, MachineImage,
-                           "cb_listimg", create_img, cleanup_img,
+                           "cb-listimg", create_img, cleanup_img,
                            extra_test_func=extra_tests)
                            extra_test_func=extra_tests)

+ 3 - 3
test/test_network_service.py

@@ -25,7 +25,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                 self.provider.networking.networks.delete(network_id=net.id)
                 self.provider.networking.networks.delete(network_id=net.id)
 
 
         sit.check_crud(self, self.provider.networking.networks, Network,
         sit.check_crud(self, self.provider.networking.networks, Network,
-                       "cb_crudnetwork", create_net, cleanup_net)
+                       "cb-crudnetwork", create_net, cleanup_net)
 
 
     @helpers.skipIfNoService(['networking.networks'])
     @helpers.skipIfNoService(['networking.networks'])
     def test_network_properties(self):
     def test_network_properties(self):
@@ -102,7 +102,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
                 self.provider.networking.networks.delete(network_id=net.id)
                 self.provider.networking.networks.delete(network_id=net.id)
         ):
         ):
             sit.check_crud(self, self.provider.networking.subnets, Subnet,
             sit.check_crud(self, self.provider.networking.subnets, Subnet,
-                           "cb_crudsubnet", create_subnet, cleanup_subnet)
+                           "cb-crudsubnet", create_subnet, cleanup_subnet)
 
 
     def test_crud_floating_ip(self):
     def test_crud_floating_ip(self):
         net, gw = helpers.get_test_gateway(
         net, gw = helpers.get_test_gateway(
@@ -119,7 +119,7 @@ class CloudNetworkServiceTestCase(ProviderTestBase):
         with helpers.cleanup_action(
         with helpers.cleanup_action(
                 lambda: helpers.delete_test_gateway(net, gw)):
                 lambda: helpers.delete_test_gateway(net, gw)):
             sit.check_crud(self, gw.floating_ips, FloatingIP,
             sit.check_crud(self, gw.floating_ips, FloatingIP,
-                           "cb_crudfip", create_fip, cleanup_fip,
+                           "cb-crudfip", create_fip, cleanup_fip,
                            skip_label_check=True)
                            skip_label_check=True)
 
 
     def test_floating_ip_properties(self):
     def test_floating_ip_properties(self):

+ 1 - 1
test/test_object_life_cycle.py

@@ -14,7 +14,7 @@ class CloudObjectLifeCycleTestCase(ProviderTestBase):
         """
         """
         Test object life cycle methods by using a volume.
         Test object life cycle methods by using a volume.
         """
         """
-        label = "cb_objlifecycle-{0}".format(helpers.get_uuid())
+        label = "cb-objlifecycle-{0}".format(helpers.get_uuid())
         test_vol = self.provider.storage.volumes.create(
         test_vol = self.provider.storage.volumes.create(
             1,
             1,
             helpers.get_provider_test_data(self.provider, "placement"),
             helpers.get_provider_test_data(self.provider, "placement"),

+ 1 - 1
test/test_object_store_service.py

@@ -78,7 +78,7 @@ class CloudObjectStoreServiceTestCase(ProviderTestBase):
             test_bucket = self.provider.storage.buckets.create(name)
             test_bucket = self.provider.storage.buckets.create(name)
 
 
             sit.check_crud(self, test_bucket.objects, BucketObject,
             sit.check_crud(self, test_bucket.objects, BucketObject,
-                           "cb_bucketobj", create_bucket_obj,
+                           "cb-bucketobj", create_bucket_obj,
                            cleanup_bucket_obj, skip_label_check=True)
                            cleanup_bucket_obj, skip_label_check=True)
 
 
     @helpers.skipIfNoService(['storage.buckets'])
     @helpers.skipIfNoService(['storage.buckets'])

+ 3 - 3
test/test_security_service.py

@@ -31,7 +31,7 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
                 self.provider.security.key_pairs.create(name=kp.name)
                 self.provider.security.key_pairs.create(name=kp.name)
 
 
         sit.check_crud(self, self.provider.security.key_pairs, KeyPair,
         sit.check_crud(self, self.provider.security.key_pairs, KeyPair,
-                       "cb_crudkp", create_kp, cleanup_kp,
+                       "cb-crudkp", create_kp, cleanup_kp,
                        extra_test_func=extra_tests)
                        extra_test_func=extra_tests)
 
 
     @helpers.skipIfNoService(['security.key_pairs'])
     @helpers.skipIfNoService(['security.key_pairs'])
@@ -79,7 +79,7 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
             net, _ = helpers.create_test_network(self.provider, label)
             net, _ = helpers.create_test_network(self.provider, label)
 
 
             sit.check_crud(self, self.provider.security.vm_firewalls,
             sit.check_crud(self, self.provider.security.vm_firewalls,
-                           VMFirewall, "cb_crudfw", create_fw, cleanup_fw)
+                           VMFirewall, "cb-crudfw", create_fw, cleanup_fw)
 
 
     @helpers.skipIfNoService(['security.vm_firewalls'])
     @helpers.skipIfNoService(['security.vm_firewalls'])
     def test_vm_firewall_properties(self):
     def test_vm_firewall_properties(self):
@@ -122,7 +122,7 @@ class CloudSecurityServiceTestCase(ProviderTestBase):
                     if rule:
                     if rule:
                         rule.delete()
                         rule.delete()
 
 
-                sit.check_crud(self, fw.rules, VMFirewallRule, "cb_crudfwrule",
+                sit.check_crud(self, fw.rules, VMFirewallRule, "cb-crudfwrule",
                                create_fw_rule, cleanup_fw_rule,
                                create_fw_rule, cleanup_fw_rule,
                                skip_label_check=True)
                                skip_label_check=True)