Cherrypick stable2.7 44802 (#45332)

* fix blob in non-public azure cloud (#44802)

(cherry picked from commit b58141555d)
This commit is contained in:
Yunge Zhu 2018-09-07 22:12:06 +08:00 committed by Toshio Kuratomi
parent 351bb3dd9a
commit 2fcae8b367
2 changed files with 10 additions and 2 deletions

View file

@ -0,0 +1,3 @@
---
bugfixes:
- fix azure storage blob cannot create blob container in non-public azure cloud environment. (https://github.com/ansible/ansible/issues/35223)

View file

@ -154,6 +154,7 @@ try:
from azure.mgmt.marketplaceordering import MarketplaceOrderingAgreements
from azure.mgmt.trafficmanager import TrafficManagerManagementClient
from azure.storage.cloudstorageaccount import CloudStorageAccount
from azure.storage.blob import PageBlobService, BlockBlobService
from adal.authentication_context import AuthenticationContext
from azure.mgmt.sql import SqlManagementClient
from azure.mgmt.rdbms.postgresql import PostgreSQLManagementClient
@ -533,9 +534,13 @@ class AzureRMModuleBase(object):
try:
self.log('Create blob service')
if storage_blob_type == 'page':
return CloudStorageAccount(storage_account_name, account_keys.keys[0].value).create_page_blob_service()
return PageBlobService(endpoint_suffix=self._cloud_environment.suffixes.storage_endpoint,
account_name=storage_account_name,
account_key=account_keys.keys[0].value)
elif storage_blob_type == 'block':
return CloudStorageAccount(storage_account_name, account_keys.keys[0].value).create_block_blob_service()
return BlockBlobService(endpoint_suffix=self._cloud_environment.suffixes.storage_endpoint,
account_name=storage_account_name,
account_key=account_keys.keys[0].value)
else:
raise Exception("Invalid storage blob type defined.")
except Exception as exc: