Преглед изворни кода

Added Resource Group Get & Create Method if resource group does not exist in Azure in Azure Client and Provider
Added Resource Group Get & Create Method in Mock Azure Client
Removed get & list security group service resource group parameter as it is available in azure client

ankit.bhambhani пре 9 година
родитељ
комит
982aafd4f3

+ 6 - 0
cloudbridge/cloud/providers/azure/azure_client.py

@@ -61,6 +61,12 @@ class AzureClient(object):
     def network_management_client(self):
         return self._network_management_client
 
+    def get_resource_group(self, name):
+        return self.resource_client.resource_groups.get(name)
+
+    def create_resource_group(self, name, parameters):
+        return self.resource_client.resource_groups.create_or_update(name, parameters)
+
     def list_locations(self):
         return self.subscription_client.subscriptions.list_locations(self.subscription_id)
 

+ 6 - 0
cloudbridge/cloud/providers/azure/mock_azure_client.py

@@ -18,3 +18,9 @@ class MockAzureClient:
 
     def list_security_group(self, resource_group_name):
         return self.security_groups
+
+    def get_resource_group(self, resource_group_name):
+        return 'Cloudbridge'
+
+    def create_resource_group(self, resource_group_name, params):
+        return resource_group_name

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

@@ -49,8 +49,12 @@ class AzureCloudProvider(BaseCloudProvider):
                          'azure_storage_account_name' : self.storage_account_name
                          }
 
-        # TODO: implement code to validate if the resource group is available,if not create
         self._azure_client = azureclient or AzureClient(self.allconfig)
+        try:
+            rg = self._azure_client.get_resource_group(self.resource_group)
+        except:
+            resource_group_params = {'location': self.region_name}
+            self._azure_client.create_resource_group(self.resource_group, resource_group_params)
 
         self._security = AzureSecurityService(self)
         self._object_store = AzureObjectStoreService(self)

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

@@ -38,13 +38,13 @@ class AzureSecurityGroupService(BaseSecurityGroupService):
         super(AzureSecurityGroupService, self).__init__(provider)
 
     def get(self, sg_id):
-        for item in self.provider.azure_client.list_security_group(self.provider.resource_group):
+        for item in self.provider.azure_client.list_security_group():
             if item.id == sg_id:
                 return AzureSecurityGroup(self.provider, item)
         return None
 
     def list(self, limit=None, marker=None):
-        nsglist = self.provider.azure_client.list_security_group(self.provider.resource_group)
+        nsglist = self.provider.azure_client.list_security_group()
         network_security_group = [AzureSecurityGroup(self.provider, sg)
                                   for sg in nsglist]
         return ClientPagedResultList(self.provider, network_security_group, limit, marker)