Skip to content
Snippets Groups Projects
Commit 57aa0f2f authored by Lukasz Lopatowski's avatar Lukasz Lopatowski
Browse files

NMAAS-984: Initializing only if configuration doesn't exist

parent 0987b34c
Branches
Tags
No related merge requests found
...@@ -145,3 +145,14 @@ kubernetes.deployment.smtpServerUsername=${SMTP_LOGIN} ...@@ -145,3 +145,14 @@ kubernetes.deployment.smtpServerUsername=${SMTP_LOGIN}
kubernetes.deployment.smtpServerPassword=${SMTP_PASSWORD} kubernetes.deployment.smtpServerPassword=${SMTP_PASSWORD}
kubernetes.deployment.defaultStorageClass=${K8S_DEPLOYMENT_DEFAULT_STORAGE_CLASS} kubernetes.deployment.defaultStorageClass=${K8S_DEPLOYMENT_DEFAULT_STORAGE_CLASS}
kubernetes.deployment.forceDedicatedWorkers=false kubernetes.deployment.forceDedicatedWorkers=false
# -------------------- #
# Portal configuration #
# -------------------- #
portal.config.maintenance=${PORTAL_MAINTENANCE_FLAG}
portal.config.ssoLoginAllowed=${PORTAL_SSO_ALLOWED_FLAG}
portal.config.defaultLanguage=${PORTAL_DEFAULT_LANG}
portal.config.testInstance=${PORTAL_TEST_INSTANCE_FLAG}
portal.config.sendAppInstanceFailureEmails=${PORTAL_SEND_FAILURE_NOTIF_FLAG}
# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu
portal.config.appInstanceFailureEmailList=${ADMIN_EMAIL}
package net.geant.nmaas.portal; package net.geant.nmaas.portal;
import lombok.extern.log4j.Log4j2;
import net.geant.nmaas.monitor.MonitorManager; import net.geant.nmaas.monitor.MonitorManager;
import net.geant.nmaas.monitor.ServiceType; import net.geant.nmaas.monitor.ServiceType;
import net.geant.nmaas.monitor.model.MonitorEntryView; import net.geant.nmaas.monitor.model.MonitorEntryView;
import net.geant.nmaas.monitor.scheduling.ScheduleManager; import net.geant.nmaas.monitor.scheduling.ScheduleManager;
import net.geant.nmaas.portal.api.configuration.ConfigurationView; import net.geant.nmaas.portal.api.configuration.ConfigurationView;
import net.geant.nmaas.portal.api.exception.ProcessingException; import net.geant.nmaas.portal.api.exception.ProcessingException;
import net.geant.nmaas.portal.exceptions.OnlyOneConfigurationSupportedException;
import net.geant.nmaas.portal.persistent.entity.Content; import net.geant.nmaas.portal.persistent.entity.Content;
import net.geant.nmaas.portal.persistent.entity.Domain; import net.geant.nmaas.portal.persistent.entity.Domain;
import net.geant.nmaas.portal.persistent.entity.Role; import net.geant.nmaas.portal.persistent.entity.Role;
...@@ -32,6 +34,7 @@ import java.util.Optional; ...@@ -32,6 +34,7 @@ import java.util.Optional;
@Configuration @Configuration
@ComponentScan(basePackages={"net.geant.nmaas.portal.service"}) @ComponentScan(basePackages={"net.geant.nmaas.portal.service"})
@Log4j2
public class PortalConfig { public class PortalConfig {
private PasswordEncoder passwordEncoder; private PasswordEncoder passwordEncoder;
...@@ -185,7 +188,11 @@ public class PortalConfig { ...@@ -185,7 +188,11 @@ public class PortalConfig {
.sendAppInstanceFailureEmails(this.sendAppInstanceFailureEmails) .sendAppInstanceFailureEmails(this.sendAppInstanceFailureEmails)
.appInstanceFailureEmailList(Arrays.asList(this.appInstanceFailureEmailList.split(";"))) .appInstanceFailureEmailList(Arrays.asList(this.appInstanceFailureEmailList.split(";")))
.build(); .build();
this.configurationManager.addConfiguration(configurationView); try {
this.configurationManager.setConfiguration(configurationView);
} catch (OnlyOneConfigurationSupportedException e) {
log.debug("Portal configuration already exists. Skipping initialization.");
}
} }
}; };
} }
......
...@@ -29,8 +29,8 @@ public class ConfigurationController { ...@@ -29,8 +29,8 @@ public class ConfigurationController {
@PostMapping @PostMapping
@PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')") @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN')")
@ResponseStatus(code = HttpStatus.CREATED) @ResponseStatus(code = HttpStatus.CREATED)
public Long addConfiguration(@RequestBody @Valid ConfigurationView configuration) { public Long setConfiguration(@RequestBody @Valid ConfigurationView configuration) {
return this.configurationManager.addConfiguration(configuration); return this.configurationManager.setConfiguration(configuration);
} }
@PutMapping(value="/{id}") @PutMapping(value="/{id}")
......
...@@ -25,7 +25,7 @@ public class ConfigurationView { ...@@ -25,7 +25,7 @@ public class ConfigurationView {
private boolean testInstance = false; private boolean testInstance = false;
@Builder.Default @Builder.Default
private boolean sendAppInstanceFailureEmails = false; private boolean sendAppInstanceFailureEmails = false;
@Builder.Default
private List<@Email String> appInstanceFailureEmailList = new ArrayList<>(); private List<@Email String> appInstanceFailureEmailList = new ArrayList<>();
public ConfigurationView(boolean maintenance, boolean ssoLoginAllowed, String defaultLanguage, boolean testInstance, boolean sendAppInstanceFailureEmails, List<String> appInstanceFailureEmailList) { public ConfigurationView(boolean maintenance, boolean ssoLoginAllowed, String defaultLanguage, boolean testInstance, boolean sendAppInstanceFailureEmails, List<String> appInstanceFailureEmailList) {
......
...@@ -4,7 +4,7 @@ import net.geant.nmaas.portal.api.configuration.ConfigurationView; ...@@ -4,7 +4,7 @@ import net.geant.nmaas.portal.api.configuration.ConfigurationView;
public interface ConfigurationManager { public interface ConfigurationManager {
Long addConfiguration(ConfigurationView configuration); Long setConfiguration(ConfigurationView configuration);
ConfigurationView getConfiguration(); ConfigurationView getConfiguration();
void updateConfiguration(Long id, ConfigurationView updatedConfiguration); void updateConfiguration(Long id, ConfigurationView updatedConfiguration);
} }
...@@ -13,7 +13,6 @@ import org.modelmapper.ModelMapper; ...@@ -13,7 +13,6 @@ import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.ApplicationScope; import org.springframework.web.context.annotation.ApplicationScope;
import java.util.ArrayList;
import java.util.Optional; import java.util.Optional;
@ApplicationScope @ApplicationScope
...@@ -33,7 +32,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager { ...@@ -33,7 +32,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager {
} }
@Override @Override
public Long addConfiguration(ConfigurationView configurationView) { public Long setConfiguration(ConfigurationView configurationView) {
if(repository.count() > 0){ if(repository.count() > 0){
throw new OnlyOneConfigurationSupportedException("Configuration already exists. It can be either removed or updated"); throw new OnlyOneConfigurationSupportedException("Configuration already exists. It can be either removed or updated");
} }
......
...@@ -59,18 +59,18 @@ public class ConfigurationManagerTest { ...@@ -59,18 +59,18 @@ public class ConfigurationManagerTest {
} }
@Test @Test
public void shouldAddConfiguration(){ public void shouldSetConfiguration(){
when(repository.count()).thenReturn(0L); when(repository.count()).thenReturn(0L);
Long id = configurationManager.addConfiguration(modelMapper.map(config, ConfigurationView.class)); Long id = configurationManager.setConfiguration(modelMapper.map(config, ConfigurationView.class));
assertEquals(config.getId(), id); assertEquals(config.getId(), id);
verify(repository, times(1)).save(any()); verify(repository, times(1)).save(any());
} }
@Test @Test
public void shouldNotAddMultipleConfig(){ public void shouldNotSetConfigIfAlreadyExists(){
assertThrows(OnlyOneConfigurationSupportedException.class, () -> { assertThrows(OnlyOneConfigurationSupportedException.class, () -> {
when(repository.count()).thenReturn(1L); when(repository.count()).thenReturn(1L);
configurationManager.addConfiguration(modelMapper.map(config, ConfigurationView.class)); configurationManager.setConfiguration(modelMapper.map(config, ConfigurationView.class));
}); });
} }
......
...@@ -139,4 +139,15 @@ kubernetes.deployment.smtpServerHostname=nmaas-postfix ...@@ -139,4 +139,15 @@ kubernetes.deployment.smtpServerHostname=nmaas-postfix
kubernetes.deployment.smtpServerPort=587 kubernetes.deployment.smtpServerPort=587
kubernetes.deployment.smtpServerUsername= kubernetes.deployment.smtpServerUsername=
kubernetes.deployment.smtpServerPassword= kubernetes.deployment.smtpServerPassword=
kubernetes.deployment.defaultStorageClass=storageClass kubernetes.deployment.defaultStorageClass=storageClass
\ No newline at end of file
# ------------------------ #
# Portal configuration #
# ------------------------ #
portal.config.maintenance=false
portal.config.ssoLoginAllowed=false
portal.config.defaultLanguage=en
portal.config.testInstance=false
portal.config.sendAppInstanceFailureEmails=false
# string - list of emails with ':' as a separator, e.g. admin1@nmaas.eu;admin2@nmaas.eu
portal.config.appInstanceFailureEmailList=admin@nmaas.eu
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment