Ejemplo n.º 1
0
    def Run(self, args):
        """Command execution logic."""
        client = apis.GetClientInstance('storagetransfer', 'v1')
        messages = apis.GetMessagesModule('storagetransfer', 'v1')

        if args.names:
            formatted_agent_pool_names = name_util.add_agent_pool_prefix(
                args.names)
        else:
            formatted_agent_pool_names = None

        filter_dictionary = {
            'agentPoolNames': formatted_agent_pool_names,
        }
        filter_string = json.dumps(filter_dictionary)

        resources_iterator = list_pager.YieldFromList(
            client.projects_agentPools,
            messages.StoragetransferProjectsAgentPoolsListRequest(
                filter=filter_string,
                projectId=properties.VALUES.core.project.Get()),
            batch_size=args.page_size,
            batch_size_attribute='pageSize',
            field='agentPools',
            limit=args.limit,
        )
        list_util.print_transfer_resources_iterator(resources_iterator,
                                                    self.Display, args)
Ejemplo n.º 2
0
    def Run(self, args):
        client = apis.GetClientInstance('storagetransfer', 'v1')
        messages = apis.GetMessagesModule('storagetransfer', 'v1')

        agent_pool_object = messages.AgentPool()
        update_mask_list = []
        if args.bandwidth_limit or args.clear_bandwidth_limit:
            update_mask_list.append('bandwidth_limit')
            if args.bandwidth_limit:
                agent_pool_object.bandwidthLimit = messages.BandwidthLimit(
                    limitMbps=args.bandwidth_limit)
        if args.display_name or args.clear_display_name:
            update_mask_list.append('display_name')
            agent_pool_object.displayName = args.display_name

        if update_mask_list:
            update_mask = ','.join(update_mask_list)
        else:
            update_mask = None

        formatted_agent_pool_name = name_util.add_agent_pool_prefix(args.name)
        return client.projects_agentPools.Patch(
            messages.StoragetransferProjectsAgentPoolsPatchRequest(
                agentPool=agent_pool_object,
                name=formatted_agent_pool_name,
                updateMask=update_mask))
    def Run(self, args):
        client = apis.GetClientInstance('storagetransfer', 'v1')
        messages = apis.GetMessagesModule('storagetransfer', 'v1')
        formatted_agent_pool_name = name_util.add_agent_pool_prefix(args.name)
        agent_pool_id = name_util.remove_agent_pool_prefix(args.name)
        agent_pool_project = name_util.get_agent_pool_project_from_string(
            formatted_agent_pool_name)

        agent_pool_object = messages.AgentPool(displayName=args.display_name,
                                               name=formatted_agent_pool_name)
        if args.bandwidth_limit:
            agent_pool_object.bandwidthLimit = messages.BandwidthLimit(
                limitMbps=args.bandwidth_limit)

        initial_result = client.projects_agentPools.Create(
            messages.StoragetransferProjectsAgentPoolsCreateRequest(
                agentPool=agent_pool_object,
                agentPoolId=agent_pool_id,
                projectId=agent_pool_project))

        if args.no_async:
            final_result = agent_pools_util.block_until_created(
                formatted_agent_pool_name)
        else:
            final_result = initial_result

        return final_result
def api_get(name):
    """Returns agent pool details from API as Apitools object."""
    client = apis.GetClientInstance('storagetransfer', 'v1')
    messages = apis.GetMessagesModule('storagetransfer', 'v1')
    formatted_agent_pool_name = name_util.add_agent_pool_prefix(name)
    return client.projects_agentPools.Get(
        messages.StoragetransferProjectsAgentPoolsGetRequest(
            name=formatted_agent_pool_name))
Ejemplo n.º 5
0
  def Run(self, args):
    client = apis.GetClientInstance('storagetransfer', 'v1')
    messages = apis.GetMessagesModule('storagetransfer', 'v1')

    formatted_agent_pool_name = name_util.add_agent_pool_prefix(args.name)

    client.projects_agentPools.Delete(
        messages.StoragetransferProjectsAgentPoolsDeleteRequest(
            name=formatted_agent_pool_name))
def _create_or_modify_transfer_spec(job, args, messages):
    """Creates or modifies TransferSpec based on args."""
    if not job.transferSpec:
        job.transferSpec = messages.TransferSpec()

    if getattr(args, 'source', None):
        # Clear any existing source to make space for new one.
        job.transferSpec.httpDataSource = None
        job.transferSpec.posixDataSource = None
        job.transferSpec.gcsDataSource = None
        job.transferSpec.awsS3DataSource = None
        job.transferSpec.azureBlobStorageDataSource = None

        try:
            source_url = storage_url.storage_url_from_string(args.source)
        except errors.InvalidUrlError:
            if args.source.startswith(storage_url.ProviderPrefix.HTTP.value):
                job.transferSpec.httpDataSource = messages.HttpData(
                    listUrl=args.source)
                source_url = None
            else:
                raise
        else:
            if source_url.scheme is storage_url.ProviderPrefix.FILE:
                source_url = _prompt_and_add_valid_scheme(source_url)

            if source_url.scheme is storage_url.ProviderPrefix.POSIX:
                job.transferSpec.posixDataSource = messages.PosixFilesystem(
                    rootDirectory=source_url.object_name)
            elif source_url.scheme is storage_url.ProviderPrefix.GCS:
                job.transferSpec.gcsDataSource = messages.GcsData(
                    bucketName=source_url.bucket_name,
                    path=source_url.object_name,
                )
            elif source_url.scheme is storage_url.ProviderPrefix.S3:
                job.transferSpec.awsS3DataSource = messages.AwsS3Data(
                    bucketName=source_url.bucket_name,
                    path=source_url.object_name,
                )
            elif isinstance(source_url, storage_url.AzureUrl):
                job.transferSpec.azureBlobStorageDataSource = (
                    messages.AzureBlobStorageData(
                        container=source_url.bucket_name,
                        path=source_url.object_name,
                        storageAccount=source_url.account,
                    ))

    if getattr(args, 'destination', None):
        # Clear any existing destination to make space for new one.
        job.transferSpec.posixDataSink = None
        job.transferSpec.gcsDataSink = None

        destination_url = storage_url.storage_url_from_string(args.destination)
        if destination_url.scheme is storage_url.ProviderPrefix.FILE:
            destination_url = _prompt_and_add_valid_scheme(destination_url)

        if destination_url.scheme is storage_url.ProviderPrefix.GCS:
            job.transferSpec.gcsDataSink = messages.GcsData(
                bucketName=destination_url.bucket_name,
                path=destination_url.object_name,
            )
        elif destination_url.scheme is storage_url.ProviderPrefix.POSIX:
            job.transferSpec.posixDataSink = messages.PosixFilesystem(
                rootDirectory=destination_url.object_name)

    if getattr(args, 'destination_agent_pool', None):
        job.transferSpec.sinkAgentPoolName = name_util.add_agent_pool_prefix(
            args.destination_agent_pool)
    if getattr(args, 'source_agent_pool', None):
        job.transferSpec.sourceAgentPoolName = name_util.add_agent_pool_prefix(
            args.source_agent_pool)
    if getattr(args, 'intermediate_storage_path', None):
        intermediate_storage_url = storage_url.storage_url_from_string(
            args.intermediate_storage_path)
        job.transferSpec.gcsIntermediateDataLocation = messages.GcsData(
            bucketName=intermediate_storage_url.bucket_name,
            path=intermediate_storage_url.object_name)
    if getattr(args, 'manifest_file', None):
        job.transferSpec.transferManifest = messages.TransferManifest(
            location=args.manifest_file)

    _create_or_modify_creds(job.transferSpec, args, messages)
    _create_or_modify_object_conditions(job.transferSpec, args, messages)
    _create_or_modify_transfer_options(job.transferSpec, args, messages)