X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ecomp-portal-BE-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fportalapp%2Fportal%2Fcontroller%2FMicroserviceController.java;fp=ecomp-portal-BE-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fportalapp%2Fportal%2Fcontroller%2FMicroserviceController.java;h=82d70ecd73e912184d53dd2d7f172450d8d3e76d;hb=b54df0ddd0c6a0372327c5aa3668e5a6458fcd64;hp=0000000000000000000000000000000000000000;hpb=39d1e62c84041831bfc52cca73b5ed5efaf57d27;p=portal.git diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/controller/MicroserviceController.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/controller/MicroserviceController.java new file mode 100644 index 00000000..82d70ecd --- /dev/null +++ b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/controller/MicroserviceController.java @@ -0,0 +1,141 @@ +/*- + * ================================================================================ + * ECOMP Portal + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file 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. + * ================================================================================ + */ +package org.openecomp.portalapp.portal.controller; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.openecomp.portalapp.controller.EPRestrictedBaseController; +import org.openecomp.portalapp.portal.domain.MicroserviceData; +import org.openecomp.portalapp.portal.domain.WidgetCatalog; +import org.openecomp.portalapp.portal.domain.WidgetServiceHeaders; +import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse; +import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum; +import org.openecomp.portalapp.portal.logging.aop.EPAuditLog; +import org.openecomp.portalapp.portal.service.ConsulHealthService; +import org.openecomp.portalapp.portal.service.MicroserviceService; +import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +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; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; + +@SuppressWarnings("unchecked") +@RestController +@org.springframework.context.annotation.Configuration +@EnableAspectJAutoProxy +@EPAuditLog +public class MicroserviceController extends EPRestrictedBaseController { + + private static final String HTTPS = "https://"; + + String whatService = "widgets-service"; + RestTemplate template = new RestTemplate(); + + @Autowired + private ConsulHealthService consulHealthService; + + @Autowired + private MicroserviceService microserviceService; + + @RequestMapping(value = { "/portalApi/microservices" }, method = RequestMethod.POST) + public PortalRestResponse createMicroservice(HttpServletRequest request, HttpServletResponse response, + @RequestBody MicroserviceData newServiceData) throws Exception { + if (newServiceData == null) { + return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", + "MicroserviceData cannot be null or empty"); + } + long serviceId = microserviceService.saveMicroservice(newServiceData); + + try { + microserviceService.saveServiceParameters(serviceId, newServiceData.getParameterList()); + } 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) + throws Exception { + List list = microserviceService.getMicroserviceData(); + return list; + } + + @RequestMapping(value = { "/portalApi/microservices/{serviceId}" }, method = RequestMethod.PUT) + public PortalRestResponse updateMicroservice(HttpServletRequest request, HttpServletResponse response, + @PathVariable("serviceId") long serviceId, @RequestBody MicroserviceData newServiceData) throws Exception { + + if (newServiceData == null) { + return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", + "MicroserviceData cannot be null or empty"); + } + 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) throws Exception { + try { + ParameterizedTypeReference> typeRef = new ParameterizedTypeReference>() { + }; + // If this service is assoicated with widgets, cannnot be deleted + ResponseEntity> ans = (ResponseEntity>) template.exchange( + HTTPS + consulHealthService.getServiceLocation(whatService) + + "/widget/microservices/widgetCatalog/service/" + serviceId, + HttpMethod.GET, new HttpEntity(WidgetServiceHeaders.getInstance()), typeRef); + List widgets = ans.getBody(); + if(widgets.size() == 0) + microserviceService.deleteMicroservice(serviceId); + else{ + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < widgets.size(); i++){ + sb.append("'" + widgets.get(i).getName() + "' "); + if(i < (widgets.size()-1)){ + sb.append(","); + } + } + return new PortalRestResponse(PortalRestStatusEnum.WARN, "SOME WIDGETS ASSOICATE WITH THIS SERVICE", sb.toString()); + } + } catch (Exception e) { + return new PortalRestResponse(PortalRestStatusEnum.ERROR, "FAILURE", e.getMessage()); + } + return new PortalRestResponse(PortalRestStatusEnum.OK, "SUCCESS", ""); + } + +}