summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--portal-BE/src/main/java/org/onap/portal/controller/MicroserviceController.java148
-rw-r--r--portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java4
-rw-r--r--portal-BE/src/main/java/org/onap/portal/restTemplates/PortalWMSTemplate.java14
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/microservice/EpMicroserviceService.java87
-rw-r--r--portal-BE/src/main/java/org/onap/portal/service/microserviceParameter/EpMicroserviceParameterService.java8
5 files changed, 257 insertions, 4 deletions
diff --git a/portal-BE/src/main/java/org/onap/portal/controller/MicroserviceController.java b/portal-BE/src/main/java/org/onap/portal/controller/MicroserviceController.java
new file mode 100644
index 00000000..b20452b0
--- /dev/null
+++ b/portal-BE/src/main/java/org/onap/portal/controller/MicroserviceController.java
@@ -0,0 +1,148 @@
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+package org.onap.portal.controller;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import org.onap.portal.domain.db.ep.EpMicroservice;
+import org.onap.portal.domain.dto.PortalRestResponse;
+import org.onap.portal.domain.dto.PortalRestStatusEnum;
+import org.onap.portal.domain.dto.ecomp.WidgetCatalog;
+import org.onap.portal.restTemplates.PortalWMSTemplate;
+import org.onap.portal.service.microservice.EpMicroserviceService;
+import org.onap.portal.validation.DataValidator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+@SuppressWarnings("unchecked")
+@RestController
+@Configuration
+@EnableAspectJAutoProxy
+public class MicroserviceController {
+
+ private final DataValidator dataValidator = new DataValidator();
+
+ private final PortalWMSTemplate template;
+ private final EpMicroserviceService microserviceService;
+
+ @Autowired
+ public MicroserviceController(PortalWMSTemplate template, EpMicroserviceService microserviceService) {
+ this.template = template;
+ this.microserviceService = microserviceService;
+ }
+
+ @RequestMapping(value = {"/portalApi/microservices"}, method = RequestMethod.POST)
+ public PortalRestResponse<String> createMicroservice(HttpServletRequest request, HttpServletResponse response,
+ @Valid @RequestBody EpMicroservice newServiceData) {
+ if (newServiceData == null) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "FAILURE",
+ "MicroserviceData cannot be null or empty");
+ } else {
+ if (!dataValidator.isValid(newServiceData)) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR,
+ "ERROR", "MicroserviceData is not valid");
+ }
+ }
+ EpMicroservice serviceId = microserviceService.saveOne(newServiceData);
+ try {
+ microserviceService.saveServiceParameters(serviceId.getId(), newServiceData.getEpMicroserviceParameters());
+ } catch (Exception e) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage());
+ }
+ return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", "");
+ }
+
+ @RequestMapping(value = {"/portalApi/microservices"}, method = RequestMethod.GET)
+ public List<EpMicroservice> getMicroservice(HttpServletRequest request, HttpServletResponse response) {
+ return microserviceService.getAll();
+ }
+
+ @RequestMapping(value = {"/portalApi/microservices/{serviceId}"}, method = RequestMethod.PUT)
+ public PortalRestResponse<String> updateMicroservice(HttpServletRequest request, HttpServletResponse response,
+ @PathVariable("serviceId") long serviceId, @Valid @RequestBody EpMicroservice newServiceData) {
+
+ if (newServiceData == null) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "FAILURE",
+ "MicroserviceData cannot be null or empty");
+ } else {
+ if (!dataValidator.isValid(newServiceData)) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR,
+ "ERROR", "MicroserviceData is not valid");
+ }
+ }
+ try {
+ microserviceService.updateMicroservice(serviceId, newServiceData);
+ } catch (Exception e) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage());
+ }
+ return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", "");
+ }
+
+ @RequestMapping(value = {"/portalApi/microservices/{serviceId}"}, method = RequestMethod.DELETE)
+ public PortalRestResponse<String> deleteMicroservice(HttpServletRequest request, HttpServletResponse response,
+ @PathVariable("serviceId") long serviceId) {
+ try {
+ ParameterizedTypeReference<List<WidgetCatalog>> typeRef = new ParameterizedTypeReference<List<WidgetCatalog>>() {
+ };
+ // If this service is assoicated with widgets, cannnot be deleted
+ ResponseEntity<List<WidgetCatalog>> ans = template.getWidgets(serviceId, typeRef);
+ List<WidgetCatalog> widgets = ans.getBody();
+ if (widgets.size() == 0) {
+ microserviceService.deleteById(serviceId);
+ } else {
+ String sb = widgets.stream().map(WidgetCatalog::getName).collect(Collectors.joining("' "));
+ return new PortalRestResponse<>(PortalRestStatusEnum.WARN, "SOME WIDGETS ASSOICATE WITH THIS SERVICE",
+ sb);
+ }
+ } catch (Exception e) {
+ return new PortalRestResponse<>(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage());
+ }
+ return new PortalRestResponse<>(PortalRestStatusEnum.OK, "SUCCESS", "");
+ }
+}
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
index 74b051fe..a4180a27 100644
--- a/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
+++ b/portal-BE/src/main/java/org/onap/portal/domain/db/ep/EpMicroserviceParameter.java
@@ -80,10 +80,10 @@ CREATE TABLE `ep_microservice_parameter` (
@NamedQueries({
@NamedQuery(
name = "EpMicroserviceParameter.deleteByServiceId",
- query = "DELETE FROM EpMicroserviceParameter WHERE service_id =:SERVICEID"),
+ query = "DELETE FROM EpMicroserviceParameter WHERE serviceId.id =:SERVICEID"),
@NamedQuery(
name = "EpMicroserviceParameter.getParametersById",
- query = "FROM EpMicroserviceParameter WHERE service_id =:SERVICEID")
+ query = "FROM EpMicroserviceParameter WHERE serviceId.id =:SERVICEID")
})
@Table(name = "ep_microservice_parameter", indexes = {
diff --git a/portal-BE/src/main/java/org/onap/portal/restTemplates/PortalWMSTemplate.java b/portal-BE/src/main/java/org/onap/portal/restTemplates/PortalWMSTemplate.java
index 74707445..5b99e48a 100644
--- a/portal-BE/src/main/java/org/onap/portal/restTemplates/PortalWMSTemplate.java
+++ b/portal-BE/src/main/java/org/onap/portal/restTemplates/PortalWMSTemplate.java
@@ -1,10 +1,13 @@
package org.onap.portal.restTemplates;
+import java.util.List;
+import org.onap.portal.domain.dto.ecomp.WidgetCatalog;
import org.onap.portal.domain.dto.ecomp.WidgetServiceHeaders;
import org.onap.portal.service.WidgetMService;
import org.onap.portal.utils.EcompPortalUtils;
import org.onap.portalsdk.core.util.SystemProperties;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
@@ -15,7 +18,6 @@ import org.springframework.web.client.RestTemplate;
public class PortalWMSTemplate {
private final RestTemplate template = new RestTemplate();
-
private final WidgetMService widgetMService;
@Autowired
@@ -33,4 +35,14 @@ public class PortalWMSTemplate {
+ "/widget/microservices/widgetCatalog/parameters/" + widgetId,
HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), Long.class);
}
+
+ public ResponseEntity<List<WidgetCatalog>> getWidgets(long serviceId,
+ ParameterizedTypeReference<List<WidgetCatalog>> typeRef)
+ throws Exception {
+ return template.exchange(
+ EcompPortalUtils.widgetMsProtocol() + "://" + widgetMService
+ .getServiceLocation("widgets-service", SystemProperties.getProperty("microservices.widget.local.port"))
+ + "/widget/microservices/widgetCatalog/service/" + serviceId,
+ HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef);
+ }
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/microservice/EpMicroserviceService.java b/portal-BE/src/main/java/org/onap/portal/service/microservice/EpMicroserviceService.java
index e93ca857..0885b8c7 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/microservice/EpMicroserviceService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/microservice/EpMicroserviceService.java
@@ -1,7 +1,14 @@
package org.onap.portal.service.microservice;
import java.util.Optional;
+import java.util.Set;
import org.onap.portal.domain.db.ep.EpMicroservice;
+import org.onap.portal.domain.db.ep.EpMicroserviceParameter;
+import org.onap.portal.service.microserviceParameter.EpMicroserviceParameterService;
+import org.onap.portal.utils.EPCommonSystemProperties;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.util.SystemProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -10,11 +17,16 @@ import java.util.List;
@Service
public class EpMicroserviceService {
+ EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(EpMicroserviceService.class);
+
private final EpMicroserviceDao epMicroserviceDao;
+ private final EpMicroserviceParameterService epMicroserviceParameterService;
@Autowired
- public EpMicroserviceService(EpMicroserviceDao epMicroserviceDao) {
+ public EpMicroserviceService(EpMicroserviceDao epMicroserviceDao,
+ EpMicroserviceParameterService epMicroserviceParameterService) {
this.epMicroserviceDao = epMicroserviceDao;
+ this.epMicroserviceParameterService = epMicroserviceParameterService;
}
public List<EpMicroservice> saveAll(List<EpMicroservice> epMicroservices) {
@@ -24,4 +36,77 @@ public class EpMicroserviceService {
public Optional<EpMicroservice> getById(long serviceId) {
return epMicroserviceDao.findById(serviceId);
}
+
+ public EpMicroservice saveOne(EpMicroservice newServiceData) {
+ return epMicroserviceDao.save(newServiceData);
+ }
+
+ public List<EpMicroservice> getAll() {
+ return epMicroserviceDao.findAll();
+ }
+
+ public void deleteById(long serviceId) {
+ epMicroserviceDao.deleteById(serviceId);
+ }
+
+ @SuppressWarnings("OptionalGetWithoutIsPresent")
+ public void updateMicroservice(long serviceId, EpMicroservice newServiceData) throws Exception {
+ EpMicroservice newService = getById(serviceId).get();
+ try {
+ newService.setId(serviceId);
+ if (newService.getPassword() != null) {
+ if (newService.getPassword().equals(EPCommonSystemProperties.APP_DISPLAY_PASSWORD)) {
+ EpMicroservice oldMS = getById(serviceId).get();
+ newService.setPassword(oldMS.getPassword()); // keep the old password
+ } else {
+ newService.setPassword(encryptedPassword(newService.getPassword())); //new password
+ }
+ }
+ saveOne(newService);
+ List<EpMicroserviceParameter> oldService = epMicroserviceParameterService.getByServiceId(serviceId);
+ boolean foundParam;
+ for (EpMicroserviceParameter microserviceParameter : oldService) {
+ foundParam = false;
+ for (EpMicroserviceParameter service : newService.getEpMicroserviceParameters()) {
+ if (service.getId().equals(microserviceParameter.getId())) {
+ foundParam = true;
+ break;
+ }
+ }
+ if (!foundParam) {
+ epMicroserviceParameterService.deleteOne(microserviceParameter);
+ }
+ }
+ for (EpMicroserviceParameter param : newService.getEpMicroserviceParameters()) {
+ param.setServiceId(newService);
+ epMicroserviceParameterService.save(param);
+ }
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "updateMicroservice failed", e);
+ throw e;
+ }
+ saveServiceParameters(newService.getId(), newService.getEpMicroserviceParameters());
+ }
+
+ public void saveServiceParameters(Long newServiceId, Set<EpMicroserviceParameter> list) {
+ EpMicroservice newService = getById(newServiceId).get();
+ for (EpMicroserviceParameter para : list) {
+ para.setServiceId(newService);
+ epMicroserviceParameterService.save(para);
+ }
+ }
+
+ private String encryptedPassword(String decryptedPwd) throws Exception {
+ String result = "";
+ if (decryptedPwd != null && !decryptedPwd.isEmpty()) {
+ try {
+ result = CipherUtil.encryptPKC(decryptedPwd,
+ SystemProperties.getProperty(SystemProperties.Decryption_Key));
+ } catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, "encryptedPassword failed", e);
+ throw e;
+ }
+ }
+ return result;
+ }
}
diff --git a/portal-BE/src/main/java/org/onap/portal/service/microserviceParameter/EpMicroserviceParameterService.java b/portal-BE/src/main/java/org/onap/portal/service/microserviceParameter/EpMicroserviceParameterService.java
index f4359c5d..076e1834 100644
--- a/portal-BE/src/main/java/org/onap/portal/service/microserviceParameter/EpMicroserviceParameterService.java
+++ b/portal-BE/src/main/java/org/onap/portal/service/microserviceParameter/EpMicroserviceParameterService.java
@@ -77,6 +77,10 @@ public class EpMicroserviceParameterService {
return list;
}
+ public List<EpMicroserviceParameter> getByServiceId(long serviceId) {
+ return epMicroserviceParameterDao.getParametersById(serviceId);
+ }
+
private MicroserviceParameter epWidgetCatalogParameterToMicroserviceParameter(
final EpMicroserviceParameter microservice) {
return new MicroserviceParameter(microservice.getId(), microservice.getServiceId().getId(),
@@ -105,4 +109,8 @@ public class EpMicroserviceParameterService {
public List<EpMicroserviceParameter> saveAll(List<EpMicroserviceParameter> epMicroserviceParameters) {
return epMicroserviceParameterDao.saveAll(epMicroserviceParameters);
}
+
+ public void deleteOne(EpMicroserviceParameter microserviceParameter) {
+ epMicroserviceParameterDao.delete(microserviceParameter);
+ }
}