def Run(self, args): service = tags.TagValuesService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagValues/') == 0: tag_value = args.RESOURCE_NAME else: tag_value = tag_utils.GetTagValueFromNamespacedName( args.RESOURCE_NAME).name get_iam_policy_req = ( messages.CloudresourcemanagerTagValuesGetIamPolicyRequest( resource=tag_value)) policy = service.GetIamPolicy(get_iam_policy_req) condition = iam_util.ValidateAndExtractConditionMutexRole(args) iam_util.AddBindingToIamPolicyWithCondition(messages.Binding, messages.Expr, policy, args.member, args.role, condition) set_iam_policy_request = messages.SetIamPolicyRequest(policy=policy) request = messages.CloudresourcemanagerTagValuesSetIamPolicyRequest( resource=tag_value, setIamPolicyRequest=set_iam_policy_request) result = service.SetIamPolicy(request) iam_util.LogSetIamPolicy(tag_value, 'TagValue') return result
def Run(self, args): messages = tags.TagMessages() if args.tag_value.find("tagValues/") == 0: tag_value = args.tag_value else: tag_value = tag_utils.GetTagValueFromNamespacedName( args.tag_value).name binding_name = "/".join( ["tagBindings", quote(args.parent, safe=""), tag_value]) del_req = messages.CloudresourcemanagerTagBindingsDeleteRequest( name=binding_name) location = args.location if args.IsSpecified("location") else None with endpoints.CrmEndpointOverrides(location): service = tags.TagBindingsService() op = service.Delete(del_req) if args.async_ or op.done: return op else: return operations.WaitForOperation( op, "Waiting for TagBinding for resource [{}] and tag value [{}] to be " "deleted with [{}]".format(args.parent, args.tag_value, op.name), service=service)
def Run(self, args): messages = tags.TagMessages() if args.tag_value.find("tagValues/") == 0: tag_value = args.tag_value else: tag_value = tag_utils.GetTagValueFromNamespacedName( args.tag_value).name tag_binding = messages.TagBinding(parent=args.parent, tagValue=tag_value) create_req = messages.CloudresourcemanagerTagBindingsCreateRequest( tagBinding=tag_binding) location = args.location if args.IsSpecified("location") else None with endpoints.CrmEndpointOverrides(location): service = tags.TagBindingsService() op = service.Create(create_req) if args.async_ or op.done: return op else: return operations.WaitForOperation( op, "Waiting for TagBinding for parent [{}] and tag value [{}] to be " "created with [{}]".format(args.parent, args.tag_value, op.name), service=service)
def Run(self, args): service = tags.TagKeysService() messages = tags.TagMessages() tag_parent = args.parent list_request = messages.CloudresourcemanagerTagKeysListRequest( parent=tag_parent) response = service.List(list_request) return response.tagKeys
def Run(self, args): service = tags.TagKeysService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagKeys/') == 0: tag_key = args.RESOURCE_NAME else: tag_key = tag_utils.GetTagKeyFromNamespacedName( args.RESOURCE_NAME).name get_request = messages.CloudresourcemanagerTagKeysGetRequest( name=tag_key) return service.Get(get_request)
def Run(self, args): service = tags.TagValuesService() messages = tags.TagMessages() if args.parent.find("tagKeys/") == 0: tag_key = args.parent else: tag_key = tag_utils.GetTagKeyFromNamespacedName(args.parent).name list_request = messages.CloudresourcemanagerTagValuesListRequest( parent=tag_key) response = service.List(list_request) return response.tagValues
def Run(self, args): service = tags.TagValuesService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagValues/') == 0: tag_value = args.RESOURCE_NAME else: tag_value = tag_utils.GetTagValueFromNamespacedName( args.RESOURCE_NAME).name request = messages.CloudresourcemanagerTagValuesGetIamPolicyRequest( resource=tag_value) return service.GetIamPolicy(request)
def Run(self, args): service = tags.TagKeysService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagKeys/') == 0: tag_key = args.RESOURCE_NAME else: tag_key = tag_utils.GetTagKeyFromNamespacedName( args.RESOURCE_NAME).name policy = iam_util.ParsePolicyFile(args.POLICY_FILE, messages.Policy) policy.version = iam_util.MAX_LIBRARY_IAM_SUPPORTED_VERSION set_iam_policy_request = messages.SetIamPolicyRequest(policy=policy) request = messages.CloudresourcemanagerTagKeysSetIamPolicyRequest( resource=tag_key, setIamPolicyRequest=set_iam_policy_request) result = service.SetIamPolicy(request) iam_util.LogSetIamPolicy(tag_key, 'TagKey') return result
def Run(self, args): service = tags.TagKeysService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagKeys/') == 0: tag_key = args.RESOURCE_NAME else: tag_key = tag_utils.GetTagKeyFromNamespacedName( args.RESOURCE_NAME).name delete_request = messages.CloudresourcemanagerTagKeysDeleteRequest( name=tag_key) op = service.Delete(delete_request) if args.async_: return op return operations.WaitForOperation( op, 'Waiting for TagKey [{}] to be deleted'.format(tag_key), service=service)
def Run(self, args): service = tags.TagKeysService() messages = tags.TagMessages() short_name = args.short_name tag_parent = args.parent description = args.description tag_key = messages.TagKey(shortName=short_name, parent=tag_parent, description=description) create_req = messages.CloudresourcemanagerTagKeysCreateRequest( tagKey=tag_key) op = service.Create(create_req) if args.async_: return op return operations.WaitForOperation( op, "Waiting for TagKey [{}] to be created".format(short_name), service=service)
def Run(self, args): service = tags.TagKeysService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagKeys/') == 0: tag_key = args.RESOURCE_NAME else: tag_key = tag_utils.GetTagKeyFromNamespacedName( args.RESOURCE_NAME).name get_iam_policy_req = ( messages.CloudresourcemanagerTagKeysGetIamPolicyRequest( resource=tag_key)) policy = service.GetIamPolicy(get_iam_policy_req) condition = iam_util.ValidateAndExtractConditionMutexRole(args) iam_util.RemoveBindingFromIamPolicyWithCondition( policy, args.member, args.role, condition, args.all) set_iam_policy_request = messages.SetIamPolicyRequest(policy=policy) request = messages.CloudresourcemanagerTagKeysSetIamPolicyRequest( resource=tag_key, setIamPolicyRequest=set_iam_policy_request) result = service.SetIamPolicy(request) iam_util.LogSetIamPolicy(tag_key, 'TagKey') return result
def Run(self, args): service = tags.TagValuesService() messages = tags.TagMessages() if args.RESOURCE_NAME.find('tagValues/') == 0: tag_value = tag_utils.GetResourceFromNamespacedName( args.RESOURCE_NAME, 'tagValues') else: tag_value = tag_utils.GetTagValueFromNamespacedName( args.RESOURCE_NAME) tag_value.description = args.description update_request = messages.CloudresourcemanagerTagValuesPatchRequest( name=tag_value.name, tagValue=tag_value, updateMask='description') op = service.Patch(update_request) if args.async_: return op return operations.WaitForOperation( op, 'Waiting for TagValue [{}] to be updated'.format(tag_value.name), service=service)
"""Utilities for defining Tag resource manager arguments on a parser.""" from __future__ import absolute_import from __future__ import division from __future__ import unicode_literals from apitools.base.py.exceptions import HttpForbiddenError from googlecloudsdk.api_lib.resource_manager import tags from googlecloudsdk.api_lib.resource_manager.exceptions import ResourceManagerError class InvalidInputError(ResourceManagerError): """Exception for invalid input.""" GetResourceFns = { 'tagKeys': tags.TagMessages().CloudresourcemanagerTagKeysGetRequest, 'tagValues': tags.TagMessages().CloudresourcemanagerTagValuesGetRequest } ListResourceFns = { 'tagKeys': tags.TagMessages().CloudresourcemanagerTagKeysListRequest, 'tagValues': tags.TagMessages().CloudresourcemanagerTagValuesListRequest } ServiceFns = { 'tagKeys': tags.TagKeysService, 'tagValues': tags.TagValuesService, 'tagBindings': tags.TagBindingsService }