diff --git a/lib/ansible/module_utils/azure_rm_common.py b/lib/ansible/module_utils/azure_rm_common.py index 368277f6228..8f281f5df9f 100644 --- a/lib/ansible/module_utils/azure_rm_common.py +++ b/lib/ansible/module_utils/azure_rm_common.py @@ -548,7 +548,7 @@ class AzureRMModuleBase(object): self.fail("Error {0} has a provisioning state of {1}. Expecting state to be {2}.".format( azure_object.name, azure_object.provisioning_state, AZURE_SUCCESS_STATE)) - def get_blob_client(self, resource_group_name, storage_account_name): + def get_blob_client(self, resource_group_name, storage_account_name, storage_blob_type='block'): keys = dict() try: # Get keys from the storage account @@ -559,7 +559,12 @@ class AzureRMModuleBase(object): try: self.log('Create blob service') - return CloudStorageAccount(storage_account_name, account_keys.keys[0].value).create_block_blob_service() + if storage_blob_type == 'page': + return CloudStorageAccount(storage_account_name, account_keys.keys[0].value).create_page_blob_service() + elif storage_blob_type == 'block': + return CloudStorageAccount(storage_account_name, account_keys.keys[0].value).create_block_blob_service() + else: + raise Exception("Invalid storage blob type defined.") except Exception as exc: self.fail("Error creating blob service client for storage account {0} - {1}".format(storage_account_name, str(exc))) diff --git a/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py b/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py index c92d9cc7088..70feaee27c1 100644 --- a/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py +++ b/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py @@ -37,6 +37,15 @@ options: default: null aliases: - blob_name + blob_type: + description: + - Type of Blob Object. + required: false + default: block + choices: + - block + - page + version_added: "2.5" container: description: - Name of a blob container within the storage account. @@ -212,6 +221,7 @@ class AzureRMStorageBlob(AzureRMModuleBase): self.module_arg_spec = dict( storage_account_name=dict(required=True, type='str', aliases=['account_name', 'storage_account']), blob=dict(type='str', aliases=['blob_name']), + blob_type=dict(type='str', default='block', choices=['block','page']), container=dict(required=True, type='str', aliases=['container_name']), dest=dict(type='str'), force=dict(type='bool', default=False), @@ -234,6 +244,7 @@ class AzureRMStorageBlob(AzureRMModuleBase): self.storage_account_name = None self.blob = None self.blob_obj = None + self.blob_type = None self.container = None self.container_obj = None self.dest = None @@ -264,7 +275,7 @@ class AzureRMStorageBlob(AzureRMModuleBase): # add file path validation - self.blob_client = self.get_blob_client(self.resource_group, self.storage_account_name) + self.blob_client = self.get_blob_client(self.resource_group, self.storage_account_name, self.blob_type) self.container_obj = self.get_container() if self.blob is not None: