Skip to content
Snippets Groups Projects
Commit 97703dda authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4453 make elasticsearch calls for user/role creation idempotent

parent 85fe65c9
Branches
Tags
No related merge requests found
...@@ -61,10 +61,7 @@ public class OzgCloudElasticsearchService { ...@@ -61,10 +61,7 @@ public class OzgCloudElasticsearchService {
} }
public void createSecurityRoleIfMissing(String roleName) throws Exception { public void createSecurityRoleIfMissing(String roleName) throws Exception {
LOG.debug("{}: Check elasticsearch role...", roleName); remoteService.createOrUpdateSecurityRole(buildPutRoleRequestData(roleName));
if (!remoteService.existsSecurityRole(roleName)) {
remoteService.createSecurityRole(buildPutRoleRequestData(roleName));
}
} }
PutRoleRequestData buildPutRoleRequestData(String roleName) { PutRoleRequestData buildPutRoleRequestData(String roleName) {
...@@ -76,10 +73,7 @@ public class OzgCloudElasticsearchService { ...@@ -76,10 +73,7 @@ public class OzgCloudElasticsearchService {
} }
public void createSecurityUserIfMissing(String namespace, String password) throws Exception { public void createSecurityUserIfMissing(String namespace, String password) throws Exception {
LOG.debug("{}: Check elasticsearch user...", namespace); remoteService.createOrUpdateSecurityUser(buildPutUserRequestData(namespace, password));
if (!remoteService.existsSecurityUser(namespace)) {
remoteService.createSecurityUser(buildPutUserRequestData(namespace, password));
}
} }
PutUserRequestData buildPutUserRequestData(String namespace, String password) { PutUserRequestData buildPutUserRequestData(String namespace, String password) {
......
...@@ -46,11 +46,11 @@ public class ElasticsearchRemoteService { ...@@ -46,11 +46,11 @@ public class ElasticsearchRemoteService {
return !client.security().getRole(builder -> builder.name(roleName)).result().isEmpty(); return !client.security().getRole(builder -> builder.name(roleName)).result().isEmpty();
} }
public void createSecurityRole(PutRoleRequestData requestData) throws Exception { public void createOrUpdateSecurityRole(PutRoleRequestData requestData) throws Exception {
try { try {
LOG.info("{}: Create elasticsearch role ", requestData.getName()); LOG.info("{}: Create or update elasticsearch role ", requestData.getName());
client.security().putRole(createPutRoleRequest(requestData)); client.security().putRole(createPutRoleRequest(requestData));
LOG.info("{}: Create elasticsearch role successful", requestData.getName()); LOG.info("{}: Create or update elasticsearch role successful", requestData.getName());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("Create elasticsearch role " + requestData.getName() + "failed.", e); throw new RuntimeException("Create elasticsearch role " + requestData.getName() + "failed.", e);
} }
...@@ -78,11 +78,11 @@ public class ElasticsearchRemoteService { ...@@ -78,11 +78,11 @@ public class ElasticsearchRemoteService {
return !client.security().getUser(builder -> builder.username(userName)).result().isEmpty(); return !client.security().getUser(builder -> builder.username(userName)).result().isEmpty();
} }
public void createSecurityUser(PutUserRequestData requestData) throws Exception { public void createOrUpdateSecurityUser(PutUserRequestData requestData) throws Exception {
try { try {
LOG.info("{}: Create elasticsearch user", requestData.getUsername()); LOG.info("{}: Create or update elasticsearch user", requestData.getUsername());
client.security().putUser(createPutUserRequest(requestData)); client.security().putUser(createPutUserRequest(requestData));
LOG.info("{}: Create elasticsearch user successful", requestData.getUsername()); LOG.info("{}: Create or update elasticsearch user successful", requestData.getUsername());
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("Create elasticsearch user " + requestData.getUsername() + "failed.", e); throw new RuntimeException("Create elasticsearch user " + requestData.getUsername() + "failed.", e);
} }
......
...@@ -139,23 +139,14 @@ class OzgCloudElasticsearchServiceTest { ...@@ -139,23 +139,14 @@ class OzgCloudElasticsearchServiceTest {
private final PutRoleRequestData putRoleRequest = PutRoleRequestDataTestFactory.create(); private final PutRoleRequestData putRoleRequest = PutRoleRequestDataTestFactory.create();
@SneakyThrows
@Test
void shouldCheckIfSecurityRoleExists() {
service.createSecurityRoleIfMissing(NAMESPACE);
verify(remoteService).existsSecurityRole(NAMESPACE);
}
@SneakyThrows @SneakyThrows
@Test @Test
void shouldCreateSecurityRoleIfMissing() { void shouldCreateSecurityRoleIfMissing() {
when(remoteService.existsSecurityRole(any())).thenReturn(false);
doReturn(putRoleRequest).when(service).buildPutRoleRequestData(any()); doReturn(putRoleRequest).when(service).buildPutRoleRequestData(any());
service.createSecurityRoleIfMissing(NAMESPACE); service.createSecurityRoleIfMissing(NAMESPACE);
verify(remoteService).createSecurityRole(putRoleRequest); verify(remoteService).createOrUpdateSecurityRole(putRoleRequest);
} }
@DisplayName("create put role request data") @DisplayName("create put role request data")
...@@ -200,23 +191,14 @@ class OzgCloudElasticsearchServiceTest { ...@@ -200,23 +191,14 @@ class OzgCloudElasticsearchServiceTest {
private final PutUserRequestData putUserRequestData = PutUserRequestDataTestFactory.create(); private final PutUserRequestData putUserRequestData = PutUserRequestDataTestFactory.create();
@SneakyThrows
@Test
void shouldCheckIfSecurityUserExists() {
service.createSecurityUserIfMissing(NAMESPACE, PutUserRequestDataTestFactory.PASSWORD);
verify(remoteService).existsSecurityUser(NAMESPACE);
}
@SneakyThrows @SneakyThrows
@Test @Test
void shouldCreateSecurityUserIfMissing() { void shouldCreateSecurityUserIfMissing() {
when(remoteService.existsSecurityUser(any())).thenReturn(false);
doReturn(putUserRequestData).when(service).buildPutUserRequestData(any(), any()); doReturn(putUserRequestData).when(service).buildPutUserRequestData(any(), any());
service.createSecurityUserIfMissing(NAMESPACE, PutUserRequestDataTestFactory.PASSWORD); service.createSecurityUserIfMissing(NAMESPACE, PutUserRequestDataTestFactory.PASSWORD);
verify(remoteService).createSecurityUser(putUserRequestData); verify(remoteService).createOrUpdateSecurityUser(putUserRequestData);
} }
@DisplayName("create put user request data") @DisplayName("create put user request data")
......
...@@ -142,7 +142,7 @@ class ElasticsearchRemoteServiceITCase { ...@@ -142,7 +142,7 @@ class ElasticsearchRemoteServiceITCase {
@SneakyThrows @SneakyThrows
@Test @Test
void shouldCreateSecurityRole() { void shouldCreateSecurityRole() {
service.createSecurityRole(PutRoleRequestDataTestFactory.create()); service.createOrUpdateSecurityRole(PutRoleRequestDataTestFactory.create());
assertThat(existsSecurityRole()).isTrue(); assertThat(existsSecurityRole()).isTrue();
} }
...@@ -213,7 +213,7 @@ class ElasticsearchRemoteServiceITCase { ...@@ -213,7 +213,7 @@ class ElasticsearchRemoteServiceITCase {
@SneakyThrows @SneakyThrows
@Test @Test
void shouldCreateSecurityUser() { void shouldCreateSecurityUser() {
service.createSecurityUser(PutUserRequestDataTestFactory.create()); service.createOrUpdateSecurityUser(PutUserRequestDataTestFactory.create());
assertThat(existsSecurityUser()).isTrue(); assertThat(existsSecurityUser()).isTrue();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment