ソースを参照

Changes to get default subnet while creating instance

vikramdoda 9 年 前
コミット
8f7d534134
1 ファイル変更14 行追加12 行削除
  1. 14 12
      cloudbridge/cloud/providers/azure/services.py

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

@@ -327,26 +327,28 @@ class AzureInstanceService(BaseInstanceService):
     def __init__(self, provider):
         super(AzureInstanceService, self).__init__(provider)
 
-    def create(self, name, image, instance_type, subnet, zone=None,
+    def create(self, name, image, instance_type, subnet=None, zone=None,
                key_pair=None, security_groups=None, user_data=None,
                launch_config=None, **kwargs):
 
         if key_pair:
             key_pair = (self.provider.security.key_pairs.get(key_pair)
                         if isinstance(key_pair, str) else key_pair)
-        # else:
-        #     raise Exception("Keypair required")
+        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)
+        if not subnet:
+            subnet = self.provider.network.subnets.get_or_create_default()
+        else:
+            subnet = (self.provider.network.subnets.get(subnet)
+                      if isinstance(subnet, str) else subnet)
+
         zone_id = zone.id if isinstance(zone, PlacementZone) else zone
 
         subnet_id, zone_id, security_group_ids = \
@@ -358,6 +360,8 @@ class AzureInstanceService(BaseInstanceService):
         else:
             disks = None
 
+        instance_name = "{0}-{1}".format(name, uuid.uuid4().hex[:6])
+
         nic_params = {
                 'location': self._provider.region_name,
                 'ip_configurations': [{
@@ -374,7 +378,7 @@ class AzureInstanceService(BaseInstanceService):
                 'id': security_group_ids[0]
             }
         nic_info = self.provider.azure_client.create_nic(
-            name + '_NIC',
+            instance_name + '_NIC',
             nic_params
         )
 
@@ -382,7 +386,7 @@ class AzureInstanceService(BaseInstanceService):
             'location': zone_id or self._provider.region_name,
             'os_profile': {
                 'admin_username': self.provider.vm_default_user_name,
-                'computer_name': name,
+                'computer_name': instance_name,
                 'linux_configuration': {
                              "disable_password_authentication": True,
                              "ssh": {
@@ -390,7 +394,7 @@ class AzureInstanceService(BaseInstanceService):
                                       "path":
                                       "/home/{}/.ssh/authorized_keys".format(
                                           self.provider.vm_default_user_name),
-                                      "key_data": key  # key_pair._key_pair.Key
+                                      "key_data": key_pair._key_pair.Key
                                      }]
                                    }
                            }
@@ -419,8 +423,6 @@ class AzureInstanceService(BaseInstanceService):
         if key_pair:
             params['tags'].update(Key_Pair=key_pair.name)
 
-        instance_name = "{0}-{1}".format(name, uuid.uuid4().hex[:6])
-
         self.provider.azure_client.create_vm(instance_name, params)
         vm = self._provider.azure_client.get_vm(instance_name)
         return AzureInstance(self.provider, vm)