Search in sources :

Example 6 with User

use of com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User in project cloudbreak by hortonworks.

the class UmsClient method createGroup.

/**
 * Create new user group if it does not exist.
 *
 * @param requestId the request ID for the request
 * @param accountId the account ID
 * @param groupName the newly created group name
 * @return the new or existing user group.
 */
public Group createGroup(String requestId, String accountId, String groupName) {
    checkNotNull(requestId, "requestId should not be null.");
    checkNotNull(groupName, "groupName should not be null.");
    validateAccountIdWithWarning(accountId);
    try {
        CreateGroupResponse createGroupResponse = newStub(requestId).createGroup(CreateGroupRequest.newBuilder().setAccountId(accountId).setGroupName(groupName).build());
        LOGGER.info("New user group has been created: \nId: {} \nCrn: {} \nName: {}.", createGroupResponse.getGroup().getGroupId(), createGroupResponse.getGroup().getCrn(), createGroupResponse.getGroup().getGroupName());
        return createGroupResponse.getGroup();
    } catch (StatusRuntimeException e) {
        if (e.getStatus().getCode().equals(io.grpc.Status.ALREADY_EXISTS.getCode())) {
            Group existingGroup = listGroups(requestId, accountId, List.of(groupName)).stream().filter(foundGroup -> foundGroup.getGroupName().equals(groupName)).findAny().orElse(null);
            LOGGER.info("User group already exists: \nId: {} \nCrn: {} \nName: {}.", existingGroup.getGroupId(), existingGroup.getCrn(), existingGroup.getGroupName());
            return existingGroup;
        } else {
            throw e;
        }
    }
}
Also used : ManagedChannel(io.grpc.ManagedChannel) LoggerFactory(org.slf4j.LoggerFactory) UserManagementGrpc(com.cloudera.thunderhead.service.usermanagement.UserManagementGrpc) PagingProto(com.cloudera.thunderhead.service.common.paging.PagingProto) ListGroupsForMemberRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListGroupsForMemberRequest) GetIdPMetadataForWorkloadSSOResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetIdPMetadataForWorkloadSSOResponse) MachineUser(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.MachineUser) AddMemberToGroupResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.AddMemberToGroupResponse) ListMachineUsersRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListMachineUsersRequest) GrpcUtil(com.sequenceiq.cloudbreak.grpc.util.GrpcUtil) UmsAuthenticationException(com.sequenceiq.cloudbreak.auth.altus.exception.UmsAuthenticationException) Status(io.grpc.Status) ListServicePrincipalCloudIdentitiesRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListServicePrincipalCloudIdentitiesRequest) GetUserSyncStateModelResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetUserSyncStateModelResponse) CreateAccessKeyRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateAccessKeyRequest) ListGroupMembersResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListGroupMembersResponse) CrnChecker.warnIfAccountIdIsInternal(com.sequenceiq.cloudbreak.auth.altus.service.CrnChecker.warnIfAccountIdIsInternal) GetIdPMetadataForWorkloadSSORequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetIdPMetadataForWorkloadSSORequest) ListWorkloadAdministrationGroupsRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListWorkloadAdministrationGroupsRequest) Set(java.util.Set) Crn(com.sequenceiq.cloudbreak.auth.crn.Crn) Collectors(java.util.stream.Collectors) GetRightsResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetRightsResponse) Sets(com.google.common.collect.Sets) RegionAwareInternalCrnGeneratorFactory(com.sequenceiq.cloudbreak.auth.crn.RegionAwareInternalCrnGeneratorFactory) CreateGroupResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateGroupResponse) List(java.util.List) AddMemberToGroupRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.AddMemberToGroupRequest) RemoveMemberFromGroupRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.RemoveMemberFromGroupRequest) UserManagementBlockingStub(com.cloudera.thunderhead.service.usermanagement.UserManagementGrpc.UserManagementBlockingStub) Optional(java.util.Optional) NullableScalarTypeProto(com.cloudera.thunderhead.service.NullableScalarTypeProto) ListWorkloadAdministrationGroupsForMemberRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListWorkloadAdministrationGroupsForMemberRequest) Account(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.Account) Actor(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.Actor) ListGroupsResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListGroupsResponse) User(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User) Group(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.Group) GetRightsRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetRightsRequest) CreateGroupRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateGroupRequest) UmsClientConfig(com.sequenceiq.cloudbreak.auth.altus.config.UmsClientConfig) ArrayList(java.util.ArrayList) ListGroupMembersRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListGroupMembersRequest) ListMachineUsersResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListMachineUsersResponse) UserManagementProto(com.cloudera.thunderhead.service.usermanagement.UserManagementProto) DeleteGroupResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.DeleteGroupResponse) ListWorkloadAdministrationGroupsResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListWorkloadAdministrationGroupsResponse) GetAccountRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetAccountRequest) AltusMetadataInterceptor(com.sequenceiq.cloudbreak.grpc.altus.AltusMetadataInterceptor) GetUserSyncStateModelRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetUserSyncStateModelRequest) CreateAccessKeyResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateAccessKeyResponse) RemoveMemberFromGroupResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.RemoveMemberFromGroupResponse) Logger(org.slf4j.Logger) Tracer(io.opentracing.Tracer) ListUsersResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListUsersResponse) CallingServiceNameInterceptor(com.sequenceiq.cloudbreak.grpc.altus.CallingServiceNameInterceptor) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) GetUserRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetUserRequest) ListUsersRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListUsersRequest) ListWorkloadAdministrationGroupsForMemberResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListWorkloadAdministrationGroupsForMemberResponse) StatusRuntimeException(io.grpc.StatusRuntimeException) ListServicePrincipalCloudIdentitiesResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListServicePrincipalCloudIdentitiesResponse) ListGroupsForMemberResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListGroupsForMemberResponse) ListGroupsRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListGroupsRequest) RightsCheck(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.RightsCheck) WorkloadAdministrationGroup(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.WorkloadAdministrationGroup) DeleteGroupRequest(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.DeleteGroupRequest) Group(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.Group) WorkloadAdministrationGroup(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.WorkloadAdministrationGroup) CreateGroupResponse(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateGroupResponse) StatusRuntimeException(io.grpc.StatusRuntimeException)

Example 7 with User

use of com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User in project cloudbreak by hortonworks.

the class UmsClient method getUserWithList.

/**
 * Wraps a call to ListUsers with crn filter, therefore a single response is expected.
 *
 * @param requestId the request ID for the request
 * @param userCrn   the user CRN
 * @return the user
 */
public User getUserWithList(String requestId, String userCrn) {
    checkNotNull(requestId, "requestId should not be null.");
    checkNotNull(userCrn, "userCrn should not be null.");
    Crn crn = Crn.fromString(userCrn);
    String accountId = crn.getAccountId();
    validateAccountIdWithWarning(accountId);
    List<User> users = newStub(requestId).listUsers(ListUsersRequest.newBuilder().setAccountId(accountId).addUserIdOrCrn(userCrn).build()).getUserList();
    checkSingleUserResponse(users, crn.getResource());
    return users.get(0);
}
Also used : MachineUser(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.MachineUser) User(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User) Crn(com.sequenceiq.cloudbreak.auth.crn.Crn)

Example 8 with User

use of com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User in project cloudbreak by hortonworks.

the class GrpcUmsClient method getUserDetails.

/**
 * Retrieves user details from UMS.
 *
 * @param userCrn   the CRN of the user
 * @param requestId an optional request Id
 * @return the user associated with this user CRN
 */
@Cacheable(cacheNames = "umsUserCache", key = "{ #userCrn }")
public User getUserDetails(String userCrn, Optional<String> requestId, RegionAwareInternalCrnGeneratorFactory regionAwareInternalCrnGeneratorFactory) {
    UmsClient client = makeClient(channelWrapper.getChannel(), regionAwareInternalCrnGeneratorFactory);
    LOGGER.debug("Getting user information for {} using request ID {}", userCrn, requestId);
    User user = client.getUser(RequestIdUtil.getOrGenerate(requestId), userCrn);
    LOGGER.debug("User information retrieved for userCrn: {}", user.getCrn());
    return user;
}
Also used : MachineUser(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.MachineUser) User(com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User) Cacheable(org.springframework.cache.annotation.Cacheable)

Aggregations

User (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.User)8 MachineUser (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.MachineUser)7 Crn (com.sequenceiq.cloudbreak.auth.crn.Crn)4 ListUsersRequest (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListUsersRequest)3 ListUsersResponse (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.ListUsersResponse)3 UserManagementProto (com.cloudera.thunderhead.service.usermanagement.UserManagementProto)2 Account (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.Account)2 CreateAccessKeyRequest (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateAccessKeyRequest)2 CreateAccessKeyResponse (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.CreateAccessKeyResponse)2 GetAccountRequest (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetAccountRequest)2 GetIdPMetadataForWorkloadSSORequest (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetIdPMetadataForWorkloadSSORequest)2 GetIdPMetadataForWorkloadSSOResponse (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.GetIdPMetadataForWorkloadSSOResponse)2 NullableScalarTypeProto (com.cloudera.thunderhead.service.NullableScalarTypeProto)1 PagingProto (com.cloudera.thunderhead.service.common.paging.PagingProto)1 UserManagementGrpc (com.cloudera.thunderhead.service.usermanagement.UserManagementGrpc)1 UserManagementBlockingStub (com.cloudera.thunderhead.service.usermanagement.UserManagementGrpc.UserManagementBlockingStub)1 UserManagementImplBase (com.cloudera.thunderhead.service.usermanagement.UserManagementGrpc.UserManagementImplBase)1 AccessKey (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.AccessKey)1 AccessKeyType (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.AccessKeyType)1 AccountType (com.cloudera.thunderhead.service.usermanagement.UserManagementProto.AccountType)1