diff options
Diffstat (limited to 'ccsdk-app-common/src/main/java')
92 files changed, 5040 insertions, 5348 deletions
diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/ApiBaseController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/ApiBaseController.java index ec30b92..4584270 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/ApiBaseController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/ApiBaseController.java @@ -2,22 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ + package org.onap.ccsdk.api.controller; import java.text.DateFormat; @@ -37,22 +38,23 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; public class ApiBaseController extends UnRestrictedBaseController { /** - * Application name + * Application name. */ protected static final String APP_NAME = "ecd-app"; /** - * EELF-approved format + * EELF-approved format. */ - protected static final DateFormat logDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + protected final DateFormat logDateFormat = + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); /** - * Query parameter for desired page number + * Query parameter for desired page number. */ protected static final String PAGE_NUM_QUERY_PARAM = "page"; /** - * Query parameter for desired items per page + * Query parameter for desired items per page. */ protected static final String PAGE_SIZE_QUERY_PARAM = "size"; @@ -67,7 +69,6 @@ public class ApiBaseController extends UnRestrictedBaseController { @Autowired protected DashboardProperties appProperties; - /** * Hello Spring, here's your no-arg constructor. */ @@ -94,13 +95,14 @@ public class ApiBaseController extends UnRestrictedBaseController { * * @param request HttpServletRequest * @return Value of query parameter {@link #PAGE_NUM_QUERY_PARAM}; 1 if not - * found. + * found. */ protected int getRequestPageNumber(HttpServletRequest request) { int pageNum = 1; String param = request.getParameter(PAGE_NUM_QUERY_PARAM); - if (param != null) + if (param != null) { pageNum = Integer.parseInt(param); + } return pageNum; } @@ -111,33 +113,37 @@ public class ApiBaseController extends UnRestrictedBaseController { * * @param request HttpServletRequest * @return Value of query parameter {@link #PAGE_SIZE_QUERY_PARAM}; 50 if not - * found. + * found. */ protected int getRequestPageSize(HttpServletRequest request) { int pageSize = 25; String param = request.getParameter(PAGE_SIZE_QUERY_PARAM); - if (param != null) + if (param != null) { pageSize = Integer.parseInt(param); + } return pageSize; } /** * Gets the items for the specified page from the specified list. * - * @param pageNum Page number requested by user, indexed from 1 + * @param pageNum Page number requested by user, indexed from 1 * @param pageSize Number of items per page * @param itemList List of items to adjust * @return List of items; empty list if from==to */ @SuppressWarnings("rawtypes") - protected static List getPageOfList(final int pageNum, final int pageSize, final List itemList) { + protected static List getPageOfList(final int pageNum, final int pageSize, + final List itemList) { int firstIndexOnThisPage = pageSize * (pageNum - 1); int firstIndexOnNextPage = pageSize * pageNum; - int fromIndex = firstIndexOnThisPage < itemList.size() ? firstIndexOnThisPage : itemList.size(); - int toIndex = firstIndexOnNextPage < itemList.size() ? firstIndexOnNextPage : itemList.size(); + int fromIndex = + firstIndexOnThisPage < itemList.size() ? firstIndexOnThisPage : itemList.size(); + int toIndex = + firstIndexOnNextPage < itemList.size() ? firstIndexOnNextPage : itemList.size(); return itemList.subList(fromIndex, toIndex); } - + @Override public boolean isRESTfulCall() { return true; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/NbApiController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/NbApiController.java index 525711d..301164b 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/NbApiController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/api/controller/NbApiController.java @@ -28,7 +28,6 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.NoSuchElementException; import java.util.Optional; import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; @@ -58,6 +57,7 @@ import org.onap.ccsdk.dashboard.model.cloudify.CloudifyDeployment; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyDeploymentList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyExecutionRequest; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyNodeInstanceIdList; +import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenant; import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentInput; import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest; import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResource; @@ -70,10 +70,10 @@ import org.onap.ccsdk.dashboard.model.inventory.ServiceQueryParams; import org.onap.ccsdk.dashboard.model.inventory.ServiceRef; import org.onap.ccsdk.dashboard.model.inventory.ServiceRefList; import org.onap.ccsdk.dashboard.model.inventory.ServiceType; -import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeSummary; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeServiceMap; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeSummary; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeUploadRequest; import org.onap.ccsdk.dashboard.rest.CloudifyClient; import org.onap.ccsdk.dashboard.rest.ConsulClient; @@ -86,7 +86,11 @@ import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; @@ -110,6 +114,21 @@ public class NbApiController extends ApiBaseController { private static final String EXECUTIONS_PATH = "executions"; private static final String TENANTS_PATH = "tenants"; private static final String SERVICE_HEALTH_PATH = "health"; + private static final String TARGET_ENTITY_KEY = "TargetEntity"; + private static final String TARGET_SERVICE_KEY = "TargetServiceName"; + private static final String INV_BP_ENTITY = "DCAE Blueprint"; + private static final String INV_TARGET_SERVICE = "DCAE Inventory"; + private static final String CFY_DEP_ENTITY = "DCAE Deployment"; + private static final String CFY_TARGET_SERVICE = "DCAE Cloudify"; + private static final String CFY_EXEC_ENTITY = "Executions"; + private static final String CNSL_SVC_ENTITY = "Consul Service"; + private static final String CNSL_TARGET_SERVICE = "Consul API"; + private static final String ERROR_RESPONSE = "ERROR"; + private static final String ERROR_CODE_KEY = "ErrorCode"; + private static final String ERROR_CODE = "300"; + private static final String ERROR_CATEGORY_KEY = "ErrorCategory"; + private static final String ERROR_CATEGORY = "ERROR"; + private static final String ERROR_DESCRIPTION_KEY = "ErrorDescription"; @Autowired InventoryClient inventoryClient; @@ -144,48 +163,81 @@ public class NbApiController extends ApiBaseController { DEPLOYMENTS, BLUEPRINTS, SERVICES_GROUPBY; } - private static Date begin, end; - /** - * get the tenants list + * get the tenants list. * * @param request HttpServletRequest * @return List of CloudifyDeployment objects */ - @SuppressWarnings("rawtypes") - @RequestMapping( - value = {TENANTS_PATH}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody + @SuppressWarnings({"unchecked"}) + @GetMapping(value = TENANTS_PATH, produces = "application/json") public String getTenants(HttpServletRequest request) throws Exception { preLogAudit(request); - List itemList = cloudifyClient.getTenants().items; + List<CloudifyTenant> itemList = cloudifyClient.getTenants().items; final int totalItems = itemList.size(); final int pageSize = 20; final int pageNum = 1; final int pageCount = (int) Math.ceil((double) totalItems / pageSize); - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); - RestResponsePage<List> model = new RestResponsePage<>(totalItems, pageCount, itemList); - String outboundJson = objectMapper.writeValueAsString(model); - return outboundJson; + } + RestResponsePage<List<CloudifyTenant>> model = + new RestResponsePage<>(totalItems, pageCount, itemList); + return objectMapper.writeValueAsString(model); } - private boolean isAuthorized(HttpServletRequest request, String component) { - boolean auth = true; - return auth; + private boolean isAuthorized() { + return true; } - @RequestMapping( - value = {SERVICE_TYPES_PATH}, - method = RequestMethod.POST, - produces = "application/json") + private String getSelfLink(String uriSelf) { + StringBuffer selfSb = new StringBuffer(); + selfSb.append("<").append(uriSelf).append(">; rel=\"self\""); + return selfSb.toString(); + } + + private String getAllLink(String uriAll) { + StringBuffer allSb = new StringBuffer(); + allSb.append("<").append(uriAll).append(">; rel=\"current\""); + return allSb.toString(); + } + + private void publishResponseHeader(ServletUriComponentsBuilder uriBuilder, + HttpServletResponse response, int page, int pageCount, int size) { + try { + uriBuilder = ServletUriComponentsBuilder.fromCurrentRequest(); + eventPub.publishEvent(new PaginatedResultsRetrievedEvent<String>(String.class, + uriBuilder, response, page, pageCount, size)); + } catch (Exception e) { + // skip exception + } + } + + private String getJsonErr(String errStr) { + final String errJsonStr = "{ \"error\" : \""; + StringBuffer errJson = new StringBuffer(); + errJson.append(errJsonStr).append(errStr).append("\"}"); + return errJson.toString(); + } + + /** + * Upload new blueprint to inventory. + * + * @param request + * @param response + * @param serviceTypeUplReq + * @param uriBuilder + * @return + * @throws Exception + */ + @PostMapping(value = {SERVICE_TYPES_PATH}, produces = "application/json") public String createBlueprint(HttpServletRequest request, HttpServletResponse response, @RequestBody ServiceTypeUploadRequest serviceTypeUplReq, ServletUriComponentsBuilder uriBuilder) throws Exception { preLogAudit(request); String json = null; + final String errDescrStr = "Uploading service type failed!"; + final String errLogStr = "Uploading service type caught exception"; try { Blueprint.parse(serviceTypeUplReq.getBlueprintTemplate()); @@ -196,17 +248,9 @@ public class NbApiController extends ApiBaseController { "Component name missing in blueprint request body"); return json; } - - if (!isAuthorized(request, serviceTypeUplReq.component)) { - response.setStatus(HttpStatus.SC_FORBIDDEN); - json = objectMapper.writeValueAsString( - new RestResponseError("Un-authorized to perform this operation")); - return json; - } - - Collection<String> serviceIds = new ArrayList<String>(); - Collection<String> vnfTypes = new ArrayList<String>(); - Collection<String> serviceLocations = new ArrayList<String>(); + Collection<String> serviceIds = new ArrayList<>(); + Collection<String> vnfTypes = new ArrayList<>(); + Collection<String> serviceLocations = new ArrayList<>(); Optional<String> asdcServiceId = null; Optional<String> asdcResourceId = null; Optional<String> asdcServiceURL = null; @@ -220,53 +264,48 @@ public class NbApiController extends ApiBaseController { json = objectMapper.writeValueAsString(apiResponse); String uri = request.getRequestURI(); if (uri != null) { - String uri_all = uriBuilder.replacePath(uri).build().toUriString(); - String uri_self = - uriBuilder.path("/" + apiResponse.getTypeId().get()).build().toUriString(); - StringBuffer linkHeader = new StringBuffer(); - String linkStr_all = "<" + uri_all + ">; rel=\"" + "current" + "\""; - String linkStr_self = "<" + uri_self + ">; rel=\"" + "self" + "\""; - linkHeader.append(linkStr_self); - if (linkHeader.length() > 0) { - linkHeader.append(", "); - } - linkHeader.append(linkStr_all); - response.addHeader("Link", linkHeader.toString()); + String uriAll = uriBuilder.replacePath(uri).build().toUriString(); + StringBuffer linkHeader = new StringBuffer(); + String currTypeId = apiResponse.getTypeId().orElse("missingId"); + String uriSelf = uriBuilder.path("/" + currTypeId).build().toUriString(); + linkHeader.append(getSelfLink(uriSelf)); + if (linkHeader.length() > 0) { + linkHeader.append(", "); + } + linkHeader.append(getAllLink(uriAll)); + response.addHeader("Link", linkHeader.toString()); } } catch (BlueprintParseException e) { response.setStatus(HttpStatus.SC_BAD_REQUEST); - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "DCAE Inventory"); - MDC.put("TargetServiceName", "DCAE Inventory"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Updating service type failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "updateServiceTypeBlueprint caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper .writeValueAsString(new RestResponseError("Invalid blueprint format.", e)); } catch (HttpStatusCodeException e) { response.setStatus(HttpStatus.SC_BAD_GATEWAY); - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "DCAE Inventory"); - MDC.put("TargetServiceName", "DCAE Inventory"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Updating service type failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "updateServiceTypeBlueprint caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString())); - } catch (Throwable t) { + } catch (Exception t) { response.setStatus(HttpStatus.SC_BAD_REQUEST); - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "DCAE Inventory"); - MDC.put("TargetServiceName", "DCAE Inventory"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Updating service type failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "updateServiceTypeBlueprint caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper .writeValueAsString(new RestResponseError("updateServiceTypeBlueprint failed", t)); } finally { @@ -275,17 +314,26 @@ public class NbApiController extends ApiBaseController { return json; } - @SuppressWarnings("unchecked") - @RequestMapping( - value = {SERVICE_TYPES_PATH}, - method = RequestMethod.GET, - produces = "application/json") + /** + * Query all blueprints from inventory, follows pagination. + * + * @param request + * @param page + * @param size + * @param uriBuilder + * @param response + * @return + */ + @GetMapping(value = {SERVICE_TYPES_PATH}, produces = "application/json") public String getBlueprintsByPage(HttpServletRequest request, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, ServletUriComponentsBuilder uriBuilder, HttpServletResponse response) { preLogAudit(request); String json = null; + RestResponseError result = null; + final String errDescrStr = "Getting page of blueprints items failed!"; + final String errLogStr = "getBlueprintsByPage caught exception"; if (page == null || page == 0) { page = 1; } @@ -296,152 +344,121 @@ public class NbApiController extends ApiBaseController { int totalItems = 0; List itemList = null; try { - itemList = getItemListForPageWrapper(request, InventoryDataItem.BLUEPRINTS); + itemList = getItemListForPageWrapper(request); // Shrink if needed if (itemList != null) { totalItems = itemList.size(); } final int pageCount = (int) Math.ceil((double) totalItems / size); - if (totalItems > size) + if (totalItems > size) { itemList = getPageOfList(pageNum, size, itemList); - + } RestResponsePage<List> model = new RestResponsePage<>(totalItems, pageCount, itemList); json = objectMapper.writeValueAsString(model); - + publishResponseHeader(uriBuilder, response, page, pageCount, size); + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError((e).getResponseBodyAsString()); try { - uriBuilder = ServletUriComponentsBuilder.fromCurrentRequest(); - eventPub.publishEvent(new PaginatedResultsRetrievedEvent<String>(String.class, - uriBuilder, response, page, pageCount, size)); - } catch (Exception e) { - // skip exception + json = objectMapper.writeValueAsString(result); + } catch (JsonProcessingException jpe) { + // Should never, ever happen + json = getJsonErr(jpe.toString()); } } catch (Exception e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of blueprints items failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getBlueprintsByPage caught exception"); - RestResponseError result = null; - if (e instanceof HttpStatusCodeException) - result = - new RestResponseError(((HttpStatusCodeException) e).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get blueprints", e); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError("Failed to get blueprints", e); try { json = objectMapper.writeValueAsString(result); } catch (JsonProcessingException jpe) { - // Should never, ever happen - json = "{ \"error\" : \"" + jpe.toString() + "\"}"; + json = getJsonErr(jpe.toString()); } - return json; } finally { postLogAudit(request); } return json; } - private List getItemListForPageWrapper(HttpServletRequest request, InventoryDataItem option) { - Set<String> userRoleSet = (Set<String>) request.getAttribute("userRoles"); - Set<String> userApps = (Set<String>) request.getAttribute("userApps"); - String sort = request.getParameter("sort"); - - Predicate<String> adminPred = - p -> p.contains("System_Administrator") || p.contains("Write_Access"); - - Predicate<String> ecompSuperPred = - p -> p.contains("ECOMPC_WRITE") || p.contains("ECOMPC_READ"); - - ReadWriteLock lock = new ReentrantReadWriteLock(); - List itemList = null; - try { - lock.readLock().lock(); - itemList = (List<ServiceTypeSummary>) getCacheManager().getObject("dcae-service-types"); - lock.readLock().unlock(); - if (itemList == null) { - ServiceTypeQueryParams serviceQueryParams = null; - itemList = inventoryClient.getServiceTypes().collect(Collectors.toList()); - } - if (userRoleSet != null) { - if (userRoleSet.stream().noneMatch(adminPred)) { - if (userRoleSet.stream().noneMatch(ecompSuperPred)) { - itemList = (List<ServiceTypeSummary>) itemList.stream() - .filter(s -> userApps.stream() - .anyMatch(appFilter -> (((ServiceTypeSummary) s).getComponent() != null - && ((ServiceTypeSummary) s).getComponent() - .equalsIgnoreCase(appFilter)))) - .collect(Collectors.<ServiceTypeSummary>toList()); - } else { - Predicate<ServiceTypeSummary> appFilter = - p -> p.getComponent() != null && !p.getComponent().equalsIgnoreCase("dcae"); - itemList = (List<ServiceTypeSummary>) itemList.stream().filter(appFilter) - .collect(Collectors.toList()); - } - } - } - // Handle request filter object - String filters = request.getParameter("filters"); - if (filters != null) { - JSONObject filterJson = new JSONObject(filters); - - if (filterJson.has("owner")) { - String ownFilter = filterJson.getString("owner"); - Predicate<ServiceTypeSummary> ownPred = - p -> p.getOwner() != null && p.getOwner().contains(ownFilter); - itemList = (List<ServiceTypeSummary>) itemList.stream().filter(ownPred) - .collect(Collectors.toList()); - } + private List<ServiceTypeSummary> processRequestFilters(HttpServletRequest request, + List<ServiceTypeSummary> itemList) { + String filters = request.getParameter("filters"); + final String ownerStr = "owner"; + if (filters != null) { + JSONObject filterJson = new JSONObject(filters); + if (filterJson.has(ownerStr)) { + String ownFilter = filterJson.getString(ownerStr); + Predicate<ServiceTypeSummary> ownPred = + p -> p.getOwner() != null && p.getOwner().contains(ownFilter); + itemList = itemList.stream().filter(ownPred).collect(Collectors.toList()); + } + if (filterJson.has("name")) { + String bpNameFilter = filterJson.getString("name"); + Predicate<ServiceTypeSummary> bpNamePred = + p -> p.getTypeName() != null && p.getTypeName().contains(bpNameFilter); + itemList = itemList.stream().filter(bpNamePred).collect(Collectors.toList()); + } + if (filterJson.has("id")) { + String bpIdFilter = filterJson.getString("id"); + Predicate<ServiceTypeSummary> bpIdPred = + p -> p.getTypeId().get().contains(bpIdFilter); + itemList = itemList.stream().filter(bpIdPred).collect(Collectors.toList()); + } + } + return itemList; + } - if (filterJson.has("name")) { - String bpNameFilter = filterJson.getString("name"); - Predicate<ServiceTypeSummary> bpNamePred = - p -> p.getTypeName() != null && p.getTypeName().contains(bpNameFilter); - itemList = (List<ServiceTypeSummary>) itemList.stream().filter(bpNamePred) - .collect(Collectors.toList()); - } + @SuppressWarnings("unchecked") + private List getItemListForPageWrapper(HttpServletRequest request) throws Exception { + String sort = request.getParameter("sort"); + ReadWriteLock lock = new ReentrantReadWriteLock(); + List<ServiceTypeSummary> itemList = null; + try { + lock.readLock().lock(); + itemList = (List<ServiceTypeSummary>) getCacheManager().getObject("dcae-service-types"); + lock.readLock().unlock(); + if (itemList == null) { + itemList = inventoryClient.getServiceTypes().collect(Collectors.toList()); + } + // Handle request filter object + itemList = processRequestFilters(request, itemList); - if (filterJson.has("id")) { - String bpIdFilter = filterJson.getString("id"); - Predicate<ServiceTypeSummary> bpIdPred = - p -> p.getTypeId().get().contains(bpIdFilter); - itemList = (List<ServiceTypeSummary>) itemList.stream().filter(bpIdPred) - .collect(Collectors.toList()); - } - } - if (sort != null) { - if (sort.equals("owner")) { - ((List<ServiceTypeSummary>) itemList).sort((ServiceTypeSummary o1, - ServiceTypeSummary o2) -> o1.getOwner().compareTo(o2.getOwner())); - } else if (sort.equals("typeId")) { - ((List<ServiceTypeSummary>) itemList) - .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeId().get() - .compareTo(o2.getTypeId().get())); - } else if (sort.equals("typeName")) { - ((List<ServiceTypeSummary>) itemList).sort((ServiceTypeSummary o1, - ServiceTypeSummary o2) -> o1.getTypeName().compareTo(o2.getTypeName())); - } else if (sort.equals("typeVersion")) { - ((List<ServiceTypeSummary>) itemList) - .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeVersion() - .compareTo(o2.getTypeVersion())); - } else if (sort.equals("created")) { - ((List<ServiceTypeSummary>) itemList) - .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getCreated() - .get().compareTo(o2.getCreated().get())); - } - } - } catch (Exception e) { - throw e; - } finally { - postLogAudit(request); + if (sort != null) { + if (sort.equals("owner")) { + (itemList).sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getOwner() + .compareTo(o2.getOwner())); + } else if (sort.equals("typeId")) { + (itemList).sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeId() + .get().compareTo(o2.getTypeId().get())); + } else if (sort.equals("typeName")) { + (itemList).sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1 + .getTypeName().compareTo(o2.getTypeName())); + } else if (sort.equals("typeVersion")) { + (itemList).sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1 + .getTypeVersion().compareTo(o2.getTypeVersion())); + } else if (sort.equals("created")) { + (itemList).sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1 + .getCreated().get().compareTo(o2.getCreated().get())); } - return itemList; + } + } finally { + postLogAudit(request); + } + return itemList; } - @RequestMapping( - value = {DEPLOYMENTS_PATH + "/{deploymentId}"}, - method = RequestMethod.GET, - produces = "application/json") + @GetMapping(value = {DEPLOYMENTS_PATH + "/{deploymentId}"}, produces = "application/json") public String getDeployment(@PathVariable("deploymentId") String deploymentId, HttpServletRequest request) { preLogAudit(request); @@ -449,19 +466,25 @@ public class NbApiController extends ApiBaseController { try { List<CloudifyDeployment> items = cloudifyClient.getDeployment(deploymentId).items; json = objectMapper.writeValueAsString(items); + } catch (HttpStatusCodeException gen) { + logger.error(EELFLoggerDelegate.errorLogger, "getDeployment caught exception"); + RestResponseError result = null; + result = new RestResponseError(gen.getResponseBodyAsString()); + try { + json = objectMapper.writeValueAsString(result); + } catch (JsonProcessingException jpe) { + // Should never, ever happen + json = getJsonErr(jpe.toString()); + } } catch (Exception gen) { logger.error(EELFLoggerDelegate.errorLogger, "getDeployment caught exception"); RestResponseError result = null; - if (gen instanceof HttpStatusCodeException) - result = new RestResponseError( - ((HttpStatusCodeException) gen).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get deployment", gen); + result = new RestResponseError("Failed to get deployment", gen); try { json = objectMapper.writeValueAsString(result); } catch (JsonProcessingException jpe) { // Should never, ever happen - json = "{ \"error\" : \"" + jpe.toString() + "\"}"; + json = getJsonErr(jpe.toString()); } } finally { postLogAudit(request); @@ -470,10 +493,7 @@ public class NbApiController extends ApiBaseController { } @SuppressWarnings("unchecked") - @RequestMapping( - value = {DEPLOYMENTS_PATH}, - method = RequestMethod.GET, - produces = "application/json") + @GetMapping(value = {DEPLOYMENTS_PATH}, produces = "application/json") public String getDeploymentsByPage(HttpServletRequest request, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, @@ -502,42 +522,47 @@ public class NbApiController extends ApiBaseController { } RestResponsePage<List> model = new RestResponsePage<>(totalItems, pageCount, itemList); outboundJson = objectMapper.writeValueAsString(model); + publishResponseHeader(uriBuilder, response, page, pageCount, size); + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, "Getting page of deployments items failed!"); + logger.error(EELFLoggerDelegate.errorLogger, + "getAllDeploymentsByPage caught exception"); + RestResponseError result = null; + result = new RestResponseError(e.getResponseBodyAsString()); try { - uriBuilder = ServletUriComponentsBuilder.fromCurrentRequest(); - eventPub.publishEvent(new PaginatedResultsRetrievedEvent<String>(String.class, - uriBuilder, response, page, pageCount, size)); - } catch (Exception e) { - // skip the pagination links logic + outboundJson = objectMapper.writeValueAsString(result); + } catch (JsonProcessingException jpe) { + // Should never, ever happen + outboundJson = getJsonErr(jpe.toString()); } - return outboundJson; } catch (Exception e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of deployments items failed!"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, "Getting page of deployments items failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getAllDeploymentsByPage caught exception"); RestResponseError result = null; - if (e instanceof HttpStatusCodeException) - result = - new RestResponseError(((HttpStatusCodeException) e).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get deployments", e); + result = new RestResponseError("Failed to get deployments", e); try { outboundJson = objectMapper.writeValueAsString(result); } catch (JsonProcessingException jpe) { // Should never, ever happen - outboundJson = "{ \"error\" : \"" + jpe.toString() + "\"}"; + outboundJson = getJsonErr(jpe.toString()); } - return outboundJson; } finally { postLogAudit(request); } + return outboundJson; } - @SuppressWarnings({"rawtypes", "unchecked"}) private ServiceTypeSummary getBlueprintItem(String searchBy, Optional<Integer> version, String typeId) throws Exception { ServiceTypeQueryParams serviceQueryParams = null; @@ -549,16 +574,15 @@ public class NbApiController extends ApiBaseController { serviceQueryParams = new ServiceTypeQueryParams.Builder().typeName(searchBy).build(); } - List itemList = + List<ServiceTypeSummary> itemList = inventoryClient.getServiceTypes(serviceQueryParams).collect(Collectors.toList()); if (version.isPresent()) { - itemList = (List) itemList.stream() - .filter(s -> ((ServiceTypeSummary) s).contains(version.get().toString())) + itemList = itemList.stream().filter(s -> (s).contains(version.get().toString())) .collect(Collectors.toList()); } if (typeId != null && typeId.equals("typeId")) { - item = (ServiceTypeSummary) ((List) itemList).get(0); + item = itemList.get(0); } return item; } @@ -572,46 +596,40 @@ public class NbApiController extends ApiBaseController { * @return * @throws Exception */ - @RequestMapping( + @GetMapping( value = {DEPLOYMENTS_PATH + "/{deploymentId}/inputs"}, - method = RequestMethod.GET, produces = "application/json") public String getDeploymentInputs(@PathVariable("deploymentId") String deploymentId, @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) - throws Exception { + throws Exception { preLogAudit(request); ECTransportModel result = null; String json = ""; + String errDescrStr = "Getting inputs for deployment failed: " + deploymentId; + String errLogStr = "getDeploymentInputs caught exception"; try { - if (tenant == null) { - throw new Exception("tenant name is missing"); - } List<CloudifyDeployment> response = cloudifyClient.getDeploymentInputs(deploymentId, tenant).items; json = objectMapper.writeValueAsString(response); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", - "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getExecutionByIdAndDeploymentId caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); json = objectMapper.writeValueAsString(result); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", - "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getExecutionByIdAndDeploymentId caught exception"); - result = new RestResponseError("getExecutionByIdAndDeploymentId failed", t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errDescrStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError("getDeploymentInputs failed", t); json = objectMapper.writeValueAsString(result); } finally { postLogAudit(request); @@ -627,14 +645,13 @@ public class NbApiController extends ApiBaseController { * @return Information about the execution * @throws Exception on serialization failure */ - @RequestMapping( - value = {DEPLOYMENTS_PATH + "/{deploymentId}"}, - method = RequestMethod.PUT, - produces = "application/json") + @PutMapping(value = {DEPLOYMENTS_PATH + "/{deploymentId}"}, produces = "application/json") public String modifyDeployment(@PathVariable("deploymentId") String deploymentId, HttpServletRequest request, InputStream upgParams) throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errDescStr = "Updating deployment failed!"; + final String errLogStr = "updateDeployment caught exception"; try { String nodeInstId = ""; Map<String, Object> parameters = @@ -651,32 +668,32 @@ public class NbApiController extends ApiBaseController { } parameters.put("node_instance_id", nodeInstId); if (workflow.equals("upgrade")) { - String repo_user = cloudifyClient.getSecret("controller_helm_user", tenant).value; - String repo_user_password = + String repoUser = cloudifyClient.getSecret("controller_helm_user", tenant).value; + String repoUserPassword = cloudifyClient.getSecret("controller_helm_password", tenant).value; - parameters.put("repo_user", repo_user); - parameters.put("repo_user_password", repo_user_password); + parameters.put("repo_user", repoUser); + parameters.put("repo_user_password", repoUserPassword); } CloudifyExecutionRequest execution = new CloudifyExecutionRequest(deploymentId, workflow, false, false, tenant, parameters); result = cloudifyClient.startExecution(execution); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Updating deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "updateDeployment caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_EXEC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Updating Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "updateDeployment caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_EXEC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("updateDeployment failed", t); } finally { postLogAudit(request); @@ -684,14 +701,13 @@ public class NbApiController extends ApiBaseController { return objectMapper.writeValueAsString(result); } - @RequestMapping( + @GetMapping( value = {SERVICE_TYPES_PATH + "/{typeid}" + "/deployments"}, - method = RequestMethod.GET, produces = "application/json") public String getServicesForType(HttpServletRequest request, @PathVariable("typeid") String typeId) throws Exception { preLogAudit(request); - List<ServiceTypeServiceMap> result = new ArrayList<ServiceTypeServiceMap>(); + List<ServiceTypeServiceMap> result = new ArrayList<>(); ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build(); ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); ServiceTypeServiceMap srvcMap = new ServiceTypeServiceMap(typeId, srvcRefs); @@ -722,17 +738,12 @@ public class NbApiController extends ApiBaseController { } else { dataSet.put(key, val); } - } catch (NumberFormatException ne) { - dataSet.put(key, val); - } catch (Exception e) { + } catch (Exception ne) { dataSet.put(key, val); } } - @RequestMapping( - value = {DEPLOYMENTS_PATH}, - method = RequestMethod.POST, - produces = "application/json") + @PostMapping(value = {DEPLOYMENTS_PATH}, produces = "application/json") public String createDeployment(HttpServletRequest request, HttpServletResponse response, @RequestBody DeploymentInput deploymentRequestObject) throws Exception { preLogAudit(request); @@ -747,6 +758,7 @@ public class NbApiController extends ApiBaseController { String tag = deploymentRequestObject.getTag(); String depName = cName + "_" + tag; Map<String, BlueprintInput> bpInputDefs = null; + final String errLogStr = "createDeployment caught exception"; if (cName == null || cName.isEmpty()) { json = objectMapper.writeValueAsString( @@ -755,85 +767,23 @@ public class NbApiController extends ApiBaseController { "Component name missing in deployment request body"); return json; } - - if (!isAuthorized(request, cName)) { - response.setStatus(HttpStatus.SC_FORBIDDEN); - json = objectMapper.writeValueAsString( - new RestResponseError("Un-authorized to perform this operation")); - return json; - } - - if (deploymentRequestObject.getBlueprintVersion().isPresent()) { - bpVersion = deploymentRequestObject.getBlueprintVersion(); - } - if (deploymentRequestObject.getBlueprintId().isPresent()) { - srvcTypeId = deploymentRequestObject.getBlueprintId().get(); - } - if (srvcTypeId == null) { - // get the serviceTypeId from inventory using the blueprint name - try { + try { + bpVersion = Optional.of(deploymentRequestObject.getBlueprintVersion().orElse(1)); + srvcTypeId = deploymentRequestObject.getBlueprintId().orElse(""); + if (srvcTypeId.isEmpty()) { + // get the serviceTypeId from inventory using the blueprint name bpSummItem = getBlueprintItem(bpName, bpVersion, "typeId"); - srvcTypeId = bpSummItem.getTypeId().get(); - bpItem = inventoryClient.getServiceType(srvcTypeId).get(); - } catch (Exception ex) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting blueprint ID failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getItemListForPageWrapper caught exception"); - RestResponseError result = null; - if (ex instanceof HttpStatusCodeException) - result = new RestResponseError( - ((HttpStatusCodeException) ex).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get blueprint", ex); - try { - json = objectMapper.writeValueAsString(result); - } catch (JsonProcessingException jpe) { - // Should never, ever happen - json = "{ \"error\" : \"" + jpe.toString() + "\"}"; - } - return json; - } finally { - postLogAudit(request); - } - } else { - try { - bpItem = inventoryClient.getServiceType(srvcTypeId).get(); - } catch (Exception ex) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting blueprint failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception"); - RestResponseError result = null; - if (ex instanceof HttpStatusCodeException) - result = new RestResponseError( - ((HttpStatusCodeException) ex).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get blueprint", ex); - try { - json = objectMapper.writeValueAsString(result); - } catch (JsonProcessingException jpe) { - // Should never, ever happen - json = "{ \"error\" : \"" + jpe.toString() + "\"}"; + if (bpSummItem != null && bpSummItem.getTypeId().isPresent()) { + srvcTypeId = bpSummItem.getTypeId().get(); } - return json; - } finally { - postLogAudit(request); } - } - try { + bpItem = inventoryClient.getServiceType(srvcTypeId).orElseThrow(); + // process the JSON inputs - Map<String, Object> processedInputs = new HashMap<String, Object>(); - Map<String, Object> mergedInputs = new HashMap<String, Object>(); + Map<String, Object> processedInputs = new HashMap<>(); + Map<String, Object> mergedInputs = new HashMap<>(); deploymentRequestObject.getInputs() - .forEach((k, v) -> translateInputData(processedInputs, k, v)); + .forEach((k, v) -> translateInputData(processedInputs, k, v)); // merge the user inputs with BP input list bpInputDefs = bpItem.getBlueprintInputs(); bpInputDefs.forEach((k, v) -> mergeInputData(mergedInputs, processedInputs, k, v)); @@ -847,56 +797,30 @@ public class NbApiController extends ApiBaseController { } String self = request.getRequestURL().append("/").append(depName).toString(); status.append(self).append("/executions?tenant=") - .append(deploymentRequestObject.getTenant()); + .append(deploymentRequestObject.getTenant()); DeploymentResource deplRsrc = new DeploymentResource(depName, new DeploymentResourceLinks(self, deplStatus, status.toString())); JSONObject statObj = new JSONObject(deplRsrc); json = statObj.toString(); response.setStatus(HttpStatus.SC_ACCEPTED); - } catch (BadRequestException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (ServiceAlreadyExistsException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (ServerErrorException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception"); + } catch (HttpStatusCodeException | BadRequestException | ServiceAlreadyExistsException + | ServerErrorException | DownstreamException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errLogStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (DownstreamException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API controller"); - MDC.put("TargetServiceName", "API controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errLogStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper.writeValueAsString(new RestResponseError("putDeployment failed", t)); } finally { @@ -914,42 +838,35 @@ public class NbApiController extends ApiBaseController { * @return CloudifyExecutionList * @throws Exception on serialization failure */ - @RequestMapping( + @GetMapping( value = {DEPLOYMENTS_PATH + "/{deploymentId}" + "/" + EXECUTIONS_PATH}, - method = RequestMethod.GET, produces = "application/json") - @ResponseBody public String getExecutionByDeploymentId(@PathVariable("deploymentId") String deploymentId, @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) - throws Exception { + throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errDescStr = "Get execution failed for deployment: " + deploymentId; + final String errLogStr = "getExecutionByIdAndDeploymentId caught exception"; try { - if (tenant == null) { - throw new Exception("tenant name is missing"); - } result = cloudifyClient.getExecutionsSummary(deploymentId, tenant); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", - "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getExecutionByIdAndDeploymentId caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_EXEC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", - "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getExecutionByIdAndDeploymentId caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_EXEC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errDescStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getExecutionByIdAndDeploymentId failed", t); } finally { postLogAudit(request); @@ -966,39 +883,34 @@ public class NbApiController extends ApiBaseController { * @return String * @throws Exception on serialization failure */ - @RequestMapping( + @GetMapping( value = {DEPLOYMENTS_PATH + "/{deploymentId}" + "/" + SERVICE_HEALTH_PATH}, - method = RequestMethod.GET, produces = "application/json") - @ResponseBody public String getServiceHealthByDeploymentId(@PathVariable("deploymentId") String deploymentId, HttpServletRequest request) throws Exception { preLogAudit(request); Object result = null; + final String errStr = "Getting service health for deployment failed: " + deploymentId; try { result = consulClient.getServiceHealthByDeploymentId(deploymentId); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", - "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getExecutionByIdAndDeploymentId caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", - "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, - "getExecutionByIdAndDeploymentId caught exception"); - result = new RestResponseError("getExecutionByIdAndDeploymentId failed", t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); + result = new RestResponseError("getServiceHealthByDeploymentId failed", t); } finally { postLogAudit(request); } @@ -1015,15 +927,12 @@ public class NbApiController extends ApiBaseController { * @throws Exception On serialization failure */ @SuppressWarnings("unchecked") - @RequestMapping( - value = {SERVICE_TYPES_PATH + "/{typeid}"}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody + @GetMapping(value = {SERVICE_TYPES_PATH + "/{typeid}"}, produces = "application/json") public String queryBlueprint(@PathVariable("typeid") String typeId, HttpServletRequest request, HttpServletResponse response, ServletUriComponentsBuilder uriBuilder) throws Exception { String json = ""; Optional<ServiceType> resultItem = null; + final String errStr = "Failed to get blueprint for ID: " + typeId; try { resultItem = inventoryClient.getServiceType(typeId); if (resultItem.isPresent()) { @@ -1031,33 +940,33 @@ public class NbApiController extends ApiBaseController { } String uri = request.getRequestURI(); if (uri != null && !uri.isEmpty()) { - String uri_depl = - uriBuilder.replacePath(uri).path("/deployments").build().toUriString(); - StringBuffer linkHeader = new StringBuffer(); - String linkStr_depl = "<" + uri_depl + ">; rel=\"" + "deployments" + "\""; - linkHeader.append(linkStr_depl); - response.addHeader("Link", linkHeader.toString()); + String uriDepl = + uriBuilder.replacePath(uri).path("/deployments").build().toUriString(); + StringBuffer linkHeader = new StringBuffer(); + String linkStrDepl = "<" + uriDepl + ">; rel=\"" + DEPLOYMENTS_PATH + "\""; + linkHeader.append(linkStrDepl); + response.addHeader("Link", linkHeader.toString()); } + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); + RestResponseError result = new RestResponseError(e.getResponseBodyAsString()); + json = objectMapper.writeValueAsString(result); } catch (Exception e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of blueprints items failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getBlueprintsByPage caught exception"); - RestResponseError result = null; - if (e instanceof HttpStatusCodeException) - result = - new RestResponseError(((HttpStatusCodeException) e).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get blueprints", e); - try { - json = objectMapper.writeValueAsString(result); - } catch (JsonProcessingException jpe) { - // Should never, ever happen - json = "{ \"error\" : \"" + jpe.toString() + "\"}"; - } + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); + RestResponseError result = new RestResponseError("Failed to get blueprints", e); + json = objectMapper.writeValueAsString(result); } return json; } @@ -1072,70 +981,53 @@ public class NbApiController extends ApiBaseController { * @throws Exception On serialization failure */ @SuppressWarnings("unchecked") - @RequestMapping( - value = {SERVICE_TYPES_PATH + "/{typeid}"}, - method = RequestMethod.DELETE, + @DeleteMapping( + value = {SERVICE_TYPES_PATH + "/{typeId:.+}"}, produces = "application/json") - @ResponseBody - public String deleteBlueprint(@PathVariable("typeid") String typeId, HttpServletRequest request, + public String deleteBlueprint(@PathVariable("typeId") String typeId, HttpServletRequest request, HttpServletResponse response, ServletUriComponentsBuilder uriBuilder) throws Exception { preLogAudit(request); String json = "{\"204\": \"Blueprint deleted\"}"; - String bpComp = ""; + final String errStr = "Deleting service type failed: " + typeId; boolean allow = true; ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - @SuppressWarnings("unchecked") - List itemList = - (List<ServiceTypeSummary>) getCacheManager().getObject("dcae-service-types"); + List<ServiceTypeSummary> itemList = + (List<ServiceTypeSummary>) getCacheManager().getObject("dcae-service-types"); lock.readLock().unlock(); + ServiceType itemFull = null; + ServiceTypeSummary item = null; try { if (itemList != null) { Predicate<ServiceTypeSummary> idFilter = p -> p.getTypeId().get().equals(typeId); - - itemList = (List<ServiceTypeSummary>) itemList.stream().filter(idFilter) - .collect(Collectors.toList()); - bpComp = ((ServiceTypeSummary) itemList.get(0)).getComponent(); - } else { - try { - ServiceType item = inventoryClient.getServiceType(typeId).get(); - bpComp = ((ServiceType) item).getComponent(); - } catch (NoSuchElementException nse) { - throw new ServiceTypeNotFoundException("invalid blueprint ID given in query"); + itemList = itemList.stream().filter(idFilter).collect(Collectors.toList()); + if (!itemList.isEmpty()) { + item = itemList.get(0); } + } else { + itemFull = inventoryClient.getServiceType(typeId).get(); } - if (!isAuthorized(request, bpComp)) { - response.setStatus(HttpStatus.SC_FORBIDDEN); - json = objectMapper.writeValueAsString( - new RestResponseError("Un-authorized to perform this operation")); - return json; - } - /* - ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build(); - ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); - if (srvcRefs != null && srvcRefs.totalCount > 0) { - throw new Exception( - "Services exist for the service type template, delete not permitted"); - } - */ - - // check if these dep_ids exist in cloudify - List<CloudifyDeployedTenant> deplForBp = - cloudifyClient.getDeploymentForBlueprint("TID-"+typeId); - if (deplForBp.size() > 0 ) { - allow = false; - } else { - ServiceQueryParams qryParams = - new ServiceQueryParams.Builder().typeId(typeId).build(); - ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); - Set<String> dep_ids = srvcRefs.items.stream().map(x -> ((ServiceRef)x).id).collect(Collectors.toSet()); - if (dep_ids.size() > 0) { - // now check again if these dep_ids still exist in cloudify - List<String> allDepNames = cloudifyClient.getDeploymentNamesWithFilter(request); - for (String str: dep_ids) { - if (allDepNames.stream().anyMatch(s->s.equalsIgnoreCase(str))) { - allow = false; - break; + if (item != null || itemFull != null) { + // check if these dep_ids exist in cloudify + List<CloudifyDeployedTenant> deplForBp = + cloudifyClient.getDeploymentForBlueprint("TID-" + typeId); + if (!deplForBp.isEmpty()) { + allow = false; + } else { + ServiceQueryParams qryParams = + new ServiceQueryParams.Builder().typeId(typeId).build(); + ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); + Set<String> depIds = + srvcRefs.items.stream().map(x -> x.id).collect(Collectors.toSet()); + if (!depIds.isEmpty()) { + // now check again if these dep_ids still exist in cloudify + List<String> allDepNames = + cloudifyClient.getDeploymentNamesWithFilter(request); + for (String str : depIds) { + if (allDepNames.stream().anyMatch(s -> s.equalsIgnoreCase(str))) { + allow = false; + break; + } } } } @@ -1144,55 +1036,37 @@ public class NbApiController extends ApiBaseController { response.setStatus(HttpStatus.SC_BAD_REQUEST); json = objectMapper.writeValueAsString( new RestResponseError("ERROR: Deployments exist for this blueprint")); - /* - PrintWriter out = response.getWriter(); - response.setContentType("application/json"); - response.setCharacterEncoding("UTF-8"); - out.print(json); - out.flush(); - */ return json; } else { inventoryClient.deleteServiceType(typeId); String uri = request.getRequestURI(); if (uri != null && !uri.isEmpty()) { - String uri_str = uri.substring(0, uri.lastIndexOf("/")); - String uri_all = uriBuilder.replacePath(uri_str).build().toUriString(); + String uriStr = uri.substring(0, uri.lastIndexOf("/")); + String uriAll = uriBuilder.replacePath(uriStr).build().toUriString(); StringBuffer linkHeader = new StringBuffer(); - String linkStr = "<" + uri_all + ">; rel=\"" + "current" + "\""; + String linkStr = "<" + uriAll + ">; rel=\"" + "current" + "\""; linkHeader.append(linkStr); response.addHeader("Link", linkHeader.toString()); } } - } catch (ServiceTypeNotFoundException e) { - response.setStatus(HttpStatus.SC_GONE); - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting service type " + typeId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteBlueprint caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (ServiceTypeAlreadyDeactivatedException e) { + } catch (ServiceTypeNotFoundException | ServiceTypeAlreadyDeactivatedException e) { response.setStatus(HttpStatus.SC_GONE); - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting service type " + typeId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteBlueprint caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (Throwable t) { - response.setStatus(HttpStatus.SC_BAD_GATEWAY); - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting service type " + typeId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteBlueprint caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, INV_BP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, INV_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); json = objectMapper.writeValueAsString(new RestResponseError("deleteBlueprint failed", t)); } finally { @@ -1212,30 +1086,23 @@ public class NbApiController extends ApiBaseController { * @throws Exception */ @SuppressWarnings("unchecked") - @RequestMapping( - value = {DEPLOYMENTS_PATH + "/{deploymentId}"}, - method = RequestMethod.DELETE, - produces = "application/json") + @DeleteMapping(value = {DEPLOYMENTS_PATH + "/{deploymentId:.+}"}, produces = "application/json") public String deleteDeployment(@PathVariable("deploymentId") String deploymentId, HttpServletRequest request, @RequestParam(value = "tenant", required = true) String tenant, HttpServletResponse response) throws Exception { preLogAudit(request); String json = null; + final String errStr = "Deleting deployment failed: " + deploymentId; StringBuffer status = new StringBuffer(); try { - if (tenant == null) { - throw new Exception("tenant name is missing"); - } ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - @SuppressWarnings("unchecked") - List itemList = (List<CloudifyDeployment>) getCacheManager() - .getObject("service-list" + ":" + tenant); + List<CloudifyDeployment> itemList = (List<CloudifyDeployment>) getCacheManager() + .getObject("service-list" + ":" + tenant); lock.readLock().unlock(); if (itemList != null) { Predicate<CloudifyDeployment> idFilter = p -> p.id.equals(deploymentId); - itemList = (List<CloudifyDeployment>) itemList.stream().filter(idFilter) - .collect(Collectors.toList()); + itemList = itemList.stream().filter(idFilter).collect(Collectors.toList()); } else { CloudifyDeploymentList cfyDeplList = cloudifyClient.getDeployment(deploymentId, tenant); @@ -1246,11 +1113,10 @@ public class NbApiController extends ApiBaseController { if (itemList != null && !itemList.isEmpty()) { String depItem = ((CloudifyDeployment) itemList.get(0)).id; if (depItem.contains("_")) { - String depComp = depItem.split("_")[0]; - if (!isAuthorized(request, depComp)) { + if (!isAuthorized()) { response.setStatus(HttpStatus.SC_FORBIDDEN); - json = objectMapper.writeValueAsString( - new RestResponseError("Un-authorized to perform this operation")); + json = + objectMapper.writeValueAsString(new RestResponseError("UNAUTH_ERROR")); return json; } deploymentHandlerClient.deleteDeployment(deploymentId, tenant); @@ -1262,50 +1128,24 @@ public class NbApiController extends ApiBaseController { json = statObj.toString(); } } - } catch (BadRequestException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (ServerErrorException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (DownstreamException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); + } catch (BadRequestException | ServerErrorException | DownstreamException + | DeploymentNotFoundException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (DeploymentNotFoundException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); json = objectMapper .writeValueAsString(new RestResponseError("deleteDeployment failed", t)); } finally { @@ -1325,67 +1165,64 @@ public class NbApiController extends ApiBaseController { * @return Passes thru HTTP status code from remote endpoint; no body on success * @throws Exception on serialization failure */ - @RequestMapping( - value = {EXECUTIONS_PATH + "/{id}"}, - method = RequestMethod.POST, - produces = "application/json") - @ResponseBody + @PostMapping(value = {EXECUTIONS_PATH + "/{id}"}, produces = "application/json") public String cancelExecution(@RequestHeader HttpHeaders headers, @PathVariable("id") String id, @RequestBody Map<String, String> parameters, HttpServletRequest request, HttpServletResponse response) throws Exception { preLogAudit(request); ECTransportModel result = null; List<String> tenant = null; + String errStr = "Cancelling execution failed: " + id; try { tenant = headers.get("tenant"); result = cloudifyClient.cancelExecution(id, parameters, tenant.get(0)); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Cancelling execution " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "cancelExecution caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_EXEC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Cancelling execution " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "cancelExecution caught exception"); - result = new RestResponseError("cancelExecution failed on ID " + id, t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_EXEC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errStr); + result = new RestResponseError(errStr, t); } finally { postLogAudit(request); } - if (result == null) + if (result == null) { return null; - else + } else { return objectMapper.writeValueAsString(result); + } } private void preLogAudit(HttpServletRequest request) { - begin = new Date(); + Date begin = new Date(); MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.STATUS_CODE, "COMPLETE"); String user = null; if (request instanceof CadiWrap) { user = ((CadiWrap) request).getUser(); - } + } logger.setRequestBasedDefaultsIntoGlobalLoggingContext(request, APP_NAME, user, user); } private void postLogAudit(HttpServletRequest request) { - end = new Date(); + Date end = new Date(); MDC.put("AlertSeverity", "0"); - MDC.put("TargetEntity", "API Controller"); - MDC.put("TargetServiceName", "API Controller"); + MDC.put(TARGET_ENTITY_KEY, "API Controller"); + MDC.put(TARGET_SERVICE_KEY, "API Controller"); MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, logDateFormat.format(end)); MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, logDateFormat.format(end)); - // MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); logger.info(EELFLoggerDelegate.auditLogger, request.getMethod() + " " + request.getRequestURI()); logger.info(EELFLoggerDelegate.metricsLogger, diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CloudifyController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CloudifyController.java index ae0e849..3277ce1 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CloudifyController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CloudifyController.java @@ -2,29 +2,28 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.controller; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -79,14 +78,15 @@ import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.HttpStatusCodeException; import com.fasterxml.jackson.core.JsonProcessingException; @@ -95,7 +95,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; * Methods serve Ajax requests made by Angular scripts on pages that show * content. */ -@Controller +@RestController @RequestMapping("/") public class CloudifyController extends DashboardRestrictedBaseController { @@ -116,8 +116,6 @@ public class CloudifyController extends DashboardRestrictedBaseController { BLUEPRINT, DEPLOYMENT, EXECUTION, TENANT, SERVICE_ID, SERVICE_ID_COUNT; } - private static Date begin; - private static Date end; private static final String BLUEPRINTS_PATH = "blueprints"; private static final String DEPLOYMENTS_PATH = "deployments"; private static final String EXECUTIONS_PATH = "executions"; @@ -129,9 +127,20 @@ public class CloudifyController extends DashboardRestrictedBaseController { private static final String PLUGINS_PATH = "plugins"; private static final String PLUGIN_COUNT = "plugins-count"; private static final String SERVICE_TYPES = "dcae-service-types"; + private static final String TARGET_ENTITY_KEY = "TargetEntity"; + private static final String TARGET_SERVICE_KEY = "TargetServiceName"; + private static final String CFY_DEP_ENTITY = "DCAE Deployment"; + private static final String CFY_TARGET_SERVICE = "DCAE Cloudify"; + private static final String ERROR_RESPONSE = "ERROR"; + private static final String ERROR_CODE_KEY = "ErrorCode"; + private static final String ERROR_CODE = "300"; + private static final String ERROR_CATEGORY_KEY = "ErrorCategory"; + private static final String ERROR_DESCRIPTION_KEY = "ErrorDescription"; + private static final String SORT_BY = "sortBy"; + private static final String SEARCH_BY = "searchBy"; - private AbstractCacheManager cacheManager; - + private AbstractCacheManager cacheManager; + @Autowired public void setCacheManager(AbstractCacheManager cacheManager) { this.cacheManager = cacheManager; @@ -140,79 +149,52 @@ public class CloudifyController extends DashboardRestrictedBaseController { public AbstractCacheManager getCacheManager() { return cacheManager; } - - /** - * Supports sorting events by timestamp - */ - private static Comparator<CloudifyEvent> eventComparator = new Comparator<CloudifyEvent>() { - @Override - public int compare(CloudifyEvent o1, CloudifyEvent o2) { - return o1.reported_timestamp.compareTo(o2.reported_timestamp); - } - }; - - /** - * Supports sorting executions by timestamp - */ - private static Comparator<CloudifyExecution> executionComparator = new Comparator<CloudifyExecution>() { - @Override - public int compare(CloudifyExecution o1, CloudifyExecution o2) { - return o1.created_at.compareTo(o2.created_at); - } - }; private void updateBpOwnerId(List<CloudifyDeployment> itemList, Map<String, List<CloudifyDeployedTenant>> ownerDepMap) { - for (CloudifyDeployment srvc: (List<CloudifyDeployment>)itemList) { - for (Map.Entry<String, List<CloudifyDeployedTenant>> entry : - ownerDepMap.entrySet()) { - List<CloudifyDeployedTenant> deplExtItems = - entry.getValue().stream().filter((Predicate<? super CloudifyDeployedTenant>) s->s.id.equals(srvc.id)). - collect(Collectors.toList()); - if (deplExtItems != null && deplExtItems.size() > 0) { + for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { + for (Map.Entry<String, List<CloudifyDeployedTenant>> entry : ownerDepMap.entrySet()) { + List<CloudifyDeployedTenant> deplExtItems = entry.getValue().stream() + .filter((Predicate<? super CloudifyDeployedTenant>) s -> s.id.equals(srvc.id)) + .collect(Collectors.toList()); + if (deplExtItems != null && !deplExtItems.isEmpty()) { srvc.owner = entry.getKey(); break; } } } } + + private String getJsonErr(String errStr) { + final String errJsonStr = "{ \"error\" : \""; + StringBuffer errJson = new StringBuffer(); + errJson.append(errJsonStr).append(errStr).append("\"}"); + return errJson.toString(); + } - private void updateWorkflowHelmStatus(List<CloudifyDeployment> itemList, - List<CloudifyDeploymentExt> cfyDeplExt, - List<CloudifyDeploymentHelm> cfyDeplHelm) { - for (CloudifyDeployment srvc: (List<CloudifyDeployment>)itemList) { + private void updateWorkflowHelmStatus(List<CloudifyDeployment> itemList, + List<CloudifyDeploymentExt> cfyDeplExt, List<CloudifyDeploymentHelm> cfyDeplHelm) { + for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { // correlate the cached data for deployments and deployment extensions - List<CloudifyDeploymentExt> deplExtItems = - cfyDeplExt.stream().filter((Predicate<? super CloudifyDeploymentExt>) s->s.id.equals(srvc.id)). - collect(Collectors.toList()); - if (deplExtItems != null && deplExtItems.size() > 0) { - srvc.lastExecution = deplExtItems.get(0).lastExecution; - } + List<CloudifyDeploymentExt> deplExtItems = cfyDeplExt.stream() + .filter((Predicate<? super CloudifyDeploymentExt>) s -> s.id.equals(srvc.id)) + .collect(Collectors.toList()); + if (deplExtItems != null && deplExtItems.size() > 0) { + srvc.lastExecution = deplExtItems.get(0).lastExecution; + } } - for (CloudifyDeployment srvc: (List<CloudifyDeployment>)itemList) { + for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { // correlate the cached data for deployments and deployment helm info - List<CloudifyDeploymentHelm> deplHelmItems = - cfyDeplHelm.stream().filter((Predicate<? super CloudifyDeploymentHelm>) s->s.id.equals(srvc.id)). - collect(Collectors.toList()); - if (deplHelmItems != null && deplHelmItems.size() > 0) { - srvc.helmStatus = deplHelmItems.get(0).helmStatus; - srvc.isHelm = deplHelmItems.get(0).isHelm; - } - } - } - - private void updateHelmInfo(List<CloudifyDeployment> itemList, - List<CloudifyDeploymentExt> cfyDeplExt) { - for (CloudifyDeployment srvc: (List<CloudifyDeployment>)itemList) { - // correlate the cached data for deployments and deployment extensions - List<CloudifyDeploymentExt> deplExtItems = - cfyDeplExt.stream().filter((Predicate<? super CloudifyDeploymentExt>) s->s.id.equals(srvc.id)). - collect(Collectors.toList()); - srvc.helmStatus = deplExtItems.get(0).helmStatus; - srvc.isHelm = deplExtItems.get(0).isHelm; + List<CloudifyDeploymentHelm> deplHelmItems = cfyDeplHelm.stream() + .filter((Predicate<? super CloudifyDeploymentHelm>) s -> s.id.equals(srvc.id)) + .collect(Collectors.toList()); + if (deplHelmItems != null && deplHelmItems.size() > 0) { + srvc.helmStatus = deplHelmItems.get(0).helmStatus; + srvc.isHelm = deplHelmItems.get(0).isHelm; + } } } - + /** * Gets one page of objects and supporting information via the REST client. On * success, returns a PaginatedRestResponse object as String. @@ -224,12 +206,12 @@ public class CloudifyController extends DashboardRestrictedBaseController { * @throws Exception On any error; e.g., Network failure. */ @SuppressWarnings({"rawtypes", "unchecked"}) - private String getItemListForPage(HttpServletRequest request, long userId, - CloudifyDataItem option, int pageNum, int pageSize, String sortBy, String searchBy) - throws Exception { - HttpSession session = AppUtils.getSession(request); + private String getItemListForPage(HttpServletRequest request, + CloudifyDataItem option, int pageNum, int pageSize, String sortBy, String searchBy) + throws Exception { + HttpSession session = AppUtils.getSession(request); String user = UserUtils.getUserSession(request).getLoginId(); - HashMap<String, Boolean> comp_deploy_tab = + HashMap<String, Boolean> compDeployTab = (HashMap<String, Boolean>) session.getAttribute("comp_access"); String roleLevel = (String) session.getAttribute("role_level"); String roleAuth = (String) session.getAttribute("auth_role"); @@ -239,8 +221,8 @@ public class CloudifyController extends DashboardRestrictedBaseController { if (roleLevel == null) { roleLevel = "dev"; } - if (comp_deploy_tab == null) { - comp_deploy_tab = new HashMap<String, Boolean>(); + if (compDeployTab == null) { + compDeployTab = new HashMap<String, Boolean>(); } Set<String> userApps = (Set<String>) session.getAttribute("authComponents"); if (userApps == null) { @@ -252,64 +234,60 @@ public class CloudifyController extends DashboardRestrictedBaseController { int deplPgSize = 500; int deplPgOffset = 0; String tenantFilterStr = ""; - String cacheFilterStr = "true"; - String userFilterStr = "false"; String svcRefFilterStr = ""; String statusFilterStr = ""; String helmFilterStr = ""; String ownerFilterStr = ""; ReadWriteLock lock = new ReentrantReadWriteLock(); List<CloudifyDeploymentExt> cfyDeplExt = null; - List<CloudifyDeploymentExt> cfyDepExList = new ArrayList<CloudifyDeploymentExt>(); + List<CloudifyDeploymentExt> cfyDepExList = new ArrayList<>(); List<CloudifyDeploymentHelm> cfyDeplHelm = null; - List<CloudifyDeploymentHelm> cfyDeplHelmList = new ArrayList<CloudifyDeploymentHelm>(); + List<CloudifyDeploymentHelm> cfyDeplHelmList = new ArrayList<>(); boolean useCache = true; boolean userLevel = false; List<CloudifyTenant> cfyTenantList = null; // apply tenant search filter if (searchBy != null && !searchBy.isEmpty()) { - // parse the search filters string - List<String> searchFilters = - new ArrayList<String>(Arrays.asList(searchBy.split(";"))); - if (searchFilters.stream().anyMatch(s->s.startsWith("tenant"))) { - List<String> tenantsList = searchFilters.stream().filter(s->s.startsWith("tenant")). - collect(Collectors.toList()); + // parse the search filters string + List<String> searchFilters = new ArrayList<String>(Arrays.asList(searchBy.split(";"))); + if (searchFilters.stream().anyMatch(s -> s.startsWith("tenant"))) { + List<String> tenantsList = searchFilters.stream() + .filter(s -> s.startsWith("tenant")).collect(Collectors.toList()); if (tenantsList.get(0).split(":").length > 1) { tenantFilterStr = tenantsList.get(0).split(":")[1]; } } - if (searchFilters.stream().anyMatch(s->s.startsWith("cache"))) { - List<String> cacheStr = searchFilters.stream().filter(s->s.startsWith("cache")). - collect(Collectors.toList()); - cacheFilterStr = cacheStr.get(0).split(":")[1]; - useCache = Boolean.parseBoolean(cacheFilterStr); + if (searchFilters.stream().anyMatch(s -> s.startsWith("cache"))) { + List<String> cacheStr = searchFilters.stream().filter(s -> s.startsWith("cache")) + .collect(Collectors.toList()); + useCache = Boolean.parseBoolean(cacheStr.get(0).split(":")[1]); } - if (searchFilters.stream().anyMatch(s->s.startsWith("user"))) { - List<String> userStr = searchFilters.stream().filter(s->s.startsWith("user")). - collect(Collectors.toList()); - userFilterStr = userStr.get(0).split(":")[1]; - userLevel = Boolean.parseBoolean(userFilterStr); + if (searchFilters.stream().anyMatch(s -> s.startsWith("user"))) { + List<String> userStr = searchFilters.stream().filter(s -> s.startsWith("user")) + .collect(Collectors.toList()); + userLevel = Boolean.parseBoolean(userStr.get(0).split(":")[1]); } - if (searchFilters.stream().anyMatch(s->s.startsWith("owner"))) { - List<String> ownerList = searchFilters.stream().filter(s->s.startsWith("owner")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("owner"))) { + List<String> ownerList = searchFilters.stream().filter(s -> s.startsWith("owner")) + .collect(Collectors.toList()); ownerFilterStr = ownerList.get(0).split(":")[1]; } } lock.readLock().lock(); - Map<String, List<CloudifyDeployedTenant>> deplPerOwner = - (Map<String, List<CloudifyDeployedTenant>>) getCacheManager().getObject("owner_deploy_map"); + Map<String, List<CloudifyDeployedTenant>> deplPerOwner = + (Map<String, List<CloudifyDeployedTenant>>) getCacheManager() + .getObject("owner_deploy_map"); lock.readLock().unlock(); switch (option) { case SERVICE_ID_COUNT: List items = null; if (!ownerFilterStr.isEmpty()) { if (deplPerOwner != null) { - List<CloudifyDeployedTenant> ownerDeplList = deplPerOwner.get(user); + List<CloudifyDeployedTenant> ownerDeplList = deplPerOwner.get(user); items = ownerDeplList; } } else { - List<CloudifyDeployment> itemsList = + List<CloudifyDeployment> itemsList = cloudifyClient.getDeploymentsWithFilter(request); items = itemsList; } @@ -317,33 +295,34 @@ public class CloudifyController extends DashboardRestrictedBaseController { items = new ArrayList<CloudifyDeployment>(); } totalItems = items.size(); - RestResponsePage<List> model = - new RestResponsePage<>(totalItems, 1, items); + RestResponsePage<List> model = new RestResponsePage<>(totalItems, 1, items); String outboundJson = objectMapper.writeValueAsString(model); return outboundJson; - case SERVICE_ID: + case SERVICE_ID: final String svcIdTenant = tenantFilterStr; if (useCache) { lock.readLock().lock(); - itemList = - (List<CloudifyDeployment>)getCacheManager().getObject(SERVICE_ID + ":" + svcIdTenant); + itemList = (List<CloudifyDeployment>) getCacheManager() + .getObject(SERVICE_ID + ":" + svcIdTenant); lock.readLock().unlock(); } if (itemList == null) { - itemList = cloudifyClient.getDeployments(tenantFilterStr, deplPgSize, deplPgOffset, true); + itemList = cloudifyClient.getDeployments(tenantFilterStr, deplPgSize, + deplPgOffset, true); } Set<String> svcIdList = new HashSet<String>(); if (itemList != null) { - svcIdList = - (Set) itemList.stream().map(x -> ((CloudifyDeployment)x).id).collect(Collectors.toSet()); + svcIdList = (Set) itemList.stream().map(x -> ((CloudifyDeployment) x).id) + .collect(Collectors.toSet()); // apply role based filtering if (roleLevel.equals("app")) { @SuppressWarnings("unchecked") - List<String> myApps = new ArrayList(userApps); - svcIdList = svcIdList.stream().filter(s -> myApps.stream() - .anyMatch(roleFilter -> ((String)s).toLowerCase().startsWith(roleFilter))) - .collect(Collectors.toSet()); - } + List<String> myApps = new ArrayList<String>(userApps); + svcIdList = svcIdList.stream() + .filter(s -> myApps.stream().anyMatch( + roleFilter -> s.toLowerCase().startsWith(roleFilter))) + .collect(Collectors.toSet()); + } } return objectMapper.writeValueAsString(svcIdList); case DEPLOYMENT: @@ -352,179 +331,199 @@ public class CloudifyController extends DashboardRestrictedBaseController { List<CloudifyDeployment> cfyDepList = null; try { if (tenantFilterStr.isEmpty()) { - cfyDepList = new ArrayList<CloudifyDeployment>(); + cfyDepList = new ArrayList<>(); if (useCache) { lock.readLock().lock(); - cfyTenantList = (List<CloudifyTenant>)getCacheManager().getObject(TENANTS_PATH); - for (CloudifyTenant cfyTenObj: cfyTenantList) { - cfyDepPerTntList = (List<CloudifyDeployment>)getCacheManager().getObject(SERVICE_ID + ":" + cfyTenObj.name); + cfyTenantList = + (List<CloudifyTenant>) getCacheManager().getObject(TENANTS_PATH); + for (CloudifyTenant cfyTenObj : cfyTenantList) { + cfyDepPerTntList = (List<CloudifyDeployment>) getCacheManager() + .getObject(SERVICE_ID + ":" + cfyTenObj.name); cfyDepList.addAll(cfyDepPerTntList); } lock.readLock().unlock(); } else { - cfyTenantList = (List<CloudifyTenant>)cloudifyClient.getTenants().items; - for (CloudifyTenant cfyTenObj: cfyTenantList) { - cfyDepPerTntList = cloudifyClient.getDeployments(cfyTenObj.name, deplPgSize, deplPgOffset, true, false); + cfyTenantList = + cloudifyClient.getTenants().items; + for (CloudifyTenant cfyTenObj : cfyTenantList) { + cfyDepPerTntList = cloudifyClient.getDeployments(cfyTenObj.name, + deplPgSize, deplPgOffset, true, false); cfyDepList.addAll(cfyDepPerTntList); } - } + } } else { if (useCache) { lock.readLock().lock(); - cfyDepList = (List<CloudifyDeployment>)getCacheManager().getObject(SERVICE_ID + ":" + tenantFilterStr); + cfyDepList = (List<CloudifyDeployment>) getCacheManager() + .getObject(SERVICE_ID + ":" + tenantFilterStr); lock.readLock().unlock(); } if (cfyDepList == null) { - cfyDepList = cloudifyClient.getDeployments(tenantFilterStr, deplPgSize, deplPgOffset, true, false); + cfyDepList = cloudifyClient.getDeployments(tenantFilterStr, deplPgSize, + deplPgOffset, true, false); } } totalItems = cfyDepList.size(); - + if (useCache) { lock.readLock().lock(); - cfyDeplExt = - (List<CloudifyDeploymentExt>)getCacheManager().getObject(SERVICE_ID + ":" + tenantFilterStr + ":ext"); + cfyDeplExt = (List<CloudifyDeploymentExt>) getCacheManager() + .getObject(SERVICE_ID + ":" + tenantFilterStr + ":ext"); if (cfyDeplExt != null) { cfyDepExList.addAll(cfyDeplExt); } - cfyDeplHelm = - (List<CloudifyDeploymentHelm>)getCacheManager().getObject(SERVICE_ID + ":" + tenantFilterStr + ":helm"); + cfyDeplHelm = (List<CloudifyDeploymentHelm>) getCacheManager() + .getObject(SERVICE_ID + ":" + tenantFilterStr + ":helm"); if (cfyDeplHelm != null) { cfyDeplHelmList.addAll(cfyDeplHelm); } - lock.readLock().unlock(); + lock.readLock().unlock(); } - + if (roleLevel.equals("app") && !userLevel) { @SuppressWarnings("unchecked") List<String> myApps = new ArrayList(userApps); - cfyDepList = (List) cfyDepList.stream().filter(s -> myApps.stream() - .anyMatch(roleFilter -> ((CloudifyDeployment)s).id.toLowerCase().startsWith(roleFilter))) - .collect(Collectors.toList()); - } + cfyDepList = + cfyDepList.stream() + .filter(s -> myApps.stream() + .anyMatch(roleFilter -> s.id + .toLowerCase().startsWith(roleFilter))) + .collect(Collectors.toList()); + } // apply user search filters if (searchBy != null && !searchBy.isEmpty()) { - // parse the search filters string - // look for service name patterns - List<String> searchFilters = - new ArrayList<String>(Arrays.asList(searchBy.split(";"))); - if (searchFilters.stream().anyMatch(s->s.startsWith("serviceRef"))) { - List<String> svcRefsList = searchFilters.stream().filter(s->s.startsWith("serviceRef")). - collect(Collectors.toList()); + // parse the search filters string + // look for service name patterns + List<String> searchFilters = + new ArrayList<>(Arrays.asList(searchBy.split(";"))); + if (searchFilters.stream().anyMatch(s -> s.startsWith("serviceRef"))) { + List<String> svcRefsList = + searchFilters.stream().filter(s -> s.startsWith("serviceRef")) + .collect(Collectors.toList()); svcRefFilterStr = svcRefsList.get(0).split(":")[1]; } - if (searchFilters.stream().anyMatch(s->s.startsWith("status"))) { - List<String> statusList = searchFilters.stream().filter(s->s.startsWith("status")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("status"))) { + List<String> statusList = searchFilters.stream() + .filter(s -> s.startsWith("status")).collect(Collectors.toList()); statusFilterStr = statusList.get(0).split(":")[1]; } - if (searchFilters.stream().anyMatch(s->s.startsWith("helm"))) { - List<String> helmList = searchFilters.stream().filter(s->s.startsWith("helm")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("helm"))) { + List<String> helmList = searchFilters.stream() + .filter(s -> s.startsWith("helm")).collect(Collectors.toList()); helmFilterStr = helmList.get(0).split(":")[1]; - } + } if (!ownerFilterStr.isEmpty()) { - List ownerFilterList = - new ArrayList<String>(Arrays.asList(ownerFilterStr.split(","))); - if (ownerFilterList.size() == 1 && ownerFilterList.get(0).equals("undefined")) { + List<String> ownerFilterList = + new ArrayList<>(Arrays.asList(ownerFilterStr.split(","))); + if (ownerFilterList.size() == 1 + && ownerFilterList.get(0).equals("undefined")) { ownerFilterList.clear(); ownerFilterList.add(user); } if (deplPerOwner != null && cfyDepList != null) { - List<CloudifyDeployedTenant> ownerDeplList = new ArrayList<CloudifyDeployedTenant>(); - Stream<Map.Entry<String, List<CloudifyDeployedTenant>>> deplOwnerEntriesStream = - deplPerOwner.entrySet().stream(); - Set<Map.Entry<String, List<CloudifyDeployedTenant>>> deplOwnerSet = - deplOwnerEntriesStream.filter(m -> ownerFilterList.stream(). - anyMatch(ownFilter -> m.getKey().equalsIgnoreCase((String) ownFilter))).collect(Collectors.toSet()); - deplOwnerSet.stream().forEach(e -> ownerDeplList.addAll(e.getValue())); - if (ownerDeplList.size() > 0) { - Predicate<CloudifyDeployment> In2 = - s -> ownerDeplList.stream().anyMatch(mc -> s.id.equals(mc.id)); - cfyDepList = cfyDepList.stream().filter(In2).collect(Collectors.toList()); + List<CloudifyDeployedTenant> ownerDeplList = + new ArrayList<>(); + Stream<Map.Entry<String, List<CloudifyDeployedTenant>>> deplOwnerEntriesStream = + deplPerOwner.entrySet().stream(); + Set<Map.Entry<String, List<CloudifyDeployedTenant>>> deplOwnerSet = + deplOwnerEntriesStream + .filter(m -> ownerFilterList.stream() + .anyMatch(ownFilter -> m.getKey() + .equalsIgnoreCase(ownFilter))) + .collect(Collectors.toSet()); + deplOwnerSet.stream() + .forEach(e -> ownerDeplList.addAll(e.getValue())); + if (!ownerDeplList.isEmpty()) { + Predicate<CloudifyDeployment> In2 = s -> ownerDeplList.stream() + .anyMatch(mc -> s.id.equals(mc.id)); + cfyDepList = cfyDepList.stream().filter(In2) + .collect(Collectors.toList()); } else { - cfyDepList = new ArrayList<CloudifyDeployment>(); + cfyDepList = new ArrayList<>(); } } } if (!svcRefFilterStr.isEmpty()) { - List<String> svcFilterList = + List<String> svcFilterList = new ArrayList<String>(Arrays.asList(svcRefFilterStr.split(","))); if (!svcFilterList.isEmpty()) { - cfyDepList = (List) cfyDepList.stream().filter(s -> svcFilterList.stream() - .anyMatch(svcFilter -> ((CloudifyDeployment) s).id.toLowerCase().contains(svcFilter.toLowerCase()))) + cfyDepList = cfyDepList.stream() + .filter(s -> svcFilterList.stream() + .anyMatch(svcFilter -> s.id + .toLowerCase().contains(svcFilter.toLowerCase()))) .collect(Collectors.toList()); } } if (!statusFilterStr.isEmpty()) { - List<String> statusFilterList = - new ArrayList<String>(Arrays.asList(statusFilterStr.split(","))); + List<String> statusFilterList = + new ArrayList<String>(Arrays.asList(statusFilterStr.split(","))); Predicate<CloudifyDeployment> srvcFilter = p -> p.lastExecution.status != null; - Stream<CloudifyDeployment> svcStream = cfyDepList.stream(); + Stream<CloudifyDeployment> svcStream = cfyDepList.stream(); if (cfyDepExList == null || cfyDepExList.isEmpty()) { cfyDepExList = cloudifyClient.updateWorkflowStatus(cfyDepList); } if (cfyDepExList != null) { updateWorkflowHelmStatus(cfyDepList, cfyDepExList, cfyDeplHelmList); - cfyDepList = svcStream.filter( srvcFilter.and( - s -> statusFilterList.stream() - .anyMatch(statusFilter ->((CloudifyDeployment) s).lastExecution.status.equalsIgnoreCase(statusFilter)))) - .collect(Collectors.toList()); + cfyDepList = svcStream + .filter(srvcFilter.and(s -> statusFilterList.stream().anyMatch( + statusFilter -> s.lastExecution.status + .equalsIgnoreCase(statusFilter)))) + .collect(Collectors.toList()); } - } + } if (!helmFilterStr.isEmpty()) { - Predicate<CloudifyDeployment> helmFilter = - p -> p.helmStatus != null; + Predicate<CloudifyDeployment> helmFilter = p -> p.helmStatus != null; boolean isHelm = Boolean.parseBoolean(helmFilterStr); if (cfyDeplHelmList == null || cfyDeplHelmList.isEmpty()) { cfyDeplHelmList = cloudifyClient.updateHelmInfo(cfyDepList); } - if (cfyDeplHelmList != null && isHelm ) { + if (cfyDeplHelmList != null && isHelm) { updateWorkflowHelmStatus(cfyDepList, cfyDepExList, cfyDeplHelmList); - cfyDepList = (List) cfyDepList.stream().filter(helmFilter.and( - s -> ((CloudifyDeployment) s).isHelm == true)) - .collect(Collectors.toList()); + cfyDepList = (List) cfyDepList.stream() + .filter(helmFilter + .and(s -> s.isHelm)) + .collect(Collectors.toList()); } - } - } + } + } itemList.addAll(cfyDepList); } catch (Exception cfyDepErr) { logger.error(EELFLoggerDelegate.errorLogger, cfyDepErr.getMessage()); } if (sortBy != null) { if (sortBy.equals("id")) { - ((List<CloudifyDeployment>)itemList).sort( - (CloudifyDeployment o1, CloudifyDeployment o2) -> o1.id.compareTo(o2.id)); + ((List<CloudifyDeployment>) itemList).sort((CloudifyDeployment o1, + CloudifyDeployment o2) -> o1.id.compareTo(o2.id)); } else if (sortBy.equals("blueprint_id")) { - ((List<CloudifyDeployment>)itemList).sort( - (CloudifyDeployment o1, CloudifyDeployment o2) -> o1.blueprint_id.compareTo(o2.blueprint_id)); + ((List<CloudifyDeployment>) itemList).sort((CloudifyDeployment o1, + CloudifyDeployment o2) -> o1.blueprint_id.compareTo(o2.blueprint_id)); } else if (sortBy.equals("created_at")) { - ((List<CloudifyDeployment>)itemList).sort( - (CloudifyDeployment o1, CloudifyDeployment o2) -> o1.created_at.compareTo(o2.created_at)); + ((List<CloudifyDeployment>) itemList).sort((CloudifyDeployment o1, + CloudifyDeployment o2) -> o1.created_at.compareTo(o2.created_at)); } else if (sortBy.equals("updated_at")) { - ((List<CloudifyDeployment>)itemList).sort( - (CloudifyDeployment o1, CloudifyDeployment o2) -> o1.updated_at.compareTo(o2.updated_at)); + ((List<CloudifyDeployment>) itemList).sort((CloudifyDeployment o1, + CloudifyDeployment o2) -> o1.updated_at.compareTo(o2.updated_at)); } } - break; + break; case TENANT: lock.readLock().lock(); - cfyTenantList = (List<CloudifyTenant>)getCacheManager().getObject(TENANTS_PATH); + cfyTenantList = (List<CloudifyTenant>) getCacheManager().getObject(TENANTS_PATH); lock.readLock().unlock(); if (cfyTenantList == null || cfyTenantList.isEmpty()) { - cfyTenantList = (List<CloudifyTenant>)cloudifyClient.getTenants().items; + cfyTenantList = (List<CloudifyTenant>) cloudifyClient.getTenants().items; } - + itemList = cfyTenantList; break; - default: - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of items failed!"); + default: + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, "Getting page of items failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPage caught exception"); throw new Exception( "getItemListForPage failed: unimplemented case: " + option.name()); @@ -540,7 +539,7 @@ public class CloudifyController extends DashboardRestrictedBaseController { if (option.equals(CloudifyDataItem.DEPLOYMENT)) { // update blueprint owner for each deployment record - if (deplPerOwner != null ) { + if (deplPerOwner != null) { updateBpOwnerId(itemList, deplPerOwner); } if (cfyDepExList == null || cfyDepExList.isEmpty()) { @@ -549,29 +548,32 @@ public class CloudifyController extends DashboardRestrictedBaseController { if (cfyDeplHelmList == null || cfyDeplHelmList.isEmpty()) { cfyDeplHelmList = cloudifyClient.updateHelmInfo(itemList); } - for (CloudifyDeployment srvc: (List<CloudifyDeployment>)itemList) { + for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { try { - ConsulDeploymentHealth serviceHealth = + ConsulDeploymentHealth serviceHealth = consulClient.getServiceHealthByDeploymentId(srvc.id); if (serviceHealth != null) { srvc.healthStatus = serviceHealth.getStatus(); } } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "consul getServiceHealth caught exception"); + logger.error(EELFLoggerDelegate.errorLogger, + "consul getServiceHealth caught exception"); } - // correlate the cached data for deployments and deployment extensions + // correlate the cached data for deployments and deployment extensions if (cfyDepExList != null) { - List<CloudifyDeploymentExt> deplExtItems = - cfyDepExList.stream().filter((Predicate<? super CloudifyDeploymentExt>) s->s.id.equals(srvc.id)). - collect(Collectors.toList()); + List<CloudifyDeploymentExt> deplExtItems = cfyDepExList.stream() + .filter( + (Predicate<? super CloudifyDeploymentExt>) s -> s.id.equals(srvc.id)) + .collect(Collectors.toList()); if (deplExtItems != null && !deplExtItems.isEmpty()) { srvc.lastExecution = deplExtItems.get(0).lastExecution; } } if (cfyDeplHelmList != null) { - List<CloudifyDeploymentHelm> deplHelmItems = - cfyDeplHelmList.stream().filter((Predicate<? super CloudifyDeploymentHelm>) s->s.id.equals(srvc.id)). - collect(Collectors.toList()); + List<CloudifyDeploymentHelm> deplHelmItems = cfyDeplHelmList.stream() + .filter( + (Predicate<? super CloudifyDeploymentHelm>) s -> s.id.equals(srvc.id)) + .collect(Collectors.toList()); if (deplHelmItems != null && !deplHelmItems.isEmpty()) { srvc.helmStatus = deplHelmItems.get(0).helmStatus; srvc.isHelm = deplHelmItems.get(0).isHelm; @@ -588,8 +590,8 @@ public class CloudifyController extends DashboardRestrictedBaseController { } else { for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { String deplRef = srvc.id.split("_")[0].toLowerCase(); - if (comp_deploy_tab.containsKey(deplRef)) { - boolean enableDeploy = comp_deploy_tab.get(deplRef); + if (compDeployTab.containsKey(deplRef)) { + boolean enableDeploy = compDeployTab.get(deplRef); srvc.canDeploy = enableDeploy; } else { srvc.canDeploy = false; @@ -601,7 +603,7 @@ public class CloudifyController extends DashboardRestrictedBaseController { srvc.canDeploy = true; } } - } + } RestResponsePage<List> model = new RestResponsePage<>(totalItems, pageCount, itemList); String outboundJson = objectMapper.writeValueAsString(model); return outboundJson; @@ -612,7 +614,7 @@ public class CloudifyController extends DashboardRestrictedBaseController { * constructs an appropriate JSON block to report errors. * * @param request Inbound request - * @param option Item type to get + * @param option Item type to get * @param inputKey Input key to search for if using filters * @param inputValue Input value to search for if using filters * @return JSON with one page of objects; or an error. @@ -620,27 +622,42 @@ public class CloudifyController extends DashboardRestrictedBaseController { protected String getItemListForPageWrapper(HttpServletRequest request, CloudifyDataItem option, String sortBy, String searchBy) { String outboundJson = null; + RestResponseError result = null; try { User appUser = UserUtils.getUserSession(request); - if (appUser == null || appUser.getLoginId() == null || appUser.getLoginId().length() == 0) + if (appUser == null || appUser.getLoginId() == null + || appUser.getLoginId().length() == 0) { throw new Exception("getItemListForPageWrapper: Failed to get application user"); + } int pageNum = getRequestPageNumber(request); int pageSize = getRequestPageSize(request); - outboundJson = getItemListForPage(request, appUser.getId(), option, pageNum, pageSize, + outboundJson = getItemListForPage(request, option, pageNum, pageSize, sortBy, searchBy); - } catch (Exception ex) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of items failed!"); + } catch (HttpStatusCodeException ex) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, "Getting page of items failed!"); + logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPageWrapper caught exception"); + result = + new RestResponseError(ex.getResponseBodyAsString()); + try { + outboundJson = objectMapper.writeValueAsString(result); + } catch (JsonProcessingException jpe) { + // Should never, ever happen + outboundJson = "{ \"error\" : \"" + jpe.toString() + "\"}"; + } + } catch (Exception ex) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, "Getting page of items failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPageWrapper caught exception"); - RestResponseError result = null; - if (ex instanceof HttpStatusCodeException) - result = new RestResponseError(((HttpStatusCodeException) ex).getResponseBodyAsString()); - else - result = new RestResponseError("Failed to get " + option.name(), ex); + result = new RestResponseError("Failed to get " + option.name(), ex); try { outboundJson = objectMapper.writeValueAsString(result); } catch (JsonProcessingException jpe) { @@ -650,7 +667,6 @@ public class CloudifyController extends DashboardRestrictedBaseController { } return outboundJson; } - /** * Serves one page of deployments @@ -658,205 +674,201 @@ public class CloudifyController extends DashboardRestrictedBaseController { * @param request HttpServletRequest * @return List of CloudifyDeployment objects */ - @RequestMapping(value = { DEPLOYMENTS_PATH }, method = RequestMethod.GET, - produces = "application/json") - @ResponseBody - public String getDeploymentsByPage(HttpServletRequest request) - { - preLogAudit(request); - String json = getItemListForPageWrapper(request, - CloudifyDataItem.DEPLOYMENT,request.getParameter("sortBy"), request.getParameter("searchBy")); - postLogAudit(request); - return json; - } - - /** - * Gets the specified blueprint content for viewing. - * - * @param id - * Blueprint ID - * @param request - * HttpServletRequest - * @return Blueprint as YAML; or error. - * @throws Exception - * on serialization error - * - */ - @RequestMapping(value = { - BLUEPRINTS_PATH + "/{id:.+}" + "/archive" }, method = RequestMethod.GET, produces = "application/yaml") - @ResponseBody - public byte[] viewBlueprintContentById(@PathVariable("id") String id, @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) throws Exception { - preLogAudit(request); - byte[] result = null; - try { - result = cloudifyClient.viewBlueprint(tenant, id); - } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Viewing blueprint " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "viewBlueprintContentById caught exception"); - //result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Viewing blueprint " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "viewBlueprintContentById caught exception"); - //result = new RestResponseError("getBlueprintContentById failed", t); - } finally { - postLogAudit(request); - } - return result; - //objectMapper.writeValueAsString(result); - } + @GetMapping( + value = {DEPLOYMENTS_PATH}, + produces = "application/json") + public String getDeploymentsByPage(HttpServletRequest request) { + preLogAudit(request); + String json = getItemListForPageWrapper(request, CloudifyDataItem.DEPLOYMENT, + request.getParameter(SORT_BY), request.getParameter(SEARCH_BY)); + postLogAudit(request); + return json; + } + + /** + * Gets the specified blueprint content for viewing. + * + * @param id + * Blueprint ID + * @param request + * HttpServletRequest + * @return Blueprint as YAML; or error. + * @throws Exception + * on serialization error + * + */ + @GetMapping( + value = {BLUEPRINTS_PATH + "/{id:.+}" + "/archive"}, + produces = "application/yaml") + public byte[] viewBlueprintContentById(@PathVariable("id") String id, + @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) + throws Exception { + preLogAudit(request); + byte[] result = null; + final String errStr = "View blueprint failed: " + id ; + final String errLogStr = "viewBlueprintContentById caught exception"; + try { + result = cloudifyClient.viewBlueprint(tenant, id); + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + } finally { + postLogAudit(request); + } + return result; + } + + /** + * Serves the complete list of deployment IDs. + * + * @param request HttpServletRequest + * + * @return list of cloudify deployment IDs + */ + @GetMapping(value = {SERVICE_ID}, produces = "application/json") + public String getAllServiceNames(HttpServletRequest request) { + preLogAudit(request); + String json = null; + json = getItemListForPageWrapper(request, CloudifyDataItem.SERVICE_ID, + request.getParameter(SORT_BY), request.getParameter(SEARCH_BY)); + postLogAudit(request); + return json; + } + + /** + * Serves the count of deployment IDs. + * + * @param request HttpServletRequest + * + * @return list of cloudify deployment IDs + */ + @GetMapping( + value = {SERVICE_ID_COUNT}, + produces = "application/json") + public String getDepCount(HttpServletRequest request) { + preLogAudit(request); + String json = null; + json = getItemListForPageWrapper(request, CloudifyDataItem.SERVICE_ID_COUNT, + request.getParameter(SORT_BY), request.getParameter(SEARCH_BY)); + postLogAudit(request); + return json; + } - /** - * Serves the complete list of deployment IDs - * - * @param request HttpServletRequest - * - * @return list of cloudify deployment IDs - */ - @RequestMapping( - value = {SERVICE_ID}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody - public String getAllServiceNames(HttpServletRequest request) { - preLogAudit(request); - String json = null; - json = getItemListForPageWrapper(request, CloudifyDataItem.SERVICE_ID, - request.getParameter("sortBy"), request.getParameter("searchBy")); - postLogAudit(request); - return json; - } - - /** - * Serves the count of deployment IDs - * - * @param request HttpServletRequest - * - * @return list of cloudify deployment IDs - */ - @RequestMapping( - value = {SERVICE_ID_COUNT}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody - public String getDepCount(HttpServletRequest request) { - preLogAudit(request); - String json = null; - json = getItemListForPageWrapper(request, CloudifyDataItem.SERVICE_ID_COUNT, - request.getParameter("sortBy"), request.getParameter("searchBy")); - postLogAudit(request); - return json; - } - - /** - * Serves the count of plugins - * - * @param request HttpServletRequest - * - * @return count of cloudify plugins - * @throws JsonProcessingException - */ - @RequestMapping( - value = {PLUGIN_COUNT}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody - public String getPluginCount(HttpServletRequest request) - throws JsonProcessingException { - preLogAudit(request); - ECTransportModel result = null; - try { - int totalItems = - (int) cloudifyClient.getPlugins().metadata.pagination.total; - RestResponsePage<List> model = - new RestResponsePage<>(totalItems, 1, null); - String outboundJson = objectMapper.writeValueAsString(model); - return outboundJson; - } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting plugins failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getPlugins caught exception"); - result = new RestResponseError(e.getResponseBodyAsString()); - return objectMapper.writeValueAsString(result); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting plugins failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getPlugins caught exception"); - result = new RestResponseError("getSecret failed", t); - return objectMapper.writeValueAsString(result); - } finally { - postLogAudit(request); - } - } - /** - * gets the tenants list + * Serves the count of plugins. + * + * @param request HttpServletRequest + * + * @return count of cloudify plugins + * @throws JsonProcessingException + */ + @GetMapping( + value = {PLUGIN_COUNT}, + produces = "application/json") + public String getPluginCount(HttpServletRequest request) throws JsonProcessingException { + preLogAudit(request); + ECTransportModel result = null; + final String errStr = "Getting plugins failed!"; + final String errLogStr = "getPlugins caught exception"; + try { + int totalItems = (int) cloudifyClient.getPlugins().metadata.pagination.total; + RestResponsePage<List> model = new RestResponsePage<>(totalItems, 1, null); + return objectMapper.writeValueAsString(model); + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError(e.getResponseBodyAsString()); + return objectMapper.writeValueAsString(result); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError("getSecret failed", t); + return objectMapper.writeValueAsString(result); + } finally { + postLogAudit(request); + } + } + + /** + * get the tenants list. * * @param request HttpServletRequest * @return List of CloudifyDeployment objects */ - @RequestMapping(value = { TENANTS_PATH }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {TENANTS_PATH}, + produces = "application/json") public String getTenants(HttpServletRequest request) { preLogAudit(request); String json = getItemListForPageWrapper(request, CloudifyDataItem.TENANT, - request.getParameter("sortBy"), request.getParameter("searchBy")); + request.getParameter(SORT_BY), request.getParameter(SEARCH_BY)); postLogAudit(request); return json; } - + /** * Gets the specified blueprint metadata. * - * @param id Blueprint ID + * @param id Blueprint ID * @param request HttpServletRequest * @return Blueprint as JSON; or error. * @throws Exception on serialization error * */ - @RequestMapping(value = { BLUEPRINTS_PATH + "/{id:.+}" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {BLUEPRINTS_PATH + "/{id:.+}"}, + produces = "application/json") public String getBlueprintById(@PathVariable("id") String id, - @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) - throws Exception { + @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) + throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Getting blueprint failed: " + id ; + final String errLogStr = "getBlueprintById caught exception"; try { result = cloudifyClient.getBlueprint(id, tenant); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting blueprint " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getBlueprintById caught exception"); + + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting blueprint " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getBlueprintById caught exception"); + + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getBlueprintById failed", t); } finally { postLogAudit(request); @@ -867,39 +879,42 @@ public class CloudifyController extends DashboardRestrictedBaseController { /** * Deletes the specified blueprint. * - * @param id Blueprint ID - * @param request HttpServletRequest + * @param id Blueprint ID + * @param request HttpServletRequest * @param response HttpServletResponse * @return No content on success; error on failure. * @throws Exception On serialization failure */ - @RequestMapping(value = { BLUEPRINTS_PATH + "/{id}" }, method = RequestMethod.DELETE, produces = "application/json") - @ResponseBody - public String deleteBlueprint(@PathVariable("id") String id, - @RequestParam(value = "tenant", required = false) String tenant, - HttpServletRequest request, HttpServletResponse response) throws Exception { + @DeleteMapping( + value = {BLUEPRINTS_PATH + "/{id}"}, + produces = "application/json") + public String deleteBlueprint(@PathVariable("id") String id, + @RequestParam(value = "tenant", required = false) String tenant, HttpServletRequest request, + HttpServletResponse response) throws Exception { preLogAudit(request); String json = "{\"202\": \"OK\"}"; + final String errStr = "Deleting blueprint " + id + " failed!"; + final String errLogStr = "deleteBlueprint caught exception"; try { cloudifyClient.deleteBlueprint(id, tenant); response.setStatus(202); - } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting blueprint " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteBlueprint caught exception"); + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (Throwable t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting blueprint " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteBlueprint caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper .writeValueAsString(new RestResponseError("deleteBlueprint failed on ID " + id, t)); } finally { @@ -907,168 +922,174 @@ public class CloudifyController extends DashboardRestrictedBaseController { } return json; } - + /** * - * Deployment IDs for the given list of blueprint IDs + * Deployment IDs for the given list of blueprint IDs. * */ - @RequestMapping( - value = {"deployment_blueprint_map"}, - method = RequestMethod.POST, - produces = "application/json") - @ResponseBody - public String getDeploymentsForType(HttpServletRequest request, @RequestBody String[] typeList) - throws Exception { - List<ServiceTypeServiceMap> result = new ArrayList<ServiceTypeServiceMap>(); - for (String typeId : typeList) { - List<CloudifyDeployedTenant> deplForBpAggr = new ArrayList<CloudifyDeployedTenant>(); - List<CloudifyDeployedTenant> deplForBp = - cloudifyClient.getDeploymentForBlueprint("TID-"+typeId); - deplForBpAggr.addAll(deplForBp); - - ServiceQueryParams qryParams = - new ServiceQueryParams.Builder().typeId(typeId).build(); - ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); - Set<String> dep_ids = srvcRefs.items.stream().map(x -> ((ServiceRef)x).id).collect(Collectors.toSet()); - if (dep_ids.size() > 0) { - // lookup these dep_ids in cloudify for tenant mapping - for (String str: dep_ids) { - List<CloudifyDeployedTenant> deplForBpInv = - cloudifyClient.getDeploymentForBlueprint(str); - deplForBpAggr.addAll(deplForBpInv); - } - } - ServiceRefCfyList cfyDeplRefList = new ServiceRefCfyList(deplForBpAggr, deplForBpAggr.size()); - ServiceTypeServiceMap srvcMap = new ServiceTypeServiceMap(typeId, cfyDeplRefList); - result.add(srvcMap); - } - String resultStr = objectMapper.writeValueAsString(result); - return resultStr; - } + @PostMapping( + value = {"deployment_blueprint_map"}, + produces = "application/json") + public String getDeploymentsForType(HttpServletRequest request, @RequestBody String[] typeList) + throws Exception { + List<ServiceTypeServiceMap> result = new ArrayList<ServiceTypeServiceMap>(); + for (String typeId : typeList) { + List<CloudifyDeployedTenant> deplForBpAggr = new ArrayList<CloudifyDeployedTenant>(); + List<CloudifyDeployedTenant> deplForBp = + cloudifyClient.getDeploymentForBlueprint("TID-" + typeId); + deplForBpAggr.addAll(deplForBp); - @SuppressWarnings("unchecked") - @Scheduled(fixedDelay=3600000, initialDelay=180000) - public void cacheOwnerDeployMap() { - logger.debug(EELFLoggerDelegate.debugLogger, "cacheOwnerDeployMap begin"); - Map<String, List<CloudifyDeployedTenant>> deplPerOwner = - new HashMap<String, List<CloudifyDeployedTenant>>(); - new HashMap<String, List<ServiceTypeSummary>>(); - List<ServiceTypeSummary> bpNoDeplItems = - new ArrayList<ServiceTypeSummary>(); - List<ServiceTypeServiceMap> result = new ArrayList<ServiceTypeServiceMap>(); - List<CloudifyDeployedTenant> deplForBpAggr = - new ArrayList<CloudifyDeployedTenant>(); - String typeId = ""; - String owner = ""; - - ReadWriteLock lock = new ReentrantReadWriteLock(); - lock.readLock().lock(); - List<ServiceTypeSummary> bpItems = - (List<ServiceTypeSummary>) getCacheManager().getObject(SERVICE_TYPES); - lock.readLock().unlock(); - if (bpItems != null) { - for (ServiceTypeSummary item : bpItems) { - try { - typeId = item.getTypeId().get(); - owner = item.getOwner(); - List<CloudifyDeployedTenant> deplForBp = - cloudifyClient.getDeploymentForBlueprint("TID-"+typeId); - deplForBpAggr.clear(); - deplForBpAggr.addAll(deplForBp); - ServiceQueryParams qryParams = - new ServiceQueryParams.Builder().typeId(typeId).build(); - ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); - Set<String> dep_ids = srvcRefs.items.stream().map(x -> ((ServiceRef)x).id).collect(Collectors.toSet()); - if (dep_ids.size() > 0) { - for (String str: dep_ids) { - List<CloudifyDeployedTenant> deplForBpInv = - cloudifyClient.getDeploymentForBlueprint(str); - deplForBpAggr.addAll(deplForBpInv); - } - } - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "cacheOwnerDeployMap: " + e.getMessage()); - } finally { - if (deplForBpAggr.isEmpty()) { - bpNoDeplItems.add(item); - } - List<CloudifyDeployedTenant> iterBpIdDepl = - new ArrayList<CloudifyDeployedTenant>(); - iterBpIdDepl.addAll(deplForBpAggr); - ServiceRefCfyList cfyDeplRefList = new ServiceRefCfyList(iterBpIdDepl, iterBpIdDepl.size()); - ServiceTypeServiceMap srvcMap = new ServiceTypeServiceMap(typeId, cfyDeplRefList); - result.add(srvcMap); - - List<CloudifyDeployedTenant> iterDeplBpAggr = - new ArrayList<CloudifyDeployedTenant>(); - iterDeplBpAggr.addAll(deplForBpAggr); - if (deplPerOwner.containsKey(owner)) { - List<CloudifyDeployedTenant> currOwnerDepl = - deplPerOwner.get(owner); - iterDeplBpAggr.addAll(0, currOwnerDepl); - deplPerOwner.put(owner, iterDeplBpAggr); - } else { - deplPerOwner.putIfAbsent(owner, iterDeplBpAggr); - } - } - } - } + ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build(); + ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); + Set<String> depIds = + srvcRefs.items.stream().map(x -> ((ServiceRef) x).id).collect(Collectors.toSet()); + if (!depIds.isEmpty()) { + // lookup these dep_ids in cloudify for tenant mapping + for (String str : depIds) { + List<CloudifyDeployedTenant> deplForBpInv = + cloudifyClient.getDeploymentForBlueprint(str); + deplForBpAggr.addAll(deplForBpInv); + } + } + ServiceRefCfyList cfyDeplRefList = + new ServiceRefCfyList(deplForBpAggr, deplForBpAggr.size()); + ServiceTypeServiceMap srvcMap = new ServiceTypeServiceMap(typeId, cfyDeplRefList); + result.add(srvcMap); + } + return objectMapper.writeValueAsString(result); + } + + /** + * Scheduled method to build and update application cache + * containing a collection of user to deployments mapping. + */ + @SuppressWarnings("unchecked") + @Scheduled(fixedDelay = 3600000, initialDelay = 180000) + public void cacheOwnerDeployMap() { + logger.debug(EELFLoggerDelegate.debugLogger, "cacheOwnerDeployMap begin"); + Map<String, List<CloudifyDeployedTenant>> deplPerOwner = + new HashMap<>(); + new HashMap<String, List<ServiceTypeSummary>>(); + List<ServiceTypeSummary> bpNoDeplItems = new ArrayList<>(); + List<ServiceTypeServiceMap> result = new ArrayList<>(); + List<CloudifyDeployedTenant> deplForBpAggr = new ArrayList<>(); + String typeId = ""; + String owner = ""; + + ReadWriteLock lock = new ReentrantReadWriteLock(); + lock.readLock().lock(); + List<ServiceTypeSummary> bpItems = + (List<ServiceTypeSummary>) getCacheManager().getObject(SERVICE_TYPES); + lock.readLock().unlock(); + if (bpItems != null) { + for (ServiceTypeSummary item : bpItems) { + try { + typeId = item.getTypeId().get(); + owner = item.getOwner(); + List<CloudifyDeployedTenant> deplForBp = + cloudifyClient.getDeploymentForBlueprint("TID-" + typeId); + deplForBpAggr.clear(); + deplForBpAggr.addAll(deplForBp); + ServiceQueryParams qryParams = + new ServiceQueryParams.Builder().typeId(typeId).build(); + ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); + Set<String> depIds = srvcRefs.items.stream().map(x -> (x).id) + .collect(Collectors.toSet()); + if (!depIds.isEmpty()) { + for (String str : depIds) { + List<CloudifyDeployedTenant> deplForBpInv = + cloudifyClient.getDeploymentForBlueprint(str); + deplForBpAggr.addAll(deplForBpInv); + } + } + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, + "cacheOwnerDeployMap: " + e.getMessage()); + } finally { + if (deplForBpAggr.isEmpty()) { + bpNoDeplItems.add(item); + } + List<CloudifyDeployedTenant> iterBpIdDepl = + new ArrayList<CloudifyDeployedTenant>(); + iterBpIdDepl.addAll(deplForBpAggr); + ServiceRefCfyList cfyDeplRefList = + new ServiceRefCfyList(iterBpIdDepl, iterBpIdDepl.size()); + ServiceTypeServiceMap srvcMap = + new ServiceTypeServiceMap(typeId, cfyDeplRefList); + result.add(srvcMap); + + List<CloudifyDeployedTenant> iterDeplBpAggr = + new ArrayList<>(); + iterDeplBpAggr.addAll(deplForBpAggr); + if (deplPerOwner.containsKey(owner)) { + List<CloudifyDeployedTenant> currOwnerDepl = deplPerOwner.get(owner); + iterDeplBpAggr.addAll(0, currOwnerDepl); + deplPerOwner.put(owner, iterDeplBpAggr); + } else { + deplPerOwner.putIfAbsent(owner, iterDeplBpAggr); + } + } + } + } + + lock.writeLock().lock(); + getCacheManager().putObject("bp_deploy_map", result); + getCacheManager().putObject("owner_deploy_map", deplPerOwner); + lock.writeLock().unlock(); + } - lock.writeLock().lock(); - getCacheManager().putObject("bp_deploy_map", result); - getCacheManager().putObject("owner_deploy_map", deplPerOwner); - lock.writeLock().unlock(); - } - /** * Gets the specified deployment. * - * @param id Deployment ID + * @param id Deployment ID * @param request HttpServletRequest * @return Deployment for the specified ID; error on failure. * @throws Exception On serialization failure * */ - @RequestMapping(value = { DEPLOYMENTS_PATH + "/{id:.+}" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {DEPLOYMENTS_PATH + "/{id:.+}"}, + produces = "application/json") public String getDeploymentById(@PathVariable("id") String id, - @RequestParam(value = "tenant", required = false) String tenant, HttpServletRequest request) - throws Exception { + @RequestParam(value = "tenant", required = false) String tenant, HttpServletRequest request) + throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Getting deployment " + id + " failed!"; + final String errLogStr = "getDeploymentById caught exception"; try { if (tenant != null && tenant.length() > 0) { result = cloudifyClient.getDeployment(id, tenant); } else { result = cloudifyClient.getDeployment(id); } - } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting deployment " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getDeploymentById caught exception"); + } catch (HttpStatusCodeException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting deployment " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getDeploymentById caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getDeploymentById failed", t); } finally { postLogAudit(request); } return objectMapper.writeValueAsString(result); } - + /** - * Gets and serves one page of executions: + * Gets and serves one page of executions. * <OL> * <LI>Gets all deployments; OR uses the specified deployment ID if the query * parameter is present @@ -1079,35 +1100,35 @@ public class CloudifyController extends DashboardRestrictedBaseController { * to the executions with that status. * </OL> * - * @param request HttpServletRequest + * @param request HttpServletRequest * @param deployment_id Optional request parameter; if found, only executions - * for that deployment ID are returned. - * @param status Optional request parameter; if found, only executions - * with that status are returned. + * for that deployment ID are returned. + * @param status Optional request parameter; if found, only executions + * with that status are returned. * @return List of CloudifyExecution objects * @throws Exception on serialization failure */ @SuppressWarnings("unchecked") - @RequestMapping(value = { EXECUTIONS_PATH }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {EXECUTIONS_PATH}, + produces = "application/json") public String getExecutionsByPage(HttpServletRequest request, - @RequestParam(value = "deployment_id", required = true) String deployment_id, + @RequestParam(value = "deployment_id", required = true) String deploymentId, @RequestParam(value = "status", required = false) String status, @RequestParam(value = "tenant", required = true) String tenant) throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Getting executions failed!"; + final String errLogStr = "getExecutionsByPage caught exception"; try { - if (tenant == null) { - throw new Exception("required tenant input missing"); - } List<CloudifyExecution> itemList = new ArrayList<CloudifyExecution>(); List<String> depIds = new ArrayList<>(); - if (deployment_id == null) { + if (deploymentId == null) { CloudifyDeploymentList depList = cloudifyClient.getDeployments(tenant, 100, 0); for (CloudifyDeployment cd : depList.items) depIds.add(cd.id); } else { - depIds.add(deployment_id); + depIds.add(deploymentId); } for (String depId : depIds) { CloudifyExecutionList exeList = cloudifyClient.getExecutions(depId, tenant); @@ -1118,30 +1139,32 @@ public class CloudifyController extends DashboardRestrictedBaseController { Iterator<CloudifyExecution> exeIter = itemList.iterator(); while (exeIter.hasNext()) { CloudifyExecution ce = exeIter.next(); - if (!status.equals(ce.status)) + if (!status.equals(ce.status)) { exeIter.remove(); + } } } - Collections.sort(itemList, executionComparator); - + itemList.sort((CloudifyExecution o1, CloudifyExecution o2) -> o1 + .created_at.compareTo(o2.created_at)); // Paginate final int pageNum = getRequestPageNumber(request); final int pageSize = getRequestPageSize(request); final int totalItems = itemList.size(); final int pageCount = (int) Math.ceil((double) totalItems / pageSize); // Shrink if needed - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); + } result = new RestResponsePage<>(totalItems, pageCount, itemList); - } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionsByPage caught exception"); - result = new RestResponseError("getExecutionsByPage failed", t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError(errLogStr, t); } finally { postLogAudit(request); } @@ -1149,8 +1172,9 @@ public class CloudifyController extends DashboardRestrictedBaseController { } @SuppressWarnings("unchecked") - @RequestMapping(value = { EXECUTIONS_PATH + "/tenant" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {EXECUTIONS_PATH + "/tenant"}, + produces = "application/json") public String getExecutionsPerTenant(HttpServletRequest request, @RequestParam(value = "tenant", required = true) String tenant, @RequestParam(value = "status", required = false) String status) throws Exception { @@ -1159,34 +1183,38 @@ public class CloudifyController extends DashboardRestrictedBaseController { ReadWriteLock lock = new ReentrantReadWriteLock(); List<CloudifyTenant> cfyTenantList = null; List<CloudifyTenant> myTenantsList = null; + final String errStr = "Getting executions failed!"; + final String errLogStr = "getExecutionsByPage caught exception"; try { - List<CloudifyExecution> itemList = new ArrayList<CloudifyExecution>(); + List<CloudifyExecution> itemList = new ArrayList<>(); if (tenant == null) { // process all tenants that are relevant lock.readLock().lock(); - cfyTenantList = (List<CloudifyTenant>)getCacheManager().getObject(TENANTS_PATH); + cfyTenantList = (List<CloudifyTenant>) getCacheManager().getObject(TENANTS_PATH); lock.readLock().unlock(); if (cfyTenantList == null || cfyTenantList.isEmpty()) { - cfyTenantList = (List<CloudifyTenant>)cloudifyClient.getTenants().items; - } + cfyTenantList = cloudifyClient.getTenants().items; + } myTenantsList = cfyTenantList; - + for (CloudifyTenant tenItem : myTenantsList) { - CloudifyExecutionList exeList = + CloudifyExecutionList exeList = cloudifyClient.getExecutionsSummaryPerTenant(tenItem.name); // Filter down to specified status as needed if (status != null && !status.isEmpty()) { Iterator<CloudifyExecution> exeIter = exeList.items.iterator(); while (exeIter.hasNext()) { CloudifyExecution ce = exeIter.next(); - if (!status.equals(ce.status)) + if (!status.equals(ce.status)) { exeIter.remove(); + } } } itemList.addAll(exeList.items); } } else { - CloudifyExecutionList exeList = cloudifyClient.getExecutionsSummaryPerTenant(tenant); + CloudifyExecutionList exeList = + cloudifyClient.getExecutionsSummaryPerTenant(tenant); itemList.addAll(exeList.items); // Filter down to specified status as needed @@ -1194,31 +1222,31 @@ public class CloudifyController extends DashboardRestrictedBaseController { Iterator<CloudifyExecution> exeIter = itemList.iterator(); while (exeIter.hasNext()) { CloudifyExecution ce = exeIter.next(); - if (!status.equals(ce.status)) + if (!status.equals(ce.status)) { exeIter.remove(); + } } - } + } } - //Collections.sort(itemList, executionComparator); - // Paginate final int pageNum = getRequestPageNumber(request); final int pageSize = getRequestPageSize(request); final int totalItems = itemList.size(); final int pageCount = (int) Math.ceil((double) totalItems / pageSize); // Shrink if needed - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); + } result = new RestResponsePage<>(totalItems, pageCount, itemList); - } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionsByPage caught exception"); - result = new RestResponseError("getExecutionsByPage failed", t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError(errLogStr, t); } finally { postLogAudit(request); } @@ -1226,14 +1254,18 @@ public class CloudifyController extends DashboardRestrictedBaseController { } @SuppressWarnings("unchecked") - @RequestMapping(value = { EXECUTIONS_PATH + "/{id:.+}"}, method = RequestMethod.GET, produces = "application/json") - @ResponseBody - public String queryExecution(@PathVariable("id") String id, @RequestParam(value = "tenant", required = true) - String tenant, HttpServletRequest request) throws Exception { + @GetMapping( + value = {EXECUTIONS_PATH + "/{id:.+}"}, + produces = "application/json") + public String queryExecution(@PathVariable("id") String id, + @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) + throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Getting executions failed!"; + final String errLogStr = "getExecutionsByPage caught exception"; try { - List<CloudifyExecution> itemList = new ArrayList<CloudifyExecution>(); + List<CloudifyExecution> itemList = new ArrayList<>(); CloudifyExecution cfyExecObj = cloudifyClient.getExecutionIdSummary(id, tenant); itemList.add(cfyExecObj); final int pageNum = getRequestPageNumber(request); @@ -1241,27 +1273,29 @@ public class CloudifyController extends DashboardRestrictedBaseController { final int totalItems = itemList.size(); final int pageCount = (int) Math.ceil((double) totalItems / pageSize); // Shrink if needed - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); + } result = new RestResponsePage<>(totalItems, pageCount, itemList); - } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionsByPage caught exception"); - result = new RestResponseError("getExecutionsByPage failed", t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError(errLogStr, t); } finally { postLogAudit(request); } return objectMapper.writeValueAsString(result); - } - + } + @SuppressWarnings("unchecked") - @RequestMapping(value = { EXECUTIONS_PATH + "/active"}, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {EXECUTIONS_PATH + "/active"}, + produces = "application/json") public String getActiveExecutions(HttpServletRequest request) throws Exception { preLogAudit(request); ECTransportModel result = null; @@ -1269,22 +1303,23 @@ public class CloudifyController extends DashboardRestrictedBaseController { List<CloudifyTenant> cfyTenantList = null; List<CloudifyTenant> myTenantsList = null; String status = "started"; + final String errStr = "Getting executions failed!"; + final String errLogStr = "getExecutionsByPage caught exception"; try { - List<CloudifyExecution> itemList = new ArrayList<CloudifyExecution>(); + List<CloudifyExecution> itemList = new ArrayList<>(); // process all tenants that are relevant lock.readLock().lock(); - cfyTenantList = (List<CloudifyTenant>)getCacheManager().getObject(TENANTS_PATH); + cfyTenantList = (List<CloudifyTenant>) getCacheManager().getObject(TENANTS_PATH); lock.readLock().unlock(); if (cfyTenantList == null || cfyTenantList.isEmpty()) { - cfyTenantList = (List<CloudifyTenant>)cloudifyClient.getTenants().items; - } + cfyTenantList = cloudifyClient.getTenants().items; + } myTenantsList = cfyTenantList; - + for (CloudifyTenant tenItem : myTenantsList) { CloudifyExecutionList exeList = null; try { - exeList = - cloudifyClient.getExecutionsSummaryPerTenant(tenItem.name); + exeList = cloudifyClient.getExecutionsSummaryPerTenant(tenItem.name); } catch (Exception e) { continue; } @@ -1297,26 +1332,25 @@ public class CloudifyController extends DashboardRestrictedBaseController { } itemList.addAll(exeList.items); } - //Collections.sort(itemList, executionComparator); - // Paginate final int pageNum = getRequestPageNumber(request); final int pageSize = getRequestPageSize(request); final int totalItems = itemList.size(); final int pageCount = (int) Math.ceil((double) totalItems / pageSize); // Shrink if needed - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); + } result = new RestResponsePage<>(totalItems, pageCount, itemList); - } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionsByPage caught exception"); - result = new RestResponseError("getExecutionsByPage failed", t); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + result = new RestResponseError(errLogStr, t); } finally { postLogAudit(request); } @@ -1328,27 +1362,27 @@ public class CloudifyController extends DashboardRestrictedBaseController { * * * @param execution_id Execution ID (request parameter) - * @param tenant tenant name (query parameter) - * @param request HttpServletRequest + * @param tenant tenant name (query parameter) + * @param request HttpServletRequest * @return CloudifyExecutionList * @throws Exception on serialization failure */ @SuppressWarnings("unchecked") - @RequestMapping(value = { EVENTS_PATH }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {EVENTS_PATH}, + produces = "application/json") public String getExecutionEventsById( - @RequestParam(value = "execution_id", required = false) String execution_id, + @RequestParam(value = "execution_id", required = false) String executionId, @RequestParam(value = "logType", required = false) String isLogEvent, @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) throws Exception { preLogAudit(request); CloudifyEventList eventsList = null; ECTransportModel result = null; + final String errStr = "Getting executions failed for: " + executionId; + final String errLogStr = "getExecutionEventsById caught exception"; try { - if (tenant == null) { - throw new Exception("required tenant input missing"); - } - eventsList = cloudifyClient.getEventlogs(execution_id, tenant); + eventsList = cloudifyClient.getEventlogs(executionId, tenant); // Filter down to specified event type as needed List<CloudifyEvent> itemList = eventsList.items; if (!isLogEvent.isEmpty() && isLogEvent.equals("false")) { @@ -1360,33 +1394,35 @@ public class CloudifyController extends DashboardRestrictedBaseController { } } } - Collections.sort(itemList, eventComparator); + itemList.sort((CloudifyEvent o1, CloudifyEvent o2) -> o1 + .reported_timestamp.compareTo(o2.reported_timestamp)); Collections.reverse(itemList); final int pageNum = getRequestPageNumber(request); final int pageSize = getRequestPageSize(request); final int totalItems = itemList.size(); final int pageCount = (int) Math.ceil((double) totalItems / pageSize); // Shrink if needed - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); + } result = new RestResponsePage<>(totalItems, pageCount, itemList); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions " + execution_id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionEventsById caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions " + execution_id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionByIdAndDeploymentId caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getExecutionEventsById failed", t); } finally { postLogAudit(request); @@ -1397,19 +1433,23 @@ public class CloudifyController extends DashboardRestrictedBaseController { /** * Processes request to create an execution based on a deployment. * - * @param request HttpServletRequest + * @param request HttpServletRequest * @param execution Execution model * @return Information about the execution * @throws Exception on serialization failure */ - @RequestMapping(value = { EXECUTIONS_PATH }, method = RequestMethod.POST, produces = "application/json") - @ResponseBody - public String startExecution(HttpServletRequest request, @RequestBody CloudifyExecutionRequest execution) - throws Exception { + @PostMapping( + value = {EXECUTIONS_PATH}, + produces = "application/json") + public String startExecution(HttpServletRequest request, + @RequestBody CloudifyExecutionRequest execution) throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Starting execution failed!"; + final String errLogStr = "startExecution caught exception"; try { - if (!(execution.workflow_id.equals("status") || execution.workflow_id.equals("execute_operation")) + if (!(execution.workflow_id.equals("status") + || execution.workflow_id.equals("execute_operation")) && !execution.getParameters().containsKey("node_instance_id")) { // get the node instance ID for the deployment String nodeInstId = ""; @@ -1423,31 +1463,31 @@ public class CloudifyController extends DashboardRestrictedBaseController { execution.setParameters(inParms); } if (execution.workflow_id.equals("upgrade")) { - String repo_user = - cloudifyClient.getSecret("controller_helm_user", execution.getTenant()).value; - String repo_user_password = - cloudifyClient.getSecret("controller_helm_password", execution.getTenant()).value; - execution.getParameters().put("repo_user", repo_user); - execution.getParameters().put("repo_user_password", repo_user_password); + String repoUser = + cloudifyClient.getSecret("controller_helm_user", execution.getTenant()).value; + String repoUserPassword = cloudifyClient.getSecret("controller_helm_password", + execution.getTenant()).value; + execution.getParameters().put("repo_user", repoUser); + execution.getParameters().put("repo_user_password", repoUserPassword); } result = cloudifyClient.startExecution(execution); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Starting execution failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "startExecution caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); - } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Starting execution failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "startExecution caught exception"); + } catch (Exception t) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("startExecution failed", t); } finally { postLogAudit(request); @@ -1458,140 +1498,145 @@ public class CloudifyController extends DashboardRestrictedBaseController { /** * Cancels an execution. * - * @param id Execution ID + * @param id Execution ID * @param deploymentId Deployment ID (not clear why this is needed) - * @param action Action to perform (not clear why this is needed) - * @param request HttpServletRequest - * @param response HttpServletRequest + * @param action Action to perform (not clear why this is needed) + * @param request HttpServletRequest + * @param response HttpServletRequest * @return Passes thru HTTP status code from remote endpoint; no body on success * @throws Exception on serialization failure */ - @RequestMapping(value = { EXECUTIONS_PATH + "/{id}" }, method = RequestMethod.POST, produces = "application/json") - @ResponseBody + @PostMapping( + value = {EXECUTIONS_PATH + "/{id}"}, + produces = "application/json") public String cancelExecution(@RequestHeader HttpHeaders headers, @PathVariable("id") String id, - @RequestBody Map<String, String> parameters, HttpServletRequest request, HttpServletResponse response) - throws Exception { + @RequestBody Map<String, String> parameters, HttpServletRequest request, + HttpServletResponse response) throws Exception { preLogAudit(request); ECTransportModel result = null; List<String> tenant = null; + final String errStr = "Cancelling execution failed: " + id; + final String errLogStr = "cancelExecution caught exception"; try { tenant = headers.get("tenant"); result = cloudifyClient.cancelExecution(id, parameters, tenant.get(0)); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Cancelling execution " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "cancelExecution caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Cancelling execution " + id + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "cancelExecution caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("cancelExecution failed on ID " + id, t); } finally { postLogAudit(request); } - if (result == null) + if (result == null) { return null; - else + } + else { return objectMapper.writeValueAsString(result); + } } /** * Gets the specified node-instances details * - * @query param deployment deployment ID - * @query param tenant tenant name + * @query param deployment deployment ID + * @query param tenant tenant name * @param request HttpServletRequest * @return node instances as a string; or error. * @throws Exception on serialization error * */ - @RequestMapping(value = {"node-instances-data"}, - method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {"node-instances-data"}, + produces = "application/json") public String getNodeInstanceDetails( - @RequestParam(value = "deployment", required = true) String deployment, - @RequestParam(value = "tenant", required = true) String tenant, - HttpServletRequest request) throws Exception { + @RequestParam(value = "deployment", required = true) String deployment, + @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) + throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Getting node-instance failed for deploymentId: " + deployment; + final String errLogStr = "getNodeInstance caught exception"; try { result = cloudifyClient.getNodeInstanceDetails(deployment, tenant); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node-instance with deploymentId " + deployment - + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstance caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node-instance with deploymentId " + deployment - + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstance caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getNodeInstance failed", t); } finally { postLogAudit(request); } return objectMapper.writeValueAsString(result); } - + /** * Gets the specified node-instances for viewing. * - * @param id deployment ID + * @param id deployment ID * @param request HttpServletRequest * @return node instances as a string; or error. * @throws Exception on serialization error * */ - @RequestMapping(value = { NODE_INSTANCES_PATH - + "/{deploymentId:.+}" }, method = RequestMethod.GET, produces = "application/yaml") - @ResponseBody + @GetMapping( + value = {NODE_INSTANCES_PATH + "/{deploymentId:.+}"}, + produces = "application/yaml") public String getNodeInstances(@PathVariable("deploymentId") String deploymentId, - @RequestParam(value = "tenant", required = true) String tenant, - HttpServletRequest request) throws Exception { + @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request) + throws Exception { preLogAudit(request); ECTransportModel result = null; + final String errStr = "Getting node-instance-id failed for deploymentId: " + deploymentId; + final String errLogStr = "getNodeInstanceId caught exception"; try { if (tenant == null) { throw new Exception("required tenant input missing"); } result = cloudifyClient.getNodeInstances(deploymentId, tenant); } catch (HttpStatusCodeException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node-instance-id with deploymentId " + deploymentId - + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstanceId caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Cloudify Manager"); - MDC.put("TargetServiceName", "Cloudify Manager"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node-instance-id with deploymentId " + deploymentId - + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstanceId caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CFY_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CFY_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getNodeInstanceId failed", t); } finally { postLogAudit(request); @@ -1602,25 +1647,22 @@ public class CloudifyController extends DashboardRestrictedBaseController { /** * Gets the specified node-instance-id content for viewing. * - * @param id deployment ID - * @param id node ID + * @param id deployment ID + * @param id node ID * @param request HttpServletRequest * @return Blueprint as YAML; or error. * @throws Exception on serialization error * */ - @RequestMapping(value = { NODE_INSTANCES_PATH - + "/{deploymentId:.+}/{nodeId}" }, method = RequestMethod.GET, produces = "application/yaml") - @ResponseBody + @GetMapping( + value = {NODE_INSTANCES_PATH + "/{deploymentId:.+}/{nodeId}"}, + produces = "application/yaml") public String getNodeInstanceId(@PathVariable("deploymentId") String deploymentId, - @RequestParam(value = "tenant", required = true) String tenant, @PathVariable("nodeId") String nodeId, - HttpServletRequest request) throws Exception { + @RequestParam(value = "tenant", required = true) String tenant, + @PathVariable("nodeId") String nodeId, HttpServletRequest request) throws Exception { preLogAudit(request); ECTransportModel result = null; try { - if (tenant == null) { - throw new Exception("required tenant input missing"); - } result = cloudifyClient.getNodeInstanceId(deploymentId, nodeId, tenant); } catch (HttpStatusCodeException e) { MDC.put(SystemProperties.STATUS_CODE, "ERROR"); @@ -1628,8 +1670,8 @@ public class CloudifyController extends DashboardRestrictedBaseController { MDC.put("TargetServiceName", "Cloudify Manager"); MDC.put("ErrorCode", "300"); MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node-instance-id with deploymentId " + deploymentId + " and nodeId " - + nodeId + " failed!"); + MDC.put("ErrorDescription", "Getting node-instance-id with deploymentId " + deploymentId + + " and nodeId " + nodeId + " failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstanceId caught exception"); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { @@ -1638,8 +1680,8 @@ public class CloudifyController extends DashboardRestrictedBaseController { MDC.put("TargetServiceName", "Cloudify Manager"); MDC.put("ErrorCode", "300"); MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node-instance-id with deploymentId " + deploymentId + " and nodeId " - + nodeId + " failed!"); + MDC.put("ErrorDescription", "Getting node-instance-id with deploymentId " + deploymentId + + " and nodeId " + nodeId + " failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstanceId caught exception"); result = new RestResponseError("getNodeInstanceId failed", t); } finally { @@ -1648,17 +1690,15 @@ public class CloudifyController extends DashboardRestrictedBaseController { return objectMapper.writeValueAsString(result); } - @RequestMapping(value = { - DEPLOYMENTS_PATH + "/{deploymentId:.+}/revisions" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {DEPLOYMENTS_PATH + "/{deploymentId:.+}/revisions"}, + produces = "application/json") public String getDeploymentRevisions(@PathVariable("deploymentId") String deploymentId, - @RequestParam(value = "tenant") String tenant, HttpServletRequest request) throws Exception { + @RequestParam(value = "tenant") String tenant, HttpServletRequest request) + throws Exception { preLogAudit(request); ECTransportModel result = null; try { - if (tenant == null) { - throw new Exception("required tenant input missing"); - } result = cloudifyClient.getNodeInstanceVersion(deploymentId, tenant); } catch (HttpStatusCodeException e) { MDC.put(SystemProperties.STATUS_CODE, "ERROR"); @@ -1666,8 +1706,10 @@ public class CloudifyController extends DashboardRestrictedBaseController { MDC.put("TargetServiceName", "Cloudify Manager"); MDC.put("ErrorCode", "300"); MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionByIdAndDeploymentId caught exception"); + MDC.put("ErrorDescription", + "Getting executions for deployment " + deploymentId + " failed!"); + logger.error(EELFLoggerDelegate.errorLogger, + "getExecutionByIdAndDeploymentId caught exception"); result = new RestResponseError(e.getResponseBodyAsString()); } catch (Exception t) { MDC.put(SystemProperties.STATUS_CODE, "ERROR"); @@ -1675,8 +1717,10 @@ public class CloudifyController extends DashboardRestrictedBaseController { MDC.put("TargetServiceName", "Cloudify Manager"); MDC.put("ErrorCode", "300"); MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting executions for deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getExecutionByIdAndDeploymentId caught exception"); + MDC.put("ErrorDescription", + "Getting executions for deployment " + deploymentId + " failed!"); + logger.error(EELFLoggerDelegate.errorLogger, + "getExecutionByIdAndDeploymentId caught exception"); result = new RestResponseError("getExecutionByIdAndDeploymentId failed", t); } finally { postLogAudit(request); @@ -1689,18 +1733,18 @@ public class CloudifyController extends DashboardRestrictedBaseController { * * * @param request - * HttpServletRequest + * HttpServletRequest * @return list of CloudifyPlugin * @throws Exception - * on serialization failure + * on serialization failure */ @SuppressWarnings("unchecked") - @RequestMapping(value = { PLUGINS_PATH }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody - public String getPlugins( - HttpServletRequest request) throws Exception { + @GetMapping( + value = {PLUGINS_PATH}, + produces = "application/json") + public String getPlugins(HttpServletRequest request) throws Exception { preLogAudit(request); - ECTransportModel result = null; + ECTransportModel result = null; try { List<CloudifyPlugin> resultsArr = cloudifyClient.getPlugins().items; return objectMapper.writeValueAsString(resultsArr); @@ -1714,7 +1758,7 @@ public class CloudifyController extends DashboardRestrictedBaseController { logger.error(EELFLoggerDelegate.errorLogger, "getPlugins caught exception"); result = new RestResponseError(e.getResponseBodyAsString()); return objectMapper.writeValueAsString(result); - } catch (Throwable t) { + } catch (Exception t) { MDC.put(SystemProperties.STATUS_CODE, "ERROR"); MDC.put("TargetEntity", "Cloudify Manager"); MDC.put("TargetServiceName", "Cloudify Manager"); @@ -1730,22 +1774,21 @@ public class CloudifyController extends DashboardRestrictedBaseController { } public void preLogAudit(HttpServletRequest request) { - begin = new Date(); + Date begin = new Date(); MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.STATUS_CODE, "COMPLETE"); - // logger.setRequestBasedDefaultsIntoGlobalLoggingContext(request, APP_NAME); } public void postLogAudit(HttpServletRequest request) { - end = new Date(); + Date end = new Date(); MDC.put("AlertSeverity", "0"); MDC.put("TargetEntity", "Cloudify Manager"); MDC.put("TargetServiceName", "Cloudify Manager"); MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, logDateFormat.format(end)); MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, logDateFormat.format(end)); - MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); logger.info(EELFLoggerDelegate.auditLogger, request.getMethod() + request.getRequestURI()); - logger.info(EELFLoggerDelegate.metricsLogger, request.getMethod() + request.getRequestURI()); + logger.info(EELFLoggerDelegate.metricsLogger, + request.getMethod() + request.getRequestURI()); } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ConsulController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ConsulController.java index 25ab3fd..6855793 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ConsulController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ConsulController.java @@ -2,28 +2,26 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.controller; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.List; @@ -32,9 +30,6 @@ import javax.servlet.http.HttpServletRequest; import org.onap.ccsdk.dashboard.model.ECTransportModel; import org.onap.ccsdk.dashboard.model.RestResponseError; import org.onap.ccsdk.dashboard.model.RestResponsePage; -import org.onap.ccsdk.dashboard.model.RestResponseSuccess; -import org.onap.ccsdk.dashboard.model.consul.ConsulHealthServiceRegistration; -import org.onap.ccsdk.dashboard.model.consul.ConsulHealthServiceRegistration.EndpointCheck; import org.onap.ccsdk.dashboard.model.consul.ConsulNodeInfo; import org.onap.ccsdk.dashboard.model.consul.ConsulServiceHealth; import org.onap.ccsdk.dashboard.model.consul.ConsulServiceInfo; @@ -45,14 +40,13 @@ import org.onap.portalsdk.core.util.SystemProperties; import org.onap.portalsdk.core.web.support.UserUtils; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; 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.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.core.JsonProcessingException; @@ -61,7 +55,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; * centers. Methods serve Ajax requests made by Angular scripts on pages that * show content. */ -@Controller +@RestController @RequestMapping("/healthservices") public class ConsulController extends DashboardRestrictedBaseController { @@ -77,46 +71,24 @@ public class ConsulController extends DashboardRestrictedBaseController { SERVICE_INFO, SERVICE_HEALTH, NODES, DATACENTERS; } - private static Date begin, end; private static final String NODES_PATH = "/nodes"; private static final String SERVICES_PATH = "/services"; - - /** - * Supports sorting results by node name - */ - private static Comparator<ConsulNodeInfo> nodeHealthComparator = new Comparator<ConsulNodeInfo>() { - @Override - public int compare(ConsulNodeInfo o1, ConsulNodeInfo o2) { - return o1.node.compareTo(o2.node); - } - }; - - /** - * Supports sorting results by service name - */ - private static Comparator<ConsulServiceHealth> serviceHealthComparator = new Comparator<ConsulServiceHealth>() { - @Override - public int compare(ConsulServiceHealth o1, ConsulServiceHealth o2) { - return o1.serviceName.compareTo(o2.serviceName); - } - }; - - /** - * Supports sorting results by service name - */ - private static Comparator<ConsulServiceInfo> serviceInfoComparator = new Comparator<ConsulServiceInfo>() { - @Override - public int compare(ConsulServiceInfo o1, ConsulServiceInfo o2) { - return o1.name.compareTo(o2.name); - } - }; + private static final String TARGET_ENTITY_KEY = "TargetEntity"; + private static final String TARGET_SERVICE_KEY = "TargetServiceName"; + private static final String CNSL_SVC_ENTITY = "Consul Service"; + private static final String CNSL_TARGET_SERVICE = "Consul API"; + private static final String ERROR_RESPONSE = "ERROR"; + private static final String ERROR_CODE_KEY = "ErrorCode"; + private static final String ERROR_CODE = "300"; + private static final String ERROR_CATEGORY_KEY = "ErrorCategory"; + private static final String ERROR_DESCRIPTION_KEY = "ErrorDescription"; /** * Gets one page of objects and supporting information via the REST client. On * success, returns a page of objects as String. * - * @param option Specifies which item type to get - * @param pageNum Page number of results + * @param option Specifies which item type to get + * @param pageNum Page number of results * @param pageSize Number of items per browser page * @return JSON block as String, see above. * @throws Exception On any error; e.g., Network failure. @@ -125,22 +97,25 @@ public class ConsulController extends DashboardRestrictedBaseController { private String getItemListForPage(long userId, ConsulDataItem option, int pageNum, int pageSize, String dc) throws Exception { List itemList = null; + final String errStr = "Getting page of items failed!"; + final String errLogStr = "getItemListForPage caught exception"; switch (option) { case NODES: itemList = consulClient.getNodes(dc); - Collections.sort(itemList, nodeHealthComparator); + ((List<ConsulNodeInfo>) itemList) + .sort((ConsulNodeInfo o1, ConsulNodeInfo o2) -> o1.node.compareTo(o2.node)); break; case DATACENTERS: itemList = consulClient.getDatacenters(); break; default: - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Consul"); - MDC.put("TargetServiceName", "Consul"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of items failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPage caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); throw new Exception( "getItemListForPage failed: unimplemented case: " + option.name()); } @@ -159,27 +134,32 @@ public class ConsulController extends DashboardRestrictedBaseController { * constructs an appropriate JSON block to report errors. * * @param request Inbound request - * @param option Item type to get + * @param option Item type to get * @return JSON with one page of objects; or an error. */ - protected String getItemListForPageWrapper(HttpServletRequest request, String dc, ConsulDataItem option) { + protected String getItemListForPageWrapper(HttpServletRequest request, String dc, + ConsulDataItem option) { String outboundJson = null; + final String errStr = "Getting page of items failed!"; + final String errLogStr = "getItemListForPageWrapper caught exception"; try { User appUser = UserUtils.getUserSession(request); - if (appUser == null || appUser.getLoginId() == null || appUser.getLoginId().length() == 0) + if (appUser == null || appUser.getLoginId() == null + || appUser.getLoginId().length() == 0) { throw new Exception("getItemListForPageWrapper: Failed to get application user"); + } int pageNum = getRequestPageNumber(request); int pageSize = getRequestPageSize(request); outboundJson = getItemListForPage(appUser.getId(), option, pageNum, pageSize, dc); } catch (Exception ex) { // Remote service failed; build descriptive error message - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Consul"); - MDC.put("TargetServiceName", "Consul"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting page of items failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPageWrapper caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); RestResponseError result = new RestResponseError("Failed to get " + option.name(), ex); try { outboundJson = objectMapper.writeValueAsString(result); @@ -194,28 +174,28 @@ public class ConsulController extends DashboardRestrictedBaseController { /** * Serves service health details - not paginated. * - * @param request HttpServletRequest + * @param request HttpServletRequest * @param serviceId Service ID * @return List of ConsulServiceHealth objects as JSON * @throws Exception if serialization fails */ - @RequestMapping(value = { - SERVICES_PATH + "/{serviceId}" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping(value = {SERVICES_PATH + "/{serviceId}"}, produces = "application/json") public String getServiceHealthDetails(HttpServletRequest request, @RequestParam String dc, - @PathVariable String serviceId) throws Exception { + @PathVariable String serviceId) throws Exception { preLogAudit(request); Object result = null; + final String errStr = "Getting service health details failed for: " + serviceId; + final String errLogStr = "getServiceHealthDetails caught exception"; try { result = consulClient.getServiceHealth(dc, serviceId); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Consul"); - MDC.put("TargetServiceName", "Consul"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting service health details for " + serviceId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "getServiceHealthDetails caught exception"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); result = new RestResponseError("getServiceHealthDetails failed", t); } finally { postLogAudit(request); @@ -227,17 +207,16 @@ public class ConsulController extends DashboardRestrictedBaseController { * Serves one page of service health information by getting all service names, * then iterating over them to get the health of each service. * - * ECOMP-C does NOT provide an API to get the health of all services in one - * request. + * API to get the health of all services in one request is not available. * * @param request HttpServletRequest * @return List of ConsulServiceHealth objects, as JSON * @throws Exception on serialization exception */ @SuppressWarnings("unchecked") - @RequestMapping(value = { "/serviceshealth" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody - public String getServicesHealth(HttpServletRequest request, @RequestParam String dc) throws Exception { + @GetMapping(value = {"/serviceshealth"}, produces = "application/json") + public String getServicesHealth(HttpServletRequest request, @RequestParam String dc) + throws Exception { preLogAudit(request); ECTransportModel result = null; try { @@ -247,23 +226,25 @@ public class ConsulController extends DashboardRestrictedBaseController { List<ConsulServiceHealth> csh = consulClient.getServiceHealth(dc, csi.name); itemList.addAll(csh); } - Collections.sort(itemList, serviceHealthComparator); + itemList.sort((ConsulServiceHealth o1, ConsulServiceHealth o2) -> o1.serviceName + .compareTo(o2.serviceName)); // Paginate final int pageNum = getRequestPageNumber(request); final int pageSize = getRequestPageSize(request); final int totalItems = itemList.size(); final int pageCount = (int) Math.ceil((double) totalItems / pageSize); // Shrink if needed - if (totalItems > pageSize) + if (totalItems > pageSize) { itemList = getPageOfList(pageNum, pageSize, itemList); + } result = new RestResponsePage<>(totalItems, pageCount, itemList); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Consul"); - MDC.put("TargetServiceName", "Consul"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting services health failed!"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, "Getting services health failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getServicesHealth caught exception"); result = new RestResponseError("getServicesHealth failed", t); } finally { @@ -278,8 +259,7 @@ public class ConsulController extends DashboardRestrictedBaseController { * @param request HttpServletRequest * @return List of ConsulNodeInfo objects, as JSON */ - @RequestMapping(value = { NODES_PATH }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping(value = {NODES_PATH}, produces = "application/json") public String getNodesInfo(HttpServletRequest request, @RequestParam String dc) { preLogAudit(request); String json = getItemListForPageWrapper(request, dc, ConsulDataItem.NODES); @@ -290,26 +270,26 @@ public class ConsulController extends DashboardRestrictedBaseController { /** * Serves node services health details - not paginated. * - * @param request HttpServletRequest + * @param request HttpServletRequest * @param nodeName Node name * @return List of ConsulServiceHealth objects as JSON * @throws Exception if serialization fails */ - @RequestMapping(value = { NODES_PATH + "/{nodeName}" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping(value = {NODES_PATH + "/{nodeName}"}, produces = "application/json") public String getNodeServicesHealth(HttpServletRequest request, @RequestParam String dc, - @PathVariable String nodeName) throws Exception { + @PathVariable String nodeName) throws Exception { preLogAudit(request); Object result = null; try { result = consulClient.getNodeServicesHealth(dc, nodeName); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Consul"); - MDC.put("TargetServiceName", "Consul"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Getting node services health for " + nodeName + " failed!"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_RESPONSE); + MDC.put(ERROR_DESCRIPTION_KEY, + "Getting node services health for " + nodeName + " failed!"); logger.error(EELFLoggerDelegate.errorLogger, "getNodeServicesHealth caught exception"); result = new RestResponseError("getNodeServicesHealth failed", t); } finally { @@ -324,8 +304,9 @@ public class ConsulController extends DashboardRestrictedBaseController { * @param request HttpServletRequest * @return List of ConsulHealthStatus objects */ - @RequestMapping(value = { "/datacenters" }, method = RequestMethod.GET, produces = "application/json") - @ResponseBody + @GetMapping( + value = {"/datacenters"}, + produces = "application/json") public String getDatacentersHealth(HttpServletRequest request) { preLogAudit(request); String json = getItemListForPageWrapper(request, null, ConsulDataItem.DATACENTERS); @@ -334,22 +315,21 @@ public class ConsulController extends DashboardRestrictedBaseController { } public void preLogAudit(HttpServletRequest request) { - begin = new Date(); + Date begin = new Date(); MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.STATUS_CODE, "COMPLETE"); - // logger.setRequestBasedDefaultsIntoGlobalLoggingContext(request, APP_NAME); } public void postLogAudit(HttpServletRequest request) { - end = new Date(); + Date end = new Date(); MDC.put("AlertSeverity", "0"); - MDC.put("TargetEntity", "Consul"); - MDC.put("TargetServiceName", "Consul"); + MDC.put(TARGET_ENTITY_KEY, CNSL_SVC_ENTITY); + MDC.put(TARGET_SERVICE_KEY, CNSL_TARGET_SERVICE); MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, logDateFormat.format(end)); MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, logDateFormat.format(end)); - MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); logger.info(EELFLoggerDelegate.auditLogger, request.getMethod() + request.getRequestURI()); - logger.info(EELFLoggerDelegate.metricsLogger, request.getMethod() + request.getRequestURI()); + logger.info(EELFLoggerDelegate.metricsLogger, + request.getMethod() + request.getRequestURI()); } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardHomeController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardHomeController.java index 263c3d0..b647ec3 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardHomeController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardHomeController.java @@ -17,8 +17,8 @@ * limitations under the License. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.controller; import java.util.Date; @@ -54,9 +54,8 @@ public class DashboardHomeController extends DashboardRestrictedBaseController { */ private final ObjectMapper mapper; - private static Date begin, end; private static final String APP_LABEL = "app-label"; - + /** * Never forget that Spring autowires fields AFTER the constructor is called. */ @@ -68,7 +67,7 @@ public class DashboardHomeController extends DashboardRestrictedBaseController { /** * @return View name key, which is resolved to a file using an Apache tiles - * "definitions.xml" file. + * "definitions.xml" file. */ @RequestMapping(value = {"/ecd"}, method = RequestMethod.GET) public ModelAndView dbcDefaultController() { @@ -83,7 +82,7 @@ public class DashboardHomeController extends DashboardRestrictedBaseController { } /** - * Get the application label - name + environment + * Get the application label - name + environment. * */ @RequestMapping(value = {APP_LABEL}, method = RequestMethod.GET, produces = "application/json") @@ -92,22 +91,22 @@ public class DashboardHomeController extends DashboardRestrictedBaseController { return mapper.writeValueAsString( DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_IN_ENV, "NA")); } - + public void preLogAudit(HttpServletRequest request) { - begin = new Date(); + Date begin = new Date(); MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.STATUS_CODE, "COMPLETE"); } public void postLogAudit(HttpServletRequest request) { - end = new Date(); + Date end = new Date(); MDC.put("AlertSeverity", "0"); MDC.put("TargetEntity", "DashboardHomeController"); MDC.put("TargetServiceName", "DashboardHomeController"); MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, logDateFormat.format(end)); MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, logDateFormat.format(end)); - MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); + //MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); logger.info(EELFLoggerDelegate.auditLogger, request.getMethod() + request.getRequestURI()); logger.info(EELFLoggerDelegate.metricsLogger, request.getMethod() + request.getRequestURI()); diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardRestrictedBaseController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardRestrictedBaseController.java index cc1e9d8..1bb6a03 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardRestrictedBaseController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardRestrictedBaseController.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.controller; import java.text.DateFormat; @@ -41,27 +41,28 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; public class DashboardRestrictedBaseController extends RestrictedBaseController { /** - * Application name + * Application name. */ protected static final String APP_NAME = "ecd-app"; /** - * EELF-approved format + * EELF-approved format. */ - protected static final DateFormat logDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); + protected static final DateFormat logDateFormat = + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); /** - * Query parameter for desired page number + * Query parameter for desired page number. */ protected static final String PAGE_NUM_QUERY_PARAM = "pageNum"; /** - * Query parameter for desired items per page + * Query parameter for desired items per page. */ protected static final String PAGE_SIZE_QUERY_PARAM = "viewPerPage"; /** - * For general use in these methods and subclasses + * For general use in these methods and subclasses. */ protected final ObjectMapper objectMapper = new ObjectMapper(); @@ -71,7 +72,6 @@ public class DashboardRestrictedBaseController extends RestrictedBaseController @Autowired protected DashboardProperties appProperties; - /** * Hello Spring, here's your no-arg constructor. */ @@ -98,13 +98,14 @@ public class DashboardRestrictedBaseController extends RestrictedBaseController * * @param request HttpServletRequest * @return Value of query parameter {@link #PAGE_NUM_QUERY_PARAM}; 1 if not - * found. + * found. */ protected int getRequestPageNumber(HttpServletRequest request) { int pageNum = 1; String param = request.getParameter(PAGE_NUM_QUERY_PARAM); - if (param != null) + if (param != null) { pageNum = Integer.parseInt(param); + } return pageNum; } @@ -115,30 +116,34 @@ public class DashboardRestrictedBaseController extends RestrictedBaseController * * @param request HttpServletRequest * @return Value of query parameter {@link #PAGE_SIZE_QUERY_PARAM}; 50 if not - * found. + * found. */ protected int getRequestPageSize(HttpServletRequest request) { int pageSize = 50; String param = request.getParameter(PAGE_SIZE_QUERY_PARAM); - if (param != null) + if (param != null) { pageSize = Integer.parseInt(param); + } return pageSize; } /** * Gets the items for the specified page from the specified list. * - * @param pageNum Page number requested by user, indexed from 1 + * @param pageNum Page number requested by user, indexed from 1 * @param pageSize Number of items per page * @param itemList List of items to adjust * @return List of items; empty list if from==to */ @SuppressWarnings("rawtypes") - protected static List getPageOfList(final int pageNum, final int pageSize, final List itemList) { + protected static List getPageOfList(final int pageNum, final int pageSize, + final List itemList) { int firstIndexOnThisPage = pageSize * (pageNum - 1); int firstIndexOnNextPage = pageSize * pageNum; - int fromIndex = firstIndexOnThisPage < itemList.size() ? firstIndexOnThisPage : itemList.size(); - int toIndex = firstIndexOnNextPage < itemList.size() ? firstIndexOnNextPage : itemList.size(); + int fromIndex = + firstIndexOnThisPage < itemList.size() ? firstIndexOnThisPage : itemList.size(); + int toIndex = + firstIndexOnNextPage < itemList.size() ? firstIndexOnNextPage : itemList.size(); return itemList.subList(fromIndex, toIndex); } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerController.java index d98c404..f716f46 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerController.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.controller; import java.util.Date; @@ -42,160 +42,124 @@ import org.onap.portalsdk.core.util.SystemProperties; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; 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.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; /** * Controller for Deployment Handler features: get/put/delete deployments * Methods serve Ajax requests made by Angular scripts on pages that show * content. */ -@Controller +@RestController @RequestMapping("/deploymenthandler") public class DeploymentHandlerController extends DashboardRestrictedBaseController { private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DeploymentHandlerController.class); - + @Autowired DeploymentHandlerClient deploymentHandlerClient; - - private static final String DEPLOYMENTS_PATH = "dcae-deployments"; - private static Date begin, end; + private static final String DEPLOYMENTS_PATH = "dcae-deployments"; + private static final String TARGET_ENTITY_KEY = "TargetEntity"; + private static final String TARGET_SERVICE_KEY = "TargetServiceName"; + private static final String DPLH_DEP_ENTITY = "DCAE Deployment"; + private static final String DPLH_TARGET_SERVICE = "DCAE Deployment Handler"; + private static final String ERROR_RESPONSE = "ERROR"; + private static final String ERROR_CODE_KEY = "ErrorCode"; + private static final String ERROR_CODE = "300"; + private static final String ERROR_CATEGORY_KEY = "ErrorCategory"; + private static final String ERROR_CATEGORY = "ERROR"; + private static final String ERROR_DESCRIPTION_KEY = "ErrorDescription"; - @SuppressWarnings("unchecked") - @RequestMapping(value = { - DEPLOYMENTS_PATH + "/{deploymentId:.+}" }, method = RequestMethod.PUT, produces = "application/json") - @ResponseBody + @PutMapping( + value = {DEPLOYMENTS_PATH + "/{deploymentId:.+}"}, + produces = "application/json") public String putDeployment(HttpServletRequest request, - @RequestBody DeploymentRequestObject deploymentRequestObject) throws Exception { + @RequestBody DeploymentRequestObject deploymentRequestObject) throws Exception { preLogAudit(request); String json = null; + final String errStr = "Deployment failed!"; + final String errLogStr = "putDeployment caught exception: "; try { if (deploymentRequestObject.getMethod().equals("create")) { json = objectMapper.writeValueAsString(deploymentHandlerClient.putDeployment( - deploymentRequestObject.getDeploymentId(), deploymentRequestObject.getTenant(), - new DeploymentRequest(deploymentRequestObject.getServiceTypeId(), - deploymentRequestObject.getInputs()), request)); - } - } catch (BadRequestException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed! Bad Request"); - logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError("Bad Request " + e.getMessage())); - } catch (ServiceAlreadyExistsException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed! Service already exists"); - logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError("Service already exists " + e.getMessage())); - } catch (ServerErrorException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed! Server Error"); - logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError("Server Error " + e.getMessage())); - } catch (DownstreamException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed! Downstream Exception"); - logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception"); - json = objectMapper.writeValueAsString( - new RestResponseError("Downstream Exception " + e.getMessage())); + deploymentRequestObject.getDeploymentId(), deploymentRequestObject.getTenant(), + new DeploymentRequest(deploymentRequestObject.getServiceTypeId(), + deploymentRequestObject.getInputs()), + request)); + } + } catch (BadRequestException|ServiceAlreadyExistsException|ServerErrorException|DownstreamException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, DPLH_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, DPLH_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr + e.getMessage()); + json = objectMapper + .writeValueAsString(new RestResponseError("Error: " + e.getMessage())); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deployment failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError("putDeployment failed", t)); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, DPLH_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, DPLH_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + json = + objectMapper.writeValueAsString(new RestResponseError("putDeployment failed", t)); } finally { postLogAudit(request); } return json; } - @RequestMapping(value = { - DEPLOYMENTS_PATH + "/{deploymentId:.+}" }, method = RequestMethod.DELETE, produces = "application/json") - @ResponseBody - public String deleteDeployment(@PathVariable("deploymentId") String deploymentId, HttpServletRequest request, - @RequestParam("tenant") String tenant, HttpServletResponse response) throws Exception { + @DeleteMapping( + value = {DEPLOYMENTS_PATH + "/{deploymentId:.+}"}, + produces = "application/json") + public String deleteDeployment(@PathVariable("deploymentId") String deploymentId, + HttpServletRequest request, @RequestParam("tenant") String tenant, + HttpServletResponse response) throws Exception { preLogAudit(request); String json = null; StringBuffer status = new StringBuffer(); + final String errStr = "Deleting deployment " + deploymentId + " failed!"; + final String errLogStr = "deleteDeployment caught exception"; try { deploymentHandlerClient.deleteDeployment(deploymentId, tenant, request); String self = request.getRequestURL().toString().split("\\?")[0]; status.append(self).append("/executions?tenant=").append(tenant); DeploymentResource deplRsrc = new DeploymentResource(deploymentId, - new DeploymentResourceLinks(self, "", status.toString())); + new DeploymentResourceLinks(self, "", status.toString())); JSONObject statObj = new JSONObject(deplRsrc); json = statObj.toString(); - } catch (BadRequestException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (ServerErrorException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (DownstreamException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); - } catch (DeploymentNotFoundException e) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); + } catch (BadRequestException|ServerErrorException|DownstreamException|DeploymentNotFoundException e) { + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, DPLH_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, DPLH_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage())); } catch (Exception t) { - MDC.put(SystemProperties.STATUS_CODE, "ERROR"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); - MDC.put("ErrorCode", "300"); - MDC.put("ErrorCategory", "ERROR"); - MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!"); - logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception"); - json = objectMapper.writeValueAsString(new RestResponseError("deleteDeployment failed", t)); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, DPLH_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, DPLH_TARGET_SERVICE); + MDC.put(ERROR_CODE_KEY, ERROR_CODE); + MDC.put(ERROR_CATEGORY_KEY, ERROR_CATEGORY); + MDC.put(ERROR_DESCRIPTION_KEY, errStr); + logger.error(EELFLoggerDelegate.errorLogger, errLogStr); + json = objectMapper + .writeValueAsString(new RestResponseError("deleteDeployment failed", t)); } finally { postLogAudit(request); } @@ -203,7 +167,7 @@ public class DeploymentHandlerController extends DashboardRestrictedBaseControll } public void preLogAudit(HttpServletRequest request) { - begin = new Date(); + Date begin = new Date(); MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.STATUS_CODE, "COMPLETE"); @@ -211,14 +175,15 @@ public class DeploymentHandlerController extends DashboardRestrictedBaseControll } public void postLogAudit(HttpServletRequest request) { - end = new Date(); + Date end = new Date(); MDC.put("AlertSeverity", "0"); - MDC.put("TargetEntity", "Deployment Handler"); - MDC.put("TargetServiceName", "Deployment Handler"); + MDC.put(SystemProperties.STATUS_CODE, ERROR_RESPONSE); + MDC.put(TARGET_ENTITY_KEY, DPLH_DEP_ENTITY); + MDC.put(TARGET_SERVICE_KEY, DPLH_TARGET_SERVICE); MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, logDateFormat.format(end)); MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, logDateFormat.format(end)); - MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); logger.info(EELFLoggerDelegate.auditLogger, request.getMethod() + request.getRequestURI()); - logger.info(EELFLoggerDelegate.metricsLogger, request.getMethod() + request.getRequestURI()); + logger.info(EELFLoggerDelegate.metricsLogger, + request.getMethod() + request.getRequestURI()); } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnController.java index ad671ad..aed6810 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnController.java @@ -2,44 +2,24 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - *******************************************************************************/ -package org.onap.ccsdk.dashboard.controller; - -/*- - * ================================================================================ - * ECOMP Portal SDK - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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 + * 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. - * ================================================================================ - */ + * ============LICENSE_END========================================================= + * + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; import java.net.URLDecoder; import java.net.URLEncoder; @@ -90,7 +70,8 @@ import org.springframework.web.util.WebUtils; */ public class ECDSingleSignOnController extends UnRestrictedBaseController { - private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ECDSingleSignOnController.class); + private EELFLoggerDelegate logger = + EELFLoggerDelegate.getLogger(ECDSingleSignOnController.class); @Autowired private LoginService loginService; @@ -103,25 +84,26 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { @Autowired private DataAccessService dataAccessService; - - private String viewName; + + //private String viewName; private String welcomeView; - @RequestMapping(value = { "signup.htm" }, method = RequestMethod.GET) + @RequestMapping(value = {"signup.htm"}, method = RequestMethod.GET) public ModelAndView externalLogin() { Map<String, Object> model = new HashMap<>(); return new ModelAndView("signup", "model", model); } - + /** - * User sign up handler + * User sign up handler. * * @param request * @return - * @throws Exception + * @throws Exception */ - @RequestMapping(value = { "/signup" }, method = RequestMethod.POST) - public ModelAndView userSignup(HttpServletRequest request, HttpServletResponse response) throws Exception { + @RequestMapping(value = {"/signup"}, method = RequestMethod.POST) + public ModelAndView userSignup(HttpServletRequest request, HttpServletResponse response) + throws Exception { LoginBean commandBean = new LoginBean(); String loginId = request.getParameter("loginId"); String password = request.getParameter("password"); @@ -130,15 +112,16 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { Map<String, String> model = new HashMap<>(); model.put("error", loginErrorMessage); return new ModelAndView("signup", "model", model); - } + } commandBean.setLoginId(loginId); commandBean.setLoginPwd(password); commandBean.setUserid(loginId); commandBean = loginService.findUser(commandBean, - (String) request.getAttribute(MenuProperties.MENU_PROPERTIES_FILENAME_KEY), new HashMap()); + (String) request.getAttribute(MenuProperties.MENU_PROPERTIES_FILENAME_KEY), + new HashMap()); if (commandBean.getUser() == null) { - // add new user + // add new user User user = new User(); user.setLoginId(loginId); user.setLoginPwd(password); @@ -155,41 +138,47 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { user.setPseudoRoles(new TreeSet<Role>()); try { dataAccessService.saveDomainObject(user, additionalParams); - role = (Role) dataAccessService.getDomainObject(Role.class, - Long.valueOf(SystemProperties.getProperty(SystemProperties.POST_DEFAULT_ROLE_ID)), + role = + (Role) dataAccessService.getDomainObject(Role.class, + Long.valueOf( + SystemProperties.getProperty(SystemProperties.POST_DEFAULT_ROLE_ID)), null); - if(role.getId() == null){ - logger.error(EELFLoggerDelegate.errorLogger, - "process failed: No Role Exsists in DB with requested RoleId :"+ Long.valueOf(SystemProperties.getProperty(SystemProperties.POST_DEFAULT_ROLE_ID))); - throw new Exception("user cannot be added"); + if (role.getId() == null) { + logger.error(EELFLoggerDelegate.errorLogger, + "process failed: No Role Exsists in DB with requested RoleId :" + + Long.valueOf(SystemProperties + .getProperty(SystemProperties.POST_DEFAULT_ROLE_ID))); + throw new Exception("user cannot be added"); } user.addRole(role); - //saveUserExtension(user); dataAccessService.saveDomainObject(user, additionalParams); - } catch (Exception e) { - logger.error(EELFLoggerDelegate.errorLogger, "saveDomainObject failed on user " + user.getLoginId(), e); - String loginErrorMessage = (e.getMessage() != null) ? e.getMessage() - : "login.error.external.invalid - saveDomainObject failed on user " + user.getLoginId(); - Map<String, String> model = new HashMap<>(); - model.put("error", loginErrorMessage); - return new ModelAndView("signup", "model", model); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, + "saveDomainObject failed on user " + user.getLoginId(), e); + String loginErrorMessage = (e.getMessage() != null) ? e.getMessage() + : "login.error.external.invalid - saveDomainObject failed on user " + + user.getLoginId(); + Map<String, String> model = new HashMap<>(); + model.put("error", loginErrorMessage); + return new ModelAndView("signup", "model", model); } } Map<String, Object> model = new HashMap<>(); return new ModelAndView("login_external", "model", model); } - + /** * Handles requests directed to the single sign-on page by the session timeout * interceptor. * - * @param request HttpServletRequest + * @param request HttpServletRequest * @param response HttpServletResponse * @return Redirect to an appropriate address * @throws Exception On any failure */ - @RequestMapping(value = { "/single_signon.htm" }, method = RequestMethod.GET) - public ModelAndView singleSignOnLogin(HttpServletRequest request, HttpServletResponse response) throws Exception { + @RequestMapping(value = {"/single_signon.htm"}, method = RequestMethod.GET) + public ModelAndView singleSignOnLogin(HttpServletRequest request, HttpServletResponse response) + throws Exception { Map<String, String> model = new HashMap<String, String>(); HashMap<String, String> additionalParamsMap = new HashMap<String, String>(); @@ -205,45 +194,52 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { User user = UserUtils.getUserSession(request); if (session == null || user == null) { - final String authMech = SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM); + final String authMech = + SystemProperties.getProperty(SystemProperties.AUTHENTICATION_MECHANISM); String userId = loginStrategy.getUserId(request); commandBean.setUserid(userId); commandBean = getLoginService().findUser(commandBean, - (String) request.getAttribute(MenuProperties.MENU_PROPERTIES_FILENAME_KEY), - additionalParamsMap); + (String) request.getAttribute(MenuProperties.MENU_PROPERTIES_FILENAME_KEY), + additionalParamsMap); if (commandBean.getUser() == null) { String loginErrorMessage = (commandBean.getLoginErrorMessage() != null) - ? commandBean.getLoginErrorMessage() - : SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_NOT_FOUND; - model.put(LoginStrategy.ERROR_MESSAGE_KEY, SystemProperties.getProperty(loginErrorMessage)); - final String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL) + ? commandBean.getLoginErrorMessage() + : SystemProperties.MESSAGE_KEY_LOGIN_ERROR_USER_NOT_FOUND; + model.put(LoginStrategy.ERROR_MESSAGE_KEY, + SystemProperties.getProperty(loginErrorMessage)); + final String redirectUrl = + PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL) + "?noUserError=Yes"; - logger.debug(EELFLoggerDelegate.debugLogger, "singleSignOnLogin: user is null, redirect URL is {}", - redirectUrl); + logger.debug(EELFLoggerDelegate.debugLogger, + "singleSignOnLogin: user is null, redirect URL is {}", redirectUrl); return new ModelAndView("redirect:" + redirectUrl); } else { // store the user's information in the session String loginMethod; if (null == authMech || "".equals(authMech) || "BOTH".equals(authMech)) { - loginMethod = SystemProperties.getProperty(SystemProperties.LOGIN_METHOD_CSP); + loginMethod = + SystemProperties.getProperty(SystemProperties.LOGIN_METHOD_CSP); } else if ("CSP".equals(authMech)) { - loginMethod = SystemProperties.getProperty(SystemProperties.LOGIN_METHOD_CSP); + loginMethod = + SystemProperties.getProperty(SystemProperties.LOGIN_METHOD_CSP); } else { - loginMethod = SystemProperties.getProperty(SystemProperties.LOGIN_METHOD_WEB_JUNCTION); + loginMethod = SystemProperties + .getProperty(SystemProperties.LOGIN_METHOD_WEB_JUNCTION); } UserUtils.setUserSession(request, commandBean.getUser(), commandBean.getMenu(), - commandBean.getBusinessDirectMenu(), loginMethod, roleService.getRoleFunctions(userId)); + commandBean.getBusinessDirectMenu(), loginMethod, + roleService.getRoleFunctions(userId)); initateSessionMgtHandler(request); logger.debug(EELFLoggerDelegate.debugLogger, - "singleSignOnLogin: create new user session for expired user {}; user {} exists in the system", - userId, commandBean.getUser().getOrgUserId()); + "singleSignOnLogin: create new user session for expired user {}; user {} exists in the system", + userId, commandBean.getUser().getOrgUserId()); return new ModelAndView("redirect:" + forwardURL); } } // user is null or session is null else { // both user and session are non-null. - logger.info(EELFLoggerDelegate.debugLogger, "singleSignOnLogin: redirecting to the forwardURL {}", - forwardURL); + logger.info(EELFLoggerDelegate.debugLogger, + "singleSignOnLogin: redirecting to the forwardURL {}", forwardURL); return new ModelAndView("redirect:" + forwardURL); } } else { @@ -267,7 +263,8 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { String appUrl = SystemProperties.getProperty(SystemProperties.APP_BASE_URL); returnToAppUrl = appUrl + (appUrl.endsWith("/") ? "" : "/") + forwardURL; logger.debug(EELFLoggerDelegate.debugLogger, - "singleSignOnLogin: using app base URL {} and redirectURL {}", appUrl, returnToAppUrl); + "singleSignOnLogin: using app base URL {} and redirectURL {}", appUrl, + returnToAppUrl); } else { /** * Be backward compatible with applications that don't need this feature. This @@ -275,20 +272,22 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { * always find the specified token. */ returnToAppUrl = ((HttpServletRequest) request).getRequestURL().toString() - .replace("single_signon.htm", forwardURL); - logger.debug(EELFLoggerDelegate.debugLogger, "singleSignOnLogin: computed redirectURL {}", - returnToAppUrl); + .replace("single_signon.htm", forwardURL); + logger.debug(EELFLoggerDelegate.debugLogger, + "singleSignOnLogin: computed redirectURL {}", returnToAppUrl); } final String encodedReturnToAppUrl = URLEncoder.encode(returnToAppUrl, "UTF-8"); // Also send the application's UEB key so Portal can block URL // reflection attacks. - final String uebAppKey = PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY); - final String url = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL); + final String uebAppKey = + PortalApiProperties.getProperty(PortalApiConstants.UEB_APP_KEY); + final String url = + PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL); final String portalUrl = url.substring(0, url.lastIndexOf('/')) + "/process_csp"; - final String redirectUrl = portalUrl + "?uebAppKey=" + uebAppKey + "&redirectUrl=" - + encodedReturnToAppUrl; - logger.debug(EELFLoggerDelegate.debugLogger, "singleSignOnLogin: portal-bound redirect URL is {}", - redirectUrl); + final String redirectUrl = + portalUrl + "?uebAppKey=" + uebAppKey + "&redirectUrl=" + encodedReturnToAppUrl; + logger.debug(EELFLoggerDelegate.debugLogger, + "singleSignOnLogin: portal-bound redirect URL is {}", redirectUrl); return new ModelAndView("redirect:" + redirectUrl); } // portal is available @@ -303,7 +302,7 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { } } - @RequestMapping(value = { "logout.htm" }, method = RequestMethod.GET) + @RequestMapping(value = {"logout.htm"}, method = RequestMethod.GET) public ModelAndView appLogout(HttpServletRequest request) { try { request.getSession().invalidate(); @@ -320,7 +319,8 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { * @return True if the portal answers, otherwise false. */ private boolean isPortalAvailable() { - HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); + HttpComponentsClientHttpRequestFactory httpRequestFactory = + new HttpComponentsClientHttpRequestFactory(); final int oneSecond = 1000; httpRequestFactory.setConnectionRequestTimeout(oneSecond); httpRequestFactory.setConnectTimeout(oneSecond); @@ -328,7 +328,8 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { RestTemplate restTemplate = new RestTemplate(httpRequestFactory); boolean avail = true; try { - final String portalUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REST_URL); + final String portalUrl = + PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REST_URL); String s = restTemplate.getForObject(portalUrl, String.class); logger.trace("isPortalAvailable got response {}", s); } catch (RestClientException ex) { @@ -344,7 +345,8 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController { protected void initateSessionMgtHandler(HttpServletRequest request) { String portalJSessionId = getPortalJSessionId(request); String jSessionId = getJessionId(request); - PortalTimeoutHandler.sessionCreated(portalJSessionId, jSessionId, AppUtils.getSession(request)); + PortalTimeoutHandler.sessionCreated(portalJSessionId, jSessionId, + AppUtils.getSession(request)); } public boolean isLoginCookieExist(HttpServletRequest request) { diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/HealthCheckController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/HealthCheckController.java index f8fd19e..653930d 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/HealthCheckController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/HealthCheckController.java @@ -17,7 +17,6 @@ * limitations under the License. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.controller; @@ -25,7 +24,6 @@ package org.onap.ccsdk.dashboard.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.http.HttpStatus; import org.onap.ccsdk.dashboard.model.HealthStatus; import org.onap.ccsdk.dashboard.rest.CloudifyClient; import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient; @@ -33,8 +31,6 @@ import org.onap.ccsdk.dashboard.rest.InventoryClient; import org.onap.portalsdk.core.controller.FusionBaseController; import org.onap.portalsdk.core.util.SystemProperties; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.ClassPathResource; -import org.springframework.core.io.Resource; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @@ -51,25 +47,23 @@ public class HealthCheckController extends FusionBaseController { @Autowired InventoryClient inventoryClient; - + @Autowired DeploymentHandlerClient deploymentHandlerClient; - + @Autowired CloudifyClient cfyClient; - + /** - * Application name + * Application name. */ protected static final String APP_NAME = "ecd-app"; private static final String APP_HEALTH_CHECK_PATH = "/health"; - private static final String APP_SRVC_HEALTH_CHECK_PATH = "/health-info"; - protected final ObjectMapper objectMapper = new ObjectMapper(); /** - * application health by simply responding with a JSON object indicating status + * application health by simply responding with a JSON object indicating status. * * @param request HttpServletRequest * @return HealthStatus object always diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/InventoryController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/InventoryController.java index 3877dfc..737eb2c 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/InventoryController.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/InventoryController.java @@ -22,7 +22,6 @@ package org.onap.ccsdk.dashboard.controller; -import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; @@ -71,7 +70,10 @@ import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -99,12 +101,11 @@ public class InventoryController extends DashboardRestrictedBaseController { CloudifyClient cloudifyClient; @Autowired ConsulClient consulClient; - + /** - * For caching data + * For caching data */ private AbstractCacheManager cacheManager; - @Autowired public void setCacheManager(AbstractCacheManager cacheManager) { @@ -114,7 +115,7 @@ public class InventoryController extends DashboardRestrictedBaseController { public AbstractCacheManager getCacheManager() { return cacheManager; } - + /** * Enum for selecting an item type. */ @@ -122,7 +123,6 @@ public class InventoryController extends DashboardRestrictedBaseController { SERVICE_TYPES, SERVICE_TYPE_NAME, OWNER, SERVICE_TYPE_ID; } - private static Date begin, end; private static final String OWNERS = "owners"; private static final String SERVICE_TYPES_PATH = "dcae-service-types"; private static final String SERVICE_TYPE_NAME = "service-type-list"; @@ -145,17 +145,17 @@ public class InventoryController extends DashboardRestrictedBaseController { private String getItemListForPageAuth(HttpServletRequest request, InventoryDataItem option, int pageNum, int pageSize, String sortBy, String searchBy) throws Exception { HttpSession session = AppUtils.getSession(request); - HashMap<String, Boolean> comp_deploy_tab = + HashMap<String, Boolean> compDeployTab = (HashMap<String, Boolean>) session.getAttribute("comp_access"); String roleLevel = (String) session.getAttribute("role_level"); String roleAuth = (String) session.getAttribute("auth_role"); String user = UserUtils.getUserSession(request).getLoginId(); - + if (roleLevel == null) { roleLevel = "dev"; } - if (comp_deploy_tab == null) { - comp_deploy_tab = new HashMap<String, Boolean>(); + if (compDeployTab == null) { + compDeployTab = new HashMap<String, Boolean>(); } if (roleAuth == null) { roleAuth = "READ"; @@ -170,8 +170,8 @@ public class InventoryController extends DashboardRestrictedBaseController { int totalItems = 0; lock.readLock().lock(); - List<ServiceTypeSummary> bpList = - (List<ServiceTypeSummary>)getCacheManager().getObject(SERVICE_TYPES_PATH); + List<ServiceTypeSummary> bpList = + (List<ServiceTypeSummary>) getCacheManager().getObject(SERVICE_TYPES_PATH); lock.readLock().unlock(); if (bpList == null) { bpList = inventoryClient.getServiceTypes().collect(Collectors.toList()); @@ -184,57 +184,59 @@ public class InventoryController extends DashboardRestrictedBaseController { String containsFilterStr = ""; // apply user search filters if (searchBy != null && !searchBy.isEmpty()) { - // parse the search filters string - // look for service name patterns - List<String> searchFilters = - new ArrayList<String>(Arrays.asList(searchBy.split(";"))); - if (searchFilters.stream().anyMatch(s->s.startsWith("contains"))) { - List<String> containsList = searchFilters.stream().filter(s->s.startsWith("contains")). - collect(Collectors.toList()); + // parse the search filters string + // look for service name patterns + List<String> searchFilters = new ArrayList<String>(Arrays.asList(searchBy.split(";"))); + if (searchFilters.stream().anyMatch(s -> s.startsWith("contains"))) { + List<String> containsList = searchFilters.stream() + .filter(s -> s.startsWith("contains")).collect(Collectors.toList()); containsFilterStr = containsList.get(0).split(":")[1]; } - if (searchFilters.stream().anyMatch(s->s.startsWith("serviceRef"))) { - List<String> svcRefsList = searchFilters.stream().filter(s->s.startsWith("serviceRef")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("serviceRef"))) { + List<String> svcRefsList = searchFilters.stream() + .filter(s -> s.startsWith("serviceRef")).collect(Collectors.toList()); svcRefFilterStr = svcRefsList.get(0).split(":")[1]; } - if (searchFilters.stream().anyMatch(s->s.startsWith("app"))) { - List<String> appsList = searchFilters.stream().filter(s->s.startsWith("app")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("app"))) { + List<String> appsList = searchFilters.stream().filter(s -> s.startsWith("app")) + .collect(Collectors.toList()); appFilterStr = appsList.get(0).split(":")[1]; } - if (searchFilters.stream().anyMatch(s->s.startsWith("comp"))) { - List<String> compList = searchFilters.stream().filter(s->s.startsWith("comp")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("comp"))) { + List<String> compList = searchFilters.stream().filter(s -> s.startsWith("comp")) + .collect(Collectors.toList()); compFilterStr = compList.get(0).split(":")[1]; } - if (searchFilters.stream().anyMatch(s->s.startsWith("owner"))) { - List<String> ownerList = searchFilters.stream().filter(s->s.startsWith("owner")). - collect(Collectors.toList()); + if (searchFilters.stream().anyMatch(s -> s.startsWith("owner"))) { + List<String> ownerList = searchFilters.stream().filter(s -> s.startsWith("owner")) + .collect(Collectors.toList()); ownerFilterStr = ownerList.get(0).split(":")[1]; } if (!ownerFilterStr.isEmpty()) { List<ServiceTypeSummary> ownerBpList = new ArrayList<ServiceTypeSummary>(); - lock.readLock().lock(); + lock.readLock().lock(); Map<String, List<ServiceTypeSummary>> bpPerOwner = - (Map<String, List<ServiceTypeSummary>>) getCacheManager().getObject("owner_bp_map"); + (Map<String, List<ServiceTypeSummary>>) getCacheManager() + .getObject("owner_bp_map"); lock.readLock().unlock(); - List<String> ownerFilterList = - new ArrayList<String>(Arrays.asList(ownerFilterStr.split(","))); - + List<String> ownerFilterList = + new ArrayList<String>(Arrays.asList(ownerFilterStr.split(","))); + if (ownerFilterList.size() == 1 && ownerFilterList.get(0).equals("undefined")) { ownerFilterList.clear(); ownerFilterList.add(user); } - + if (bpPerOwner != null) { - Stream<Map.Entry<String, List<ServiceTypeSummary>>> bpOwnerEntriesStream = - bpPerOwner.entrySet().stream(); + Stream<Map.Entry<String, List<ServiceTypeSummary>>> bpOwnerEntriesStream = + bpPerOwner.entrySet().stream(); - Set<Map.Entry<String, List<ServiceTypeSummary>>> bpOwnerSet = - bpOwnerEntriesStream.filter(m -> ownerFilterList.stream(). - anyMatch(ownFilter -> m.getKey().equalsIgnoreCase(ownFilter))).collect(Collectors.toSet()); + Set<Map.Entry<String, List<ServiceTypeSummary>>> bpOwnerSet = + bpOwnerEntriesStream + .filter(m -> ownerFilterList.stream() + .anyMatch(ownFilter -> m.getKey().equalsIgnoreCase(ownFilter))) + .collect(Collectors.toSet()); bpOwnerSet.stream().forEach(e -> ownerBpList.addAll(e.getValue())); bpItemList = ownerBpList; } @@ -252,32 +254,33 @@ public class InventoryController extends DashboardRestrictedBaseController { if (roleLevel.equals("app")) { @SuppressWarnings("unchecked") List<String> myApps = new ArrayList(userApps); - bpItemList = (List<ServiceTypeSummary>)bpItemList.stream().filter(s -> myApps.stream() - .anyMatch(appFilter -> (((ServiceTypeSummary)s).getComponent() != null && - ((ServiceTypeSummary)s).getComponent().equalsIgnoreCase(appFilter)))) - .collect(Collectors.<ServiceTypeSummary>toList()); + bpItemList = (List<ServiceTypeSummary>) bpItemList.stream() + .filter(s -> myApps.stream() + .anyMatch(appFilter -> (((ServiceTypeSummary) s).getComponent() != null + && ((ServiceTypeSummary) s).getComponent().equalsIgnoreCase(appFilter)))) + .collect(Collectors.<ServiceTypeSummary>toList()); } else if (roleLevel.equals("app_dev")) { Predicate<ServiceTypeSummary> appFilter = - p -> p.getComponent() != null && !p.getComponent().equalsIgnoreCase("dcae") + p -> p.getComponent() != null && !p.getComponent().equalsIgnoreCase("dcae") && !p.getComponent().equalsIgnoreCase("d2a"); - bpItemList = (List<ServiceTypeSummary>)bpItemList.stream().filter(appFilter). - collect(Collectors.toList()); - } - + bpItemList = (List<ServiceTypeSummary>) bpItemList.stream().filter(appFilter) + .collect(Collectors.toList()); + } + switch (option) { case OWNER: - Set<String> ownersList = - (Set) bpItemList.stream().map(x -> ((ServiceTypeSummary)x).getOwner()).collect(Collectors.toSet()); + Set<String> ownersList = (Set) bpItemList.stream() + .map(x -> ((ServiceTypeSummary) x).getOwner()).collect(Collectors.toSet()); return objectMapper.writeValueAsString(ownersList); case SERVICE_TYPE_ID: itemList = bpItemList; totalItems = itemList.size(); RestResponsePage<List> model = new RestResponsePage<>(totalItems, 1, itemList); String outboundJson = objectMapper.writeValueAsString(model); - return outboundJson; - case SERVICE_TYPE_NAME: - Set<String> svcTypeList = - (Set) bpItemList.stream().map(x -> ((ServiceTypeSummary)x).getTypeName()).collect(Collectors.toSet()); + return outboundJson; + case SERVICE_TYPE_NAME: + Set<String> svcTypeList = (Set) bpItemList.stream() + .map(x -> ((ServiceTypeSummary) x).getTypeName()).collect(Collectors.toSet()); itemList = new ArrayList<String>(); itemList.addAll(svcTypeList); break; @@ -286,73 +289,84 @@ public class InventoryController extends DashboardRestrictedBaseController { itemList = bpItemList; String outFilter = request.getParameter("_include"); if (outFilter != null) { - List<String> svcSummaryList = - (List) itemList.stream().map(x -> extractBpSummary((ServiceTypeSummary)x)).collect(Collectors.toList()); + List<String> svcSummaryList = + (List) itemList.stream().map(x -> extractBpSummary((ServiceTypeSummary) x)) + .collect(Collectors.toList()); return objectMapper.writeValueAsString(svcSummaryList); } // apply user search filters if (searchBy != null && !searchBy.isEmpty()) { if (!svcRefFilterStr.isEmpty()) { - List<String> svcFilterList = - new ArrayList<String>(Arrays.asList(svcRefFilterStr.split(","))); + List<String> svcFilterList = + new ArrayList<>(Arrays.asList(svcRefFilterStr.split(","))); if (!svcFilterList.isEmpty()) { - itemList = (List) itemList.stream().filter(s -> svcFilterList.stream() - .anyMatch(svcFilter -> ((ServiceTypeSummary) s).getTypeName().toLowerCase().contains(svcFilter.toLowerCase()))) + itemList = (List) itemList.stream() + .filter(s -> svcFilterList.stream() + .anyMatch(svcFilter -> ((ServiceTypeSummary) s).getTypeName() + .toLowerCase().contains(svcFilter.toLowerCase()))) .collect(Collectors.toList()); } - } + } if (!appFilterStr.isEmpty()) { - List<String> appFilterList = - new ArrayList<String>(Arrays.asList(appFilterStr.split(","))); + List<String> appFilterList = + new ArrayList<>(Arrays.asList(appFilterStr.split(","))); Predicate<ServiceTypeSummary> srvcAppFilter = p -> p.getApplication() != null; - Stream<ServiceTypeSummary> svcStream = itemList.stream(); + Stream<ServiceTypeSummary> svcStream = itemList.stream(); - itemList = svcStream.filter( srvcAppFilter.and( - s -> appFilterList.stream() - .anyMatch(appFilter ->((ServiceTypeSummary) s).getApplication().equalsIgnoreCase(appFilter)))) - .collect(Collectors.toList()); - } + itemList = + svcStream + .filter(srvcAppFilter.and(s -> appFilterList.stream() + .anyMatch(appFilter -> ((ServiceTypeSummary) s).getApplication() + .equalsIgnoreCase(appFilter)))) + .collect(Collectors.toList()); + } if (!compFilterStr.isEmpty()) { - List<String> compFilterList = - new ArrayList<String>(Arrays.asList(compFilterStr.split(","))); + List<String> compFilterList = + new ArrayList<>(Arrays.asList(compFilterStr.split(","))); Predicate<ServiceTypeSummary> srvcCompFilter = p -> p.getComponent() != null; - Stream<ServiceTypeSummary> svcStream = itemList.stream(); - itemList = svcStream.filter( srvcCompFilter.and( - s -> compFilterList.stream() - .anyMatch(compFilter ->((ServiceTypeSummary) s).getComponent().equalsIgnoreCase(compFilter)))) - .collect(Collectors.toList()); + Stream<ServiceTypeSummary> svcStream = itemList.stream(); + itemList = svcStream + .filter(srvcCompFilter.and(s -> compFilterList.stream().anyMatch( + compFilter -> (s).getComponent().equalsIgnoreCase(compFilter)))) + .collect(Collectors.toList()); } if (!containsFilterStr.isEmpty()) { final String simpleSrch = containsFilterStr.split(",")[0]; itemList = (List<ServiceTypeSummary>) itemList.stream() - .filter(s -> ((ServiceTypeSummary) s).contains(simpleSrch)).collect(Collectors.toList()); + .filter(s -> ((ServiceTypeSummary) s).contains(simpleSrch)) + .collect(Collectors.toList()); } - } + } if (sortBy != null) { if (sortBy.equals("owner")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getOwner().compareTo(o2.getOwner())); + ((List<ServiceTypeSummary>) itemList).sort((ServiceTypeSummary o1, + ServiceTypeSummary o2) -> o1.getOwner().compareTo(o2.getOwner())); } else if (sortBy.equals("typeId")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeId().get().compareTo(o2.getTypeId().get())); + ((List<ServiceTypeSummary>) itemList) + .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeId() + .get().compareTo(o2.getTypeId().get())); } else if (sortBy.equals("typeName")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeName().compareTo(o2.getTypeName())); + ((List<ServiceTypeSummary>) itemList).sort((ServiceTypeSummary o1, + ServiceTypeSummary o2) -> o1.getTypeName().compareTo(o2.getTypeName())); } else if (sortBy.equals("typeVersion")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getTypeVersion().compareTo(o2.getTypeVersion())); + ((List<ServiceTypeSummary>) itemList) + .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1 + .getTypeVersion().compareTo(o2.getTypeVersion())); } else if (sortBy.equals("created")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getCreated().get().compareTo(o2.getCreated().get())); + ((List<ServiceTypeSummary>) itemList) + .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getCreated() + .get().compareTo(o2.getCreated().get())); } else if (sortBy.equals("application")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getApplication().compareTo(o2.getApplication())); + ((List<ServiceTypeSummary>) itemList) + .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1 + .getApplication().compareTo(o2.getApplication())); } else if (sortBy.equals("component")) { - ((List<ServiceTypeSummary>)itemList).sort( - (ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1.getComponent().compareTo(o2.getComponent())); + ((List<ServiceTypeSummary>) itemList) + .sort((ServiceTypeSummary o1, ServiceTypeSummary o2) -> o1 + .getComponent().compareTo(o2.getComponent())); } } break; @@ -373,11 +387,11 @@ public class InventoryController extends DashboardRestrictedBaseController { final int pageCount = (int) Math.ceil((double) totalItems / pageSize); if (totalItems > pageSize && option.equals(InventoryDataItem.SERVICE_TYPES)) { itemList = getPageOfList(pageNum, pageSize, itemList); - } + } if (option.equals(InventoryDataItem.SERVICE_TYPES)) { if (!roleLevel.equals("ops")) { if (roleLevel.equals("dev") || roleLevel.equals("app_dev")) { - boolean deployFlag = roleAuth.equals("WRITE") ? true : false; + boolean deployFlag = roleAuth.equals("WRITE"); for (ServiceTypeSummary bp : (List<ServiceTypeSummary>) itemList) { bp.setCanDeploy(Optional.of(deployFlag)); } @@ -392,8 +406,8 @@ public class InventoryController extends DashboardRestrictedBaseController { bpComp = bp.getOwner().split(":")[0].toLowerCase(); } } - if (comp_deploy_tab.containsKey(bpComp)) { - boolean enableDeploy = comp_deploy_tab.get(bpComp); + if (compDeployTab.containsKey(bpComp)) { + boolean enableDeploy = compDeployTab.get(bpComp); logger.debug(">>>> enable deploy button: " + enableDeploy); bp.setCanDeploy(Optional.of(enableDeploy)); } else { @@ -408,49 +422,53 @@ public class InventoryController extends DashboardRestrictedBaseController { } // add the deployments mapping to the list lock.readLock().lock(); - List<ServiceTypeServiceMap> cache_bp_map_arr = + List<ServiceTypeServiceMap> cacheBpMapArr = (List<ServiceTypeServiceMap>) getCacheManager().getObject("bp_deploy_map"); lock.readLock().unlock(); - if (cache_bp_map_arr != null) { - for (ServiceTypeSummary bpSum: (List<ServiceTypeSummary>)itemList) { + if (cacheBpMapArr != null) { + for (ServiceTypeSummary bpSum : (List<ServiceTypeSummary>) itemList) { // correlate the cached data for deployments - List<ServiceTypeServiceMap> bp_depl_list = - cache_bp_map_arr.stream().filter( - (Predicate<? super ServiceTypeServiceMap>) - s->s.getServiceTypeId().equals(bpSum.getTypeId().get())). - collect(Collectors.toList()); - if (bp_depl_list != null && !bp_depl_list.isEmpty()) { - bpSum.setDeployments((ServiceRefCfyList)bp_depl_list.get(0).getServiceRefList()); - } + List<ServiceTypeServiceMap> bp_depl_list = cacheBpMapArr + .stream().filter((Predicate<? super ServiceTypeServiceMap>) s -> s + .getServiceTypeId().equals(bpSum.getTypeId().get())) + .collect(Collectors.toList()); + if (bp_depl_list != null && !bp_depl_list.isEmpty()) { + bpSum.setDeployments( + (ServiceRefCfyList) bp_depl_list.get(0).getServiceRefList()); + } } } } RestResponsePage<List> model = new RestResponsePage<>(totalItems, pageCount, itemList); - String outboundJson = objectMapper.writeValueAsString(model); - return outboundJson; + return objectMapper.writeValueAsString(model); } - + + /** + * scheduled method to build and update application cache + * store containing a collection of user to blueprints list mapping. + */ @SuppressWarnings("unchecked") - @Scheduled(fixedDelay=600000, initialDelay=150000) + @Scheduled(fixedDelay = 600000, initialDelay = 150000) public void cacheOwnerToBpMap() { ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - List<ServiceTypeSummary> bpList = - (List<ServiceTypeSummary>)getCacheManager().getObject(SERVICE_TYPES_PATH); + List<ServiceTypeSummary> bpList = + (List<ServiceTypeSummary>) getCacheManager().getObject(SERVICE_TYPES_PATH); lock.readLock().unlock(); if (bpList != null) { - Map<String, List<ServiceTypeSummary>> bpPerOwner = bpList.stream() - .collect(Collectors.groupingBy(bp -> bp.getOwner())); - + Map<String, List<ServiceTypeSummary>> bpPerOwner = + bpList.stream().collect(Collectors.groupingBy(bp -> bp.getOwner())); + lock.writeLock().lock(); getCacheManager().putObject("owner_bp_map", bpPerOwner); lock.writeLock().unlock(); } } - + private BlueprintResponse extractBpSummary(ServiceTypeSummary bp) { return new BlueprintResponse(bp.getTypeName(), bp.getTypeVersion(), bp.getTypeId().get()); } + /** * Gets one page of the specified items. This method traps exceptions and * constructs an appropriate JSON block to report errors. @@ -478,11 +496,12 @@ public class InventoryController extends DashboardRestrictedBaseController { logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPageWrapper caught exception"); RestResponseError result = null; - if (ex instanceof HttpStatusCodeException) + if (ex instanceof HttpStatusCodeException) { result = new RestResponseError(((HttpStatusCodeException) ex).getResponseBodyAsString()); - else + } else { result = new RestResponseError("Failed to get " + option.name(), ex); + } try { outboundJson = objectMapper.writeValueAsString(result); } catch (JsonProcessingException jpe) { @@ -501,11 +520,7 @@ public class InventoryController extends DashboardRestrictedBaseController { * @param request HttpServletRequest * @return List of ServiceTypes objects */ - @RequestMapping( - value = {OWNERS}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody + @GetMapping(value = {OWNERS}, produces = "application/json") public String getOwnersByPage(HttpServletRequest request) { preLogAudit(request); String json = getItemListForPageWrapper(request, InventoryDataItem.OWNER, @@ -513,9 +528,9 @@ public class InventoryController extends DashboardRestrictedBaseController { postLogAudit(request); return json; } - + /** - * Serves one page of service types + * Serves one page of service types. * * @param request HttpServletRequest * @return List of ServiceTypes objects @@ -534,13 +549,10 @@ public class InventoryController extends DashboardRestrictedBaseController { } /** - * Query Service objects matching a service type ID + * Query Service objects matching a service type ID. * */ - @RequestMapping( - value = {DEP_IDS_FOR_TYPE}, - method = RequestMethod.POST, - produces = "application/json") + @PostMapping(value = {DEP_IDS_FOR_TYPE}, produces = "application/json") public String getServicesForType(HttpServletRequest request, @RequestBody String[] typeList) throws Exception { preLogAudit(request); @@ -554,50 +566,40 @@ public class InventoryController extends DashboardRestrictedBaseController { return objectMapper.writeValueAsString(result); } - /** - * Serves the complete list of service type names + * Serves the complete list of service type names. * * @param request HttpServletRequest * * @return list of service type names */ - @RequestMapping( - value = {SERVICE_TYPE_NAME}, - method = RequestMethod.GET, - produces = "application/json") + @GetMapping(value = {SERVICE_TYPE_NAME}, produces = "application/json") @ResponseBody @Cacheable public String getAllServiceTypeNames(HttpServletRequest request) { - // preLogAudit(request); String json = null; json = getItemListForPageWrapper(request, InventoryDataItem.SERVICE_TYPE_NAME, request.getParameter("sortBy"), request.getParameter("searchBy")); postLogAudit(request); return json; - } - + } + /** - * Serves the aggregate count of service types + * Serves the aggregate count of service types. * * @param request HttpServletRequest * * @return count of service types */ - @RequestMapping( - value = {SERVICE_TYPE_ID}, - method = RequestMethod.GET, - produces = "application/json") - @ResponseBody - @Cacheable + @GetMapping(value = {SERVICE_TYPE_ID}, produces = "application/json") public String getAllServiceTypeIds(HttpServletRequest request) { String json = null; json = getItemListForPageWrapper(request, InventoryDataItem.SERVICE_TYPE_ID, request.getParameter("sortBy"), request.getParameter("searchBy")); postLogAudit(request); return json; - } - + } + /** * Gets the specified blueprint content for viewing. * @@ -607,11 +609,9 @@ public class InventoryController extends DashboardRestrictedBaseController { * @throws Exception on serialization error * */ - @RequestMapping( + @GetMapping( value = {VIEW_SERVICE_TYPE_BLUEPRINT_PATH + "/{typeid}"}, - method = RequestMethod.GET, produces = "application/yaml") - @ResponseBody public String viewServiceTypeBlueprintContentById(@PathVariable("typeid") String typeId, HttpServletRequest request) throws Exception { preLogAudit(request); @@ -655,33 +655,29 @@ public class InventoryController extends DashboardRestrictedBaseController { * @return status code on success; error on failure. * @throws Exception On serialization failure */ - @RequestMapping( - value = {SERVICE_TYPES_PATH + "/{typeId}"}, - method = RequestMethod.DELETE, - produces = "application/json") - @ResponseBody + @DeleteMapping(value = {SERVICE_TYPES_PATH + "/{typeId:.+}"}, produces = "application/json") public String deleteServiceType(@PathVariable("typeId") String typeId, - HttpServletRequest request, - HttpServletResponse response) throws Exception { + HttpServletRequest request, HttpServletResponse response) throws Exception { preLogAudit(request); String json = "{\"204\": \"Blueprint deleted\"}"; boolean allow = true; try { // check if these dep_ids exist in cloudify - List<CloudifyDeployedTenant> deplForBp = - cloudifyClient.getDeploymentForBlueprint("TID-"+typeId); - if (deplForBp.size() > 0 ) { + List<CloudifyDeployedTenant> deplForBp = + cloudifyClient.getDeploymentForBlueprint("TID-" + typeId); + if (!deplForBp.isEmpty()) { allow = false; - } else { - ServiceQueryParams qryParams = + } else { + ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build(); ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams); - Set<String> dep_ids = srvcRefs.items.stream().map(x -> ((ServiceRef)x).id).collect(Collectors.toSet()); - if (dep_ids.size() > 0) { + Set<String> depIds = srvcRefs.items.stream().map(x -> ((ServiceRef) x).id) + .collect(Collectors.toSet()); + if (!depIds.isEmpty()) { // now check again if these dep_ids still exist in cloudify List<String> allDepNames = cloudifyClient.getDeploymentNamesWithFilter(request); - for (String str: dep_ids) { - if (allDepNames.stream().anyMatch(s->s.equalsIgnoreCase(str))) { + for (String str : depIds) { + if (allDepNames.stream().anyMatch(s -> s.equalsIgnoreCase(str))) { allow = false; break; } @@ -692,13 +688,6 @@ public class InventoryController extends DashboardRestrictedBaseController { response.setStatus(HttpStatus.SC_BAD_REQUEST); json = objectMapper.writeValueAsString( new RestResponseError("Deployments exist for this blueprint")); - /* - PrintWriter out = response.getWriter(); - response.setContentType("application/json"); - response.setCharacterEncoding("UTF-8"); - out.print(json); - out.flush(); - */ return json; } else { inventoryClient.deleteServiceType(typeId); @@ -737,18 +726,14 @@ public class InventoryController extends DashboardRestrictedBaseController { * @return Blueprint as uploaded; or error. * @throws Exception on serialization error */ - @RequestMapping( - value = {SERVICE_TYPES_PATH + "/update"}, - method = RequestMethod.POST, - produces = "application/json") - @ResponseBody + @PostMapping(value = {SERVICE_TYPES_PATH + "/update"}, produces = "application/json") public String updateServiceTypeBlueprint(HttpServletRequest request, @RequestBody ServiceType serviceType) throws Exception { preLogAudit(request); String json = "{\"201\": \"OK\"}"; try { // Verify that the Service Type can be parsed for inputs. - Blueprint.parse(serviceType.getBlueprintTemplate()); + Blueprint.parse(serviceType.getBlueprintTemplate()); inventoryClient.addServiceType(serviceType); } catch (BlueprintParseException e) { MDC.put(SystemProperties.STATUS_CODE, "ERROR"); @@ -797,11 +782,7 @@ public class InventoryController extends DashboardRestrictedBaseController { * @return Blueprint as uploaded; or error. * @throws Exception on serialization error */ - @RequestMapping( - value = {SERVICE_TYPES_PATH + "/upload"}, - method = RequestMethod.POST, - produces = "application/json") - @ResponseBody + @PostMapping(value = {SERVICE_TYPES_PATH + "/upload"}, produces = "application/json") public String uploadServiceTypeBlueprint(HttpServletRequest request, @RequestBody ServiceTypeRequest serviceTypeRequest) throws Exception { preLogAudit(request); @@ -850,21 +831,19 @@ public class InventoryController extends DashboardRestrictedBaseController { } public void preLogAudit(HttpServletRequest request) { - begin = new Date(); + Date begin = new Date(); MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP, logDateFormat.format(begin)); MDC.put(SystemProperties.STATUS_CODE, "COMPLETE"); - // logger.setRequestBasedDefaultsIntoGlobalLoggingContext(request, APP_NAME); } public void postLogAudit(HttpServletRequest request) { - end = new Date(); + Date end = new Date(); MDC.put("AlertSeverity", "0"); MDC.put("TargetEntity", "DCAE Inventory"); MDC.put("TargetServiceName", "DCAE Inventory"); MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, logDateFormat.format(end)); MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, logDateFormat.format(end)); - MDC.put(SystemProperties.MDC_TIMER, Long.toString((end.getTime() - begin.getTime()))); logger.info(EELFLoggerDelegate.auditLogger, request.getMethod() + request.getRequestURI()); logger.info(EELFLoggerDelegate.metricsLogger, request.getMethod() + request.getRequestURI()); diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/BadRequestException.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/BadRequestException.java index f06c3a1..4c706ac 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/BadRequestException.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/BadRequestException.java @@ -17,16 +17,13 @@ * limitations under the License. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.exceptions; public class BadRequestException extends Exception { - /** - * - */ + private static final long serialVersionUID = -8654510668910559419L; public BadRequestException(String message) { diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/DashboardControllerException.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/DashboardControllerException.java index de89257..be0e5c3 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/DashboardControllerException.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/exceptions/DashboardControllerException.java @@ -17,8 +17,8 @@ * limitations under the License. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.exceptions; /** diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponsePage.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponsePage.java index 39a04ed..c473d58 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponsePage.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponsePage.java @@ -17,8 +17,8 @@ * limitations under the License. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model; /** diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponseSuccess.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponseSuccess.java index 4db65f1..5854433 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponseSuccess.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/RestResponseSuccess.java @@ -17,8 +17,8 @@ * limitations under the License. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model; /** diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprint.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprint.java index bdb920d..1874556 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprint.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprint.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.Map; @@ -34,30 +34,31 @@ import com.fasterxml.jackson.annotation.JsonProperty; */ public final class CloudifyBlueprint extends ECTransportModel { - /** A unique identifier for the blueprint. */ - public final String id; - /** The blueprint’s main file name. */ - public final String main_file_name; - /** The blueprint’s description. */ - public final String description; - /** The time the blueprint was uploaded to the manager. */ - public final String created_at; - /** The last time the blueprint was updated. */ - public final String updated_at; - /** The parsed result of the blueprint. */ - public final Map<String, Object> plan; - - @JsonCreator - public CloudifyBlueprint(@JsonProperty("main_file_name") String main_file_name, - @JsonProperty("description") String description, @JsonProperty("created_at") String created_at, - @JsonProperty("updated_at") String updated_at, @JsonProperty("id") String id, - @JsonProperty("plan") Map<String, Object> plan) { - this.main_file_name = main_file_name; - this.description = description; - this.created_at = created_at; - this.updated_at = updated_at; - this.id = id; - this.plan = plan; - } + /** A unique identifier for the blueprint. */ + public final String id; + /** The blueprint’s main file name. */ + public final String main_file_name; + /** The blueprint’s description. */ + public final String description; + /** The time the blueprint was uploaded to the manager. */ + public final String created_at; + /** The last time the blueprint was updated. */ + public final String updated_at; + /** The parsed result of the blueprint. */ + public final Map<String, Object> plan; + + @JsonCreator + public CloudifyBlueprint(@JsonProperty("main_file_name") String main_file_name, + @JsonProperty("description") String description, + @JsonProperty("created_at") String created_at, + @JsonProperty("updated_at") String updated_at, @JsonProperty("id") String id, + @JsonProperty("plan") Map<String, Object> plan) { + this.main_file_name = main_file_name; + this.description = description; + this.created_at = created_at; + this.updated_at = updated_at; + this.id = id; + this.plan = plan; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprintList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprintList.java index faee797..33d7142 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprintList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyBlueprintList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -29,36 +29,38 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyBlueprintList extends ECTransportModel { - - public final List<CloudifyBlueprint> items; - public final Metadata metadata; + + public final List<CloudifyBlueprint> items; + public final Metadata metadata; @JsonCreator - public CloudifyBlueprintList(@JsonProperty("items") List<CloudifyBlueprint> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } - - public static final class Metadata { - public final Pagination pagination; + public CloudifyBlueprintList(@JsonProperty("items") List<CloudifyBlueprint> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } + + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } - + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } + } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenant.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenant.java index a895dd0..a5052bc 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenant.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenant.java @@ -2,25 +2,24 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ -package org.onap.ccsdk.dashboard.model.cloudify; +package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -28,26 +27,28 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyDeployedTenant extends ECTransportModel { - - /** A unique identifier for the deployment. */ - public final String id; - /** tenant where the deployment was done */ - public final String tenant_name; - public final String created_at; + + /** A unique identifier for the deployment. */ + public final String id; + /** tenant where the deployment was done */ + public final String tenant_name; + public final String created_at; public final String updated_at; - - @JsonCreator - public CloudifyDeployedTenant(@JsonProperty("id") String id, - @JsonProperty("tenant_name") String tenant_name, - @JsonProperty("created_at") String created_at, - @JsonProperty("updated_at") String updated_at) { - this.id = id; - this.tenant_name = tenant_name; - this.created_at = created_at; - this.updated_at = updated_at; - } - - /* (non-Javadoc) + + @JsonCreator + public CloudifyDeployedTenant(@JsonProperty("id") String id, + @JsonProperty("tenant_name") String tenant_name, + @JsonProperty("created_at") String created_at, + @JsonProperty("updated_at") String updated_at) { + this.id = id; + this.tenant_name = tenant_name; + this.created_at = created_at; + this.updated_at = updated_at; + } + + /* + * (non-Javadoc) + * * @see java.lang.Object#hashCode() */ @Override @@ -61,17 +62,22 @@ public class CloudifyDeployedTenant extends ECTransportModel { return result; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } CloudifyDeployedTenant other = (CloudifyDeployedTenant) obj; if (created_at == null) { if (other.created_at != null) @@ -79,20 +85,26 @@ public class CloudifyDeployedTenant extends ECTransportModel { } else if (!created_at.equals(other.created_at)) return false; if (id == null) { - if (other.id != null) + if (other.id != null) { return false; - } else if (!id.equals(other.id)) + } + } else if (!id.equals(other.id)) { return false; + } if (tenant_name == null) { - if (other.tenant_name != null) + if (other.tenant_name != null) { return false; - } else if (!tenant_name.equals(other.tenant_name)) + } + } else if (!tenant_name.equals(other.tenant_name)) { return false; + } if (updated_at == null) { - if (other.updated_at != null) + if (other.updated_at != null) { return false; - } else if (!updated_at.equals(other.updated_at)) + } + } else if (!updated_at.equals(other.updated_at)) { return false; + } return true; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenantList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenantList.java index 96a91b6..0b1cc66 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenantList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployedTenantList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -29,34 +29,36 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyDeployedTenantList extends ECTransportModel { - public final List<CloudifyDeployedTenant> items; - public final Metadata metadata; + public final List<CloudifyDeployedTenant> items; + public final Metadata metadata; @JsonCreator - public CloudifyDeployedTenantList(@JsonProperty("items") List<CloudifyDeployedTenant> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } + public CloudifyDeployedTenantList(@JsonProperty("items") List<CloudifyDeployedTenant> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } - public static final class Metadata { - public final Pagination pagination; + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployment.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployment.java index 94ccf7d..f4d87bf 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployment.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeployment.java @@ -2,28 +2,27 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - *******************************************************************************/ + *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; import java.util.Map; -import java.util.Optional; - import org.onap.ccsdk.dashboard.model.ECTransportModel; import com.fasterxml.jackson.annotation.JsonCreator; @@ -35,42 +34,42 @@ import com.fasterxml.jackson.annotation.JsonProperty; */ public final class CloudifyDeployment extends ECTransportModel { - /** A unique identifier for the deployment. */ - public final String id; - public final String description; - /** The id of the blueprint the deployment is based on. */ - public final String blueprint_id; - /** The time when the deployment was created. */ - public final String created_at; - /** The time the deployment was last updated at. */ - public final String updated_at; - /** - * A dictionary containing key value pairs which represents a deployment - * input and its provided value. - */ - public final Map<String, Object> inputs; - /** A dictionary containing policies of a deployment. */ - public final Map<String, Object> policy_types; - /** A dictionary containing policy triggers of a deployment. */ - public final Map<String, Object> policy_triggers; - /** A dictionary containing an outputs definition of a deployment. */ - public final Map<String, Object> outputs; - /** A dictionary containing the groups definition of deployment. */ - public final Map<String, Object> groups; - - public final Map<String, Object> scaling_groups; - /** A list of workflows that can be executed on a deployment. */ - public final List<Workflow> workflows; - - public final String tenant_name; - + /** A unique identifier for the deployment. */ + public final String id; + public final String description; + /** The id of the blueprint the deployment is based on. */ + public final String blueprint_id; + /** The time when the deployment was created. */ + public final String created_at; + /** The time the deployment was last updated at. */ + public final String updated_at; + /** + * A dictionary containing key value pairs which represents a deployment + * input and its provided value. + */ + public final Map<String, Object> inputs; + /** A dictionary containing policies of a deployment. */ + public final Map<String, Object> policy_types; + /** A dictionary containing policy triggers of a deployment. */ + public final Map<String, Object> policy_triggers; + /** A dictionary containing an outputs definition of a deployment. */ + public final Map<String, Object> outputs; + /** A dictionary containing the groups definition of deployment. */ + public final Map<String, Object> groups; + + public final Map<String, Object> scaling_groups; + /** A list of workflows that can be executed on a deployment. */ + public final List<Workflow> workflows; + + public final String tenant_name; + /** internal role based setting */ public boolean canDeploy; - + /** latest execution object */ public CloudifyExecution lastExecution; /** install execution workflow status */ - //public String installStatus; + // public String installStatus; /** true if helm plugin is used */ public Boolean isHelm; /** true if helm status is enabled */ @@ -80,106 +79,115 @@ public final class CloudifyDeployment extends ECTransportModel { /** blueprint owner */ public String owner; - @JsonCreator - public CloudifyDeployment(@JsonProperty("description") String description, - @JsonProperty("blueprint_id") String blueprint_id, @JsonProperty("created_at") String created_at, - @JsonProperty("updated_at") String updated_at, @JsonProperty("id") String id, - @JsonProperty("inputs") Map<String, Object> inputs, @JsonProperty("policy_types") Map<String, Object> policy_types, - @JsonProperty("policy_triggers") Map<String, Object> policy_triggers, - @JsonProperty("outputs") Map<String, Object> outputs, @JsonProperty("groups") Map<String, Object> groups, - @JsonProperty("scaling_groups") Map<String, Object> scaling_groups, - @JsonProperty("workflows") List<Workflow> workflows, @JsonProperty("tenant_name") String tenant_name) { - this.description = description; - this.blueprint_id = blueprint_id; - this.created_at = created_at; - this.updated_at = updated_at; - this.id = id; - this.inputs = inputs; - this.policy_types = policy_types; - this.policy_triggers = policy_triggers; - this.outputs = outputs; - this.groups = groups; - this.scaling_groups = scaling_groups; - this.workflows = workflows; - this.tenant_name = tenant_name; - } - - public static final class Inputs { - public final String openstack_auth_url; - public final String external_network_name; - public final String openstack_username; - public final String instance_image; - public final String keypair_name; - public final String instance_name; - public final String keypair_private_key_path; - public final String openstack_tenant_name; - public final String subnet_name; - public final String openstack_region; - public final String openstack_password; - public final String ssh_username; - public final String instance_flavor; - public final String network_name; - - @JsonCreator - public Inputs(@JsonProperty("openstack_auth_url") String openstack_auth_url, - @JsonProperty("external_network_name") String external_network_name, - @JsonProperty("openstack_username") String openstack_username, - @JsonProperty("instance_image") String instance_image, - @JsonProperty("keypair_name") String keypair_name, @JsonProperty("instance_name") String instance_name, - @JsonProperty("keypair_private_key_path") String keypair_private_key_path, - @JsonProperty("openstack_tenant_name") String openstack_tenant_name, - @JsonProperty("subnet_name") String subnet_name, - @JsonProperty("openstack_region") String openstack_region, - @JsonProperty("openstack_password") String openstack_password, - @JsonProperty("ssh_username") String ssh_username, - @JsonProperty("instance_flavor") String instance_flavor, - @JsonProperty("network_name") String network_name) { - - this.openstack_auth_url = openstack_auth_url; - this.external_network_name = external_network_name; - this.openstack_username = openstack_username; - this.instance_image = instance_image; - this.keypair_name = keypair_name; - this.instance_name = instance_name; - this.keypair_private_key_path = keypair_private_key_path; - this.openstack_tenant_name = openstack_tenant_name; - this.subnet_name = subnet_name; - this.openstack_region = openstack_region; - this.openstack_password = openstack_password; - this.ssh_username = ssh_username; - this.instance_flavor = instance_flavor; - this.network_name = network_name; - } - } - - public static final class Workflow { - public final String name; - public final String created_at; - public final Map<String,Parameter> parameters; - - @JsonCreator - public Workflow(@JsonProperty("name") String name, @JsonProperty("created_at") String created_at, - @JsonProperty("parameters") Map<String,Parameter> parameters) { - this.name = name; - this.created_at = created_at; - this.parameters = parameters; - } - } - - public static final class Parameter { - - @JsonProperty("default") - public final Object xdefault; - public final String description; - - @JsonCreator - public Parameter(@JsonProperty("default") Object xdefault, @JsonProperty("description") String description) { - this.xdefault = xdefault; - this.description = description; - } - } - - /* (non-Javadoc) + @JsonCreator + public CloudifyDeployment(@JsonProperty("description") String description, + @JsonProperty("blueprint_id") String blueprint_id, + @JsonProperty("created_at") String created_at, + @JsonProperty("updated_at") String updated_at, @JsonProperty("id") String id, + @JsonProperty("inputs") Map<String, Object> inputs, + @JsonProperty("policy_types") Map<String, Object> policy_types, + @JsonProperty("policy_triggers") Map<String, Object> policy_triggers, + @JsonProperty("outputs") Map<String, Object> outputs, + @JsonProperty("groups") Map<String, Object> groups, + @JsonProperty("scaling_groups") Map<String, Object> scaling_groups, + @JsonProperty("workflows") List<Workflow> workflows, + @JsonProperty("tenant_name") String tenant_name) { + this.description = description; + this.blueprint_id = blueprint_id; + this.created_at = created_at; + this.updated_at = updated_at; + this.id = id; + this.inputs = inputs; + this.policy_types = policy_types; + this.policy_triggers = policy_triggers; + this.outputs = outputs; + this.groups = groups; + this.scaling_groups = scaling_groups; + this.workflows = workflows; + this.tenant_name = tenant_name; + } + + public static final class Inputs { + public final String openstack_auth_url; + public final String external_network_name; + public final String openstack_username; + public final String instance_image; + public final String keypair_name; + public final String instance_name; + public final String keypair_private_key_path; + public final String openstack_tenant_name; + public final String subnet_name; + public final String openstack_region; + public final String openstack_password; + public final String ssh_username; + public final String instance_flavor; + public final String network_name; + + @JsonCreator + public Inputs(@JsonProperty("openstack_auth_url") String openstack_auth_url, + @JsonProperty("external_network_name") String external_network_name, + @JsonProperty("openstack_username") String openstack_username, + @JsonProperty("instance_image") String instance_image, + @JsonProperty("keypair_name") String keypair_name, + @JsonProperty("instance_name") String instance_name, + @JsonProperty("keypair_private_key_path") String keypair_private_key_path, + @JsonProperty("openstack_tenant_name") String openstack_tenant_name, + @JsonProperty("subnet_name") String subnet_name, + @JsonProperty("openstack_region") String openstack_region, + @JsonProperty("openstack_password") String openstack_password, + @JsonProperty("ssh_username") String ssh_username, + @JsonProperty("instance_flavor") String instance_flavor, + @JsonProperty("network_name") String network_name) { + + this.openstack_auth_url = openstack_auth_url; + this.external_network_name = external_network_name; + this.openstack_username = openstack_username; + this.instance_image = instance_image; + this.keypair_name = keypair_name; + this.instance_name = instance_name; + this.keypair_private_key_path = keypair_private_key_path; + this.openstack_tenant_name = openstack_tenant_name; + this.subnet_name = subnet_name; + this.openstack_region = openstack_region; + this.openstack_password = openstack_password; + this.ssh_username = ssh_username; + this.instance_flavor = instance_flavor; + this.network_name = network_name; + } + } + + public static final class Workflow { + public final String name; + public final String created_at; + public final Map<String, Parameter> parameters; + + @JsonCreator + public Workflow(@JsonProperty("name") String name, + @JsonProperty("created_at") String created_at, + @JsonProperty("parameters") Map<String, Parameter> parameters) { + this.name = name; + this.created_at = created_at; + this.parameters = parameters; + } + } + + public static final class Parameter { + + @JsonProperty("default") + public final Object xdefault; + public final String description; + + @JsonCreator + public Parameter(@JsonProperty("default") Object xdefault, + @JsonProperty("description") String description) { + this.xdefault = xdefault; + this.description = description; + } + } + + /* + * (non-Javadoc) + * * @see java.lang.Object#hashCode() */ @Override @@ -191,28 +199,37 @@ public final class CloudifyDeployment extends ECTransportModel { return result; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } CloudifyDeployment other = (CloudifyDeployment) obj; if (id == null) { - if (other.id != null) + if (other.id != null) { return false; - } else if (!id.equals(other.id)) + } + } else if (!id.equals(other.id)) { return false; + } if (tenant_name == null) { - if (other.tenant_name != null) + if (other.tenant_name != null) { return false; - } else if (!tenant_name.equals(other.tenant_name)) + } + } else if (!tenant_name.equals(other.tenant_name)) { return false; + } return true; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentExt.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentExt.java index 3f906d1..caddb37 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentExt.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentExt.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -36,7 +36,7 @@ public class CloudifyDeploymentExt extends ECTransportModel { public Boolean isHelm; /** true if helm status is enabled */ public Boolean helmStatus; - + public CloudifyDeploymentExt(String id, String bp_id, String tenant) { super(); this.id = id; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentHelm.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentHelm.java index 9e4d122..57a7cac 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentHelm.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentHelm.java @@ -2,22 +2,21 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.cloudify; @@ -30,13 +29,12 @@ public class CloudifyDeploymentHelm { public Boolean isHelm; /** true if helm status is enabled */ public Boolean helmStatus; - + public CloudifyDeploymentHelm(String id, Boolean isHelm, Boolean helmStatus) { super(); this.id = id; this.isHelm = isHelm; this.helmStatus = helmStatus; } - - + } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentList.java index 4f83648..65f8c26 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyDeploymentList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -29,36 +29,38 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyDeploymentList extends ECTransportModel { - - public final List<CloudifyDeployment> items; - public final Metadata metadata; + + public final List<CloudifyDeployment> items; + public final Metadata metadata; @JsonCreator - public CloudifyDeploymentList(@JsonProperty("items") List<CloudifyDeployment> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } + public CloudifyDeploymentList(@JsonProperty("items") List<CloudifyDeployment> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } - public static final class Metadata { - public final Pagination pagination; + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } - + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } + } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyErrorCause.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyErrorCause.java index 8f6599c..69aa083 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyErrorCause.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyErrorCause.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -28,28 +28,27 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyErrorCause extends ECTransportModel { - /** Error message */ - public final String message; - - /** Stack trace at the point where the exception was raised */ - public final String traceback; - - /** Exception type */ - public final String type; - - @JsonCreator - public CloudifyErrorCause( - @JsonProperty("message") String message, - @JsonProperty("traceback") String traceback, - @JsonProperty("type") String type) { - - this.message = message; - this.traceback = traceback; - this.type = type; - } - - @Override - public String toString() { - return "CloudifyErrorCause [message=" + message + ", traceback=" + traceback + ", type=" + type + "]"; - } + /** Error message */ + public final String message; + + /** Stack trace at the point where the exception was raised */ + public final String traceback; + + /** Exception type */ + public final String type; + + @JsonCreator + public CloudifyErrorCause(@JsonProperty("message") String message, + @JsonProperty("traceback") String traceback, @JsonProperty("type") String type) { + + this.message = message; + this.traceback = traceback; + this.type = type; + } + + @Override + public String toString() { + return "CloudifyErrorCause [message=" + message + ", traceback=" + traceback + ", type=" + + type + "]"; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEvent.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEvent.java index a6593ab..5cc95ee 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEvent.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEvent.java @@ -2,22 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.LinkedList; @@ -30,69 +31,65 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyEvent extends ECTransportModel { - /** The id of the blueprint the execution is in the context of. */ - public final String blueprint_id; - /** The id of the deployment the execution is in the context of. */ - public final String deployment_id; - /** List of errors that happened while executing a given task */ - public final List<CloudifyErrorCause> error_causes; - /** The executions status. */ - public final String event_type; - /** The time the execution was queued at. */ - public final String execution_id; - /** log level */ - public final String level; - /** logger id */ - public final String logger; - /** message text */ - public final String message; - /** node instance id */ - public final String node_instance_id; - /** node name */ - public final String node_name; - /** Operation path */ - public final String operation; - /** time at which the event occurred on the executing machine */ - public final String reported_timestamp; - /** time at which the event was logged on the management machine */ - public final String timestamp; - /** resource is a cloudify_event or a cloudify_log */ - public final String type; - /** The id/name of the workflow the execution is of. */ - public final String workflow_id; + /** The id of the blueprint the execution is in the context of. */ + public final String blueprint_id; + /** The id of the deployment the execution is in the context of. */ + public final String deployment_id; + /** List of errors that happened while executing a given task */ + public final List<CloudifyErrorCause> error_causes; + /** The executions status. */ + public final String event_type; + /** The time the execution was queued at. */ + public final String execution_id; + /** log level */ + public final String level; + /** logger id */ + public final String logger; + /** message text */ + public final String message; + /** node instance id */ + public final String node_instance_id; + /** node name */ + public final String node_name; + /** Operation path */ + public final String operation; + /** time at which the event occurred on the executing machine */ + public final String reported_timestamp; + /** time at which the event was logged on the management machine */ + public final String timestamp; + /** resource is a cloudify_event or a cloudify_log */ + public final String type; + /** The id/name of the workflow the execution is of. */ + public final String workflow_id; - @JsonCreator - public CloudifyEvent( - @JsonProperty("blueprint_id") String blueprint_id, - @JsonProperty("deployment_id") String deployment_id, - @JsonProperty("error_causes") List<CloudifyErrorCause> error_causes, - @JsonProperty("event_type") String event_type, - @JsonProperty("execution_id") String execution_id, - @JsonProperty("level") String level, - @JsonProperty("logger") String logger, - @JsonProperty("message") String message, - @JsonProperty("node_instance_id") String node_instance_id, - @JsonProperty("node_name") String node_name, - @JsonProperty("operation") String operation, - @JsonProperty("reported_timestamp") String reported_timestamp, - @JsonProperty("timestamp") String timestamp, - @JsonProperty("type") String type, - @JsonProperty("workflow_id") String workflow_id) { + @JsonCreator + public CloudifyEvent(@JsonProperty("blueprint_id") String blueprint_id, + @JsonProperty("deployment_id") String deployment_id, + @JsonProperty("error_causes") List<CloudifyErrorCause> error_causes, + @JsonProperty("event_type") String event_type, + @JsonProperty("execution_id") String execution_id, @JsonProperty("level") String level, + @JsonProperty("logger") String logger, @JsonProperty("message") String message, + @JsonProperty("node_instance_id") String node_instance_id, + @JsonProperty("node_name") String node_name, @JsonProperty("operation") String operation, + @JsonProperty("reported_timestamp") String reported_timestamp, + @JsonProperty("timestamp") String timestamp, @JsonProperty("type") String type, + @JsonProperty("workflow_id") String workflow_id) { - this.blueprint_id = blueprint_id; - this.deployment_id = deployment_id; - this.error_causes = (error_causes == null) ? new LinkedList<CloudifyErrorCause> () : error_causes; - this.event_type = event_type; - this.execution_id = execution_id; - this.level = level; - this.logger = logger; - this.message = message; - this.node_instance_id = node_instance_id; - this.node_name = node_name; - this.operation = operation; - this.reported_timestamp = reported_timestamp; - this.timestamp = timestamp; - this.type = type; - this.workflow_id = workflow_id; - } + this.blueprint_id = blueprint_id; + this.deployment_id = deployment_id; + this.error_causes = + (error_causes == null) ? new LinkedList<CloudifyErrorCause>() : error_causes; + this.event_type = event_type; + this.execution_id = execution_id; + this.level = level; + this.logger = logger; + this.message = message; + this.node_instance_id = node_instance_id; + this.node_name = node_name; + this.operation = operation; + this.reported_timestamp = reported_timestamp; + this.timestamp = timestamp; + this.type = type; + this.workflow_id = workflow_id; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEventList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEventList.java index dc0052b..58ea962 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEventList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyEventList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -30,34 +30,36 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyEventList extends ECTransportModel { - public final List<CloudifyEvent> items; - public final Metadata metadata; + public final List<CloudifyEvent> items; + public final Metadata metadata; @JsonCreator - public CloudifyEventList(@JsonProperty("items") List<CloudifyEvent> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } + public CloudifyEventList(@JsonProperty("items") List<CloudifyEvent> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } - public static final class Metadata { - public final Pagination pagination; + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecution.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecution.java index 366a43d..647931f 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecution.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecution.java @@ -2,22 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.Map; @@ -33,52 +34,50 @@ import com.fasterxml.jackson.annotation.JsonProperty; */ public final class CloudifyExecution extends ECTransportModel { - /** A unique identifier for the execution. */ - public final String id; - /** The executions status. */ - public final String status; - /** The time the execution was queued at. */ - public final String created_at; - /** The time the execution ended in successful, failed or cancelled state */ - public final String ended_at; - /** The id/name of the workflow the execution is of. */ - public final String workflow_id; - /** true if the execution is of a system workflow. */ - public final Boolean is_system_workflow; - /** The id of the blueprint the execution is in the context of. */ - public final String blueprint_id; - /** The id of the deployment the execution is in the context of. */ - public final String deployment_id; - /** The tenant used to deploy */ - public final String tenant_name; - /** The execution’s error message on execution failure. */ - public final String error; - /** A dict of the workflow parameters passed when starting the execution. */ - public final Map<String, Object> parameters; + /** A unique identifier for the execution. */ + public final String id; + /** The executions status. */ + public final String status; + /** The time the execution was queued at. */ + public final String created_at; + /** The time the execution ended in successful, failed or cancelled state */ + public final String ended_at; + /** The id/name of the workflow the execution is of. */ + public final String workflow_id; + /** true if the execution is of a system workflow. */ + public final Boolean is_system_workflow; + /** The id of the blueprint the execution is in the context of. */ + public final String blueprint_id; + /** The id of the deployment the execution is in the context of. */ + public final String deployment_id; + /** The tenant used to deploy */ + public final String tenant_name; + /** The execution’s error message on execution failure. */ + public final String error; + /** A dict of the workflow parameters passed when starting the execution. */ + public final Map<String, Object> parameters; - @JsonCreator - public CloudifyExecution(@JsonProperty("status") String status, - @JsonProperty("created_at") String created_at, - @JsonProperty("ended_at") String ended_at, - @JsonProperty("workflow_id") String workflow_id, - @JsonProperty("is_system_workflow") Boolean is_system_workflow, - @JsonProperty("blueprint_id") String blueprint_id, - @JsonProperty("deployment_id") String deployment_id, - @JsonProperty("tenant_name") String tenant_name, - @JsonProperty("error") String error, @JsonProperty("id") String id, - @JsonProperty("parameters") Map<String, Object> parameters) { + @JsonCreator + public CloudifyExecution(@JsonProperty("status") String status, + @JsonProperty("created_at") String created_at, @JsonProperty("ended_at") String ended_at, + @JsonProperty("workflow_id") String workflow_id, + @JsonProperty("is_system_workflow") Boolean is_system_workflow, + @JsonProperty("blueprint_id") String blueprint_id, + @JsonProperty("deployment_id") String deployment_id, + @JsonProperty("tenant_name") String tenant_name, @JsonProperty("error") String error, + @JsonProperty("id") String id, @JsonProperty("parameters") Map<String, Object> parameters) { - this.status = status; - this.created_at = created_at; - this.ended_at = ended_at; - this.workflow_id = workflow_id; - this.is_system_workflow = is_system_workflow; - this.blueprint_id = blueprint_id; - this.deployment_id = deployment_id; - this.tenant_name = tenant_name; - this.error = error; - this.id = id; - this.parameters = parameters; - } + this.status = status; + this.created_at = created_at; + this.ended_at = ended_at; + this.workflow_id = workflow_id; + this.is_system_workflow = is_system_workflow; + this.blueprint_id = blueprint_id; + this.deployment_id = deployment_id; + this.tenant_name = tenant_name; + this.error = error; + this.id = id; + this.parameters = parameters; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionList.java index 9592179..f7e9b36 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -29,36 +29,38 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyExecutionList extends ECTransportModel { - - public final List<CloudifyExecution> items; - public final Metadata metadata; + + public final List<CloudifyExecution> items; + public final Metadata metadata; @JsonCreator - public CloudifyExecutionList(@JsonProperty("items") List<CloudifyExecution> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } + public CloudifyExecutionList(@JsonProperty("items") List<CloudifyExecution> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } - public static final class Metadata { - public final Pagination pagination; + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } - + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } + } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionRequest.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionRequest.java index 41b034c..8b6b68c 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionRequest.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyExecutionRequest.java @@ -2,22 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.Map; @@ -29,77 +30,76 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyExecutionRequest extends ECTransportModel { - /** A unique identifier for the deployment. */ - public String deployment_id; - /** A unique identifier for the workflow */ - public String workflow_id; - public Boolean allow_custom_parameters; - public Boolean force; - public String tenant; - /** Parameters: retrieve using the GET /deployments */ - public Map<String, Object> parameters; - - public String getDeployment_id() { - return deployment_id; - } - - public String getWorkflow_id() { - return workflow_id; - } - - public Boolean getAllow_custom_parameters() { - return allow_custom_parameters; - } - - public Boolean getForce() { - return force; - } - - public String getTenant() { - return tenant; - } - - public Map<String, Object> getParameters() { - return parameters; - } - - public void setDeployment_id(String deployment_id) { - this.deployment_id = deployment_id; - } - - public void setWorkflow_id(String workflow_id) { - this.workflow_id = workflow_id; - } - - public void setAllow_custom_parameters(Boolean allow_custom_parameters) { - this.allow_custom_parameters = allow_custom_parameters; - } - - public void setForce(Boolean force) { - this.force = force; - } - - public void setTenant(String tenant) { - this.tenant = tenant; - } - - public void setParameters(Map<String, Object> parameters) { - this.parameters = parameters; - } - - @JsonCreator - public CloudifyExecutionRequest(@JsonProperty("deployment_id") String deployment_id, - @JsonProperty("workflow_id") String workflow_id, - @JsonProperty("allow_custom_parameters") Boolean allowCustomParameters, - @JsonProperty("force") Boolean force, - @JsonProperty("tenant") String tenant, - @JsonProperty("parameters") Map<String, Object> parameters) { - this.deployment_id = deployment_id; - this.workflow_id = workflow_id; - this.allow_custom_parameters = allowCustomParameters; - this.force = force; - this.tenant = tenant; - this.parameters = parameters; - } + /** A unique identifier for the deployment. */ + public String deployment_id; + /** A unique identifier for the workflow */ + public String workflow_id; + public Boolean allow_custom_parameters; + public Boolean force; + public String tenant; + /** Parameters: retrieve using the GET /deployments */ + public Map<String, Object> parameters; + + public String getDeployment_id() { + return deployment_id; + } + + public String getWorkflow_id() { + return workflow_id; + } + + public Boolean getAllow_custom_parameters() { + return allow_custom_parameters; + } + + public Boolean getForce() { + return force; + } + + public String getTenant() { + return tenant; + } + + public Map<String, Object> getParameters() { + return parameters; + } + + public void setDeployment_id(String deployment_id) { + this.deployment_id = deployment_id; + } + + public void setWorkflow_id(String workflow_id) { + this.workflow_id = workflow_id; + } + + public void setAllow_custom_parameters(Boolean allow_custom_parameters) { + this.allow_custom_parameters = allow_custom_parameters; + } + + public void setForce(Boolean force) { + this.force = force; + } + + public void setTenant(String tenant) { + this.tenant = tenant; + } + + public void setParameters(Map<String, Object> parameters) { + this.parameters = parameters; + } + + @JsonCreator + public CloudifyExecutionRequest(@JsonProperty("deployment_id") String deployment_id, + @JsonProperty("workflow_id") String workflow_id, + @JsonProperty("allow_custom_parameters") Boolean allowCustomParameters, + @JsonProperty("force") Boolean force, @JsonProperty("tenant") String tenant, + @JsonProperty("parameters") Map<String, Object> parameters) { + this.deployment_id = deployment_id; + this.workflow_id = workflow_id; + this.allow_custom_parameters = allowCustomParameters; + this.force = force; + this.tenant = tenant; + this.parameters = parameters; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeId.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeId.java index da517b1..f9ae268 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeId.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeId.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -27,12 +27,12 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyNodeId extends ECTransportModel { - /** The id of the node */ - public final String id; - - @JsonCreator - public CloudifyNodeId(@JsonProperty("id") String id) { - this.id = id; - } + /** The id of the node */ + public final String id; + + @JsonCreator + public CloudifyNodeId(@JsonProperty("id") String id) { + this.id = id; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeIdList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeIdList.java index 53bde24..05d3dc8 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeIdList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeIdList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -28,34 +28,36 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyNodeIdList { - public final List<CloudifyNodeId> items; - public final Metadata metadata; + public final List<CloudifyNodeId> items; + public final Metadata metadata; @JsonCreator - public CloudifyNodeIdList(@JsonProperty("items") List<CloudifyNodeId> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } - - public static final class Metadata { - public final Pagination pagination; + public CloudifyNodeIdList(@JsonProperty("items") List<CloudifyNodeId> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } + + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstance.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstance.java index 2b17e77..d7884c0 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstance.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstance.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.Map; @@ -30,16 +30,16 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyNodeInstance extends ECTransportModel { - /** The id of the node instance. */ - public final String id; - - /** The runtime properties of the node instance. */ - public final Map<String, Object> runtime_properties; - - @JsonCreator - public CloudifyNodeInstance(@JsonProperty("id") String id, - @JsonProperty("runtime_properties") Map<String, Object> runtime_properties) { - this.id = id; - this.runtime_properties = runtime_properties; - } + /** The id of the node instance. */ + public final String id; + + /** The runtime properties of the node instance. */ + public final Map<String, Object> runtime_properties; + + @JsonCreator + public CloudifyNodeInstance(@JsonProperty("id") String id, + @JsonProperty("runtime_properties") Map<String, Object> runtime_properties) { + this.id = id; + this.runtime_properties = runtime_properties; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceId.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceId.java index 1775b65..b8a0fc0 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceId.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceId.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -32,12 +32,12 @@ import com.fasterxml.jackson.annotation.JsonProperty; */ public final class CloudifyNodeInstanceId extends ECTransportModel { - /** The id of the node instance. */ - public final String id; - - @JsonCreator - public CloudifyNodeInstanceId(@JsonProperty("id") String id) { - this.id = id; - } + /** The id of the node instance. */ + public final String id; + + @JsonCreator + public CloudifyNodeInstanceId(@JsonProperty("id") String id) { + this.id = id; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceIdList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceIdList.java index 1909bf6..6c1bced 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceIdList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceIdList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -29,36 +29,38 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyNodeInstanceIdList extends ECTransportModel { - - public final List<CloudifyNodeInstanceId> items; - public final Metadata metadata; + + public final List<CloudifyNodeInstanceId> items; + public final Metadata metadata; @JsonCreator - public CloudifyNodeInstanceIdList(@JsonProperty("items") List<CloudifyNodeInstanceId> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } - - public static final class Metadata { - public final Pagination pagination; + public CloudifyNodeInstanceIdList(@JsonProperty("items") List<CloudifyNodeInstanceId> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } + + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } - + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } + } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceList.java index adf005c..00992b6 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyNodeInstanceList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -30,34 +30,36 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyNodeInstanceList extends ECTransportModel { - public final List<CloudifyNodeInstance> items; - public final Metadata metadata; + public final List<CloudifyNodeInstance> items; + public final Metadata metadata; @JsonCreator - public CloudifyNodeInstanceList(@JsonProperty("items") List<CloudifyNodeInstance> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } - - public static final class Metadata { - public final Pagination pagination; + public CloudifyNodeInstanceList(@JsonProperty("items") List<CloudifyNodeInstance> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } + + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPlugin.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPlugin.java index c79126c..74f3576 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPlugin.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPlugin.java @@ -2,53 +2,46 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyPlugin { -/* - * "uploaded_at": "2020-04-29T14:46:59.628Z", - "package_version": "1.7.2", - "package_name": "k8splugin", - "distribution": "centos", - "supported_platform": "linux_x86_64", - */ + public final String package_name; - + public final String package_version; - + public final String supported_platform; - + public final String distribution; - + public final String uploaded_at; - + @JsonCreator - public CloudifyPlugin( - @JsonProperty("package_name") String package_name, - @JsonProperty("package_version") String package_version, - @JsonProperty("supported_platform") String supported_platform, - @JsonProperty("distribution") String distribution, - @JsonProperty("uploaded_at") String uploaded_at) { + public CloudifyPlugin(@JsonProperty("package_name") String package_name, + @JsonProperty("package_version") String package_version, + @JsonProperty("supported_platform") String supported_platform, + @JsonProperty("distribution") String distribution, + @JsonProperty("uploaded_at") String uploaded_at) { this.package_name = package_name; this.package_version = package_version; this.supported_platform = supported_platform; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPluginList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPluginList.java index 8930fd4..2bfeba2 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPluginList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyPluginList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -33,7 +33,8 @@ public class CloudifyPluginList extends ECTransportModel { public final Metadata metadata; @JsonCreator - public CloudifyPluginList(@JsonProperty("items") List<CloudifyPlugin> items, @JsonProperty("metadata") Metadata metadata){ + public CloudifyPluginList(@JsonProperty("items") List<CloudifyPlugin> items, + @JsonProperty("metadata") Metadata metadata) { this.items = items; this.metadata = metadata; } @@ -42,17 +43,18 @@ public class CloudifyPluginList extends ECTransportModel { public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - + public static final class Pagination { public final long total; public final long offset; public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { this.total = total; this.offset = offset; this.size = size; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifySecret.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifySecret.java index d087ce3..eeff3ad 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifySecret.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifySecret.java @@ -2,22 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -27,44 +28,41 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifySecret extends ECTransportModel { - /** The time when the secret was created */ - public final String created_at; - /** The secret’s key, unique per tenant */ - public final String key; + /** The time when the secret was created */ + public final String created_at; + /** The secret’s key, unique per tenant */ + public final String key; /** The time the secret was last updated at */ - public final String updated_at; - /** The secret’s value */ - public final String value; - /** Defines who can see the secret. Can be private, tenant or global*/ - public final String visibility; - /** Determines who can see the value of the secret. */ - public final String is_hidden_value; + public final String updated_at; + /** The secret’s value */ + public final String value; + /** Defines who can see the secret. Can be private, tenant or global */ + public final String visibility; + /** Determines who can see the value of the secret. */ + public final String is_hidden_value; + + public final String tenant_name; + + public final String resource_availability; - public final String tenant_name; - - public final String resource_availability; - - @JsonCreator - public CloudifySecret( - @JsonProperty("created_at") String created_at, - @JsonProperty("key") String key, - @JsonProperty("updated_at") String updated_at, - @JsonProperty("value") String value, - @JsonProperty("visibility") String visibility, - @JsonProperty("is_hidden_value") String is_hidden_value, - @JsonProperty("tenant_name") String tenant_name, - @JsonProperty("resource_availability") String resource_availability) { - this.created_at = created_at; - this.key = key; - this.updated_at = updated_at; - this.value = value; - this.visibility = visibility; - this.is_hidden_value = is_hidden_value; - this.tenant_name = tenant_name; - this.resource_availability = resource_availability; - } - - /** + @JsonCreator + public CloudifySecret(@JsonProperty("created_at") String created_at, + @JsonProperty("key") String key, @JsonProperty("updated_at") String updated_at, + @JsonProperty("value") String value, @JsonProperty("visibility") String visibility, + @JsonProperty("is_hidden_value") String is_hidden_value, + @JsonProperty("tenant_name") String tenant_name, + @JsonProperty("resource_availability") String resource_availability) { + this.created_at = created_at; + this.key = key; + this.updated_at = updated_at; + this.value = value; + this.visibility = visibility; + this.is_hidden_value = is_hidden_value; + this.tenant_name = tenant_name; + this.resource_availability = resource_availability; + } + + /** * @return the key */ public String getKey() { diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenant.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenant.java index 53f5149..078cd5b 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenant.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenant.java @@ -2,25 +2,24 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ -package org.onap.ccsdk.dashboard.model.cloudify; +package org.onap.ccsdk.dashboard.model.cloudify; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -29,19 +28,18 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyTenant extends ECTransportModel { - /** A unique identifier for the tenant */ - public final String id; - /** The tenant's name. */ - public final String name; - /** tenant display name */ - public String dName; - - @JsonCreator - public CloudifyTenant(@JsonProperty("name") String name, - @JsonProperty("dName") String dName, - @JsonProperty("id") String id) { - this.name = name; - this.dName = dName; - this.id = id; - } + /** A unique identifier for the tenant */ + public final String id; + /** The tenant's name. */ + public final String name; + /** tenant display name */ + public String dName; + + @JsonCreator + public CloudifyTenant(@JsonProperty("name") String name, @JsonProperty("dName") String dName, + @JsonProperty("id") String id) { + this.name = name; + this.dName = dName; + this.id = id; + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenantList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenantList.java index 4610b9e..532d64b 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenantList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/CloudifyTenantList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.List; @@ -29,34 +29,36 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; public class CloudifyTenantList extends ECTransportModel { - public final List<CloudifyTenant> items; - public final Metadata metadata; + public final List<CloudifyTenant> items; + public final Metadata metadata; @JsonCreator - public CloudifyTenantList(@JsonProperty("items") List<CloudifyTenant> items, @JsonProperty("metadata") Metadata metadata){ - this.items = items; - this.metadata = metadata; - } - - public static final class Metadata { - public final Pagination pagination; + public CloudifyTenantList(@JsonProperty("items") List<CloudifyTenant> items, + @JsonProperty("metadata") Metadata metadata) { + this.items = items; + this.metadata = metadata; + } + + public static final class Metadata { + public final Pagination pagination; @JsonCreator - public Metadata(@JsonProperty("pagination") Pagination pagination){ + public Metadata(@JsonProperty("pagination") Pagination pagination) { this.pagination = pagination; } - - public static final class Pagination { - public final long total; - public final long offset; - public final long size; + + public static final class Pagination { + public final long total; + public final long offset; + public final long size; @JsonCreator - public Pagination(@JsonProperty("total") long total, @JsonProperty("offset") long offset, @JsonProperty("size") long size){ - this.total = total; - this.offset = offset; - this.size = size; - } - } - } + public Pagination(@JsonProperty("total") long total, + @JsonProperty("offset") long offset, @JsonProperty("size") long size) { + this.total = total; + this.offset = offset; + this.size = size; + } + } + } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/ServiceRefCfyList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/ServiceRefCfyList.java index 10c9bea..53c9faf 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/ServiceRefCfyList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/cloudify/ServiceRefCfyList.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.cloudify; import java.util.Collection; @@ -40,8 +40,7 @@ public class ServiceRefCfyList { } @JsonCreator - public ServiceRefCfyList( - @JsonProperty("items") Collection<CloudifyDeployedTenant> items, + public ServiceRefCfyList(@JsonProperty("items") Collection<CloudifyDeployedTenant> items, @JsonProperty("totalCount") Integer totalCount) { this.items = items; this.totalCount = totalCount; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDatacenter.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDatacenter.java index e95cdb1..ca26f96 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDatacenter.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDatacenter.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.consul; import org.onap.ccsdk.dashboard.model.ECTransportModel; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDeploymentHealth.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDeploymentHealth.java index 6837b8d..6338ab6 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDeploymentHealth.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulDeploymentHealth.java @@ -2,33 +2,34 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.consul; public class ConsulDeploymentHealth { - + private final String node; private final String checkID; private final String name; private final String status; private final String serviceID; private final String serviceName; - + private ConsulDeploymentHealth(String node, String checkID, String name, String status, String serviceID, String serviceName) { this.node = node; @@ -38,7 +39,7 @@ public class ConsulDeploymentHealth { this.serviceID = serviceID; this.serviceName = serviceName; } - + public String getNode() { return node; } @@ -70,7 +71,7 @@ public class ConsulDeploymentHealth { private final String status; private final String serviceID; private final String serviceName; - + public Builder(ConsulServiceHealth input) { this.node = input.node; this.checkID = input.checkID; @@ -79,9 +80,9 @@ public class ConsulDeploymentHealth { this.serviceID = input.serviceID; this.serviceName = input.serviceName; } - + public ConsulDeploymentHealth build() { - return new ConsulDeploymentHealth(node, checkID, name,status, serviceID, serviceName); + return new ConsulDeploymentHealth(node, checkID, name, status, serviceID, serviceName); } public String getNode() { diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulHealthServiceRegistration.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulHealthServiceRegistration.java deleted file mode 100644 index 76f9491..0000000 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulHealthServiceRegistration.java +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************************* - * =============LICENSE_START========================================================= - * - * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - *******************************************************************************/ -package org.onap.ccsdk.dashboard.model.consul; - -import java.util.List; - -import org.onap.ccsdk.dashboard.model.ECTransportModel; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Model for message POST-ed to controller to (de)register a node or service - * with the Consul health service. The ID is optional; the name is required. - * - * <pre> -{ - "services": [ - { - "id": "<service_id>", - "name": "<service_name>", - "address": "<service_address>", - "port": "<service_port>", - "tags": [ - ], - "checks": [ - { - "endpoint": "<http url for status>", - "interval": "<frequency to check health> e.g., 10s|10m", - "description": "<human readable description of the check", - "name":"<name of the check> - }, - { - "endpoint": "<http url for status>", - "interval": "<frequency to check health> e.g. 10s|10m", - "description": "<human readable description of the check", - "name":"<name of the check> - }, - ] - } - ] -}* - * </pre> - */ -public final class ConsulHealthServiceRegistration extends ECTransportModel { - - public final List<ConsulServiceRegistration> services; - - @JsonCreator - public ConsulHealthServiceRegistration(@JsonProperty("services") List<ConsulServiceRegistration> services) { - this.services = services; - } - - public static final class ConsulServiceRegistration { - - public final String id; - public final String name; - public final String address; - public final String port; - public final List<String> tags; - public final List<EndpointCheck> checks; - - @JsonCreator - public ConsulServiceRegistration(@JsonProperty("id") String id, // - @JsonProperty("name") String name, // - @JsonProperty("address") String address, // - @JsonProperty("port") String port, // - @JsonProperty("tags") List<String> tags, // - @JsonProperty("checks") List<EndpointCheck> checks) { - this.id = id; - this.name = name; - this.address = address; - this.port = port; - this.tags = tags; - this.checks = checks; - } - - } - - public static final class EndpointCheck { - - public final String endpoint; - public final String interval; - public final String description; - public final String name; - - @JsonCreator - public EndpointCheck(@JsonProperty("endpoint") String endpoint, // - @JsonProperty("interval") String interval, // - @JsonProperty("description") String description, // - @JsonProperty("name") String name) { - this.endpoint = endpoint; - this.interval = interval; - this.description = description; - this.name = name; - } - } - -} diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulNodeInfo.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulNodeInfo.java index 3cbf3e0..b043151 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulNodeInfo.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulNodeInfo.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.consul; import java.util.Map; @@ -34,13 +34,13 @@ import com.fasterxml.jackson.annotation.JsonProperty; * * <pre> { - "ID":"a2788806-6e2e-423e-8ee7-6cad6f3d3de6", - "Node":"cjlvmcnsl00", - "Address":"10.170.8.13", - "TaggedAddresses":{"lan":"10.170.8.13","wan":"10.170.8.13"}, - "Meta":{}, - "CreateIndex":6, - "ModifyIndex":179808 + "ID":"a2788806-6e2e-423e-8ee7-6cad6f3d3de6", + "Node":"cjlvmcnsl00", + "Address":"10.170.8.13", + "TaggedAddresses":{"lan":"10.170.8.13","wan":"10.170.8.13"}, + "Meta":{}, + "CreateIndex":6, + "ModifyIndex":179808 } * </pre> */ @@ -56,10 +56,11 @@ public final class ConsulNodeInfo extends ECTransportModel { @JsonCreator public ConsulNodeInfo(@JsonProperty("ID") String id, @JsonProperty("Node") String node, - @JsonProperty("Address") String address, - @JsonProperty("TaggedAddresses") Map<String, Object> taggedAddresses, - @JsonProperty("Meta") Map<String, Object> meta, @JsonProperty("CreateIndex") int createIndex, - @JsonProperty("ModifyIndex") int modifyIndex) { + @JsonProperty("Address") String address, + @JsonProperty("TaggedAddresses") Map<String, Object> taggedAddresses, + @JsonProperty("Meta") Map<String, Object> meta, + @JsonProperty("CreateIndex") int createIndex, + @JsonProperty("ModifyIndex") int modifyIndex) { this.id = id; this.node = node; this.address = address; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceCatalogItem.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceCatalogItem.java index a5bfc3d..65a35cb 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceCatalogItem.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceCatalogItem.java @@ -2,19 +2,19 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ @@ -33,9 +33,11 @@ public class ConsulServiceCatalogItem { public final String servicePort; @JsonCreator - public ConsulServiceCatalogItem(@JsonProperty("Node") String node, @JsonProperty("Address") String address, - @JsonProperty("Datacenter") String datacenter, @JsonProperty("ServiceName") String serviceName, - @JsonProperty("ServiceAddress") String serviceAddress, @JsonProperty("ServicePort") String servicePort ) { + public ConsulServiceCatalogItem(@JsonProperty("Node") String node, + @JsonProperty("Address") String address, @JsonProperty("Datacenter") String datacenter, + @JsonProperty("ServiceName") String serviceName, + @JsonProperty("ServiceAddress") String serviceAddress, + @JsonProperty("ServicePort") String servicePort) { this.node = node; this.address = address; this.datacenter = datacenter; @@ -67,5 +69,5 @@ public class ConsulServiceCatalogItem { public String getServicePort() { return servicePort; } - + } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealth.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealth.java index 1c0cb35..2df00ca 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealth.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealth.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.consul; import org.onap.ccsdk.dashboard.model.ECTransportModel; @@ -61,11 +61,14 @@ public final class ConsulServiceHealth extends ECTransportModel { public final int modifyIndex; @JsonCreator - public ConsulServiceHealth(@JsonProperty("Node") String node, @JsonProperty("CheckID") String checkID, - @JsonProperty("Name") String name, @JsonProperty("Status") String status, - @JsonProperty("Notes") String notes, @JsonProperty("Output") String output, - @JsonProperty("ServiceID") String serviceID, @JsonProperty("ServiceName") String serviceName, - @JsonProperty("ServiceTags") String[] serviceTags, @JsonProperty("CreateIndex") int createIndex, @JsonProperty("ModifyIndex") int modifyIndex) { + public ConsulServiceHealth(@JsonProperty("Node") String node, + @JsonProperty("CheckID") String checkID, @JsonProperty("Name") String name, + @JsonProperty("Status") String status, @JsonProperty("Notes") String notes, + @JsonProperty("Output") String output, @JsonProperty("ServiceID") String serviceID, + @JsonProperty("ServiceName") String serviceName, + @JsonProperty("ServiceTags") String[] serviceTags, + @JsonProperty("CreateIndex") int createIndex, + @JsonProperty("ModifyIndex") int modifyIndex) { this.node = node; this.checkID = checkID; this.name = name; @@ -79,23 +82,25 @@ public final class ConsulServiceHealth extends ECTransportModel { this.modifyIndex = modifyIndex; ConstructTenant(); } - + /* * Search the service tags to find and * construct cfy tenant */ private void ConstructTenant() { - String tenantString = ""; - for (String tag : serviceTags) { - if (tag.contains("cfytenantname=")) { - tenantString = tag; - break; - } - } - if (!tenantString.equals("")) - tenant = tenantString.substring(tenantString.indexOf("=") + 1); - else - tenant = ""; + String tenantString = ""; + for (String tag : serviceTags) { + if (tag.contains("cfytenantname=")) { + tenantString = tag; + break; + } + } + if (!tenantString.equals("")) { + tenant = tenantString.substring(tenantString.indexOf("=") + 1); + } + else { + tenant = ""; + } } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealthHistory.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealthHistory.java deleted file mode 100644 index a3f0cf9..0000000 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceHealthHistory.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * =============LICENSE_START========================================================= - * - * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - *******************************************************************************/ -package org.onap.ccsdk.dashboard.model.consul; - -import org.onap.ccsdk.dashboard.model.ECTransportModel; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Model for message returned by Consul about health of a service observed at - * some point in time. - * - * <pre> - { - "Status": "critical", - "Output": "\"Get http://135.91.205.200:8080: dial tcp 135.91.205.200:8080: getsockopt: connection refused\"", - "Date": "2017-06-01 15:31:58.00-0000" - } - * </pre> - * - */ -public final class ConsulServiceHealthHistory extends ECTransportModel { - - public final String status; - public final String output; - public final String date; - - @JsonCreator - public ConsulServiceHealthHistory(@JsonProperty("Status") String status, @JsonProperty("Output") String output, - @JsonProperty("Date") String date) { - this.status = status; - this.output = output; - this.date = date; - } - -} diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceInfo.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceInfo.java index 7f34bdb..e03688a 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceInfo.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/consul/ConsulServiceInfo.java @@ -2,22 +2,21 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.consul; @@ -38,7 +37,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; * * <pre> { - "pgaasServer1":["135.91.224.136"] + "pgaasServer1":["135.91.224.136"] } * </pre> */ @@ -48,7 +47,8 @@ public final class ConsulServiceInfo extends ECTransportModel { public final List<String> addresses; @JsonCreator - public ConsulServiceInfo(@JsonProperty("name") String name, @JsonProperty("addresses") List<String> addresses) { + public ConsulServiceInfo(@JsonProperty("name") String name, + @JsonProperty("addresses") List<String> addresses) { this.name = name; this.addresses = addresses; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentErrorResponse.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentErrorResponse.java index 844c066..088c935 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentErrorResponse.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentErrorResponse.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import java.util.Collection; @@ -39,8 +39,9 @@ public class DeploymentErrorResponse { private final Optional<Collection<String>> stack; @JsonCreator - public DeploymentErrorResponse(@JsonProperty("status") int status, @JsonProperty("message") String message, - @JsonProperty("stack") Optional<Collection<String>> stack) { + public DeploymentErrorResponse(@JsonProperty("status") int status, + @JsonProperty("message") String message, + @JsonProperty("stack") Optional<Collection<String>> stack) { this.status = status; this.message = message; this.stack = stack; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentInput.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentInput.java index 33dfb6a..76f3624 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentInput.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentInput.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import java.util.Collection; @@ -35,20 +35,20 @@ import com.fasterxml.jackson.annotation.JsonProperty; * * <pre> { - "component" : "comp", - "deploymentTag" : "tag", - "blueprintName" : "name", - "blueprintVersion" : "version", - "blueprintId" : "bp_id", - "inputs" : - { - "input1" : "parameter1", - "input2" : "parameter2", - ... - "inputn" : "parametern" - }, - "tenant" : "tenant_name" - } + "component" : "comp", + "deploymentTag" : "tag", + "blueprintName" : "name", + "blueprintVersion" : "version", + "blueprintId" : "bp_id", + "inputs" : + { + "input1" : "parameter1", + "input2" : "parameter2", + ... + "inputn" : "parametern" + }, + "tenant" : "tenant_name" + } * </pre> * * THIS OBJECT INCLUDES THE DEPLOYMENTID CREATED BY THE USER! @@ -80,31 +80,31 @@ public class DeploymentInput { private final Map<String, Object> inputs; private final Collection<String> reinstall_list; - + private final boolean skip_install; - + private final boolean skip_uninstall; - + private final boolean skip_reinstall; private final boolean force; - + private final boolean ignore_failure; - + private final boolean install_first; - + @JsonCreator - public DeploymentInput(@JsonProperty("component") String component, @JsonProperty("tag") String tag, - @JsonProperty("blueprintName") String blueprintName, - @JsonProperty("blueprintVersion") Integer blueprintVersion, @JsonProperty("blueprintId") String blueprintId, - @JsonProperty("inputs") Map<String, Object> inputs, @JsonProperty("tenant") String tenant, - @JsonProperty("reinstall_list") Collection<String> reinstallList, - @JsonProperty("skip_install") boolean skipInstall, - @JsonProperty("skip_uninstall") boolean skipUninstall, - @JsonProperty("skip_reinstall") boolean skipReinstall, - @JsonProperty("force") boolean force, - @JsonProperty("ignore_failure") boolean ignoreFailure, - @JsonProperty("install_first") boolean installFirst) { + public DeploymentInput(@JsonProperty("component") String component, + @JsonProperty("tag") String tag, @JsonProperty("blueprintName") String blueprintName, + @JsonProperty("blueprintVersion") Integer blueprintVersion, + @JsonProperty("blueprintId") String blueprintId, + @JsonProperty("inputs") Map<String, Object> inputs, @JsonProperty("tenant") String tenant, + @JsonProperty("reinstall_list") Collection<String> reinstallList, + @JsonProperty("skip_install") boolean skipInstall, + @JsonProperty("skip_uninstall") boolean skipUninstall, + @JsonProperty("skip_reinstall") boolean skipReinstall, @JsonProperty("force") boolean force, + @JsonProperty("ignore_failure") boolean ignoreFailure, + @JsonProperty("install_first") boolean installFirst) { this.component = component; this.tag = tag; this.blueprintName = blueprintName; @@ -148,7 +148,7 @@ public class DeploymentInput { public Optional<String> getBlueprintId() { return blueprintId; } - + public Collection<String> getReinstall_list() { return reinstall_list; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentLink.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentLink.java index ba0604d..918c32d 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentLink.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentLink.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import com.fasterxml.jackson.annotation.JsonCreator; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequest.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequest.java index 94bb064..933a312 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequest.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequest.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import java.util.Map; @@ -57,10 +57,10 @@ public class DeploymentRequest { * deployed. */ private final Map<String, Object> inputs; - + @JsonCreator public DeploymentRequest(@JsonProperty("serviceTypeId") String serviceTypeId, - @JsonProperty("inputs") Map<String, Object> inputs ) { + @JsonProperty("inputs") Map<String, Object> inputs) { this.serviceTypeId = serviceTypeId; this.inputs = inputs; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequestObject.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequestObject.java index 0bb6f74..af468a8 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequestObject.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentRequestObject.java @@ -2,31 +2,28 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; -import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.Map; -import java.util.Optional; - import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -35,17 +32,17 @@ import com.fasterxml.jackson.annotation.JsonProperty; * Deployment Handler API: * * <pre> - { - "serviceTypeId" : "serviceTypeId", - "type" : "install/update", - "inputs" : - { - "input1" : "parameter1" - "input2" : "parameter2" - ... - "inputn" : "parametern" - } - } + { + "serviceTypeId" : "serviceTypeId", + "type" : "install/update", + "inputs" : + { + "input1" : "parameter1" + "input2" : "parameter2" + ... + "inputn" : "parametern" + } + } * </pre> * * THIS OBJECT INCLUDES THE DEPLOYMENTID CREATED BY THE USER! @@ -74,30 +71,30 @@ public class DeploymentRequestObject { private final Map<String, Object> inputs; private final Collection<String> reinstall_list; - + private final boolean skip_install; - + private final boolean skip_uninstall; - + private final boolean skip_reinstall; private final boolean force; - + private final boolean ignore_failure; - + private final boolean install_first; - + @JsonCreator public DeploymentRequestObject(@JsonProperty("deploymentId") String deploymentId, - @JsonProperty("serviceTypeId") String serviceTypeId, @JsonProperty("inputs") Map<String, Object> inputs, - @JsonProperty("tenant") String tenant, @JsonProperty("method") String method, - @JsonProperty("reinstall_list") Collection<String> reinstallList, - @JsonProperty("skip_install") boolean skipInstall, - @JsonProperty("skip_uninstall") boolean skipUninstall, - @JsonProperty("skip_reinstall") boolean skipReinstall, - @JsonProperty("force") boolean force, - @JsonProperty("ignore_failure") boolean ignoreFailure, - @JsonProperty("install_first") boolean installFirst) { + @JsonProperty("serviceTypeId") String serviceTypeId, + @JsonProperty("inputs") Map<String, Object> inputs, @JsonProperty("tenant") String tenant, + @JsonProperty("method") String method, + @JsonProperty("reinstall_list") Collection<String> reinstallList, + @JsonProperty("skip_install") boolean skipInstall, + @JsonProperty("skip_uninstall") boolean skipUninstall, + @JsonProperty("skip_reinstall") boolean skipReinstall, @JsonProperty("force") boolean force, + @JsonProperty("ignore_failure") boolean ignoreFailure, + @JsonProperty("install_first") boolean installFirst) { this.deploymentId = deploymentId; this.serviceTypeId = serviceTypeId; this.inputs = inputs; @@ -112,7 +109,7 @@ public class DeploymentRequestObject { this.install_first = installFirst; } - public DeploymentRequestObject(String deploymentId, String serviceTypeId, String method, + public DeploymentRequestObject(String deploymentId, String serviceTypeId, String method, Map<String, Object> inputs, String tenant) { super(); this.deploymentId = deploymentId; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResource.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResource.java index 2c43f8a..7847c22 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResource.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResource.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import com.fasterxml.jackson.annotation.JsonCreator; @@ -41,7 +41,7 @@ public class DeploymentResource { @JsonCreator public DeploymentResource(@JsonProperty("deployment_id") String deploymentId, - @JsonProperty("links") DeploymentResourceLinks links) { + @JsonProperty("links") DeploymentResourceLinks links) { this.deploymentId = deploymentId; this.links = links; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResourceLinks.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResourceLinks.java index 6d9644c..3884013 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResourceLinks.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResourceLinks.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import com.fasterxml.jackson.annotation.JsonCreator; @@ -38,8 +38,8 @@ public class DeploymentResourceLinks { private final String status; @JsonCreator - public DeploymentResourceLinks(@JsonProperty("self") String self, @JsonProperty("outcome") String outcome, - @JsonProperty("status") String status) { + public DeploymentResourceLinks(@JsonProperty("self") String self, + @JsonProperty("outcome") String outcome, @JsonProperty("status") String status) { this.self = self; this.outcome = outcome; this.status = status; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponse.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponse.java index 83c1989..84bb414 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponse.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponse.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import com.fasterxml.jackson.annotation.JsonCreator; @@ -38,7 +38,7 @@ public class DeploymentResponse { @JsonCreator public DeploymentResponse(@JsonProperty("requestId") String requestId, - @JsonProperty("links") DeploymentResponseLinks links) { + @JsonProperty("links") DeploymentResponseLinks links) { this.requestId = requestId; this.links = links; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponseLinks.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponseLinks.java index 68833cb..489d015 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponseLinks.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentResponseLinks.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import com.fasterxml.jackson.annotation.JsonCreator; @@ -40,7 +40,8 @@ public class DeploymentResponseLinks { private final String status; @JsonCreator - public DeploymentResponseLinks(@JsonProperty("self") String self, @JsonProperty("status") String status) { + public DeploymentResponseLinks(@JsonProperty("self") String self, + @JsonProperty("status") String status) { this.self = self; this.status = status; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentsListResponse.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentsListResponse.java index 13dcc4b..05f2723 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentsListResponse.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/deploymenthandler/DeploymentsListResponse.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.model.deploymenthandler; import java.util.Collection; @@ -42,7 +42,7 @@ public class DeploymentsListResponse { @JsonCreator public DeploymentsListResponse(@JsonProperty("requestId") String requestId, - @JsonProperty("deployments") Collection<DeploymentLink> deployments) { + @JsonProperty("deployments") Collection<DeploymentLink> deployments) { this.requestId = requestId; this.deployments = deployments; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ApiResponseMessage.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ApiResponseMessage.java index 1cb0a51..ff5a15a 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ApiResponseMessage.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ApiResponseMessage.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -35,7 +35,7 @@ public class ApiResponseMessage { @JsonCreator public ApiResponseMessage(@JsonProperty("code") Integer code, @JsonProperty("type") String type, - @JsonProperty("message") String message) { + @JsonProperty("message") String message) { this.code = code; this.type = type; this.message = message; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Blueprint.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Blueprint.java index 184e0fb..4740113 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Blueprint.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Blueprint.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -32,7 +32,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; @JsonIgnoreProperties(ignoreUnknown = true) @@ -40,7 +39,6 @@ public class Blueprint { private static final ObjectMapper YAML_MAPPER = new ObjectMapper(new YAMLFactory()); - static { YAML_MAPPER.registerModule(new Jdk8Module()); } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintInput.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintInput.java index 972c86b..c708098 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintInput.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintInput.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -55,8 +55,9 @@ public class BlueprintInput { } @JsonCreator - public BlueprintInput(@JsonProperty("type") String type, @JsonProperty("default") Object defaultValue, - @JsonProperty("description") String description) { + public BlueprintInput(@JsonProperty("type") String type, + @JsonProperty("default") Object defaultValue, + @JsonProperty("description") String description) { // Case where there is no default and no type --> Type should be ANY if (defaultValue == null && type == null) { @@ -77,27 +78,33 @@ public class BlueprintInput { // Cases where there is a default and a type else { switch (BlueprintInput.Type.valueOf(type.toString().toUpperCase())) { - case ANY: - throw new IllegalArgumentException("Cannot specify type ANY (leave blank instead to get ANY type)"); - case BOOLEAN: - if (defaultValue != null && !(defaultValue instanceof Boolean)) - throw new IllegalArgumentException("default value does not match specified type"); - this.type = BlueprintInput.Type.BOOLEAN; - break; - case INTEGER: - if (defaultValue != null && !(defaultValue instanceof Integer)) - throw new IllegalArgumentException("default value does not match specified type"); - this.type = BlueprintInput.Type.INTEGER; - break; - case STRING: - if (defaultValue != null && !(defaultValue instanceof String)) - throw new IllegalArgumentException("default value does not match specified type"); - - this.type = BlueprintInput.Type.STRING; - break; - default: - this.type = Type.ANY; - break; + case ANY: + throw new IllegalArgumentException( + "Cannot specify type ANY (leave blank instead to get ANY type)"); + case BOOLEAN: + if (defaultValue != null && !(defaultValue instanceof Boolean)) { + throw new IllegalArgumentException( + "default value does not match specified type"); + } + this.type = BlueprintInput.Type.BOOLEAN; + break; + case INTEGER: + if (defaultValue != null && !(defaultValue instanceof Integer)) { + throw new IllegalArgumentException( + "default value does not match specified type"); + } + this.type = BlueprintInput.Type.INTEGER; + break; + case STRING: + if (defaultValue != null && !(defaultValue instanceof String)) { + throw new IllegalArgumentException( + "default value does not match specified type"); + } + this.type = BlueprintInput.Type.STRING; + break; + default: + this.type = Type.ANY; + break; } } @@ -135,7 +142,8 @@ public class BlueprintInput { final BlueprintInput obj = (BlueprintInput) o; return obj.getDefaultValue().equals(getDefaultValue()) - && obj.getDescriptionValue().equals(getDescriptionValue()) && obj.getType().equals(getType()); + && obj.getDescriptionValue().equals(getDescriptionValue()) + && obj.getType().equals(getType()); } return false; @@ -143,6 +151,7 @@ public class BlueprintInput { @Override public String toString() { - return "{" + "type: " + getType() + ",default: " + getDefault() + ",description: " + getDescription() + "}"; + return "{" + "type: " + getType() + ",default: " + getDefault() + ",description: " + + getDescription() + "}"; } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintResponse.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintResponse.java index 7c09ea6..39e7956 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintResponse.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/BlueprintResponse.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -40,7 +40,7 @@ public class BlueprintResponse { @JsonCreator public BlueprintResponse(@JsonProperty("typeName") String typeName, - @JsonProperty("typeVersion") Integer typeVersion, @JsonProperty("typeId") String typeId) { + @JsonProperty("typeVersion") Integer typeVersion, @JsonProperty("typeId") String typeId) { this.typeName = typeName; this.typeVersion = typeVersion; @@ -73,6 +73,7 @@ public class BlueprintResponse { @Override public String toString() { - return "BlueprintResponse [typeName=" + typeName + ", typeVersion=" + typeVersion + ", typeId=" + typeId + "]"; + return "BlueprintResponse [typeName=" + typeName + ", typeVersion=" + typeVersion + + ", typeId=" + typeId + "]"; } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/InventoryProperty.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/InventoryProperty.java index 4f0bf8e..627f417 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/InventoryProperty.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/InventoryProperty.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -34,8 +34,9 @@ public class InventoryProperty { public Link dcaeServiceQueryLink; @JsonCreator - public InventoryProperty(@JsonProperty("count") Integer count, @JsonProperty("propertyValue") String propertyValue, - @JsonProperty("dcaeServiceQueryLink") Link dcaeServiceQueryLink) { + public InventoryProperty(@JsonProperty("count") Integer count, + @JsonProperty("propertyValue") String propertyValue, + @JsonProperty("dcaeServiceQueryLink") Link dcaeServiceQueryLink) { this.count = count; this.propertyValue = propertyValue; this.dcaeServiceQueryLink = dcaeServiceQueryLink; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Link.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Link.java index 986e574..155982c 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Link.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Link.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -41,10 +41,11 @@ public class Link { public String type; @JsonCreator - public Link(@JsonProperty("title") String title, @JsonProperty("href") String href, @JsonProperty("rel") String rel, - @JsonProperty("uri") String uri, @JsonProperty("uriBuilder") UriBuilder uriBuilder, - @JsonProperty("rels") Collection<String> rels, @JsonProperty("params") Map<String, String> params, - @JsonProperty("type") String type) { + public Link(@JsonProperty("title") String title, @JsonProperty("href") String href, + @JsonProperty("rel") String rel, @JsonProperty("uri") String uri, + @JsonProperty("uriBuilder") UriBuilder uriBuilder, + @JsonProperty("rels") Collection<String> rels, + @JsonProperty("params") Map<String, String> params, @JsonProperty("type") String type) { this.title = title; this.href = href; this.rel = rel; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Service.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Service.java index dc1daa7..7791a21 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Service.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/Service.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -65,14 +65,15 @@ public class Service { public Boolean helmStatus; /** Consul service health status */ private String healthStatus; - + @JsonCreator - public Service(@JsonProperty("serviceId") String serviceId, @JsonProperty("selfLink") Link selfLink, - @JsonProperty("created") String created, @JsonProperty("modified") String modified, - @JsonProperty("typeLink") Link typeLink, @JsonProperty("vnfId") String vnfId, - @JsonProperty("vnfLink") Link vnfLink, @JsonProperty("vnfType") String vnfType, - @JsonProperty("vnfLocation") String vnfLocation, @JsonProperty("deploymentRef") String deploymentRef, - @JsonProperty("components") Collection<ServiceComponent> components) { + public Service(@JsonProperty("serviceId") String serviceId, + @JsonProperty("selfLink") Link selfLink, @JsonProperty("created") String created, + @JsonProperty("modified") String modified, @JsonProperty("typeLink") Link typeLink, + @JsonProperty("vnfId") String vnfId, @JsonProperty("vnfLink") Link vnfLink, + @JsonProperty("vnfType") String vnfType, @JsonProperty("vnfLocation") String vnfLocation, + @JsonProperty("deploymentRef") String deploymentRef, + @JsonProperty("components") Collection<ServiceComponent> components) { this.serviceId = serviceId; this.selfLink = selfLink; this.created = created; @@ -134,10 +135,10 @@ public class Service { // end. public boolean contains(String searchString) { if (StringUtils.containsIgnoreCase(this.getDeploymentRef(), searchString) - || StringUtils.containsIgnoreCase(this.getServiceId(), searchString) - || StringUtils.containsIgnoreCase(this.getCreated(), searchString) - || StringUtils.containsIgnoreCase(this.getModified(), searchString) - || StringUtils.containsIgnoreCase(this.getTenant(), searchString)) { + || StringUtils.containsIgnoreCase(this.getServiceId(), searchString) + || StringUtils.containsIgnoreCase(this.getCreated(), searchString) + || StringUtils.containsIgnoreCase(this.getModified(), searchString) + || StringUtils.containsIgnoreCase(this.getTenant(), searchString)) { return true; } return false; @@ -197,12 +198,12 @@ public class Service { public void setHelmStatus(Boolean helmStatus) { this.helmStatus = helmStatus; } - + public String getHealthStatus() { - return this.healthStatus; + return this.healthStatus; } - + public void setHealthStatus(String healthStatus) { - this.healthStatus = healthStatus; + this.healthStatus = healthStatus; } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceComponent.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceComponent.java index a2e525f..2b349b8 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceComponent.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceComponent.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -52,10 +52,12 @@ public class ServiceComponent { @JsonCreator public ServiceComponent(@JsonProperty("componentId") String componentId, - @JsonProperty("componentLink") Link componentLink, @JsonProperty("created") String created, - @JsonProperty("modified") String modified, @JsonProperty("componentType") String componentType, - @JsonProperty("componentSource") String componentSource, @JsonProperty("status") String status, - @JsonProperty("location") String location, @JsonProperty("shareable") Integer shareable) { + @JsonProperty("componentLink") Link componentLink, @JsonProperty("created") String created, + @JsonProperty("modified") String modified, + @JsonProperty("componentType") String componentType, + @JsonProperty("componentSource") String componentSource, + @JsonProperty("status") String status, @JsonProperty("location") String location, + @JsonProperty("shareable") Integer shareable) { this.componentId = componentId; this.componentLink = componentLink; this.created = created; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceList.java index e440477..992b21a 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceList.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -38,8 +38,9 @@ public class ServiceList extends ECTransportModel { public final PaginationLinks paginationLinks; @JsonCreator - public ServiceList(@JsonProperty("items") Collection<Service> items, @JsonProperty("totalCount") Integer totalCount, - @JsonProperty("links") PaginationLinks paginationLinks) { + public ServiceList(@JsonProperty("items") Collection<Service> items, + @JsonProperty("totalCount") Integer totalCount, + @JsonProperty("links") PaginationLinks paginationLinks) { this.items = items; this.totalCount = totalCount; this.paginationLinks = paginationLinks; @@ -52,9 +53,9 @@ public class ServiceList extends ECTransportModel { @JsonCreator public PaginationLinks(@JsonProperty("previousLink") Link previousLink, - @JsonProperty("nextLink") Link nextLink) { + @JsonProperty("nextLink") Link nextLink) { this.previousLink = previousLink; this.nextLink = nextLink; } } -}
\ No newline at end of file +} diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceQueryParams.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceQueryParams.java index 62fdfd0..6ad9c6c 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceQueryParams.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceQueryParams.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -42,8 +42,8 @@ public class ServiceQueryParams { this.created = null; } - private ServiceQueryParams(String typeId, String vnfId, String vnfType, String vnfLocation, String componentType, - Boolean shareable, String created) { + private ServiceQueryParams(String typeId, String vnfId, String vnfType, String vnfLocation, + String componentType, Boolean shareable, String created) { this.typeId = typeId; this.vnfId = vnfId; this.vnfType = vnfType; @@ -98,7 +98,8 @@ public class ServiceQueryParams { } public ServiceQueryParams build() { - return new ServiceQueryParams(typeId, vnfId, vnfType, vnfLocation, componentType, shareable, created); + return new ServiceQueryParams(typeId, vnfId, vnfType, vnfLocation, componentType, + shareable, created); } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRef.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRef.java index 7b70e1c..37f4113 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRef.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRef.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -33,31 +33,28 @@ public class ServiceRef { /** Last modified date of the Service */ public final String updated_at; public final String tenant_name = ""; - + @JsonCreator - public ServiceRef( - @JsonProperty("id") String serviceId, - @JsonProperty("created_at") String created, - @JsonProperty("updated_at") String modified - ) { + public ServiceRef(@JsonProperty("id") String serviceId, + @JsonProperty("created_at") String created, @JsonProperty("updated_at") String modified) { this.id = serviceId; this.created_at = created; this.updated_at = modified; } -/* - public String getServiceId() { - return serviceId; - } - - public String getCreated() { - return created; - } - - public String getModified() { - return modified; - } -*/ + /* + * public String getServiceId() { + * return serviceId; + * } + * + * public String getCreated() { + * return created; + * } + * + * public String getModified() { + * return modified; + * } + */ /* * private ServiceRef ( String serviceId, String created, String modified) { * this.serviceId = serviceId; this.created = created; this.modified = modified; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRefList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRefList.java index def0e0a..f819e47 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRefList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRefList.java @@ -2,29 +2,27 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; import java.util.Collection; -import org.onap.ccsdk.dashboard.model.cloudify.CloudifyDeployedTenant; - import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -32,12 +30,12 @@ public class ServiceRefList { /** Number of Service objects */ public final Integer totalCount; /** Collection containing all of the returned Service objects */ - //public final Collection<CloudifyDeployedTenant> items; + // public final Collection<CloudifyDeployedTenant> items; public final Collection<ServiceRef> items; @JsonCreator public ServiceRefList(@JsonProperty("items") Collection<ServiceRef> items, - @JsonProperty("totalCount") Integer totalCount) { + @JsonProperty("totalCount") Integer totalCount) { this.items = items; this.totalCount = totalCount; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceType.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceType.java index f1351fc..c466bb8 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceType.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceType.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -126,7 +126,7 @@ public class ServiceType { private Optional<Boolean> canDeploy = Optional.of(true); public Builder(String owner, String typeName, Integer typeVersion, String blueprintTemplate, - String blueprintDescription, String application, String component) { + String blueprintDescription, String application, String component) { this.owner = owner; this.typeName = typeName; this.typeVersion = typeVersion; @@ -192,17 +192,20 @@ public class ServiceType { } @JsonCreator - public ServiceType(@JsonProperty("owner") String owner, @JsonProperty("typeName") String typeName, - @JsonProperty("typeVersion") Integer typeVersion, - @JsonProperty("blueprintTemplate") String blueprintTemplate, - @JsonProperty("application") String application, @JsonProperty("component") String component, - @JsonProperty("serviceIds") Collection<String> serviceIds, - @JsonProperty("vnfTypes") Collection<String> vnfTypes, - @JsonProperty("serviceLocations") Collection<String> serviceLocations, - @JsonProperty("asdcServiceId") String asdcServiceId, @JsonProperty("asdcResourceId") String asdcResourceId, - @JsonProperty("asdcServiceURL") String asdcServiceURL, @JsonProperty("typeId") String typeId, - @JsonProperty("selfLink") Link selfLink, @JsonProperty("created") String created, - @JsonProperty("deactivated") String deactivated, @JsonProperty("canDeploy") Boolean canDeploy) { + public ServiceType(@JsonProperty("owner") String owner, + @JsonProperty("typeName") String typeName, @JsonProperty("typeVersion") Integer typeVersion, + @JsonProperty("blueprintTemplate") String blueprintTemplate, + @JsonProperty("application") String application, + @JsonProperty("component") String component, + @JsonProperty("serviceIds") Collection<String> serviceIds, + @JsonProperty("vnfTypes") Collection<String> vnfTypes, + @JsonProperty("serviceLocations") Collection<String> serviceLocations, + @JsonProperty("asdcServiceId") String asdcServiceId, + @JsonProperty("asdcResourceId") String asdcResourceId, + @JsonProperty("asdcServiceURL") String asdcServiceURL, + @JsonProperty("typeId") String typeId, @JsonProperty("selfLink") Link selfLink, + @JsonProperty("created") String created, @JsonProperty("deactivated") String deactivated, + @JsonProperty("canDeploy") Boolean canDeploy) { if (owner == null) throw new IllegalArgumentException("owner cannot be null"); @@ -222,7 +225,8 @@ public class ServiceType { this.serviceIds = (serviceIds == null) ? new LinkedList<String>() : serviceIds; this.vnfTypes = (vnfTypes == null) ? new LinkedList<String>() : vnfTypes; - this.serviceLocations = (serviceLocations == null) ? new LinkedList<String>() : serviceLocations; + this.serviceLocations = + (serviceLocations == null) ? new LinkedList<String>() : serviceLocations; this.asdcServiceId = Optional.ofNullable(asdcServiceId); this.asdcResourceId = Optional.ofNullable(asdcResourceId); @@ -237,9 +241,10 @@ public class ServiceType { this.blueprintInputs = bpObj.getInputs(); this.blueprintDescription = bpObj.getDescription(); } catch (BlueprintParseException e) { - //this.blueprintDescription = ""; - //throw new RuntimeException( - //"Error while parsing blueprint template for " + this.typeName + " " + this.typeVersion, e); + // this.blueprintDescription = ""; + // throw new RuntimeException( + // "Error while parsing blueprint template for " + this.typeName + " " + + // this.typeVersion, e); } } @@ -331,32 +336,34 @@ public class ServiceType { final ServiceType serviceType = (ServiceType) obj; return (serviceType.getAsdcResourceId().equals(getAsdcResourceId()) - && serviceType.getAsdcServiceId().equals(getAsdcServiceId()) - && serviceType.getAsdcServiceURL().equals(getAsdcServiceURL()) - && serviceType.getBlueprintTemplate().equals(getBlueprintTemplate()) - && serviceType.getCreated().equals(getCreated()) - && serviceType.getDeactivated().equals(getDeactivated()) && serviceType.getOwner().equals(getOwner()) - && serviceType.getSelfLink().equals(getSelfLink()) - && serviceType.getServiceIds().equals(getServiceIds()) - && serviceType.getServiceLocations().equals(getServiceLocations()) - && serviceType.getTypeId().equals(getTypeId()) && serviceType.getTypeName().equals(getTypeName()) - && serviceType.getTypeVersion().equals(getTypeVersion()) - && serviceType.getVnfTypes().equals(getVnfTypes()) - && serviceType.getApplication().equals(getApplication()) - && serviceType.getComponent().equals(getComponent())); + && serviceType.getAsdcServiceId().equals(getAsdcServiceId()) + && serviceType.getAsdcServiceURL().equals(getAsdcServiceURL()) + && serviceType.getBlueprintTemplate().equals(getBlueprintTemplate()) + && serviceType.getCreated().equals(getCreated()) + && serviceType.getDeactivated().equals(getDeactivated()) + && serviceType.getOwner().equals(getOwner()) + && serviceType.getSelfLink().equals(getSelfLink()) + && serviceType.getServiceIds().equals(getServiceIds()) + && serviceType.getServiceLocations().equals(getServiceLocations()) + && serviceType.getTypeId().equals(getTypeId()) + && serviceType.getTypeName().equals(getTypeName()) + && serviceType.getTypeVersion().equals(getTypeVersion()) + && serviceType.getVnfTypes().equals(getVnfTypes()) + && serviceType.getApplication().equals(getApplication()) + && serviceType.getComponent().equals(getComponent())); } // Used for back end search, only searches the fields displayed in the front // end. public boolean contains(String searchString) { if (StringUtils.containsIgnoreCase(this.getOwner(), searchString) - || StringUtils.containsIgnoreCase(this.getBlueprintDescription(), searchString) - || StringUtils.containsIgnoreCase(this.getTypeId().get(), searchString) - || StringUtils.containsIgnoreCase(this.getTypeName(), searchString) - || StringUtils.containsIgnoreCase(Integer.toString(this.getTypeVersion()), searchString) - || StringUtils.containsIgnoreCase(this.getCreated().get(), searchString) - || StringUtils.containsIgnoreCase(this.getComponent(), searchString) - || StringUtils.containsIgnoreCase(this.getApplication(), searchString)) { + || StringUtils.containsIgnoreCase(this.getBlueprintDescription(), searchString) + || StringUtils.containsIgnoreCase(this.getTypeId().get(), searchString) + || StringUtils.containsIgnoreCase(this.getTypeName(), searchString) + || StringUtils.containsIgnoreCase(Integer.toString(this.getTypeVersion()), searchString) + || StringUtils.containsIgnoreCase(this.getCreated().get(), searchString) + || StringUtils.containsIgnoreCase(this.getComponent(), searchString) + || StringUtils.containsIgnoreCase(this.getApplication(), searchString)) { return true; } return false; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeList.java index 938ec6d..3f4aee4 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeList.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -39,7 +39,8 @@ public class ServiceTypeList extends ECTransportModel { @JsonCreator public ServiceTypeList(@JsonProperty("items") Collection<ServiceType> items, - @JsonProperty("totalCount") Integer totalCount, @JsonProperty("links") PaginationLinks paginationLinks) { + @JsonProperty("totalCount") Integer totalCount, + @JsonProperty("links") PaginationLinks paginationLinks) { this.items = items; this.totalCount = totalCount; this.paginationLinks = paginationLinks; @@ -52,7 +53,7 @@ public class ServiceTypeList extends ECTransportModel { @JsonCreator public PaginationLinks(@JsonProperty("previousLink") Link previousLink, - @JsonProperty("nextLink") Link nextLink) { + @JsonProperty("nextLink") Link nextLink) { this.previousLink = previousLink; this.nextLink = nextLink; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeQueryParams.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeQueryParams.java index 7b733ee..73a3ec4 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeQueryParams.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeQueryParams.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -36,7 +36,8 @@ public class ServiceTypeQueryParams { private final String owner; // Non-instantiable - private ServiceTypeQueryParams(org.onap.ccsdk.dashboard.model.inventory.ServiceTypeSummary.Builder builder) { + private ServiceTypeQueryParams( + org.onap.ccsdk.dashboard.model.inventory.ServiceTypeSummary.Builder builder) { this.typeName = null; this.onlyLatest = null; this.onlyActive = null; @@ -50,9 +51,9 @@ public class ServiceTypeQueryParams { this.owner = null; } - private ServiceTypeQueryParams(String typeName, Boolean onlyLatest, Boolean onlyActive, String vnfType, - String serviceId, String serviceLocation, String asdcServiceId, String asdcResourceId, String application, - String component, String owner) { + private ServiceTypeQueryParams(String typeName, Boolean onlyLatest, Boolean onlyActive, + String vnfType, String serviceId, String serviceLocation, String asdcServiceId, + String asdcResourceId, String application, String component, String owner) { this.typeName = typeName; this.onlyLatest = onlyLatest; this.onlyActive = onlyActive; @@ -83,7 +84,7 @@ public class ServiceTypeQueryParams { this.owner = owner; return this; } - + public Builder typeName(String typeName) { this.typeName = typeName; return this; @@ -128,14 +129,15 @@ public class ServiceTypeQueryParams { this.application = application; return this; } - + public Builder component(String component) { this.component = component; return this; } + public ServiceTypeQueryParams build() { - return new ServiceTypeQueryParams(typeName, onlyLatest, onlyActive, vnfType, serviceId, serviceLocation, - asdcServiceId, asdcResourceId, application, component, owner); + return new ServiceTypeQueryParams(typeName, onlyLatest, onlyActive, vnfType, serviceId, + serviceLocation, asdcServiceId, asdcResourceId, application, component, owner); } } @@ -178,7 +180,7 @@ public class ServiceTypeQueryParams { public String getComponent() { return this.component; } - + public String getOwner() { return this.owner; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeRequest.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeRequest.java index 84efcb8..5c64373 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeRequest.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeRequest.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -69,24 +69,27 @@ public class ServiceTypeRequest { public Optional<String> asdcServiceURL; @JsonCreator - public ServiceTypeRequest(@JsonProperty("owner") String owner, @JsonProperty("typeName") String typeName, - @JsonProperty("typeVersion") Integer typeVersion, - @JsonProperty("blueprintTemplate") String blueprintTemplate, - @JsonProperty("application") String application, @JsonProperty("component") String component, - @JsonProperty("serviceIds") Collection<String> serviceIds, - @JsonProperty("vnfTypes") Collection<String> vnfTypes, - @JsonProperty("serviceLocations") Collection<String> serviceLocations, - @JsonProperty("asdcServiceId") String asdcServiceId, @JsonProperty("asdcResourceId") String asdcResourceId, - @JsonProperty("asdcServiceURL") String asdcServiceURL) { - this(owner, typeName, typeVersion, blueprintTemplate, application, component, serviceIds, vnfTypes, - serviceLocations, Optional.ofNullable(asdcServiceId), Optional.ofNullable(asdcResourceId), - Optional.ofNullable(asdcServiceURL)); + public ServiceTypeRequest(@JsonProperty("owner") String owner, + @JsonProperty("typeName") String typeName, @JsonProperty("typeVersion") Integer typeVersion, + @JsonProperty("blueprintTemplate") String blueprintTemplate, + @JsonProperty("application") String application, + @JsonProperty("component") String component, + @JsonProperty("serviceIds") Collection<String> serviceIds, + @JsonProperty("vnfTypes") Collection<String> vnfTypes, + @JsonProperty("serviceLocations") Collection<String> serviceLocations, + @JsonProperty("asdcServiceId") String asdcServiceId, + @JsonProperty("asdcResourceId") String asdcResourceId, + @JsonProperty("asdcServiceURL") String asdcServiceURL) { + this(owner, typeName, typeVersion, blueprintTemplate, application, component, serviceIds, + vnfTypes, serviceLocations, Optional.ofNullable(asdcServiceId), + Optional.ofNullable(asdcResourceId), Optional.ofNullable(asdcServiceURL)); } - public ServiceTypeRequest(String owner, String typeName, Integer typeVersion, String blueprintTemplate, - String application, String component, Collection<String> serviceIds, Collection<String> vnfTypes, - Collection<String> serviceLocations, Optional<String> asdcServiceId, Optional<String> asdcResourceId, - Optional<String> asdcServiceURL) { + public ServiceTypeRequest(String owner, String typeName, Integer typeVersion, + String blueprintTemplate, String application, String component, + Collection<String> serviceIds, Collection<String> vnfTypes, + Collection<String> serviceLocations, Optional<String> asdcServiceId, + Optional<String> asdcResourceId, Optional<String> asdcServiceURL) { this.owner = owner; this.typeName = typeName; this.typeVersion = typeVersion; @@ -100,9 +103,9 @@ public class ServiceTypeRequest { this.asdcResourceId = asdcResourceId; this.asdcServiceURL = asdcServiceURL; } - - public ServiceTypeRequest(String owner, String typeName, Integer typeVersion, String blueprintTemplate, - String application, String component) { + + public ServiceTypeRequest(String owner, String typeName, Integer typeVersion, + String blueprintTemplate, String application, String component) { this.owner = owner; this.typeName = typeName; this.typeVersion = typeVersion; @@ -112,17 +115,22 @@ public class ServiceTypeRequest { } public static ServiceTypeRequest from(ServiceType serviceType) { - return new ServiceTypeRequest(serviceType.getOwner(), serviceType.getTypeName(), serviceType.getTypeVersion(), - serviceType.getBlueprintTemplate(), serviceType.getApplication(), serviceType.getComponent(), - serviceType.getServiceIds(), serviceType.getVnfTypes(), serviceType.getServiceLocations(), - serviceType.getAsdcServiceId(), serviceType.getAsdcResourceId(), serviceType.getAsdcServiceURL()); - } -/* - public static ServiceTypeRequest from(ServiceType serviceType) { - return new ServiceTypeRequest(serviceType.getOwner(), serviceType.getTypeName(), serviceType.getTypeVersion(), - serviceType.getBlueprintTemplate(), serviceType.getApplication(), serviceType.getComponent()); + return new ServiceTypeRequest(serviceType.getOwner(), serviceType.getTypeName(), + serviceType.getTypeVersion(), serviceType.getBlueprintTemplate(), + serviceType.getApplication(), serviceType.getComponent(), serviceType.getServiceIds(), + serviceType.getVnfTypes(), serviceType.getServiceLocations(), + serviceType.getAsdcServiceId(), serviceType.getAsdcResourceId(), + serviceType.getAsdcServiceURL()); } -*/ + + /* + * public static ServiceTypeRequest from(ServiceType serviceType) { + * return new ServiceTypeRequest(serviceType.getOwner(), serviceType.getTypeName(), + * serviceType.getTypeVersion(), + * serviceType.getBlueprintTemplate(), serviceType.getApplication(), + * serviceType.getComponent()); + * } + */ public String getBlueprintTemplate() { return this.blueprintTemplate; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeServiceMap.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeServiceMap.java index 3b2f541..2e5f5b5 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeServiceMap.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeServiceMap.java @@ -2,19 +2,19 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ @@ -31,7 +31,7 @@ public class ServiceTypeServiceMap { @JsonCreator public ServiceTypeServiceMap(@JsonProperty("serviceTypeId") String serviceTypeId, - @JsonProperty("serviceRefList") Object serviceRefList) { + @JsonProperty("serviceRefList") Object serviceRefList) { this.serviceTypeId = serviceTypeId; this.serviceRefList = serviceRefList; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummary.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummary.java index 877a8ed..714ef72 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummary.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummary.java @@ -2,22 +2,22 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; @@ -36,7 +36,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; */ public class ServiceTypeSummary { - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.lang.Object#toString() */ @Override @@ -57,33 +59,29 @@ public class ServiceTypeSummary { /** controller application name */ private final String application; - + /** onboarding component name */ private final String component; - + /** Unique identifier for this ServiceType */ private final Optional<String> typeId; /** Creation date of the ServiceType */ private final Optional<String> created; - + /** internal role based setting */ private Optional<Boolean> canDeploy; - + private ServiceRefCfyList deployments; - + private Optional<Boolean> expanded; - + @JsonCreator - public ServiceTypeSummary( - @JsonProperty("owner") String owner, - @JsonProperty("typeName") String typeName, - @JsonProperty("typeVersion") Integer typeVersion, - @JsonProperty("application") String application, - @JsonProperty("component") String component, - @JsonProperty("typeId") String typeId, - @JsonProperty("created") String created, - @JsonProperty("canDeploy") Boolean canDeploy) { + public ServiceTypeSummary(@JsonProperty("owner") String owner, + @JsonProperty("typeName") String typeName, @JsonProperty("typeVersion") Integer typeVersion, + @JsonProperty("application") String application, + @JsonProperty("component") String component, @JsonProperty("typeId") String typeId, + @JsonProperty("created") String created, @JsonProperty("canDeploy") Boolean canDeploy) { this.owner = owner; this.typeName = typeName; @@ -106,7 +104,7 @@ public class ServiceTypeSummary { this.created = builder.created; this.canDeploy = builder.canDeploy; } - + public static class Builder { private String owner; private String typeName; @@ -116,7 +114,7 @@ public class ServiceTypeSummary { private Optional<String> typeId = Optional.empty(); private Optional<String> created = Optional.empty(); private Optional<Boolean> canDeploy = Optional.empty(); - + public Builder owner(String owner) { this.owner = owner; return this; @@ -131,21 +129,22 @@ public class ServiceTypeSummary { this.typeVersion = typeVersion; return this; } - + public Builder application(String application) { this.application = application; return this; } - + public Builder component(String component) { this.component = component; return this; } + public ServiceTypeSummary build() { return new ServiceTypeSummary(this); } } - + public String getTypeName() { return typeName; } @@ -180,7 +179,7 @@ public class ServiceTypeSummary { public void setCanDeploy(Optional<Boolean> canDeploy) { this.canDeploy = canDeploy; - } + } public ServiceRefCfyList getDeployments() { return deployments; @@ -189,23 +188,25 @@ public class ServiceTypeSummary { public void setDeployments(ServiceRefCfyList deployments) { this.deployments = deployments; } - + // Used for back end search, only searches the fields displayed in the front // end. public boolean contains(String searchString) { if (StringUtils.containsIgnoreCase(this.getOwner(), searchString) - || StringUtils.containsIgnoreCase(this.getTypeId().get(), searchString) - || StringUtils.containsIgnoreCase(this.getTypeName(), searchString) - || StringUtils.containsIgnoreCase(Integer.toString(this.getTypeVersion()), searchString) - || StringUtils.containsIgnoreCase(this.getCreated().get(), searchString) - || StringUtils.containsIgnoreCase(this.getComponent(), searchString) - || StringUtils.containsIgnoreCase(this.getApplication(), searchString)) { + || StringUtils.containsIgnoreCase(this.getTypeId().get(), searchString) + || StringUtils.containsIgnoreCase(this.getTypeName(), searchString) + || StringUtils.containsIgnoreCase(Integer.toString(this.getTypeVersion()), searchString) + || StringUtils.containsIgnoreCase(this.getCreated().get(), searchString) + || StringUtils.containsIgnoreCase(this.getComponent(), searchString) + || StringUtils.containsIgnoreCase(this.getApplication(), searchString)) { return true; } return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.lang.Object#hashCode() */ @Override @@ -216,7 +217,9 @@ public class ServiceTypeSummary { return result; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.lang.Object#equals(java.lang.Object) */ @Override diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummaryList.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummaryList.java index 149e75b..dba54aa 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummaryList.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeSummaryList.java @@ -2,19 +2,19 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * *******************************************************************************/ @@ -37,8 +37,7 @@ public class ServiceTypeSummaryList extends ECTransportModel { public final PaginationLinks paginationLinks; @JsonCreator - public ServiceTypeSummaryList( - @JsonProperty("items") Collection<ServiceTypeSummary> items, + public ServiceTypeSummaryList(@JsonProperty("items") Collection<ServiceTypeSummary> items, @JsonProperty("totalCount") Integer totalCount, @JsonProperty("links") PaginationLinks paginationLinks) { this.items = items; @@ -53,7 +52,7 @@ public class ServiceTypeSummaryList extends ECTransportModel { @JsonCreator public PaginationLinks(@JsonProperty("previousLink") Link previousLink, - @JsonProperty("nextLink") Link nextLink) { + @JsonProperty("nextLink") Link nextLink) { this.previousLink = previousLink; this.nextLink = nextLink; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeUploadRequest.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeUploadRequest.java index 2ba8aa7..6585a87 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeUploadRequest.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceTypeUploadRequest.java @@ -2,28 +2,25 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.model.inventory; -import java.util.Collection; -import java.util.Optional; - import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -43,10 +40,11 @@ public class ServiceTypeUploadRequest { public String component; @JsonCreator - public ServiceTypeUploadRequest(@JsonProperty("owner") String owner, @JsonProperty("typeName") String typeName, - @JsonProperty("typeVersion") Integer typeVersion, - @JsonProperty("blueprintTemplate") String blueprintTemplate, - @JsonProperty("application") String application, @JsonProperty("component") String component) { + public ServiceTypeUploadRequest(@JsonProperty("owner") String owner, + @JsonProperty("typeName") String typeName, @JsonProperty("typeVersion") Integer typeVersion, + @JsonProperty("blueprintTemplate") String blueprintTemplate, + @JsonProperty("application") String application, + @JsonProperty("component") String component) { this.owner = owner; this.typeName = typeName; this.typeVersion = typeVersion; @@ -57,8 +55,8 @@ public class ServiceTypeUploadRequest { public static ServiceTypeUploadRequest from(ServiceType serviceType) { return new ServiceTypeUploadRequest(serviceType.getOwner(), serviceType.getTypeName(), - serviceType.getTypeVersion(), serviceType.getBlueprintTemplate(), serviceType.getApplication(), - serviceType.getComponent()); + serviceType.getTypeVersion(), serviceType.getBlueprintTemplate(), + serviceType.getApplication(), serviceType.getComponent()); } public String getBlueprintTemplate() { diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyClient.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyClient.java index 04a084e..7dbef22 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyClient.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyClient.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.util.List; @@ -39,8 +39,9 @@ import org.onap.ccsdk.dashboard.model.cloudify.CloudifyExecutionRequest; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyNodeInstanceIdList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyNodeInstanceList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyPluginList; -import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenantList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifySecret; +import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenantList; +import org.springframework.web.client.HttpStatusCodeException; /** * @author rp5662 @@ -49,17 +50,18 @@ import org.onap.ccsdk.dashboard.model.cloudify.CloudifySecret; public interface CloudifyClient { /** - * Get the execution logs + * Get the execution logs. * */ - public CloudifyEventList getEventlogs(String execution_id, String tenant); + public CloudifyEventList getEventlogs(String executionId, String tenant) + throws Exception; /** * Gets the list of Cloudify tenants. * * @return CloudifyTenantList */ - public CloudifyTenantList getTenants(); + public CloudifyTenantList getTenants() throws Exception; /** * Starts a Cloudify execution. @@ -67,66 +69,73 @@ public interface CloudifyClient { * @param execution Execution details * @return CloudifyExecution */ - public CloudifyExecution startExecution(CloudifyExecutionRequest execution); + public CloudifyExecution startExecution(CloudifyExecutionRequest execution) + throws Exception; /** * Deletes the Cloudify execution with the specified ids. * - * @param executionId execution ID + * @param executionId execution ID * @param deploymentId Deployment ID - * @param action either "cancel" or "force-cancel" + * @param action either "cancel" or "force-cancel" * @return Status code; e.g., 200, 202, 204. */ - public CloudifyExecution cancelExecution(final String executionId, Map<String, String> parameters, - final String tenant); + public CloudifyExecution cancelExecution(final String executionId, + Map<String, String> parameters, final String tenant) + throws Exception; /** * Get the node-instance-id. * * @param deploymentId deployment ID - * @param nodeId node ID - * @param tenant tenant name + * @param nodeId node ID + * @param tenant tenant name * @return CloudifyNodeInstanceList */ - public CloudifyNodeInstanceIdList getNodeInstanceId(String deploymentId, String nodeId, String tenant); + public CloudifyNodeInstanceIdList getNodeInstanceId(String deploymentId, String nodeId, + String tenant) throws Exception; /** * Get the node-instance-id. * * @param deploymentId deployment ID - * @param tenant tenant name + * @param tenant tenant name * * @return CloudifyNodeInstanceList */ - public CloudifyNodeInstanceIdList getNodeInstanceId(String id, String tenant); + public CloudifyNodeInstanceIdList getNodeInstanceId(String id, String tenant) + throws Exception; /** - * Query execution information for a deployment ID passed as input + * Query execution information for a deployment ID passed as input. * * @param deploymentId * @param tenant * @return */ - public CloudifyExecutionList getExecutions(final String deploymentId, final String tenant); + public CloudifyExecutionList getExecutions(final String deploymentId, final String tenant) + throws Exception; /** - * Query execution summary for a deployment ID passed as input + * Query execution summary for a deployment ID passed as input. * * @param deploymentId * @param tenant * @return */ - public CloudifyExecutionList getExecutionsSummary(final String deploymentId, final String tenant); + public CloudifyExecutionList getExecutionsSummary(final String deploymentId, + final String tenant) throws Exception; /** * Get cloudify node-instance-revisions. * * @param deploymentId deployment ID - * @param nodeId node ID - * @param tenant tenant name + * @param nodeId node ID + * @param tenant tenant name * @return CloudifyNodeInstanceList */ - public CloudifyNodeInstanceList getNodeInstanceVersion(String deploymentId, String nodeId, String tenant); + public CloudifyNodeInstanceList getNodeInstanceVersion(String deploymentId, String nodeId, + String tenant) throws Exception; /** * Get cloudify node-instance-revisions @@ -135,65 +144,74 @@ public interface CloudifyClient { * @param tenant * @return */ - public CloudifyNodeInstanceList getNodeInstanceVersion(String bp_id, String tenant); + public CloudifyNodeInstanceList getNodeInstanceVersion(String bp_id, String tenant) + throws Exception; /** - * Query deployment object from cloudify + * Query deployment object from cloudify. * * @param id * @param tenant * @return */ - public CloudifyDeploymentList getDeployment(String id, String tenant); + public CloudifyDeploymentList getDeployment(String id, String tenant) + throws Exception; /** - * Query deployment object from cloudify + * Query deployment object from cloudify. * * @param id * @return */ - public CloudifyDeploymentList getDeployment(String id); + public CloudifyDeploymentList getDeployment(String id) + throws Exception; /** - * Query deployments from cloudify + * Query deployments from cloudify. * */ public CloudifyDeploymentList getDeployments(String tenant, int pageSize, int pageOffset); - + /** * Query deployments from cloudify and filter based * on given input key and value * At the moment only supports key "contains" not "equals" - * For value it supports only "equals" not "contains" + * For value it supports only "equals" not "contains". + * * @param inputKey * @param inputValue - * @param returnFullDeployment If true, returns full deployment obj, otherwise only some attributes + * @param returnFullDeployment If true, returns full deployment obj, otherwise only some + * attributes * @return */ - public List<CloudifyDeployment> getDeploymentsByInputFilter(String inputKey, String inputValue) throws Exception; - - public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request, String filter) throws Exception; + public List<CloudifyDeployment> getDeploymentsByInputFilter(String inputKey, String inputValue) + throws Exception; + + public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request, + String filter) throws Exception; /** - * Query a blueprint object matching the blueprint ID in cloudify + * Query a blueprint object matching the blueprint ID in cloudify. * * @param id * @param tenant * @return */ - public CloudifyBlueprintList getBlueprint(String id, String tenant); + public CloudifyBlueprintList getBlueprint(String id, String tenant) + throws Exception; /** - * Query deployment inputs for a deployment ID in the cloudify tenant + * Query deployment inputs for a deployment ID in the cloudify tenant. * * @param id * @param tenant * @return */ - public CloudifyDeploymentList getDeploymentInputs(String id, String tenant); - + public CloudifyDeploymentList getDeploymentInputs(String id, String tenant) + throws Exception; + /** - * Query a cloudify secret under a tenant scope + * Query a cloudify secret under a tenant scope. * * @param secretName * @param tenant @@ -202,59 +220,168 @@ public interface CloudifyClient { public CloudifySecret getSecret(String secretName, String tenant); /** - * Query install workflow execution summary for a deployment ID + * Query install workflow execution summary for a deployment ID. * * @param deploymentId * @param tenant * @return */ public CloudifyExecutionList getInstallExecutionSummary(String deploymentId, String tenant); - + /** * - * Delete Blueprint + * Delete Blueprint. * * @param blueprint ID + * @throws Exception + * @throws HttpStatusCodeException */ - public void deleteBlueprint(String bpName, String tenant); + public void deleteBlueprint(String bpName, String tenant) + throws Exception; + /** * - * Query deployment node instances + * Query deployment node instances. * * @param deploymentId * @param tenant * @return */ - public CloudifyNodeInstanceIdList getNodeInstances(String deploymentId, String tenant); - + public CloudifyNodeInstanceIdList getNodeInstances(String deploymentId, String tenant) + throws Exception; + /** + * Get the full list of deployments in the tenant. + * + * @param tenant + * @param pageSize + * @param pageOffset + * @param recurse + * @return + */ public List<CloudifyDeployment> getDeployments(String tenant, int pageSize, int pageOffset, boolean recurse); + /** + * Get the full list of deployments in the tenant (use cache). + * + * @param tenant + * @param pageSize + * @param pageOffset + * @param recurse + * @param cache + * @return + */ public List<CloudifyDeployment> getDeployments(String tenant, int pageSize, int pageOffset, boolean recurse, boolean cache); - - public byte[] viewBlueprint(String tenant, String id); + /** + * Fetch the blueprint YAML content. + * + * @param tenant + * @param id + * @return + * @throws HttpStatusCodeException + * @throws Exception + */ + public byte[] viewBlueprint(String tenant, String id) throws Exception; + + /** + * Store the latest set of deployments in cache, refresh periodically. + */ public void cacheDeployments(); + /** + * Fetch a deployment object that contains all the details. + * + * @param id + * @param tenant + * @return + */ public CloudifyDeployment getDeploymentResource(final String id, final String tenant); - public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request) throws Exception; + /** + * Find matching deployments using the input query filters. + * + * @param request + * @return + * @throws Exception + */ + public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request) + throws Exception; + + /** + * Get the list of node instance resources for the given inputs. + * + * @param deploymentId + * @param tenant + * @return + * @throws HttpStatusCodeException + * @throws Exception + */ + public CloudifyNodeInstanceList getNodeInstanceDetails(String deploymentId, String tenant) + throws Exception; - public CloudifyNodeInstanceList getNodeInstanceDetails(String deploymentId, String tenant); - + /** + * Lookup the matching deployments associated with a blueprint ID. + * + * @param bpId + * @return + */ public List<CloudifyDeployedTenant> getDeploymentForBlueprint(final String bpId); + /** + * Utility method to append execution workflow details to a deployment resource. + * + * @param itemList + * @return + */ public List<CloudifyDeploymentExt> updateWorkflowStatus(List<CloudifyDeployment> itemList); - + + /** + * Utility method to append helm info details to a deployment resource. + * + * @param itemList + * @return + */ public List<CloudifyDeploymentHelm> updateHelmInfo(List<CloudifyDeployment> itemList); - public List<String> getDeploymentNamesWithFilter(HttpServletRequest request) + /** + * extension method to fetch deployment names for given inputs. + * + * @param request + * @return + * @throws Exception + */ + public List<String> getDeploymentNamesWithFilter(HttpServletRequest request) throws Exception; + + /** + * Get the list of plugin resources available in cloudify. + * + * @return + * @throws HttpStatusCodeException + * @throws Exception + */ + public CloudifyPluginList getPlugins() throws Exception; + + /** + * Get the collection of execution summary per tenant. + * @param tenant + * @return + * @throws HttpStatusCodeException + * @throws Exception + */ + public CloudifyExecutionList getExecutionsSummaryPerTenant(String tenant) throws Exception; - - public CloudifyPluginList getPlugins(); - public CloudifyExecutionList getExecutionsSummaryPerTenant(String tenant); - - public CloudifyExecution getExecutionIdSummary(final String id, final String tenant); + /** + * Get an execution summary for the given execution ID and tenant. + * + * @param id + * @param tenant + * @return + * @throws HttpStatusCodeException + * @throws Exception + */ + public CloudifyExecution getExecutionIdSummary(final String id, final String tenant) + throws Exception; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImpl.java index 0e64ef0..ab9dd59 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImpl.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImpl.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.net.MalformedURLException; @@ -33,11 +33,13 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.function.Predicate; import java.util.stream.Collectors; + import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.json.JSONObject; +import org.onap.ccsdk.dashboard.exceptions.DashboardControllerException; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyBlueprint; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyBlueprintList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyDeployedTenant; @@ -54,9 +56,9 @@ import org.onap.ccsdk.dashboard.model.cloudify.CloudifyNodeIdList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyNodeInstanceIdList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyNodeInstanceList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyPluginList; -import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenantList; import org.onap.ccsdk.dashboard.model.cloudify.CloudifySecret; import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenant; +import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenantList; import org.onap.ccsdk.dashboard.util.DashboardProperties; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.onap.portalsdk.core.objectcache.AbstractCacheManager; @@ -70,6 +72,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.client.HttpStatusCodeException; @org.springframework.stereotype.Service public class CloudifyRestClientImpl extends RestClientBase implements CloudifyClient { @@ -88,12 +91,12 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl private static final String SECRETS = "secrets"; private static final String SERVICE_ID = "service-list"; private static final String PLUGINS = "plugins"; - + /** - * For caching data + * For caching data */ - private AbstractCacheManager cacheManager; - + private AbstractCacheManager cacheManager; + @Autowired public void setCacheManager(AbstractCacheManager cacheManager) { this.cacheManager = cacheManager; @@ -102,9 +105,9 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl public AbstractCacheManager getCacheManager() { return cacheManager; } - + @PostConstruct - public void init() { + public void init() throws DashboardControllerException { String webapiUrl = DashboardProperties.getControllerProperty("site.primary", DashboardProperties.SITE_SUBKEY_CLOUDIFY_URL); if (webapiUrl == null) { @@ -119,7 +122,7 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl url = new URL(webapiUrl); baseUrl = url.toExternalForm(); } catch (MalformedURLException ex) { - throw new RuntimeException("Failed to parse URL", ex); + throw new DashboardControllerException("Failed to parse URL", ex); } String urlScheme = webapiUrl.split(":")[0]; if (restTemplate == null) { @@ -132,7 +135,7 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl boolean isHelm = false; boolean helmStatus = false; List<CloudifyDeploymentHelm> result = new ArrayList<>(); - for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { + for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { try { isHelm = false; helmStatus = false; @@ -149,12 +152,12 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl if (workflows.containsKey("status")) { helmStatus = true; } - CloudifyDeploymentHelm cfyDeplHelm = + CloudifyDeploymentHelm cfyDeplHelm = new CloudifyDeploymentHelm(srvc.id, isHelm, helmStatus); result.add(cfyDeplHelm); } catch (Exception e) { logger.error(EELFLoggerDelegate.errorLogger, "getBlueprint failed"); - CloudifyDeploymentHelm cfyDeplHelm = + CloudifyDeploymentHelm cfyDeplHelm = new CloudifyDeploymentHelm(srvc.id, false, false); result.add(cfyDeplHelm); continue; @@ -162,7 +165,7 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl } return result; } - + public List<CloudifyDeploymentExt> updateWorkflowStatus(List<CloudifyDeployment> itemList) { List<CloudifyDeploymentExt> result = new ArrayList<>(); for (CloudifyDeployment srvc : (List<CloudifyDeployment>) itemList) { @@ -171,11 +174,9 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl CloudifyExecutionList execResults = this.getExecutionsSummary(srvc.id, srvc.tenant_name); if (execResults.items != null && !execResults.items.isEmpty()) { - CloudifyDeploymentExt cfyDeplExt = - new CloudifyDeploymentExt(srvc.id, - srvc.blueprint_id, srvc.tenant_name); - cfyDeplExt.lastExecution = - execResults.items.get(0); + CloudifyDeploymentExt cfyDeplExt = + new CloudifyDeploymentExt(srvc.id, srvc.blueprint_id, srvc.tenant_name); + cfyDeplExt.lastExecution = execResults.items.get(0); result.add(cfyDeplExt); } } catch (Exception e) { @@ -186,30 +187,30 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl } return result; } - + public List<CloudifyDeployedTenant> getDeploymentForBlueprint(final String bpId) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, - new String[] { "blueprint_id", bpId, "_all_tenants", "true", "_include", "id,created_at,updated_at,tenant_name"}); - logger.debug(EELFLoggerDelegate.debugLogger, "getDeploymentForBlueprint begin: url {}", url); - ResponseEntity<CloudifyDeployedTenantList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<CloudifyDeployedTenantList>() { - }); + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] {"blueprint_id", + bpId, "_all_tenants", "true", "_include", "id,created_at,updated_at,tenant_name"}); + logger.debug(EELFLoggerDelegate.debugLogger, "getDeploymentForBlueprint begin: url {}", + url); + ResponseEntity<CloudifyDeployedTenantList> response = restTemplate.exchange(url, + HttpMethod.GET, null, new ParameterizedTypeReference<CloudifyDeployedTenantList>() {}); return response.getBody().items; } - + public CloudifyDeployment getDeploymentResource(final String id, final String tenant) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, - new String[] { "id", id, "_include", "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", - "_sort","-updated_at", "_sort", "-created_at"}); + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"id", id, "_include", + "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", "_sort", + "-updated_at", "_sort", "-created_at"}); logger.debug(EELFLoggerDelegate.debugLogger, "getDeploymentResource begin: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); + ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyDeploymentList>() {}); return response.getBody().items.get(0); } - - @Scheduled(fixedRate=86400000, initialDelay=15000) + + @Scheduled(fixedRate = 86400000, initialDelay = 15000) public void cacheTenants() { logger.debug(EELFLoggerDelegate.debugLogger, "cacheTenants begin"); CloudifyTenantList tenantsList = this.getTenants(); @@ -219,14 +220,14 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl lock.writeLock().unlock(); logger.debug(EELFLoggerDelegate.debugLogger, "cacheTenants end"); } - + @SuppressWarnings("unchecked") - @Scheduled(fixedDelay=3600000, initialDelay=360000) + @Scheduled(fixedDelay = 3600000, initialDelay = 360000) public void cacheDeploymentExecInfo() { logger.debug(EELFLoggerDelegate.debugLogger, "cacheDeploymentExecInfo begin"); ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - List<CloudifyTenant> tenantItems = + List<CloudifyTenant> tenantItems = (List<CloudifyTenant>) getCacheManager().getObject(TENANTS); lock.readLock().unlock(); String cfyTen = ""; @@ -234,29 +235,29 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl for (CloudifyTenant item : tenantItems) { cfyTen = item.name; lock.readLock().lock(); - List<CloudifyDeployment> cfyDeplList = - (List<CloudifyDeployment>)getCacheManager(). - getObject(SERVICE_ID + ":" + cfyTen); - lock.readLock().unlock(); + List<CloudifyDeployment> cfyDeplList = (List<CloudifyDeployment>) getCacheManager() + .getObject(SERVICE_ID + ":" + cfyTen); + lock.readLock().unlock(); if (cfyDeplList != null) { - List<CloudifyDeploymentExt> cfyDeplExecList = + List<CloudifyDeploymentExt> cfyDeplExecList = this.updateWorkflowStatus(cfyDeplList); lock.writeLock().lock(); - getCacheManager().putObject(SERVICE_ID + ":" + cfyTen + ":ext", cfyDeplExecList); + getCacheManager().putObject(SERVICE_ID + ":" + cfyTen + ":ext", + cfyDeplExecList); lock.writeLock().unlock(); } } } logger.debug(EELFLoggerDelegate.debugLogger, "cacheDeploymentExecInfo end"); } - + @SuppressWarnings("unchecked") - @Scheduled(fixedDelay=3900000, initialDelay=600000) + @Scheduled(fixedDelay = 3900000, initialDelay = 600000) public void cacheDeploymentHelmInfo() { logger.debug(EELFLoggerDelegate.debugLogger, "cacheDeploymentHelmInfo begin"); ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - List<CloudifyTenant> tenantItems = + List<CloudifyTenant> tenantItems = (List<CloudifyTenant>) getCacheManager().getObject(TENANTS); lock.readLock().unlock(); String cfyTen = ""; @@ -264,29 +265,28 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl for (CloudifyTenant item : tenantItems) { cfyTen = item.name; lock.readLock().lock(); - List<CloudifyDeployment> cfyDeplList = - (List<CloudifyDeployment>)getCacheManager(). - getObject(SERVICE_ID + ":" + cfyTen); + List<CloudifyDeployment> cfyDeplList = (List<CloudifyDeployment>) getCacheManager() + .getObject(SERVICE_ID + ":" + cfyTen); lock.readLock().unlock(); if (cfyDeplList != null) { - List<CloudifyDeploymentHelm> cfyDeplHelmList = - this.updateHelmInfo(cfyDeplList); + List<CloudifyDeploymentHelm> cfyDeplHelmList = this.updateHelmInfo(cfyDeplList); lock.writeLock().lock(); - getCacheManager().putObject(SERVICE_ID + ":" + cfyTen + ":helm", cfyDeplHelmList); - lock.writeLock().unlock(); + getCacheManager().putObject(SERVICE_ID + ":" + cfyTen + ":helm", + cfyDeplHelmList); + lock.writeLock().unlock(); } } } logger.debug(EELFLoggerDelegate.debugLogger, "cacheDeploymentHelmInfo end"); } - - @Scheduled(fixedDelay=300000, initialDelay=90000) + + @Scheduled(fixedDelay = 300000, initialDelay = 90000) public void cacheDeployments() { logger.debug(EELFLoggerDelegate.debugLogger, "cacheDeployments begin"); int pageSize = 500; ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - List<CloudifyTenant> tenantItems = + List<CloudifyTenant> tenantItems = (List<CloudifyTenant>) getCacheManager().getObject(TENANTS); lock.readLock().unlock(); String cfyTen = "default_tenant"; @@ -309,8 +309,7 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl int deplPgOffset = 0; deplPgOffset += pageSize; while (deplPgOffset < totalItems) { - url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] { - "_include", + url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] {"_include", "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", "_sort", "-updated_at", "_sort", "-created_at", "_size", new Integer(pageSize).toString(), "_offset", @@ -325,179 +324,193 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl lock.writeLock().unlock(); } } - logger.debug(EELFLoggerDelegate.debugLogger, "cacheDeployments done putting deployment data"); + logger.debug(EELFLoggerDelegate.debugLogger, + "cacheDeployments done putting deployment data"); } @Override public CloudifyTenantList getTenants() { - String url = buildUrl(new String[] { baseUrl, TENANTS }, null); + String url = buildUrl(new String[] {baseUrl, TENANTS}, null); logger.debug(EELFLoggerDelegate.debugLogger, "getTenants: url {}", url); - ResponseEntity<CloudifyTenantList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<CloudifyTenantList>() { - }); + ResponseEntity<CloudifyTenantList> response = restTemplate.exchange(url, HttpMethod.GET, + null, new ParameterizedTypeReference<CloudifyTenantList>() {}); return response.getBody(); } @Override - public CloudifyEventList getEventlogs(String executionId, String tenant) { - String url = buildUrl(new String[] { baseUrl, EVENTS }, new String[] { "execution_id", executionId }); + public CloudifyEventList getEventlogs(String executionId, String tenant) + throws Exception { + String url = + buildUrl(new String[] {baseUrl, EVENTS}, new String[] {"execution_id", executionId}); logger.debug(EELFLoggerDelegate.debugLogger, "getEventlogs: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyEventList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyEventList>() { - }); + ResponseEntity<CloudifyEventList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyEventList>() {}); return response.getBody(); } @Override - public CloudifyNodeInstanceIdList getNodeInstanceId(String deploymentId, String nodeId, String tenant) { - String url = buildUrl(new String[] { baseUrl, NODE_INSTANCES }, - new String[] { "deployment_id", deploymentId, "node_id", nodeId, "_include", "id" }); + public CloudifyNodeInstanceIdList getNodeInstanceId(String deploymentId, String nodeId, + String tenant) throws Exception { + String url = buildUrl(new String[] {baseUrl, NODE_INSTANCES}, + new String[] {"deployment_id", deploymentId, "node_id", nodeId, "_include", "id"}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeInstanceId: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyNodeInstanceIdList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyNodeInstanceIdList>() { - }); + ResponseEntity<CloudifyNodeInstanceIdList> response = + restTemplate.exchange(url, HttpMethod.GET, entity, + new ParameterizedTypeReference<CloudifyNodeInstanceIdList>() {}); return response.getBody(); } @Override - public CloudifyNodeInstanceList getNodeInstanceDetails(String deploymentId, String tenant) { - String url = buildUrl(new String[] { baseUrl, NODE_INSTANCES }, - new String[] { "deployment_id", deploymentId}); + public CloudifyNodeInstanceList getNodeInstanceDetails(String deploymentId, String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, NODE_INSTANCES}, + new String[] {"deployment_id", deploymentId}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeInstanceDetails: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyNodeInstanceList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyNodeInstanceList>() { - }); + ResponseEntity<CloudifyNodeInstanceList> response = restTemplate.exchange(url, + HttpMethod.GET, entity, new ParameterizedTypeReference<CloudifyNodeInstanceList>() {}); return response.getBody(); } - + @Override - public CloudifyNodeInstanceIdList getNodeInstances(String deploymentId, String tenant) { - String url = buildUrl(new String[] { baseUrl, NODE_INSTANCES }, - new String[] { "deployment_id", deploymentId, "_include", "id" }); + public CloudifyNodeInstanceIdList getNodeInstances(String deploymentId, String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, NODE_INSTANCES}, + new String[] {"deployment_id", deploymentId, "_include", "id"}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeInstanceId: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyNodeInstanceIdList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyNodeInstanceIdList>() { - }); + ResponseEntity<CloudifyNodeInstanceIdList> response = + restTemplate.exchange(url, HttpMethod.GET, entity, + new ParameterizedTypeReference<CloudifyNodeInstanceIdList>() {}); return response.getBody(); } @Override - public CloudifyNodeInstanceList getNodeInstanceVersion(String deploymentId, String nodeId, String tenant) { - String url = buildUrl(new String[] { baseUrl, NODE_INSTANCES }, - new String[] { "deployment_id", deploymentId, "node_id", nodeId, "_include", "runtime_properties,id" }); + public CloudifyNodeInstanceList getNodeInstanceVersion(String deploymentId, String nodeId, + String tenant) throws Exception { + String url = buildUrl(new String[] {baseUrl, NODE_INSTANCES}, new String[] {"deployment_id", + deploymentId, "node_id", nodeId, "_include", "runtime_properties,id"}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeInstanceVersion: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyNodeInstanceList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyNodeInstanceList>() { - }); + ResponseEntity<CloudifyNodeInstanceList> response = restTemplate.exchange(url, + HttpMethod.GET, entity, new ParameterizedTypeReference<CloudifyNodeInstanceList>() {}); return response.getBody(); } @Override - public CloudifyNodeInstanceList getNodeInstanceVersion(String bpId, String tenant) { - String url = buildUrl(new String[] { baseUrl, NODES }, - new String[] { "deployment_id", bpId, "type", "onap.nodes.component", "_include", "id" }); + public CloudifyNodeInstanceList getNodeInstanceVersion(String bpId, String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, NODES}, + new String[] {"deployment_id", bpId, "type", "onap.nodes.component", "_include", "id"}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeInstanceId: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyNodeIdList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyNodeIdList>() { - }); + ResponseEntity<CloudifyNodeIdList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyNodeIdList>() {}); CloudifyNodeIdList result = response.getBody(); String nodeId = result.items.get(0).id; return getNodeInstanceVersion(bpId, nodeId, tenant); } @Override - public CloudifyNodeInstanceIdList getNodeInstanceId(final String bpId, String tenant) { + public CloudifyNodeInstanceIdList getNodeInstanceId(final String bpId, String tenant) + throws Exception { String url = buildUrl(new String[] {baseUrl, NODES}, new String[] {"deployment_id", bpId, "type", "onap.nodes.component", "_include", "id"}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeInstanceId: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyNodeIdList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyNodeIdList>() { - }); + ResponseEntity<CloudifyNodeIdList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyNodeIdList>() {}); CloudifyNodeIdList result = response.getBody(); String nodeId = result.items.get(0).id; return getNodeInstanceId(bpId, nodeId, tenant); } @Override - public CloudifyExecutionList getExecutions(final String deploymentId, final String tenant) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS }, new String[] { "deployment_id", deploymentId }); + public CloudifyExecutionList getExecutions(final String deploymentId, final String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS}, + new String[] {"deployment_id", deploymentId}); logger.debug(EELFLoggerDelegate.debugLogger, "getExecutions: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyExecutionList>() { - }); + ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyExecutionList>() {}); return response.getBody(); } @Override - public CloudifyExecutionList getExecutionsSummary(final String deploymentId, final String tenant) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS }, new String[] { "deployment_id", deploymentId, - "_include", "deployment_id,id,status,workflow_id,tenant_name,created_at,ended_at", "_sort", "-created_at" }); + public CloudifyExecutionList getExecutionsSummary(final String deploymentId, + final String tenant) throws Exception { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS}, + new String[] {"deployment_id", deploymentId, "_include", + "deployment_id,id,status,workflow_id,tenant_name,created_at,ended_at", "_sort", + "-created_at"}); logger.debug(EELFLoggerDelegate.debugLogger, "getExecutions: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyExecutionList>() { - }); + ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyExecutionList>() {}); return response.getBody(); } @Override - public CloudifyExecutionList getExecutionsSummaryPerTenant(final String tenant) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS }, new String[] { - "_include","deployment_id,id,status,workflow_id,tenant_name,created_at,ended_at", "_sort", "-created_at" }); + public CloudifyExecutionList getExecutionsSummaryPerTenant(final String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS}, + new String[] {"_include", + "deployment_id,id,status,workflow_id,tenant_name,created_at,ended_at", "_sort", + "-created_at"}); logger.debug(EELFLoggerDelegate.debugLogger, "getExecutionsSummaryPerTenant: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyExecutionList>() { - }); + ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyExecutionList>() {}); return response.getBody(); } - public CloudifyExecution getExecutionIdSummary(final String id, final String tenant) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS, id }, new String[] { - "_include","deployment_id,id,status,workflow_id,tenant_name,created_at,ended_at", "_sort", "-created_at" }); + public CloudifyExecution getExecutionIdSummary(final String id, final String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS, id}, + new String[] {"_include", + "deployment_id,id,status,workflow_id,tenant_name,created_at,ended_at", "_sort", + "-created_at"}); logger.debug(EELFLoggerDelegate.debugLogger, "getExecutionIdSummary: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyExecution> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyExecution>() { - }); + ResponseEntity<CloudifyExecution> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyExecution>() {}); return response.getBody(); } - + @Override - public CloudifyExecutionList getInstallExecutionSummary(final String deploymentId, final String tenant) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS }, new String[] { "deployment_id", deploymentId, - "workflow_id", "install", "_include", "deployment_id,id,status,workflow_id,tenant_name,created_at" }); + public CloudifyExecutionList getInstallExecutionSummary(final String deploymentId, + final String tenant) { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS}, + new String[] {"deployment_id", deploymentId, "workflow_id", "install", "_include", + "deployment_id,id,status,workflow_id,tenant_name,created_at"}); logger.debug(EELFLoggerDelegate.debugLogger, "getExecutions: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyExecutionList>() { - }); + ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyExecutionList>() {}); return response.getBody(); } - + @Override - public CloudifyExecution startExecution(CloudifyExecutionRequest execution) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS }, null); + public CloudifyExecution startExecution(CloudifyExecutionRequest execution) + throws Exception { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS}, null); logger.debug(EELFLoggerDelegate.debugLogger, "startExecution: url {}", url); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("Tenant", execution.tenant); - HttpEntity<CloudifyExecutionRequest> entity = new HttpEntity<CloudifyExecutionRequest>(execution, headers); + HttpEntity<CloudifyExecutionRequest> entity = + new HttpEntity<CloudifyExecutionRequest>(execution, headers); return restTemplate.postForObject(url, entity, CloudifyExecution.class); } @Override - public CloudifyExecution cancelExecution(final String executionId, Map<String, String> parameters, - final String tenant) { - String url = buildUrl(new String[] { baseUrl, EXECUTIONS, executionId }, null); + public CloudifyExecution cancelExecution(final String executionId, + Map<String, String> parameters, final String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, EXECUTIONS, executionId}, null); logger.debug(EELFLoggerDelegate.debugLogger, "deleteExecution: url {}", url); JSONObject requestJson = new JSONObject(parameters); @@ -512,68 +525,69 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl } @Override - public CloudifyBlueprintList getBlueprint(final String id, String tenant) { - String url = buildUrl(new String[] { baseUrl, BLUEPRINTS }, new String[] { "id", id }); + public CloudifyBlueprintList getBlueprint(final String id, String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, BLUEPRINTS}, new String[] {"id", id}); logger.debug(EELFLoggerDelegate.debugLogger, "getBlueprint: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyBlueprintList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyBlueprintList>() { - }); + ResponseEntity<CloudifyBlueprintList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyBlueprintList>() {}); return response.getBody(); } @Override - public byte[] viewBlueprint(String tenant, final String id) { - String url = buildUrl(new String[] { baseUrl, BLUEPRINTS, id, "archive" }, null); + public byte[] viewBlueprint(String tenant, final String id) + throws Exception { + String url = buildUrl(new String[] {baseUrl, BLUEPRINTS, id, "archive"}, null); logger.debug(EELFLoggerDelegate.debugLogger, "viewBlueprint: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<byte[]> response = + ResponseEntity<byte[]> response = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class); if (response.getStatusCode() == HttpStatus.OK) { return response.getBody(); } return null; } - + @Override - public List<CloudifyDeployment> getDeployments(String tenant, int pageSize, int pageOffset, boolean recurse) { + public List<CloudifyDeployment> getDeployments(String tenant, int pageSize, int pageOffset, + boolean recurse) { return this.getDeployments(tenant, pageSize, pageOffset, true, true); } - + @SuppressWarnings("unchecked") @Override - public List<CloudifyDeployment> getDeployments(String tenant, int pageSize, int pageOffset, boolean recurse, boolean cache) { + public List<CloudifyDeployment> getDeployments(String tenant, int pageSize, int pageOffset, + boolean recurse, boolean cache) { List<CloudifyDeployment> cfyDeplList = null; if (cache) { - cfyDeplList = - (List<CloudifyDeployment>)getCacheManager().getObject(SERVICE_ID + ":" + tenant); + cfyDeplList = + (List<CloudifyDeployment>) getCacheManager().getObject(SERVICE_ID + ":" + tenant); } if (cfyDeplList == null || cfyDeplList.isEmpty()) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, - new String[] { "_include", "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", - "_sort","-updated_at", "_sort", "-created_at", - "_size", new Integer(pageSize).toString(), - "_offset" , new Integer(pageOffset).toString()}); + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] {"_include", + "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", "_sort", + "-updated_at", "_sort", "-created_at", "_size", new Integer(pageSize).toString(), + "_offset", new Integer(pageOffset).toString()}); logger.debug(EELFLoggerDelegate.debugLogger, "getDeployments: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); + ResponseEntity<CloudifyDeploymentList> response = + restTemplate.exchange(url, HttpMethod.GET, entity, + new ParameterizedTypeReference<CloudifyDeploymentList>() {}); cfyDeplList = new ArrayList<CloudifyDeployment>(); cfyDeplList.addAll(response.getBody().items); if (recurse) { - int totalItems = (int)response.getBody().metadata.pagination.total; + int totalItems = (int) response.getBody().metadata.pagination.total; int deplPgOffset = 0; deplPgOffset += pageSize; while (deplPgOffset < totalItems) { - url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, - new String[] { "_include", "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", - "_sort","-updated_at", "_sort", "-created_at", - "_size", new Integer(pageSize).toString(), - "_offset" , new Integer(deplPgOffset).toString()}); + url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] {"_include", + "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name", + "_sort", "-updated_at", "_sort", "-created_at", "_size", + new Integer(pageSize).toString(), "_offset", + new Integer(deplPgOffset).toString()}); response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); + new ParameterizedTypeReference<CloudifyDeploymentList>() {}); deplPgOffset += pageSize; cfyDeplList.addAll(response.getBody().items); } @@ -581,54 +595,51 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl } return cfyDeplList; } - + public CloudifyDeploymentList getDeployments(String tenant, int pageSize, int pageOffset) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, - new String[] { "_include", "id,blueprint_id,created_at,updated_at,created_by,description", - "_sort","-updated_at", "_sort", "-created_at", - "_size", new Integer(pageSize).toString(), - "_offset" , new Integer(pageOffset).toString()}); + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"_include", + "id,blueprint_id,created_at,updated_at,created_by,description", "_sort", + "-updated_at", "_sort", "-created_at", "_size", new Integer(pageSize).toString(), + "_offset", new Integer(pageOffset).toString()}); logger.debug(EELFLoggerDelegate.debugLogger, "getDeployments: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); + ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyDeploymentList>() {}); return response.getBody(); } - + @Override - public List<CloudifyDeployment> getDeploymentsByInputFilter(String inputKey, String inputValue) throws Exception { - JSONObject inputObject = new JSONObject() - .put("inputKey", inputKey) - .put("inputValue", inputValue); - String filter = new JSONObject() - .put("input", inputObject) - .toString(); - return getDeploymentsWithFilter(null, filter); + public List<CloudifyDeployment> getDeploymentsByInputFilter(String inputKey, String inputValue) + throws Exception { + JSONObject inputObject = + new JSONObject().put("inputKey", inputKey).put("inputValue", inputValue); + String filter = new JSONObject().put("input", inputObject).toString(); + return getDeploymentsWithFilter(null, filter); } - + @SuppressWarnings("unchecked") @Override - public List<String> getDeploymentNamesWithFilter(HttpServletRequest request) - throws Exception { + public List<String> getDeploymentNamesWithFilter(HttpServletRequest request) throws Exception { List<CloudifyDeployment> itemList = this.getDeploymentsWithFilter(request); Set<String> svcIdList = new HashSet<String>(); if (itemList != null) { - svcIdList = - (Set) itemList.stream().map(x -> ((CloudifyDeployment)x).id).collect(Collectors.toSet()); + svcIdList = (Set) itemList.stream().map(x -> ((CloudifyDeployment) x).id) + .collect(Collectors.toSet()); } List<String> response = new ArrayList<String>(); response.addAll(svcIdList); return response; } - + @SuppressWarnings("unchecked") @Override - public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request) throws Exception { + public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request) + throws Exception { String filters = request.getParameter("filters"); List<CloudifyDeployment> deployments = new ArrayList<CloudifyDeployment>(); - if (filters != null) { + if (filters != null) { deployments = getDeploymentsWithFilter(request, filters); } else { List<CloudifyTenant> selectedTenants = new ArrayList<CloudifyTenant>(); @@ -638,137 +649,136 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl itemList = this.getDeployments(tenant.name, 500, 0, true); deployments.addAll(itemList); } - // apply user role based auth + // apply user role based auth Set<String> userApps = null; - Set<String> userRoleSet = null; + Set<String> userRoleSet = null; try { HttpSession session = AppUtils.getSession(request); userApps = (Set<String>) session.getAttribute("authComponents"); userRoleSet = (Set<String>) session.getAttribute("user_roles"); } catch (Exception e) { // requester is REST API - userRoleSet = (Set<String>)request.getAttribute("userRoles"); + userRoleSet = (Set<String>) request.getAttribute("userRoles"); userApps = (Set<String>) request.getAttribute("userApps"); } - + if (userApps == null) { userApps = new TreeSet<String>(); } - + if (userRoleSet == null) { userRoleSet = new TreeSet<String>(); } - + Predicate<String> adminPred = p -> p.contains("System_Administrator") || p.contains("Write_Access"); Predicate<String> ecompSuperPred = p -> p.contains("ECOMPC_WRITE") || p.contains("ECOMPC_READ"); - + if (userRoleSet.size() > 0) { if (userRoleSet.stream().noneMatch(adminPred)) { List<String> myApps = new ArrayList(userApps); if (userRoleSet.stream().noneMatch(ecompSuperPred)) { - deployments = (List<CloudifyDeployment>) deployments.stream().filter(s -> myApps.stream() - .anyMatch(roleFilter -> ((CloudifyDeployment)s).id.toLowerCase().startsWith(roleFilter))) - .collect(Collectors.toList()); + deployments = + (List<CloudifyDeployment>) deployments.stream() + .filter(s -> myApps.stream() + .anyMatch(roleFilter -> ((CloudifyDeployment) s).id + .toLowerCase().startsWith(roleFilter))) + .collect(Collectors.toList()); } else { - Predicate<CloudifyDeployment> appFilter = - p -> p.id.toLowerCase().indexOf("dcae") == -1 || p.id.toLowerCase().indexOf("d2a") == -1; - deployments = (List<CloudifyDeployment>) deployments.stream().filter(appFilter) - .collect(Collectors.toList()); + Predicate<CloudifyDeployment> appFilter = + p -> p.id.toLowerCase().indexOf("dcae") == -1 + || p.id.toLowerCase().indexOf("d2a") == -1; + deployments = (List<CloudifyDeployment>) deployments.stream() + .filter(appFilter).collect(Collectors.toList()); } } } } return deployments; } - + @Override - public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request, String filter) - throws Exception { - String url = ""; - JSONObject filterJson = new JSONObject(filter); + public List<CloudifyDeployment> getDeploymentsWithFilter(HttpServletRequest request, + String filter) throws Exception { + String url = ""; + JSONObject filterJson = new JSONObject(filter); ReadWriteLock lock = new ReentrantReadWriteLock(); - - //---------Handle Tenant filter---------// - List<CloudifyTenant> selectedTenants = new ArrayList<CloudifyTenant>(); - if (filterJson.has("tenant")) { - String tenantFilterString = ""; - Object tenantObject = filterJson.get("tenant"); - - //Check for logic operators - if (tenantObject instanceof JSONObject) { - JSONObject tenantJsonObject = filterJson.getJSONObject("tenant"); - if (tenantJsonObject.has("$not")) { - tenantFilterString = tenantJsonObject.getString("$not"); - selectedTenants = tenantFilter(tenantFilterString, true); - } - else { - throw new Exception("ERROR: Not a valid logic operator"); - } - } - else if (tenantObject instanceof String) { - tenantFilterString = filterJson.getString("tenant"); - selectedTenants = tenantFilter(tenantFilterString, false); - } - } - else { - selectedTenants = getTenants().items; - } - //---------Get Deployments based on tenants selected---------// - List<CloudifyDeployment> deployments = new ArrayList<CloudifyDeployment>(); - List<CloudifyDeployment> itemList = null; + + // ---------Handle Tenant filter---------// + List<CloudifyTenant> selectedTenants = new ArrayList<CloudifyTenant>(); + if (filterJson.has("tenant")) { + String tenantFilterString = ""; + Object tenantObject = filterJson.get("tenant"); + + // Check for logic operators + if (tenantObject instanceof JSONObject) { + JSONObject tenantJsonObject = filterJson.getJSONObject("tenant"); + if (tenantJsonObject.has("$not")) { + tenantFilterString = tenantJsonObject.getString("$not"); + selectedTenants = tenantFilter(tenantFilterString, true); + } else { + throw new Exception("ERROR: Not a valid logic operator"); + } + } else if (tenantObject instanceof String) { + tenantFilterString = filterJson.getString("tenant"); + selectedTenants = tenantFilter(tenantFilterString, false); + } + } else { + selectedTenants = getTenants().items; + } + // ---------Get Deployments based on tenants selected---------// + List<CloudifyDeployment> deployments = new ArrayList<CloudifyDeployment>(); + List<CloudifyDeployment> itemList = null; HttpEntity<String> entity; - String tenantFilterStr = ""; + String tenantFilterStr = ""; int pageSize = 500; - - //---------Handle the _include filter---------// - String include = filterJson.has("_include") ? filterJson.getString("_include") : null; + + // ---------Handle the _include filter---------// + String include = filterJson.has("_include") ? filterJson.getString("_include") : null; for (CloudifyTenant tenant : selectedTenants) { - tenantFilterStr = tenant.name; - lock.readLock().lock(); - itemList = - (List<CloudifyDeployment>)getCacheManager(). - getObject("service-list" + ":" + tenantFilterStr); - lock.readLock().unlock(); - - if (itemList == null || include != null) { - if (include == null || include.isEmpty()) { - include = "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name"; - } - url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, new String[] {"_include", - include,"_sort", "-updated_at", "_sort", "-created_at", "_size", - new Integer(pageSize).toString(), "_offset", new Integer(0).toString()}); + tenantFilterStr = tenant.name; + lock.readLock().lock(); + itemList = (List<CloudifyDeployment>) getCacheManager() + .getObject("service-list" + ":" + tenantFilterStr); + lock.readLock().unlock(); - logger.debug(EELFLoggerDelegate.debugLogger, "getDeployments: url {}", url); - - entity = getTenantHeader(tenant.name); - ResponseEntity<CloudifyDeploymentList> response = - restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); - deployments.addAll(response.getBody().items); - int totalItems = (int) response.getBody().metadata.pagination.total; - int deplPgOffset = 0; - deplPgOffset += pageSize; - while (deplPgOffset < totalItems) { - url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] { - "_include", - include, - "_sort", "-updated_at", "_sort", "-created_at", "_size", - new Integer(pageSize).toString(), "_offset", - new Integer(deplPgOffset).toString()}); - response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() {}); - deplPgOffset += pageSize; - deployments.addAll(response.getBody().items); - } - } else { - deployments.addAll(itemList); + if (itemList == null || include != null) { + if (include == null || include.isEmpty()) { + include = + "id,blueprint_id,created_at,updated_at,created_by,description,tenant_name"; } - } - // apply user role based auth + url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"_include", include, "_sort", "-updated_at", "_sort", + "-created_at", "_size", new Integer(pageSize).toString(), "_offset", + new Integer(0).toString()}); + + logger.debug(EELFLoggerDelegate.debugLogger, "getDeployments: url {}", url); + + entity = getTenantHeader(tenant.name); + ResponseEntity<CloudifyDeploymentList> response = + restTemplate.exchange(url, HttpMethod.GET, entity, + new ParameterizedTypeReference<CloudifyDeploymentList>() {}); + deployments.addAll(response.getBody().items); + int totalItems = (int) response.getBody().metadata.pagination.total; + int deplPgOffset = 0; + deplPgOffset += pageSize; + while (deplPgOffset < totalItems) { + url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"_include", include, "_sort", "-updated_at", "_sort", + "-created_at", "_size", new Integer(pageSize).toString(), "_offset", + new Integer(deplPgOffset).toString()}); + response = restTemplate.exchange(url, HttpMethod.GET, entity, + new ParameterizedTypeReference<CloudifyDeploymentList>() {}); + deplPgOffset += pageSize; + deployments.addAll(response.getBody().items); + } + } else { + deployments.addAll(itemList); + } + } + // apply user role based auth Set<String> userRoleSet = (Set<String>) request.getAttribute("userRoles"); Set<String> userApps = (Set<String>) request.getAttribute("userApps"); @@ -777,290 +787,299 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl Predicate<String> ecompSuperPred = p -> p.contains("ECOMPC_WRITE") || p.contains("ECOMPC_READ"); - + if (userRoleSet.stream().noneMatch(adminPred)) { if (userRoleSet.stream().noneMatch(ecompSuperPred)) { - deployments = (List<CloudifyDeployment>) deployments.stream().filter(s -> userApps - .stream() - .anyMatch(appFilter -> (((CloudifyDeployment) s).id.toLowerCase().indexOf(appFilter) == 0))) + deployments = (List<CloudifyDeployment>) deployments.stream() + .filter(s -> userApps.stream() + .anyMatch(appFilter -> (((CloudifyDeployment) s).id.toLowerCase() + .indexOf(appFilter) == 0))) .collect(Collectors.<CloudifyDeployment>toList()); } else { - Predicate<CloudifyDeployment> appFilter = p -> p.id.toLowerCase().indexOf("dcae") == -1; + Predicate<CloudifyDeployment> appFilter = + p -> p.id.toLowerCase().indexOf("dcae") == -1; deployments = (List<CloudifyDeployment>) deployments.stream().filter(appFilter) .collect(Collectors.toList()); } } List<CloudifyDeployment> filteredDeployments = deployments; - //-------------------ServiceId Filter-------------------// - if (filterJson.has("serviceId")) { - String serviceIdFilterString; - Object serviceIdObject = filterJson.get("serviceId"); - - //Check for logic operators - if (serviceIdObject instanceof JSONObject) { - JSONObject serviceIdJsonObject = filterJson.getJSONObject("serviceId"); - if (serviceIdJsonObject.has("$not")) { - serviceIdFilterString = serviceIdJsonObject.getString("$not"); - filteredDeployments = serviceIdFilter(serviceIdFilterString, filteredDeployments, true); - } - else { - throw new Exception("ERROR: Not a valid logic operator"); - } - } - else if (serviceIdObject instanceof String) { - serviceIdFilterString = filterJson.getString("serviceId"); - filteredDeployments = serviceIdFilter(serviceIdFilterString, filteredDeployments, false); - } - } - - //------------------Handle Input Filter--------------// - if (filterJson.has("input")) { - JSONObject inputFilterObject; - Object inputObject = filterJson.get("input"); - - //Check for logic operators - if (inputObject instanceof JSONObject) { - JSONObject inputJsonObject = filterJson.getJSONObject("input"); - if (inputJsonObject.has("$not")) { - inputFilterObject = inputJsonObject.getJSONObject("$not"); - filteredDeployments = inputFilter(inputFilterObject, filteredDeployments, true); - } - //If no operators, pass to filter func - else { - inputFilterObject = inputJsonObject; - filteredDeployments = inputFilter(inputFilterObject, filteredDeployments, false); - } - } - } - - //-------------------Install Status Filter-------------------// - if (filterJson.has("installStatus")) { - String installStatusFilterString; - Object installStatusObject = filterJson.get("installStatus"); - - //Check for logic operators - if (installStatusObject instanceof JSONObject) { - JSONObject installStatusJsonObject = filterJson.getJSONObject("installStatus"); - if (installStatusJsonObject.has("$not")) { - installStatusFilterString = installStatusJsonObject.getString("$not"); - filteredDeployments = installStatusFilter(installStatusFilterString, filteredDeployments, true); - } - else { - throw new Exception("ERROR: Not a valid logic operator"); - } - } - else if (installStatusObject instanceof String) { - installStatusFilterString = filterJson.getString("installStatus"); - filteredDeployments = installStatusFilter(installStatusFilterString, filteredDeployments, false); - } - } - - //-------------------isHelm Filter-------------------// - if (filterJson.has("isHelm")) { - String helmFilterString; - Object helmObject = filterJson.get("isHelm"); - - //Check for logic operators - if (helmObject instanceof JSONObject) { - JSONObject helmJsonObject = filterJson.getJSONObject("isHelm"); - if (helmJsonObject.has("$not")) { - helmFilterString = helmJsonObject.getString("$not"); - filteredDeployments = helmFilter(helmFilterString, filteredDeployments, true); - } - else { - throw new Exception("ERROR: Not a valid logic operator"); - } - } - else if (helmObject instanceof String) { - helmFilterString = filterJson.getString("isHelm"); - filteredDeployments = helmFilter(helmFilterString, filteredDeployments, false); - } - } - //CloudifyDeploymentList filteredDepList = new CloudifyDeploymentList(filteredDeployments, null); + // -------------------ServiceId Filter-------------------// + if (filterJson.has("serviceId")) { + String serviceIdFilterString; + Object serviceIdObject = filterJson.get("serviceId"); + + // Check for logic operators + if (serviceIdObject instanceof JSONObject) { + JSONObject serviceIdJsonObject = filterJson.getJSONObject("serviceId"); + if (serviceIdJsonObject.has("$not")) { + serviceIdFilterString = serviceIdJsonObject.getString("$not"); + filteredDeployments = + serviceIdFilter(serviceIdFilterString, filteredDeployments, true); + } else { + throw new Exception("ERROR: Not a valid logic operator"); + } + } else if (serviceIdObject instanceof String) { + serviceIdFilterString = filterJson.getString("serviceId"); + filteredDeployments = + serviceIdFilter(serviceIdFilterString, filteredDeployments, false); + } + } + + // ------------------Handle Input Filter--------------// + if (filterJson.has("input")) { + JSONObject inputFilterObject; + Object inputObject = filterJson.get("input"); + + // Check for logic operators + if (inputObject instanceof JSONObject) { + JSONObject inputJsonObject = filterJson.getJSONObject("input"); + if (inputJsonObject.has("$not")) { + inputFilterObject = inputJsonObject.getJSONObject("$not"); + filteredDeployments = inputFilter(inputFilterObject, filteredDeployments, true); + } + // If no operators, pass to filter func + else { + inputFilterObject = inputJsonObject; + filteredDeployments = + inputFilter(inputFilterObject, filteredDeployments, false); + } + } + } + + // -------------------Install Status Filter-------------------// + if (filterJson.has("installStatus")) { + String installStatusFilterString; + Object installStatusObject = filterJson.get("installStatus"); + + // Check for logic operators + if (installStatusObject instanceof JSONObject) { + JSONObject installStatusJsonObject = filterJson.getJSONObject("installStatus"); + if (installStatusJsonObject.has("$not")) { + installStatusFilterString = installStatusJsonObject.getString("$not"); + filteredDeployments = + installStatusFilter(installStatusFilterString, filteredDeployments, true); + } else { + throw new Exception("ERROR: Not a valid logic operator"); + } + } else if (installStatusObject instanceof String) { + installStatusFilterString = filterJson.getString("installStatus"); + filteredDeployments = + installStatusFilter(installStatusFilterString, filteredDeployments, false); + } + } + + // -------------------isHelm Filter-------------------// + if (filterJson.has("isHelm")) { + String helmFilterString; + Object helmObject = filterJson.get("isHelm"); + + // Check for logic operators + if (helmObject instanceof JSONObject) { + JSONObject helmJsonObject = filterJson.getJSONObject("isHelm"); + if (helmJsonObject.has("$not")) { + helmFilterString = helmJsonObject.getString("$not"); + filteredDeployments = helmFilter(helmFilterString, filteredDeployments, true); + } else { + throw new Exception("ERROR: Not a valid logic operator"); + } + } else if (helmObject instanceof String) { + helmFilterString = filterJson.getString("isHelm"); + filteredDeployments = helmFilter(helmFilterString, filteredDeployments, false); + } + } return filteredDeployments; } - + /* * Helper function to handle the tenant filter */ private List<CloudifyTenant> tenantFilter(String filterString, boolean isNot) throws Exception { - CloudifyTenantList availableTenants = getTenants(); - List<CloudifyTenant> selectedTenants = new ArrayList<CloudifyTenant>(); - - //If using tenant filter, verify its valid tenant name - if (filterString != null && !filterString.isEmpty()) { - for (CloudifyTenant tenant : availableTenants.items) { - if (!isNot && tenant.name.equals(filterString)) { - selectedTenants.add(tenant); - } - else if (isNot && !tenant.name.equals(filterString)) { - selectedTenants.add(tenant); - } + CloudifyTenantList availableTenants = getTenants(); + List<CloudifyTenant> selectedTenants = new ArrayList<CloudifyTenant>(); + + // If using tenant filter, verify its valid tenant name + if (filterString != null && !filterString.isEmpty()) { + for (CloudifyTenant tenant : availableTenants.items) { + if (!isNot && tenant.name.equals(filterString)) { + selectedTenants.add(tenant); + } else if (isNot && !tenant.name.equals(filterString)) { + selectedTenants.add(tenant); + } } - if (selectedTenants.isEmpty()) { - throw new Exception("ERROR: Tenant filter was used but resulted in no selected tenants"); - } - } - //If no proper tenants given - else { - throw new Exception("ERROR: Tenant filter was used but no tenants were given"); - } - return selectedTenants; + if (selectedTenants.isEmpty()) { + throw new Exception( + "ERROR: Tenant filter was used but resulted in no selected tenants"); + } + } + // If no proper tenants given + else { + throw new Exception("ERROR: Tenant filter was used but no tenants were given"); + } + return selectedTenants; } - - + /* * Helper function to filter deployments by serviceId */ - private List<CloudifyDeployment> serviceIdFilter(String filterString, List<CloudifyDeployment> deployments, boolean isNot) throws Exception { - List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); + private List<CloudifyDeployment> serviceIdFilter(String filterString, + List<CloudifyDeployment> deployments, boolean isNot) throws Exception { + List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); if (filterString != null && !filterString.isEmpty()) { - for (CloudifyDeployment dep : deployments) { - if (!isNot && dep.id.contains(filterString)) - newFilteredDeployments.add(dep); - else if (isNot && !dep.id.contains(filterString)) - newFilteredDeployments.add(dep); - } - } - else { - throw new Exception("ERROR: Service ID filter was used but a valid serviceId String was not provided"); + for (CloudifyDeployment dep : deployments) { + if (!isNot && dep.id.contains(filterString)) + newFilteredDeployments.add(dep); + else if (isNot && !dep.id.contains(filterString)) + newFilteredDeployments.add(dep); + } + } else { + throw new Exception( + "ERROR: Service ID filter was used but a valid serviceId String was not provided"); } return newFilteredDeployments; } - - + /* * Helper function to filter deployments by input */ - private List<CloudifyDeployment> inputFilter(JSONObject filterJson, List<CloudifyDeployment> deployments, boolean isNot) throws Exception { - List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); - if (filterJson != null && filterJson.has("inputKey") && filterJson.has("inputValue") && - !filterJson.isNull("inputKey") && !filterJson.isNull("inputValue")) { - String inputKey = filterJson.getString("inputKey"); - String inputValue = filterJson.getString("inputValue"); - - ///For now, only allow the use of aaf_username and dcaeTargetType input key - if (!inputKey.equals("aaf_username") && !inputKey.equals("dcae_target_type")) - throw new Exception("ERROR: This input key is NOT supported"); - - //For each deployment, get the input keys that contain <inputKey> - //then check their value to see if it contains the desired <inputValue> - for (CloudifyDeployment dep : deployments) { - if (dep.inputs == null) - throw new Exception("ERROR: Deployment inputs not found, 'inputs' must be in the include filter for input filtering"); - Set<String> filteredDepInputKeys = dep.inputs.keySet().stream() - .filter(s -> s.contains(inputKey)).collect(Collectors.toSet()); - for (String filteredKey : filteredDepInputKeys) { - String value = dep.inputs.get(filteredKey).toString(); - if (!isNot && value.equals(inputValue)) { - newFilteredDeployments.add(dep); - break; - } - else if (isNot && !value.equals(inputValue)) { - newFilteredDeployments.add(dep); - break; - } - } - } - } - else { //If filter used but no valid KV found - throw new Exception("ERROR: Input filter was used but a valid inputKey and inputValue was not provided"); + private List<CloudifyDeployment> inputFilter(JSONObject filterJson, + List<CloudifyDeployment> deployments, boolean isNot) throws Exception { + List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); + if (filterJson != null && filterJson.has("inputKey") && filterJson.has("inputValue") + && !filterJson.isNull("inputKey") && !filterJson.isNull("inputValue")) { + String inputKey = filterJson.getString("inputKey"); + String inputValue = filterJson.getString("inputValue"); + + /// For now, only allow the use of aaf_username and dcaeTargetType input key + if (!inputKey.equals("aaf_username") && !inputKey.equals("dcae_target_type")) + throw new Exception("ERROR: This input key is NOT supported"); + + // For each deployment, get the input keys that contain <inputKey> + // then check their value to see if it contains the desired <inputValue> + for (CloudifyDeployment dep : deployments) { + if (dep.inputs == null) + throw new Exception( + "ERROR: Deployment inputs not found, 'inputs' must be in the include filter for input filtering"); + Set<String> filteredDepInputKeys = dep.inputs.keySet().stream() + .filter(s -> s.contains(inputKey)).collect(Collectors.toSet()); + for (String filteredKey : filteredDepInputKeys) { + String value = dep.inputs.get(filteredKey).toString(); + if (!isNot && value.equals(inputValue)) { + newFilteredDeployments.add(dep); + break; + } else if (isNot && !value.equals(inputValue)) { + newFilteredDeployments.add(dep); + break; + } + } + } + } else { // If filter used but no valid KV found + throw new Exception( + "ERROR: Input filter was used but a valid inputKey and inputValue was not provided"); } return newFilteredDeployments; } - + /* * Helper function to filter deployments by install status */ - private List<CloudifyDeployment> installStatusFilter(String filterString, List<CloudifyDeployment> deployments, boolean isNot) throws Exception { - List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); + private List<CloudifyDeployment> installStatusFilter(String filterString, + List<CloudifyDeployment> deployments, boolean isNot) throws Exception { + List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); if (filterString != null && !filterString.isEmpty()) { - - //For each deployment, get execution status and compare to filter - for (CloudifyDeployment dep : deployments) { - List<CloudifyExecution> executions = getInstallExecutionSummary(dep.id, dep.tenant_name).items; - if (executions.size() > 0) { - String status = executions.get(0).status; - if (!isNot && status.equals(filterString)) { - newFilteredDeployments.add(dep); - } - else if (isNot && !status.equals(filterString)) { - newFilteredDeployments.add(dep); - } - } - } - } - else { //If using filter but invalid install status given - throw new Exception("ERROR: Install Status filter was used but a valid installStatus String was not provided"); + + // For each deployment, get execution status and compare to filter + for (CloudifyDeployment dep : deployments) { + List<CloudifyExecution> executions = + getInstallExecutionSummary(dep.id, dep.tenant_name).items; + if (executions.size() > 0) { + String status = executions.get(0).status; + if (!isNot && status.equals(filterString)) { + newFilteredDeployments.add(dep); + } else if (isNot && !status.equals(filterString)) { + newFilteredDeployments.add(dep); + } + } + } + } else { // If using filter but invalid install status given + throw new Exception( + "ERROR: Install Status filter was used but a valid installStatus String was not provided"); } return newFilteredDeployments; } - + /* * Helper function to filter by isHelm */ - private List<CloudifyDeployment> helmFilter(String filterJson, List<CloudifyDeployment> deployments, boolean isNot) { - List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); + private List<CloudifyDeployment> helmFilter(String filterJson, + List<CloudifyDeployment> deployments, boolean isNot) + throws HttpStatusCodeException, Exception { + List<CloudifyDeployment> newFilteredDeployments = new ArrayList<CloudifyDeployment>(); if (filterJson != null && !filterJson.isEmpty()) { - - //For each deployment, get blueprint and see if it has helm plugin and compare to filter - for (CloudifyDeployment dep : deployments) { + + // For each deployment, get blueprint and see if it has helm plugin and compare to + // filter + for (CloudifyDeployment dep : deployments) { CloudifyBlueprintList bpList = getBlueprint(dep.blueprint_id, dep.tenant_name); - Map<String, Object> bpPlan = bpList.items.get(0).plan; + Map<String, Object> bpPlan = bpList.items.get(0).plan; Map<String, String> workflows = (Map<String, String>) bpPlan.get("workflows"); - Map<String, String> pluginInfo = ((List<Map<String, String>>) bpPlan - .get("deployment_plugins_to_install")).get(0); + Map<String, String> pluginInfo = + ((List<Map<String, String>>) bpPlan.get("deployment_plugins_to_install")) + .get(0); if (pluginInfo.get("name").equals("helm-plugin")) { - if (!isNot && (filterJson.equals("true") || filterJson.equals("True") || filterJson.equals("TRUE"))) - newFilteredDeployments.add(dep); - else if (isNot && (filterJson.equals("false") || filterJson.equals("False") || filterJson.equals("FALSE"))) - newFilteredDeployments.add(dep); - } - else - if (!isNot && (filterJson.equals("false") || filterJson.equals("False") || filterJson.equals("FALSE"))) - newFilteredDeployments.add(dep); - else if (isNot && (filterJson.equals("true") || filterJson.equals("True") || filterJson.equals("TRUE"))) - newFilteredDeployments.add(dep); - } - } - else { //If not using filter, just return original deployments - newFilteredDeployments = deployments; + if (!isNot && (filterJson.equals("true") || filterJson.equals("True") + || filterJson.equals("TRUE"))) + newFilteredDeployments.add(dep); + else if (isNot && (filterJson.equals("false") || filterJson.equals("False") + || filterJson.equals("FALSE"))) + newFilteredDeployments.add(dep); + } else if (!isNot && (filterJson.equals("false") || filterJson.equals("False") + || filterJson.equals("FALSE"))) + newFilteredDeployments.add(dep); + else if (isNot && (filterJson.equals("true") || filterJson.equals("True") + || filterJson.equals("TRUE"))) + newFilteredDeployments.add(dep); + } + } else { // If not using filter, just return original deployments + newFilteredDeployments = deployments; } return newFilteredDeployments; } @Override - public CloudifyDeploymentList getDeployment(final String id) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, new String[] { "id", id, "_all_tenants", "true" }); + public CloudifyDeploymentList getDeployment(final String id) + throws HttpStatusCodeException, Exception { + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"id", id, "_all_tenants", "true"}); logger.debug(EELFLoggerDelegate.debugLogger, "getDeployment: url {}", url); - ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); + ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, + null, new ParameterizedTypeReference<CloudifyDeploymentList>() {}); return response.getBody(); } @Override - public CloudifyDeploymentList getDeployment(final String id, final String tenant) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, new String[] { "id", id}); + public CloudifyDeploymentList getDeployment(final String id, final String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, new String[] {"id", id}); logger.debug(EELFLoggerDelegate.debugLogger, "getDeployment: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifyDeploymentList>() { - }); + ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, + entity, new ParameterizedTypeReference<CloudifyDeploymentList>() {}); return response.getBody(); } @Override - public CloudifyDeploymentList getDeploymentInputs(final String id, final String tenant) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, new String[] { "id", id, "_include", "inputs" }); + public CloudifyDeploymentList getDeploymentInputs(final String id, final String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"id", id, "_include", "inputs"}); logger.debug(EELFLoggerDelegate.debugLogger, "getDeployment: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET, entity, new ParameterizedTypeReference<CloudifyDeploymentList>() {}); return response.getBody(); } - + /** * Get a cloudify secret * @@ -1068,12 +1087,11 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl */ @Override public CloudifySecret getSecret(String secretName, String tenant) { - String url = buildUrl(new String[] { baseUrl, SECRETS, secretName }, null); + String url = buildUrl(new String[] {baseUrl, SECRETS, secretName}, null); logger.debug(EELFLoggerDelegate.debugLogger, "getSecrets: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); ResponseEntity<CloudifySecret> response = restTemplate.exchange(url, HttpMethod.GET, entity, - new ParameterizedTypeReference<CloudifySecret>() { - }); + new ParameterizedTypeReference<CloudifySecret>() {}); return response.getBody(); } @@ -1082,22 +1100,22 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl * * @return List<CloudifyPlugin> */ - public CloudifyPluginList getPlugins() { - String url = buildUrl(new String[] { baseUrl, PLUGINS }, null); + public CloudifyPluginList getPlugins() throws Exception { + String url = buildUrl(new String[] {baseUrl, PLUGINS}, null); logger.debug(EELFLoggerDelegate.debugLogger, "getPlugins: url {}", url); - ResponseEntity<CloudifyPluginList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<CloudifyPluginList>() { - }); + ResponseEntity<CloudifyPluginList> response = restTemplate.exchange(url, HttpMethod.GET, + null, new ParameterizedTypeReference<CloudifyPluginList>() {}); CloudifyPluginList result = response.getBody(); return result; } - + @Override - public void deleteBlueprint(String bpName, String tenant) { - String url = buildUrl(new String[] { baseUrl, BLUEPRINTS, bpName }, null); + public void deleteBlueprint(String bpName, String tenant) + throws Exception { + String url = buildUrl(new String[] {baseUrl, BLUEPRINTS, bpName}, null); logger.debug(EELFLoggerDelegate.debugLogger, "deleteBlueprint: url {}", url); HttpEntity<String> entity = getTenantHeader(tenant); - restTemplate.exchange(url, HttpMethod.DELETE, entity, new ParameterizedTypeReference<CloudifyBlueprint>() { - }); + restTemplate.exchange(url, HttpMethod.DELETE, entity, + new ParameterizedTypeReference<CloudifyBlueprint>() {}); } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulClient.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulClient.java index 90da400..7b393a3 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulClient.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulClient.java @@ -2,35 +2,33 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; -import java.net.URL; import java.util.List; import org.onap.ccsdk.dashboard.model.consul.ConsulDatacenter; import org.onap.ccsdk.dashboard.model.consul.ConsulDeploymentHealth; -import org.onap.ccsdk.dashboard.model.consul.ConsulHealthServiceRegistration; import org.onap.ccsdk.dashboard.model.consul.ConsulNodeInfo; import org.onap.ccsdk.dashboard.model.consul.ConsulServiceHealth; import org.onap.ccsdk.dashboard.model.consul.ConsulServiceInfo; -import org.springframework.web.client.RestTemplate; +import org.springframework.web.client.HttpStatusCodeException; /** * Defines the interface of the Consul REST client. @@ -42,7 +40,7 @@ public interface ConsulClient { * * @return List of ConsulServiceHealth */ - public List<ConsulServiceInfo> getServices(String datacenter); + public List<ConsulServiceInfo> getServices(String datacenter) throws Exception; /** * Gets the status for the specified service on all nodes. @@ -50,24 +48,26 @@ public interface ConsulClient { * @param serviceName Service name * @return List of ConsulServiceHealth */ - public List<ConsulServiceHealth> getServiceHealth(String datacenter, String srvcName); - + public List<ConsulServiceHealth> getServiceHealth(String datacenter, String srvcName) + throws Exception; + /** * Gets the status for the service which corresponds to deployment Id on all nodes. - * Filters services on Consul to find services that contain service tag that + * Filters services on Consul to find services that contain service tag that * matches the given deployment id * * @param deploymentId Deployment Id * @return List of ConsulServiceHealth */ - public ConsulDeploymentHealth getServiceHealthByDeploymentId(String deploymentId); + public ConsulDeploymentHealth getServiceHealthByDeploymentId(String deploymentId) + throws Exception; /** * Gets all the nodes that are monitored by Consul. * * @return List of ConsulNodeHealth */ - public List<ConsulNodeInfo> getNodes(String datacenter); + public List<ConsulNodeInfo> getNodes(String datacenter) throws Exception; /** * Gets the status for all registered services running on the specified node. @@ -75,7 +75,8 @@ public interface ConsulClient { * @param nodeId Node ID * @return List of ConsulServiceHealth */ - public List<ConsulServiceHealth> getNodeServicesHealth(String datacenter, String nodeId); + public List<ConsulServiceHealth> getNodeServicesHealth(String datacenter, String nodeId) + throws Exception; /** * Gets all the data centers that are monitored by Consul. diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImpl.java index 911e342..bc9b6d1 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImpl.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImpl.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.net.MalformedURLException; @@ -36,40 +36,30 @@ import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import org.json.JSONArray; -import org.json.JSONObject; +import org.onap.ccsdk.dashboard.exceptions.DashboardControllerException; import org.onap.ccsdk.dashboard.model.cloudify.CloudifySecret; -import org.onap.ccsdk.dashboard.model.cloudify.CloudifyTenantList; import org.onap.ccsdk.dashboard.model.consul.ConsulDatacenter; -import org.onap.ccsdk.dashboard.model.consul.ConsulHealthServiceRegistration; -import org.onap.ccsdk.dashboard.model.consul.ConsulHealthServiceRegistration.EndpointCheck; +import org.onap.ccsdk.dashboard.model.consul.ConsulDeploymentHealth; import org.onap.ccsdk.dashboard.model.consul.ConsulNodeInfo; import org.onap.ccsdk.dashboard.model.consul.ConsulServiceHealth; import org.onap.ccsdk.dashboard.model.consul.ConsulServiceInfo; -import org.onap.ccsdk.dashboard.model.consul.ConsulDeploymentHealth; import org.onap.ccsdk.dashboard.util.DashboardProperties; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.client.HttpStatusCodeException; -import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - @org.springframework.stereotype.Service public class ConsulRestClientImpl extends RestClientBase implements ConsulClient { private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulRestClientImpl.class); private String baseUrl; - private String consul_acl_token; - private HttpEntity<String> token_entity; + private String consulAclToken; + private HttpEntity<String> tokenEntity; private static final String API_VER = "v1"; private static final String CATALOG = "catalog"; @@ -78,16 +68,17 @@ public class ConsulRestClientImpl extends RestClientBase implements ConsulClient private static final String CHECKS = "checks"; private static final String STATE = "state"; private static final String ANY = "any"; + private static final String APP_PROP_PREFIX = "site.primary"; @PostConstruct - public void init() { - if (consul_acl_token == null || consul_acl_token.isEmpty()) { - consul_acl_token = getConsulAcl(); + public void init() throws DashboardControllerException { + if (consulAclToken == null || consulAclToken.isEmpty()) { + consulAclToken = getConsulAcl(); } - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); } - String webapiUrl = DashboardProperties.getControllerProperty("site.primary", + String webapiUrl = DashboardProperties.getControllerProperty(APP_PROP_PREFIX, DashboardProperties.SITE_SUBKEY_CONSUL_URL); if (webapiUrl == null) throw new IllegalArgumentException("Null URL not permitted"); @@ -96,7 +87,7 @@ public class ConsulRestClientImpl extends RestClientBase implements ConsulClient url = new URL(webapiUrl); baseUrl = url.toExternalForm(); } catch (MalformedURLException ex) { - throw new RuntimeException("Failed to parse URL", ex); + throw new DashboardControllerException("Failed to parse URL", ex); } String urlScheme = webapiUrl.split(":")[0]; if (restTemplate == null) { @@ -107,16 +98,16 @@ public class ConsulRestClientImpl extends RestClientBase implements ConsulClient protected String getConsulAcl() { return getConsulAcl(null); } - + protected String getConsulAcl(RestTemplate cfyRest) { - String acl_token = null; - String webapiUrl = DashboardProperties.getControllerProperty("site.primary", + String aclToken = null; + String webapiUrl = DashboardProperties.getControllerProperty(APP_PROP_PREFIX, DashboardProperties.SITE_SUBKEY_CLOUDIFY_URL); String cfyBaseUrl = ""; - if (webapiUrl != null) { - String user = DashboardProperties.getControllerProperty("site.primary", + if (webapiUrl != null) { + String user = DashboardProperties.getControllerProperty(APP_PROP_PREFIX, DashboardProperties.SITE_SUBKEY_CLOUDIFY_USERNAME); - String pass = DashboardProperties.getControllerProperty("site.primary", + String pass = DashboardProperties.getControllerProperty(APP_PROP_PREFIX, DashboardProperties.SITE_SUBKEY_CLOUDIFY_PASS); URL url = null; try { @@ -124,28 +115,28 @@ public class ConsulRestClientImpl extends RestClientBase implements ConsulClient cfyBaseUrl = url.toExternalForm(); String urlScheme = webapiUrl.split(":")[0]; if (cfyRest == null) { - cfyRest = - createCfyRestTemplate(url, user, pass, urlScheme); + cfyRest = createCfyRestTemplate(url, user, pass, urlScheme); } - String urlStr = buildUrl(new String[] { cfyBaseUrl, "secrets", "eom-dashboard-acl-token" }, null); + String urlStr = + buildUrl(new String[] {cfyBaseUrl, "secrets", "eom-dashboard-acl-token"}, null); logger.debug(EELFLoggerDelegate.debugLogger, "getAclSecret: url {}", urlStr); - ResponseEntity<CloudifySecret> response = cfyRest.exchange(urlStr, HttpMethod.GET, null, - new ParameterizedTypeReference<CloudifySecret>() { - }); - acl_token = response.getBody().getValue(); + ResponseEntity<CloudifySecret> response = cfyRest.exchange(urlStr, HttpMethod.GET, + null, new ParameterizedTypeReference<CloudifySecret>() {}); + aclToken = response.getBody().getValue(); } catch (MalformedURLException me) { - //throw new RuntimeException("Failed to parse URL", ex); - logger.error(EELFLoggerDelegate.errorLogger, "Failed to parse URL - malformed" + me.getMessage()); + logger.error(EELFLoggerDelegate.errorLogger, + "Failed to parse URL - malformed" + me.getMessage()); } catch (Exception e) { logger.error(EELFLoggerDelegate.errorLogger, e.getMessage()); - acl_token = ""; + aclToken = ""; } } - return acl_token; + return aclToken; } - - protected RestTemplate createCfyRestTemplate(URL url, String user, String pass, String urlScheme) throws Exception { + + protected RestTemplate createCfyRestTemplate(URL url, String user, String pass, + String urlScheme) throws Exception { RestTemplate restTempl = null; final HttpHost httpHost = new HttpHost(url.getHost(), url.getPort(), urlScheme); // Build a client with a credentials provider @@ -153,222 +144,214 @@ public class ConsulRestClientImpl extends RestClientBase implements ConsulClient if (user != null && pass != null) { CredentialsProvider credsProvider = new BasicCredentialsProvider(); - credsProvider.setCredentials(new AuthScope(httpHost), new UsernamePasswordCredentials(user, pass)); - httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build(); + credsProvider.setCredentials(new AuthScope(httpHost), + new UsernamePasswordCredentials(user, pass)); + httpClient = + HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build(); } else { httpClient = HttpClientBuilder.create().build(); } // Create request factory - HttpComponentsClientHttpRequestFactoryBasicAuth requestFactory = new HttpComponentsClientHttpRequestFactoryBasicAuth( - httpHost); + HttpComponentsClientHttpRequestFactoryBasicAuth requestFactory = + new HttpComponentsClientHttpRequestFactoryBasicAuth(httpHost); requestFactory.setHttpClient(httpClient); restTempl = new RestTemplate(); restTempl.setRequestFactory(requestFactory); return restTempl; } - + /** * @param consul_acl_token the consul_acl_token to set */ - public void setConsul_acl_token(String consul_acl_token) { - this.consul_acl_token = consul_acl_token; + public void setConsulAclToken(String consulAclToken) { + this.consulAclToken = consulAclToken; } - + @Override - public List<ConsulServiceHealth> getServiceHealth(String dc, String srvc) { - String url = buildUrl(new String[] { baseUrl, API_VER, HEALTH, CHECKS, srvc }, new String[] { "dc", dc }); + public List<ConsulServiceHealth> getServiceHealth(String dc, String srvc) throws Exception { + String url = buildUrl(new String[] {baseUrl, API_VER, HEALTH, CHECKS, srvc}, + new String[] {"dc", dc}); logger.debug(EELFLoggerDelegate.debugLogger, "getServiceHealth: url {}", url); ResponseEntity<List<ConsulServiceHealth>> response = null; + List<ConsulServiceHealth> result = new ArrayList<>(); try { - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulServiceHealth>>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulServiceHealth>>() {}); } catch (HttpStatusCodeException e) { if (e.getStatusCode().value() == 403) { // update consul ACL token header and retry - consul_acl_token = getConsulAcl(); - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulServiceHealth>>() { - }); + consulAclToken = getConsulAcl(); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulServiceHealth>>() {}); } else { throw e; - } + } } } - if (!response.getBody().isEmpty()) { - return response.getBody(); - } else { - return null; + if (response != null && !response.getBody().isEmpty()) { + result = response.getBody(); } + return result; } - + @Override - public ConsulDeploymentHealth getServiceHealthByDeploymentId(String deploymentId) { - String url = buildUrl(new String[] { baseUrl, API_VER, HEALTH, STATE, ANY }, - new String[] {"filter", "ServiceTags contains " + "\"" + deploymentId + "\""}); + public ConsulDeploymentHealth getServiceHealthByDeploymentId(String deploymentId) + throws Exception { + String url = buildUrl(new String[] {baseUrl, API_VER, HEALTH, STATE, ANY}, + new String[] {"filter", "ServiceTags contains " + "\"" + deploymentId + "\""}); logger.debug(EELFLoggerDelegate.debugLogger, "getServiceHealthByDeploymentId: url {}", url); ResponseEntity<List<ConsulServiceHealth>> response = null; + ConsulDeploymentHealth result = null; try { - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulServiceHealth>>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulServiceHealth>>() {}); } catch (HttpStatusCodeException e) { if (e.getStatusCode().value() == 403) { // update consul ACL token header and retry - consul_acl_token = getConsulAcl(); - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulServiceHealth>>() { - }); + consulAclToken = getConsulAcl(); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulServiceHealth>>() {}); } else { throw e; - } + } } } - if (!response.getBody().isEmpty()) { - return new ConsulDeploymentHealth.Builder(response.getBody().get(0)).build(); - } else { - return null; + if (response != null && !response.getBody().isEmpty()) { + result = new ConsulDeploymentHealth.Builder(response.getBody().get(0)).build(); } + return result; } @Override - public List<ConsulServiceInfo> getServices(String dc) { - String url = buildUrl(new String[] { baseUrl, API_VER, CATALOG, SERVICES }, new String[] { "dc", dc }); + public List<ConsulServiceInfo> getServices(String dc) throws Exception { + String url = + buildUrl(new String[] {baseUrl, API_VER, CATALOG, SERVICES}, new String[] {"dc", dc}); logger.debug(EELFLoggerDelegate.debugLogger, "getServices: url {}", url); ResponseEntity<Map<String, Object>> response = null; + List<ConsulServiceInfo> result = new ArrayList<>(); try { - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<Map<String, Object>>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<Map<String, Object>>() {}); } catch (HttpStatusCodeException e) { if (e.getStatusCode().value() == 403) { // update consul ACL token header and retry - consul_acl_token = getConsulAcl(); - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<Map<String, Object>>() { - }); + consulAclToken = getConsulAcl(); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<Map<String, Object>>() {}); } else { throw e; - } + } } } - if (!response.getBody().isEmpty()) { + if (response != null && !response.getBody().isEmpty()) { Map<String, Object> serviceInfo = response.getBody(); - List<ConsulServiceInfo> list = new ArrayList<>(); for (Map.Entry<String, Object> entry : serviceInfo.entrySet()) { // Be defensive List<String> addrs = null; - if (entry.getValue() instanceof List<?>) + if (entry.getValue() instanceof List<?>) { addrs = (List<String>) entry.getValue(); - else + } + else { addrs = new ArrayList<>(); - list.add(new ConsulServiceInfo(entry.getKey(), addrs)); + } + result.add(new ConsulServiceInfo(entry.getKey(), addrs)); } - return list; - } else { - return null; } + return result; } @Override - public List<ConsulNodeInfo> getNodes(String dc) { - String url = buildUrl(new String[] { baseUrl, API_VER, CATALOG, "nodes" }, new String[] { "dc", dc }); + public List<ConsulNodeInfo> getNodes(String dc) throws Exception { + String url = + buildUrl(new String[] {baseUrl, API_VER, CATALOG, "nodes"}, new String[] {"dc", dc}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodesHealth: url {}", url); ResponseEntity<List<ConsulNodeInfo>> response = null; + List<ConsulNodeInfo> result = new ArrayList<>(); try { - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulNodeInfo>>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulNodeInfo>>() {}); } catch (HttpStatusCodeException e) { if (e.getStatusCode().value() == 403) { // update consul ACL token header and retry - consul_acl_token = getConsulAcl(); - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulNodeInfo>>() { - }); + consulAclToken = getConsulAcl(); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulNodeInfo>>() {}); } else { throw e; - } + } } } - if (!response.getBody().isEmpty()) { - return response.getBody(); - } else { - return null; - } + if (response != null && !response.getBody().isEmpty()) { + result = response.getBody(); + } + return result; } @Override - public List<ConsulServiceHealth> getNodeServicesHealth(String dc, String nodeId) { - String url = buildUrl(new String[] { baseUrl, API_VER, HEALTH, "node", nodeId }, new String[] { "dc", dc }); + public List<ConsulServiceHealth> getNodeServicesHealth(String dc, String nodeId) + throws Exception { + String url = buildUrl(new String[] {baseUrl, API_VER, HEALTH, "node", nodeId}, + new String[] {"dc", dc}); logger.debug(EELFLoggerDelegate.debugLogger, "getNodeServicesHealth: url {}", url); ResponseEntity<List<ConsulServiceHealth>> response = null; + List<ConsulServiceHealth> result = new ArrayList<>(); try { - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulServiceHealth>>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulServiceHealth>>() {}); } catch (HttpStatusCodeException e) { if (e.getStatusCode().value() == 403) { // update consul ACL token header and retry - consul_acl_token = getConsulAcl(); - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<ConsulServiceHealth>>() { - }); + consulAclToken = getConsulAcl(); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<ConsulServiceHealth>>() {}); } else { throw e; - } + } } } - if (!response.getBody().isEmpty()) { - return response.getBody(); - } else { - return null; + if (response != null && !response.getBody().isEmpty()) { + result = response.getBody(); } + return result; } @Override public List<ConsulDatacenter> getDatacenters() { - String url = buildUrl(new String[] { baseUrl, API_VER, CATALOG, "datacenters" }, null); + String url = buildUrl(new String[] {baseUrl, API_VER, CATALOG, "datacenters"}, null); logger.debug(EELFLoggerDelegate.debugLogger, "getDatacentersHealth: url {}", url); ResponseEntity<List<String>> response = null; + List<ConsulDatacenter> result = new ArrayList<>(); try { - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<String>>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<String>>() {}); } catch (HttpStatusCodeException e) { if (e.getStatusCode().value() == 403) { // update consul ACL token header and retry - consul_acl_token = getConsulAcl(); - if (consul_acl_token != null && !consul_acl_token.isEmpty()) { - token_entity = getConsulTokenHeader(consul_acl_token); - response = restTemplate.exchange(url, HttpMethod.GET, token_entity, - new ParameterizedTypeReference<List<String>>() { - }); + consulAclToken = getConsulAcl(); + if (consulAclToken != null && !consulAclToken.isEmpty()) { + tokenEntity = getConsulTokenHeader(consulAclToken); + response = restTemplate.exchange(url, HttpMethod.GET, tokenEntity, + new ParameterizedTypeReference<List<String>>() {}); } else { throw e; - } + } } } - if (!response.getBody().isEmpty()) { - List<String> list = response.getBody(); - List<ConsulDatacenter> result = new ArrayList<>(); - for (String dc : list) - result.add(new ConsulDatacenter(dc)); - return result; - } else { - return null; - } - + if (response != null && !response.getBody().isEmpty()) { + for (String dc : response.getBody()) + result.add(new ConsulDatacenter(dc)); + } + return result; } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClient.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClient.java index 012ec32..3535db0 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClient.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClient.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.util.stream.Stream; @@ -41,6 +41,7 @@ public interface DeploymentHandlerClient { * */ public String checkHealth(); + /** * Gets a list of all service deployments known to the orchestrator. * @@ -53,7 +54,7 @@ public interface DeploymentHandlerClient { * to a single service type. * * @param serviceTypeId Service type identifier for the type whose deployments - * are to be listed. + * are to be listed. * * @return Stream<String> */ @@ -62,35 +63,35 @@ public interface DeploymentHandlerClient { /** * Request deployment of a DCAE Service. * - * @param deploymentId Unique deployment identifier assigned by the API - * client. + * @param deploymentId Unique deployment identifier assigned by the API + * client. * * @param deploymentRequest Deployment request object that contains the - * necessary fields for service deployment. + * necessary fields for service deployment. * * @return DeploymentResponse Response body for a PUT or DELETE to - * /dcae-deployments/{deploymentId} + * /dcae-deployments/{deploymentId} * */ - public DeploymentResponse putDeployment(String deploymentId, String tenant, DeploymentRequest deploymentRequest, - HttpServletRequest request) - throws BadRequestException, ServiceAlreadyExistsException, ServerErrorException, DownstreamException; + public DeploymentResponse putDeployment(String deploymentId, String tenant, + DeploymentRequest deploymentRequest, HttpServletRequest request) throws Exception; /** * For API use, Request deployment of a DCAE Service. + * s * - * @param deploymentId Unique deployment identifier assigned by the API - * client. + * @param deploymentId Unique deployment identifier assigned by the API + * client. * * @param deploymentRequest Deployment request object that contains the - * necessary fields for service deployment. + * necessary fields for service deployment. * * @return DeploymentResponse Response body for a PUT or DELETE to - * /dcae-deployments/{deploymentId} + * /dcae-deployments/{deploymentId} * */ - public DeploymentResponse putDeployment(String deploymentId, String tenant, DeploymentRequest deploymentRequest) - throws BadRequestException, ServiceAlreadyExistsException, ServerErrorException, DownstreamException; + public DeploymentResponse putDeployment(String deploymentId, String tenant, + DeploymentRequest deploymentRequest) throws Exception; /** * Uninstall the DCAE service and remove all associated data from the @@ -100,8 +101,8 @@ public interface DeploymentHandlerClient { * */ public void deleteDeployment(String deploymentId, String tenant, HttpServletRequest request) - throws BadRequestException, ServerErrorException, DownstreamException, DeploymentNotFoundException; - + throws Exception; + /** * For API use, Uninstall the DCAE service and remove all associated data from the * orchestrator. @@ -109,6 +110,5 @@ public interface DeploymentHandlerClient { * @param deploymentId Unique deployment identifier assigned by the API client. * */ - public void deleteDeployment(String deploymentId, String tenant) - throws BadRequestException, ServerErrorException, DownstreamException, DeploymentNotFoundException; + public void deleteDeployment(String deploymentId, String tenant) throws Exception; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImpl.java index 803c710..0eb51bc 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImpl.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImpl.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.io.IOException; @@ -36,6 +36,7 @@ import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import org.onap.ccsdk.dashboard.exceptions.BadRequestException; +import org.onap.ccsdk.dashboard.exceptions.DashboardControllerException; import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException; import org.onap.ccsdk.dashboard.exceptions.DownstreamException; import org.onap.ccsdk.dashboard.exceptions.ServerErrorException; @@ -70,15 +71,14 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo private String baseUrl; private static final String DEPLOYMENTS = "dcae-deployments"; - private static final String UPDATE_PATH = "dcae-deployment-update"; private static final String HEALTH_CHECK = "healthcheck"; private static final String SERVICE_ID = "service-list"; @Autowired CloudifyClient cloudifyClient; - - private AbstractCacheManager cacheManager; - + + private AbstractCacheManager cacheManager; + @Autowired public void setCacheManager(AbstractCacheManager cacheManager) { this.cacheManager = cacheManager; @@ -87,10 +87,11 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo public AbstractCacheManager getCacheManager() { return cacheManager; } + protected final ObjectMapper objectMapper = new ObjectMapper(); @PostConstruct - public void init() { + public void init() throws DashboardControllerException { String webapiUrl = DashboardProperties.getControllerProperty("site.primary", DashboardProperties.SITE_SUBKEY_DHANDLER_URL); if (webapiUrl == null) @@ -100,7 +101,7 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo url = new URL(webapiUrl); baseUrl = url.toExternalForm(); } catch (MalformedURLException ex) { - throw new RuntimeException("Failed to parse URL", ex); + throw new DashboardControllerException("Failed to parse URL", ex); } String urlScheme = webapiUrl.split(":")[0]; if (restTemplate == null) { @@ -110,44 +111,42 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo } public String checkHealth() { - String url = buildUrl(new String[] { baseUrl, HEALTH_CHECK }, null); + String url = buildUrl(new String[] {baseUrl, HEALTH_CHECK}, null); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<String>() { - }); + new ParameterizedTypeReference<String>() {}); return response.getBody(); } - + public Stream<DeploymentLink> getDeployments() { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, null); - ResponseEntity<DeploymentsListResponse> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<DeploymentsListResponse>() { - }); + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, null); + ResponseEntity<DeploymentsListResponse> response = restTemplate.exchange(url, + HttpMethod.GET, null, new ParameterizedTypeReference<DeploymentsListResponse>() {}); DeploymentsListResponse result = response.getBody(); return result.getDeployments().stream(); } @Override public Stream<DeploymentLink> getDeployments(String serviceTypeId) { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, new String[] { "serviceTypeId", serviceTypeId }); - ResponseEntity<DeploymentsListResponse> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<DeploymentsListResponse>() { - }); + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS}, + new String[] {"serviceTypeId", serviceTypeId}); + ResponseEntity<DeploymentsListResponse> response = restTemplate.exchange(url, + HttpMethod.GET, null, new ParameterizedTypeReference<DeploymentsListResponse>() {}); DeploymentsListResponse result = response.getBody(); return result.getDeployments().stream(); } @Override - public DeploymentResponse putDeployment(String deploymentId, String tenant, DeploymentRequest deploymentRequest) - throws BadRequestException, ServiceAlreadyExistsException, ServerErrorException, DownstreamException { + public DeploymentResponse putDeployment(String deploymentId, String tenant, + DeploymentRequest deploymentRequest) throws Exception { return putDeployment(deploymentId, tenant, deploymentRequest, null); } - + + @SuppressWarnings("unchecked") @Override - public DeploymentResponse putDeployment(String deploymentId, String tenant, DeploymentRequest deploymentRequest, - HttpServletRequest request) - throws BadRequestException, ServiceAlreadyExistsException, ServerErrorException, DownstreamException { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS, deploymentId }, - new String[] { "cfy_tenant_name", tenant }); + public DeploymentResponse putDeployment(String deploymentId, String tenant, + DeploymentRequest deploymentRequest, HttpServletRequest request) throws Exception { + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS, deploymentId}, + new String[] {"cfy_tenant_name", tenant}); String user = ""; if (request != null) { user = UserUtils.getUserSession(request).getLoginId(); @@ -156,22 +155,21 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); ResponseEntity<DeploymentResponse> result = restTemplate.exchange(url, HttpMethod.PUT, - new HttpEntity<DeploymentRequest>(deploymentRequest, headers), - new ParameterizedTypeReference<DeploymentResponse>() { - }); - //cache handling + new HttpEntity<DeploymentRequest>(deploymentRequest, headers), + new ParameterizedTypeReference<DeploymentResponse>() {}); + // cache handling ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - List itemList = - (List<CloudifyDeployment>)getCacheManager().getObject(SERVICE_ID + ":" + tenant); - List itemExecList = (List<CloudifyDeploymentExt>)getCacheManager().getObject( - SERVICE_ID + ":" + tenant + ":ext"); - List itemHelmList = (List<CloudifyDeploymentExt>)getCacheManager().getObject( - SERVICE_ID + ":" + tenant + ":helm"); + List<CloudifyDeployment> itemList = + (List<CloudifyDeployment>) getCacheManager().getObject(SERVICE_ID + ":" + tenant); + List<CloudifyDeploymentExt> itemExecList = (List<CloudifyDeploymentExt>) getCacheManager() + .getObject(SERVICE_ID + ":" + tenant + ":ext"); + List<CloudifyDeploymentHelm> itemHelmList = (List<CloudifyDeploymentHelm>) getCacheManager() + .getObject(SERVICE_ID + ":" + tenant + ":helm"); lock.readLock().unlock(); if (itemList != null) { // add the new resource into app cache - CloudifyDeployment cfyDepl = + CloudifyDeployment cfyDepl = cloudifyClient.getDeploymentResource(deploymentId, tenant); lock.writeLock().lock(); itemList.add(0, cfyDepl); @@ -179,9 +177,9 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo if (itemExecList != null) { List<CloudifyDeployment> thisDep = new ArrayList<CloudifyDeployment>(); thisDep.add(cfyDepl); - List<CloudifyDeploymentExt> thisDepExec = + List<CloudifyDeploymentExt> thisDepExec = cloudifyClient.updateWorkflowStatus(thisDep); - List<CloudifyDeploymentHelm> thisDepHelm = + List<CloudifyDeploymentHelm> thisDepHelm = cloudifyClient.updateHelmInfo(thisDep); lock.writeLock().lock(); itemExecList.add(0, thisDepExec.get(0)); @@ -190,29 +188,28 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo } // handle the owner deployment map cache if (!user.isEmpty()) { - CloudifyDeployedTenant updDepl = - new CloudifyDeployedTenant(cfyDepl.id, cfyDepl.tenant_name, - cfyDepl.created_at, cfyDepl.updated_at); + CloudifyDeployedTenant updDepl = new CloudifyDeployedTenant(cfyDepl.id, + cfyDepl.tenant_name, cfyDepl.created_at, cfyDepl.updated_at); lock.readLock().lock(); - Map<String, List<CloudifyDeployedTenant>> deplPerOwner = - (Map<String, List<CloudifyDeployedTenant>>) - getCacheManager().getObject("owner_deploy_map"); + Map<String, List<CloudifyDeployedTenant>> deplPerOwner = + (Map<String, List<CloudifyDeployedTenant>>) getCacheManager() + .getObject("owner_deploy_map"); lock.readLock().unlock(); if (deplPerOwner != null) { - List<CloudifyDeployedTenant> currOwnedDepls = deplPerOwner.get(user); + List<CloudifyDeployedTenant> currOwnedDepls = deplPerOwner.get(user); if (currOwnedDepls != null) { currOwnedDepls.add(0, updDepl); } else { - currOwnedDepls = - new ArrayList<CloudifyDeployedTenant>(); - currOwnedDepls.add(updDepl); + currOwnedDepls = new ArrayList<CloudifyDeployedTenant>(); + currOwnedDepls.add(updDepl); } lock.writeLock().lock(); deplPerOwner.put(user, currOwnedDepls); lock.writeLock().unlock(); } else { deplPerOwner = new HashMap<String, List<CloudifyDeployedTenant>>(); - List<CloudifyDeployedTenant> deplForBpAggr = new ArrayList<CloudifyDeployedTenant>(); + List<CloudifyDeployedTenant> deplForBpAggr = + new ArrayList<CloudifyDeployedTenant>(); deplForBpAggr.add(updDepl); deplPerOwner.put(user, deplForBpAggr); } @@ -225,7 +222,7 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo StringBuilder errDetails = new StringBuilder(); errDetails.append(e.getMessage()).append(" ").append(errBody); if (e.getStatusCode().value() == 400 || e.getStatusCode().value() == 415 - || e.getStatusCode().value() == 404) { + || e.getStatusCode().value() == 404) { throw new BadRequestException(errDetails.toString()); } else if (e.getStatusCode().value() == 409) { throw new ServiceAlreadyExistsException(errDetails.toString()); @@ -239,29 +236,29 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo } @Override - public void deleteDeployment(String deploymentId, String tenant) - throws BadRequestException, ServerErrorException, DownstreamException, DeploymentNotFoundException { + public void deleteDeployment(String deploymentId, String tenant) throws Exception { deleteDeployment(deploymentId, tenant, null); } + @Override public void deleteDeployment(String deploymentId, String tenant, HttpServletRequest request) - throws BadRequestException, ServerErrorException, DownstreamException, DeploymentNotFoundException { - String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS, deploymentId }, - new String[] { "cfy_tenant_name", tenant, "force_uninstall", "true" }); + throws Exception { + String url = buildUrl(new String[] {baseUrl, DEPLOYMENTS, deploymentId}, + new String[] {"cfy_tenant_name", tenant, "force_uninstall", "true"}); try { String user = ""; if (request != null) { user = UserUtils.getUserSession(request).getLoginId(); } - restTemplate.exchange(url, HttpMethod.DELETE, null, new ParameterizedTypeReference<DeploymentResponse>() { - }); - CloudifyDeployment cfyDepl = - cloudifyClient.getDeploymentResource(deploymentId, tenant); + restTemplate.exchange(url, HttpMethod.DELETE, null, + new ParameterizedTypeReference<DeploymentResponse>() {}); + CloudifyDeployment cfyDepl = cloudifyClient.getDeploymentResource(deploymentId, tenant); // remove resource from app cache ReadWriteLock lock = new ReentrantReadWriteLock(); lock.readLock().lock(); - List itemList = - (List<CloudifyDeployment>)getCacheManager().getObject(SERVICE_ID + ":" + tenant); + @SuppressWarnings("unchecked") + List itemList = + (List<CloudifyDeployment>) getCacheManager().getObject(SERVICE_ID + ":" + tenant); lock.readLock().unlock(); if (itemList != null) { lock.writeLock().lock(); @@ -270,19 +267,19 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo // put updated collection back into cache getCacheManager().putObject(SERVICE_ID + ":" + tenant, itemList); lock.writeLock().unlock(); - } + } // handle the owner deployment map cache if (!user.isEmpty()) { lock.readLock().lock(); - Map<String, List<CloudifyDeployedTenant>> deplPerOwner = - (Map<String, List<CloudifyDeployedTenant>>) - getCacheManager().getObject("owner_deploy_map"); + @SuppressWarnings("unchecked") + Map<String, List<CloudifyDeployedTenant>> deplPerOwner = + (Map<String, List<CloudifyDeployedTenant>>) getCacheManager() + .getObject("owner_deploy_map"); lock.readLock().unlock(); if (deplPerOwner != null) { - List<CloudifyDeployedTenant> currOwnedDepls = deplPerOwner.get(user); - CloudifyDeployedTenant updDepl = - new CloudifyDeployedTenant(cfyDepl.id, cfyDepl.tenant_name, - cfyDepl.created_at, cfyDepl.updated_at); + List<CloudifyDeployedTenant> currOwnedDepls = deplPerOwner.get(user); + CloudifyDeployedTenant updDepl = new CloudifyDeployedTenant(cfyDepl.id, + cfyDepl.tenant_name, cfyDepl.created_at, cfyDepl.updated_at); if (currOwnedDepls != null) { currOwnedDepls.remove(updDepl); lock.writeLock().lock(); @@ -295,7 +292,8 @@ public class DeploymentHandlerClientImpl extends RestClientBase implements Deplo DeploymentErrorResponse errBody = null; String errMsg = ""; try { - errBody = objectMapper.readValue(e.getResponseBodyAsString(), DeploymentErrorResponse.class); + errBody = objectMapper.readValue(e.getResponseBodyAsString(), + DeploymentErrorResponse.class); } catch (IOException e1) { errBody = null; } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/HttpComponentsClientHttpRequestFactoryBasicAuth.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/HttpComponentsClientHttpRequestFactoryBasicAuth.java index 0c4053c..86f6773 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/HttpComponentsClientHttpRequestFactoryBasicAuth.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/HttpComponentsClientHttpRequestFactoryBasicAuth.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.net.URI; @@ -36,10 +36,9 @@ import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; /** * Utility class to enable Basic HTTP Authentication with Spring REST templates. * - * From: - * http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1/ */ -public class HttpComponentsClientHttpRequestFactoryBasicAuth extends HttpComponentsClientHttpRequestFactory { +public class HttpComponentsClientHttpRequestFactoryBasicAuth + extends HttpComponentsClientHttpRequestFactory { private HttpHost host; diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/InventoryClient.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/InventoryClient.java index 8f19e9b..0259838 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/InventoryClient.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/InventoryClient.java @@ -2,42 +2,38 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.util.Optional; -import java.util.Set; import java.util.stream.Stream; -import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceAlreadyDeactivatedException; -import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceNotFoundException; import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeActiveException; import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeAlreadyDeactivatedException; import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException; -import org.onap.ccsdk.dashboard.model.inventory.InventoryProperty; -import org.onap.ccsdk.dashboard.model.inventory.Service; import org.onap.ccsdk.dashboard.model.inventory.ServiceQueryParams; import org.onap.ccsdk.dashboard.model.inventory.ServiceRefList; import org.onap.ccsdk.dashboard.model.inventory.ServiceType; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest; import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeSummary; +import org.springframework.web.client.HttpStatusCodeException; /** * Defines the interface of the Inventory Client. @@ -56,24 +52,25 @@ public interface InventoryClient { * @return void */ public void cacheServiceTypes(); - + /** * Gets a list of all DCAE Service Type objects. * * @return Collection<ServiceType> */ - public Stream<ServiceTypeSummary> getServiceTypes(); - + public Stream<ServiceTypeSummary> getServiceTypes() throws Exception; + /** * Gets a list of all DCAE Service Type objects that fall under a specified * filter. * * @param serviceTypeQueryParams ServiceTypeQueryParams object containing query - * parameters. + * parameters. * * @return Collection<ServiceType> */ - public Stream<ServiceTypeSummary> getServiceTypes(ServiceTypeQueryParams serviceTypeQueryParams); + public Stream<ServiceTypeSummary> getServiceTypes( + ServiceTypeQueryParams serviceTypeQueryParams); /** * Inserts a new DCAE Service Type, or updates an existing instance associated @@ -85,9 +82,10 @@ public interface InventoryClient { * @return ServiceType * * @throws ServiceTypeActiveException if the service type exists and has active - * instances + * instances */ - public ServiceType addServiceType(ServiceType serviceType) throws ServiceTypeActiveException; + public ServiceType addServiceType(ServiceType serviceType) + throws Exception; /** * Inserts a new DCAE Service Type, or updates an existing instance associated @@ -98,9 +96,10 @@ public interface InventoryClient { * @return * * @throws ServiceTypeActiveException if the service type exists and has active - * instances + * instances */ - public ServiceType addServiceType(ServiceTypeRequest serviceTypeRequest) throws ServiceTypeActiveException; + public ServiceType addServiceType(ServiceTypeRequest serviceTypeRequest) + throws Exception; /** * Gets a single DCAE Service Type object with the ID typeId. @@ -109,72 +108,34 @@ public interface InventoryClient { * * @return Optional<ServiceType> */ - public Optional<ServiceType> getServiceType(String typeId); + public Optional<ServiceType> getServiceType(String typeId) + throws Exception; /** * Deactivates an existing DCAE Service Type instance with the ID typeId. * * @param typeId ID of the DCAE Service Type to be deactivated. * - * @exception ServiceTypeNotFoundException Thrown if the DCAE Service - * Type is not found. + * @exception ServiceTypeNotFoundException Thrown if the DCAE Service + * Type is not found. * * @exception ServiceTypeAlreadyDeactivatedException Thrown if the DCAE Service - * Type is already - * deactivated. + * Type is already + * deactivated. */ public void deleteServiceType(String typeId) - throws ServiceTypeNotFoundException, ServiceTypeAlreadyDeactivatedException; - - /** - * Gets a list of all DCAE Service objects. - * - * @return Collection<Service> - */ - //public Stream<Service> getServices(); - - /** - * Gets a list of all DCAE Service objects that fall under a specified filter. - * - * @param serviceQueryParams ServiceQueryParams object containing query - * parameters. - * - * @return Collection<Service> - */ - //public Stream<Service> getServices(ServiceQueryParams serviceQueryParams); + throws Exception; /** * Gets a list of all DCAE Service References that match a service type filter. * * @param serviceQueryParams ServiceQueryParams object containing query - * parameters. + * parameters. * * @return ServiceRefList */ public ServiceRefList getServicesForType(ServiceQueryParams serviceQueryParams); - /** - * Gets a set of properties on Service objects that match the provided - * propertyName - * - * @param propertyName Property to find unique values. Restricted to type, - * vnfType, vnfLocation. - * - * @return Set<InventoryProperty> - */ - /* - * public Set<InventoryProperty> getPropertiesOfServices(String propertyName); - */ - /** - * Gets a single DCAE Service object corresponding to the specified serviceId. - * - * @param serviceId Service ID of the DCAE Service to be retrieved. - * - * @return Service - */ - - //public Optional<Service> getService(String serviceId); - public String getBaseUrl(); } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestClientBase.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestClientBase.java index 69fca94..28bc7b7 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestClientBase.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestClientBase.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.net.URL; @@ -30,7 +30,6 @@ import org.apache.http.client.CredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; -import org.onap.ccsdk.dashboard.model.cloudify.CloudifyDeploymentList; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.web.client.RestTemplate; @@ -38,7 +37,6 @@ import org.springframework.web.client.RestTemplate; /** * Base class for all the Rest client implementations * - * @author rp5662 * */ public class RestClientBase { @@ -60,18 +58,17 @@ public class RestClientBase { if (user != null && pass != null) { CredentialsProvider credsProvider = new BasicCredentialsProvider(); - credsProvider.setCredentials(new AuthScope(httpHost), new UsernamePasswordCredentials(user, pass)); - httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build(); + credsProvider.setCredentials(new AuthScope(httpHost), + new UsernamePasswordCredentials(user, pass)); + httpClient = + HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build(); } else { httpClient = HttpClientBuilder.create().build(); } // Create request factory - HttpComponentsClientHttpRequestFactoryBasicAuth requestFactory = new HttpComponentsClientHttpRequestFactoryBasicAuth( - httpHost); + HttpComponentsClientHttpRequestFactoryBasicAuth requestFactory = + new HttpComponentsClientHttpRequestFactoryBasicAuth(httpHost); requestFactory.setHttpClient(httpClient); - //requestFactory.setReadTimeout(10000); - //requestFactory.setConnectionRequestTimeout(2000); - //requestFactory.setConnectTimeout(10000); // Put the factory in the template restTempl = new RestTemplate(); restTempl.setRequestFactory(requestFactory); @@ -85,7 +82,7 @@ public class RestClientBase { * @param base * @param suffix * @param queryParams key-value pairs; i.e. must have an even number of entries. - * Ignored if null. + * Ignored if null. * @return */ protected String buildUrl(final String[] path, final String[] queryParams) { diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImpl.java index 100170c..df4ce08 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImpl.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImpl.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.rest; import java.net.MalformedURLException; @@ -28,15 +28,16 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import java.util.Optional; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.function.Predicate; -import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.PostConstruct; +import org.onap.ccsdk.dashboard.exceptions.DashboardControllerException; import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeAlreadyDeactivatedException; import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException; import org.onap.ccsdk.dashboard.model.inventory.ApiResponseMessage; @@ -67,7 +68,7 @@ import org.springframework.web.client.HttpClientErrorException; public class RestInventoryClientImpl extends RestClientBase implements InventoryClient { private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RestInventoryClientImpl.class); - + private String baseUrl; public static final String SERVICE_TYPES = "dcae-service-types"; public static final String SERVICES = "dcae-services"; @@ -75,54 +76,50 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory public static final String HEALTH_CHECK = "healthcheck"; /** - * For caching data + * For caching data */ private AbstractCacheManager cacheManager; - + @PostConstruct - public void init() { + public void init() throws DashboardControllerException { String webapiUrl = DashboardProperties.getControllerProperty("site.primary", DashboardProperties.SITE_SUBKEY_INVENTORY_URL); if (webapiUrl == null) throw new IllegalArgumentException("Null URL not permitted"); URL url = null; - String urlScheme = "http"; try { url = new URL(webapiUrl); baseUrl = url.toExternalForm(); } catch (MalformedURLException ex) { - throw new RuntimeException("Failed to parse URL", ex); + throw new DashboardControllerException("Failed to parse URL", ex); } - urlScheme = webapiUrl.split(":")[0]; + String urlScheme = webapiUrl.split(":")[0]; if (restTemplate == null) { createRestTemplate(url, null, null, urlScheme); } - } public String checkHealth() { - String url = buildUrl(new String[] { baseUrl, HEALTH_CHECK }, null); + String url = buildUrl(new String[] {baseUrl, HEALTH_CHECK}, null); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<String>() { - }); + new ParameterizedTypeReference<String>() {}); return response.getBody(); } - - @Scheduled(fixedDelay=300000, initialDelay=30000) + + @Scheduled(fixedDelay = 300000, initialDelay = 30000) public void cacheServiceTypes() { logger.debug(EELFLoggerDelegate.debugLogger, "cacheServiceTypes begin"); - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES }, new String[] {"onlyLatest", "false"}); - ResponseEntity<ServiceTypeSummaryList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceTypeSummaryList>() { - }); + String url = + buildUrl(new String[] {baseUrl, SERVICE_TYPES}, new String[] {"onlyLatest", "false"}); + ResponseEntity<ServiceTypeSummaryList> response = restTemplate.exchange(url, HttpMethod.GET, + null, new ParameterizedTypeReference<ServiceTypeSummaryList>() {}); Collection<ServiceTypeSummary> collection = response.getBody().items; // Continue retrieving items on the next page if they exist Link nextLink = response.getBody().paginationLinks.nextLink; while (nextLink != null) { url = response.getBody().paginationLinks.nextLink.href; response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceTypeSummaryList>() { - }); + new ParameterizedTypeReference<ServiceTypeSummaryList>() {}); collection.addAll(response.getBody().items); nextLink = response.getBody().paginationLinks.nextLink; } @@ -134,19 +131,18 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory logger.debug(EELFLoggerDelegate.debugLogger, "cacheServiceTypes end"); } - public Stream<ServiceTypeSummary> getServiceTypes() { - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES }, new String[] {"onlyLatest", "false"}); - ResponseEntity<ServiceTypeSummaryList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceTypeSummaryList>() { - }); + public Stream<ServiceTypeSummary> getServiceTypes() throws Exception { + String url = + buildUrl(new String[] {baseUrl, SERVICE_TYPES}, new String[] {"onlyLatest", "false"}); + ResponseEntity<ServiceTypeSummaryList> response = restTemplate.exchange(url, HttpMethod.GET, + null, new ParameterizedTypeReference<ServiceTypeSummaryList>() {}); Collection<ServiceTypeSummary> collection = response.getBody().items; // Continue retrieving items on the next page if they exist Link nextLink = response.getBody().paginationLinks.nextLink; while (nextLink != null) { url = response.getBody().paginationLinks.nextLink.href; response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceTypeSummaryList>() { - }); + new ParameterizedTypeReference<ServiceTypeSummaryList>() {}); collection.addAll(response.getBody().items); nextLink = response.getBody().paginationLinks.nextLink; } @@ -157,7 +153,7 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory lock.writeLock().unlock(); return collection.stream(); } - + @Autowired public void setCacheManager(AbstractCacheManager cacheManager) { this.cacheManager = cacheManager; @@ -166,8 +162,9 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory public AbstractCacheManager getCacheManager() { return cacheManager; } - - public Stream<ServiceTypeSummary> getServiceTypes(ServiceTypeQueryParams serviceTypeQueryParams) { + + public Stream<ServiceTypeSummary> getServiceTypes( + ServiceTypeQueryParams serviceTypeQueryParams) { // Only utilize the parameters that aren't null HashMap<String, String> map = new HashMap<>(); @@ -207,10 +204,10 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory params.add(ent.getValue()); } - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES }, params.toArray(new String[params.size()])); - ResponseEntity<ServiceTypeSummaryList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceTypeSummaryList>() { - }); + String url = buildUrl(new String[] {baseUrl, SERVICE_TYPES}, + params.toArray(new String[params.size()])); + ResponseEntity<ServiceTypeSummaryList> response = restTemplate.exchange(url, HttpMethod.GET, + null, new ParameterizedTypeReference<ServiceTypeSummaryList>() {}); Collection<ServiceTypeSummary> collection = response.getBody().items; // Continue retrieving items on the next page if they exist @@ -218,17 +215,16 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory while (nextLink != null) { url = response.getBody().paginationLinks.nextLink.href; response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceTypeSummaryList>() { - }); + new ParameterizedTypeReference<ServiceTypeSummaryList>() {}); collection.addAll(response.getBody().items); nextLink = response.getBody().paginationLinks.nextLink; } - return collection.stream(); } - public ServiceType addServiceType(ServiceType serviceType) { - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES }, null); + public ServiceType addServiceType(ServiceType serviceType) + throws Exception { + String url = buildUrl(new String[] {baseUrl, SERVICE_TYPES}, null); // Take the ServiceType object and create a ServiceTypeRequest from it ServiceTypeRequest serviceTypeRequest = ServiceTypeRequest.from(serviceType); @@ -244,11 +240,12 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory } @SuppressWarnings("unchecked") - public ServiceType addServiceType(ServiceTypeRequest serviceTypeRequest) { - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES }, null); + public ServiceType addServiceType(ServiceTypeRequest serviceTypeRequest) + throws Exception { + String url = buildUrl(new String[] {baseUrl, SERVICE_TYPES}, null); ServiceType uplBp = restTemplate.postForObject(url, serviceTypeRequest, ServiceType.class); // update application cache with new record to refresh screen immediately - // query inventory for the newly uploaded entry, + // query inventory for the newly uploaded entry, // using query params (typeName, owner, app, component) List<ServiceTypeSummary> itemList = this.getServiceTypes().collect(Collectors.toList()); ReadWriteLock lock = new ReentrantReadWriteLock(); @@ -259,36 +256,34 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory return uplBp; } - public Optional<ServiceType> getServiceType(String typeId) { - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES, typeId }, null); + public Optional<ServiceType> getServiceType(String typeId) + throws Exception { + String url = buildUrl(new String[] {baseUrl, SERVICE_TYPES, typeId}, null); ResponseEntity<ServiceType> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceType>() { - }); + new ParameterizedTypeReference<ServiceType>() {}); return Optional.ofNullable(response.getBody()); } @SuppressWarnings("unchecked") public void deleteServiceType(String typeId) - throws ServiceTypeNotFoundException, ServiceTypeAlreadyDeactivatedException { - String url = buildUrl(new String[] { baseUrl, SERVICE_TYPES, typeId }, null); + throws Exception { + String url = buildUrl(new String[] {baseUrl, SERVICE_TYPES, typeId}, null); ReadWriteLock lock = new ReentrantReadWriteLock(); try { - ResponseEntity<ApiResponseMessage> response = - restTemplate.exchange(url, HttpMethod.DELETE, null, - new ParameterizedTypeReference<ApiResponseMessage>() { - }); + restTemplate.exchange(url, + HttpMethod.DELETE, null, new ParameterizedTypeReference<ApiResponseMessage>() {}); // update the application cache lock.readLock().lock(); - List<ServiceTypeSummary> itemList = - (List<ServiceTypeSummary>)getCacheManager().getObject(SERVICE_TYPES); + List<ServiceTypeSummary> itemList = + (List<ServiceTypeSummary>) getCacheManager().getObject(SERVICE_TYPES); lock.readLock().unlock(); if (itemList == null) { itemList = getServiceTypes().collect(Collectors.toList()); } Predicate<ServiceTypeSummary> typeIdFilter = p -> p.getTypeId().isPresent() && !p.getTypeId().get().equals(typeId); - itemList = (List<ServiceTypeSummary>)itemList.stream().filter(typeIdFilter). - collect(Collectors.toList()); + itemList = (List<ServiceTypeSummary>) itemList.stream().filter(typeIdFilter) + .collect(Collectors.toList()); lock.writeLock().lock(); getCacheManager().removeObject(SERVICE_TYPES); // put updated collection back into cache @@ -303,28 +298,7 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory } } -/* public Stream<Service> getServices() { - String url = buildUrl(new String[] { baseUrl, SERVICES }, null); - ResponseEntity<ServiceList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceList>() { - }); - Collection<Service> collection = response.getBody().items; - - // Continue retrieving items on the next page if they exist - Link nextLink = response.getBody().paginationLinks.nextLink; - while (nextLink != null) { - url = response.getBody().paginationLinks.nextLink.href; - response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<ServiceList>() { - }); - collection.addAll(response.getBody().items); - nextLink = response.getBody().paginationLinks.nextLink; - } - - return collection.stream(); - } -*/ public ServiceRefList getServicesForType(ServiceQueryParams serviceQueryParams) { - // Only utilize the typeId HashMap<String, String> map = new HashMap<>(); if (serviceQueryParams.getTypeId() != null) { @@ -335,11 +309,10 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory params.add(ent.getKey()); params.add(ent.getValue()); } - - String url = buildUrl(new String[] { baseUrl, SERVICES }, params.toArray(new String[params.size()])); + String url = + buildUrl(new String[] {baseUrl, SERVICES}, params.toArray(new String[params.size()])); ResponseEntity<ServiceList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceList>() { - }); + new ParameterizedTypeReference<ServiceList>() {}); Collection<Service> collection = response.getBody().items; int itemCnt = response.getBody().totalCount; @@ -347,83 +320,18 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory Link nextLink = response.getBody().paginationLinks.nextLink; while (nextLink != null) { url = response.getBody().paginationLinks.nextLink.href; - response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<ServiceList>() { - }); + response = restTemplate.exchange(url, HttpMethod.GET, null, + new ParameterizedTypeReference<ServiceList>() {}); collection.addAll(response.getBody().items); nextLink = response.getBody().paginationLinks.nextLink; } - - List<ServiceRef> srvcRefList = collection.stream().map(e -> e.createServiceRef()).collect(Collectors.toList()); + List<ServiceRef> srvcRefList = + collection.stream().map(e -> e.createServiceRef()).collect(Collectors.toList()); return new ServiceRefList(srvcRefList, itemCnt); } -/* - public Stream<Service> getServices(ServiceQueryParams serviceQueryParams) { - // Only utilize the parameters that aren't null - HashMap<String, String> map = new HashMap<>(); - if (serviceQueryParams.getTypeId() != null) { - map.put("typeId", serviceQueryParams.getTypeId()); - } - if (serviceQueryParams.getVnfId() != null) { - map.put("vnfId", serviceQueryParams.getVnfId()); - } - if (serviceQueryParams.getVnfType() != null) { - map.put("vnfType", serviceQueryParams.getVnfType()); - } - if (serviceQueryParams.getVnfLocation() != null) { - map.put("vnfLocation", serviceQueryParams.getVnfLocation()); - } - if (serviceQueryParams.getComponentType() != null) { - map.put("componentType", serviceQueryParams.getComponentType()); - } - if (serviceQueryParams.getShareable() != null) { - map.put("shareable", Boolean.toString(serviceQueryParams.getShareable())); - } - if (serviceQueryParams.getCreated() != null) { - map.put("created", serviceQueryParams.getCreated()); - } - ArrayList<String> params = new ArrayList<>(); - for (Entry<String, String> ent : map.entrySet()) { - params.add(ent.getKey()); - params.add(ent.getValue()); - } - - String url = buildUrl(new String[] { baseUrl, SERVICES }, params.toArray(new String[params.size()])); - ResponseEntity<ServiceList> response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<ServiceList>() { - }); - Collection<Service> collection = response.getBody().items; - - // Continue retrieving items on the next page if they exist - Link nextLink = response.getBody().paginationLinks.nextLink; - while (nextLink != null) { - url = response.getBody().paginationLinks.nextLink.href; - response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<ServiceList>() { - }); - collection.addAll(response.getBody().items); - nextLink = response.getBody().paginationLinks.nextLink; - } - - return collection.stream(); - } - - public Optional<Service> getService(String serviceId) { - String url = buildUrl(new String[] { baseUrl, SERVICES, serviceId }, null); - ResponseEntity<Service> response = null; - try { - response = restTemplate.exchange(url, HttpMethod.GET, null, - new ParameterizedTypeReference<Service>() { - }); - } - catch(HttpClientErrorException e) { - return null; - } - - return Optional.ofNullable(response.getBody()); - } - */ public String getBaseUrl() { - return this.baseUrl; + return this.baseUrl; } } diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/util/DashboardProperties.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/util/DashboardProperties.java index d785ea5..3d0962e 100644 --- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/util/DashboardProperties.java +++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/util/DashboardProperties.java @@ -2,22 +2,21 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.util; @@ -39,61 +38,61 @@ import org.springframework.core.env.Environment; * </pre> */ @Configuration -@PropertySource(value = { "${container.classpath:}/WEB-INF/conf/dashboard.properties" }) +@PropertySource(value = {"${container.classpath:}/WEB-INF/conf/dashboard.properties"}) public class DashboardProperties { /** - * Key for property with list of sites + * Key for property with list of sites. */ public static final String CONTROLLER_SITE_LIST = "controller.site.list"; /** - * Subkey for property with site name + * Subkey for property with site name. */ public static final String SITE_SUBKEY_NAME = "name"; /** - * Subkey for property with Cloudify URL + * Subkey for property with Cloudify URL. */ public static final String SITE_SUBKEY_CLOUDIFY_URL = "cloudify.url"; /** - * Subkey for property with Inventory URL + * Subkey for property with Inventory URL. */ public static final String SITE_SUBKEY_INVENTORY_URL = "inventory.url"; /** - * Subkey for property with Deployment Handler URL + * Subkey for property with Deployment Handler URL. */ public static final String SITE_SUBKEY_DHANDLER_URL = "dhandler.url"; /** - * Subkey for property with Consul URL + * Subkey for property with Consul URL. */ public static final String SITE_SUBKEY_CONSUL_URL = "consul.url"; /** - * Subkey for property with DBCL URL + * Subkey for property with DBCL URL. */ public static final String SITE_SUBKEY_DBCL_URL = "dbcl.url"; /** - * Subkey for property with DBCL URL + * Subkey for property with Feed Mgmt URL. */ public static final String SITE_SUBKEY_FEED_URL = "feed_m.url"; /** - * Subkey for property with Controller user name for authentication + * Subkey for property with Controller user name for authentication. */ public static final String SITE_SUBKEY_CLOUDIFY_USERNAME = "cloudify.username"; /** - * Subkey for property with Controller password + * Subkey for property with Controller password. */ public static final String SITE_SUBKEY_CLOUDIFY_PASS = "cloudify.password"; /** - * Subkey for property with Controller password encryption status + * Subkey for property with Controller password encryption status. */ public static final String SITE_SUBKEY_CLOUDIFY_ENCRYPTED = "is_encrypted"; - + /** - * Key for dashboard deployment environment - dev/uat/prod + * Key for dashboard deployment environment. */ public static final String CONTROLLER_IN_ENV = "controller.env"; /** - * Key for K8s deploy permission string + * Key for K8s deploy permission string. * */ public static final String APP_K8S_PERM = "k8s.deploy.perm"; @@ -150,7 +149,7 @@ public class DashboardProperties { * * @param key Property key * @return Array of values with leading and trailing whitespace removed; null if - * key is not found. + * key is not found. */ public static String[] getCsvListProperty(final String key) { String listVal = getProperty(key); @@ -161,11 +160,11 @@ public class DashboardProperties { } /** - * Convenience method to get a property from the fake hierarchical key-value + * Convenience method to get a property from the fake hierarchical key-value. * set. * * @param controllerKey First part of key - * @param propKey Second part of key + * @param propKey Second part of key * @return Property value for key "controllerKey.propKey" */ public static String getControllerProperty(final String controllerKey, final String propKey) { @@ -178,10 +177,11 @@ public class DashboardProperties { * set. * * @param controllerKey First part of key - * @param propKey Second part of key + * @param propKey Second part of key * @return Property value for key "controllerKey.propKey" */ - public static String getControllerPropertyDef(final String controllerKey, final String propKey, String defVal) { + public static String getControllerPropertyDef(final String controllerKey, final String propKey, + String defVal) { final String key = controllerKey + '.' + propKey; return getPropertyDef(key, defVal); } diff --git a/ccsdk-app-common/src/main/java/org/onap/fusionapp/model/Result.java b/ccsdk-app-common/src/main/java/org/onap/fusionapp/model/Result.java index bc0a43a..4d9c579 100644 --- a/ccsdk-app-common/src/main/java/org/onap/fusionapp/model/Result.java +++ b/ccsdk-app-common/src/main/java/org/onap/fusionapp/model/Result.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.fusionapp.model; /** diff --git a/ccsdk-app-common/src/main/java/org/onap/fusionapp/service/AdminAuthExtension.java b/ccsdk-app-common/src/main/java/org/onap/fusionapp/service/AdminAuthExtension.java index 0f2a1db..d91f914 100644 --- a/ccsdk-app-common/src/main/java/org/onap/fusionapp/service/AdminAuthExtension.java +++ b/ccsdk-app-common/src/main/java/org/onap/fusionapp/service/AdminAuthExtension.java @@ -2,29 +2,29 @@ * =============LICENSE_START=========================================================
*
* =================================================================================
- * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
- * 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.
+ * 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.
* ============LICENSE_END=========================================================
*
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
*******************************************************************************/
+
package org.onap.fusionapp.service;
import org.onap.portalsdk.core.domain.User;
-//@Service("adminAuthExtension")
-//@Transactional
+// @Service("adminAuthExtension")
+// @Transactional
/**
* Extension supporting action on authorization of user
*/
diff --git a/ccsdk-app-common/src/main/java/org/onap/fusionapp/util/CustomLoggingFilter.java b/ccsdk-app-common/src/main/java/org/onap/fusionapp/util/CustomLoggingFilter.java index 13c36e6..f91a82c 100644 --- a/ccsdk-app-common/src/main/java/org/onap/fusionapp/util/CustomLoggingFilter.java +++ b/ccsdk-app-common/src/main/java/org/onap/fusionapp/util/CustomLoggingFilter.java @@ -2,23 +2,23 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ - * 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. + * 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. * ============LICENSE_END========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.fusionapp.util; import ch.qos.logback.classic.Level; @@ -43,9 +43,9 @@ public class CustomLoggingFilter extends Filter<ILoggingEvent> { public FilterReply decide(ILoggingEvent event) { try { if ((event.getLevel() != Level.ERROR || event.getLevel() != Level.WARN) - && ("UEBConsumerThread".equalsIgnoreCase(event.getThreadName())) - && (event.getLoggerName().contains("com.att.nsa") - || event.getLoggerName().contains("org.apache.http"))) { + && ("UEBConsumerThread".equalsIgnoreCase(event.getThreadName())) + && (event.getLoggerName().contains("com.att.nsa") + || event.getLoggerName().contains("org.apache.http"))) { return FilterReply.DENY; } else { return FilterReply.NEUTRAL; |