def UpdateRoles(unused_ref, args, request): """Update 'MembershipRoles' to request.modifyMembershipRolesRequest. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ # Following logic is used only when 'add-roles' parameter is used. if hasattr(args, 'add_roles') and args.IsSpecified('add_roles'): # Convert a comma separated string to a list of strings. role_list = args.add_roles.split(',') # Convert a list of strings to a list of MembershipRole objects. version = groups_hooks.GetApiVersion(args) roles = [] messages = ci_client.GetMessages(version) for role in role_list: membership_role = messages.MembershipRole(name=role) roles.append(membership_role) request.modifyMembershipRolesRequest = messages.ModifyMembershipRolesRequest( addRoles=roles) return request
def SetMembershipResourceName(unused_ref, args, request): """Set membership resource name to request.name. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) name = '' if args.IsSpecified('group_email') and args.IsSpecified('member_email'): name = ConvertEmailToMembershipResourceName(version, args, '--group-email', '--member-email') else: raise exceptions.InvalidArgumentException( 'Must specify `--group-email` and `--member-email` argument.') request.name = name if hasattr(request, 'membership'): request.membership.name = name return request
def SetExpiryDetail(unused_ref, args, request): """Set expiration to request.membership.expiryDetail (v1alpha1) or in request.membership.roles (v1beta1). Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. Raises: InvalidArgumentException: If 'expiration' is specified upon following cases: 1. 'request.membership' doesn't have 'roles' attribute, or 2. Non-MEMBER role (e.g. OWNER) is provided. """ version = groups_hooks.GetApiVersion(args) if hasattr(args, 'expiration') and args.IsSpecified('expiration'): if version == 'v1alpha1': request.membership.expiryDetail = ReformatExpiryDetail( version, args.expiration) else: if hasattr(request.membership, 'roles'): request.membership.roles = AddExpiryDetailInMembershipRoles( version, request, args.expiration) else: raise exceptions.InvalidArgumentException( 'expiration', 'roles must be specified.') return request
def ReformatUpdateRolesParams(args, update_roles_params): """Reformat update_roles_params string. Reformatting update_roles_params will be done by following steps, 1. Split the comma separated string to a list of strings. 2. Convert the splitted string to UpdateMembershipRolesParams message. Args: args: The argparse namespace. update_roles_params: A comma separated string. Returns: A list of reformatted 'UpdateMembershipRolesParams'. Raises: InvalidArgumentException: If invalid update_roles_params string is input. """ # Split a comma separated 'update_roles_params' string. update_roles_params_list = update_roles_params.split(',') version = groups_hooks.GetApiVersion(args) messages = ci_client.GetMessages(version) roles_params = [] arg_name = '--update-roles-params' for update_roles_param in update_roles_params_list: role, param_key, param_value = TokenizeUpdateRolesParams( update_roles_param, arg_name) # Membership expiry is supported only on a MEMBER role. if param_key == 'expiration' and role != 'MEMBER': error_msg = ( 'Membership Expiry is not supported on a specified role: {}.' ).format(role) raise exceptions.InvalidArgumentException(arg_name, error_msg) # Instantiate MembershipRole object. expiry_detail = ReformatExpiryDetail(version, param_value, 'modify-membership-roles') membership_role = messages.MembershipRole(name=role, expiryDetail=expiry_detail) update_mask = GetUpdateMask(param_key, arg_name) update_membership_roles_params = messages.UpdateMembershipRolesParams( fieldMask=update_mask, membershipRole=membership_role) roles_params.append(update_membership_roles_params) return roles_params
def SetMembership(unused_ref, args, request): """Set Membership in request. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) messages = ci_client.GetMessages(version) request.membership = messages.Membership() return request
def UpdateMembershipRoles(unused_ref, args, request): """Update MembershipRoles to request.membership.roles. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) if hasattr(args, 'roles') and args.IsSpecified('roles'): request.membership.roles = ReformatMembershipRoles(version, args.roles) return request
def SetExpiryDetail(unused_ref, args, request): """Set expiration to request.membership.expiryDetail. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) if hasattr(args, 'expiration') and args.IsSpecified('expiration'): request.membership.expiryDetail = ReformatExpiryDetail( version, args.expiration) return request
def SetExpiryDetail(unused_ref, args, request): """Set expiration to request.membership.expiryDetail (v1alpha1) or in request.membership.roles (v1beta1). Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. Raises: InvalidArgumentException: If 'expiration' is specified upon following cases: 1. 'request.membership' doesn't have 'roles' attribute, or 2. multiple roles are provided. """ ### Pre-validations ### # #1. In order to set Expiry Detail, there should be a role in # 'request.membership' if not hasattr(request.membership, 'roles'): raise exceptions.InvalidArgumentException('expiration', 'roles must be specified.') # #2. When setting 'expiration', a single role should be input. if len(request.membership.roles) != 1: raise exceptions.InvalidArgumentException( 'roles', 'When setting "expiration", a single role should be input.') version = groups_hooks.GetApiVersion(args) if hasattr(args, 'expiration') and args.IsSpecified('expiration'): if version == 'v1alpha1': request.membership.expiryDetail = ReformatExpiryDetail( version, args.expiration, 'add') else: request.membership.roles = AddExpiryDetailInMembershipRoles( version, request, args.expiration) return request
def SetMembershipParent(unused_ref, args, request): """Set resource name to request.parent. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) if args.IsSpecified('group_email'): # Resource name example: groups/03qco8b4452k99t request.parent = groups_hooks.ConvertEmailToResourceName( version, args.group_email, '--group-email') return request
def SetEntityKey(unused_ref, args, request): """Set EntityKey in group resource. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) messages = ci_client.GetMessages(version) if hasattr(args, 'member_email') and args.IsSpecified('member_email'): entity_key = messages.EntityKey(id=args.member_email) request.membership.preferredMemberKey = entity_key return request
def SetMembershipRoles(unused_ref, args, request): """Set MembershipRoles to request.membership.roles. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) if not hasattr(args, 'roles') or not args.IsSpecified('roles'): empty_list = [] request.membership.roles = ReformatMembershipRoles(version, empty_list) else: request.membership.roles = ReformatMembershipRoles(version, args.roles) return request
def SetTransitiveMembershipParent(unused_ref, args, request): """Set resource name to request.parent. Args: unused_ref: unused. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ version = groups_hooks.GetApiVersion(args) if hasattr(args, 'group_email') and args.IsSpecified('group_email'): # Resource name example: groups/03qco8b4452k99t request.parent = groups_hooks.ConvertEmailToResourceName( version, args.group_email, '--group-email') else: # If this hook is used and no group_emails provided then set the parent to # be the groups wildcard. request.parent = 'groups/-' return request
def SetUpdateRolesParams(unused_ref, args, request): """Update 'MembershipRoles' to request.modifyMembershipRolesRequest. Args: unused_ref: A string representing the operation reference. Unused and may be None. args: The argparse namespace. request: The request to modify. Returns: The updated request. """ if hasattr( args, 'update_roles_params') and args.IsSpecified('update_roles_params'): version = groups_hooks.GetApiVersion(args) messages = ci_client.GetMessages(version) request.modifyMembershipRolesRequest = messages.ModifyMembershipRolesRequest( updateRolesParams=ReformatUpdateRolesParams( args, args.update_roles_params)) return request