From 9b7ef9f1cb88a29e755b9546cd7a920f36a97be3 Mon Sep 17 00:00:00 2001 From: Amrutha Ramanathan <105342664+ramrutha497@users.noreply.github.com> Date: Tue, 24 Jan 2023 00:55:29 +0530 Subject: [PATCH 1/6] Get and Update User Permissions Ger Users APIs --- .../sdkjava/model/ISpotAccountAdminRepo.java | 9 ++ .../model/SpotinstAccountAdminClient.java | 69 ++++++++- .../model/api/admin/account/ApiUsers.java | 100 +++++++++++++ .../admin/account/ApiUsersPermissions.java | 97 +++++++++++++ .../sdkjava/model/bl/admin/account/Users.java | 135 ++++++++++++++++++ .../bl/admin/account/UsersPermissions.java | 135 ++++++++++++++++++ .../admin/account/AccountConverter.java | 62 ++++++++ .../admin/account/SpotAccountAdminRepo.java | 52 +++++++ .../UpdateUsersPermissionsRequest.java | 96 +++++++++++++ .../account/GetAccountUsersApiResponse.java | 14 ++ .../GetUserPermissionsApiResponse.java | 14 ++ .../account/SpotAccountAdminService.java | 117 ++++++++++++++- 12 files changed, 895 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetAccountUsersApiResponse.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java index 8f04e895e..3db5ccda2 100644 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java @@ -2,9 +2,18 @@ import com.spotinst.sdkjava.model.bl.admin.account.*; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; + +import java.util.List; public interface ISpotAccountAdminRepo extends IRepository { RepoGenericResponse create(String accountName, String authToken); RepoGenericResponse update(UpdateAccountRequest request, String authToken, String account); + + RepoGenericResponse> getUsers(String authToken, String accountId); + + RepoGenericResponse updateUsersPermission(String authToken, UpdateUsersPermissionsRequest request, String accountId); + + RepoGenericResponse> getUserPermissions(String authToken, String accountId); } diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java index bed9e9bc8..dbb21d04f 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java @@ -8,6 +8,7 @@ import com.spotinst.sdkjava.model.requests.admin.account.AccountDeleteRequest; import com.spotinst.sdkjava.model.requests.admin.account.ListAllAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -156,5 +157,71 @@ public Boolean deleteAccount(AccountDeleteRequest accountDeletionRequest) { return retVal; } - //endregion + public List getUsers(String accountId) { + + List retVal; + + RepoGenericResponse> listAccountResponse = + getSpotAccountAdminRepo().getUsers(authToken, accountId); + + if (listAccountResponse.isRequestSucceed()) { + retVal = listAccountResponse.getValue(); + } + else { + List httpExceptions = listAccountResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + LOGGER.error( + String.format("Error encountered while attempting to get the list of users. Code: %s. Message: %s.", + httpException.getCode(), httpException.getMessage())); + throw new SpotinstHttpException(httpException.getMessage()); + } + + return retVal; + } + + public Boolean updateUserPermission(UpdateUsersPermissionsRequest request, String accountId) { + + Boolean retVal; + + RepoGenericResponse isUserPermissionUpdated = + getSpotAccountAdminRepo().updateUsersPermission(authToken, request, accountId); + + if (isUserPermissionUpdated.isRequestSucceed()) { + retVal = isUserPermissionUpdated.getValue(); + } + else { + List httpExceptions = isUserPermissionUpdated.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + + LOGGER.error( + String.format("Error encountered while attempting to update user permissions: %s. Code: %s. Message: %s.", + accountId, httpException.getCode(), httpException.getMessage())); + + throw new SpotinstHttpException(httpException.getMessage()); + } + + return retVal; + } + + public List getUserPermissions(String accountId) { + + List retVal; + + RepoGenericResponse> listAccountResponse = + getSpotAccountAdminRepo().getUserPermissions(authToken, accountId); + + if (listAccountResponse.isRequestSucceed()) { + retVal = listAccountResponse.getValue(); + } + else { + List httpExceptions = listAccountResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + LOGGER.error( + String.format("Error encountered while attempting to get the list of users. Code: %s. Message: %s.", + httpException.getCode(), httpException.getMessage())); + throw new SpotinstHttpException(httpException.getMessage()); + } + + return retVal; + } } diff --git a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java new file mode 100644 index 000000000..86fa6913b --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java @@ -0,0 +1,100 @@ +package com.spotinst.sdkjava.model.api.admin.account; + +import com.fasterxml.jackson.annotation.JsonFilter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.spotinst.sdkjava.client.rest.IPartialUpdateEntity; + +import java.util.HashSet; +import java.util.Set; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonFilter("PartialUpdateEntityFilter") +public class ApiUsers implements IPartialUpdateEntity { + //region Members + @JsonIgnore + private Set isSet; + private String displayName; + private String email; + private String mappedAccountIds; + private String userId; + //endregion + + //region Constructor + private ApiUsers() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + isSet.add("displayName"); + this.displayName = displayName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + isSet.add("email"); + this.email = email; + } + + public String getMappedAccountIds() { + return mappedAccountIds; + } + + public void setMappedAccountIds(String mappedAccountIds) { + isSet.add("mappedAccountIds"); + this.mappedAccountIds = mappedAccountIds; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + isSet.add("userId"); + this.userId = userId; + } + + //endregion + + //region isSet methods + @JsonIgnore + public boolean isDisplayNameSet() { + return isSet.contains("displayName"); + } + + @JsonIgnore + public boolean isEmailSet() { + return isSet.contains("email"); + } + + @JsonIgnore + public boolean isMappedAccountIdsSet() { + return isSet.contains("mappedAccountIds"); + } + + @JsonIgnore + public boolean isUserIdSet() { + return isSet.contains("userId"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java new file mode 100644 index 000000000..0820733ee --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java @@ -0,0 +1,97 @@ +package com.spotinst.sdkjava.model.api.admin.account; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.HashSet; +import java.util.Set; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ApiUsersPermissions { + //region Members + @JsonIgnore + private Set isSet; + private String permissionStrategy; + private String role; + private String policyIds; + private String userId; + //endregion + + //region Constructor + private ApiUsersPermissions() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getPermissionStrategy() { + return permissionStrategy; + } + + public void setPermissionStrategy(String permissionStrategy) { + isSet.add("permissionStrategy"); + this.permissionStrategy = permissionStrategy; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + isSet.add("role"); + this.role = role; + } + + public String getPolicyIds() { + return policyIds; + } + + public void setPolicyIds(String policyIds) { + isSet.add("policyIds"); + this.policyIds = policyIds; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + isSet.add("userId"); + this.userId = userId; + } + + //endregion + + //region isSet methods + @JsonIgnore + public boolean isPermissionStrategySet() { + return isSet.contains("permissionStrategy"); + } + + @JsonIgnore + public boolean isRoleSet() { + return isSet.contains("role"); + } + + @JsonIgnore + public boolean isPolicyIdsSet() { + return isSet.contains("PolicyIds"); + } + + @JsonIgnore + public boolean isUserIdSet() { + return isSet.contains("userId"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java new file mode 100644 index 000000000..8b1b34dc3 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java @@ -0,0 +1,135 @@ +package com.spotinst.sdkjava.model.bl.admin.account; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.HashSet; +import java.util.Set; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Users { + //region Members + @JsonIgnore + private Set isSet; + private String displayName; + private String email; + private String mappedAccountIds; + private String userId; + //endregion + + //region Constructor + private Users() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(String displayName) { + isSet.add("displayName"); + this.displayName = displayName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + isSet.add("email"); + this.email = email; + } + + public String getMappedAccountIds() { + return mappedAccountIds; + } + + public void setMappedAccountIds(String mappedAccountIds) { + isSet.add("mappedAccountIds"); + this.mappedAccountIds = mappedAccountIds; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + isSet.add("userId"); + this.userId = userId; + } + + //endregion + + //region Builder class + public static class Builder { + private Users account; + + private Builder() { + this.account = new Users(); + } + + public static Builder get() { + return new Builder(); + } + + public Builder setDisplayName(final String displayName) { + account.setDisplayName(displayName); + return this; + } + + public Builder setEmail(final String email) { + account.setEmail(email); + return this; + } + + public Builder setMappedAccountIds(final String mappedAccountIds) { + account.setMappedAccountIds(mappedAccountIds); + return this; + } + + public Builder setUserId(final String userId) { + account.setUserId(userId); + return this; + } + + public Users build() { + return account; + } + } + //endregion + + //region isSet methods + @JsonIgnore + public boolean isDisplayNameSet() { + return isSet.contains("displayName"); + } + + @JsonIgnore + public boolean isEmailSet() { + return isSet.contains("email"); + } + + @JsonIgnore + public boolean isMappedAccountIdsSet() { + return isSet.contains("mappedAccountIds"); + } + + @JsonIgnore + public boolean isUserIdSet() { + return isSet.contains("userId"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java new file mode 100644 index 000000000..c0c597b4c --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java @@ -0,0 +1,135 @@ +package com.spotinst.sdkjava.model.bl.admin.account; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.HashSet; +import java.util.Set; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class UsersPermissions { + //region Members + @JsonIgnore + private Set isSet; + private String permissionStrategy; + private String role; + private String policyIds; + private String userId; + //endregion + + //region Constructor + private UsersPermissions() { + isSet = new HashSet<>(); + } + //endregion + + //region Getters & Setters + public Set getIsSet() { + return isSet; + } + + public void setIsSet(Set isSet) { + this.isSet = isSet; + } + + public String getPermissionStrategy() { + return permissionStrategy; + } + + public void setPermissionStrategy(String permissionStrategy) { + isSet.add("permissionStrategy"); + this.permissionStrategy = permissionStrategy; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + isSet.add("role"); + this.role = role; + } + + public String getPolicyIds() { + return policyIds; + } + + public void setPolicyIds(String policyIds) { + isSet.add("policyIds"); + this.policyIds = policyIds; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + isSet.add("userId"); + this.userId = userId; + } + + //endregion + + //region Builder class + public static class Builder { + private UsersPermissions account; + + private Builder() { + this.account = new UsersPermissions(); + } + + public static Builder get() { + return new Builder(); + } + + public Builder setPermissionStrategy(final String permissionStrategy) { + account.setPermissionStrategy(permissionStrategy); + return this; + } + + public Builder setRole(final String role) { + account.setRole(role); + return this; + } + + public Builder setPolicyIds(final String policyIds) { + account.setPolicyIds(policyIds); + return this; + } + + public Builder setUserId(final String userId) { + account.setUserId(userId); + return this; + } + + public UsersPermissions build() { + return account; + } + } + //endregion + + //region isSet methods + @JsonIgnore + public boolean isPermissionStrategySet() { + return isSet.contains("permissionStrategy"); + } + + @JsonIgnore + public boolean isRoleSet() { + return isSet.contains("role"); + } + + @JsonIgnore + public boolean isPolicyIdsSet() { + return isSet.contains("PolicyIds"); + } + + @JsonIgnore + public boolean isUserIdSet() { + return isSet.contains("userId"); + } + + //endregion +} diff --git a/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java b/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java index 636a34c12..679da3453 100644 --- a/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java +++ b/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java @@ -3,6 +3,8 @@ import com.spotinst.sdkjava.model.api.admin.account.*; import com.spotinst.sdkjava.model.bl.admin.account.Account; import com.spotinst.sdkjava.model.bl.admin.account.BlAccountAdmin; +import com.spotinst.sdkjava.model.bl.admin.account.Users; +import com.spotinst.sdkjava.model.bl.admin.account.UsersPermissions; public class AccountConverter { @@ -75,6 +77,66 @@ public static BlAccountAdmin toBl(ApiAccountAdmin src) { } //endregion + //region DAL -> BL + public static Users toBl(ApiUsers src) { + Users retVal = null; + + if (src != null) { + Users.Builder accountUserBuilder = Users.Builder.get(); + + if (src.isDisplayNameSet()) { + accountUserBuilder.setDisplayName(src.getDisplayName()); + } + + if (src.isEmailSet()) { + accountUserBuilder.setEmail(src.getEmail()); + } + + if (src.isMappedAccountIdsSet()) { + accountUserBuilder.setMappedAccountIds(src.getMappedAccountIds()); + } + + if (src.isUserIdSet()) { + accountUserBuilder.setUserId(src.getUserId()); + } + + retVal = accountUserBuilder.build(); + + } + + return retVal; + } + //endregion + + public static UsersPermissions toBl(ApiUsersPermissions src) { + UsersPermissions retVal = null; + + if (src != null) { + UsersPermissions.Builder accountUserBuilder = UsersPermissions.Builder.get(); + + if (src.isPermissionStrategySet()) { + accountUserBuilder.setPermissionStrategy(src.getPermissionStrategy()); + } + + if (src.isPolicyIdsSet()) { + accountUserBuilder.setPolicyIds(src.getPolicyIds()); + } + + if (src.isRoleSet()) { + accountUserBuilder.setRole(src.getRole()); + } + + if (src.isUserIdSet()) { + accountUserBuilder.setUserId(src.getUserId()); + } + + retVal = accountUserBuilder.build(); + + } + + return retVal; + } + //region DAL -> BL public static Account toBl(ApiAccount src) { Account retVal = null; diff --git a/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java b/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java index c0c6cec89..db6afbfad 100644 --- a/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java @@ -6,12 +6,18 @@ import com.spotinst.sdkjava.model.RepoGenericResponse; import com.spotinst.sdkjava.model.api.admin.account.ApiAccountAdmin; import com.spotinst.sdkjava.model.api.admin.account.ApiAccount; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; +import com.spotinst.sdkjava.model.bl.admin.account.Users; +import com.spotinst.sdkjava.model.bl.admin.account.UsersPermissions; import com.spotinst.sdkjava.model.converters.admin.account.AccountConverter; import com.spotinst.sdkjava.model.bl.admin.account.BlAccountAdmin; import com.spotinst.sdkjava.model.bl.admin.account.Account; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; import com.spotinst.sdkjava.model.service.admin.account.SpotAccountAdminService; +import java.nio.file.attribute.UserPrincipal; import java.util.List; import java.util.stream.Collectors; @@ -90,4 +96,50 @@ public RepoGenericResponse delete(String identifier, String authToken, return retVal; } + @Override + public RepoGenericResponse> getUsers(String authToken, String accountId) { + RepoGenericResponse> retVal; + + try { + List apiUsersList = SpotAccountAdminService.listUsers(accountId, authToken); + List usersList = apiUsersList.stream().map(AccountConverter::toBl).collect(Collectors.toList()); + retVal = new RepoGenericResponse<>(usersList); + } + catch (SpotinstHttpException e) { + retVal = ExceptionHelper.handleHttpException(e); + } + + return retVal; + } + + @Override + public RepoGenericResponse updateUsersPermission(String authToken, UpdateUsersPermissionsRequest request, String accountId) { + RepoGenericResponse retVal; + + try { + Boolean updatePermissions = SpotAccountAdminService.updatePermissions(authToken, request, accountId); + retVal = new RepoGenericResponse<>(updatePermissions); + } + catch (SpotinstHttpException e) { + retVal = ExceptionHelper.handleHttpException(e); + } + + return retVal; + } + + @Override + public RepoGenericResponse> getUserPermissions(String authToken, String accountId) { + RepoGenericResponse> retVal; + + try { + List apiUsersPermissions = SpotAccountAdminService.apiUsersPermissions(accountId, authToken); + List userPermissions = apiUsersPermissions.stream().map(AccountConverter::toBl).collect(Collectors.toList()); + retVal = new RepoGenericResponse<>(userPermissions); + } + catch (SpotinstHttpException e) { + retVal = ExceptionHelper.handleHttpException(e); + } + + return retVal; + } } diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java new file mode 100644 index 000000000..9224c823d --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java @@ -0,0 +1,96 @@ +package com.spotinst.sdkjava.model.requests.admin.account; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.HashSet; +import java.util.Set; + +public class UpdateUsersPermissionsRequest { + //region Members + @JsonIgnore + private String permissionStrategy; + private String role; + private String policyIds; + private String userId; + //endregion + + //region Constructor + private UpdateUsersPermissionsRequest() { + } + //endregion + + public String getPermissionStrategy() { + return this.permissionStrategy; + } + + public void setPermissionStrategy(String permissionStrategy) { + this.permissionStrategy = permissionStrategy; + } + + public String getRole() { + return this.role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getPolicyIds() { + return this.policyIds; + } + + public void setPolicyIds(String policyIds) { + this.policyIds = policyIds; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + //endregion + + //region Builder class + public static class Builder { + private UpdateUsersPermissionsRequest request; + + private Builder() { + this.request = new UpdateUsersPermissionsRequest(); + } + + public static UpdateUsersPermissionsRequest.Builder get() { + return new Builder(); + } + + public UpdateUsersPermissionsRequest.Builder setPermissionStrategy(final String permissionStrategy) { + request.setPermissionStrategy(permissionStrategy); + return this; + } + + public UpdateUsersPermissionsRequest.Builder setRole(final String role) { + request.setRole(role); + return this; + } + + public UpdateUsersPermissionsRequest.Builder setPolicyIds(final String policyIds) { + request.setPolicyIds(policyIds); + return this; + } + + public UpdateUsersPermissionsRequest.Builder setUserId(final String userId) { + request.setUserId(userId); + return this; + } + + public UpdateUsersPermissionsRequest build() { + return request; + } + } + //endregion + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetAccountUsersApiResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetAccountUsersApiResponse.java new file mode 100644 index 000000000..97ff04b43 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetAccountUsersApiResponse.java @@ -0,0 +1,14 @@ +package com.spotinst.sdkjava.model.responses.admin.account; + +import com.spotinst.sdkjava.client.response.BaseServiceItemsResponse; +import com.spotinst.sdkjava.model.api.admin.account.ApiAccountAdmin; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; + + +/** + * Created by Amrutha Ramanathan on 19-01-2023. + */ + +public class GetAccountUsersApiResponse extends BaseServiceItemsResponse { +} + diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java new file mode 100644 index 000000000..3acf995f4 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java @@ -0,0 +1,14 @@ +package com.spotinst.sdkjava.model.responses.admin.account; + +import com.spotinst.sdkjava.client.response.BaseServiceItemsResponse; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; + + +/** + * Created by Amrutha Ramanathan on 19-01-2023. + */ + +public class GetUserPermissionsApiResponse extends BaseServiceItemsResponse { +} + diff --git a/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java b/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java index 50e55cf13..805438988 100644 --- a/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java +++ b/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java @@ -6,15 +6,15 @@ import com.spotinst.sdkjava.exception.SpotinstHttpException; import com.spotinst.sdkjava.model.api.admin.account.ApiAccountAdmin; import com.spotinst.sdkjava.model.api.admin.account.ApiAccount; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; +import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; import com.spotinst.sdkjava.model.responses.admin.account.*; import org.apache.http.HttpStatus; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; public class SpotAccountAdminService extends BaseSpotinstService { @@ -153,4 +153,113 @@ public static Boolean deleteAccount(String accountId, String authToken) throws S return retVal; } + public static List listUsers(String cloudAccountId, String authToken) throws SpotinstHttpException { + + // Init retVal + List retVal = new ArrayList<>(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (cloudAccountId != null) { + queryParams.put("accountId", cloudAccountId); + } + + // Get the headers for AWS. + Map headers = buildHeaders(authToken); + + //Build URI + String uri = String.format("%s/setup/user", apiEndpoint); + + // Send the request. + RestResponse response = RestClient.sendGet(uri, headers, queryParams); + + // Handle the response. + GetAccountUsersApiResponse accountUsersResponse = getCastedResponse(response, GetAccountUsersApiResponse.class); + + if (accountUsersResponse.getResponse().getCount() > 0) { + retVal = accountUsersResponse.getResponse().getItems(); + } + + return retVal; + } + + public static Boolean updatePermissions(String authToken, UpdateUsersPermissionsRequest request, String accountId) throws SpotinstHttpException { + + // Init retVal + Boolean retVal = false; + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (accountId != null) { + queryParams.put("accountId", accountId); + } + + // Get the headers for AWS. + Map headers = buildHeaders(authToken); + + //Build URI + String uri = String.format("%s/setup/account/%s/user", apiEndpoint, accountId); + + // Write to json + Map updateRequest = new HashMap<>(); + updateRequest.put("account", request); + String body = JsonMapper.toJson(updateRequest); + + // Send the request. + RestResponse response = RestClient.sendPut(uri, body, headers, queryParams); + + // Handle the response. + BaseServiceEmptyResponse emptyResponse = getCastedResponse(response, BaseServiceEmptyResponse.class); + if (emptyResponse.getResponse().getStatus().getCode() == HttpStatus.SC_OK) { + retVal = true; + } + + return retVal; + } + + public static List apiUsersPermissions(String cloudAccountId, String authToken) throws SpotinstHttpException { + + // Init retVal + List retVal = new ArrayList<>(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (cloudAccountId != null) { + queryParams.put("accountId", cloudAccountId); + } + + // Get the headers for AWS. + Map headers = buildHeaders(authToken); + + //Build URI + String uri = String.format("%s/setup/user/permission", apiEndpoint); + + // Send the request. + RestResponse response = RestClient.sendGet(uri, headers, queryParams); + + // Handle the response. + GetUserPermissionsApiResponse accountUsersResponse = getCastedResponse(response, GetUserPermissionsApiResponse.class); + + if (accountUsersResponse.getResponse().getCount() > 0) { + retVal = accountUsersResponse.getResponse().getItems(); + } + + return retVal; + } + } From 14141420e7ae6794568647b593088590ec7e139e Mon Sep 17 00:00:00 2001 From: Amrutha Ramanathan <105342664+ramrutha497@users.noreply.github.com> Date: Tue, 24 Jan 2023 07:40:42 +0530 Subject: [PATCH 2/6] AssignUsersToAccount DetachUsers ListAccessPolicies APIs --- .../sdkjava/model/ISpotAccountAdminRepo.java | 9 ++ .../model/SpotinstAccountAdminClient.java | 76 +++++++++++- .../admin/account/AccountConverter.java | 61 ++++++++++ .../admin/account/SpotAccountAdminRepo.java | 51 ++++++++ .../account/AssignUsersToAccountsRequest.java | 108 +++++++++++++++++ .../admin/account/UserDetachRequest.java | 45 +++++++ .../account/SpotAccountAdminService.java | 111 ++++++++++++++++++ 7 files changed, 457 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/spotinst/sdkjava/model/requests/admin/account/AssignUsersToAccountsRequest.java create mode 100644 src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java index 3db5ccda2..5dbfc09b2 100644 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java @@ -1,8 +1,11 @@ package com.spotinst.sdkjava.model; import com.spotinst.sdkjava.model.bl.admin.account.*; +import com.spotinst.sdkjava.model.bl.admin.organization.Policy; +import com.spotinst.sdkjava.model.requests.admin.account.AssignUsersToAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UserDetachRequest; import java.util.List; @@ -16,4 +19,10 @@ public interface ISpotAccountAdminRepo extends IRepository updateUsersPermission(String authToken, UpdateUsersPermissionsRequest request, String accountId); RepoGenericResponse> getUserPermissions(String authToken, String accountId); + + RepoGenericResponse assignUsersToAccounts(String authToken, AssignUsersToAccountsRequest request, String accountId); + + RepoGenericResponse detachUser(String accountId, String authToken, UserDetachRequest request); + + RepoGenericResponse> listAccessPolicies(String authToken, String accountId); } diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java index dbb21d04f..7e00108f8 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java @@ -5,10 +5,8 @@ import com.spotinst.sdkjava.exception.HttpError; import com.spotinst.sdkjava.exception.SpotinstHttpException; import com.spotinst.sdkjava.model.bl.admin.account.*; -import com.spotinst.sdkjava.model.requests.admin.account.AccountDeleteRequest; -import com.spotinst.sdkjava.model.requests.admin.account.ListAllAccountsRequest; -import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; -import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.bl.admin.organization.Policy; +import com.spotinst.sdkjava.model.requests.admin.account.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -224,4 +222,74 @@ public List getUserPermissions(String accountId) { return retVal; } + + public Boolean assignUsersToAccount(AssignUsersToAccountsRequest request, String accountId) { + + Boolean retVal; + + RepoGenericResponse isUserPermissionUpdated = + getSpotAccountAdminRepo().assignUsersToAccounts(authToken, request, accountId); + + if (isUserPermissionUpdated.isRequestSucceed()) { + retVal = isUserPermissionUpdated.getValue(); + } + else { + List httpExceptions = isUserPermissionUpdated.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + + LOGGER.error( + String.format("Error encountered while attempting to add users to account: %s. Code: %s. Message: %s.", + accountId, httpException.getCode(), httpException.getMessage())); + + throw new SpotinstHttpException(httpException.getMessage()); + } + + return retVal; + } + + public Boolean detachUser(UserDetachRequest userDetachRequest, String accountId) { + + Boolean retVal; + + RepoGenericResponse userDetachResponse = + getSpotAccountAdminRepo().detachUser(accountId, authToken, userDetachRequest); + + if (userDetachResponse.isRequestSucceed()) { + retVal = userDetachResponse.getValue(); + } + else { + List httpExceptions = userDetachResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + + LOGGER.error( + String.format("Error encountered while attempting to detach user from account: %s. Code: %s. Message: %s.", + accountId, httpException.getCode(), httpException.getMessage())); + + throw new SpotinstHttpException(httpException.getMessage()); + } + + return retVal; + } + + public List listAccessPolicies(String accountId) { + + List retVal; + + RepoGenericResponse> listPoliciesResponse = + getSpotAccountAdminRepo().listAccessPolicies(authToken, accountId); + + if (listPoliciesResponse.isRequestSucceed()) { + retVal = listPoliciesResponse.getValue(); + } + else { + List httpExceptions = listPoliciesResponse.getHttpExceptions(); + HttpError httpException = httpExceptions.get(0); + LOGGER.error( + String.format("Error encountered while attempting to get the list of acess policies. Code: %s. Message: %s.", + httpException.getCode(), httpException.getMessage())); + throw new SpotinstHttpException(httpException.getMessage()); + } + + return retVal; + } } diff --git a/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java b/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java index 679da3453..16b90d4bf 100644 --- a/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java +++ b/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java @@ -1,10 +1,19 @@ package com.spotinst.sdkjava.model.converters.admin.account; import com.spotinst.sdkjava.model.api.admin.account.*; +import com.spotinst.sdkjava.model.api.admin.organization.ApiPolicy; +import com.spotinst.sdkjava.model.api.admin.organization.ApiPolicyContent; import com.spotinst.sdkjava.model.bl.admin.account.Account; import com.spotinst.sdkjava.model.bl.admin.account.BlAccountAdmin; import com.spotinst.sdkjava.model.bl.admin.account.Users; import com.spotinst.sdkjava.model.bl.admin.account.UsersPermissions; +import com.spotinst.sdkjava.model.bl.admin.organization.Policy; +import com.spotinst.sdkjava.model.bl.admin.organization.PolicyContent; +import com.spotinst.sdkjava.model.bl.admin.organization.PolicyStatement; +import com.spotinst.sdkjava.model.converters.admin.organization.AdminOrganizationConverter; + +import java.util.List; +import java.util.stream.Collectors; public class AccountConverter { @@ -137,6 +146,58 @@ public static UsersPermissions toBl(ApiUsersPermissions src) { return retVal; } + public static Policy toBl(ApiPolicy src) { + Policy retVal = null; + + if (src != null) { + Policy.Builder accessPolicyBuilder = Policy.Builder.get(); + + if (src.isCreatedAtSet()) { + accessPolicyBuilder.setCreatedAt(src.getCreatedAt()); + } + + if (src.isDescriptionSet()) { + accessPolicyBuilder.setDescription(src.getDescription()); + } + + if (src.isIdSet()) { + accessPolicyBuilder.setId(src.getId()); + } + + if (src.isNameSet()) { + accessPolicyBuilder.setName(src.getName()); + } + + if (src.isPolicyContentSet()) { + accessPolicyBuilder.setPolicyContent(toBl(src.getPolicyContent())); + } + + if (src.isUpdatedAtSet()) { + accessPolicyBuilder.setUpdatedAt(src.getUpdatedAt()); + } + + retVal = accessPolicyBuilder.build(); + + } + + return retVal; + } + + public static PolicyContent toBl(ApiPolicyContent src) { + PolicyContent policyContent = null; + + if (src != null) { + policyContent = new PolicyContent(); + + if (src.isStatementSet()) { + List statements = + src.getStatements().stream().map(AdminOrganizationConverter::toBl).collect(Collectors.toList()); + policyContent.setStatements(statements); + } + } + return policyContent; + } + //region DAL -> BL public static Account toBl(ApiAccount src) { Account retVal = null; diff --git a/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java b/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java index db6afbfad..64b0c5028 100644 --- a/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java @@ -8,13 +8,17 @@ import com.spotinst.sdkjava.model.api.admin.account.ApiAccount; import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; +import com.spotinst.sdkjava.model.api.admin.organization.ApiPolicy; import com.spotinst.sdkjava.model.bl.admin.account.Users; import com.spotinst.sdkjava.model.bl.admin.account.UsersPermissions; +import com.spotinst.sdkjava.model.bl.admin.organization.Policy; import com.spotinst.sdkjava.model.converters.admin.account.AccountConverter; import com.spotinst.sdkjava.model.bl.admin.account.BlAccountAdmin; import com.spotinst.sdkjava.model.bl.admin.account.Account; +import com.spotinst.sdkjava.model.requests.admin.account.AssignUsersToAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UserDetachRequest; import com.spotinst.sdkjava.model.service.admin.account.SpotAccountAdminService; import java.nio.file.attribute.UserPrincipal; @@ -142,4 +146,51 @@ public RepoGenericResponse> getUserPermissions(String aut return retVal; } + + @Override + public RepoGenericResponse assignUsersToAccounts(String authToken, AssignUsersToAccountsRequest request, String accountId) { + RepoGenericResponse retVal; + + try { + Boolean assignUsers = SpotAccountAdminService.assignUsersToAccounts(request, accountId, authToken); + retVal = new RepoGenericResponse<>(assignUsers); + } + catch (SpotinstHttpException e) { + retVal = ExceptionHelper.handleHttpException(e); + } + + return retVal; + } + + @Override + public RepoGenericResponse detachUser(String accountId, String authToken, UserDetachRequest request) { + RepoGenericResponse retVal; + + try { + Boolean updated = SpotAccountAdminService.detachUser(accountId, authToken, request); + retVal = new RepoGenericResponse<>(updated); + + } + catch (SpotinstHttpException e) { + retVal = ExceptionHelper.handleHttpException(e); + } + + return retVal; + } + + @Override + public RepoGenericResponse> listAccessPolicies(String authToken, String accountId) { + RepoGenericResponse> retVal; + + try { + List apiPolicyList = SpotAccountAdminService.apiPolicyList(accountId, authToken); + List usersList = apiPolicyList.stream().map(AccountConverter::toBl).collect(Collectors.toList()); + retVal = new RepoGenericResponse<>(usersList); + } + catch (SpotinstHttpException e) { + retVal = ExceptionHelper.handleHttpException(e); + } + + return retVal; + } } diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/AssignUsersToAccountsRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/AssignUsersToAccountsRequest.java new file mode 100644 index 000000000..9f35a8ac6 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/AssignUsersToAccountsRequest.java @@ -0,0 +1,108 @@ +package com.spotinst.sdkjava.model.requests.admin.account; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class AssignUsersToAccountsRequest { + //region Members + @JsonIgnore + private String accountId; + private String permissionStrategy; + private String role; + private String policyIds; + private String userId; + private String userEmail; + //endregion + + //region Constructor + private AssignUsersToAccountsRequest() { + } + //endregion + public String getAccountId() { + return this.accountId; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } + + public String getPermissionStrategy() { + return this.permissionStrategy; + } + + public void setPermissionStrategy(String permissionStrategy) { + this.permissionStrategy = permissionStrategy; + } + + public String getRole() { + return this.role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getPolicyIds() { + return this.policyIds; + } + + public void setPolicyIds(String policyIds) { + this.policyIds = policyIds; + } + + public String getUserId() { + return this.userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getUserEmail() { + return this.userEmail; + } + + public void setUserEmail(String userEmail) { + this.userEmail = userEmail; + } + + //endregion + + //region Builder class + public static class Builder { + private AssignUsersToAccountsRequest request; + + private Builder() { + this.request = new AssignUsersToAccountsRequest(); + } + + public static AssignUsersToAccountsRequest.Builder get() { + return new Builder(); + } + + public AssignUsersToAccountsRequest.Builder setPermissionStrategy(final String permissionStrategy) { + request.setPermissionStrategy(permissionStrategy); + return this; + } + + public AssignUsersToAccountsRequest.Builder setRole(final String role) { + request.setRole(role); + return this; + } + + public AssignUsersToAccountsRequest.Builder setPolicyIds(final String policyIds) { + request.setPolicyIds(policyIds); + return this; + } + + public AssignUsersToAccountsRequest.Builder setUserId(final String userId) { + request.setUserId(userId); + return this; + } + + public AssignUsersToAccountsRequest build() { + return request; + } + } + //endregion + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java new file mode 100644 index 000000000..f5639d736 --- /dev/null +++ b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java @@ -0,0 +1,45 @@ +package com.spotinst.sdkjava.model.requests.admin.account; + +public class UserDetachRequest { + + private String userEmail; + + private UserDetachRequest() { + } + + //Getters & Setters + public String getUserEmail() { + return userEmail; + } + + public void setUserEmail(String account) { + this.userEmail = account; + } + + + + //Builder class + public static class Builder { + + private UserDetachRequest accountDeletionRequest; + + private Builder() { + this.accountDeletionRequest = new UserDetachRequest(); + } + + public static UserDetachRequest.Builder get() { + return new Builder(); + } + + public UserDetachRequest.Builder setAccountId(final String account) { + accountDeletionRequest.setUserEmail(account); + return this; + } + + public UserDetachRequest build() { + return accountDeletionRequest; + } + + } + +} diff --git a/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java b/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java index 805438988..a45350c59 100644 --- a/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java +++ b/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java @@ -8,10 +8,14 @@ import com.spotinst.sdkjava.model.api.admin.account.ApiAccount; import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; +import com.spotinst.sdkjava.model.api.admin.organization.ApiPolicy; +import com.spotinst.sdkjava.model.requests.admin.account.AssignUsersToAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UserDetachRequest; import com.spotinst.sdkjava.model.responses.admin.account.*; +import com.spotinst.sdkjava.model.responses.admin.organization.PolicyApiResponse; import org.apache.http.HttpStatus; import java.util.*; @@ -262,4 +266,111 @@ public static List apiUsersPermissions(String cloudAccountI return retVal; } + public static Boolean assignUsersToAccounts(AssignUsersToAccountsRequest request, String accountId, String authToken) throws SpotinstHttpException { + + // Init retVal + Boolean retVal = false; + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + // Get the headers for AWS. + Map headers = buildHeaders(authToken); + + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (accountId != null) { + queryParams.put("accountId", accountId); + } + + //Build URI + String uri = String.format("%s/setup/accountUserMapping", apiEndpoint); + + // Write to json + Map updateRequest = new HashMap<>(); + updateRequest.put("account", request); + String body = JsonMapper.toJson(updateRequest); + + // Send the request. + RestResponse response = RestClient.sendPost(uri, body, headers, null); + + // Handle the response. + BaseServiceEmptyResponse emptyResponse = getCastedResponse(response, BaseServiceEmptyResponse.class); + if (emptyResponse.getResponse().getStatus().getCode() == HttpStatus.SC_OK) { + retVal = true; + } + + return retVal; + } + + public static Boolean detachUser(String accountId, String authToken, UserDetachRequest request) throws SpotinstHttpException { + + // Init retVal + Boolean retVal = false; + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + Map queryParams = new HashMap<>(); + + // Get the headers for AWS. + Map headers = buildHeaders(authToken); + + //Build URI + String uri = String.format("%s/setup/account/%s/user", apiEndpoint, accountId); + + // Write to json + Map userDetachRequestMap = new HashMap<>(); + userDetachRequestMap.put("account", request); + String body = JsonMapper.toJson(userDetachRequestMap); + + // Send the request. + RestResponse response = RestClient.sendDelete(uri, body, headers, queryParams); + + // Handle the response. + BaseServiceEmptyResponse emptyResponse = getCastedResponse(response, BaseServiceEmptyResponse.class); + if (emptyResponse.getResponse().getStatus().getCode() == HttpStatus.SC_OK) { + retVal = true; + } + + return retVal; + } + + public static List apiPolicyList(String cloudAccountId, String authToken) throws SpotinstHttpException { + + // Init retVal + List retVal = new ArrayList<>(); + + // Get endpoint + SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); + String apiEndpoint = config.getEndpoint(); + + Map queryParams = new HashMap<>(); + + // Add account Id Query param + if (cloudAccountId != null) { + queryParams.put("accountId", cloudAccountId); + } + + // Get the headers for AWS. + Map headers = buildHeaders(authToken); + + //Build URI + String uri = String.format("%s/setup/access/policy", apiEndpoint); + + // Send the request. + RestResponse response = RestClient.sendGet(uri, headers, queryParams); + + // Handle the response. + PolicyApiResponse accessPoliciesResponse = getCastedResponse(response, PolicyApiResponse.class); + + if (accessPoliciesResponse.getResponse().getCount() > 0) { + retVal = accessPoliciesResponse.getResponse().getItems(); + } + + return retVal; + } } From e09a3b0257590db67b27a114b4d4ae7cf7b18a44 Mon Sep 17 00:00:00 2001 From: Anurag Sharma Date: Fri, 27 Jan 2023 23:54:36 +0530 Subject: [PATCH 3/6] [maven-release-plugin] prepare release spotinst-sdk-java-1.0.116 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0cbd86f15..7403737ea 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.spotinst spotinst-sdk-java - 1.0.116-SNAPSHOT + 1.0.116 jar spotinst-sdk-java A Spotinst Java SDK @@ -20,7 +20,7 @@ scm:git:git://github.com/spotinst/spotinst-sdk-java.git scm:git:https://github.com/spotinst/spotinst-sdk-java scm:git:https://github.com/spotinst/spotinst-sdk-java - HEAD + spotinst-sdk-java-1.0.116 From 007e3e99f3847c8feeea74421404356a1dcd3f1e Mon Sep 17 00:00:00 2001 From: Anurag Sharma Date: Fri, 27 Jan 2023 23:54:41 +0530 Subject: [PATCH 4/6] [maven-release-plugin] prepare for next development iteration --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7403737ea..d174ed226 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.spotinst spotinst-sdk-java - 1.0.116 + 1.0.117-SNAPSHOT jar spotinst-sdk-java A Spotinst Java SDK @@ -20,7 +20,7 @@ scm:git:git://github.com/spotinst/spotinst-sdk-java.git scm:git:https://github.com/spotinst/spotinst-sdk-java scm:git:https://github.com/spotinst/spotinst-sdk-java - spotinst-sdk-java-1.0.116 + HEAD From 2c1cf86cc041e55afd51eda0763418d8930e7ef5 Mon Sep 17 00:00:00 2001 From: Anurag Sharma Date: Sat, 28 Jan 2023 02:58:33 +0530 Subject: [PATCH 5/6] Minor changes in method and class names --- .../sdkjava/model/ISpotAccountAdminRepo.java | 6 ++-- .../model/SpotinstAccountAdminClient.java | 30 +++++++++---------- ...rmissions.java => ApiUserPermissions.java} | 4 +-- ...sPermissions.java => UserPermissions.java} | 10 +++---- .../admin/account/AccountConverter.java | 8 ++--- .../admin/account/SpotAccountAdminRepo.java | 19 ++++++------ ...java => UpdateUserPermissionsRequest.java} | 23 +++++++------- .../GetUserPermissionsApiResponse.java | 5 ++-- .../account/SpotAccountAdminService.java | 14 ++++----- 9 files changed, 57 insertions(+), 62 deletions(-) rename src/main/java/com/spotinst/sdkjava/model/api/admin/account/{ApiUsersPermissions.java => ApiUserPermissions.java} (96%) rename src/main/java/com/spotinst/sdkjava/model/bl/admin/account/{UsersPermissions.java => UserPermissions.java} (93%) rename src/main/java/com/spotinst/sdkjava/model/requests/admin/account/{UpdateUsersPermissionsRequest.java => UpdateUserPermissionsRequest.java} (70%) diff --git a/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java b/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java index 5dbfc09b2..baff051dd 100644 --- a/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/ISpotAccountAdminRepo.java @@ -4,7 +4,7 @@ import com.spotinst.sdkjava.model.bl.admin.organization.Policy; import com.spotinst.sdkjava.model.requests.admin.account.AssignUsersToAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; -import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUserPermissionsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UserDetachRequest; import java.util.List; @@ -16,9 +16,9 @@ public interface ISpotAccountAdminRepo extends IRepository> getUsers(String authToken, String accountId); - RepoGenericResponse updateUsersPermission(String authToken, UpdateUsersPermissionsRequest request, String accountId); + RepoGenericResponse updateUserPermissions(String authToken, UpdateUserPermissionsRequest request, String accountId); - RepoGenericResponse> getUserPermissions(String authToken, String accountId); + RepoGenericResponse> getUsersPermissions(String authToken, String accountId); RepoGenericResponse assignUsersToAccounts(String authToken, AssignUsersToAccountsRequest request, String accountId); diff --git a/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java b/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java index 7e00108f8..0dce2fe35 100755 --- a/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java +++ b/src/main/java/com/spotinst/sdkjava/model/SpotinstAccountAdminClient.java @@ -177,12 +177,12 @@ public List getUsers(String accountId) { return retVal; } - public Boolean updateUserPermission(UpdateUsersPermissionsRequest request, String accountId) { + public Boolean updateUserPermissions(UpdateUserPermissionsRequest request, String accountId) { - Boolean retVal; + Boolean retVal; RepoGenericResponse isUserPermissionUpdated = - getSpotAccountAdminRepo().updateUsersPermission(authToken, request, accountId); + getSpotAccountAdminRepo().updateUserPermissions(authToken, request, accountId); if (isUserPermissionUpdated.isRequestSucceed()) { retVal = isUserPermissionUpdated.getValue(); @@ -201,18 +201,18 @@ public Boolean updateUserPermission(UpdateUsersPermissionsRequest request, Strin return retVal; } - public List getUserPermissions(String accountId) { + public List getUsersPermissions(String accountId) { - List retVal; + List retVal; - RepoGenericResponse> listAccountResponse = - getSpotAccountAdminRepo().getUserPermissions(authToken, accountId); + RepoGenericResponse> response = + getSpotAccountAdminRepo().getUsersPermissions(authToken, accountId); - if (listAccountResponse.isRequestSucceed()) { - retVal = listAccountResponse.getValue(); + if (response.isRequestSucceed()) { + retVal = response.getValue(); } else { - List httpExceptions = listAccountResponse.getHttpExceptions(); + List httpExceptions = response.getHttpExceptions(); HttpError httpException = httpExceptions.get(0); LOGGER.error( String.format("Error encountered while attempting to get the list of users. Code: %s. Message: %s.", @@ -223,18 +223,18 @@ public List getUserPermissions(String accountId) { return retVal; } - public Boolean assignUsersToAccount(AssignUsersToAccountsRequest request, String accountId) { + public Boolean assignUsersToAccounts(AssignUsersToAccountsRequest request, String accountId) { Boolean retVal; - RepoGenericResponse isUserPermissionUpdated = + RepoGenericResponse response = getSpotAccountAdminRepo().assignUsersToAccounts(authToken, request, accountId); - if (isUserPermissionUpdated.isRequestSucceed()) { - retVal = isUserPermissionUpdated.getValue(); + if (response.isRequestSucceed()) { + retVal = response.getValue(); } else { - List httpExceptions = isUserPermissionUpdated.getHttpExceptions(); + List httpExceptions = response.getHttpExceptions(); HttpError httpException = httpExceptions.get(0); LOGGER.error( diff --git a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java similarity index 96% rename from src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java rename to src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java index 0820733ee..8127d9bf4 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsersPermissions.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java @@ -9,7 +9,7 @@ @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class ApiUsersPermissions { +public class ApiUserPermissions { //region Members @JsonIgnore private Set isSet; @@ -20,7 +20,7 @@ public class ApiUsersPermissions { //endregion //region Constructor - private ApiUsersPermissions() { + private ApiUserPermissions() { isSet = new HashSet<>(); } //endregion diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java similarity index 93% rename from src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java rename to src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java index c0c597b4c..cfc043233 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UsersPermissions.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java @@ -9,7 +9,7 @@ @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) -public class UsersPermissions { +public class UserPermissions { //region Members @JsonIgnore private Set isSet; @@ -20,7 +20,7 @@ public class UsersPermissions { //endregion //region Constructor - private UsersPermissions() { + private UserPermissions() { isSet = new HashSet<>(); } //endregion @@ -74,10 +74,10 @@ public void setUserId(String userId) { //region Builder class public static class Builder { - private UsersPermissions account; + private UserPermissions account; private Builder() { - this.account = new UsersPermissions(); + this.account = new UserPermissions(); } public static Builder get() { @@ -104,7 +104,7 @@ public Builder setUserId(final String userId) { return this; } - public UsersPermissions build() { + public UserPermissions build() { return account; } } diff --git a/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java b/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java index 16b90d4bf..fb04168aa 100644 --- a/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java +++ b/src/main/java/com/spotinst/sdkjava/model/converters/admin/account/AccountConverter.java @@ -6,7 +6,7 @@ import com.spotinst.sdkjava.model.bl.admin.account.Account; import com.spotinst.sdkjava.model.bl.admin.account.BlAccountAdmin; import com.spotinst.sdkjava.model.bl.admin.account.Users; -import com.spotinst.sdkjava.model.bl.admin.account.UsersPermissions; +import com.spotinst.sdkjava.model.bl.admin.account.UserPermissions; import com.spotinst.sdkjava.model.bl.admin.organization.Policy; import com.spotinst.sdkjava.model.bl.admin.organization.PolicyContent; import com.spotinst.sdkjava.model.bl.admin.organization.PolicyStatement; @@ -117,11 +117,11 @@ public static Users toBl(ApiUsers src) { } //endregion - public static UsersPermissions toBl(ApiUsersPermissions src) { - UsersPermissions retVal = null; + public static UserPermissions toBl(ApiUserPermissions src) { + UserPermissions retVal = null; if (src != null) { - UsersPermissions.Builder accountUserBuilder = UsersPermissions.Builder.get(); + UserPermissions.Builder accountUserBuilder = UserPermissions.Builder.get(); if (src.isPermissionStrategySet()) { accountUserBuilder.setPermissionStrategy(src.getPermissionStrategy()); diff --git a/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java b/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java index 64b0c5028..fe8779623 100644 --- a/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java +++ b/src/main/java/com/spotinst/sdkjava/model/repo/admin/account/SpotAccountAdminRepo.java @@ -7,21 +7,20 @@ import com.spotinst.sdkjava.model.api.admin.account.ApiAccountAdmin; import com.spotinst.sdkjava.model.api.admin.account.ApiAccount; import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; -import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; +import com.spotinst.sdkjava.model.api.admin.account.ApiUserPermissions; import com.spotinst.sdkjava.model.api.admin.organization.ApiPolicy; import com.spotinst.sdkjava.model.bl.admin.account.Users; -import com.spotinst.sdkjava.model.bl.admin.account.UsersPermissions; +import com.spotinst.sdkjava.model.bl.admin.account.UserPermissions; import com.spotinst.sdkjava.model.bl.admin.organization.Policy; import com.spotinst.sdkjava.model.converters.admin.account.AccountConverter; import com.spotinst.sdkjava.model.bl.admin.account.BlAccountAdmin; import com.spotinst.sdkjava.model.bl.admin.account.Account; import com.spotinst.sdkjava.model.requests.admin.account.AssignUsersToAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; -import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUserPermissionsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UserDetachRequest; import com.spotinst.sdkjava.model.service.admin.account.SpotAccountAdminService; -import java.nio.file.attribute.UserPrincipal; import java.util.List; import java.util.stream.Collectors; @@ -117,7 +116,7 @@ public RepoGenericResponse> getUsers(String authToken, String accoun } @Override - public RepoGenericResponse updateUsersPermission(String authToken, UpdateUsersPermissionsRequest request, String accountId) { + public RepoGenericResponse updateUserPermissions(String authToken, UpdateUserPermissionsRequest request, String accountId) { RepoGenericResponse retVal; try { @@ -132,12 +131,12 @@ public RepoGenericResponse updateUsersPermission(String authToken, Upda } @Override - public RepoGenericResponse> getUserPermissions(String authToken, String accountId) { - RepoGenericResponse> retVal; + public RepoGenericResponse> getUsersPermissions(String authToken, String accountId) { + RepoGenericResponse> retVal; try { - List apiUsersPermissions = SpotAccountAdminService.apiUsersPermissions(accountId, authToken); - List userPermissions = apiUsersPermissions.stream().map(AccountConverter::toBl).collect(Collectors.toList()); + List apiUserPermissions = SpotAccountAdminService.getUsersPermissions(accountId, authToken); + List userPermissions = apiUserPermissions.stream().map(AccountConverter::toBl).collect(Collectors.toList()); retVal = new RepoGenericResponse<>(userPermissions); } catch (SpotinstHttpException e) { @@ -183,7 +182,7 @@ public RepoGenericResponse> listAccessPolicies(String authToken, St RepoGenericResponse> retVal; try { - List apiPolicyList = SpotAccountAdminService.apiPolicyList(accountId, authToken); + List apiPolicyList = SpotAccountAdminService.listAccessPolicies(accountId, authToken); List usersList = apiPolicyList.stream().map(AccountConverter::toBl).collect(Collectors.toList()); retVal = new RepoGenericResponse<>(usersList); } diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUserPermissionsRequest.java similarity index 70% rename from src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java rename to src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUserPermissionsRequest.java index 9224c823d..7574aae91 100644 --- a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUsersPermissionsRequest.java +++ b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UpdateUserPermissionsRequest.java @@ -4,10 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; -import java.util.HashSet; -import java.util.Set; - -public class UpdateUsersPermissionsRequest { +public class UpdateUserPermissionsRequest { //region Members @JsonIgnore private String permissionStrategy; @@ -17,7 +14,7 @@ public class UpdateUsersPermissionsRequest { //endregion //region Constructor - private UpdateUsersPermissionsRequest() { + private UpdateUserPermissionsRequest() { } //endregion @@ -57,37 +54,37 @@ public void setUserId(String userId) { //region Builder class public static class Builder { - private UpdateUsersPermissionsRequest request; + private UpdateUserPermissionsRequest request; private Builder() { - this.request = new UpdateUsersPermissionsRequest(); + this.request = new UpdateUserPermissionsRequest(); } - public static UpdateUsersPermissionsRequest.Builder get() { + public static UpdateUserPermissionsRequest.Builder get() { return new Builder(); } - public UpdateUsersPermissionsRequest.Builder setPermissionStrategy(final String permissionStrategy) { + public UpdateUserPermissionsRequest.Builder setPermissionStrategy(final String permissionStrategy) { request.setPermissionStrategy(permissionStrategy); return this; } - public UpdateUsersPermissionsRequest.Builder setRole(final String role) { + public UpdateUserPermissionsRequest.Builder setRole(final String role) { request.setRole(role); return this; } - public UpdateUsersPermissionsRequest.Builder setPolicyIds(final String policyIds) { + public UpdateUserPermissionsRequest.Builder setPolicyIds(final String policyIds) { request.setPolicyIds(policyIds); return this; } - public UpdateUsersPermissionsRequest.Builder setUserId(final String userId) { + public UpdateUserPermissionsRequest.Builder setUserId(final String userId) { request.setUserId(userId); return this; } - public UpdateUsersPermissionsRequest build() { + public UpdateUserPermissionsRequest build() { return request; } } diff --git a/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java b/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java index 3acf995f4..a5278f198 100644 --- a/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java +++ b/src/main/java/com/spotinst/sdkjava/model/responses/admin/account/GetUserPermissionsApiResponse.java @@ -1,14 +1,13 @@ package com.spotinst.sdkjava.model.responses.admin.account; import com.spotinst.sdkjava.client.response.BaseServiceItemsResponse; -import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; -import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; +import com.spotinst.sdkjava.model.api.admin.account.ApiUserPermissions; /** * Created by Amrutha Ramanathan on 19-01-2023. */ -public class GetUserPermissionsApiResponse extends BaseServiceItemsResponse { +public class GetUserPermissionsApiResponse extends BaseServiceItemsResponse { } diff --git a/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java b/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java index a45350c59..3bfbaef59 100644 --- a/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java +++ b/src/main/java/com/spotinst/sdkjava/model/service/admin/account/SpotAccountAdminService.java @@ -7,11 +7,11 @@ import com.spotinst.sdkjava.model.api.admin.account.ApiAccountAdmin; import com.spotinst.sdkjava.model.api.admin.account.ApiAccount; import com.spotinst.sdkjava.model.api.admin.account.ApiUsers; -import com.spotinst.sdkjava.model.api.admin.account.ApiUsersPermissions; +import com.spotinst.sdkjava.model.api.admin.account.ApiUserPermissions; import com.spotinst.sdkjava.model.api.admin.organization.ApiPolicy; import com.spotinst.sdkjava.model.requests.admin.account.AssignUsersToAccountsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UpdateAccountRequest; -import com.spotinst.sdkjava.model.requests.admin.account.UpdateUsersPermissionsRequest; +import com.spotinst.sdkjava.model.requests.admin.account.UpdateUserPermissionsRequest; import com.spotinst.sdkjava.model.requests.admin.account.UserDetachRequest; import com.spotinst.sdkjava.model.responses.admin.account.*; @@ -192,7 +192,7 @@ public static List listUsers(String cloudAccountId, String authToken) return retVal; } - public static Boolean updatePermissions(String authToken, UpdateUsersPermissionsRequest request, String accountId) throws SpotinstHttpException { + public static Boolean updatePermissions(String authToken, UpdateUserPermissionsRequest request, String accountId) throws SpotinstHttpException { // Init retVal Boolean retVal = false; @@ -215,7 +215,7 @@ public static Boolean updatePermissions(String authToken, UpdateUsersPermissions String uri = String.format("%s/setup/account/%s/user", apiEndpoint, accountId); // Write to json - Map updateRequest = new HashMap<>(); + Map updateRequest = new HashMap<>(); updateRequest.put("account", request); String body = JsonMapper.toJson(updateRequest); @@ -231,10 +231,10 @@ public static Boolean updatePermissions(String authToken, UpdateUsersPermissions return retVal; } - public static List apiUsersPermissions(String cloudAccountId, String authToken) throws SpotinstHttpException { + public static List getUsersPermissions(String cloudAccountId, String authToken) throws SpotinstHttpException { // Init retVal - List retVal = new ArrayList<>(); + List retVal = new ArrayList<>(); // Get endpoint SpotinstHttpConfig config = SpotinstHttpContext.getInstance().getConfiguration(); @@ -339,7 +339,7 @@ public static Boolean detachUser(String accountId, String authToken, UserDetachR return retVal; } - public static List apiPolicyList(String cloudAccountId, String authToken) throws SpotinstHttpException { + public static List listAccessPolicies(String cloudAccountId, String authToken) throws SpotinstHttpException { // Init retVal List retVal = new ArrayList<>(); From eb1ee4d34c89a69118febb1341636753ffcace39 Mon Sep 17 00:00:00 2001 From: Anurag Sharma Date: Sat, 28 Jan 2023 03:17:32 +0530 Subject: [PATCH 6/6] Changed fields to string list as per specification --- .../api/admin/account/ApiUserPermissions.java | 7 ++++--- .../model/api/admin/account/ApiUsers.java | 7 ++++--- .../model/bl/admin/account/UserPermissions.java | 9 +++++---- .../sdkjava/model/bl/admin/account/Users.java | 9 +++++---- .../admin/account/UserDetachRequest.java | 16 +++++++--------- 5 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java index 8127d9bf4..dad253101 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUserPermissions.java @@ -6,6 +6,7 @@ import java.util.HashSet; import java.util.Set; +import java.util.List; @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) @@ -15,7 +16,7 @@ public class ApiUserPermissions { private Set isSet; private String permissionStrategy; private String role; - private String policyIds; + private List policyIds; private String userId; //endregion @@ -52,11 +53,11 @@ public void setRole(String role) { this.role = role; } - public String getPolicyIds() { + public List getPolicyIds() { return policyIds; } - public void setPolicyIds(String policyIds) { + public void setPolicyIds(List policyIds) { isSet.add("policyIds"); this.policyIds = policyIds; } diff --git a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java index 86fa6913b..3849e1fcd 100644 --- a/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java +++ b/src/main/java/com/spotinst/sdkjava/model/api/admin/account/ApiUsers.java @@ -8,6 +8,7 @@ import java.util.HashSet; import java.util.Set; +import java.util.List; @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) @@ -18,7 +19,7 @@ public class ApiUsers implements IPartialUpdateEntity { private Set isSet; private String displayName; private String email; - private String mappedAccountIds; + private List mappedAccountIds; private String userId; //endregion @@ -55,11 +56,11 @@ public void setEmail(String email) { this.email = email; } - public String getMappedAccountIds() { + public List getMappedAccountIds() { return mappedAccountIds; } - public void setMappedAccountIds(String mappedAccountIds) { + public void setMappedAccountIds(List mappedAccountIds) { isSet.add("mappedAccountIds"); this.mappedAccountIds = mappedAccountIds; } diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java index cfc043233..aeacb01cf 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/UserPermissions.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import java.util.HashSet; +import java.util.List; import java.util.Set; @JsonIgnoreProperties(ignoreUnknown = true) @@ -15,7 +16,7 @@ public class UserPermissions { private Set isSet; private String permissionStrategy; private String role; - private String policyIds; + private List policyIds; private String userId; //endregion @@ -52,11 +53,11 @@ public void setRole(String role) { this.role = role; } - public String getPolicyIds() { + public List getPolicyIds() { return policyIds; } - public void setPolicyIds(String policyIds) { + public void setPolicyIds(List policyIds) { isSet.add("policyIds"); this.policyIds = policyIds; } @@ -94,7 +95,7 @@ public Builder setRole(final String role) { return this; } - public Builder setPolicyIds(final String policyIds) { + public Builder setPolicyIds(final List policyIds) { account.setPolicyIds(policyIds); return this; } diff --git a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java index 8b1b34dc3..5078926ca 100644 --- a/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java +++ b/src/main/java/com/spotinst/sdkjava/model/bl/admin/account/Users.java @@ -6,6 +6,7 @@ import java.util.HashSet; import java.util.Set; +import java.util.List; @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) @@ -15,7 +16,7 @@ public class Users { private Set isSet; private String displayName; private String email; - private String mappedAccountIds; + private List mappedAccountIds; private String userId; //endregion @@ -52,11 +53,11 @@ public void setEmail(String email) { this.email = email; } - public String getMappedAccountIds() { + public List getMappedAccountIds() { return mappedAccountIds; } - public void setMappedAccountIds(String mappedAccountIds) { + public void setMappedAccountIds(List mappedAccountIds) { isSet.add("mappedAccountIds"); this.mappedAccountIds = mappedAccountIds; } @@ -94,7 +95,7 @@ public Builder setEmail(final String email) { return this; } - public Builder setMappedAccountIds(final String mappedAccountIds) { + public Builder setMappedAccountIds(final List mappedAccountIds) { account.setMappedAccountIds(mappedAccountIds); return this; } diff --git a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java index f5639d736..9c4dfbbbe 100644 --- a/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java +++ b/src/main/java/com/spotinst/sdkjava/model/requests/admin/account/UserDetachRequest.java @@ -12,32 +12,30 @@ public String getUserEmail() { return userEmail; } - public void setUserEmail(String account) { - this.userEmail = account; + public void setUserEmail(String email) { + this.userEmail = email; } - - //Builder class public static class Builder { - private UserDetachRequest accountDeletionRequest; + private UserDetachRequest request; private Builder() { - this.accountDeletionRequest = new UserDetachRequest(); + this.request = new UserDetachRequest(); } public static UserDetachRequest.Builder get() { return new Builder(); } - public UserDetachRequest.Builder setAccountId(final String account) { - accountDeletionRequest.setUserEmail(account); + public UserDetachRequest.Builder setUserEmail(final String email) { + request.setUserEmail(email); return this; } public UserDetachRequest build() { - return accountDeletionRequest; + return request; } }