def Run(self, args): dataproc = dp.Dataproc(self.ReleaseTrack()) template = util.ParseWorkflowTemplates(args.template, dataproc) workflow_template = dataproc.GetRegionsWorkflowTemplate( template, args.version) cluster_name = template.workflowTemplatesId compute_resources = compute_helpers.GetComputeResources( self.ReleaseTrack(), cluster_name) use_accelerators = self.ReleaseTrack() == base.ReleaseTrack.BETA use_auto_delete_ttl = self.ReleaseTrack() == base.ReleaseTrack.BETA cluster_config = clusters.GetClusterConfig(args, dataproc, template.projectsId, compute_resources, use_accelerators, use_auto_delete_ttl) labels = labels_util.UpdateLabels( None, dataproc.messages.ManagedCluster.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None) managed_cluster = dataproc.messages.ManagedCluster( clusterName=cluster_name, config=cluster_config, labels=labels) workflow_template.placement = dataproc.messages.WorkflowTemplatePlacement( managedCluster=managed_cluster) response = dataproc.client.projects_regions_workflowTemplates.Update( workflow_template) return response
def Run(self, args): client = cloudkms_base.GetClientInstance() messages = cloudkms_base.GetMessagesModule() crypto_key_ref = flags.ParseCryptoKeyName(args) parent_ref = flags.ParseParentFromResource(crypto_key_ref) req = messages.CloudkmsProjectsLocationsKeyRingsCryptoKeysCreateRequest( parent=parent_ref.RelativeName(), cryptoKeyId=crypto_key_ref.Name(), cryptoKey=messages.CryptoKey( # TODO(b/35914817): Find a better way to get the enum value by name. purpose=getattr(messages.CryptoKey.PurposeValueValuesEnum, PURPOSE_MAP[args.purpose]), labels=labels_util.UpdateLabels( None, messages.CryptoKey.LabelsValue, update_labels=labels_util.GetUpdateLabelsDictFromArgs( args))), ) flags.SetNextRotationTime(args, req.cryptoKey) flags.SetRotationPeriod(args, req.cryptoKey) return client.projects_locations_keyRings_cryptoKeys.Create(req)
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages image_ref = self.DISK_IMAGE_ARG.ResolveAsResource( args, holder.resources, scope_lister=flags.GetDefaultScopeLister(holder.client)) add_labels = labels_util.GetUpdateLabelsDictFromArgs(args) image = client.images.Get( messages.ComputeImagesGetRequest(**image_ref.AsDict())) replacement = labels_util.Diff(additions=add_labels).Apply( messages.GlobalSetLabelsRequest.LabelsValue, image.labels) if not replacement: return image request = messages.ComputeImagesSetLabelsRequest( project=image_ref.project, resource=image_ref.image, globalSetLabelsRequest=messages.GlobalSetLabelsRequest( labelFingerprint=image.labelFingerprint, labels=replacement)) operation = client.images.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.globalOperations') operation_poller = poller.Poller(client.images) return waiter.WaitFor( operation_poller, operation_ref, 'Updating labels of image [{0}]'.format(image_ref.Name()))
def Run(self, args): project_ref = command_lib_util.ParseProject(args.id) try: create_op = projects_api.Create( project_ref, display_name=args.name, update_labels=labels_util.GetUpdateLabelsDictFromArgs(args)) except apitools_exceptions.HttpError as error: if error.status_code == httplib.CONFLICT: msg = ('Project creation failed. The project ID you specified is ' 'already in use by another project. Please try an alternative ' 'ID.') unused_type, unused_value, traceback = sys.exc_info() raise exceptions.HttpException, msg, traceback raise log.CreatedResource(project_ref, async=True) create_op = operations.WaitForOperation(create_op) # Enable cloudapis.googleapis.com if args.enable_cloud_apis: log.debug('Enabling cloudapis.googleapis.com') services_client = apis.GetClientInstance('servicemanagement', 'v1') enable_operation = services_enable_api.EnableServiceApiCall( project_ref.Name(), 'cloudapis.googleapis.com') services_util.WaitForOperation(enable_operation.name, services_client) # TODO(user): Retry in case it failed? return operations.ExtractOperationResponse( create_op, apis.GetMessagesModule('cloudresourcemanager', 'v1').Project)
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace. All the arguments that were provided to this command invocation. Returns: A serialized object (dict) describing the results of the operation. Raises: An HttpException if there was a problem calling the API topics.Patch command. """ client = topics.TopicsClient() topic_ref = util.ParseTopic(args.topic) update_labels = labels_util.GetUpdateLabelsDictFromArgs(args) remove_labels = labels_util.GetRemoveLabelsListFromArgs(args) if update_labels or remove_labels: original_topic = client.Get(topic_ref) labels = labels_util.UpdateLabels( original_topic.labels, client.messages.Topic.LabelsValue, update_labels=update_labels, remove_labels=remove_labels) else: labels = None result = client.Patch(topic_ref, labels=labels) log.UpdatedResource(topic_ref.RelativeName(), kind='topic') return result
def ConfigureJob(self, messages, job, args): """Add type-specific job configuration to job message.""" # Parse labels (if present) labels = labels_util.UpdateLabels( None, messages.Job.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None) job.labels = labels
def _SetDeploymentLabels(self, args, deployment): label_dict = labels_util.GetUpdateLabelsDictFromArgs(args) if label_dict: deployment.labels = [ self.messages.DeploymentLabelEntry(key=k, value=v) for k, v in sorted(label_dict.iteritems()) ]
def ConfigureCluster(messages, args, cluster): """Performs any additional configuration of the cluster.""" labels = labels_util.UpdateLabels( None, messages.Cluster.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None) cluster.labels = labels
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages disk_ref = self.DISK_ARG.ResolveAsResource( args, holder.resources, scope_lister=flags.GetDefaultScopeLister(holder.client)) update_labels = labels_util.GetUpdateLabelsDictFromArgs(args) remove_labels = labels_util.GetRemoveLabelsListFromArgs(args) if update_labels is None and remove_labels is None: raise calliope_exceptions.RequiredArgumentException( 'LABELS', 'At least one of --update-labels or ' '--remove-labels must be specified.') if disk_ref.Collection() == 'compute.disks': service = client.disks request_type = messages.ComputeDisksGetRequest elif disk_ref.Collection() == 'compute.regionDisks': service = client.regionDisks request_type = messages.ComputeRegionDisksGetRequest else: raise ValueError('Unexpected resource argument of {}' .format(disk_ref.Collection())) disk = service.Get(request_type(**disk_ref.AsDict())) if disk_ref.Collection() == 'compute.disks': replacement = labels_util.UpdateLabels( disk.labels, messages.ZoneSetLabelsRequest.LabelsValue, update_labels=update_labels, remove_labels=remove_labels) request = messages.ComputeDisksSetLabelsRequest( project=disk_ref.project, resource=disk_ref.disk, zone=disk_ref.zone, zoneSetLabelsRequest=messages.ZoneSetLabelsRequest( labelFingerprint=disk.labelFingerprint, labels=replacement)) else: replacement = labels_util.UpdateLabels( disk.labels, messages.RegionSetLabelsRequest.LabelsValue, update_labels=update_labels, remove_labels=remove_labels) request = messages.ComputeRegionDisksSetLabelsRequest( project=disk_ref.project, resource=disk_ref.disk, region=disk_ref.region, regionSetLabelsRequest=messages.RegionSetLabelsRequest( labelFingerprint=disk.labelFingerprint, labels=replacement)) if not replacement: return disk return service.SetLabels(request)
def Run(self, args): """Run 'types create'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Raises: HttpException: An http error response was received while executing api request. """ messages = dm_beta_base.GetMessages() composite_type_ref = composite_types.GetReference(args.name) update_labels_dict = labels_util.GetUpdateLabelsDictFromArgs(args) labels = dm_labels.UpdateLabels([], messages.CompositeTypeLabelEntry, update_labels=update_labels_dict) template_contents = composite_types.TemplateContentsFor(args.template) composite_type = messages.CompositeType( name=args.name, description=args.description, status=args.status, templateContents=template_contents, labels=labels) request = messages.DeploymentmanagerCompositeTypesInsertRequest( project=composite_type_ref.project, compositeType=composite_type) dm_write.Execute(request, args.async, dm_beta_base.GetClient().compositeTypes.Insert, LogResource)
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages snapshot_ref = SnapshotsAddLabels.SnapshotArg.ResolveAsResource( args, holder.resources) add_labels = labels_util.GetUpdateLabelsDictFromArgs(args) snapshot = client.snapshots.Get( messages.ComputeSnapshotsGetRequest(**snapshot_ref.AsDict())) labels_update = labels_util.Diff(additions=add_labels).Apply( messages.GlobalSetLabelsRequest.LabelsValue, snapshot.labels) if not labels_update.needs_update: return snapshot request = messages.ComputeSnapshotsSetLabelsRequest( project=snapshot_ref.project, resource=snapshot_ref.snapshot, globalSetLabelsRequest=messages.GlobalSetLabelsRequest( labelFingerprint=snapshot.labelFingerprint, labels=labels_update.labels)) operation = client.snapshots.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.globalOperations') operation_poller = poller.Poller(client.snapshots) return waiter.WaitFor( operation_poller, operation_ref, 'Updating labels of snapshot [{0}]'.format(snapshot_ref.Name()))
def Run(self, args): """Run 'type-providers create'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Raises: HttpException: An http error response was received while executing api request. """ messages = dm_beta_base.GetMessages() type_provider_ref = dm_beta_base.GetResources().Parse( args.provider_name, collection='deploymentmanager.typeProviders') update_labels_dict = labels_util.GetUpdateLabelsDictFromArgs(args) labels = dm_labels.UpdateLabels([], messages.TypeProviderLabelEntry, update_labels=update_labels_dict) type_provider = messages.TypeProvider( name=type_provider_ref.typeProvider, description=args.description, descriptorUrl=args.descriptor_url, labels=labels) type_providers.AddOptions(args.api_options_file, type_provider) request = messages.DeploymentmanagerTypeProvidersInsertRequest( project=type_provider_ref.project, typeProvider=type_provider) dm_write.Execute(request, args. async, dm_beta_base.GetClient().typeProviders.Insert, LogResource)
def Run(self, args): """Run 'type-providers create'. Args: args: argparse.Namespace, The arguments that this command was invoked with. Raises: HttpException: An http error response was received while executing api request. """ type_provider_ref = self.resources.Parse( args.provider_name, params={'project': properties.VALUES.core.project.GetOrFail}, collection='deploymentmanager.typeProviders') update_labels_dict = labels_util.GetUpdateLabelsDictFromArgs(args) labels = dm_labels.UpdateLabels([], self.messages.TypeProviderLabelEntry, update_labels=update_labels_dict) type_provider = self.messages.TypeProvider( name=type_provider_ref.typeProvider, description=args.description, descriptorUrl=args.descriptor_url, labels=labels) type_providers.AddOptions(self.messages, args.api_options_file, type_provider) request = self.messages.DeploymentmanagerTypeProvidersInsertRequest( project=type_provider_ref.project, typeProvider=type_provider) dm_write.Execute(self.client, self.messages, self.resources, request, args. async, self.client.typeProviders.Insert, LogResource)
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages forwarding_rule_ref = self.FORWARDING_RULE_ARG.ResolveAsResource( args, holder.resources, scope_lister=compute_flags.GetDefaultScopeLister(holder.client)) update_labels = labels_util.GetUpdateLabelsDictFromArgs(args) remove_labels = labels_util.GetRemoveLabelsListFromArgs(args) if update_labels is None and remove_labels is None: raise calliope_exceptions.RequiredArgumentException( 'LABELS', 'At least one of --update-labels or ' '--remove-labels must be specified.') if forwarding_rule_ref.Collection() == 'compute.globalForwardingRules': forwarding_rule = client.globalForwardingRules.Get( messages.ComputeGlobalForwardingRulesGetRequest( **forwarding_rule_ref.AsDict())) labels_value = messages.GlobalSetLabelsRequest.LabelsValue else: forwarding_rule = client.forwardingRules.Get( messages.ComputeForwardingRulesGetRequest( **forwarding_rule_ref.AsDict())) labels_value = messages.RegionSetLabelsRequest.LabelsValue replacement = labels_util.UpdateLabels( forwarding_rule.labels, labels_value, update_labels=update_labels, remove_labels=remove_labels) if not replacement: return forwarding_rule if forwarding_rule_ref.Collection() == 'compute.globalForwardingRules': request = self._CreateGlobalSetLabelsRequest( messages, forwarding_rule_ref, forwarding_rule, replacement) operation = client.globalForwardingRules.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.globalOperations') operation_poller = poller.Poller(client.globalForwardingRules) else: request = self._CreateRegionalSetLabelsRequest( messages, forwarding_rule_ref, forwarding_rule, replacement) operation = client.forwardingRules.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.regionOperations') operation_poller = poller.Poller(client.forwardingRules) return waiter.WaitFor(operation_poller, operation_ref, 'Updating labels of forwarding rule [{0}]'.format( forwarding_rule_ref.Name()))
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages disk_ref = self.DISK_ARG.ResolveAsResource( args, holder.resources, scope_lister=flags.GetDefaultScopeLister(holder.client)) remove_labels = labels_util.GetUpdateLabelsDictFromArgs(args) if disk_ref.Collection() == 'compute.disks': service = client.disks request_type = messages.ComputeDisksGetRequest elif disk_ref.Collection() == 'compute.regionDisks': service = client.regionDisks request_type = messages.ComputeRegionDisksGetRequest else: raise ValueError('Unexpected resource argument of {}' .format(disk_ref.Collection())) disk = service.Get(request_type(**disk_ref.AsDict())) if args.all: # removing all existing labels from the disk. remove_labels = {} if disk.labels: for label in disk.labels.additionalProperties: remove_labels[label.key] = label.value if disk_ref.Collection() == 'compute.disks': replacement = labels_util.UpdateLabels( disk.labels, messages.ZoneSetLabelsRequest.LabelsValue, remove_labels=remove_labels) request = messages.ComputeDisksSetLabelsRequest( project=disk_ref.project, resource=disk_ref.disk, zone=disk_ref.zone, zoneSetLabelsRequest=messages.ZoneSetLabelsRequest( labelFingerprint=disk.labelFingerprint, labels=replacement)) else: replacement = labels_util.UpdateLabels( disk.labels, messages.RegionSetLabelsRequest.LabelsValue, remove_labels=remove_labels) request = messages.ComputeRegionDisksSetLabelsRequest( project=disk_ref.project, resource=disk_ref.disk, region=disk_ref.region, regionSetLabelsRequest=messages.RegionSetLabelsRequest( labelFingerprint=disk.labelFingerprint, labels=replacement)) if not replacement: return disk return service.SetLabels(request)
def ConfigureCluster(messages, args, cluster): labels = labels_util.UpdateLabels( None, messages.Cluster.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None) cluster.labels = labels
def ConfigureJob(self, job, args): messages = self.context['dataproc_messages'] # Parse labels (if present) labels = labels_util.UpdateLabels( None, messages.Job.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None) job.labels = labels
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages disk_ref = self.DISK_ARG.ResolveAsResource( args, holder.resources, scope_lister=flags.GetDefaultScopeLister(holder.client)) add_labels = labels_util.GetUpdateLabelsDictFromArgs(args) if disk_ref.Collection() == 'compute.disks': service = client.disks request_type = messages.ComputeDisksGetRequest elif disk_ref.Collection() == 'compute.regionDisks': service = client.regionDisks request_type = messages.ComputeRegionDisksGetRequest else: raise ValueError('Unexpected resource argument of {}'.format( disk_ref.Collection())) disk = service.Get(request_type(**disk_ref.AsDict())) if disk_ref.Collection() == 'compute.disks': operation_collection = 'compute.zoneOperations' replacement = labels_util.Diff(additions=add_labels).Apply( messages.ZoneSetLabelsRequest.LabelsValue, disk.labels) request = messages.ComputeDisksSetLabelsRequest( project=disk_ref.project, resource=disk_ref.disk, zone=disk_ref.zone, zoneSetLabelsRequest=messages.ZoneSetLabelsRequest( labelFingerprint=disk.labelFingerprint, labels=replacement)) else: operation_collection = 'compute.regionOperations' replacement = labels_util.Diff(additions=add_labels).Apply( messages.RegionSetLabelsRequest.LabelsValue, disk.labels) request = messages.ComputeRegionDisksSetLabelsRequest( project=disk_ref.project, resource=disk_ref.disk, region=disk_ref.region, regionSetLabelsRequest=messages.RegionSetLabelsRequest( labelFingerprint=disk.labelFingerprint, labels=replacement)) if not replacement: return disk operation = service.SetLabels(request) operation_ref = holder.resources.Parse(operation.selfLink, collection=operation_collection) operation_poller = poller.Poller(service) return waiter.WaitFor( operation_poller, operation_ref, 'Updating labels of disk [{0}]'.format(disk_ref.Name()))
def Run(self, args): """This is what gets called when the user runs this command. Args: args: an argparse namespace. All the arguments that were provided to this command invocation. Yields: A serialized object (dict) describing the results of the operation. This description fits the Resource described in the ResourceRegistry under 'pubsub.projects.subscriptions'. Raises: util.RequestFailedError: if any of the requests to the API failed. """ client = subscriptions.SubscriptionsClient() topic_ref = util.ParseTopic(args.topic, args.topic_project) push_config = util.ParsePushConfig(args.push_endpoint) retain_acked_messages = getattr(args, 'retain_acked_messages', None) retention_duration = getattr(args, 'message_retention_duration', None) if retention_duration: retention_duration = util.FormatDuration(retention_duration) labels = labels_util.UpdateLabels( None, client.messages.Subscription.LabelsValue, update_labels=labels_util.GetUpdateLabelsDictFromArgs(args)) failed = [] for subscription_name in args.subscription: subscription_ref = util.ParseSubscription(subscription_name) try: result = client.Create(subscription_ref, topic_ref, args.ack_deadline, push_config, retain_acked_messages, retention_duration, labels=labels) except api_ex.HttpError as error: exc = exceptions.HttpException(error) log.CreatedResource(subscription_ref.RelativeName(), kind='subscription', failed=exc.payload.status_message) failed.append(subscription_name) continue result = util.SubscriptionDisplayDict(result) log.CreatedResource(subscription_ref.RelativeName(), kind='subscription') yield result if failed: raise util.RequestsFailedError(failed, 'create')
def _SetMetadata(self, args, deployment): if args.description: deployment.description = args.description label_dict = labels_util.GetUpdateLabelsDictFromArgs(args) if label_dict: deployment.labels = [ self.messages.DeploymentLabelEntry(key=k, value=v) for k, v in sorted(label_dict.iteritems()) ]
def Run(self, args): project_ref = command_lib_util.ParseProject(args.id) result = projects_api.Create( project_ref, args.name, args.enable_cloud_apis, update_labels=labels_util.GetUpdateLabelsDictFromArgs(args)) log.CreatedResource(project_ref) return result
def _SetMetadata(self, args, deployment): label_dict = labels_util.GetUpdateLabelsDictFromArgs(args) label_entry = [] if label_dict: label_entry = [ dm_base.GetMessages().DeploymentLabelEntry(key=k, value=v) for k, v in sorted(label_dict.iteritems()) ] deployment.labels = label_entry super(CreateALPHA, self)._SetMetadata(args, deployment)
def Run(self, args): flags.CheckParentFlags(args, parent_required=False) project_id = args.id if not project_id and args.name: candidate = command_lib_util.IdFromName(args.name) if candidate and console_io.PromptContinue( 'No project id provided.', 'Use [{}] as project id'.format(candidate), throw_if_unattended=True): project_id = candidate if not project_id: raise exceptions.RequiredArgumentException( 'PROJECT_ID', 'an id must be provided for the new project') project_ref = command_lib_util.ParseProject(project_id) try: create_op = projects_api.Create( project_ref, display_name=args.name, parent=projects_api.ParentNameToResourceId( flags.GetParentFromFlags(args)), update_labels=labels_util.GetUpdateLabelsDictFromArgs(args)) except apitools_exceptions.HttpError as error: if error.status_code == httplib.CONFLICT: msg = ( 'Project creation failed. The project ID you specified is ' 'already in use by another project. Please try an alternative ' 'ID.') unused_type, unused_value, traceback = sys.exc_info() raise exceptions.HttpException, msg, traceback raise log.CreatedResource(project_ref, async=True) create_op = operations.WaitForOperation(create_op) # Enable cloudapis.googleapis.com if args.enable_cloud_apis: log.debug('Enabling cloudapis.googleapis.com') services_client = apis.GetClientInstance('servicemanagement', 'v1') enable_operation = services_enable_api.EnableServiceApiCall( project_ref.Name(), 'cloudapis.googleapis.com') enable_operation_ref = resources.REGISTRY.Parse( enable_operation.name, collection='servicemanagement.operations') services_util.WaitForOperation(enable_operation_ref, services_client) # TODO(user): Retry in case it failed? if args.set_as_default: project_property = properties.FromString('core/project') properties.PersistProperty(project_property, args.id) log.status.Print( 'Updated property [core/project] to [{0}].'.format(args.id)) return operations.ExtractOperationResponse( create_op, apis.GetMessagesModule('cloudresourcemanager', 'v1').Project)
def ConfigureJob(self, job, args): messages = self.context['dataproc_messages'] # Configure Restartable job. if args.max_failures_per_hour: scheduling = messages.JobScheduling( maxFailuresPerHour=args.max_failures_per_hour) job.scheduling = scheduling # Parse labels (if present) labels = labels_util.UpdateLabels( None, messages.Job.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None) job.labels = labels
def Run(self, args): update_labels = labels_util.GetUpdateLabelsDictFromArgs(args) remove_labels = labels_util.GetRemoveLabelsListFromArgs(args) if args.name is None and update_labels is None and remove_labels is None: raise ArgumentError('At least one of --name, --update-labels or ' '--remove-labels must be specified.') project_ref = command_lib_util.ParseProject(args.id) result = projects_api.Update(project_ref, name=args.name, update_labels=update_labels, remove_labels=remove_labels) log.UpdatedResource(project_ref) return result
def Run(self, args): """Issues API requests to update a Target VPN Gateway. Args: args: argparse.Namespace, The arguments received by this command. Returns: [protorpc.messages.Message], A list of responses returned by the compute API. """ holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages target_vpn_gateway_ref = self.TARGET_VPN_GATEWAY_ARG.ResolveAsResource( args, holder.resources, scope_lister=compute_flags.GetDefaultScopeLister(holder.client)) update_labels = labels_util.GetUpdateLabelsDictFromArgs(args) remove_labels = labels_util.GetRemoveLabelsListFromArgs(args) if update_labels is None and remove_labels is None: raise calliope_exceptions.RequiredArgumentException( 'LABELS', 'At least one of --update-labels or ' '--remove-labels must be specified.') target_vpn_gateway = client.targetVpnGateways.Get( messages.ComputeTargetVpnGatewaysGetRequest( **target_vpn_gateway_ref.AsDict())) labels_value = messages.RegionSetLabelsRequest.LabelsValue replacement = labels_util.UpdateLabels( target_vpn_gateway.labels, labels_value, update_labels=update_labels, remove_labels=remove_labels) if not replacement: return target_vpn_gateway request = self._CreateRegionalSetLabelsRequest( messages, target_vpn_gateway_ref, target_vpn_gateway, replacement) operation = client.targetVpnGateways.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.regionOperations') operation_poller = poller.Poller(client.targetVpnGateways) return waiter.WaitFor(operation_poller, operation_ref, 'Updating labels of target VPN gateway [{0}]'.format( target_vpn_gateway_ref.Name()))
def Run(self, args): pipelines = bio.Pipelines(properties.VALUES.core.project.Get()) op = pipelines.RunDeepVariant( compute_zones=args.zones, input_fastq1=[args.input_pair[0]], input_fastq2=[args.input_pair[1]], labels=labels_util.UpdateLabels( None, pipelines.GetMessages().PipelineOptions.LabelsValue, labels_util.GetUpdateLabelsDictFromArgs(args), None), output_path=args.output_path, sample_name=args.sample_name) log.status.Print('Running [{0}].'.format(op.name)) return op
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages instance_ref = flags.INSTANCE_ARG.ResolveAsResource( args, holder.resources, scope_lister=flags.GetInstanceZoneScopeLister(holder.client)) update_labels = labels_util.GetUpdateLabelsDictFromArgs(args) remove_labels = labels_util.GetRemoveLabelsListFromArgs(args) result = None labels_operation_ref = None min_cpu_platform_operation_ref = None deletion_protection_operation_ref = None if update_labels or remove_labels: instance = client.instances.Get( messages.ComputeInstancesGetRequest(**instance_ref.AsDict())) result = instance labels_operation_ref = self._GetLabelsOperationRef( update_labels, remove_labels, instance, instance_ref, holder) if hasattr(args, 'min_cpu_platform') and args.min_cpu_platform is not None: min_cpu_platform_operation_ref = self._GetMinCpuPlatformOperationRef( args.min_cpu_platform, instance_ref, holder) deletion_protection = getattr(args, 'deletion_protection', None) if deletion_protection is not None: deletion_protection_operation_ref = ( self._GetDeletionProtectionOperationRef( args.deletion_protection, instance_ref, holder)) operation_poller = poller.Poller(client.instances) result = self._WaitForResult( operation_poller, labels_operation_ref, 'Updating labels of instance [{0}]', instance_ref.Name()) or result result = self._WaitForResult( operation_poller, min_cpu_platform_operation_ref, 'Changing minimum CPU platform of instance [{0}]', instance_ref.Name()) or result result = self._WaitForResult( operation_poller, deletion_protection_operation_ref, 'Setting deletion protection of instance [{0}] to [{1}]', instance_ref.Name(), deletion_protection) or result return result
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages instance_ref = instances_flags.INSTANCE_ARG.ResolveAsResource( args, holder.resources, scope_lister=flags.GetDefaultScopeLister(holder.client)) remove_labels = labels_util.GetUpdateLabelsDictFromArgs(args) instance = client.instances.Get( messages.ComputeInstancesGetRequest(**instance_ref.AsDict())) if args.all: # removing all existing labels from the instance. remove_labels = {} if instance.labels: for label in instance.labels.additionalProperties: remove_labels[label.key] = label.value replacement = labels_util.UpdateLabels( instance.labels, messages.InstancesSetLabelsRequest.LabelsValue, remove_labels=remove_labels) request = messages.ComputeInstancesSetLabelsRequest( project=instance_ref.project, instance=instance_ref.instance, zone=instance_ref.zone, instancesSetLabelsRequest= messages.InstancesSetLabelsRequest( labelFingerprint=instance.labelFingerprint, labels=replacement)) if not replacement: return instance operation = client.instances.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.zoneOperations') operation_poller = poller.Poller(client.instances) return waiter.WaitFor( operation_poller, operation_ref, 'Changing labels of instance [{0}]'.format( instance_ref.Name()))
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages snapshot_ref = SnapshotsRemoveLabels.SnapshotArg.ResolveAsResource( args, holder.resources) remove_labels = labels_util.GetUpdateLabelsDictFromArgs(args) snapshot = client.snapshots.Get( messages.ComputeSnapshotsGetRequest(**snapshot_ref.AsDict())) if args.all: # removing all existing labels from the snapshot. remove_labels = {} if snapshot.labels: for label in snapshot.labels.additionalProperties: remove_labels[label.key] = label.value replacement = labels_util.UpdateLabels( snapshot.labels, messages.GlobalSetLabelsRequest.LabelsValue, remove_labels=remove_labels) if not replacement: return snapshot request = messages.ComputeSnapshotsSetLabelsRequest( project=snapshot_ref.project, resource=snapshot_ref.snapshot, globalSetLabelsRequest= messages.GlobalSetLabelsRequest( labelFingerprint=snapshot.labelFingerprint, labels=replacement)) operation = client.snapshots.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection='compute.globalOperations') operation_poller = poller.Poller(client.snapshots) return waiter.WaitFor( operation_poller, operation_ref, 'Updating labels of snapshot [{0}]'.format( snapshot_ref.Name()))