X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=portal-BE%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fportal%2Fcontroller%2FMicroserviceController.java;fp=portal-BE%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fportal%2Fcontroller%2FMicroserviceController.java;h=b20452b02eee73c97619833d4dc5e5dcafc6725f;hb=8d84790f07aad48bebcbae1e53d6c7e99e697d5b;hp=0000000000000000000000000000000000000000;hpb=6aa4d5e4b2792d7cd5037ec8f5a87bfbaa0b1ade;p=portal.git 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 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 getMicroservice(HttpServletRequest request, HttpServletResponse response) { + return microserviceService.getAll(); + } + + @RequestMapping(value = {"/portalApi/microservices/{serviceId}"}, method = RequestMethod.PUT) + public PortalRestResponse 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 deleteMicroservice(HttpServletRequest request, HttpServletResponse response, + @PathVariable("serviceId") long serviceId) { + try { + ParameterizedTypeReference> typeRef = new ParameterizedTypeReference>() { + }; + // If this service is assoicated with widgets, cannnot be deleted + ResponseEntity> ans = template.getWidgets(serviceId, typeRef); + List 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", ""); + } +}