def handle_noargs(self, **options): self.set_options(**options) if not self.disable: if not ls.AZURE_ACCOUNT_NAME: raise CommandError('AZURE_ACCOUNT_NAME setting is missing') if not ls.AZURE_ACCOUNT_KEY: raise CommandError('AZURE_ACCOUNT_KEY setting is missing') if not self.origins: raise CommandError('Specify at least one origin') if not self.methods: raise CommandError('Specify at least one method') class CorsRule(WindowsAzureData): def __init__(self, origins, methods, maxage): self.allowed_origins = ','.join(origins) self.allowed_methods = ','.join(methods) self.allowed_headers = '' self.exposed_headers = '' self.max_age_in_seconds = maxage class Cors(WindowsAzureData): def __init__(self, rules): self.cors = rules blob_service = BlobService(ls.AZURE_ACCOUNT_NAME, ls.AZURE_ACCOUNT_KEY, ls.AZURE_DEFAULT_PROTOCOL) cors_rule = CorsRule(self.origins, self.methods, self.maxage) service_properties = blob_service.get_blob_service_properties() self.stdout.write('--FOUND PROPERTIES--') self.stdout.write(_convert_class_to_xml(service_properties)) cors_properties = StorageServiceProperties() if not self.disable: cors_properties.cors = Cors([cors_rule]) else: cors_properties.cors = Cors([]) cors_properties.metrics = None cors_properties.logging = None self.stdout.write('') self.stdout.write('--NEW PROPERTIES--') self.stdout.write(_convert_class_to_xml(cors_properties)) # As of the latest version, one can only send # a part of the properties and the rest will stay intact # http://msdn.microsoft.com/en-us/library/azure/hh452235.aspx self.set_properties(blob_service, cors_properties)
def set_queue_service_properties(self, storage_service_properties, timeout=None): ''' Sets the properties of a storage account's Queue service, including Windows Azure Storage Analytics. storage_service_properties: StorageServiceProperties object. timeout: Optional. The timeout parameter is expressed in seconds. ''' _validate_not_none('storage_service_properties', storage_service_properties) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/?restype=service&comp=properties' request.query = [('timeout', _int_or_none(timeout))] request.body = _get_request_body( _convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage( request, self.use_local_storage) request.headers = _update_storage_queue_header(request, self.account_name, self.account_key) response = self._perform_request(request)
def set_properties(self, blob_service, storage_service_properties): """ Override API methods to change the API version and send the right headers """ request = HTTPRequest() request.method = 'PUT' request.host = blob_service._get_host() request.path = '/?restype=service&comp=properties' request.query = [('timeout', _int_or_none(None))] request.body = _get_request_body( _convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage( request, blob_service.use_local_storage) request.headers = self.get_request_headers( request, blob_service.account_name, blob_service.account_key) try: if blob_service._batchclient is not None: return blob_service._batchclient.insert_request_to_batch(request) else: resp = blob_service._filter(request) if sys.version_info >= (3,) and isinstance(resp, bytes) and \ 'UTF-8': resp = resp.decode('UTF-8') except: raise return resp
def set_blob_service_properties(self, storage_service_properties, timeout=None): ''' Sets the properties of a storage account's Blob service, including Windows Azure Storage Analytics. You can also use this operation to set the default request version for all incoming requests that do not have a version specified. storage_service_properties: a StorageServiceProperties object. timeout: Optional. The timeout parameter is expressed in seconds. For example, the following value sets a timeout of 30 seconds for the request: timeout=30. ''' _validate_not_none('storage_service_properties', storage_service_properties) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/?restype=service&comp=properties' request.query = [('timeout', _int_or_none(timeout))] request.body = _get_request_body( _convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage( request, self.use_local_storage) request.headers = _update_storage_blob_header(request, self.account_name, self.account_key) response = self._perform_request(request)
def set_container_acl(self, container_name, signed_identifiers=None, x_ms_blob_public_access=None): ''' Sets the permissions for the specified container. x_ms_blob_public_access: Optional. Possible values include 'container' and 'blob'. signed_identifiers: SignedIdentifers instance ''' _validate_not_none('container_name', container_name) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/' + str( container_name) + '?restype=container&comp=acl' request.headers = [('x-ms-blob-public-access', _str_or_none(x_ms_blob_public_access))] request.body = _get_request_body( _convert_class_to_xml(signed_identifiers)) request.path, request.query = _update_request_uri_query_local_storage( request, self.use_local_storage) request.headers = _update_storage_blob_header(request, self.account_name, self.account_key) response = self._perform_request(request)
def set_queue_service_properties(self, storage_service_properties, timeout=None): ''' Sets the properties of a storage account's Queue service, including Windows Azure Storage Analytics. storage_service_properties: StorageServiceProperties object. timeout: Optional. The timeout parameter is expressed in seconds. ''' _validate_not_none('storage_service_properties', storage_service_properties) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/?restype=service&comp=properties' request.query = [('timeout', _int_or_none(timeout))] request.body = _get_request_body( _convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage( request, self.use_local_storage) request.headers = _update_storage_queue_header( request, self.authentication) self._perform_request(request)
def set_properties(self, blob_service, storage_service_properties): """ Override API methods to change the API version and send the right headers """ request = HTTPRequest() request.method = 'PUT' request.host = blob_service._get_host() request.path = '/?restype=service&comp=properties' request.query = [('timeout', _int_or_none(None))] request.body = _get_request_body( _convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage( request, blob_service.use_local_storage) request.headers = self.get_request_headers(request, blob_service.account_name, blob_service.account_key) try: if blob_service._batchclient is not None: return blob_service._batchclient.insert_request_to_batch( request) else: resp = blob_service._filter(request) if sys.version_info >= (3,) and isinstance(resp, bytes) and \ 'UTF-8': resp = resp.decode('UTF-8') except: raise return resp
def set_table_service_properties(self, storage_service_properties): ''' Sets the properties of a storage account's Table Service, including Windows Azure Storage Analytics. storage_service_properties: a StorageServiceProperties object. ''' _validate_not_none('storage_service_properties', storage_service_properties) request = HTTPRequest() request.method = 'PUT' request.host = _get_table_host(self.account_name, self.use_local_storage) request.path = '/?restype=service&comp=properties' request.body = _get_request_body(_convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage(request, self.use_local_storage) request.headers = _update_storage_table_header(request) response = self._perform_request(request) return _parse_response_for_dict(response)
def set_table_service_properties(self, storage_service_properties): ''' Sets the properties of a storage account's Table Service, including Windows Azure Storage Analytics. storage_service_properties: a StorageServiceProperties object. ''' _validate_not_none('storage_service_properties', storage_service_properties) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/?restype=service&comp=properties' request.body = _get_request_body(_convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage(request, self.use_local_storage) request.headers = _update_storage_table_header(request) response = self._perform_request(request) return _parse_response_for_dict(response)
def set_container_acl(self, container_name, signed_identifiers=None, x_ms_blob_public_access=None): ''' Sets the permissions for the specified container. x_ms_blob_public_access: Optional. Possible values include 'container' and 'blob'. signed_identifiers: SignedIdentifers instance ''' _validate_not_none('container_name', container_name) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/' + _str(container_name) + '?restype=container&comp=acl' request.headers = [('x-ms-blob-public-access', _str_or_none(x_ms_blob_public_access))] request.body = _get_request_body(_convert_class_to_xml(signed_identifiers)) request.path, request.query = _update_request_uri_query_local_storage(request, self.use_local_storage) request.headers = _update_storage_blob_header(request, self.account_name, self.account_key) response = self._perform_request(request)
def set_queue_service_properties(self, storage_service_properties, timeout=None): """ Sets the properties of a storage account's Queue service, including Windows Azure Storage Analytics. storage_service_properties: a StorageServiceProperties object. timeout: Optional. The timeout parameter is expressed in seconds. """ _validate_not_none("storage_service_properties", storage_service_properties) request = HTTPRequest() request.method = "PUT" request.host = self._get_host() request.path = "/?restype=service&comp=properties" request.query = [("timeout", _int_or_none(timeout))] request.body = _get_request_body(_convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage(request, self.use_local_storage) request.headers = _update_storage_queue_header(request, self.account_name, self.account_key) response = self._perform_request(request)
def set_blob_service_properties(self, storage_service_properties, timeout=None): ''' Sets the properties of a storage account's Blob service, including Windows Azure Storage Analytics. You can also use this operation to set the default request version for all incoming requests that do not have a version specified. storage_service_properties: a StorageServiceProperties object. timeout: Optional. The timeout parameter is expressed in seconds. For example, the following value sets a timeout of 30 seconds for the request: timeout=30. ''' _validate_not_none('storage_service_properties', storage_service_properties) request = HTTPRequest() request.method = 'PUT' request.host = self._get_host() request.path = '/?restype=service&comp=properties' request.query = [('timeout', _int_or_none(timeout))] request.body = _get_request_body(_convert_class_to_xml(storage_service_properties)) request.path, request.query = _update_request_uri_query_local_storage(request, self.use_local_storage) request.headers = _update_storage_blob_header(request, self.account_name, self.account_key) response = self._perform_request(request)