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)) labels_diff = labels_util.GetAndValidateOpsFromArgs(args) disk_info = api_util.GetDiskInfo(disk_ref, client, messages) disk = disk_info.GetDiskResource() set_label_req = disk_info.GetSetLabelsRequestMessage() labels_update = labels_diff.Apply(set_label_req.LabelsValue, disk.labels) request = disk_info.GetSetDiskLabelsRequestMessage( disk, labels_update.GetOrNone()) if not labels_update.needs_update: return disk service = disk_info.GetService() operation = service.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection=disk_info.GetOperationCollection()) 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, support_user_licenses=False): 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)) disk_info = api_util.GetDiskInfo(disk_ref, client, messages) service = disk_info.GetService() if support_user_licenses and args.IsSpecified( 'zone') and _UserLicensesFlagsIncluded(args): disk_res = messages.Disk(name=disk_ref.Name()) if args.IsSpecified('update_user_licenses'): disk_res.userLicenses = args.update_user_licenses disk_update_request = messages.ComputeDisksUpdateRequest( project=disk_ref.project, disk=disk_ref.Name(), diskResource=disk_res, zone=disk_ref.zone, paths=['userLicenses']) update_operation = service.Update(disk_update_request) update_operation_ref = holder.resources.Parse( update_operation.selfLink, collection=disk_info.GetOperationCollection()) update_operation_poller = poller.Poller(service) result = waiter.WaitFor( update_operation_poller, update_operation_ref, 'Updating user licenses of disk [{0}]'.format(disk_ref.Name())) if not _LabelsFlagsIncluded(args): return result labels_diff = labels_util.GetAndValidateOpsFromArgs(args) disk = disk_info.GetDiskResource() set_label_req = disk_info.GetSetLabelsRequestMessage() labels_update = labels_diff.Apply(set_label_req.LabelsValue, disk.labels) request = disk_info.GetSetDiskLabelsRequestMessage( disk, labels_update.GetOrNone()) if not labels_update.needs_update: return disk operation = service.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection=disk_info.GetOperationCollection()) 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): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client.apitools_client messages = holder.client.messages disk_ref = disks_flags.MakeDiskArg( plural=False).ResolveAsResource(args, holder.resources) disk_info = api_util.GetDiskInfo(disk_ref, client, messages) disk_region = disk_info.GetDiskRegionName() resource_policies = [] for policy in args.resource_policies: resource_policy_ref = util.ParseResourcePolicy( holder.resources, policy, project=disk_ref.project, region=disk_region) resource_policies.append(resource_policy_ref.SelfLink()) return disk_info.MakeRemoveResourcePoliciesRequest(resource_policies, holder.client)
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) disk_info = api_util.GetDiskInfo(disk_ref, client, messages) disk = disk_info.GetDiskResource() 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 labels_diff = labels_util.Diff(subtractions=remove_labels) set_label_req = disk_info.GetSetLabelsRequestMessage() labels_update = labels_diff.Apply(set_label_req.LabelsValue, disk.labels) request = disk_info.GetSetDiskLabelsRequestMessage( disk, labels_update.GetOrNone()) if not labels_update.needs_update: return disk service = disk_info.GetService() operation = service.SetLabels(request) operation_ref = holder.resources.Parse( operation.selfLink, collection=disk_info.GetOperationCollection()) operation_poller = poller.Poller(service) return waiter.WaitFor( operation_poller, operation_ref, 'Updating labels of disk [{0}]'.format(disk_ref.Name()))