def _create_file_and_directory_from_file(file_service, source_file_service, share, source_share, sas, source_file_dir, source_file_name, destination_dir=None, metadata=None, timeout=None, existing_dirs=None): """ Copy a file from one file share to another """ from azure.common import AzureException from azure.cli.command_modules.storage.util import normalize_blob_file_path file_url, source_file_dir, source_file_name = make_encoded_file_url_and_params(source_file_service, source_share, source_file_dir, source_file_name, sas_token=sas) full_path = normalize_blob_file_path(destination_dir, os.path.join(source_file_dir, source_file_name)) file_name = os.path.basename(full_path) dir_name = os.path.dirname(full_path) _make_directory_in_files_share(file_service, share, dir_name, existing_dirs) try: file_service.copy_file(share, dir_name, file_name, file_url, metadata, timeout) return file_service.make_file_url(share, dir_name or None, file_name) except AzureException: error_template = 'Failed to copy file {} from share {} to file share {}. Please check if ' \ 'you have right permission to read source or set a correct sas token.' from knack.util import CLIError raise CLIError(error_template.format(file_name, source_share, share))
def _copy_file_to_blob_container(blob_service, source_file_service, destination_container, destination_path, source_share, source_sas, source_file_dir, source_file_name): from azure.common import AzureException file_url, source_file_dir, source_file_name = \ make_encoded_file_url_and_params(source_file_service, source_share, source_file_dir, source_file_name, source_sas) source_path = os.path.join( source_file_dir, source_file_name) if source_file_dir else source_file_name destination_blob_name = normalize_blob_file_path(destination_path, source_path) try: blob_service.copy_blob(destination_container, destination_blob_name, file_url) return blob_service.make_blob_url(destination_container, destination_blob_name) except AzureException as ex: from knack.util import CLIError error_template = 'Failed to copy file {} to container {}. {}' raise CLIError( error_template.format(source_file_name, destination_container, ex))
def _copy_file_to_blob_container(blob_service, source_file_service, destination_container, source_share, source_sas, source_file_dir, source_file_name): file_url, source_file_dir, source_file_name = \ make_encoded_file_url_and_params(source_file_service, source_share, source_file_dir, source_file_name, source_sas) blob_name = os.path.join(source_file_dir, source_file_name) \ if source_file_dir else source_file_name try: blob_service.copy_blob(destination_container, blob_name=blob_name, copy_source=file_url) return blob_service.make_blob_url(destination_container, blob_name) except AzureException as ex: error_template = 'Failed to copy file {} to container {}. {}' raise CLIError(error_template.format(source_file_name, destination_container, ex))
def _copy_file_to_blob_container(blob_service, source_file_service, destination_container, destination_path, source_share, source_sas, source_file_dir, source_file_name): from azure.common import AzureException file_url, source_file_dir, source_file_name = \ make_encoded_file_url_and_params(source_file_service, source_share, source_file_dir, source_file_name, source_sas) source_path = os.path.join(source_file_dir, source_file_name) if source_file_dir else source_file_name destination_blob_name = normalize_blob_file_path(destination_path, source_path) try: blob_service.copy_blob(destination_container, destination_blob_name, file_url) return blob_service.make_blob_url(destination_container, destination_blob_name) except AzureException as ex: error_template = 'Failed to copy file {} to container {}. {}' raise CLIError(error_template.format(source_file_name, destination_container, ex))
def _copy_file_to_blob_container(blob_service, source_file_service, destination_container, destination_path, source_share, source_sas, source_file_dir, source_file_name): from azure.core.exceptions import HttpResponseError file_url, source_file_dir, source_file_name = \ make_encoded_file_url_and_params(source_file_service, source_share, source_file_dir, source_file_name, source_sas) source_path = os.path.join(source_file_dir, source_file_name) if source_file_dir else source_file_name destination_blob_name = normalize_blob_file_path(destination_path, source_path) try: blob_client = blob_service.get_blob_client(container=destination_container, blob=destination_blob_name) blob_client.start_copy_from_url(source_url=file_url, incremental_copy=False) return blob_client.url except HttpResponseError as ex: error_template = 'Failed to copy file {} to container {}. {}' raise CLIError(error_template.format(source_file_name, destination_container, ex))
def _create_file_and_directory_from_file(file_service, source_file_service, share, source_share, sas, source_file_dir, source_file_name, destination_dir=None, metadata=None, timeout=None, existing_dirs=None): """ Copy a file from one file share to another """ file_url, source_file_dir, source_file_name = \ make_encoded_file_url_and_params(source_file_service, source_share, source_file_dir, source_file_name, sas) full_path = os.path.join(destination_dir, source_file_dir, source_file_name) \ if destination_dir else os.path.join(source_file_dir, source_file_name) file_name = os.path.basename(full_path) dir_name = os.path.dirname(full_path) _make_directory_in_files_share(file_service, share, dir_name, existing_dirs) try: file_service.copy_file(share, dir_name, file_name, file_url, metadata, timeout) return file_service.make_file_url(share, dir_name or None, file_name) except AzureException: error_template = 'Failed to copy file {} from share {} to file share {}. Please check if ' \ 'you have right permission to read source or set a correct sas token.' raise CLIError(error_template.format(file_name, source_share, share))