Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
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
Exemple #12
0
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
Exemple #13
0
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