aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/Authorizer.java149
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CloudifyController.java703
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CommonApiController.java217
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ConsulController.java73
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardHomeController.java215
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardRestrictedBaseController.java319
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerController.java38
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnController.java3
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/HealthCheckController.java211
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/InventoryController.java855
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRequest.java6
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyClient.java71
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyMockClientImpl.java233
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImpl.java140
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulMockClientImpl.java126
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImpl.java25
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImpl.java38
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/InventoryClient.java6
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImpl.java47
-rw-r--r--ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientMockImpl.java189
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java578
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java791
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java315
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java184
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java57
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java69
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java788
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java133
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java122
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java520
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java212
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java366
-rw-r--r--ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java361
-rw-r--r--ccsdk-app-os/src/main/webapp/static/fusion/images/active.pngbin0 -> 682 bytes
-rw-r--r--ccsdk-app-os/src/main/webapp/static/fusion/images/inactive.pngbin0 -> 842 bytes
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-health-service.js23
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-table-controller.js21
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter_table.html2
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-health-service.js56
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-services-controller.js31
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-table-controller.js70
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_popups.html5
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_table.html17
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-controllers.js87
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-health-service.js51
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_health_table.html40
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_popups.html14
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/home/executions-view-controller.js402
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_blueprint_table.html32
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_deployment_table.html24
-rw-r--r--ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_execution_popups.html4
-rw-r--r--pom.xml98
52 files changed, 5449 insertions, 3688 deletions
diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/Authorizer.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/Authorizer.java
deleted file mode 100644
index 27b887a..0000000
--- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/Authorizer.java
+++ /dev/null
@@ -1,149 +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.controller;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.portalsdk.core.web.support.AppUtils;
-
-public class Authorizer {
-
- private static Authorizer authorizer = new Authorizer();
- private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(Authorizer.class);
- private static final String AUTH_PROP_FILE_NAME = "authorizer.properties";
- private static final String DCAE_ROLES_KEY = "dcae_roles";
-
- public static Authorizer getAuthorizer() {
- return authorizer;
- }
-
- public boolean isAuthorized(HttpServletRequest request) {
- final String method = request.getMethod();
- final String resource = request.getRequestURI();
-
- final Set<Authorizer.Role> authorizedRoles = getAuthorizedRoles(method, resource);
-
- // Anybody can access this page, no need to check
- if (authorizedRoles.contains(Role.ANY)) {
- return true;
- }
-
- final Set<Authorizer.Role> roles = getRoles(request);
- final Set<Authorizer.Role> intersection = new HashSet<>(roles);
-
- intersection.retainAll(authorizedRoles); // Removes all roles in roles that aren't contained in authorizedRoles.
-
- return !intersection.isEmpty(); // If the intersection is not empty, then this user is authorized
- }
-
- // Helper method to set roles
- public void putRoles(HttpServletRequest request, Set<Role> roles) {
- request.getSession().setAttribute(DCAE_ROLES_KEY, roles);
- }
-
- // Returns roles for the current user making the request
- @SuppressWarnings("unchecked")
- private Set<Authorizer.Role> getRoles(HttpServletRequest request) {
-
- // If roles is empty, then write the user's roles to the session
- if (request.getSession().getAttribute(DCAE_ROLES_KEY) == null) {
-
- // HashSet to be used to for putRoles
- HashSet<Role> roles = new HashSet<>();
- roles.add(Role.READER);
-
- // Get roles and turn into list of role objects
- HttpSession session = AppUtils.getSession(request);
- String roleType = (String) session.getAttribute("auth_role");
- if (roleType != null) {
- switch (roleType) {
- case "ADMIN":
- roles.add(Role.ADMIN);
- break;
- case "WRITE":
- roles.add(Role.WRITER);
- break;
- case "READ":
- roles.add(Role.READER);
- break;
- default:
- roles.add(Role.READER);
- break;
- }
- }
- // Write user roles
- putRoles(request, roles);
- }
-
- // Check if attribute DCAE_ROLES_KEY is valid
- final Object rawRoles = request.getSession().getAttribute(DCAE_ROLES_KEY);
-
- if (!(rawRoles instanceof Set<?>)) {
- throw new RuntimeException("Unrecognized object found in session for key=" + DCAE_ROLES_KEY);
- }
-
- return (Set<Authorizer.Role>) request.getSession().getAttribute(DCAE_ROLES_KEY);
- }
-
- // Returns roles authorized to perform the requested method (i.e.
- // getAuthorizedRoles("POST", "/ecd-app-att/deployments"))
- private Set<Authorizer.Role> getAuthorizedRoles(String method, String resource) {
- final Properties resourceRoles = new Properties();
-
- try {
- resourceRoles.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(AUTH_PROP_FILE_NAME));
-
- final String[] splitMethodResourceKey = (method + resource.replace("/", ".")).split("\\.", 0);
- final String methodResourceKey = splitMethodResourceKey[0] + "." + splitMethodResourceKey[2];
-
- if (!resourceRoles.containsKey(methodResourceKey)) {
- LOGGER.warn(AUTH_PROP_FILE_NAME + " does not contain roles for " + methodResourceKey + "; defaulting "
- + Authorizer.Role.ANY);
- return new HashSet<>(Collections.singleton(Role.ANY));
- }
-
- final String[] rawAuthorizedRoles = ((String) resourceRoles.get(methodResourceKey)).split(",");
- final Set<Authorizer.Role> authorizedRoles = new HashSet<>();
-
- for (String rawAuthorizedRole : rawAuthorizedRoles) {
- authorizedRoles.add(Authorizer.Role.valueOf(rawAuthorizedRole));
- }
-
- return authorizedRoles;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- public enum Role {
- ADMIN, READER, WRITER, ANY, NONE;
- }
-
-} \ No newline at end of file
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 06ca980..16949cd 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
@@ -33,14 +33,11 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprint;
import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintUpload;
import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant;
import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
import org.onap.ccsdk.dashboard.model.CloudifyDeployment;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentRequest;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest;
import org.onap.ccsdk.dashboard.model.CloudifyEvent;
import org.onap.ccsdk.dashboard.model.CloudifyEventList;
@@ -53,12 +50,12 @@ 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.rest.CloudifyClient;
-import org.onap.ccsdk.dashboard.util.DashboardProperties;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
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.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
@@ -81,8 +78,11 @@ import com.fasterxml.jackson.core.JsonProcessingException;
@RequestMapping("/")
public class CloudifyController extends DashboardRestrictedBaseController {
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(CloudifyController.class);
- private CloudifyClient restClient;
+ private static EELFLoggerDelegate logger =
+ EELFLoggerDelegate.getLogger(CloudifyController.class);
+
+ @Autowired
+ CloudifyClient cloudifyClient;
/**
* Enum for selecting an item type.
@@ -94,37 +94,15 @@ public class CloudifyController extends DashboardRestrictedBaseController {
private static Date begin;
private static Date end;
private static final String BLUEPRINTS_PATH = "blueprints";
- private static final String VIEW_BLUEPRINTS_PATH = "viewblueprints";
private static final String DEPLOYMENTS_PATH = "deployments";
private static final String EXECUTIONS_PATH = "executions";
private static final String TENANTS_PATH = "tenants";
private static final String NODE_INSTANCES_PATH = "node-instances";
private static final String UPDATE_DEPLOYMENT_PATH = "update-deployment";
- private static final String SECRETS_PATH = "secrets";
private static final String EVENTS_PATH = "events";
private static final String DEP_TENANT_STATUS = "deployment-status";
/**
- * Supports sorting blueprints by ID
- */
- private static Comparator<CloudifyBlueprint> blueprintComparator = new Comparator<CloudifyBlueprint>() {
- @Override
- public int compare(CloudifyBlueprint o1, CloudifyBlueprint o2) {
- return o1.id.compareTo(o2.id);
- }
- };
-
- /**
- * Supports sorting deployments by ID
- */
- private static Comparator<CloudifyDeployment> deploymentComparator = new Comparator<CloudifyDeployment>() {
- @Override
- public int compare(CloudifyDeployment o1, CloudifyDeployment o2) {
- return o1.id.compareTo(o2.id);
- }
- };
-
- /**
* Supports sorting events by timestamp
*/
private static Comparator<CloudifyEvent> eventComparator = new Comparator<CloudifyEvent>() {
@@ -148,49 +126,41 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* Gets one page of objects and supporting information via the REST client. On
* success, returns a PaginatedRestResponse object as String.
*
- * @param option Specifies which item list type to get
- * @param pageNum Page number of results
+ * @param option Specifies which item list 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.
*/
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private String getItemListForPage(long userId, CloudifyDataItem option, int pageNum, int pageSize)
- throws Exception {
- if (this.restClient == null) {
- this.restClient = getCloudifyRestClient(userId);
- }
- List itemList = null;
- switch (option) {
+ @SuppressWarnings({"rawtypes"})
+ private String getItemListForPage(long userId, CloudifyDataItem option, int pageNum,
+ int pageSize) throws Exception {
/*
- * case BLUEPRINT: itemList = restClient.getBlueprints().items;
- * Collections.sort(itemList, blueprintComparator); break; case DEPLOYMENT:
- * itemList = restClient.getDeployments().items; Collections.sort(itemList,
- * deploymentComparator); break;
+ * if (this.restClient == null) { this.restClient =
+ * getCloudifyRestClient(userId); }
*/
- case TENANT:
- itemList = restClient.getTenants().items;
- 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!");
- logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPage caught exception");
- throw new Exception("getItemListForPage failed: unimplemented case: " + option.name());
+ List itemList = null;
+ switch (option) {
+ /*
+ * case BLUEPRINT: itemList = restClient.getBlueprints().items;
+ * Collections.sort(itemList, blueprintComparator); break; case DEPLOYMENT:
+ * itemList = restClient.getDeployments().items; Collections.sort(itemList,
+ * deploymentComparator); break;
+ */
+ case TENANT:
+ itemList = cloudifyClient.getTenants().items;
+ 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!");
+ logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPage caught exception");
+ throw new Exception(
+ "getItemListForPage failed: unimplemented case: " + option.name());
}
- /*
- * String cloudPrimTenant =
- * getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
- * String aicPrimTenant =
- * getAppProperties().getProperty(DashboardProperties.AIC_TENANT_PRIM);
- *
- * for (CloudifyTenant ct: (List<CloudifyTenant>)itemList) { if (
- * ct.name.equals(cloudPrimTenant) ) { ct.dName = aicPrimTenant; } else {
- * ct.dName = ct.name; } }
- */
// Shrink if needed
final int totalItems = itemList.size();
final int pageCount = (int) Math.ceil((double) totalItems / pageSize);
@@ -247,30 +217,29 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* @param request HttpServletRequest
* @return List of CloudifyBlueprint objects
*/
- @RequestMapping(value = { BLUEPRINTS_PATH }, method = RequestMethod.GET, produces = "application/json")
- @ResponseBody
- public String getBlueprintsByPage(HttpServletRequest request) {
- preLogAudit(request);
- String json = getItemListForPageWrapper(request, CloudifyDataItem.BLUEPRINT);
- postLogAudit(request);
- return json;
- }
-
+ /*
+ * @RequestMapping(value = { BLUEPRINTS_PATH }, method = RequestMethod.GET,
+ * produces = "application/json")
+ *
+ * @ResponseBody public String getBlueprintsByPage(HttpServletRequest request) {
+ * preLogAudit(request); String json = getItemListForPageWrapper(request,
+ * CloudifyDataItem.BLUEPRINT); postLogAudit(request); return json; }
+ */
/**
* Serves one page of deployments
*
* @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);
- postLogAudit(request);
- return json;
- }
+ /*
+ * @RequestMapping(value = { DEPLOYMENTS_PATH }, method = RequestMethod.GET,
+ * produces = "application/json")
+ *
+ * @ResponseBody public String getDeploymentsByPage(HttpServletRequest request)
+ * { preLogAudit(request); String json = getItemListForPageWrapper(request,
+ * CloudifyDataItem.DEPLOYMENT); postLogAudit(request); return json; }
+ */
/**
* gets the tenants list
*
@@ -303,8 +272,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- restClient = getCloudifyRestClient(request);
- result = restClient.getBlueprint(id, tenant);
+ result = cloudifyClient.getBlueprint(id, tenant);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -314,7 +282,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Getting blueprint " + id + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getBlueprintById caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -338,39 +306,30 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* @throws Exception on serialization error
*
*/
- @RequestMapping(value = {
- VIEW_BLUEPRINTS_PATH + "/{id}" }, method = RequestMethod.GET, produces = "application/yaml")
- @ResponseBody
- public String viewBlueprintContentById(@PathVariable("id") String id, HttpServletRequest request) throws Exception {
- preLogAudit(request);
- ECTransportModel result = null;
- try {
- restClient = getCloudifyRestClient(request);
- result = restClient.viewBlueprint(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 objectMapper.writeValueAsString(result);
- }
-
+ /*
+ * @RequestMapping(value = { VIEW_BLUEPRINTS_PATH + "/{id}" }, method =
+ * RequestMethod.GET, produces = "application/yaml")
+ *
+ * @ResponseBody public String viewBlueprintContentById(@PathVariable("id")
+ * String id, HttpServletRequest request) throws Exception {
+ * preLogAudit(request); ECTransportModel result = null; try { result =
+ * cloudifyClient.viewBlueprint(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 objectMapper.writeValueAsString(result); }
+ */
/**
* Processes request to upload a blueprint from a remote server.
*
@@ -379,39 +338,30 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* @return Blueprint as uploaded; or error.
* @throws Exception on serialization error
*/
- @RequestMapping(value = { BLUEPRINTS_PATH }, method = RequestMethod.POST, produces = "application/json")
- @ResponseBody
- public String uploadBlueprint(HttpServletRequest request, @RequestBody CloudifyBlueprintUpload blueprint)
- throws Exception {
- preLogAudit(request);
- ECTransportModel result = null;
- try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.uploadBlueprint(blueprint);
- } 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", "Uploading blueprint failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "uploadBlueprint 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", "Uploading blueprint failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "uploadBlueprint caught exception");
- result = new RestResponseError("uploadBlueprint failed", t);
- } finally {
- postLogAudit(request);
- }
- return objectMapper.writeValueAsString(result);
- }
-
+ /*
+ * @RequestMapping(value = { BLUEPRINTS_PATH }, method = RequestMethod.POST,
+ * produces = "application/json")
+ *
+ * @ResponseBody public String uploadBlueprint(HttpServletRequest
+ * request, @RequestBody CloudifyBlueprintUpload blueprint) throws Exception {
+ * preLogAudit(request); ECTransportModel result = null; try { result =
+ * cloudifyClient.uploadBlueprint(blueprint); } 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", "Uploading blueprint failed!");
+ * logger.error(EELFLoggerDelegate.errorLogger,
+ * "uploadBlueprint 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", "Uploading blueprint failed!");
+ * logger.error(EELFLoggerDelegate.errorLogger,
+ * "uploadBlueprint caught exception"); result = new
+ * RestResponseError("uploadBlueprint failed", t); } finally {
+ * postLogAudit(request); } return objectMapper.writeValueAsString(result); }
+ */
/**
* Deletes the specified blueprint.
*
@@ -421,43 +371,32 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* @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, HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- preLogAudit(request);
- ECTransportModel result = null;
- try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- int code = restClient.deleteBlueprint(id);
- response.setStatus(code);
- } 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");
- 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", "Deleting blueprint " + id + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "deleteBlueprint caught exception");
- result = new RestResponseError("deleteBlueprint failed on ID " + id, t);
- } finally {
- postLogAudit(request);
- }
- if (result == null)
- return null;
- else
- return objectMapper.writeValueAsString(result);
- }
+ /*
+ * @RequestMapping(value = { BLUEPRINTS_PATH + "/{id}" }, method =
+ * RequestMethod.DELETE, produces = "application/json")
+ *
+ * @ResponseBody public String deleteBlueprint(@PathVariable("id") String id,
+ * HttpServletRequest request, HttpServletResponse response) throws Exception {
+ * preLogAudit(request); ECTransportModel result = null; try { int code =
+ * cloudifyClient.deleteBlueprint(id); response.setStatus(code); } 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"); 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", "Deleting blueprint " + id + " failed!");
+ * logger.error(EELFLoggerDelegate.errorLogger,
+ * "deleteBlueprint caught exception"); result = new
+ * RestResponseError("deleteBlueprint failed on ID " + id, t); } finally {
+ * postLogAudit(request); } if (result == null) return null; else return
+ * objectMapper.writeValueAsString(result); }
+ */
/**
* Gets the specified deployment.
*
@@ -475,11 +414,10 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- CloudifyClient restClient = getCloudifyRestClient(request);
if (tenant != null && tenant.length() > 0) {
- result = restClient.getDeployment(id, tenant);
+ result = cloudifyClient.getDeployment(id, tenant);
} else {
- result = restClient.getDeployment(id);
+ result = cloudifyClient.getDeployment(id);
}
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
@@ -490,7 +428,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Getting deployment " + id + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getDeploymentById caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -515,9 +453,6 @@ public class CloudifyController extends DashboardRestrictedBaseController {
public String getTenantStatusForService(HttpServletRequest request, @RequestBody String[] serviceList)
throws Exception {
preLogAudit(request);
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
/*
* 1) Get all the tenant names 2) Get the deployment IDs per tenant for all the
* tenants, aggregate the deployments list 3) Get the input deployments list
@@ -525,18 +460,17 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* the list from step#3, get the execution status info and generate the final
* response
*/
- ECTransportModel result = null;
- HashMap<String, Object> resultMap = new HashMap<String, Object>();
+ String outboundJson = "";
+ CloudifyDeployedTenantList cfyTenantDeployMapList = null;
+ new HashMap<String, Object>();
List<CloudifyDeployedTenant> tenantList = new ArrayList<CloudifyDeployedTenant>();
List<CloudifyExecution> cfyExecList = new ArrayList<CloudifyExecution>();
try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- List<CloudifyTenant> cldfyTen = restClient.getTenants().items;
+ List<CloudifyTenant> cldfyTen = cloudifyClient.getTenants().items;
for (CloudifyTenant ct : (List<CloudifyTenant>) cldfyTen) {
- result = restClient.getTenantInfoFromDeploy(ct.name);
- tenantList.addAll(((CloudifyDeployedTenantList) result).items);
+ cfyTenantDeployMapList = cloudifyClient.getTenantInfoFromDeploy(ct.name);
+ tenantList.addAll(((CloudifyDeployedTenantList) cfyTenantDeployMapList).items);
}
- result = null;
List<CloudifyDeployedTenant> currSrvcTenants = new ArrayList<CloudifyDeployedTenant>();
for (String serviceId : serviceList) {
@@ -551,27 +485,23 @@ public class CloudifyController extends DashboardRestrictedBaseController {
boolean isHelmType = false;
boolean helmStatus = false;
for (CloudifyDeployedTenant deplItem : currSrvcTenants) {
- CloudifyExecutionList execResults = restClient.getExecutionsSummary(deplItem.id, deplItem.tenant_name);
+ CloudifyExecutionList execResults =
+ cloudifyClient.getExecutionsSummary(deplItem.id, deplItem.tenant_name);
isHelmType = false;
helmStatus = false;
- CloudifyBlueprintList bpList = restClient.getBlueprint(deplItem.id, deplItem.tenant_name);
+ CloudifyBlueprintList bpList =
+ cloudifyClient.getBlueprint(deplItem.id, deplItem.tenant_name);
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")) {
isHelmType = true;
}
if (workflows.containsKey("status")) {
helmStatus = true;
}
- /*
- * for (CloudifyExecution cfyExec: execResults.items) { if
- * (cfyExec.workflow_id.equalsIgnoreCase("create_deployment_environment")) {
- * Map<String, String> pluginInfo = ((List<Map<String,
- * String>>)cfyExec.parameters.get("deployment_plugins_to_install")).get(0); if
- * (pluginInfo.get("name").equals("helm-plugin") ) { isHelmType = true; } } }
- */
for (CloudifyExecution cfyExec : execResults.items) {
if (cfyExec.workflow_id.equalsIgnoreCase("install")) {
cfyExec.is_helm = isHelmType;
@@ -580,6 +510,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
}
}
}
+ outboundJson = objectMapper.writeValueAsString(cfyExecList);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -587,8 +518,17 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Getting deployments failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getTenantStatusForService caught exception");
- result = new RestResponseError(e.getResponseBodyAsString());
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "getTenantStatusForService caught exception");
+ RestResponseError result = null;
+ result = new RestResponseError(
+ "getTenantStatusForService failed" + e.getResponseBodyAsString());
+ try {
+ outboundJson = objectMapper.writeValueAsString(result);
+ } catch (JsonProcessingException jpe) {
+ // Should never, ever happen
+ outboundJson = "{ \"error\" : \"" + jpe.toString() + "\"}";
+ }
} catch (Throwable t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -596,13 +536,21 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Getting deployments failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getTenantStatusForService caught exception");
- result = new RestResponseError("getTenantStatusForService failed", t);
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "getTenantStatusForService caught exception");
+ RestResponseError result = null;
+ result = new RestResponseError("getTenantStatusForService failed");
+ try {
+ outboundJson = objectMapper.writeValueAsString(result);
+ } catch (JsonProcessingException jpe) {
+ // Should never, ever happen
+ outboundJson = "{ \"error\" : \"" + jpe.toString() + "\"}";
+ }
} finally {
postLogAudit(request);
}
- return objectMapper.writeValueAsString(cfyExecList);
+ return outboundJson;
}
/**
@@ -613,39 +561,30 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* @return Body of deployment; error on failure
* @throws Exception On serialization failure
*/
- @RequestMapping(value = { DEPLOYMENTS_PATH }, method = RequestMethod.POST, produces = "application/json")
- @ResponseBody
- public String createDeployment(HttpServletRequest request, @RequestBody CloudifyDeploymentRequest deployment)
- throws Exception {
- preLogAudit(request);
- ECTransportModel result = null;
- try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.createDeployment(deployment);
- } 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", "Creating deployment failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "createDeployment 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", "Creating deployment failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "createDeployment caught exception");
- result = new RestResponseError("createDeployment failed", t);
- } finally {
- postLogAudit(request);
- }
- return objectMapper.writeValueAsString(result);
- }
-
+ /*
+ * @RequestMapping(value = { DEPLOYMENTS_PATH }, method = RequestMethod.POST,
+ * produces = "application/json")
+ *
+ * @ResponseBody public String createDeployment(HttpServletRequest
+ * request, @RequestBody CloudifyDeploymentRequest deployment) throws Exception
+ * { preLogAudit(request); ECTransportModel result = null; try { result =
+ * cloudifyClient.createDeployment(deployment); } 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", "Creating deployment failed!");
+ * logger.error(EELFLoggerDelegate.errorLogger,
+ * "createDeployment 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", "Creating deployment failed!");
+ * logger.error(EELFLoggerDelegate.errorLogger,
+ * "createDeployment caught exception"); result = new
+ * RestResponseError("createDeployment failed", t); } finally {
+ * postLogAudit(request); } return objectMapper.writeValueAsString(result); }
+ */
/**
* Deletes the specified deployment.
*
@@ -657,44 +596,35 @@ public class CloudifyController extends DashboardRestrictedBaseController {
* @return Passes thru HTTP status code from remote endpoint; no body on success
* @throws Exception on serialization failure
*/
- @RequestMapping(value = {
- DEPLOYMENTS_PATH + "/{id}" }, method = RequestMethod.DELETE, produces = "application/json")
- @ResponseBody
- public String deleteDeployment(@PathVariable("id") String id,
- @RequestParam(value = "ignore_live_nodes", required = false) Boolean ignoreLiveNodes,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
- preLogAudit(request);
- ECTransportModel result = null;
- try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- int code = restClient.deleteDeployment(id, ignoreLiveNodes == null ? false : ignoreLiveNodes);
- response.setStatus(code);
- } 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 deployment " + id + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment 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("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Deleting deployment " + id + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception");
- result = new RestResponseError("deleteDeployment failed on ID " + id, t);
- } finally {
- postLogAudit(request);
- }
- if (result == null)
- return null;
- else
- return objectMapper.writeValueAsString(result);
- }
+ /*
+ * @RequestMapping(value = { DEPLOYMENTS_PATH + "/{id}" }, method =
+ * RequestMethod.DELETE, produces = "application/json")
+ *
+ * @ResponseBody public String deleteDeployment(@PathVariable("id") String id,
+ *
+ * @RequestParam(value = "ignore_live_nodes", required = false) Boolean
+ * ignoreLiveNodes, HttpServletRequest request, HttpServletResponse response)
+ * throws Exception { preLogAudit(request); ECTransportModel result = null; try
+ * { int code = cloudifyClient.deleteDeployment(id, ignoreLiveNodes == null ?
+ * false : ignoreLiveNodes); response.setStatus(code); } 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 deployment " + id +
+ * " failed!"); logger.error(EELFLoggerDelegate.errorLogger,
+ * "deleteDeployment 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("ErrorCategory", "ERROR"); MDC.put("ErrorDescription",
+ * "Deleting deployment " + id + " failed!");
+ * logger.error(EELFLoggerDelegate.errorLogger,
+ * "deleteDeployment caught exception"); result = new
+ * RestResponseError("deleteDeployment failed on ID " + id, t); } finally {
+ * postLogAudit(request); } if (result == null) return null; else return
+ * objectMapper.writeValueAsString(result); }
+ */
/**
* Gets and serves one page of executions:
* <OL>
@@ -719,28 +649,26 @@ public class CloudifyController extends DashboardRestrictedBaseController {
@RequestMapping(value = { EXECUTIONS_PATH }, method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public String getExecutionsByPage(HttpServletRequest request,
- @RequestParam(value = "deployment_id", required = false) String deployment_id,
- @RequestParam(value = "status", required = false) String status,
- @RequestParam(value = "tenant", required = false) String tenant) throws Exception {
+ @RequestParam(value = "deployment_id", required = false) String deployment_id,
+ @RequestParam(value = "status", required = false) String status,
+ @RequestParam(value = "tenant", required = true) String tenant) throws Exception {
preLogAudit(request);
ECTransportModel result = null;
try {
+ if (tenant == null) {
+ throw new Exception("required tenant input missing");
+ }
List<CloudifyExecution> itemList = new ArrayList<CloudifyExecution>();
- CloudifyClient restClient = getCloudifyRestClient(request);
List<String> depIds = new ArrayList<>();
if (deployment_id == null) {
- CloudifyDeploymentList depList = restClient.getDeployments();
+ CloudifyDeploymentList depList = cloudifyClient.getDeployments();
for (CloudifyDeployment cd : depList.items)
depIds.add(cd.id);
} else {
depIds.add(deployment_id);
}
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
- if (tenant == null) {
- tenant = cloudPrimTenant;
- }
for (String depId : depIds) {
- CloudifyExecutionList exeList = restClient.getExecutions(depId, tenant);
+ CloudifyExecutionList exeList = cloudifyClient.getExecutions(depId, tenant);
itemList.addAll(exeList.items);
}
// Filter down to specified status as needed
@@ -763,7 +691,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
if (totalItems > pageSize)
itemList = getPageOfList(pageNum, pageSize, itemList);
result = new RestResponsePage<>(totalItems, pageCount, itemList);
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -798,12 +726,10 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
if (tenant == null) {
- tenant = cloudPrimTenant;
+ throw new Exception("required tenant input missing");
}
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.getExecutions(deployment_id, tenant);
+ result = cloudifyClient.getExecutions(deployment_id, tenant);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -814,7 +740,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
"Getting executions " + execution_id + " for deployment " + deployment_id + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getExecutionByIdAndDeploymentId caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -843,20 +769,19 @@ public class CloudifyController extends DashboardRestrictedBaseController {
@SuppressWarnings("unchecked")
@RequestMapping(value = { EVENTS_PATH }, method = RequestMethod.GET, produces = "application/json")
@ResponseBody
- public String getExecutionEventsById(@RequestParam(value = "execution_id", required = false) String execution_id,
- @RequestParam(value = "logType", required = false) String isLogEvent,
- @RequestParam(value = "tenant", required = false) String tenant, HttpServletRequest request)
- throws Exception {
+ public String getExecutionEventsById(
+ @RequestParam(value = "execution_id", required = false) String execution_id,
+ @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;
try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
if (tenant == null) {
- tenant = cloudPrimTenant;
+ throw new Exception("required tenant input missing");
}
- CloudifyClient restClient = getCloudifyRestClient(request);
- eventsList = restClient.getEventlogs(execution_id, tenant);
+ eventsList = cloudifyClient.getEventlogs(execution_id, tenant);
// Filter down to specified event type as needed
List<CloudifyEvent> itemList = eventsList.items;
if (!isLogEvent.isEmpty() && isLogEvent.equals("false")) {
@@ -887,7 +812,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Getting executions " + execution_id + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getExecutionEventsById caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -903,124 +828,6 @@ public class CloudifyController extends DashboardRestrictedBaseController {
}
/**
- * Gets the cloudify secret data for the specified secret name.
- *
- *
- * @param secret_name Secret name (path variable)
- * @param request HttpServletRequest
- * @return CloudifySecret
- * @throws Exception on serialization failure
- */
- /*
- * @RequestMapping(value = { SECRETS_PATH }, method = RequestMethod.GET,
- * produces = "application/json")
- *
- * @ResponseBody public String getSecrets(
- *
- * @RequestParam(value = "tenant") String tenant, HttpServletRequest request)
- * throws Exception { preLogAudit(request); ECTransportModel result = null; try
- * { String cloudPrimTenant =
- * getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM); if
- * (tenant == null) { tenant = cloudPrimTenant; } IControllerRestClient
- * restClient = getControllerRestClient(); result =
- * restClient.getSecrets(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 secrets failed!");
- * logger.error(EELFLoggerDelegate.errorLogger, "getSecret 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", "Getting secrets failed!");
- * logger.error(EELFLoggerDelegate.errorLogger, "getSecret caught exception");
- * result = new RestResponseError("getSecret failed", t); } finally {
- * postLogAudit(request); } return objectMapper.writeValueAsString(result); }
- *
- * /** Gets the cloudify secret data for the specified secret name.
- *
- *
- * @param secret_name Secret name (path variable)
- *
- * @param request HttpServletRequest
- *
- * @return CloudifySecret
- *
- * @throws Exception on serialization failure
- */
- @RequestMapping(value = {
- SECRETS_PATH + "/{secret_name}" }, method = RequestMethod.GET, produces = "application/json")
- @ResponseBody
- public String getSecret(@PathVariable("secret_name") String secret_name,
- @RequestParam(value = "tenant") String tenant, HttpServletRequest request) throws Exception {
- preLogAudit(request);
- ECTransportModel result = null;
- try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
- if (tenant == null) {
- tenant = cloudPrimTenant;
- }
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.getSecret(secret_name, 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 secret for name " + secret_name + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getSecret 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", "Getting secret for name " + secret_name + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getSecret caught exception");
- result = new RestResponseError("getSecret failed", t);
- } finally {
- postLogAudit(request);
- }
- return objectMapper.writeValueAsString(result);
- }
-
- /**
- * Processes request to create secrets in cloudify manager.
- *
- * @param request HttpServletRequest
- * @param execution Execution model
- * @return Information about the execution
- * @throws Exception on serialization failure
- */
- /*
- * @RequestMapping(value = { SECRETS_PATH }, method = RequestMethod.POST,
- * produces = "application/json")
- *
- * @ResponseBody public String createSecret(HttpServletRequest
- * request, @RequestBody CloudifySecretUpload secret) throws Exception {
- * preLogAudit(request); ECTransportModel result = null; try {
- * IControllerRestClient restClient = getControllerRestClient(request); result =
- * restClient.createSecret(secret); } 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"); 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", "Starting execution failed!");
- * logger.error(EELFLoggerDelegate.errorLogger,
- * "startExecution caught exception"); result = new
- * RestResponseError("startExecution failed", t); } finally {
- * postLogAudit(request); } return objectMapper.writeValueAsString(result); }
- */
- /**
* Processes request to create an execution based on a deployment.
*
* @param request HttpServletRequest
@@ -1035,12 +842,12 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- if (!execution.workflow_id.equals("status") && !execution.getParameters().containsKey("node_instance_id")) {
+ if (!execution.workflow_id.equals("status")
+ && !execution.getParameters().containsKey("node_instance_id")) {
// get the node instance ID for the deployment
String nodeInstId = "";
- CloudifyNodeInstanceIdList nodeInstList = restClient.getNodeInstanceId(execution.getDeployment_id(),
- execution.getTenant());
+ CloudifyNodeInstanceIdList nodeInstList = cloudifyClient
+ .getNodeInstanceId(execution.getDeployment_id(), execution.getTenant());
if (nodeInstList != null) {
nodeInstId = nodeInstList.items.get(0).id;
}
@@ -1048,7 +855,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
inParms.put("node_instance_id", nodeInstId);
execution.setParameters(inParms);
}
- result = restClient.startExecution(execution);
+ result = cloudifyClient.startExecution(execution);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -1058,7 +865,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Starting execution failed!");
logger.error(EELFLoggerDelegate.errorLogger, "startExecution caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -1088,8 +895,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.updateDeployment(execution);
+ result = cloudifyClient.updateDeployment(execution);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -1099,7 +905,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Updating deployment failed!");
logger.error(EELFLoggerDelegate.errorLogger, "updateDeployment caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -1135,8 +941,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
List<String> tenant = null;
try {
tenant = headers.get("tenant");
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.cancelExecution(id, parameters, tenant.get(0));
+ result = cloudifyClient.cancelExecution(id, parameters, tenant.get(0));
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -1146,7 +951,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Cancelling execution " + id + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "cancelExecution caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -1183,8 +988,10 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.getNodeInstanceId(deploymentId, nodeId, tenant);
+ 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");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -1195,7 +1002,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
+ nodeId + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getNodeInstanceId caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -1219,12 +1026,10 @@ public class CloudifyController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
if (tenant == null) {
- tenant = cloudPrimTenant;
+ throw new Exception("required tenant input missing");
}
- CloudifyClient restClient = getCloudifyRestClient(request);
- result = restClient.getNodeInstanceVersion(deploymentId, tenant);
+ result = cloudifyClient.getNodeInstanceVersion(deploymentId, tenant);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -1234,7 +1039,7 @@ public class CloudifyController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Getting executions for deployment " + deploymentId + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getExecutionByIdAndDeploymentId caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CommonApiController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CommonApiController.java
index efe2ab7..c50fcec 100644
--- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CommonApiController.java
+++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/CommonApiController.java
@@ -26,11 +26,9 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.Scanner;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@@ -77,7 +75,6 @@ import org.onap.ccsdk.dashboard.rest.CloudifyClient;
import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient;
import org.onap.ccsdk.dashboard.rest.InventoryClient;
import org.onap.ccsdk.dashboard.service.ControllerEndpointService;
-import org.onap.ccsdk.dashboard.util.DashboardProperties;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.util.SystemProperties;
import org.slf4j.MDC;
@@ -97,27 +94,31 @@ import org.springframework.web.client.HttpStatusCodeException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
@RestController
@RequestMapping("/ecomp-api")
public class CommonApiController extends DashboardRestrictedBaseController {
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DeploymentHandlerController.class);
+ private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(CommonApiController.class);
private static final String COMPONENTS_PATH = "components";
private static final String DEPLOYMENTS_PATH = "deployments";
private static final String SERVICE_TYPES_PATH = "blueprints";
private static final String EXECUTIONS_PATH = "executions";
- private static final String API_HELP = "docs";
- private static final String DOCS_FILE_NAME = "ecompApiHelp.txt";
- private static final String DEP_IDS_FOR_TYPE = "deployments/typeIds";
private static final String DEP_TENANT_STATUS = "deployment-status";
private static final String TENANTS_PATH = "tenants";
@Autowired
private ControllerEndpointService controllerEndpointService;
+ @Autowired
+ InventoryClient inventoryClient;
+
+ @Autowired
+ DeploymentHandlerClient deploymentHandlerClient;
+
+ @Autowired
+ CloudifyClient cloudifyClient;
+
/**
* Enum for selecting an item type.
*/
@@ -160,8 +161,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
@ResponseBody
public String getTenants(HttpServletRequest request) throws Exception {
preLogAudit(request);
- CloudifyClient restClient = getCloudifyRestClient();
- List itemList = restClient.getTenants().items;
+ List itemList = cloudifyClient.getTenants().items;
final int totalItems = itemList.size();
final int pageSize = 20;
final int pageNum = 1;
@@ -189,15 +189,14 @@ public class CommonApiController extends DashboardRestrictedBaseController {
* the list from step#3, get the execution status info and generate the final
* response
*/
+ String outboundJson = "";
ECTransportModel result = null;
- HashMap<String, Object> resultMap = new HashMap<String, Object>();
List<CloudifyDeployedTenant> tenantList = new ArrayList<CloudifyDeployedTenant>();
List<CloudifyExecution> cfyExecList = new ArrayList<CloudifyExecution>();
try {
- CloudifyClient restClient = getCloudifyRestClient();
- List<CloudifyTenant> cldfyTen = restClient.getTenants().items;
+ List<CloudifyTenant> cldfyTen = cloudifyClient.getTenants().items;
for (CloudifyTenant ct : (List<CloudifyTenant>) cldfyTen) {
- result = restClient.getTenantInfoFromDeploy(ct.name);
+ result = cloudifyClient.getTenantInfoFromDeploy(ct.name);
tenantList.addAll(((CloudifyDeployedTenantList) result).items);
}
result = null;
@@ -213,13 +212,15 @@ public class CommonApiController extends DashboardRestrictedBaseController {
}
// Get concise execution status for each of the tenant deployment items
for (CloudifyDeployedTenant deplItem : currSrvcTenants) {
- CloudifyExecutionList execResults = restClient.getExecutionsSummary(deplItem.id, deplItem.tenant_name);
+ CloudifyExecutionList execResults =
+ cloudifyClient.getExecutionsSummary(deplItem.id, deplItem.tenant_name);
for (CloudifyExecution cfyExec : execResults.items) {
if (cfyExec.workflow_id.equalsIgnoreCase("install")) {
cfyExecList.add(cfyExec);
}
}
}
+ outboundJson = objectMapper.writeValueAsString(cfyExecList);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -229,7 +230,13 @@ public class CommonApiController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Getting deployments failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getTenantStatusForService caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ try {
+ outboundJson = objectMapper.writeValueAsString(result);
+ } catch (JsonProcessingException jpe) {
+ // Should never, ever happen
+ outboundJson = "{ \"error\" : \"" + jpe.toString() + "\"}";
+ }
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
MDC.put("TargetServiceName", "Cloudify Manager");
@@ -238,11 +245,17 @@ public class CommonApiController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Getting deployments failed!");
logger.error(EELFLoggerDelegate.errorLogger, "getTenantStatusForService caught exception");
result = new RestResponseError("getTenantStatusForService failed", t);
+ try {
+ outboundJson = objectMapper.writeValueAsString(result);
+ } catch (JsonProcessingException jpe) {
+ // Should never, ever happen
+ outboundJson = "{ \"error\" : \"" + jpe.toString() + "\"}";
+ }
} finally {
postLogAudit(request);
}
- return objectMapper.writeValueAsString(cfyExecList);
+ return outboundJson;
}
@RequestMapping(value = { SERVICE_TYPES_PATH }, method = RequestMethod.POST, produces = "application/json")
@@ -251,7 +264,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
String json = null;
try {
Blueprint.parse(serviceTypeUplReq.getBlueprintTemplate());
- InventoryClient inventoryClient = getInventoryClient();
+ // InventoryClient inventoryClient = getInventoryClient();
Collection<String> serviceIds = new ArrayList<String>();
Collection<String> vnfTypes = new ArrayList<String>();
Collection<String> serviceLocations = new ArrayList<String>();
@@ -397,47 +410,46 @@ public class CommonApiController extends DashboardRestrictedBaseController {
@SuppressWarnings({ "rawtypes", "unchecked" })
private String getItemListForPage(InventoryDataItem option, int pageNum, int pageSize, String searchBy,
String filters) throws Exception {
-
- InventoryClient inventoryClient = getInventoryClient();
String outboundJson = "";
List itemList = null;
switch (option) {
- case SERVICES:
- itemList = inventoryClient.getServices().collect(Collectors.toList());
- if (searchBy != null) {
- itemList = (List) itemList.stream().filter(s -> ((Service) s).contains(searchBy))
- .collect(Collectors.toList());
- }
- // Get the tenant names for all the deployments from Cloudify/API handler
- ECTransportModel result = null;
- List<CloudifyDeployedTenant> tenantList = new ArrayList<CloudifyDeployedTenant>();
- try {
- CloudifyClient restClient = getCloudifyRestClient();
- List<CloudifyTenant> cldfyTen = restClient.getTenants().items;
- for (CloudifyTenant ct : (List<CloudifyTenant>) cldfyTen) {
- result = restClient.getTenantInfoFromDeploy(ct.name);
- tenantList.addAll(((CloudifyDeployedTenantList) result).items);
+ case SERVICES:
+ itemList = inventoryClient.getServices().collect(Collectors.toList());
+ if (searchBy != null) {
+ itemList = (List) itemList.stream()
+ .filter(s -> ((Service) s).contains(searchBy)).collect(Collectors.toList());
}
- } 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 deployments failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getTenantInfoFromDeploy 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", "Getting deployments failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getDeploymentById caught exception");
- result = new RestResponseError("getTenantInfoFromDeploy failed", t);
- } finally {
+ // Get the tenant names for all the deployments from Cloudify/API handler
+ ECTransportModel result = null;
+ List<CloudifyDeployedTenant> tenantList = new ArrayList<CloudifyDeployedTenant>();
+ try {
+ List<CloudifyTenant> cldfyTen = cloudifyClient.getTenants().items;
+ for (CloudifyTenant ct : (List<CloudifyTenant>) cldfyTen) {
+ result = cloudifyClient.getTenantInfoFromDeploy(ct.name);
+ tenantList.addAll(((CloudifyDeployedTenantList) result).items);
+ }
+ } 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 deployments failed!");
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "getTenantInfoFromDeploy 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", "Getting deployments failed!");
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "getDeploymentById caught exception");
+ //result = new RestResponseError("getTenantInfoFromDeploy failed", t);
+ } finally {
}
@@ -471,7 +483,9 @@ public class CommonApiController extends DashboardRestrictedBaseController {
bpOut.setTypeName(bp.getTypeName());
break;
case "typeId":
+ if (bp.getTypeId().isPresent()) {
bpOut.setTypeId(bp.getTypeId().get());
+ }
break;
case "typeVersion":
bpOut.setTypeVersion(bp.getTypeVersion());
@@ -512,7 +526,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
@SuppressWarnings({ "rawtypes", "unchecked" })
private String getBlueprintTypeId(String searchBy, Optional<Integer> version, String typeId) throws Exception {
- InventoryClient inventoryClient = getInventoryClient();
+ // InventoryClient inventoryClient = getInventoryClient();
ServiceTypeQueryParams serviceQueryParams = null;
if (version.isPresent()) {
@@ -551,12 +565,10 @@ public class CommonApiController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
if (tenant == null) {
- tenant = cloudPrimTenant;
+ throw new Exception("tenant name is missing");
}
- CloudifyClient restClient = getCloudifyRestClient();
- result = restClient.getNodeInstanceVersion(deploymentId, tenant);
+ result = cloudifyClient.getNodeInstanceVersion(deploymentId, tenant);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -593,16 +605,15 @@ public class CommonApiController extends DashboardRestrictedBaseController {
@RequestMapping(value = {
DEPLOYMENTS_PATH + "/{deploymentId}/inputs" }, method = RequestMethod.GET, produces = "application/json")
public String getDeploymentInputs(@PathVariable("deploymentId") String deploymentId,
- @RequestParam(value = "tenant") String tenant, HttpServletRequest request) throws Exception {
+ @RequestParam(value = "tenant", required = true) String tenant, HttpServletRequest request)
+ throws Exception {
preLogAudit(request);
ECTransportModel result = null;
try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
if (tenant == null) {
- tenant = cloudPrimTenant;
+ throw new Exception("tenant name is missing");
}
- CloudifyClient restClient = getCloudifyRestClient();
- result = restClient.getDeploymentInputs(deploymentId, tenant);
+ result = cloudifyClient.getDeploymentInputs(deploymentId, tenant);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -642,7 +653,6 @@ public class CommonApiController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- CloudifyClient restClient = getCloudifyRestClient();
String nodeInstId = "";
Map<String, Object> parameters = objectMapper.readValue(upgParams,
new TypeReference<Map<String, Object>>() {
@@ -652,14 +662,15 @@ public class CommonApiController extends DashboardRestrictedBaseController {
parameters.remove("tenant");
parameters.remove("workflow");
// get the node instance ID for the deployment
- CloudifyNodeInstanceIdList nodeInstList = restClient.getNodeInstanceId(deploymentId, tenant);
+ CloudifyNodeInstanceIdList nodeInstList =
+ cloudifyClient.getNodeInstanceId(deploymentId, tenant);
if (nodeInstList != null) {
nodeInstId = nodeInstList.items.get(0).id;
}
parameters.put("node_instance_id", nodeInstId);
- CloudifyExecutionRequest execution = new CloudifyExecutionRequest(deploymentId, workflow, false, false,
- tenant, parameters);
- result = restClient.startExecution(execution);
+ 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", "Cloudify Manager");
@@ -690,7 +701,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
throws Exception {
preLogAudit(request);
List<ServiceTypeServiceMap> result = new ArrayList<ServiceTypeServiceMap>();
- InventoryClient inventoryClient = getInventoryClient();
+ // InventoryClient inventoryClient = getInventoryClient();
ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build();
ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams);
ServiceTypeServiceMap srvcMap = new ServiceTypeServiceMap(typeId, srvcRefs);
@@ -747,11 +758,9 @@ public class CommonApiController extends DashboardRestrictedBaseController {
postLogAudit(request);
}
}
- DeploymentHandlerClient deploymentHandlerClient = null;
try {
- deploymentHandlerClient = getDeploymentHandlerClient();
- DeploymentResponse resp = deploymentHandlerClient.putDeployment(depName,
- deploymentRequestObject.getTenant(),
+ DeploymentResponse resp =
+ deploymentHandlerClient.putDeployment(depName, deploymentRequestObject.getTenant(),
new DeploymentRequest(srvcTypeId, deploymentRequestObject.getInputs()));
DeploymentResponseLinks deplLinks = resp.getLinks();
String deplStatus = deplLinks.getStatus();
@@ -800,16 +809,6 @@ public class CommonApiController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Deployment failed!");
logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception");
json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (JsonProcessingException jpe) {
- // Should never, ever happen
- 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 = "{ \"error\" : \"" + jpe.toString() + "\"}";
} catch (Throwable t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Deployment Handler");
@@ -863,12 +862,10 @@ public class CommonApiController extends DashboardRestrictedBaseController {
} finally {
postLogAudit(request);
}
- DeploymentHandlerClient deploymentHandlerClient = null;
try {
- deploymentHandlerClient = getDeploymentHandlerClient();
- json = objectMapper.writeValueAsString(
- deploymentHandlerClient.updateDeployment(deploymentId, deploymentRequestObject.getTenant(),
- new DeploymentRequest(srvcTypeId, deploymentRequestObject.getInputs())));
+ json = objectMapper.writeValueAsString(deploymentHandlerClient.updateDeployment(
+ deploymentId, deploymentRequestObject.getTenant(),
+ new DeploymentRequest(srvcTypeId, deploymentRequestObject.getInputs())));
} catch (BadRequestException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Deployment Handler");
@@ -948,12 +945,10 @@ public class CommonApiController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- String cloudPrimTenant = getAppProperties().getProperty(DashboardProperties.CLOUDIFY_TENANT_PRIM);
if (tenant == null) {
- tenant = cloudPrimTenant;
+ throw new Exception("tenant name is missing");
}
- CloudifyClient restClient = getCloudifyRestClient();
- result = restClient.getExecutionsSummary(deploymentId, tenant);
+ result = cloudifyClient.getExecutionsSummary(deploymentId, tenant);
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -995,7 +990,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
preLogAudit(request);
String json = "{\"202\": \"OK\"}";
try {
- InventoryClient inventoryClient = getInventoryClient();
+ // InventoryClient inventoryClient = getInventoryClient();
ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build();
ServiceRefList srvcRefs = inventoryClient.getServicesForType(qryParams);
if (srvcRefs != null && srvcRefs.totalCount > 0) {
@@ -1045,15 +1040,20 @@ public class CommonApiController extends DashboardRestrictedBaseController {
* @return
* @throws Exception
*/
- @RequestMapping(value = {
- DEPLOYMENTS_PATH + "/{deploymentId}" }, method = RequestMethod.DELETE, produces = "application/json")
- public String deleteDeployment(@PathVariable("deploymentId") String deploymentId, HttpServletRequest request,
- @RequestParam("tenant") String tenant, HttpServletResponse response) throws Exception {
+ @RequestMapping(
+ value = {DEPLOYMENTS_PATH + "/{deploymentId}"},
+ method = RequestMethod.DELETE,
+ 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;
StringBuffer status = new StringBuffer();
try {
- DeploymentHandlerClient deploymentHandlerClient = getDeploymentHandlerClient();
+ if (tenant == null) {
+ throw new Exception("tenant name is missing");
+ }
deploymentHandlerClient.deleteDeployment(deploymentId, tenant);
String self = request.getRequestURL().toString().split("\\?")[0];
status.append(self).append("/executions?tenant=").append(tenant);
@@ -1097,16 +1097,6 @@ public class CommonApiController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception");
json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (JsonProcessingException jpe) {
- // Should never, ever happen
- 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 = "{ \"error\" : \"" + jpe.toString() + "\"}";
} catch (Throwable t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Deployment Handler");
@@ -1143,8 +1133,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
List<String> tenant = null;
try {
tenant = headers.get("tenant");
- CloudifyClient restClient = getCloudifyRestClient();
- result = restClient.cancelExecution(id, parameters, tenant.get(0));
+ result = cloudifyClient.cancelExecution(id, parameters, tenant.get(0));
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Cloudify Manager");
@@ -1177,8 +1166,6 @@ public class CommonApiController extends DashboardRestrictedBaseController {
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);
}
private void postLogAudit(HttpServletRequest request) {
@@ -1188,7 +1175,7 @@ public class CommonApiController extends DashboardRestrictedBaseController {
MDC.put("TargetServiceName", "Deployment Handler");
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/ConsulController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/ConsulController.java
index feb8dc5..28f7520 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
@@ -21,7 +21,6 @@
*******************************************************************************/
package org.onap.ccsdk.dashboard.controller;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -45,6 +44,7 @@ import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@@ -67,6 +67,9 @@ public class ConsulController extends DashboardRestrictedBaseController {
private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulController.class);
+ @Autowired
+ ConsulClient consulClient;
+
/**
* Enum for selecting an item type.
*/
@@ -118,28 +121,28 @@ public class ConsulController extends DashboardRestrictedBaseController {
* @return JSON block as String, see above.
* @throws Exception On any error; e.g., Network failure.
*/
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private String getItemListForPage(long userId, ConsulDataItem option, int pageNum, int pageSize, String dc)
- throws Exception {
- ConsulClient restClient = getConsulRestClient(userId);
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ private String getItemListForPage(long userId, ConsulDataItem option, int pageNum, int pageSize,
+ String dc) throws Exception {
List itemList = null;
switch (option) {
- case NODES:
- itemList = restClient.getNodes(dc);
- Collections.sort(itemList, nodeHealthComparator);
- break;
- case DATACENTERS:
- itemList = restClient.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");
- throw new Exception("getItemListForPage failed: unimplemented case: " + option.name());
+ case NODES:
+ itemList = consulClient.getNodes(dc);
+ Collections.sort(itemList, nodeHealthComparator);
+ 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");
+ throw new Exception(
+ "getItemListForPage failed: unimplemented case: " + option.name());
}
final int totalItems = itemList.size();
// Shrink if needed
@@ -204,9 +207,8 @@ public class ConsulController extends DashboardRestrictedBaseController {
preLogAudit(request);
Object result = null;
try {
- ConsulClient restClient = getConsulRestClient(request);
- result = restClient.getServiceHealth(dc, serviceId);
- } catch (Throwable t) {
+ result = consulClient.getServiceHealth(dc, serviceId);
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Consul");
MDC.put("TargetServiceName", "Consul");
@@ -240,10 +242,9 @@ public class ConsulController extends DashboardRestrictedBaseController {
ECTransportModel result = null;
try {
List<ConsulServiceHealth> itemList = new ArrayList<>();
- ConsulClient restClient = getConsulRestClient(request);
- List<ConsulServiceInfo> svcInfoList = restClient.getServices(dc);
+ List<ConsulServiceInfo> svcInfoList = consulClient.getServices(dc);
for (ConsulServiceInfo csi : svcInfoList) {
- List<ConsulServiceHealth> csh = restClient.getServiceHealth(dc, csi.name);
+ List<ConsulServiceHealth> csh = consulClient.getServiceHealth(dc, csi.name);
itemList.addAll(csh);
}
Collections.sort(itemList, serviceHealthComparator);
@@ -256,7 +257,7 @@ public class ConsulController extends DashboardRestrictedBaseController {
if (totalItems > pageSize)
itemList = getPageOfList(pageNum, pageSize, itemList);
result = new RestResponsePage<>(totalItems, pageCount, itemList);
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Consul");
MDC.put("TargetServiceName", "Consul");
@@ -301,9 +302,8 @@ public class ConsulController extends DashboardRestrictedBaseController {
preLogAudit(request);
Object result = null;
try {
- ConsulClient restClient = getConsulRestClient(request);
- result = restClient.getNodeServicesHealth(dc, nodeName);
- } catch (Throwable t) {
+ result = consulClient.getNodeServicesHealth(dc, nodeName);
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Consul");
MDC.put("TargetServiceName", "Consul");
@@ -365,8 +365,7 @@ public class ConsulController extends DashboardRestrictedBaseController {
throw new Exception("Required fields : [endpoint, interval] in checks");
}
}
- ConsulClient restClient = getConsulRestClient(request);
- result = new RestResponseSuccess(restClient.registerService(registration));
+ result = new RestResponseSuccess(consulClient.registerService(registration));
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Consul");
@@ -376,7 +375,7 @@ public class ConsulController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Registering service failed!");
logger.error(EELFLoggerDelegate.errorLogger, "registerService caught exception");
result = new RestResponseError(e.getResponseBodyAsString());
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Consul");
MDC.put("TargetServiceName", "Consul");
@@ -406,9 +405,9 @@ public class ConsulController extends DashboardRestrictedBaseController {
preLogAudit(request);
ECTransportModel result = null;
try {
- ConsulClient restClient = getConsulRestClient(request);
- int code = restClient.deregisterService(serviceName);
- result = new RestResponseSuccess("Deregistration yielded code " + Integer.toString(code));
+ int code = consulClient.deregisterService(serviceName);
+ result =
+ new RestResponseSuccess("Deregistration yielded code " + Integer.toString(code));
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Consul");
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 c5a624e..2b50b5b 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
@@ -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.controller;
@@ -31,19 +31,14 @@ import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import org.onap.ccsdk.dashboard.domain.ControllerEndpoint;
import org.onap.ccsdk.dashboard.domain.EcdComponent;
-import org.onap.ccsdk.dashboard.model.ControllerEndpointCredentials;
-import org.onap.ccsdk.dashboard.model.ControllerEndpointTransport;
-import org.onap.ccsdk.dashboard.model.ControllerOpsTools;
import org.onap.ccsdk.dashboard.model.EcdAppComponent;
import org.onap.ccsdk.dashboard.model.RestResponseError;
import org.onap.ccsdk.dashboard.model.RestResponseSuccess;
import org.onap.ccsdk.dashboard.service.ControllerEndpointService;
-import org.onap.portalsdk.core.domain.User;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
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;
@@ -75,10 +70,8 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
private final ObjectMapper mapper;
private static Date begin, end;
- private static final String CONTROLLERS_PATH = "controllers";
private static final String COMPONENTS_PATH = "components";
private static final String USER_APPS_PATH = "user-apps";
- private static final String OPS_PATH = "ops";
private static final String APP_LABEL = "app-label";
/**
@@ -94,7 +87,7 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
* @return View name key, which is resolved to a file using an Apache tiles
* "definitions.xml" file.
*/
- @RequestMapping(value = { "/ecd" }, method = RequestMethod.GET)
+ @RequestMapping(value = {"/ecd"}, method = RequestMethod.GET)
public ModelAndView dbcDefaultController() {
// a model is only useful for JSP; this app is angular.
return new ModelAndView("ecd_home_tdkey");
@@ -106,13 +99,17 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
* @param request HttpServletRequest
* @return List of component name strings, or an error on failure
*/
- @RequestMapping(value = { COMPONENTS_PATH }, method = RequestMethod.GET, produces = "application/json")
+ @RequestMapping(
+ value = {COMPONENTS_PATH},
+ method = RequestMethod.GET,
+ produces = "application/json")
@ResponseBody
public String getComponents(HttpServletRequest request) {
preLogAudit(request);
- String outboundJson = ""; // "['MSO','CLAMP','APPC','ECOMPSCHEDULER','POLICY']";
+ String outboundJson = "";
try {
HttpSession session = request.getSession(true);
+ @SuppressWarnings("unchecked")
Set<String> userApps = (Set<String>) session.getAttribute("authComponents");
if (userApps == null) {
userApps = new TreeSet<String>();
@@ -122,19 +119,21 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
List<EcdComponent> dbResult = controllerEndpointService.getComponents();
- List dcaeCompList = (List) dbResult.stream().filter(s -> ((EcdComponent) s).contains("dcae"))
- .collect(Collectors.toList());
+ List dcaeCompList = (List) dbResult.stream()
+ .filter(s -> ((EcdComponent) s).contains("dcae")).collect(Collectors.toList());
if (!userApps.isEmpty()) { // non-admin role level
for (String userRole : userApps) {
if (userRole.equalsIgnoreCase("dcae")) {
if (dcaeCompList != null && !dcaeCompList.isEmpty()) {
- EcdAppComponent dcaeAppComponent = new EcdAppComponent("DCAE", dcaeCompList);
+ EcdAppComponent dcaeAppComponent =
+ new EcdAppComponent("DCAE", dcaeCompList);
ecdApps.add(dcaeAppComponent);
}
} else {
- List tmpItemList = (List) dbResult.stream().filter(s -> ((EcdComponent) s).contains(userRole))
- .collect(Collectors.toList());
+ List tmpItemList = (List) dbResult.stream()
+ .filter(s -> ((EcdComponent) s).contains(userRole))
+ .collect(Collectors.toList());
if (tmpItemList != null) {
logger.debug(">>>> adding filtered items");
filterList.addAll(tmpItemList);
@@ -177,11 +176,11 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
* Get the application label - name + environment
*
*/
- @RequestMapping(value = { APP_LABEL }, method = RequestMethod.GET, produces = "application/json")
+ @RequestMapping(value = {APP_LABEL}, method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public String getAppLabel(HttpServletRequest request) throws Exception {
- return mapper.writeValueAsString(appProperties.getPropertyDef(appProperties.CONTROLLER_IN_ENV, "NA"));
- // return mapper.writeValueAsString(systemProperties.getAppDisplayName());
+ return mapper.writeValueAsString(
+ DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_IN_ENV, "NA"));
}
/**
@@ -191,11 +190,14 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
* @return List of component name strings, or an error on failure
*/
@SuppressWarnings("unchecked")
- @RequestMapping(value = { USER_APPS_PATH }, method = RequestMethod.GET, produces = "application/json")
+ @RequestMapping(
+ value = {USER_APPS_PATH},
+ method = RequestMethod.GET,
+ produces = "application/json")
@ResponseBody
public String getUserApps(HttpServletRequest request) {
preLogAudit(request);
- String outboundJson = ""; // "['MSO','CLAMP','APPC','ECOMPSCHEDULER','POLICY']";
+ String outboundJson = "";
try {
HttpSession session = request.getSession(true);
Set<String> userApps = (Set<String>) session.getAttribute("authComponents");
@@ -222,146 +224,23 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
/**
* Sets the controller endpoint selection for the user.
*
- * @param request HttpServletRequest
- * @param endpoint Body with endpoint details
- * @return Result indicating success or failure
- * @throws Exception if application user is not found
- */
- @RequestMapping(value = { COMPONENTS_PATH }, method = RequestMethod.POST, produces = "application/json")
- @ResponseBody
- public String insertComponent(HttpServletRequest request, @RequestBody EcdComponent newComponent) throws Exception {
- preLogAudit(request);
- String outboundJson = null;
- controllerEndpointService.insertComponent(newComponent);
- RestResponseSuccess success = new RestResponseSuccess(
- "Inserted new component with name " + newComponent.getCname());
- outboundJson = mapper.writeValueAsString(success);
- postLogAudit(request);
- return outboundJson;
- }
-
- /**
- * Gets the OPS Tools URLs from dashboard properties
- *
- * @param request HttpServletRequest
- * @return List of ControllerOpsTools objects, or an error on failure
- * @throws Exception
- */
- @RequestMapping(value = { OPS_PATH }, method = RequestMethod.GET, produces = "application/json")
- @ResponseBody
- public String getOpsToolUrls(HttpServletRequest request) {
- preLogAudit(request);
- String outboundJson = null;
- try {
- List<ControllerOpsTools> opsList = getControllerOpsTools();
- outboundJson = mapper.writeValueAsString(opsList);
- } catch (Exception ex) {
- MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "DashboardHomeController");
- MDC.put("TargetServiceName", "DashboardHomeController");
- MDC.put("ErrorCode", "300");
- MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Get Ops Tools URLs failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to get Ops Tools URL list");
- RestResponseError response = new RestResponseError("Failed to get Ops Tools URL list", ex);
- outboundJson = response.toJson();
- } finally {
- postLogAudit(request);
- }
- return outboundJson;
- }
-
- // get sites
- // get cfy, cnsl URLs
- // get cfy tenants
- // get cfy secret value for k8s ip per tenant
- // construct models TenantOpsCluster, SiteOpsToolLinks
- // return final model
- /**
- * Gets the available controller endpoints.
- *
* @param request HttpServletRequest
- * @return List of ControllerEndpointTransport objects, or an error on failure
- * @throws Exception if application user is not found
- */
- @RequestMapping(value = { CONTROLLERS_PATH }, method = RequestMethod.GET, produces = "application/json")
- @ResponseBody
- public String getControllers(HttpServletRequest request) {
- preLogAudit(request);
- String outboundJson = null;
- // Static data
- ControllerEndpointCredentials[] configured = getControllerEndpoints();
- try {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getLoginId() == null || appUser.getLoginId().length() == 0) {
- MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "DashboardHomeController");
- MDC.put("TargetServiceName", "DashboardHomeController");
- MDC.put("ErrorCode", "300");
- MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Get controllers failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to get application user");
- throw new Exception("getControllers: Failed to get application user");
- }
- ControllerEndpointCredentials selectedInDb = getOrSetControllerEndpointSelection(appUser.getId());
- // Built result from properties
- ArrayList<ControllerEndpointTransport> list = new ArrayList<>();
- for (ControllerEndpointCredentials ctrl : configured) {
- // Check if this is the selected endpoint in DB
- boolean selected = (selectedInDb != null && selectedInDb.getUrl() != null
- && selectedInDb.getUrl().equals(ctrl.getUrl()));
- // Result has no privileged information
- ControllerEndpointTransport transport = new ControllerEndpointTransport(selected, ctrl.getName(),
- ctrl.getUrl(), ctrl.getInventoryUrl(), ctrl.getDhandlerUrl(), ctrl.getConsulUrl());
- list.add(transport);
- }
- outboundJson = mapper.writeValueAsString(list);
- } catch (Exception ex) {
- MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "DashboardHomeController");
- MDC.put("TargetServiceName", "DashboardHomeController");
- MDC.put("ErrorCode", "300");
- MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Get controllers failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to get controller endpoint list");
- RestResponseError response = new RestResponseError("Failed to get controller endpoint list", ex);
- outboundJson = response.toJson();
- } finally {
- postLogAudit(request);
- }
- return outboundJson;
- }
-
- /**
- * Sets the controller endpoint selection for the user.
- *
- * @param request HttpServletRequest
* @param endpoint Body with endpoint details
* @return Result indicating success or failure
* @throws Exception if application user is not found
*/
- @RequestMapping(value = { CONTROLLERS_PATH }, method = RequestMethod.POST, produces = "application/json")
+ @RequestMapping(
+ value = {COMPONENTS_PATH},
+ method = RequestMethod.POST,
+ produces = "application/json")
@ResponseBody
- public String setControllerSelection(HttpServletRequest request, @RequestBody ControllerEndpointTransport endpoint)
- throws Exception {
+ public String insertComponent(HttpServletRequest request,
+ @RequestBody EcdComponent newComponent) throws Exception {
preLogAudit(request);
String outboundJson = null;
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getLoginId() == null || appUser.getLoginId().length() == 0) {
- MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "DashboardHomeController");
- MDC.put("TargetServiceName", "DashboardHomeController");
- MDC.put("ErrorCode", "300");
- MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Set controllers failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to get application user");
- postLogAudit(request);
- throw new Exception("setControllerSelection: Failed to get application user");
- }
- ControllerEndpoint dbEntry = new ControllerEndpoint(appUser.getId(), endpoint.getName(), endpoint.getUrl(),
- endpoint.getInventoryUrl(), endpoint.getDhandlerUrl());
- controllerEndpointService.updateControllerEndpointSelection(dbEntry);
- RestResponseSuccess success = new RestResponseSuccess("Updated selection to " + endpoint.getName());
+ controllerEndpointService.insertComponent(newComponent);
+ RestResponseSuccess success =
+ new RestResponseSuccess("Inserted new component with name " + newComponent.getCname());
outboundJson = mapper.writeValueAsString(success);
postLogAudit(request);
return outboundJson;
@@ -372,7 +251,6 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
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) {
@@ -384,6 +262,7 @@ public class DashboardHomeController extends DashboardRestrictedBaseController {
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/DashboardRestrictedBaseController.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/controller/DashboardRestrictedBaseController.java
index 441b529..f3b6147 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
@@ -23,30 +23,13 @@ package org.onap.ccsdk.dashboard.controller;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
-import org.onap.ccsdk.dashboard.domain.ControllerEndpoint;
-import org.onap.ccsdk.dashboard.model.ControllerEndpointCredentials;
-import org.onap.ccsdk.dashboard.model.ControllerOpsTools;
-import org.onap.ccsdk.dashboard.rest.CloudifyClient;
-import org.onap.ccsdk.dashboard.rest.CloudifyMockClientImpl;
-import org.onap.ccsdk.dashboard.rest.CloudifyRestClientImpl;
-import org.onap.ccsdk.dashboard.rest.ConsulClient;
-import org.onap.ccsdk.dashboard.rest.ConsulMockClientImpl;
-import org.onap.ccsdk.dashboard.rest.ConsulRestClientImpl;
-import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient;
-import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClientImpl;
-import org.onap.ccsdk.dashboard.rest.InventoryClient;
-import org.onap.ccsdk.dashboard.rest.RestInventoryClientImpl;
-import org.onap.ccsdk.dashboard.rest.RestInventoryClientMockImpl;
import org.onap.ccsdk.dashboard.service.ControllerEndpointService;
import org.onap.ccsdk.dashboard.util.DashboardProperties;
import org.onap.portalsdk.core.controller.RestrictedBaseController;
-import org.onap.portalsdk.core.domain.User;
-import org.onap.portalsdk.core.web.support.UserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.fasterxml.jackson.annotation.JsonInclude;
@@ -164,306 +147,4 @@ public class DashboardRestrictedBaseController extends RestrictedBaseController
int toIndex = firstIndexOnNextPage < itemList.size() ? firstIndexOnNextPage : itemList.size();
return itemList.subList(fromIndex, toIndex);
}
-
- /**
- * Gets all configured controllers from properties.
- *
- * @return Array of ControllerEndpointRestricted objects
- * @throws IllegalStateException if a required property is not found
- */
- protected ControllerEndpointCredentials[] getControllerEndpoints() {
- final String[] controllerKeys = DashboardProperties.getCsvListProperty(DashboardProperties.CONTROLLER_KEY_LIST);
- ControllerEndpointCredentials[] controllers = new ControllerEndpointCredentials[controllerKeys.length];
- for (int i = 0; i < controllerKeys.length; ++i) {
- String key = controllerKeys[i];
- final String name = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_NAME);
- final String url = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_URL);
- final String inventoryUrl = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_INVENTORY_URL);
- final String dhandlerUrl = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_DHANDLER_URL);
- final String consulUrl = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_CONSUL_URL);
- final String user = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_USERNAME);
- final String pass = DashboardProperties.getControllerProperty(key,
- DashboardProperties.CONTROLLER_SUBKEY_PASS);
- final boolean encr = Boolean.parseBoolean(
- DashboardProperties.getControllerProperty(key, DashboardProperties.CONTROLLER_SUBKEY_ENCRYPTED));
- controllers[i] = new ControllerEndpointCredentials(false, name, url, inventoryUrl, dhandlerUrl, consulUrl,
- user, pass, encr);
- }
- return controllers;
- }
-
- /**
- * Get the list of configured OPS Tools URLs from dashboard properties
- *
- * @return Array of ControllerOpsTools objects
- * @throws IllegalStateException if a required property is not found
- */
- protected List<ControllerOpsTools> getControllerOpsTools() {
- List<ControllerOpsTools> opsList = new ArrayList<>();
- final String[] controllerKeys = DashboardProperties.getCsvListProperty(DashboardProperties.CONTROLLER_KEY_LIST);
- String key = controllerKeys[0];
- final String cfyId = DashboardProperties.OPS_CLOUDIFY_URL.split("\\.")[1];
- final String cfyUrl = DashboardProperties.getControllerProperty(key, DashboardProperties.OPS_CLOUDIFY_URL);
- final String k8Id = DashboardProperties.OPS_K8S_URL.split("\\.")[1];
- final String k8Url = DashboardProperties.getControllerProperty(key, DashboardProperties.OPS_K8S_URL);
- final String grfId = DashboardProperties.OPS_GRAFANA_URL.split("\\.")[1];
- final String grfUrl = DashboardProperties.getControllerProperty(key, DashboardProperties.OPS_GRAFANA_URL);
- final String cnslId = DashboardProperties.OPS_CONSUL_URL.split("\\.")[1];
- final String cnslUrl = DashboardProperties.getControllerProperty(key, DashboardProperties.OPS_CONSUL_URL);
- final String promId = DashboardProperties.OPS_PROMETHEUS_URL.split("\\.")[1];
- final String promUrl = DashboardProperties.getControllerProperty(key, DashboardProperties.OPS_PROMETHEUS_URL);
- final String dbclId = DashboardProperties.OPS_DBCL_URL.split("\\.")[1];
- final String dbclUrl = DashboardProperties.getControllerProperty(key, DashboardProperties.OPS_DBCL_URL);
- opsList.add(new ControllerOpsTools(cfyId, cfyUrl));
- opsList.add(new ControllerOpsTools(k8Id, k8Url));
- opsList.add(new ControllerOpsTools(grfId, grfUrl));
- opsList.add(new ControllerOpsTools(cnslId, cnslUrl));
- opsList.add(new ControllerOpsTools(promId, promUrl));
- opsList.add(new ControllerOpsTools(dbclId, dbclUrl));
-
- return opsList;
- }
-
- /**
- * Gets the controller endpoint for the specified user ID. Chooses the first one
- * from properties if the user has not selected one previously.
- *
- * @param userId Database User ID
- * @return ControllerEndpointCredentials for the specified user
- */
- protected ControllerEndpointCredentials getOrSetControllerEndpointSelection(long userId) {
- // Always need the complete list from properties
- ControllerEndpointCredentials[] configured = getControllerEndpoints();
- // See if the database has an entry for this user
- ControllerEndpoint dbEntry = controllerEndpointService.getControllerEndpointSelection(userId);
- // If no row found DAO returns an object with null entries.
- if (dbEntry == null || dbEntry.getName() == null) {
- // Arbitrarily choose the first one
- ControllerEndpointCredentials first = configured[0];
- dbEntry = new ControllerEndpoint(userId, first.getName(), first.getUrl(), first.getInventoryUrl(),
- first.getDhandlerUrl());
- controllerEndpointService.updateControllerEndpointSelection(dbEntry);
- }
- // Fetch complete details for the selected item
- ControllerEndpointCredentials selected = null;
- for (ControllerEndpointCredentials cec : configured) {
- if (dbEntry.getUrl().equals(cec.getUrl())) {
- selected = cec;
- break;
- }
- }
- // Defend against a stale database entry.
- if (selected == null) {
- selected = configured[0];
- dbEntry = new ControllerEndpoint(userId, selected.getName(), selected.getUrl(), selected.getInventoryUrl(),
- selected.getDhandlerUrl());
- controllerEndpointService.updateControllerEndpointSelection(dbEntry);
- }
- return selected;
- }
-
- protected ControllerEndpointCredentials getOrSetControllerEndpointSelection() {
- ControllerEndpointCredentials[] configured = getControllerEndpoints();
- return configured[0];
- }
-
- /**
- * Convenience method that gets the user ID from the session and fetches the
- * REST client. Factors code out of subclass methods.
- *
- * @param request HttpServletRequest
- * @return REST client appropriate for the user
- */
- protected CloudifyClient getCloudifyRestClient(HttpServletRequest request) throws Exception {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getCloudifyRestClient: Failed to get application user");
- return getCloudifyRestClient(appUser.getId());
- }
-
- /**
- * Gets a REST client; either a mock client (returns canned data), or a real
- * client with appropriate credentials from properties.
- *
- * @return REST client.
- */
- protected CloudifyClient getCloudifyRestClient(long userId) throws Exception {
- CloudifyClient result = null;
- // Be robust to missing development-only property
- boolean mock = false;
- if (DashboardProperties.containsProperty(DashboardProperties.CONTROLLER_MOCK_DATA))
- mock = DashboardProperties.getBooleanProperty(DashboardProperties.CONTROLLER_MOCK_DATA);
- if (mock) {
- result = new CloudifyMockClientImpl();
- } else {
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection(userId);
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new CloudifyRestClientImpl(details.getUrl(), details.getUsername(), clearText);
- }
- return result;
- }
-
- /**
- * Gets a REST client; either a mock client (returns canned data), or a real
- * client with appropriate credentials from properties.
- *
- * @return REST client.
- */
- protected CloudifyClient getCloudifyRestClient() throws Exception {
- CloudifyClient result = null;
- // Be robust to missing development-only property
- boolean mock = false;
- if (DashboardProperties.containsProperty(DashboardProperties.CONTROLLER_MOCK_DATA))
- mock = DashboardProperties.getBooleanProperty(DashboardProperties.CONTROLLER_MOCK_DATA);
- if (mock) {
- result = new CloudifyMockClientImpl();
- } else {
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection();
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new CloudifyRestClientImpl(details.getUrl(), details.getUsername(), clearText);
- }
- return result;
- }
-
- /**
- * Convenience method that gets the user ID from the session and fetches the
- * REST client. Factors code out of subclass methods.
- *
- * @param request HttpServletRequest
- * @return REST client appropriate for the user
- */
- protected ConsulClient getConsulRestClient(HttpServletRequest request) throws Exception {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
- return getConsulRestClient(appUser.getId());
- }
-
- /**
- * Gets a REST client; either a mock client (returns canned data), or a real
- * client with appropriate credentials from properties.
- *
- * @return REST client.
- */
- protected ConsulClient getConsulRestClient(long userId) throws Exception {
- ConsulClient result = null;
- // Be robust to missing development-only property
- boolean mock = false;
- if (DashboardProperties.containsProperty(DashboardProperties.CONTROLLER_MOCK_DATA))
- mock = DashboardProperties.getBooleanProperty(DashboardProperties.CONTROLLER_MOCK_DATA);
- if (mock) {
- result = new ConsulMockClientImpl();
- } else {
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection();
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new ConsulRestClientImpl(details.getConsulUrl(), details.getUsername(), clearText);
- }
- return result;
- }
-
- /**
- * Gets a REST client; either a mock client (returns canned data), or a real
- * client with appropriate credentials from properties.
- *
- * @return REST client.
- */
- protected ConsulClient getConsulRestClient() throws Exception {
- ConsulClient result = null;
- // Be robust to missing development-only property
- boolean mock = false;
- if (DashboardProperties.containsProperty(DashboardProperties.CONTROLLER_MOCK_DATA))
- mock = DashboardProperties.getBooleanProperty(DashboardProperties.CONTROLLER_MOCK_DATA);
- if (mock) {
- result = new ConsulMockClientImpl();
- } else {
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection();
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new ConsulRestClientImpl(details.getConsulUrl(), details.getUsername(), clearText);
- }
- return result;
- }
-
- /**
- * Convenience method that gets the user ID from the session and fetches the
- * Inventory client. Factors code out of subclass methods.
- *
- * @param request HttpServletRequest
- * @return Inventory client appropriate for the user
- */
- protected InventoryClient getInventoryClient(HttpServletRequest request) throws Exception {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
- return getInventoryClient(appUser.getId());
- }
-
- /**
- * Gets an Inventory client with appropriate credentials from properties.
- *
- * @return Inventory Client.
- */
- protected InventoryClient getInventoryClient(long userId) throws Exception {
- InventoryClient result = null;
- boolean mock = false;
- if (DashboardProperties.containsProperty(DashboardProperties.CONTROLLER_MOCK_DATA))
- mock = DashboardProperties.getBooleanProperty(DashboardProperties.CONTROLLER_MOCK_DATA);
- if (mock) {
- result = new RestInventoryClientMockImpl();
- } else {
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection(userId);
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new RestInventoryClientImpl(details.getInventoryUrl(), details.getUsername(), clearText);
- }
- return result;
- }
-
- protected InventoryClient getInventoryClient() throws Exception {
- InventoryClient result = null;
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection();
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new RestInventoryClientImpl(details.getInventoryUrl(), details.getUsername(), clearText);
- return result;
- }
-
- /**
- * Convenience method that gets the user ID from the session and fetches the
- * Deployment Handler client. Factors code out of subclass methods.
- *
- * @param request HttpServletRequest
- * @return Deployment Handler client appropriate for the user
- */
- protected DeploymentHandlerClient getDeploymentHandlerClient(HttpServletRequest request) throws Exception {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
- return getDeploymentHandlerClient(appUser.getId());
- }
-
- /**
- * Gets a Deployment Handler client with appropriate credentials from
- * properties.
- *
- * @return Deployment Handler Client.
- */
- protected DeploymentHandlerClient getDeploymentHandlerClient(long userId) throws Exception {
- DeploymentHandlerClient result = null;
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection(userId);
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new DeploymentHandlerClientImpl(details.getDhandlerUrl(), details.getUsername(), clearText);
- return result;
- }
-
- protected DeploymentHandlerClient getDeploymentHandlerClient() throws Exception {
- DeploymentHandlerClient result = null;
- ControllerEndpointCredentials details = getOrSetControllerEndpointSelection();
- final String clearText = details.getEncryptedPassword() ? details.decryptPassword() : details.getPassword();
- result = new DeploymentHandlerClientImpl(details.getDhandlerUrl(), details.getUsername(), clearText);
- return result;
- }
}
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 1c3ac8f..0346ad7 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
@@ -41,6 +41,7 @@ import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@@ -60,7 +61,11 @@ import com.fasterxml.jackson.core.JsonProcessingException;
@RequestMapping("/deploymenthandler")
public class DeploymentHandlerController extends DashboardRestrictedBaseController {
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DeploymentHandlerController.class);
+ private static EELFLoggerDelegate logger =
+ EELFLoggerDelegate.getLogger(DeploymentHandlerController.class);
+
+ @Autowired
+ DeploymentHandlerClient deploymentHandlerClient;
private static final String DEPLOYMENTS_PATH = "dcae-deployments";
@@ -74,7 +79,6 @@ public class DeploymentHandlerController extends DashboardRestrictedBaseControll
preLogAudit(request);
String json = null;
try {
- DeploymentHandlerClient deploymentHandlerClient = getDeploymentHandlerClient(request);
if (deploymentRequestObject.getMethod().equals("create")) {
json = objectMapper.writeValueAsString(deploymentHandlerClient.putDeployment(
deploymentRequestObject.getDeploymentId(), deploymentRequestObject.getTenant(),
@@ -121,18 +125,9 @@ public class DeploymentHandlerController extends DashboardRestrictedBaseControll
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()));
- } catch (JsonProcessingException jpe) {
- // Should never, ever happen
- 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! Json Processing Exception");
- logger.error(EELFLoggerDelegate.errorLogger, "putDeployment caught exception");
- json = "{ \"error\" : \"" + jpe.toString() + "\"}";
- } catch (Throwable t) {
+ json = objectMapper.writeValueAsString(
+ new RestResponseError("Downstream Exception " + e.getMessage()));
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Deployment Handler");
MDC.put("TargetServiceName", "Deployment Handler");
@@ -156,7 +151,8 @@ public class DeploymentHandlerController extends DashboardRestrictedBaseControll
String json = null;
StringBuffer status = new StringBuffer();
try {
- DeploymentHandlerClient deploymentHandlerClient = getDeploymentHandlerClient(request);
+ // DeploymentHandlerClient deploymentHandlerClient =
+ // getDeploymentHandlerClient(request);
deploymentHandlerClient.deleteDeployment(deploymentId, tenant);
String self = request.getRequestURL().toString().split("\\?")[0];
status.append(self).append("/executions?tenant=").append(tenant);
@@ -200,17 +196,7 @@ public class DeploymentHandlerController extends DashboardRestrictedBaseControll
MDC.put("ErrorDescription", "Deleting deployment " + deploymentId + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "deleteDeployment caught exception");
json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (JsonProcessingException jpe) {
- // Should never, ever happen
- 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 = "{ \"error\" : \"" + jpe.toString() + "\"}";
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "Deployment Handler");
MDC.put("TargetServiceName", "Deployment Handler");
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 c2330f4..9d28be7 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
@@ -244,6 +244,9 @@ public class ECDSingleSignOnController extends UnRestrictedBaseController {
} catch (RestClientException ex) {
logger.debug("isPortalAvailable failed", ex);
avail = false;
+ } catch (Exception e) {
+ logger.debug("isPortalAvailable failed", e);
+ avail = false;
}
return avail;
}
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 df5ec64..5087ad1 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
@@ -22,26 +22,11 @@
package org.onap.ccsdk.dashboard.controller;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.UnknownHostException;
-import java.util.Date;
-import java.util.List;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.http.HttpStatus;
-import org.onap.ccsdk.dashboard.model.ControllerEndpointCredentials;
import org.onap.ccsdk.dashboard.model.HealthStatus;
-import org.onap.portalsdk.core.domain.App;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-import org.onap.portalsdk.core.objectcache.AbstractCacheManager;
-import org.onap.portalsdk.core.service.DataAccessService;
import org.onap.portalsdk.core.util.SystemProperties;
-import org.slf4j.MDC;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -58,24 +43,12 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/")
public class HealthCheckController extends DashboardRestrictedBaseController {
- private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(HealthCheckController.class);
-
/**
* Application name
*/
protected static final String APP_NAME = "ecd-app";
- private static Date begin, end;
private static final String APP_HEALTH_CHECK_PATH = "/health";
- private static final String APP_SRVC_HEALTH_CHECK_PATH = "/health-info";
-
- private static final String APP_DB_QRY = "from App where id = 1";
- public static final String APP_METADATA = "APP.METADATA";
-
- @Autowired
- private DataAccessService dataAccessService;
-
- private AbstractCacheManager cacheManager;
/**
* application health by simply responding with a JSON object indicating status
@@ -85,187 +58,7 @@ public class HealthCheckController extends DashboardRestrictedBaseController {
*/
@RequestMapping(value = { APP_HEALTH_CHECK_PATH }, method = RequestMethod.GET, produces = "application/json")
public HealthStatus healthCheck(HttpServletRequest request, HttpServletResponse response) {
- return new HealthStatus(200,
- SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + " health check passed ");
- }
-
- /**
- * Checks application health by executing a sample query with local DB
- *
- * @param request HttpServletRequest
- * @return 200 if database access succeeds, 500 if it fails.
- */
- /*
- * public HealthStatus healthCheck(HttpServletRequest request,
- * HttpServletResponse response) { //preLogAudit(request); HealthStatus
- * healthStatus = new HealthStatus(200,
- * SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) +
- * " health check passed "); try { logger.debug(EELFLoggerDelegate.debugLogger,
- * "Performing health check"); App app; Object appObj =
- * getCacheManager().getObject(APP_METADATA); if (appObj == null) { app =
- * findApp(); if (app != null) { getCacheManager().putObject(APP_METADATA, app);
- * } else { healthStatus = new HealthStatus(503,
- * SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) +
- * " health check failed to query App from database"); } }
- *
- * if (isDbConnUp()) { healthStatus = new HealthStatus(200,
- * SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) +
- * " health check passed "); } else { healthStatus = new HealthStatus(503,
- * SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) +
- * " health check failed to run db query"); } } catch (Exception ex) {
- * MDC.put(SystemProperties.STATUS_CODE, "ERROR"); MDC.put("TargetEntity",
- * "Health Check"); MDC.put("TargetServiceName", "Health Check");
- * MDC.put("ErrorCode", "300"); MDC.put("ErrorCategory", "ERROR");
- * MDC.put("ErrorDescription", "Health check failed!");
- * logger.error(EELFLoggerDelegate.errorLogger,
- * "Failed to perform health check"); healthStatus = new HealthStatus(503,
- * "health check failed: " + ex.toString()); } finally { postLogAudit(request);
- * } if (healthStatus.getStatusCode() != 200) {
- * response.setStatus(HttpStatus.SC_SERVICE_UNAVAILABLE);
- * response.sendError(HttpStatus.SC_SERVICE_UNAVAILABLE,
- * objectMapper.writeValueAsString(healthStatus)); }
- *
- * return healthStatus; }
- */
- /**
- * Checks application health and availability of dependent services
- *
- * @param request HttpServletRequest
- * @return 200 if database access succeeds, 500 if it fails.
- */
- @RequestMapping(value = { APP_SRVC_HEALTH_CHECK_PATH }, method = RequestMethod.GET, produces = "application/json")
- public HealthStatus srvcHealthCheck(HttpServletRequest request, HttpServletResponse response) throws Exception {
- preLogAudit(request);
- HealthStatus healthStatus = null;
- StringBuffer sb = new StringBuffer();
- try {
- logger.debug(EELFLoggerDelegate.debugLogger, "Performing health check");
- if (isDbConnUp()) {
- sb.append(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME))
- .append(" health check passed; ");
- healthStatus = new HealthStatus(200,
- SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + sb.toString());
- } else {
- sb.append(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME))
- .append(" health check failed to run db query; ");
- healthStatus = new HealthStatus(503,
- SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + sb.toString());
- }
- ControllerEndpointCredentials[] cec = getControllerEndpoints();
-
- for (int i = 0; i < cec.length; ++i) {
- // Check if API Handler is reachable
- if (!isServiceReachable(cec[i].getUrl())) {
- MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "API Handler");
- MDC.put("TargetServiceName", "API Handler");
- MDC.put("ErrorCode", "300");
- MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "API Handler unreachable!");
- sb.append(" API Handler unreachable; ");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to ping API Handler");
- }
- // Check if Inventory is reachable
- if (!isServiceReachable(cec[i].getInventoryUrl() + "/dcae-services")) {
- 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", "DCAE Inventory unreachable!");
- sb.append(" DCAE Inventory unreachable; ");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to ping DCAE Inventory");
- }
- // Check if Deployment Handler is reachable
- if (!isServiceReachable(cec[i].getDhandlerUrl())) {
- 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 Handler unreachable!");
- sb.append(" Deployment Handler unreachable; ");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to ping Deployment Handler");
- }
- }
- } catch (Exception ex) {
- MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "Health Check");
- MDC.put("TargetServiceName", "Health Check");
- MDC.put("ErrorCode", "300");
- MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Health check failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "Failed to perform health check");
- sb.append(" ");
- sb.append(ex.toString());
- healthStatus = new HealthStatus(503, SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME)
- + " health check failed: " + sb.toString());
- } finally {
- postLogAudit(request);
- }
- if (healthStatus.getStatusCode() != 200) {
- response.setStatus(HttpStatus.SC_SERVICE_UNAVAILABLE);
- response.sendError(HttpStatus.SC_SERVICE_UNAVAILABLE, objectMapper.writeValueAsString(healthStatus));
- }
- return healthStatus;
- }
-
- private boolean isDbConnUp() {
- @SuppressWarnings("unchecked")
- List<App> list = dataAccessService.executeQuery(APP_DB_QRY, null);
- if (list.size() > 0) {
- return true;
- } else {
- return false;
- }
- }
-
- private App findApp() {
- @SuppressWarnings("unchecked")
- List<App> list = dataAccessService.executeQuery(APP_DB_QRY, null);
- return (list == null || list.isEmpty()) ? null : (App) list.get(0);
- }
-
- public static boolean isServiceReachable(String targetUrl) throws IOException {
- HttpURLConnection httpUrlConnection = (HttpURLConnection) new URL(targetUrl).openConnection();
- httpUrlConnection.setRequestMethod("HEAD");
-
- try {
- int responseCode = httpUrlConnection.getResponseCode();
- return responseCode == HttpURLConnection.HTTP_OK;
- } catch (UnknownHostException noInternetConnection) {
- return false;
- }
- }
-
- @Autowired
- public void setCacheManager(AbstractCacheManager cacheManager) {
- this.cacheManager = cacheManager;
- }
-
- public AbstractCacheManager getCacheManager() {
- return cacheManager;
- }
-
- public void preLogAudit(HttpServletRequest request) {
- begin = new Date();
- MDC.put(SystemProperties.AUDITLOG_BEGIN_TIMESTAMP,
- DashboardRestrictedBaseController.logDateFormat.format(begin));
- MDC.put(SystemProperties.METRICSLOG_BEGIN_TIMESTAMP,
- DashboardRestrictedBaseController.logDateFormat.format(begin));
- MDC.put(SystemProperties.STATUS_CODE, "COMPLETE");
- // logger.setRequestBasedDefaultsIntoGlobalLoggingContext(request, APP_NAME);
- }
-
- public void postLogAudit(HttpServletRequest request) {
- end = new Date();
- MDC.put("AlertSeverity", "0");
- MDC.put("TargetEntity", "Health Check");
- MDC.put("TargetServiceName", "Health Check");
- MDC.put(SystemProperties.AUDITLOG_END_TIMESTAMP, DashboardRestrictedBaseController.logDateFormat.format(end));
- MDC.put(SystemProperties.METRICSLOG_END_TIMESTAMP, DashboardRestrictedBaseController.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());
+ return new HealthStatus(200, SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME)
+ + " health check passed ");
}
}
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 135b650..4251212 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
@@ -2,27 +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.
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
*******************************************************************************/
package org.onap.ccsdk.dashboard.controller;
-import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -30,7 +29,6 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
-import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
@@ -40,12 +38,10 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.onap.ccsdk.dashboard.exceptions.inventory.BlueprintParseException;
+import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceAlreadyDeactivatedException;
+import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceNotFoundException;
import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeAlreadyDeactivatedException;
import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException;
-import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant;
-import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
-import org.onap.ccsdk.dashboard.model.CloudifyTenant;
-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.inventory.Blueprint;
@@ -56,15 +52,14 @@ 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.ServiceTypeServiceMap;
-import org.onap.ccsdk.dashboard.rest.CloudifyClient;
import org.onap.ccsdk.dashboard.rest.InventoryClient;
-import org.onap.ccsdk.dashboard.util.DashboardProperties;
-import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.portalsdk.core.web.support.AppUtils;
-import org.onap.portalsdk.core.web.support.UserUtils;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+
import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -84,7 +79,11 @@ import com.fasterxml.jackson.core.JsonProcessingException;
@RequestMapping("/inventory")
public class InventoryController extends DashboardRestrictedBaseController {
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(InventoryController.class);
+ private static EELFLoggerDelegate logger =
+ EELFLoggerDelegate.getLogger(InventoryController.class);
+
+ @Autowired
+ InventoryClient inventoryClient;
/**
* Enum for selecting an item type.
@@ -97,34 +96,115 @@ public class InventoryController extends DashboardRestrictedBaseController {
private static final String SERVICES_PATH = "dcae-services";
private static final String SERVICE_TYPES_PATH = "dcae-service-types";
private static final String VIEW_SERVICE_TYPE_BLUEPRINT_PATH = "dcae-service-type-blueprint";
- private static final String DEPLOY_ROLE = ".k8.dev";
private static final String DEP_IDS_FOR_TYPE = "dcae-services/typeIds";
/**
- * ATT version with user role auth Gets one page of objects and supporting
+ * Gets one page of objects and supporting information via the REST client. On
+ * success, returns a PaginatedRestResponse object as String.
+ *
+ * @param option Specifies which item list 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.
+ */
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ private String getItemListForPage(HttpServletRequest request, InventoryDataItem option,
+ int pageNum, int pageSize, String sortBy, String searchBy) throws Exception {
+ List itemList = null;
+ switch (option) {
+ case SERVICES:
+ itemList = inventoryClient.getServices().collect(Collectors.toList());
+ if (searchBy != null) {
+ itemList = (List) itemList.stream()
+ .filter(s -> ((Service) s).contains(searchBy)).collect(Collectors.toList());
+ }
+ for (Service bp : (List<Service>) itemList) {
+ bp.setCanDeploy(Optional.of(true));
+ }
+ if (sortBy != null) {
+ if (sortBy.equals("deploymentRef")) {
+ Collections.sort(itemList, serviceDeploymentRefComparator);
+ } else if (sortBy.equals("serviceId")) {
+ Collections.sort(itemList, serviceIdComparator);
+ } else if (sortBy.equals("created")) {
+ Collections.sort(itemList, serviceCreatedComparator);
+ } else if (sortBy.equals("modified")) {
+ Collections.sort(itemList, serviceModifiedComparator);
+ }
+ }
+ break;
+ case SERVICE_TYPES:
+ itemList = inventoryClient.getServiceTypes().collect(Collectors.toList());
+ if (searchBy != null) {
+ itemList =
+ (List) itemList.stream().filter(s -> ((ServiceType) s).contains(searchBy))
+ .collect(Collectors.toList());
+ }
+ for (ServiceType bp : (List<ServiceType>) itemList) {
+ bp.setCanDeploy(Optional.of(true));
+ }
+ if (sortBy != null) {
+ if (sortBy.equals("owner")) {
+ Collections.sort(itemList, serviceTypeOwnerComparator);
+ } else if (sortBy.equals("typeId")) {
+ Collections.sort(itemList, serviceTypeIdComparator);
+ } else if (sortBy.equals("typeName")) {
+ Collections.sort(itemList, serviceTypeNameComparator);
+ } else if (sortBy.equals("typeVersion")) {
+ Collections.sort(itemList, serviceTypeVersionComparator);
+ } else if (sortBy.equals("created")) {
+ Collections.sort(itemList, serviceTypeCreatedComparator);
+ } else if (sortBy.equals("application")) {
+ Collections.sort(itemList, serviceTypeApplComparator);
+ } else if (sortBy.equals("component")) {
+ Collections.sort(itemList, serviceTypeCompComparator);
+ }
+ }
+ break;
+ default:
+ 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", "Getting page of items failed!");
+ throw new Exception(
+ "getItemListForPage failed: unimplemented case: " + option.name());
+ }
+
+ // Shrink if needed
+ final int totalItems = itemList.size();
+ final int pageCount = (int) Math.ceil((double) 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;
+ }
+
+ /**
+ * version with user role auth Gets one page of objects and supporting
* information via the REST client. On success, returns a PaginatedRestResponse
* object as String.
*
- * @param option Specifies which item list type to get
- * @param pageNum Page number of results
+ * @param option Specifies which item list 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.
*/
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private String getItemListForPageAuth(HttpServletRequest request, InventoryDataItem option, int pageNum,
- int pageSize, String sortBy, String searchBy) throws Exception {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
- InventoryClient inventoryClient = getInventoryClient(appUser.getId());
-
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ 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>) session.getAttribute("comp_access");
+ HashMap<String, Boolean> comp_deploy_tab =
+ (HashMap<String, Boolean>) session.getAttribute("comp_access");
String roleLevel = (String) session.getAttribute("role_level");
if (roleLevel == null) {
- roleLevel = "app";
+ roleLevel = "dev";
}
if (comp_deploy_tab == null) {
comp_deploy_tab = new HashMap<String, Boolean>();
@@ -139,287 +219,166 @@ public class InventoryController extends DashboardRestrictedBaseController {
List<ServiceType> filterList = new ArrayList<ServiceType>();
List<Service> authDepList = new ArrayList<Service>();
switch (option) {
- case SERVICES:
- itemList = inventoryClient.getServices().collect(Collectors.toList());
- if (roleLevel.equals("app")) {
- for (String userRole : userApps) {
- logger.debug(">>>> check component type from deployment: " + userRole);
- for (Service cont : (List<Service>) itemList) {
- String deplRef = cont.getDeploymentRef().toLowerCase();
- logger.debug(">>>> container deployment name: " + deplRef);
- if (deplRef.contains(userRole)) {
- logger.debug(">>>> adding deployment item to filtered subset");
- authDepList.add(cont);
+ case SERVICES:
+ itemList = inventoryClient.getServices().collect(Collectors.toList());
+ if (roleLevel.equals("app")) {
+ for (String userRole : userApps) {
+ logger.debug(">>>> check component type from deployment: " + userRole);
+ for (Service cont : (List<Service>) itemList) {
+ String deplRef = cont.getDeploymentRef().toLowerCase();
+ logger.debug(">>>> container deployment name: " + deplRef);
+ if (deplRef.contains(userRole)) {
+ logger.debug(">>>> adding deployment item to filtered subset");
+ authDepList.add(cont);
+ }
}
}
}
- }
- if (searchBy != null) {
- if (!roleLevel.equals("app")) {
- itemList = (List) itemList.stream().filter(s -> ((Service) s).contains(searchBy))
- .collect(Collectors.toList());
- } else {
- if (!authDepList.isEmpty()) {
- authDepList = (List) authDepList.stream().filter(s -> ((Service) s).contains(searchBy))
+ if (searchBy != null) {
+ if (!roleLevel.equals("app")) {
+ itemList =
+ (List) itemList.stream().filter(s -> ((Service) s).contains(searchBy))
.collect(Collectors.toList());
- }
- }
- }
- if (roleLevel.equals("app")) {
- logger.debug(">>>> update response with authorized content");
- itemList.clear();
- itemList.addAll(authDepList);
- }
-
- // check for authorization to perform delete deployed blueprints
-
- if (!roleLevel.equals("ops")) {
- for (Service bp : (List<Service>) itemList) {
- String deplRef = bp.getDeploymentRef().split("_")[0].toLowerCase();
- logger.debug(">>>> deployment reference: " + deplRef);
- if (comp_deploy_tab.containsKey(deplRef)) {
- boolean enableDeploy = comp_deploy_tab.get(deplRef);
- logger.debug(">>>> enable deploy button: " + enableDeploy);
- bp.setCanDeploy(Optional.of(enableDeploy));
} else {
- bp.setCanDeploy(Optional.of(false));
+ if (!authDepList.isEmpty()) {
+ authDepList = (List) authDepList.stream()
+ .filter(s -> ((Service) s).contains(searchBy))
+ .collect(Collectors.toList());
+ }
}
}
- } else {
- for (Service bp : (List<Service>) itemList) {
- bp.setCanDeploy(Optional.of(true));
+ if (roleLevel.equals("app")) {
+ logger.debug(">>>> update response with authorized content");
+ itemList.clear();
+ itemList.addAll(authDepList);
}
- }
- if (sortBy != null) {
- if (sortBy.equals("deploymentRef")) {
- Collections.sort(itemList, serviceDeploymentRefComparator);
- } else if (sortBy.equals("serviceId")) {
- Collections.sort(itemList, serviceIdComparator);
- } else if (sortBy.equals("created")) {
- Collections.sort(itemList, serviceCreatedComparator);
- } else if (sortBy.equals("modified")) {
- Collections.sort(itemList, serviceModifiedComparator);
- }
- }
- break;
- case SERVICE_TYPES:
- ServiceTypeQueryParams serviceQueryParams = null;
- serviceQueryParams = new ServiceTypeQueryParams.Builder().onlyLatest(false).build();
- itemList = inventoryClient.getServiceTypes(serviceQueryParams).collect(Collectors.toList());
- if (roleLevel.equals("app")) {
- for (String userApp : userApps) {
- logger.debug(">>>> check component type from BP: " + userApp);
- for (ServiceType bp : (List<ServiceType>) itemList) {
- String bpComp = bp.getComponent();
- String bpOwner = bp.getOwner(); // for backward compatibility
- logger.debug(">>>> BP component name: " + bpComp);
- if ((bpComp != null && bpComp.equalsIgnoreCase(userApp)) || bpOwner.contains(userApp)) {
- logger.debug(">>>> adding item to filtered subset");
- filterList.add(bp);
+ // check for authorization to perform delete deployed blueprints
+
+ if (!roleLevel.equals("ops")) {
+ for (Service bp : (List<Service>) itemList) {
+ String deplRef = bp.getDeploymentRef().split("_")[0].toLowerCase();
+ logger.debug(">>>> deployment reference: " + deplRef);
+ if (comp_deploy_tab.containsKey(deplRef)) {
+ boolean enableDeploy = comp_deploy_tab.get(deplRef);
+ logger.debug(">>>> enable deploy button: " + enableDeploy);
+ bp.setCanDeploy(Optional.of(enableDeploy));
+ } else {
+ bp.setCanDeploy(Optional.of(false));
}
}
- }
- }
- if (searchBy != null) {
- if (!roleLevel.equals("app")) {
- itemList = (List) itemList.stream().filter(s -> ((ServiceType) s).contains(searchBy))
- .collect(Collectors.toList());
} else {
- if (!filterList.isEmpty()) {
- filterList = (List) filterList.stream().filter(s -> ((ServiceType) s).contains(searchBy))
- .collect(Collectors.toList());
+ for (Service bp : (List<Service>) itemList) {
+ bp.setCanDeploy(Optional.of(true));
}
}
- }
- if (roleLevel.equals("app")) {
- logger.debug(">>>> update response with authorized content");
- itemList.clear();
- itemList.addAll(filterList);
- }
- // check for authorization to perform update/delete/deploy blueprints
- if (!roleLevel.equals("ops")) {
- for (ServiceType bp : (List<ServiceType>) itemList) {
- String bpComp = bp.getComponent();
- if (bpComp != null && bpComp.length() > 0) {
- bpComp = bpComp.toLowerCase();
- } else {
- String bpOwner = bp.getOwner(); // for backward compatibility
- if (bpOwner != null && bpOwner.contains(":")) {
- bpComp = bp.getOwner().split(":")[0].toLowerCase();
+ if (sortBy != null) {
+ if (sortBy.equals("deploymentRef")) {
+ Collections.sort(itemList, serviceDeploymentRefComparator);
+ } else if (sortBy.equals("serviceId")) {
+ Collections.sort(itemList, serviceIdComparator);
+ } else if (sortBy.equals("created")) {
+ Collections.sort(itemList, serviceCreatedComparator);
+ } else if (sortBy.equals("modified")) {
+ Collections.sort(itemList, serviceModifiedComparator);
+ }
+ }
+ break;
+ case SERVICE_TYPES:
+ ServiceTypeQueryParams serviceQueryParams =
+ new ServiceTypeQueryParams.Builder().onlyLatest(false).build();
+ itemList = inventoryClient.getServiceTypes(serviceQueryParams)
+ .collect(Collectors.toList());
+ if (roleLevel.equals("app")) {
+ for (String userApp : userApps) {
+ logger.debug(">>>> check component type from BP: " + userApp);
+ for (ServiceType bp : (List<ServiceType>) itemList) {
+ String bpComp = bp.getComponent();
+ String bpOwner = bp.getOwner(); // for backward compatibility
+ logger.debug(">>>> BP component name: " + bpComp);
+ if ((bpComp != null && bpComp.equalsIgnoreCase(userApp))
+ || bpOwner.contains(userApp)) {
+ logger.debug(">>>> adding item to filtered subset");
+ filterList.add(bp);
+ }
}
}
- logger.debug(">>>> BP component name: " + bpComp);
- if (comp_deploy_tab.containsKey(bpComp)) {
- boolean enableDeploy = comp_deploy_tab.get(bpComp);
- logger.debug(">>>> enable deploy button: " + enableDeploy);
- bp.setCanDeploy(Optional.of(enableDeploy));
+ }
+ if (searchBy != null) {
+ if (!roleLevel.equals("app")) {
+ itemList = (List) itemList.stream()
+ .filter(s -> ((ServiceType) s).contains(searchBy))
+ .collect(Collectors.toList());
} else {
- bp.setCanDeploy(Optional.of(false));
+ if (!filterList.isEmpty()) {
+ filterList = (List) filterList.stream()
+ .filter(s -> ((ServiceType) s).contains(searchBy))
+ .collect(Collectors.toList());
+ }
}
}
- } else {
- for (ServiceType bp : (List<ServiceType>) itemList) {
- bp.setCanDeploy(Optional.of(true));
+ if (roleLevel.equals("app")) {
+ logger.debug(">>>> update response with authorized content");
+ itemList.clear();
+ itemList.addAll(filterList);
}
- }
- if (sortBy != null) {
- if (sortBy.equals("owner")) {
- Collections.sort(itemList, serviceTypeOwnerComparator);
- } else if (sortBy.equals("typeId")) {
- Collections.sort(itemList, serviceTypeIdComparator);
- } else if (sortBy.equals("typeName")) {
- Collections.sort(itemList, serviceTypeNameComparator);
- } else if (sortBy.equals("typeVersion")) {
- Collections.sort(itemList, serviceTypeVersionComparator);
- } else if (sortBy.equals("created")) {
- Collections.sort(itemList, serviceTypeCreatedComparator);
- } else if (sortBy.equals("application")) {
- Collections.sort(itemList, serviceTypeApplComparator);
- } else if (sortBy.equals("component")) {
- Collections.sort(itemList, serviceTypeCompComparator);
+ // check for authorization to perform update/delete/deploy blueprints
+ if (!roleLevel.equals("ops")) {
+ for (ServiceType bp : (List<ServiceType>) itemList) {
+ String bpComp = bp.getComponent();
+ if (bpComp != null && bpComp.length() > 0) {
+ bpComp = bpComp.toLowerCase();
+ } else {
+ String bpOwner = bp.getOwner(); // for backward compatibility
+ if (bpOwner != null && bpOwner.contains(":")) {
+ bpComp = bp.getOwner().split(":")[0].toLowerCase();
+ }
+ }
+ logger.debug(">>>> BP component name: " + bpComp);
+ if (comp_deploy_tab.containsKey(bpComp)) {
+ boolean enableDeploy = comp_deploy_tab.get(bpComp);
+ logger.debug(">>>> enable deploy button: " + enableDeploy);
+ bp.setCanDeploy(Optional.of(enableDeploy));
+ } else {
+ bp.setCanDeploy(Optional.of(false));
+ }
+ }
+ } else {
+ for (ServiceType bp : (List<ServiceType>) itemList) {
+ bp.setCanDeploy(Optional.of(true));
+ }
}
- }
- break;
- default:
- 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", "Getting page of items failed!");
- throw new Exception("getItemListForPage failed: unimplemented case: " + option.name());
- }
- // Shrink if needed
- final int totalItems = itemList.size();
- final int pageCount = (int) Math.ceil((double) 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;
- }
-
- /**
- * Gets one page of objects and supporting information via the REST client. On
- * success, returns a PaginatedRestResponse object as String.
- *
- * @param option Specifies which item list 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.
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private String getItemListForPage(HttpServletRequest request, InventoryDataItem option, int pageNum, int pageSize,
- String sortBy, String searchBy) throws Exception {
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
- InventoryClient inventoryClient = getInventoryClient(appUser.getId());
-
- List itemList = null;
- switch (option) {
- case SERVICES:
- itemList = inventoryClient.getServices().collect(Collectors.toList());
- // Get the tenant names for all the deployments from Cloudify/API handler
- ECTransportModel result = null;
- List<CloudifyDeployedTenant> tenantList = new ArrayList<CloudifyDeployedTenant>();
- try {
- CloudifyClient restClient = getCloudifyRestClient(request);
- List<CloudifyTenant> cldfyTen = restClient.getTenants().items;
- for (CloudifyTenant ct : (List<CloudifyTenant>) cldfyTen) {
- result = restClient.getTenantInfoFromDeploy(ct.name);
- tenantList.addAll(((CloudifyDeployedTenantList) result).items);
+ if (sortBy != null) {
+ if (sortBy.equals("owner")) {
+ Collections.sort(itemList, serviceTypeOwnerComparator);
+ } else if (sortBy.equals("typeId")) {
+ Collections.sort(itemList, serviceTypeIdComparator);
+ } else if (sortBy.equals("typeName")) {
+ Collections.sort(itemList, serviceTypeNameComparator);
+ } else if (sortBy.equals("typeVersion")) {
+ Collections.sort(itemList, serviceTypeVersionComparator);
+ } else if (sortBy.equals("created")) {
+ Collections.sort(itemList, serviceTypeCreatedComparator);
+ } else if (sortBy.equals("application")) {
+ Collections.sort(itemList, serviceTypeApplComparator);
+ } else if (sortBy.equals("component")) {
+ Collections.sort(itemList, serviceTypeCompComparator);
+ }
}
- } catch (HttpStatusCodeException e) {
+ break;
+ default:
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
- MDC.put("TargetEntity", "Cloudify Manager");
- MDC.put("TargetServiceName", "Cloudify Manager");
+ MDC.put("TargetEntity", "DCAE Inventory");
+ MDC.put("TargetServiceName", "DCAE Inventory");
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
- MDC.put("ErrorDescription", "Getting deployments failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getTenantInfoFromDeploy 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", "Getting deployments failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getDeploymentById caught exception");
- result = new RestResponseError("getTenantInfoFromDeploy failed", t);
- } finally {
- postLogAudit(request);
- }
- for (Service depl : (List<Service>) itemList) {
- for (CloudifyDeployedTenant deplTen : tenantList) {
- if (depl.getDeploymentRef().equals(deplTen.id)) {
- depl.setTenant(deplTen.tenant_name);
- break;
- }
- }
- }
- if (searchBy != null) {
- itemList = (List) itemList.stream().filter(s -> ((Service) s).contains(searchBy))
- .collect(Collectors.toList());
- }
- for (Service bp : (List<Service>) itemList) {
- bp.setCanDeploy(Optional.of(true));
- }
- if (sortBy != null) {
- if (sortBy.equals("deploymentRef")) {
- Collections.sort(itemList, serviceDeploymentRefComparator);
- } else if (sortBy.equals("serviceId")) {
- Collections.sort(itemList, serviceIdComparator);
- } else if (sortBy.equals("created")) {
- Collections.sort(itemList, serviceCreatedComparator);
- } else if (sortBy.equals("modified")) {
- Collections.sort(itemList, serviceModifiedComparator);
- }
- }
- break;
- case SERVICE_TYPES:
- itemList = inventoryClient.getServiceTypes().collect(Collectors.toList());
- if (searchBy != null) {
- itemList = (List) itemList.stream().filter(s -> ((ServiceType) s).contains(searchBy))
- .collect(Collectors.toList());
- }
- for (ServiceType bp : (List<ServiceType>) itemList) {
- bp.setCanDeploy(Optional.of(true));
- }
- if (sortBy != null) {
- if (sortBy.equals("owner")) {
- Collections.sort(itemList, serviceTypeOwnerComparator);
- } else if (sortBy.equals("typeId")) {
- Collections.sort(itemList, serviceTypeIdComparator);
- } else if (sortBy.equals("typeName")) {
- Collections.sort(itemList, serviceTypeNameComparator);
- } else if (sortBy.equals("typeVersion")) {
- Collections.sort(itemList, serviceTypeVersionComparator);
- } else if (sortBy.equals("created")) {
- Collections.sort(itemList, serviceTypeCreatedComparator);
- } else if (sortBy.equals("application")) {
- Collections.sort(itemList, serviceTypeApplComparator);
- } else if (sortBy.equals("component")) {
- Collections.sort(itemList, serviceTypeCompComparator);
- }
- }
- break;
- default:
- 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", "Getting page of items failed!");
- throw new Exception("getItemListForPage failed: unimplemented case: " + option.name());
+ MDC.put("ErrorDescription", "Getting page of items failed!");
+ throw new Exception(
+ "getItemListForPage failed: unimplemented case: " + option.name());
}
// Shrink if needed
@@ -438,22 +397,25 @@ public class InventoryController 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, InventoryDataItem option, String sortBy,
- String searchBy) {
+ protected String getItemListForPageWrapper(HttpServletRequest request, InventoryDataItem option,
+ String sortBy, String searchBy) {
preLogAudit(request);
String outboundJson = null;
try {
int pageNum = getRequestPageNumber(request);
int pageSize = getRequestPageSize(request);
String appEnv = "os";
- appEnv = getAppProperties().getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "att");
+ appEnv =
+ DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth");
if (appEnv.equals("os")) {
- outboundJson = getItemListForPage(request, option, pageNum, pageSize, sortBy, searchBy);
+ outboundJson =
+ getItemListForPage(request, option, pageNum, pageSize, sortBy, searchBy);
} else {
- outboundJson = getItemListForPageAuth(request, option, pageNum, pageSize, sortBy, searchBy);
+ outboundJson =
+ getItemListForPageAuth(request, option, pageNum, pageSize, sortBy, searchBy);
}
} catch (Exception ex) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
@@ -462,10 +424,12 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Getting page of items failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "getItemListForPageWrapper caught exception");
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "getItemListForPageWrapper caught exception");
RestResponseError result = null;
if (ex instanceof HttpStatusCodeException)
- result = new RestResponseError(((HttpStatusCodeException) ex).getResponseBodyAsString());
+ result =
+ new RestResponseError(((HttpStatusCodeException) ex).getResponseBodyAsString());
else
result = new RestResponseError("Failed to get " + option.name(), ex);
try {
@@ -483,32 +447,35 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Supports sorting service types by owner
*/
- private static Comparator<ServiceType> serviceTypeOwnerComparator = new Comparator<ServiceType>() {
- @Override
- public int compare(ServiceType o1, ServiceType o2) {
- return o1.getOwner().compareToIgnoreCase(o2.getOwner());
- }
- };
+ private static Comparator<ServiceType> serviceTypeOwnerComparator =
+ new Comparator<ServiceType>() {
+ @Override
+ public int compare(ServiceType o1, ServiceType o2) {
+ return o1.getOwner().compareToIgnoreCase(o2.getOwner());
+ }
+ };
/**
* Supports sorting service types by application
*/
- private static Comparator<ServiceType> serviceTypeApplComparator = new Comparator<ServiceType>() {
- @Override
- public int compare(ServiceType o1, ServiceType o2) {
- return o1.getApplication().compareToIgnoreCase(o2.getApplication());
- }
- };
+ private static Comparator<ServiceType> serviceTypeApplComparator =
+ new Comparator<ServiceType>() {
+ @Override
+ public int compare(ServiceType o1, ServiceType o2) {
+ return o1.getApplication().compareToIgnoreCase(o2.getApplication());
+ }
+ };
/**
* Supports sorting service types by component
*/
- private static Comparator<ServiceType> serviceTypeCompComparator = new Comparator<ServiceType>() {
- @Override
- public int compare(ServiceType o1, ServiceType o2) {
- return o1.getComponent().compareToIgnoreCase(o2.getComponent());
- }
- };
+ private static Comparator<ServiceType> serviceTypeCompComparator =
+ new Comparator<ServiceType>() {
+ @Override
+ public int compare(ServiceType o1, ServiceType o2) {
+ return o1.getComponent().compareToIgnoreCase(o2.getComponent());
+ }
+ };
/**
* Supports sorting service types by type id
@@ -523,32 +490,35 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Supports sorting service types by type name
*/
- private static Comparator<ServiceType> serviceTypeNameComparator = new Comparator<ServiceType>() {
- @Override
- public int compare(ServiceType o1, ServiceType o2) {
- return o1.getTypeName().compareToIgnoreCase(o2.getTypeName());
- }
- };
+ private static Comparator<ServiceType> serviceTypeNameComparator =
+ new Comparator<ServiceType>() {
+ @Override
+ public int compare(ServiceType o1, ServiceType o2) {
+ return o1.getTypeName().compareToIgnoreCase(o2.getTypeName());
+ }
+ };
/**
* Supports sorting service types by type version
*/
- private static Comparator<ServiceType> serviceTypeVersionComparator = new Comparator<ServiceType>() {
- @Override
- public int compare(ServiceType o1, ServiceType o2) {
- return o1.getTypeVersion().compareTo(o2.getTypeVersion());
- }
- };
+ private static Comparator<ServiceType> serviceTypeVersionComparator =
+ new Comparator<ServiceType>() {
+ @Override
+ public int compare(ServiceType o1, ServiceType o2) {
+ return o1.getTypeVersion().compareTo(o2.getTypeVersion());
+ }
+ };
/**
* Supports sorting service types by created date
*/
- private static Comparator<ServiceType> serviceTypeCreatedComparator = new Comparator<ServiceType>() {
- @Override
- public int compare(ServiceType o1, ServiceType o2) {
- return o1.getCreated().get().compareToIgnoreCase(o2.getCreated().get());
- }
- };
+ private static Comparator<ServiceType> serviceTypeCreatedComparator =
+ new Comparator<ServiceType>() {
+ @Override
+ public int compare(ServiceType o1, ServiceType o2) {
+ return o1.getCreated().get().compareToIgnoreCase(o2.getCreated().get());
+ }
+ };
/**
* Supports sorting services by deploymentRef
@@ -596,46 +566,30 @@ public class InventoryController extends DashboardRestrictedBaseController {
* @param request HttpServletRequest
* @return List of ServiceTypes objects
*/
- @RequestMapping(value = { SERVICE_TYPES_PATH }, method = RequestMethod.GET, produces = "application/json")
+ @RequestMapping(
+ value = {SERVICE_TYPES_PATH},
+ method = RequestMethod.GET,
+ produces = "application/json")
@ResponseBody
public String getServiceTypesByPage(HttpServletRequest request) {
preLogAudit(request);
- String json = null;
- // json = getMockDataContent("/serviceTypesList.json");
- json = getItemListForPageWrapper(request, InventoryDataItem.SERVICE_TYPES, request.getParameter("sortBy"),
- request.getParameter("searchBy"));
+ String json = getItemListForPageWrapper(request, InventoryDataItem.SERVICE_TYPES,
+ request.getParameter("sortBy"), request.getParameter("searchBy"));
postLogAudit(request);
return json;
}
- private String getMockDataContent(final String path) {
- String result = null;
- try {
- InputStream is = getClass().getResourceAsStream(path);
- if (is == null)
- throw new Exception("Failed to find resource at path " + path);
- Scanner scanner = new Scanner(is, "UTF-8");
- result = scanner.useDelimiter("\\A").next();
- scanner.close();
- is.close();
- } catch (Exception ex) {
- logger.error("getMockDataContent failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
/**
* Query Service objects matching a service type ID
*
*/
- @RequestMapping(value = { DEP_IDS_FOR_TYPE }, method = RequestMethod.POST, produces = "application/json")
- public String getServicesForType(HttpServletRequest request, @RequestBody String[] typeList) throws Exception {
+ @RequestMapping(
+ value = {DEP_IDS_FOR_TYPE},
+ method = RequestMethod.POST,
+ produces = "application/json")
+ public String getServicesForType(HttpServletRequest request, @RequestBody String[] typeList)
+ throws Exception {
preLogAudit(request);
- User appUser = UserUtils.getUserSession(request);
- if (appUser == null || appUser.getId() == null)
- throw new Exception("getControllerRestClient: Failed to get application user");
- InventoryClient inventoryClient = getInventoryClient(appUser.getId());
List<ServiceTypeServiceMap> result = new ArrayList<ServiceTypeServiceMap>();
for (String typeId : typeList) {
ServiceQueryParams qryParams = new ServiceQueryParams.Builder().typeId(typeId).build();
@@ -653,13 +607,16 @@ public class InventoryController extends DashboardRestrictedBaseController {
*
* @return List of Service objects
*/
- @RequestMapping(value = { SERVICES_PATH }, method = RequestMethod.GET, produces = "application/json")
+ @RequestMapping(
+ value = {SERVICES_PATH},
+ method = RequestMethod.GET,
+ produces = "application/json")
@ResponseBody
public String getServicesByPage(HttpServletRequest request) {
// preLogAudit(request);
String json = null;
- json = getItemListForPageWrapper(request, InventoryDataItem.SERVICES, request.getParameter("sortBy"),
- request.getParameter("searchBy"));
+ json = getItemListForPageWrapper(request, InventoryDataItem.SERVICES,
+ request.getParameter("sortBy"), request.getParameter("searchBy"));
postLogAudit(request);
return json;
}
@@ -667,21 +624,22 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Gets the specified blueprint content for viewing.
*
- * @param id Blueprint ID
+ * @param id Blueprint ID
* @param request HttpServletRequest
* @return Blueprint as YAML; or error.
* @throws Exception on serialization error
*
*/
- @RequestMapping(value = {
- VIEW_SERVICE_TYPE_BLUEPRINT_PATH + "/{typeid}" }, method = RequestMethod.GET, produces = "application/yaml")
+ @RequestMapping(
+ 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 {
+ public String viewServiceTypeBlueprintContentById(@PathVariable("typeid") String typeId,
+ HttpServletRequest request) throws Exception {
preLogAudit(request);
String json = null;
try {
- InventoryClient inventoryClient = getInventoryClient(request);
json = objectMapper.writeValueAsString(inventoryClient.getServiceType(typeId).get());
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
@@ -690,27 +648,21 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Viewing service type " + typeId + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "viewServiceTypeBlueprintContentById caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString()));
- } catch (JsonProcessingException jpe) {
- // Should never, ever happen
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "viewServiceTypeBlueprintContentById caught exception");
+ json =
+ objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString()));
+ } catch (Exception t) {
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", "Viewing service type " + typeId + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "viewServiceTypeBlueprintContentById caught exception");
- json = "{ \"error\" : \"" + jpe.toString() + "\"}";
- } catch (Throwable t) {
- 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", "Viewing service type " + typeId + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "viewServiceTypeBlueprintContentById caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError("getBlueprintContentById failed", t));
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "viewServiceTypeBlueprintContentById caught exception");
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("getBlueprintContentById failed", t));
} finally {
postLogAudit(request);
}
@@ -720,23 +672,24 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Deletes the specified blueprint.
*
- * @param id Blueprint ID
- * @param request HttpServletRequest
+ * @param id Blueprint ID
+ * @param request HttpServletRequest
* @param response HttpServletResponse
* @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")
+ @RequestMapping(
+ value = {SERVICE_TYPES_PATH + "/{typeid}"},
+ method = RequestMethod.DELETE,
+ produces = "application/json")
@ResponseBody
- public String deleteServiceType(@PathVariable("typeid") String typeid, HttpServletRequest request,
- HttpServletResponse response) throws Exception {
+ public String deleteServiceType(@PathVariable("typeid") String typeid,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
preLogAudit(request);
String json = "{\"202\": \"OK\"}";
try {
- InventoryClient inventoryClient = getInventoryClient(request);
inventoryClient.deleteServiceType(typeid);
- } catch (ServiceTypeNotFoundException e) {
+ } catch (ServiceTypeNotFoundException | ServiceTypeAlreadyDeactivatedException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "DCAE Inventory");
MDC.put("TargetServiceName", "DCAE Inventory");
@@ -745,7 +698,7 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Deleting service type " + typeid + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "deleteServiceType caught exception");
json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (ServiceTypeAlreadyDeactivatedException e) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "DCAE Inventory");
MDC.put("TargetServiceName", "DCAE Inventory");
@@ -753,16 +706,8 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Deleting service type " + typeid + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "deleteServiceType caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (Throwable t) {
- 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", "Deleting service type " + typeid + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "deleteServiceType caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError("deleteDeployment failed", t));
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("deleteDeployment failed", t));
} finally {
postLogAudit(request);
}
@@ -772,32 +717,24 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Deletes the specified service i.e. deployment from inventory
*
- * @param id Service ID
- * @param request HttpServletRequest
+ * @param id Service ID
+ * @param request HttpServletRequest
* @param response HttpServletResponse
* @return status code on success; error on failure.
* @throws Exception On serialization failure
*/
- @RequestMapping(value = {
- SERVICES_PATH + "/{serviceId}" }, method = RequestMethod.DELETE, produces = "application/json")
+ @RequestMapping(
+ value = {SERVICES_PATH + "/{serviceId}"},
+ method = RequestMethod.DELETE,
+ produces = "application/json")
@ResponseBody
- public String deleteService(@PathVariable("serviceId") String serviceId, HttpServletRequest request,
- HttpServletResponse response) throws Exception {
+ public String deleteService(@PathVariable("serviceId") String serviceId,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
preLogAudit(request);
String json = "{\"202\": \"OK\"}";
try {
- InventoryClient inventoryClient = getInventoryClient(request);
inventoryClient.deleteService(serviceId);
- } catch (ServiceTypeNotFoundException e) {
- 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", "Deleting service " + serviceId + " failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "deleteServiceType caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (ServiceTypeAlreadyDeactivatedException e) {
+ } catch (ServiceNotFoundException | ServiceAlreadyDeactivatedException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "DCAE Inventory");
MDC.put("TargetServiceName", "DCAE Inventory");
@@ -806,7 +743,7 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorDescription", "Deleting service " + serviceId + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "deleteServiceType caught exception");
json = objectMapper.writeValueAsString(new RestResponseError(e.getMessage()));
- } catch (Throwable t) {
+ } catch (Exception t) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "DCAE Inventory");
MDC.put("TargetServiceName", "DCAE Inventory");
@@ -814,7 +751,8 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Deleting service " + serviceId + " failed!");
logger.error(EELFLoggerDelegate.errorLogger, "deleteServiceType caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError("deleteDeployment failed", t));
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("deleteDeployment failed", t));
} finally {
postLogAudit(request);
}
@@ -824,22 +762,24 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Processes request to update a blueprint currently existing in DCAE Inventory.
*
- * @param request HttpServletRequest
+ * @param request HttpServletRequest
* @param blueprint Cloudify blueprint
* @return Blueprint as uploaded; or error.
* @throws Exception on serialization error
*/
- @RequestMapping(value = {
- SERVICE_TYPES_PATH + "/update" }, method = RequestMethod.POST, produces = "application/json")
+ @RequestMapping(
+ value = {SERVICE_TYPES_PATH + "/update"},
+ method = RequestMethod.POST,
+ produces = "application/json")
@ResponseBody
- public String updateServiceTypeBlueprint(HttpServletRequest request, @RequestBody ServiceType serviceType)
- throws Exception {
+ 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());
- InventoryClient inventoryClient = getInventoryClient(request);
+ // InventoryClient inventoryClient = getInventoryClient(request);
inventoryClient.addServiceType(serviceType);
} catch (BlueprintParseException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
@@ -848,8 +788,10 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Updating service type failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "updateServiceTypeBlueprint caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError("Invalid blueprint format.", e));
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "updateServiceTypeBlueprint caught exception");
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("Invalid blueprint format.", e));
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "DCAE Inventory");
@@ -857,17 +799,21 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Updating service type failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "updateServiceTypeBlueprint caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString()));
- } catch (Throwable t) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "updateServiceTypeBlueprint caught exception");
+ json =
+ objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString()));
+ } catch (Exception t) {
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");
- json = objectMapper.writeValueAsString(new RestResponseError("updateServiceTypeBlueprint failed", t));
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "updateServiceTypeBlueprint caught exception");
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("updateServiceTypeBlueprint failed", t));
} finally {
postLogAudit(request);
}
@@ -877,21 +823,23 @@ public class InventoryController extends DashboardRestrictedBaseController {
/**
* Processes request to update a blueprint currently existing in DCAE Inventory.
*
- * @param request HttpServletRequest
+ * @param request HttpServletRequest
* @param blueprint Cloudify blueprint
* @return Blueprint as uploaded; or error.
* @throws Exception on serialization error
*/
- @RequestMapping(value = {
- SERVICE_TYPES_PATH + "/upload" }, method = RequestMethod.POST, produces = "application/json")
+ @RequestMapping(
+ value = {SERVICE_TYPES_PATH + "/upload"},
+ method = RequestMethod.POST,
+ produces = "application/json")
@ResponseBody
public String uploadServiceTypeBlueprint(HttpServletRequest request,
- @RequestBody ServiceTypeRequest serviceTypeRequest) throws Exception {
+ @RequestBody ServiceTypeRequest serviceTypeRequest) throws Exception {
preLogAudit(request);
String json = "{\"201\": \"OK\"}";
try {
Blueprint.parse(serviceTypeRequest.getBlueprintTemplate());
- InventoryClient inventoryClient = getInventoryClient(request);
+ // InventoryClient inventoryClient = getInventoryClient(request);
inventoryClient.addServiceType(serviceTypeRequest);
} catch (BlueprintParseException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
@@ -900,8 +848,10 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Updating service type failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "updateServiceTypeBlueprint caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError("Invalid blueprint format.", e));
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "updateServiceTypeBlueprint caught exception");
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("Invalid blueprint format.", e));
} catch (HttpStatusCodeException e) {
MDC.put(SystemProperties.STATUS_CODE, "ERROR");
MDC.put("TargetEntity", "DCAE Inventory");
@@ -909,17 +859,21 @@ public class InventoryController extends DashboardRestrictedBaseController {
MDC.put("ErrorCode", "300");
MDC.put("ErrorCategory", "ERROR");
MDC.put("ErrorDescription", "Updating service type failed!");
- logger.error(EELFLoggerDelegate.errorLogger, "updateServiceTypeBlueprint caught exception");
- json = objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString()));
- } catch (Throwable t) {
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "updateServiceTypeBlueprint caught exception");
+ json =
+ objectMapper.writeValueAsString(new RestResponseError(e.getResponseBodyAsString()));
+ } catch (Exception t) {
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");
- json = objectMapper.writeValueAsString(new RestResponseError("updateServiceTypeBlueprint failed", t));
+ logger.error(EELFLoggerDelegate.errorLogger,
+ "updateServiceTypeBlueprint caught exception");
+ json = objectMapper
+ .writeValueAsString(new RestResponseError("updateServiceTypeBlueprint failed", t));
} finally {
postLogAudit(request);
}
@@ -943,6 +897,7 @@ public class InventoryController extends DashboardRestrictedBaseController {
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/model/inventory/ServiceRequest.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRequest.java
index ecb1da0..46b3351 100644
--- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRequest.java
+++ b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/model/inventory/ServiceRequest.java
@@ -65,8 +65,10 @@ public class ServiceRequest {
final Collection<ServiceComponent> serviceComponents = service.getComponents();
final Collection<ServiceComponentRequest> serviceComponentRequests = new ArrayList<ServiceComponentRequest>();
- for (ServiceComponent sc : serviceComponents) {
- serviceComponentRequests.add(ServiceComponentRequest.from(sc));
+ if (serviceComponents != null) {
+ for (ServiceComponent sc : serviceComponents) {
+ serviceComponentRequests.add(ServiceComponentRequest.from(sc));
+ }
}
return new ServiceRequest(typeId, service.getVnfId(), service.getVnfType(), service.getVnfLocation(),
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 4173f5e..1ffab54 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
@@ -23,12 +23,9 @@ package org.onap.ccsdk.dashboard.rest;
import java.util.Map;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintContent;
import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintUpload;
import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentRequest;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse;
import org.onap.ccsdk.dashboard.model.CloudifyEventList;
@@ -37,7 +34,6 @@ import org.onap.ccsdk.dashboard.model.CloudifyExecutionList;
import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest;
import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList;
import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList;
-import org.onap.ccsdk.dashboard.model.CloudifySecret;
import org.onap.ccsdk.dashboard.model.CloudifyTenantList;
/**
@@ -106,16 +102,6 @@ public interface CloudifyClient {
public CloudifyNodeInstanceIdList getNodeInstanceId(String id, String tenant);
/**
- * Query execution information for a deployment ID and execution ID passed as
- * inputs
- *
- * @param executionId
- * @param deploymentId
- * @return
- */
- public CloudifyExecutionList getExecution(String executionId, String deploymentId);
-
- /**
* Initiate a deployment update in cloudify
*
* @param execution
@@ -161,23 +147,6 @@ public interface CloudifyClient {
public CloudifyNodeInstanceList getNodeInstanceVersion(String bp_id, String tenant);
/**
- * Start Uninstall execution workflow in cloudify
- *
- * @param id
- * @param ignoreLiveNodes
- * @return
- */
- public int deleteDeployment(String id, boolean ignoreLiveNodes);
-
- /**
- * Start install execution workflow in cloudify
- *
- * @param deployment
- * @return
- */
- public CloudifyDeploymentList createDeployment(CloudifyDeploymentRequest deployment);
-
- /**
* Query deployment object from cloudify
*
* @param id
@@ -201,30 +170,6 @@ public interface CloudifyClient {
public CloudifyDeploymentList getDeployments();
/**
- * Remove blueprint referred by ID from cloudify
- *
- * @param id
- * @return
- */
- public int deleteBlueprint(String id);
-
- /**
- * Upload blueprint into cloudify
- *
- * @param blueprint
- * @return
- */
- public CloudifyBlueprintList uploadBlueprint(CloudifyBlueprintUpload blueprint);
-
- /**
- * View blueprint YAML text
- *
- * @param id
- * @return
- */
- public CloudifyBlueprintContent viewBlueprint(String id);
-
- /**
* Query a blueprint object matching the blueprint ID in cloudify
*
* @param id
@@ -234,13 +179,6 @@ public interface CloudifyClient {
public CloudifyBlueprintList getBlueprint(String id, String tenant);
/**
- * Query all the blueprints in cloudify
- *
- * @return
- */
- public CloudifyBlueprintList getBlueprints();
-
- /**
* Query deployment inputs for a deployment ID in the cloudify tenant
*
* @param id
@@ -248,13 +186,4 @@ public interface CloudifyClient {
* @return
*/
public CloudifyDeploymentList getDeploymentInputs(String id, String tenant);
-
- /**
- * Query a secret object matching the input secret name in the cloudify tenant
- *
- * @param secretName
- * @param tenant
- * @return
- */
- public CloudifySecret getSecret(String secretName, String tenant);
}
diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyMockClientImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyMockClientImpl.java
deleted file mode 100644
index bd9100e..0000000
--- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/CloudifyMockClientImpl.java
+++ /dev/null
@@ -1,233 +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.rest;
-
-import java.io.InputStream;
-import java.util.Map;
-import java.util.Scanner;
-
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintContent;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintUpload;
-import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentRequest;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse;
-import org.onap.ccsdk.dashboard.model.CloudifyEventList;
-import org.onap.ccsdk.dashboard.model.CloudifyExecution;
-import org.onap.ccsdk.dashboard.model.CloudifyExecutionList;
-import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest;
-import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList;
-import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList;
-import org.onap.ccsdk.dashboard.model.CloudifySecret;
-import org.onap.ccsdk.dashboard.model.CloudifyTenantList;
-import org.onap.ccsdk.dashboard.model.ECTransportModel;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * Provides mock implementations that return contents of files on the classpath.
- */
-public class CloudifyMockClientImpl implements CloudifyClient {
-
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(CloudifyMockClientImpl.class);
-
- /**
- * For mock outputs
- */
- private final ObjectMapper objectMapper = new ObjectMapper();
-
- private String getMockDataContent(final String path) {
- String result = null;
- try {
- InputStream is = getClass().getResourceAsStream(path);
- if (is == null)
- throw new Exception("Failed to find resource at path " + path);
- Scanner scanner = new Scanner(is, "UTF-8");
- result = scanner.useDelimiter("\\A").next();
- scanner.close();
- is.close();
- } catch (Exception ex) {
- logger.error("getMockDataContent failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
- /**
- * Creates an input stream using the specified path and requests the mapper
- * create an object of the specified type.
- *
- * @param modelClass Model class
- * @param path Path to classpath resource
- * @return Instance of modelClass
- */
- private ECTransportModel getMockData(final Class<? extends ECTransportModel> modelClass, final String path) {
- ECTransportModel result = null;
- String json = getMockDataContent(path);
- try {
- result = (ECTransportModel) objectMapper.readValue(json, modelClass);
- } catch (Exception ex) {
- logger.error("getMockData failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
- @Override
- public CloudifyTenantList getTenants() {
- return (CloudifyTenantList) getMockData(CloudifyTenantList.class, "/tenantsList.json");
- }
-
- @Override
- public CloudifyDeployedTenantList getTenantInfoFromDeploy(String tenant) {
- return (CloudifyDeployedTenantList) getMockData(CloudifyDeployedTenantList.class, "/serviceTenantList.json");
-
- }
-
- @Override
- public CloudifyNodeInstanceIdList getNodeInstanceId(String deploymentId, String nodeId, String tenant) {
- return null;
- }
-
- @Override
- public CloudifyNodeInstanceIdList getNodeInstanceId(String deploymentId, String tenant) {
- return null;
- }
-
- @Override
- public CloudifyNodeInstanceList getNodeInstanceVersion(String bpId, String tenant) {
- return null;
- }
-
- @Override
- public CloudifyNodeInstanceList getNodeInstanceVersion(String deploymentId, String nodeId, String tenant) {
- return null;
- }
-
- @Override
- public CloudifyDeploymentUpdateResponse updateDeployment(CloudifyDeploymentUpdateRequest execution) {
- return null;
- }
-
- @Override
- public CloudifyEventList getEventlogs(String executionId, String tenant) {
- return null;
- }
-
- public CloudifyDeploymentList createDeployment(CloudifyDeploymentRequest deployment) {
- logger.debug(EELFLoggerDelegate.debugLogger, "createDeployment: {}", deployment.toString());
- return new CloudifyDeploymentList(null, null);
- }
-
- @Override
- public CloudifyExecutionList getExecutions(final String deploymentId, final String tenant) {
- return (CloudifyExecutionList) getMockData(CloudifyExecutionList.class, "/listExecutionForDeploymentID.json");
- }
-
- @Override
- public CloudifyExecutionList getExecutionsSummary(final String deploymentId, final String tenant) {
- return (CloudifyExecutionList) getMockData(CloudifyExecutionList.class, "/listExecutionForDeploymentID.json");
- }
-
- @Override
- public CloudifyExecutionList getExecution(String executionId, String deploymentId) {
- return (CloudifyExecutionList) getMockData(CloudifyExecutionList.class, "/listExecutionForDeploymentID.json");
- }
-
- @Override
- public CloudifyExecution startExecution(CloudifyExecutionRequest execution) {
- logger.debug(EELFLoggerDelegate.debugLogger, "startExecution: {}", execution.toString());
- return new CloudifyExecution(null, null, null, null, null, null, null, null, null, null, null, null);
- }
-
- @Override
- public CloudifyExecution cancelExecution(final String executionId, Map<String, String> parameters,
- final String tenant) {
- return null;
- }
-
- public int deleteDeployment(String id, boolean ignoreLiveNodes) {
- return 0;
- }
-
- public CloudifyDeploymentList getDeployment(String id, String tenant) {
- return null;
- }
-
- public CloudifyDeploymentList getDeployment(String id) {
- return null;
- }
-
- public CloudifyDeploymentList getDeployments() {
- return null;
- }
-
- public int deleteBlueprint(String id) {
- return 0;
- }
-
- public CloudifyBlueprintList uploadBlueprint(CloudifyBlueprintUpload blueprint) {
- return null;
- }
-
- public CloudifyBlueprintContent viewBlueprint(String id) {
- return null;
- }
-
- public CloudifyBlueprintList getBlueprint(String id, String tenant) {
- return null;
- }
-
- public CloudifyBlueprintList getBlueprints() {
- return null;
- }
-
- /**
- * Get the a cloudify secret
- *
- * @return CloudifySecret
- */
- @Override
- public CloudifySecret getSecret(String secretName, String tenant) {
- return null;
- }
-
- /**
- * Simple test
- *
- * @param args blueprint ID
- * @throws Exception On any failure
- */
- public static void main(String[] args) throws Exception {
- System.out.println("Testing paths and parsing mock data");
- }
-
- @Override
- public CloudifyDeploymentList getDeploymentInputs(String id, String tenant) {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
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 3a4f2b1..28bd87c 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
@@ -25,13 +25,12 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;
+import javax.annotation.PostConstruct;
+
import org.json.JSONObject;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintContent;
import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList;
-import org.onap.ccsdk.dashboard.model.CloudifyBlueprintUpload;
import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
-import org.onap.ccsdk.dashboard.model.CloudifyDeploymentRequest;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest;
import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse;
import org.onap.ccsdk.dashboard.model.CloudifyEventList;
@@ -41,8 +40,8 @@ import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest;
import org.onap.ccsdk.dashboard.model.CloudifyNodeIdList;
import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList;
import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList;
-import org.onap.ccsdk.dashboard.model.CloudifySecret;
import org.onap.ccsdk.dashboard.model.CloudifyTenantList;
+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;
@@ -50,44 +49,45 @@ 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.RestTemplate;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
+@org.springframework.stereotype.Service
public class CloudifyRestClientImpl extends RestClientBase implements CloudifyClient {
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(CloudifyRestClientImpl.class);
- private final String baseUrl;
- private final ObjectMapper objectMapper = new ObjectMapper();
-
+ private static EELFLoggerDelegate logger =
+ EELFLoggerDelegate.getLogger(CloudifyRestClientImpl.class);
+ private String baseUrl;
private static final String BLUEPRINTS = "blueprints";
- private static final String VIEW_BLUEPRINTS = "viewblueprints";
private static final String DEPLOYMENTS = "deployments";
private static final String EXECUTIONS = "executions";
private static final String TENANTS = "tenants";
private static final String NODES = "nodes";
private static final String NODE_INSTANCES = "node-instances";
private static final String UPDATE_DEPLOYMENT = "update-deployment";
- private static final String SECRETS = "secrets";
private static final String EVENTS = "events";
private static final String TENANT = "tenant_name";
- public CloudifyRestClientImpl(String webapiUrl, String user, String pass) {
- super();
- if (webapiUrl == null)
+ @PostConstruct
+ public void init() {
+ String webapiUrl = DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_URL);
+ if (webapiUrl == null) {
throw new IllegalArgumentException("Null URL not permitted");
-
+ }
+ String user = DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_USERNAME);
+ String pass = DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_PASS);
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);
}
-
- urlScheme = webapiUrl.split(":")[0];
- createRestTemplate(url, user, pass, urlScheme);
+ String urlScheme = webapiUrl.split(":")[0];
+ if (restTemplate == null) {
+ createRestTemplate(url, user, pass, urlScheme);
+ }
}
@Override
@@ -151,10 +151,8 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl
@Override
public CloudifyNodeInstanceIdList getNodeInstanceId(final String bpId, String tenant) {
- // GET
- // /api/v3.1/nodes?deployment_id=clamp_967&type=onap.nodes.component&_include=id
- String url = buildUrl(new String[] { baseUrl, NODES },
- new String[] { "deployment_id", bpId, "type", "onap.nodes.component", "_include", "id" });
+ 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,
@@ -202,18 +200,6 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl
}
@Override
- public CloudifyExecutionList getExecution(String executionId, String deploymentId) {
- String url = buildUrl(new String[] { baseUrl, EXECUTIONS, executionId },
- new String[] { "deployment_id", deploymentId });
- logger.debug(EELFLoggerDelegate.debugLogger, "getExecution: url {}", url);
-
- ResponseEntity<CloudifyExecutionList> response = restTemplate.exchange(url, HttpMethod.GET, null,
- new ParameterizedTypeReference<CloudifyExecutionList>() {
- });
- return response.getBody();
- }
-
- @Override
public CloudifyExecution startExecution(CloudifyExecutionRequest execution) {
String url = buildUrl(new String[] { baseUrl, EXECUTIONS }, null);
logger.debug(EELFLoggerDelegate.debugLogger, "startExecution: url {}", url);
@@ -243,19 +229,8 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl
headers.set("Tenant", tenant);
headers.set("Content-Type", "application/json");
HttpEntity<String> entity = new HttpEntity<String>(requestJson.toString(), headers);
- ResponseEntity<CloudifyExecution> response = restTemplate.exchange(url, HttpMethod.POST, entity,
- new ParameterizedTypeReference<CloudifyExecution>() {
- });
- return response.getBody(); // getStatusCode().value();
- }
-
- @Override
- public CloudifyBlueprintList getBlueprints() {
- String url = buildUrl(new String[] { baseUrl, BLUEPRINTS }, null);
- logger.debug(EELFLoggerDelegate.debugLogger, "getBlueprints: url {}", url);
- ResponseEntity<CloudifyBlueprintList> response = restTemplate.exchange(url, HttpMethod.GET, null,
- new ParameterizedTypeReference<CloudifyBlueprintList>() {
- });
+ ResponseEntity<CloudifyExecution> response = restTemplate.exchange(url, HttpMethod.POST,
+ entity, new ParameterizedTypeReference<CloudifyExecution>() {});
return response.getBody();
}
@@ -271,32 +246,6 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl
}
@Override
- public CloudifyBlueprintContent viewBlueprint(final String id) {
- String url = buildUrl(new String[] { baseUrl, VIEW_BLUEPRINTS }, new String[] { "id", id });
- logger.debug(EELFLoggerDelegate.debugLogger, "viewBlueprint: url {}", url);
- ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
- String yaml = response.getBody();
- return new CloudifyBlueprintContent(id, yaml);
- }
-
- @Override
- public CloudifyBlueprintList uploadBlueprint(CloudifyBlueprintUpload blueprint) {
- String url = buildUrl(new String[] { baseUrl, BLUEPRINTS }, null);
- logger.debug(EELFLoggerDelegate.debugLogger, "uploadBlueprint: url {}", url);
- return restTemplate.postForObject(url, blueprint, CloudifyBlueprintList.class);
- }
-
- @Override
- public int deleteBlueprint(final String id) {
- String url = buildUrl(new String[] { baseUrl, BLUEPRINTS, id }, null);
- logger.debug(EELFLoggerDelegate.debugLogger, "deleteBlueprint: url {}", url);
- ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.DELETE, null,
- new ParameterizedTypeReference<String>() {
- });
- return response.getStatusCode().value();
- }
-
- @Override
public CloudifyDeploymentList getDeployments() {
String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, null);
logger.debug(EELFLoggerDelegate.debugLogger, "getDeployments: url {}", url);
@@ -332,43 +281,8 @@ public class CloudifyRestClientImpl extends RestClientBase implements CloudifyCl
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();
- }
-
- @Override
- public CloudifyDeploymentList createDeployment(CloudifyDeploymentRequest deployment) {
- String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS }, null);
- logger.debug(EELFLoggerDelegate.debugLogger, "createDeployment: url {}", url);
- return restTemplate.postForObject(url, deployment, CloudifyDeploymentList.class);
- }
-
- @Override
- public int deleteDeployment(final String id, boolean ignoreLiveNodes) {
- String url = buildUrl(new String[] { baseUrl, DEPLOYMENTS, id },
- new String[] { "ignore_live_nodes", Boolean.toString(ignoreLiveNodes) });
- logger.debug(EELFLoggerDelegate.debugLogger, "deleteDeployment: url {}", url);
- ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.DELETE, null,
- new ParameterizedTypeReference<String>() {
- });
- return response.getStatusCode().value();
- }
-
- /**
- * Get a cloudify secret
- *
- * @return CloudifySecret
- */
- @Override
- public CloudifySecret getSecret(String secretName, String tenant) {
- String url = buildUrl(new String[] { baseUrl, SECRETS, secretName }, new String[] { TENANT, tenant });
- logger.debug(EELFLoggerDelegate.debugLogger, "getSecrets: url {}", url);
- ResponseEntity<CloudifySecret> response = restTemplate.exchange(url, HttpMethod.GET, null,
- new ParameterizedTypeReference<CloudifySecret>() {
- });
+ ResponseEntity<CloudifyDeploymentList> response = restTemplate.exchange(url, HttpMethod.GET,
+ entity, new ParameterizedTypeReference<CloudifyDeploymentList>() {});
return response.getBody();
}
-
}
diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulMockClientImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulMockClientImpl.java
deleted file mode 100644
index 30b1f30..0000000
--- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/ConsulMockClientImpl.java
+++ /dev/null
@@ -1,126 +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.rest;
-
-import java.io.InputStream;
-import java.util.List;
-import java.util.Scanner;
-
-import org.onap.ccsdk.dashboard.model.ConsulDatacenter;
-import org.onap.ccsdk.dashboard.model.ConsulHealthServiceRegistration;
-import org.onap.ccsdk.dashboard.model.ConsulNodeInfo;
-import org.onap.ccsdk.dashboard.model.ConsulServiceHealth;
-import org.onap.ccsdk.dashboard.model.ConsulServiceInfo;
-import org.onap.ccsdk.dashboard.model.ECTransportModel;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-public class ConsulMockClientImpl implements ConsulClient {
-
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ConsulMockClientImpl.class);
-
- /**
- * For mock outputs
- */
- private final ObjectMapper objectMapper = new ObjectMapper();
-
- private String getMockDataContent(final String path) {
- String result = null;
- try {
- InputStream is = getClass().getResourceAsStream(path);
- if (is == null)
- throw new Exception("Failed to find resource at path " + path);
- Scanner scanner = new Scanner(is, "UTF-8");
- result = scanner.useDelimiter("\\A").next();
- scanner.close();
- is.close();
- } catch (Exception ex) {
- logger.error("getMockDataContent failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
- /**
- * Creates an input stream using the specified path and requests the mapper
- * create an object of the specified type.
- *
- * @param modelClass Model class
- * @param path Path to classpath resource
- * @return Instance of modelClass
- */
- private ECTransportModel getMockData(final Class<? extends ECTransportModel> modelClass, final String path) {
- ECTransportModel result = null;
- String json = getMockDataContent(path);
- try {
- result = (ECTransportModel) objectMapper.readValue(json, modelClass);
- } catch (Exception ex) {
- logger.error("getMockData failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
- @Override
- public List<ConsulServiceInfo> getServices(String datacenter) {
-
- return null;
- }
-
- @Override
- public List<ConsulServiceHealth> getServiceHealth(String datacenter, String srvcName) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public List<ConsulNodeInfo> getNodes(String datacenter) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public List<ConsulServiceHealth> getNodeServicesHealth(String datacenter, String nodeId) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public List<ConsulDatacenter> getDatacenters() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String registerService(ConsulHealthServiceRegistration registration) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public int deregisterService(String serviceName) {
- // TODO Auto-generated method stub
- return 0;
- }
-
-}
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 b48b8d4..2567577 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
@@ -27,11 +27,14 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import javax.annotation.PostConstruct;
+
import org.json.JSONArray;
import org.json.JSONObject;
import org.onap.ccsdk.dashboard.model.ConsulDatacenter;
import org.onap.ccsdk.dashboard.model.ConsulHealthServiceRegistration;
import org.onap.ccsdk.dashboard.model.ConsulHealthServiceRegistration.EndpointCheck;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
import org.onap.ccsdk.dashboard.model.ConsulNodeInfo;
import org.onap.ccsdk.dashboard.model.ConsulServiceHealth;
import org.onap.ccsdk.dashboard.model.ConsulServiceInfo;
@@ -46,10 +49,12 @@ import org.springframework.http.ResponseEntity;
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 final String baseUrl;
+ private static EELFLoggerDelegate logger =
+ EELFLoggerDelegate.getLogger(ConsulRestClientImpl.class);
+ private String baseUrl;
private final ObjectMapper objectMapper = new ObjectMapper();
private static final String API_VER = "v1";
@@ -57,24 +62,24 @@ public class ConsulRestClientImpl extends RestClientBase implements ConsulClient
private static final String SERVICES = "services";
private static final String HEALTH = "health";
private static final String CHECKS = "checks";
- private static final String HEALTH_SERVICES = "healthservices";
- public ConsulRestClientImpl(String webapiUrl, String user, String pass) {
- super();
+ @PostConstruct
+ public void init() {
+ String webapiUrl = DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_CONSUL_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);
}
-
- urlScheme = webapiUrl.split(":")[0];
- createRestTemplate(url, user, pass, urlScheme);
+ String urlScheme = webapiUrl.split(":")[0];
+ if (restTemplate == null) {
+ createRestTemplate(url, null, null, urlScheme);
+ }
}
@Override
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 c03dff6..6e9ecb4 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
@@ -26,6 +26,8 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.stream.Stream;
+import javax.annotation.PostConstruct;
+
import org.onap.ccsdk.dashboard.exceptions.BadRequestException;
import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException;
import org.onap.ccsdk.dashboard.exceptions.DownstreamException;
@@ -36,6 +38,7 @@ import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentLink;
import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest;
import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse;
import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentsListResponse;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
@@ -49,45 +52,34 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+@org.springframework.stereotype.Service
public class DeploymentHandlerClientImpl extends RestClientBase implements DeploymentHandlerClient {
- private final String baseUrl;
- // private final RestTemplate restTemplate;
+ private String baseUrl;
+
private static final String DEPLOYMENTS = "dcae-deployments";
private static final String UPDATE_PATH = "dcae-deployment-update";
protected final ObjectMapper objectMapper = new ObjectMapper();
- public DeploymentHandlerClientImpl(String webapiUrl) {
- this(webapiUrl, null, null);
- }
-
- /**
- * Builds a restTemplate. If username and password are supplied, uses basic HTTP
- * authentication.
- *
- * @param webapiUrl URL of the web endpoint
- * @param user user name; ignored if null
- * @param pass password
- */
- public DeploymentHandlerClientImpl(String webapiUrl, String user, String pass) {
- super();
+ @PostConstruct
+ public void init() {
+ String webapiUrl = DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_DHANDLER_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);
}
- urlScheme = webapiUrl.split(":")[0];
- createRestTemplate(url, user, pass, urlScheme);
- // Do not serialize null values
- objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
- // Register Jdk8Module() for Stream and Optional types
- objectMapper.registerModule(new Jdk8Module());
+ String urlScheme = webapiUrl.split(":")[0];
+ if (restTemplate == null) {
+ createRestTemplate(url, null, null, urlScheme);
+ }
+
}
public Stream<DeploymentLink> getDeployments() {
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 0e93a39..1b93bc7 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
@@ -148,9 +148,9 @@ public interface InventoryClient {
*
* @return Set<InventoryProperty>
*/
-
- public Set<InventoryProperty> getPropertiesOfServices(String propertyName);
-
+ /*
+ * public Set<InventoryProperty> getPropertiesOfServices(String propertyName);
+ */
/**
* Gets a single DCAE Service object corresponding to the specified serviceId.
*
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 ebe7e4f..c1296f0 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
@@ -33,6 +33,8 @@ import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import javax.annotation.PostConstruct;
+
import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceAlreadyDeactivatedException;
import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceNotFoundException;
import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeAlreadyDeactivatedException;
@@ -51,34 +53,26 @@ import org.onap.ccsdk.dashboard.model.inventory.ServiceType;
import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeList;
import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams;
import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.HttpClientErrorException;
+@org.springframework.stereotype.Service
public class RestInventoryClientImpl extends RestClientBase implements InventoryClient {
- private final String baseUrl;
- // private final RestTemplate restTemplate;
+ private String baseUrl;
public static final String SERVICE_TYPES = "dcae-service-types";
public static final String SERVICES = "dcae-services";
public static final String SERVICES_GROUPBY = "dcae-services-groupby";
- public RestInventoryClientImpl(String webapiUrl) {
- this(webapiUrl, null, null);
- }
-
- /**
- * Builds a restTemplate. If username and password are supplied, uses basic HTTP
- * authentication.
- *
- * @param webapiUrl URL of the web endpoint
- * @param user user name; ignored if null
- * @param pass password
- */
- public RestInventoryClientImpl(String webapiUrl, String user, String pass) {
- super();
+ @PostConstruct
+ public void init() {
+ String webapiUrl = DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_INVENTORY_URL);
if (webapiUrl == null)
throw new IllegalArgumentException("Null URL not permitted");
URL url = null;
@@ -90,7 +84,10 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory
throw new RuntimeException("Failed to parse URL", ex);
}
urlScheme = webapiUrl.split(":")[0];
- createRestTemplate(url, user, pass, urlScheme);
+ if (restTemplate == null) {
+ createRestTemplate(url, null, null, urlScheme);
+ }
+
}
public Stream<ServiceType> getServiceTypes() {
@@ -311,14 +308,14 @@ public class RestInventoryClientImpl extends RestClientBase implements Inventory
return collection.stream();
}
- public Set<InventoryProperty> getPropertiesOfServices(String propertyName) {
- String url = buildUrl(new String[] { baseUrl, SERVICES_GROUPBY, propertyName }, null);
- ResponseEntity<ServiceGroupByResults> response = restTemplate.exchange(url, HttpMethod.GET, null,
- new ParameterizedTypeReference<ServiceGroupByResults>() {
- });
- return response.getBody().propertyValues;
- }
-
+ /*
+ * public Set<InventoryProperty> getPropertiesOfServices(String propertyName) {
+ * String url = buildUrl(new String[] {baseUrl, SERVICES_GROUPBY, propertyName},
+ * null); ResponseEntity<ServiceGroupByResults> response =
+ * restTemplate.exchange(url, HttpMethod.GET, null, new
+ * ParameterizedTypeReference<ServiceGroupByResults>() { }); return
+ * response.getBody().propertyValues; }
+ */
public Optional<Service> getService(String serviceId) {
String url = buildUrl(new String[] { baseUrl, SERVICES, serviceId }, null);
ResponseEntity<Service> response = restTemplate.exchange(url, HttpMethod.GET, null,
diff --git a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientMockImpl.java b/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientMockImpl.java
deleted file mode 100644
index 5a422c0..0000000
--- a/ccsdk-app-common/src/main/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientMockImpl.java
+++ /dev/null
@@ -1,189 +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.rest;
-
-import java.io.InputStream;
-import java.util.Collection;
-import java.util.Optional;
-import java.util.Scanner;
-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.ECTransportModel;
-import org.onap.ccsdk.dashboard.model.inventory.InventoryProperty;
-import org.onap.ccsdk.dashboard.model.inventory.Service;
-import org.onap.ccsdk.dashboard.model.inventory.ServiceList;
-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.ServiceTypeList;
-import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams;
-import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest;
-import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-
-public class RestInventoryClientMockImpl implements InventoryClient {
-
- private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RestInventoryClientMockImpl.class);
- /**
- * For mock outputs
- */
- private final ObjectMapper objectMapper = new ObjectMapper();
-
- public RestInventoryClientMockImpl() {
- // Do not serialize null values
- objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
- // Register Jdk8Module() for Stream and Optional types
- objectMapper.registerModule(new Jdk8Module());
- }
-
- private String getMockDataContent(final String path) {
- String result = null;
- try {
- InputStream is = getClass().getResourceAsStream(path);
- if (is == null)
- throw new Exception("Failed to find resource at path " + path);
- Scanner scanner = new Scanner(is, "UTF-8");
- result = scanner.useDelimiter("\\A").next();
- scanner.close();
- is.close();
- } catch (Exception ex) {
- logger.error("getMockDataContent failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
- /**
- * Creates an input stream using the specified path and requests the mapper
- * create an object of the specified type.
- *
- * @param modelClass Model class
- * @param path Path to classpath resource
- * @return Instance of modelClass
- */
- private ECTransportModel getMockData(final Class<? extends ECTransportModel> modelClass, final String path) {
- ECTransportModel result = null;
- String json = getMockDataContent(path);
- try {
- result = (ECTransportModel) objectMapper.readValue(json, modelClass);
- } catch (Exception ex) {
- logger.error("getMockData failed", ex);
- throw new RuntimeException(ex);
- }
- return result;
- }
-
- @Override
- public Stream<ServiceType> getServiceTypes() {
- ServiceTypeList mockData = (ServiceTypeList) getMockData(ServiceTypeList.class, "/serviceTypesList.json");
- Collection<ServiceType> collection = mockData.items;
-
- return collection.stream();
- }
-
- @Override
- public Stream<ServiceType> getServiceTypes(ServiceTypeQueryParams serviceTypeQueryParams) {
- ServiceTypeList mockData = (ServiceTypeList) getMockData(ServiceTypeList.class, "/serviceTypesList.json");
- Collection<ServiceType> collection = mockData.items;
-
- return collection.stream();
- }
-
- @Override
- public ServiceRefList getServicesForType(ServiceQueryParams serviceQueryParams) {
- return null;
- }
-
- @Override
- public ServiceType addServiceType(ServiceType serviceType) throws ServiceTypeActiveException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public ServiceType addServiceType(ServiceTypeRequest serviceTypeRequest) throws ServiceTypeActiveException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Optional<ServiceType> getServiceType(String typeId) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void deleteServiceType(String typeId)
- throws ServiceTypeNotFoundException, ServiceTypeAlreadyDeactivatedException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Stream<Service> getServices() {
- ServiceList mockData = (ServiceList) getMockData(ServiceList.class, "/serviceList.json");
- Collection<Service> collection = mockData.items;
-
- return collection.stream();
- }
-
- @Override
- public Stream<Service> getServices(ServiceQueryParams serviceQueryParams) {
- ServiceList mockData = (ServiceList) getMockData(ServiceList.class, "/serviceList.json");
- Collection<Service> collection = mockData.items;
-
- return collection.stream();
- }
-
- @Override
- public Set<InventoryProperty> getPropertiesOfServices(String propertyName) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Optional<Service> getService(String serviceId) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void putService(String typeId, Service service) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void deleteService(String serviceId) throws ServiceNotFoundException, ServiceAlreadyDeactivatedException {
- // TODO Auto-generated method stub
-
- }
-}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java
index 0a5fe93..d6e1fb0 100644
--- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java
@@ -2,110 +2,526 @@
* =============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.controller;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
+import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.onap.ccsdk.dashboard.core.MockUser;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.onap.ccsdk.dashboard.model.CloudifyBlueprint;
+import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployment;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse;
+import org.onap.ccsdk.dashboard.model.CloudifyEvent;
+import org.onap.ccsdk.dashboard.model.CloudifyEventList;
+import org.onap.ccsdk.dashboard.model.CloudifyExecution;
+import org.onap.ccsdk.dashboard.model.CloudifyExecutionList;
+import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstance;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceId;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList;
+import org.onap.ccsdk.dashboard.model.CloudifyTenant;
import org.onap.ccsdk.dashboard.model.CloudifyTenantList;
import org.onap.ccsdk.dashboard.rest.CloudifyClient;
-import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
import org.onap.portalsdk.core.domain.User;
import org.onap.portalsdk.core.web.support.UserUtils;
-import org.springframework.test.web.servlet.RequestBuilder;
-import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.client.HttpClientErrorException;
+
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.springframework.http.MediaType;
+public class CloudifyControllerTest extends MockitoTestSuite {
+ @Mock
+ private CloudifyClient restClient;
-public class CloudifyControllerTest extends MockitoTestSuite {
+ @InjectMocks
+ private CloudifyController subject = new CloudifyController();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Mock
+ UserUtils userUtils = new UserUtils();
+
+ @Mock
+ User epuser;
+
+ MockUser mockUser = new MockUser();
+
+ HttpClientErrorException httpException;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ httpException = new HttpClientErrorException(HttpStatus.BAD_REQUEST, "statusText");
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetTenants() throws Exception {
+ String tenantsList =
+ "{\"items\": [{\"id\": 1, \"name\": \"default_tenant\", \"dName\": \"default_tenant\" }, "
+ + "{\"id\": 2, \"name\": \"dyh1b1902\", \"dName\": \"dyh1b1902\"}], "
+ + "\"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}";
+ CloudifyTenantList sampleData = null;
+ try {
+ sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class);
+ } catch (Exception e) {
+ }
+
+ User user = mockUser.mockUser();
+ user.setLoginId("tester");
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+
+ Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
+ Mockito.when(restClient.getTenants()).thenReturn(sampleData).thenThrow(Exception.class);
+ /*
+ * RequestBuilder request = MockMvcRequestBuilders. get("/tenants").
+ * accept(MediaType.APPLICATION_JSON);
+ */
+ String tenantStr = subject.getTenants(mockedRequest);
+ assertTrue(tenantStr.contains("dyh1b"));
+
+ tenantStr = subject.getTenants(mockedRequest);
+ assertTrue(tenantStr.contains("error"));
+ }
+
+ @SuppressWarnings({"unchecked", "unchecked"})
+ @Test
+ public final void testGetBlueprintById() throws Exception {
+
+ CloudifyBlueprint cldBp =
+ new CloudifyBlueprint("file1", "description1", "343242", "3423423", "id1", null);
+
+ List<CloudifyBlueprint> items = new ArrayList<CloudifyBlueprint>();
+ items.add(cldBp);
+
+ CloudifyBlueprintList.Metadata.Pagination pageObj =
+ new CloudifyBlueprintList.Metadata.Pagination(1, 0, 1);
+
+ CloudifyBlueprintList.Metadata metadata = new CloudifyBlueprintList.Metadata(pageObj);
+
+ CloudifyBlueprintList cldBpList = new CloudifyBlueprintList(items, metadata);
+
+ when(restClient.getBlueprint(Mockito.any(), Mockito.any())).thenReturn(cldBpList)
+ .thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.getBlueprintById("id1", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("id1"));
+
+ actualResult = subject.getBlueprintById("id1", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getBlueprintById("id1", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetDeploymentById() throws Exception {
+
+ CloudifyDeployment cldDepl = new CloudifyDeployment("description", "blueprint_id",
+ "created_at", "updated_at", "id1", null, null, null, null, null, null, null, "tenant1");
+
+ List<CloudifyDeployment> items = new ArrayList<CloudifyDeployment>();
+ items.add(cldDepl);
+
+ CloudifyDeploymentList.Metadata.Pagination pageObj =
+ new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1);
+
+ CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj);
+
+ CloudifyDeploymentList cldDeplList = new CloudifyDeploymentList(items, metadata);
+
+ when(restClient.getDeployment(Mockito.any(), Mockito.any())).thenReturn(cldDeplList)
+ .thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.getDeploymentById("id1", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("id1"));
+
+ actualResult = subject.getDeploymentById("id1", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getDeploymentById("id1", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ when(restClient.getDeployment(Mockito.any())).thenReturn(cldDeplList)
+ .thenThrow(Exception.class).thenThrow(httpException);
+
+ actualResult = subject.getDeploymentById("id1", "", mockedRequest);
+ assertTrue(actualResult.contains("id1"));
+
+ actualResult = subject.getDeploymentById("id1", null, mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getDeploymentById("id1", null, mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetTenantStatusForService() throws Exception {
+
+ String[] deplIds = {"id1", "id2"};
+
+ CloudifyDeployedTenant cldDeplTenant = new CloudifyDeployedTenant("id1", "bp1", "tenant1");
+
+ List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>();
+
+ cldDeplTenantList.add(cldDeplTenant);
+
+ CloudifyDeployedTenantList cldDeployedTenantList =
+ new CloudifyDeployedTenantList(cldDeplTenantList, null);
+
+ CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1");
+
+ List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>();
+ cldfyTenantList.add(cldTenant);
+
+ CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null);
+
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ Map<String, Object> plan = new HashMap<String, Object>();
+ HashMap<String, String> plugins_to_install = new HashMap<String, String>();
+ plugins_to_install.put("name", "helm-plugin");
+ ArrayList<HashMap<String, String>> deployment_plugins_to_install =
+ new ArrayList<HashMap<String, String>>();
+
+ deployment_plugins_to_install.add(plugins_to_install);
+ plan.put("deployment_plugins_to_install", deployment_plugins_to_install);
+
+ Map<String, String> workflows = new HashMap<String, String>();
+ workflows.put("status", "workflowshelm");
+ plan.put("workflows", workflows);
+
+ CloudifyBlueprint cldBp =
+ new CloudifyBlueprint("file1", "description1", "343242", "3423423", "id1", plan);
+
+ List<CloudifyBlueprint> items = new ArrayList<CloudifyBlueprint>();
+ items.add(cldBp);
+
+ CloudifyBlueprintList.Metadata.Pagination pageObj =
+ new CloudifyBlueprintList.Metadata.Pagination(1, 0, 1);
+
+ CloudifyBlueprintList.Metadata metadata = new CloudifyBlueprintList.Metadata(pageObj);
+
+ CloudifyBlueprintList cldBpList = new CloudifyBlueprintList(items, metadata);
+
+ when(restClient.getTenants()).thenReturn(cloudifyTenantList);
+
+ when(restClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList);
+
+ when(restClient.getExecutionsSummary(Mockito.any(), Mockito.any()))
+ .thenReturn(cloudifyExecutionList);
+
+ when(restClient.getBlueprint(Mockito.any(), Mockito.any())).thenReturn(cldBpList)
+ .thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.getTenantStatusForService(mockedRequest, deplIds);
+ assertTrue(actualResult.contains("successful"));
+
+ actualResult = subject.getTenantStatusForService(mockedRequest, deplIds);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getTenantStatusForService(mockedRequest, deplIds);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetExecutionsByPage() throws Exception {
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ CloudifyDeployment cldDeployment = new CloudifyDeployment("description", "blueprint_id",
+ "created_at", "updated_at", "id", null, null, null, null, null, null, null, "tenant");
+
+ List<CloudifyDeployment> cfyDeployItems = new ArrayList<CloudifyDeployment>();
+ cfyDeployItems.add(cldDeployment);
+
+ CloudifyDeploymentList.Metadata.Pagination pageObj =
+ new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1);
+ CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj);
+
+ CloudifyDeploymentList cldDeployList = new CloudifyDeploymentList(cfyDeployItems, metadata);
+
+ when(restClient.getDeployments()).thenReturn(cldDeployList);
+ when(restClient.getExecutions(Mockito.any(), Mockito.any()))
+ .thenReturn(cloudifyExecutionList).thenThrow(Exception.class)
+ .thenReturn(cloudifyExecutionList);
+
+ String actualResult =
+ subject.getExecutionsByPage(mockedRequest, "id1", "successful", "tenant1");
+ assertTrue(actualResult.contains("successful"));
+
+ actualResult = subject.getExecutionsByPage(mockedRequest, "id1", "successful", "tenant1");
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getExecutionsByPage(mockedRequest, null, "successful", "tenant1");
+ assertTrue(actualResult.contains("successful"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetExecutionByIdAndDeploymentId() throws Exception {
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ when(restClient.getExecutions(Mockito.any(), Mockito.any()))
+ .thenReturn(cloudifyExecutionList).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.getExecutionByIdAndDeploymentId("execution_id",
+ "deployment_id", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("successful"));
+
+ actualResult = subject.getExecutionByIdAndDeploymentId("execution_id", "deployment_id",
+ "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getExecutionByIdAndDeploymentId("execution_id", "deployment_id",
+ "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetExecutionEventsById() throws Exception {
+
+ CloudifyEvent cfyEvent1 = new CloudifyEvent("blueprint_id", "deployment_id", null, "log",
+ "execution_id", "debug", "logger", "message", "node_instance_id", "node_name",
+ "operation", "reported_timestamp", "timestamp", "cloudify_log", "workflow_id");
+ CloudifyEvent cfyEvent2 = new CloudifyEvent("blueprint_id", "deployment_id", null, "log",
+ "execution_id", "debug", "logger", "message", "node_instance_id", "node_name",
+ "operation", "reported_timestamp", "timestamp", "type2", "workflow_id");
+
+ List<CloudifyEvent> cfyEventItems = new ArrayList<CloudifyEvent>();
+ cfyEventItems.add(cfyEvent1);
+ cfyEventItems.add(cfyEvent2);
+
+ CloudifyEventList cfyEventsList = new CloudifyEventList(cfyEventItems, null);
+
+ when(restClient.getEventlogs(Mockito.any(), Mockito.any())).thenReturn(cfyEventsList)
+ .thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult =
+ subject.getExecutionEventsById("execution1", "false", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("execution_id"));
+
+ actualResult =
+ subject.getExecutionEventsById("execution1", "false", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult =
+ subject.getExecutionEventsById("execution1", "false", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testStartExecution() throws Exception {
+ CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install",
+ false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false);
+
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("key1", "value1");
+
+ CloudifyExecutionRequest cfyExecReq = new CloudifyExecutionRequest("deployment_id",
+ "upgrade", false, false, "tenant1", params);
+
+ CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1");
+
+ List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>();
+
+ cfyNodeInstItems.add(cfyNodeInst);
+
+ CloudifyNodeInstanceIdList cfyNodeInstList =
+ new CloudifyNodeInstanceIdList(cfyNodeInstItems, null);
+
+ when(restClient.getNodeInstanceId(Mockito.any(), Mockito.any()))
+ .thenReturn(cfyNodeInstList);
+
+ when(restClient.startExecution(Matchers.<CloudifyExecutionRequest>any()))
+ .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.startExecution(mockedRequest, cfyExecReq);
+ assertTrue(actualResult.contains("execution_id1"));
+
+ actualResult = subject.startExecution(mockedRequest, cfyExecReq);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.startExecution(mockedRequest, cfyExecReq);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testUpdateDeployment() throws Exception {
+
+ CloudifyDeploymentUpdateRequest cfyDeployUpdateReq =
+ new CloudifyDeploymentUpdateRequest("deployment_id", "update", false, false,
+ "node_instance_id1", "4", "1000", "image", 2, "my_container");
+
+ CloudifyDeploymentUpdateResponse cfyDeployUpdateResp = new CloudifyDeploymentUpdateResponse(
+ "terminated", "created_at", "update", false, "blueprint_id", "deployment_id", "", "id1",
+ null, "tenant1", "junit", false, "resource_availability");
+
+ when(restClient.updateDeployment(Matchers.<CloudifyDeploymentUpdateRequest>any()))
+ .thenReturn(cfyDeployUpdateResp).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.updateDeployment(mockedRequest, cfyDeployUpdateReq);
+ assertTrue(actualResult.contains("terminated"));
+
+ actualResult = subject.updateDeployment(mockedRequest, cfyDeployUpdateReq);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.updateDeployment(mockedRequest, cfyDeployUpdateReq);
+ assertTrue(actualResult.contains("error"));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetNodeInstanceId() throws Exception {
+
+ CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1");
+
+ List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>();
+
+ cfyNodeInstItems.add(cfyNodeInst);
+
+ CloudifyNodeInstanceIdList cfyNodeInstList =
+ new CloudifyNodeInstanceIdList(cfyNodeInstItems, null);
+
+ when(restClient.getNodeInstanceId(Mockito.any(), Mockito.any(), Mockito.any()))
+ .thenReturn(cfyNodeInstList).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult =
+ subject.getNodeInstanceId("deploymentId", "tenant", "nodeId", mockedRequest);
+ assertTrue(actualResult.contains("node_instance_id1"));
+
+ actualResult = subject.getNodeInstanceId("deploymentId", "tenant", "nodeId", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getNodeInstanceId("deploymentId", "tenant", "nodeId", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetDeploymentRevisions() throws Exception {
+
+ CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null);
+
+ List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>();
+ cfyNodeInstanceItems.add(cfyNodeInstance);
+
+ CloudifyNodeInstanceList cfyNodeInstList =
+ new CloudifyNodeInstanceList(cfyNodeInstanceItems, null);
+
+ when(restClient.getNodeInstanceVersion(Mockito.any(), Mockito.any()))
+ .thenReturn(cfyNodeInstList).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult =
+ subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("id1"));
+
+ actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testCancelExecution() throws Exception {
+ List<String> tenants = new ArrayList<String>();
+ tenants.add("tenant1");
+
+ HttpHeaders httpHeader = new HttpHeaders();
+ httpHeader.put("tenant", tenants);
+
+ CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "cancel",
+ false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false);
+
+ when(restClient.cancelExecution(Mockito.any(), Mockito.any(), Mockito.any()))
+ .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult =
+ subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse);
+ assertTrue(actualResult.contains("execution_id1"));
- @Mock
- private CloudifyClient restClient;
-
- @InjectMocks
- private CloudifyController subject = new CloudifyController();
-
- protected final ObjectMapper objectMapper = new ObjectMapper();
-
- @Mock
- UserUtils userUtils = new UserUtils();
-
- @Mock
- User epuser;
-
- MockUser mockUser = new MockUser();
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- objectMapper.registerModule(new Jdk8Module());
- }
-
- @Test
- public final void testGetControllerEndpoints_stubbed() {
-
- }
-
- @Test
- public final void testGetTenants_stubbed() throws Exception {
-
- String tenantsList =
- "{\"items\": [{\"id\": 1, \"name\": \"default_tenant\", \"dName\": \"default_tenant\" }, "
- + "{\"id\": 2, \"name\": \"dyh1b1902\", \"dName\": \"dyh1b1902\"}], "
- + "\"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}";
- CloudifyTenantList sampleData = null;
- try {
- sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class);
- } catch (Exception e) {
- }
-
- User user = mockUser.mockUser();
- user.setLoginId("tester");
- MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
-
- Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
- Mockito.when(restClient.getTenants()).thenReturn(sampleData);
-
- RequestBuilder request = MockMvcRequestBuilders.
- get("/tenants").
- accept(MediaType.APPLICATION_JSON);
-
- String tenantStr =
- subject.getTenants(mockedRequest);
-
- assertNotNull(tenantStr);
- assertTrue(tenantStr.contains("dyh1b"));
-
-
- }
+ actualResult =
+ subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse);
+ assertTrue(actualResult.contains("error"));
+ actualResult =
+ subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse);
+ assertTrue(actualResult.contains("error"));
+ }
}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java
new file mode 100644
index 0000000..7097275
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java
@@ -0,0 +1,791 @@
+/*******************************************************************************
+ * =============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;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.core.MockUser;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.onap.ccsdk.dashboard.domain.EcdComponent;
+import org.onap.ccsdk.dashboard.exceptions.BadRequestException;
+import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException;
+import org.onap.ccsdk.dashboard.exceptions.DownstreamException;
+import org.onap.ccsdk.dashboard.exceptions.ServerErrorException;
+import org.onap.ccsdk.dashboard.exceptions.ServiceAlreadyExistsException;
+import org.onap.ccsdk.dashboard.exceptions.inventory.BlueprintParseException;
+import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployment;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
+import org.onap.ccsdk.dashboard.model.CloudifyExecution;
+import org.onap.ccsdk.dashboard.model.CloudifyExecutionList;
+import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstance;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceId;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList;
+import org.onap.ccsdk.dashboard.model.CloudifyTenant;
+import org.onap.ccsdk.dashboard.model.CloudifyTenantList;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentInput;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponseLinks;
+import org.onap.ccsdk.dashboard.model.inventory.Service;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceList;
+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.ServiceTypeList;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeUploadRequest;
+import org.onap.ccsdk.dashboard.rest.CloudifyClient;
+import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient;
+import org.onap.ccsdk.dashboard.rest.InventoryClient;
+import org.onap.ccsdk.dashboard.service.ControllerEndpointService;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.client.HttpServerErrorException;
+import org.springframework.web.client.HttpStatusCodeException;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
+public class CommonApiControllerTest extends MockitoTestSuite {
+
+ @Mock
+ private CloudifyClient cfyClient;
+
+ @Mock
+ private InventoryClient inventoryClient;
+
+ @Mock
+ DeploymentHandlerClient deploymentHandlerClient;
+
+ @Mock
+ ControllerEndpointService controllerEndpointService;
+
+ @InjectMocks
+ CommonApiController subject = new CommonApiController();
+
+ private HttpStatusCodeException httpException =
+ new HttpServerErrorException(HttpStatus.BAD_GATEWAY);
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ HttpServletRequest mockedRequest;
+ HttpServletResponse mockedResponse;
+
+ MockUser mockUser = new MockUser();
+ ServiceList deplList = null;
+ Service deplItem = null;
+
+ ServiceType bpItem = null;
+ ServiceType bpItem2 = null;
+ ServiceTypeList bpList = null;
+ ServiceTypeList bpList2 = null;
+
+ ServiceTypeRequest bpUploadItem = null;
+
+ BadRequestException badReqError;
+ ServiceAlreadyExistsException srvcExistError;
+ ServerErrorException serverError;
+ DownstreamException downStrmError;
+ JsonProcessingException jsonError;
+ DeploymentNotFoundException notFoundError;
+ private ServiceTypeNotFoundException serviceTypeException =
+ new ServiceTypeNotFoundException("Invalid blueprint");
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ getExpectedDeployments();
+ getExpectedBueprints();
+ createBpUploadItem();
+ mockedRequest = getMockedRequest();
+ mockedResponse = getMockedResponse();
+ badReqError = new BadRequestException("bad request");
+ srvcExistError = new ServiceAlreadyExistsException("service already exists");
+ serverError = new ServerErrorException("Error occured in server");
+ downStrmError = new DownstreamException("error occured in downstream");
+ notFoundError = new DeploymentNotFoundException("item not found");
+ }
+
+ public void getExpectedDeployments()
+ throws JsonParseException, JsonMappingException, IOException {
+
+ deplItem = new Service("dcae_dtiapi_1902", null, "1552335532348", "1552335532348", null,
+ "dummyVnfId", null, "dummyVnfType", "dummyLocation", "dcae_dtiapi_1902", null);
+ Collection<Service> items = new ArrayList<Service>();
+ items.add(deplItem);
+
+ String pageLinks =
+ "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}";
+ ServiceList.PaginationLinks paginationLinks =
+ objectMapper.readValue(pageLinks, ServiceList.PaginationLinks.class);
+ int totalCount = 1;
+ deplList = new ServiceList(items, totalCount, paginationLinks);
+
+ }
+
+ public void getExpectedBueprints()
+ throws JsonParseException, JsonMappingException, IOException {
+ bpItem = new ServiceType.Builder("xyz1731", "xyz1731-helm-1906", 1906,
+ "tosca_definitions_version: cloudify_dsl_1_3", "", "app1", "comp1").build();
+
+ Collection<ServiceType> items = new ArrayList<ServiceType>();
+ items.add(bpItem);
+
+ String pageLinks2 =
+ "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}";
+ ServiceTypeList.PaginationLinks paginationLinks =
+ objectMapper.readValue(pageLinks2, ServiceTypeList.PaginationLinks.class);
+ int totalCount = 1;
+ bpList = new ServiceTypeList(items, totalCount, paginationLinks);
+
+ bpItem2 = new ServiceType("xyz1731", "xyz1731-helm-1907", 1906,
+ "tosca_definitions_version: cloudify_dsl_1_3\\r\\nimports:\\r\\n - http://www.getcloudify.org/spec/cloudify/4.2/types.yaml\\r\\n",
+ "app1", "comp1", null, null, null, null, null, null, "typeId", null, "created", null,
+ true);
+
+ Collection<ServiceType> items2 = new ArrayList<ServiceType>();
+ items2.add(bpItem2);
+
+ bpList2 = new ServiceTypeList(items2, totalCount, paginationLinks);
+ }
+
+ public void createBpUploadItem() {
+ bpUploadItem = ServiceTypeRequest.from(bpItem);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public final void testInsertComponent() throws Exception {
+ EcdComponent component1 = new EcdComponent();
+
+ component1.setCname("comp1");
+ component1.setCompId(100L);
+ component1.setDname("COMP1");
+
+ doNothing().when(controllerEndpointService).insertComponent(component1);
+
+ String actualResult = subject.insertComponent(mockedRequest, component1);
+ assertTrue(actualResult.contains("Inserted"));
+ }
+
+ @Test
+ public final void testGetComponents() throws Exception {
+ EcdComponent component1 = new EcdComponent();
+ EcdComponent component2 = new EcdComponent();
+
+ component1.setCname("comp1");
+ component1.setCompId(100L);
+ component1.setDname("COMP1");
+
+ component2.setCname("comp2");
+ component2.setCompId(200L);
+ component2.setDname("COMP2");
+
+ List<EcdComponent> compsList = new ArrayList<EcdComponent>();
+ compsList.add(component1);
+ compsList.add(component2);
+
+ when(controllerEndpointService.getComponents()).thenReturn(compsList);
+
+ String actualResult = subject.getComponents(mockedRequest);
+ assertTrue(actualResult.contains("comp1"));
+ }
+
+ @Test
+ public final void testGetTenants() throws Exception {
+ String tenantsList =
+ "{\"items\": [{\"id\": 1, \"name\": \"default_tenant\", \"dName\": \"default_tenant\" }, "
+ + "{\"id\": 2, \"name\": \"dyh1b1902\", \"dName\": \"dyh1b1902\"}], "
+ + "\"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}";
+ CloudifyTenantList sampleData = null;
+ try {
+ sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class);
+ } catch (Exception e) {
+ }
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+
+ Mockito.when(cfyClient.getTenants()).thenReturn(sampleData);
+
+ String tenantStr = subject.getTenants(mockedRequest);
+ assertTrue(tenantStr.contains("dyh1b"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetTenantStatusForService() throws Exception {
+ String[] deplIds = {"id1", "id2"};
+
+ CloudifyDeployedTenant cldDeplTenant = new CloudifyDeployedTenant("id1", "bp1", "tenant1");
+
+ List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>();
+
+ cldDeplTenantList.add(cldDeplTenant);
+
+ CloudifyDeployedTenantList cldDeployedTenantList =
+ new CloudifyDeployedTenantList(cldDeplTenantList, null);
+
+ CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1");
+
+ List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>();
+ cldfyTenantList.add(cldTenant);
+
+ CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null);
+
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ when(cfyClient.getTenants()).thenReturn(cloudifyTenantList);
+
+ when(cfyClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList);
+
+ when(cfyClient.getExecutionsSummary(Mockito.any(), Mockito.any()))
+ .thenReturn(cloudifyExecutionList).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.getTenantStatusForService(mockedRequest, deplIds);
+ assertTrue(actualResult.contains("successful"));
+
+ actualResult = subject.getTenantStatusForService(mockedRequest, deplIds);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getTenantStatusForService(mockedRequest, deplIds);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testCreateBlueprint() throws Exception {
+ ServiceTypeUploadRequest bpUploadReq = ServiceTypeUploadRequest.from(bpItem);
+
+ when(inventoryClient.addServiceType(Matchers.<ServiceTypeRequest>any()))
+ .thenThrow(BlueprintParseException.class).thenThrow(httpException)
+ .thenThrow(Exception.class).thenReturn(bpItem);
+
+ String actual1 = subject.createBlueprint(mockedRequest, bpUploadReq);
+ assertTrue(actual1.contains("error"));
+
+ String actual2 = subject.createBlueprint(mockedRequest, bpUploadReq);
+ assertTrue(actual2.contains("error"));
+
+ String actual3 = subject.createBlueprint(mockedRequest, bpUploadReq);
+ assertTrue(actual3.contains("error"));
+
+ String actual = subject.createBlueprint(mockedRequest, bpUploadReq);
+ assertTrue(actual.contains("app1"));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetBlueprintsByPage() {
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("_include", "typeName,typeId,typeVersion");
+ mockedRequest1.addParameter("name", "xyz");
+
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream1).thenThrow(Exception.class).thenThrow(httpException);
+
+ String result = subject.getBlueprintsByPage(mockedRequest1);
+ assertTrue(result.contains("xyz"));
+
+ result = subject.getBlueprintsByPage(mockedRequest1);
+ assertTrue(result.contains("error"));
+
+ result = subject.getBlueprintsByPage(mockedRequest1);
+ assertTrue(result.contains("error"));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testQueryBlueprintFilter() {
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("_include", "typeName,typeId,typeVersion");
+ mockedRequest1.addParameter("name", "xyz");
+
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream1).thenThrow(Exception.class).thenThrow(httpException);
+
+ String result = subject.queryBlueprintFilter(mockedRequest1);
+ assertTrue(result.contains("xyz"));
+
+ result = subject.queryBlueprintFilter(mockedRequest1);
+ assertTrue(result.contains("error"));
+
+ result = subject.queryBlueprintFilter(mockedRequest1);
+ assertTrue(result.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetDeploymentsByPage() {
+ CloudifyDeployedTenant cldDeplTenant =
+ new CloudifyDeployedTenant("dcae_dtiapi_1902", "dcae_dtiapi_1902", "tenant1");
+
+ List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>();
+
+ cldDeplTenantList.add(cldDeplTenant);
+
+ CloudifyDeployedTenantList cldDeployedTenantList =
+ new CloudifyDeployedTenantList(cldDeplTenantList, null);
+
+ CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1");
+
+ List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>();
+ cldfyTenantList.add(cldTenant);
+
+ CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null);
+
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("_include", "id");
+ mockedRequest1.addParameter("searchBy", "dti");
+
+ Collection<Service> items = deplList.items;
+
+ when(cfyClient.getTenants()).thenReturn(cloudifyTenantList);
+
+ when(cfyClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList)
+ .thenThrow(Exception.class).thenThrow(httpException).thenReturn(cldDeployedTenantList)
+ .thenReturn(cldDeployedTenantList);
+
+ Stream<Service> sampleStream1 = items.stream();
+ Stream<Service> sampleStream2 = items.stream();
+ Stream<Service> sampleStream3 = items.stream();
+
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1)
+ .thenReturn(sampleStream2).thenReturn(sampleStream3).thenThrow(Exception.class)
+ .thenThrow(httpException);
+
+ String result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1);
+ assertTrue(result.contains("dti"));
+
+ result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1);
+ assertTrue(result.contains("dti"));
+
+ result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1);
+ assertTrue(result.contains("dti"));
+
+ result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1);
+ assertTrue(result.contains("error"));
+
+ result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1);
+ assertTrue(result.contains("error"));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetAllDeploymentsByPage() {
+ CloudifyDeployedTenant cldDeplTenant =
+ new CloudifyDeployedTenant("dcae_dtiapi_1902", "dcae_dtiapi_1902", "tenant1");
+
+ List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>();
+
+ cldDeplTenantList.add(cldDeplTenant);
+
+ CloudifyDeployedTenantList cldDeployedTenantList =
+ new CloudifyDeployedTenantList(cldDeplTenantList, null);
+
+ CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1");
+
+ List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>();
+ cldfyTenantList.add(cldTenant);
+
+ CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null);
+
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("_include", "id");
+ mockedRequest1.addParameter("searchBy", "dti");
+
+ Collection<Service> items = deplList.items;
+
+ when(cfyClient.getTenants()).thenReturn(cloudifyTenantList);
+
+ when(cfyClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList)
+ .thenThrow(Exception.class).thenThrow(httpException).thenReturn(cldDeployedTenantList)
+ .thenReturn(cldDeployedTenantList);
+
+ Stream<Service> sampleStream1 = items.stream();
+ Stream<Service> sampleStream2 = items.stream();
+ Stream<Service> sampleStream3 = items.stream();
+
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1)
+ .thenReturn(sampleStream2).thenReturn(sampleStream3).thenThrow(Exception.class)
+ .thenThrow(httpException);
+
+ String result = subject.getAllDeploymentsByPage(mockedRequest1);
+ assertTrue(result.contains("dti"));
+
+ result = subject.getAllDeploymentsByPage(mockedRequest1);
+ assertTrue(result.contains("dti"));
+
+ result = subject.getAllDeploymentsByPage(mockedRequest1);
+ assertTrue(result.contains("dti"));
+
+ result = subject.getAllDeploymentsByPage(mockedRequest1);
+ assertTrue(result.contains("error"));
+
+ result = subject.getAllDeploymentsByPage(mockedRequest1);
+ assertTrue(result.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetDeploymentRevisions() throws Exception {
+ CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null);
+
+ List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>();
+ cfyNodeInstanceItems.add(cfyNodeInstance);
+
+ CloudifyNodeInstanceList cfyNodeInstList =
+ new CloudifyNodeInstanceList(cfyNodeInstanceItems, null);
+
+ when(cfyClient.getNodeInstanceVersion(Mockito.any(), Mockito.any()))
+ .thenReturn(cfyNodeInstList).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult =
+ subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("id1"));
+
+ actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @Test
+ public final void testGetDeploymentInputs() throws Exception {
+
+ Map<String, Object> inputHash = new HashMap<String, Object>();
+ inputHash.put("key1", "value1");
+
+ CloudifyDeployment cldDeployment =
+ new CloudifyDeployment("description", "blueprint_id", "created_at", "updated_at", "id",
+ inputHash, null, null, null, null, null, null, "tenant");
+
+ List<CloudifyDeployment> cfyDeployItems = new ArrayList<CloudifyDeployment>();
+ cfyDeployItems.add(cldDeployment);
+
+ CloudifyDeploymentList.Metadata.Pagination pageObj =
+ new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1);
+ CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj);
+
+ CloudifyDeploymentList cldDeployList = new CloudifyDeploymentList(cfyDeployItems, metadata);
+
+ when(cfyClient.getDeploymentInputs(Matchers.any(), Matchers.any()))
+ .thenReturn(cldDeployList);
+
+ String actualResult = subject.getDeploymentInputs("deploymentId", "tenant", mockedRequest);
+ assertTrue(actualResult.contains("blueprint_id"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testModifyDeployment() throws Exception {
+ CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install",
+ false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false);
+
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("tenant", "tenant1");
+ params.put("workflow", "upgrade");
+
+ CloudifyExecutionRequest cfyExecReq = new CloudifyExecutionRequest("deployment_id",
+ "upgrade", false, false, "tenant1", params);
+
+ CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1");
+
+ List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>();
+
+ cfyNodeInstItems.add(cfyNodeInst);
+
+ CloudifyNodeInstanceIdList cfyNodeInstList =
+ new CloudifyNodeInstanceIdList(cfyNodeInstItems, null);
+
+ when(cfyClient.getNodeInstanceId(Mockito.any(), Mockito.any())).thenReturn(cfyNodeInstList);
+
+ when(cfyClient.startExecution(Matchers.<CloudifyExecutionRequest>any()))
+ .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException);
+
+ String inputParamStr = "{\"tenant\": \"tenant1\", \"workflow\":\"upgrade\"}";
+
+ InputStream is = new ByteArrayInputStream(inputParamStr.getBytes());
+
+ String actualResult = subject.modifyDeployment("depId", mockedRequest, is);
+ assertTrue(actualResult.contains("execution_id1"));
+
+ actualResult = subject.modifyDeployment("depId", mockedRequest, is);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.modifyDeployment("depId", mockedRequest, is);
+ assertTrue(actualResult.contains("error"));
+
+ }
+
+ @Test
+ public final void testGetServicesForType() throws Exception {
+ ServiceRef expectedSrvc = new ServiceRef("dcae_dtiapi_1902", "432423", "433434");
+ Collection<ServiceRef> expectedSrvcIds = new ArrayList<ServiceRef>();
+ expectedSrvcIds.add(expectedSrvc);
+ ServiceRefList expectedSrvcRefList = new ServiceRefList(expectedSrvcIds, 1);
+
+ when(inventoryClient.getServicesForType(Matchers.<ServiceQueryParams>any()))
+ .thenReturn(expectedSrvcRefList);
+ String actual = subject.getServicesForType(mockedRequest, "typeId1");
+ assertTrue(actual.contains("typeId1"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testCreateDeployment() throws Exception {
+ DeploymentInput deployInput1 = new DeploymentInput("component1", "tag1",
+ "xyz1731-helm-1906", 1906, "blueprintId", null, "tenant1");
+
+ DeploymentInput deployInput2 = new DeploymentInput("component1", "tag1",
+ "xyz1731-helm-1906", 1906, null, null, "tenant1");
+
+ DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status");
+ DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink);
+
+ Collection<ServiceType> items = bpList2.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream1);
+
+ String actualResp0 = subject.createDeployment(mockedRequest, deployInput2);
+ assertTrue(actualResp0.contains("error"));
+
+ StringBuffer expectedStrBuff = new StringBuffer();
+ expectedStrBuff.append("http://oom.s2.com");
+ when(mockedRequest.getRequestURL()).thenReturn(expectedStrBuff);
+
+ when(deploymentHandlerClient.putDeployment(Matchers.anyString(), Matchers.anyString(),
+ Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError)
+ .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError)
+ .thenThrow(Exception.class);
+
+ String actualResp = subject.createDeployment(mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("component1"));
+
+ actualResp = subject.createDeployment(mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.createDeployment(mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.createDeployment(mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.createDeployment(mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.createDeployment(mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testUpdateDeployment() throws Exception {
+
+ DeploymentInput deployInput1 = new DeploymentInput("component1", "tag1",
+ "xyz1731-helm-1906", 1906, "blueprintId", null, "tenant1");
+
+ DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status");
+ DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink);
+
+ Collection<ServiceType> items = bpList2.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream1);
+
+ when(deploymentHandlerClient.updateDeployment(Matchers.anyString(), Matchers.anyString(),
+ Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError)
+ .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError)
+ .thenThrow(Exception.class);
+
+ String actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("req1"));
+
+ actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1);
+ assertTrue(actualResp.contains("error"));
+ }
+
+ @Test
+ public final void testGetExecutionByDeploymentId() throws Exception {
+
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ when(cfyClient.getExecutionsSummary(Mockito.any(), Mockito.any()))
+ .thenReturn(cloudifyExecutionList);
+
+ String actualResult =
+ subject.getExecutionByDeploymentId("dep_id", "tenant1", mockedRequest);
+ assertTrue(actualResult.contains("execution_id1"));
+ }
+
+ @Test
+ public final void testDeleteBlueprint() throws Exception {
+ String expected = "{\"202\": \"OK\"}";
+ doNothing().doThrow(serviceTypeException).doThrow(Exception.class).when(inventoryClient)
+ .deleteServiceType(Matchers.anyString());
+
+ String actual = subject.deleteBlueprint("srvcId", mockedRequest, mockedResponse);
+ assertEquals(expected, actual);
+
+ actual = subject.deleteBlueprint("srvcId", mockedRequest, mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteBlueprint("srvcId", mockedRequest, mockedResponse);
+ assertTrue(actual.contains("error"));
+ }
+
+ @Test
+ public final void testDeleteDeployment() throws Exception {
+ doNothing().doThrow(badReqError).doThrow(serverError).doThrow(downStrmError)
+ .doThrow(notFoundError).doThrow(Exception.class).when(deploymentHandlerClient)
+ .deleteDeployment(Matchers.anyString(), Matchers.anyString());
+
+ StringBuffer expectedStrBuff = new StringBuffer();
+ expectedStrBuff.append("http://oom.s2.com");
+ when(mockedRequest.getRequestURL()).thenReturn(expectedStrBuff);
+
+ String actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertFalse(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testCancelExecution() throws Exception {
+ List<String> tenants = new ArrayList<String>();
+ tenants.add("tenant1");
+
+ HttpHeaders httpHeader = new HttpHeaders();
+ httpHeader.put("tenant", tenants);
+
+ CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "cancel",
+ false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false);
+
+ when(cfyClient.cancelExecution(Mockito.any(), Mockito.any(), Mockito.any()))
+ .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult =
+ subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse);
+ assertTrue(actualResult.contains("execution_id1"));
+
+ actualResult =
+ subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult =
+ subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse);
+ assertTrue(actualResult.contains("error"));
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java
new file mode 100644
index 0000000..3d71a2e
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java
@@ -0,0 +1,315 @@
+/*******************************************************************************
+ * =============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;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.core.MockUser;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.onap.ccsdk.dashboard.model.ConsulDatacenter;
+import org.onap.ccsdk.dashboard.model.ConsulHealthServiceRegistration;
+import org.onap.ccsdk.dashboard.model.ConsulNodeInfo;
+import org.onap.ccsdk.dashboard.model.ConsulServiceHealth;
+import org.onap.ccsdk.dashboard.model.ConsulServiceInfo;
+import org.onap.ccsdk.dashboard.model.RestResponseSuccess;
+import org.onap.ccsdk.dashboard.rest.ConsulClient;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.web.support.UserUtils;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.client.HttpClientErrorException;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
+public class ConsulControllerTest extends MockitoTestSuite {
+
+ @Mock
+ ConsulClient consulClient;
+
+ @InjectMocks
+ ConsulController subject = new ConsulController();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ MockUser mockUser = new MockUser();
+ HttpClientErrorException httpException;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ mockedRequest = getMockedRequest();
+ mockedResponse = getMockedResponse();
+ httpException = new HttpClientErrorException(HttpStatus.BAD_REQUEST, "statusText");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetServiceHealthDetails() throws Exception {
+ ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00",
+ "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing",
+ "This is a pgaas1_Service_ID health check",
+ "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n",
+ "pgaas1_Service_ID", "pgaasServer1", 190199, 199395);
+
+ List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>();
+ expectedCnslSrvcHlth.add(consulSrvcHlth);
+
+ when(consulClient.getServiceHealth(Matchers.anyString(), Matchers.anyString()))
+ .thenReturn(expectedCnslSrvcHlth).thenThrow(Exception.class);
+
+ String actualResult = subject.getServiceHealthDetails(mockedRequest, "dc1", "srvc1");
+ assertTrue(actualResult.contains("pgaasServer1"));
+
+ actualResult = subject.getServiceHealthDetails(mockedRequest, "dc1", "srvc1");
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetServicesHealth() throws Exception {
+
+ List<String> srvcIps = new ArrayList<String>();
+ srvcIps.add("135.91.224.136");
+ srvcIps.add("135.91.224.138");
+ ConsulServiceInfo consulSrvcInfo = new ConsulServiceInfo("pgaasServer1", srvcIps);
+
+ List<ConsulServiceInfo> expectedCnslSrvcs = new ArrayList<ConsulServiceInfo>();
+ expectedCnslSrvcs.add(consulSrvcInfo);
+
+ ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00",
+ "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing",
+ "This is a pgaas1_Service_ID health check",
+ "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n",
+ "pgaas1_Service_ID", "pgaasServer1", 190199, 199395);
+
+ List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>();
+ expectedCnslSrvcHlth.add(consulSrvcHlth);
+
+ when(consulClient.getServices(Matchers.anyString())).thenReturn(expectedCnslSrvcs);
+ when(consulClient.getServiceHealth(Matchers.anyString(), Matchers.anyString()))
+ .thenReturn(expectedCnslSrvcHlth).thenThrow(Exception.class);
+
+ String actualResult = subject.getServicesHealth(mockedRequest, "dc1");
+ assertTrue(actualResult.contains("pgaasServer1"));
+
+ actualResult = subject.getServicesHealth(mockedRequest, "dc1");
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @Test
+ public final void testGetNodesInfo() {
+ User user = mockUser.mockUser();
+ user.setLoginId("tester");
+ user.setId(1000L);
+ Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
+
+ ConsulNodeInfo cnslNode = new ConsulNodeInfo("a2788806-6e2e-423e-8ee7-6cad6f3d3de6",
+ "cjlvmcnsl00", "10.170.8.13", null, null, 6, 17980);
+
+ List<ConsulNodeInfo> cnslNodeList = new ArrayList<ConsulNodeInfo>();
+ cnslNodeList.add(cnslNode);
+
+ when(consulClient.getNodes(Matchers.anyString())).thenReturn(cnslNodeList);
+
+ String actualResult = subject.getNodesInfo(mockedRequest, "dc1");
+ assertTrue(actualResult.contains("cjlvmcnsl00"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetNodeServicesHealth() throws Exception {
+ ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00",
+ "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing",
+ "This is a pgaas1_Service_ID health check",
+ "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n",
+ "pgaas1_Service_ID", "pgaasServer1", 190199, 199395);
+
+ List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>();
+ expectedCnslSrvcHlth.add(consulSrvcHlth);
+
+ when(consulClient.getNodeServicesHealth(Matchers.anyString(), Matchers.anyString()))
+ .thenReturn(expectedCnslSrvcHlth).thenThrow(Exception.class);
+
+ String actualResult = subject.getNodeServicesHealth(mockedRequest, "dc1", "node1");
+ assertTrue(actualResult.contains("pgaasServer1"));
+
+ actualResult = subject.getNodeServicesHealth(mockedRequest, "dc1", "node1");
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @Test
+ public final void testGetDatacentersHealth() {
+ User user = mockUser.mockUser();
+ user.setLoginId("tester");
+ user.setId(1000L);
+ Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
+
+ ConsulDatacenter cnslDc = new ConsulDatacenter("dc1");
+
+ List<ConsulDatacenter> cnslDcList = new ArrayList<ConsulDatacenter>();
+ cnslDcList.add(cnslDc);
+
+ when(consulClient.getDatacenters()).thenReturn(cnslDcList);
+
+ String actualResult = subject.getDatacentersHealth(mockedRequest);
+ assertTrue(actualResult.contains("dc1"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testRegisterService() throws Exception {
+ ConsulHealthServiceRegistration.EndpointCheck endPoint =
+ new ConsulHealthServiceRegistration.EndpointCheck("endpoint1", "interval1",
+ "description1", "name1");
+ List<ConsulHealthServiceRegistration.EndpointCheck> endPointList =
+ new ArrayList<ConsulHealthServiceRegistration.EndpointCheck>();
+ endPointList.add(endPoint);
+
+ List<String> tagList = new ArrayList<String>();
+ tagList.add("tag1");
+ tagList.add("tag2");
+
+ ConsulHealthServiceRegistration.ConsulServiceRegistration servcReg =
+ new ConsulHealthServiceRegistration.ConsulServiceRegistration("id1", "name1",
+ "address1", "port1", tagList, endPointList);
+ List<ConsulHealthServiceRegistration.ConsulServiceRegistration> servcRegList =
+ new ArrayList<ConsulHealthServiceRegistration.ConsulServiceRegistration>();
+ servcRegList.add(servcReg);
+
+ ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(servcRegList);
+
+ RestResponseSuccess expectedResp = new RestResponseSuccess("Registration yielded code 0");
+ String expectedResult = objectMapper.writeValueAsString(expectedResp);
+
+ String expectedStr = "Registration yielded code 0";
+ when(consulClient.registerService(Matchers.<ConsulHealthServiceRegistration>any()))
+ .thenReturn(expectedStr).thenThrow(Exception.class).thenThrow(httpException);
+
+ String actualResult = subject.registerService(mockedRequest, chsrObj);
+ assertTrue(actualResult.equals(expectedResult));
+
+ actualResult = subject.registerService(mockedRequest, chsrObj);
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.registerService(mockedRequest, chsrObj);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @Test
+ public final void testRegisterService_SrvcError() throws Exception {
+ ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(null);
+
+ String actualResult = subject.registerService(mockedRequest, chsrObj);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @Test
+ @Ignore
+ public final void testRegisterService_invalidSrvcError() throws Exception {
+ ConsulHealthServiceRegistration.EndpointCheck endPoint =
+ new ConsulHealthServiceRegistration.EndpointCheck("endpoint1", "interval1",
+ "description1", "name1");
+ List<ConsulHealthServiceRegistration.EndpointCheck> endPointList =
+ new ArrayList<ConsulHealthServiceRegistration.EndpointCheck>();
+ endPointList.add(endPoint);
+
+ List<String> tagList = new ArrayList<String>();
+ tagList.add("tag1");
+ tagList.add("tag2");
+
+ ConsulHealthServiceRegistration.ConsulServiceRegistration servcReg =
+ new ConsulHealthServiceRegistration.ConsulServiceRegistration("id1", "name2",
+ "address2", "port1", tagList, endPointList);
+ List<ConsulHealthServiceRegistration.ConsulServiceRegistration> servcRegList =
+ new ArrayList<ConsulHealthServiceRegistration.ConsulServiceRegistration>();
+ servcRegList.add(servcReg);
+
+ ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(servcRegList);
+
+ String actualResult = subject.registerService(mockedRequest, chsrObj);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @Test
+ public final void testRegisterService_invalidEndptError() throws Exception {
+ ConsulHealthServiceRegistration.EndpointCheck endPoint =
+ new ConsulHealthServiceRegistration.EndpointCheck("", "", "description1", "name1");
+ List<ConsulHealthServiceRegistration.EndpointCheck> endPointList =
+ new ArrayList<ConsulHealthServiceRegistration.EndpointCheck>();
+ endPointList.add(endPoint);
+
+ List<String> tagList = new ArrayList<String>();
+ tagList.add("tag1");
+ tagList.add("tag2");
+
+ ConsulHealthServiceRegistration.ConsulServiceRegistration servcReg =
+ new ConsulHealthServiceRegistration.ConsulServiceRegistration("id1", "", "", "port1",
+ tagList, endPointList);
+ List<ConsulHealthServiceRegistration.ConsulServiceRegistration> servcRegList =
+ new ArrayList<ConsulHealthServiceRegistration.ConsulServiceRegistration>();
+ servcRegList.add(servcReg);
+
+ ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(servcRegList);
+
+ String actualResult = subject.registerService(mockedRequest, chsrObj);
+ assertTrue(actualResult.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testDeregisterService() throws Exception {
+ RestResponseSuccess expectedResp = new RestResponseSuccess("Deregistration yielded code 0");
+ String expectedResult = objectMapper.writeValueAsString(expectedResp);
+
+ when(consulClient.deregisterService(Mockito.any())).thenReturn(0).thenThrow(Exception.class)
+ .thenThrow(httpException);
+
+ String actualResult = subject.deregisterService(mockedRequest, "srvc1");
+ assertTrue(actualResult.equals(expectedResult));
+
+ actualResult = subject.deregisterService(mockedRequest, "srvc1");
+ assertTrue(actualResult.contains("error"));
+
+ actualResult = subject.deregisterService(mockedRequest, "srvc1");
+ assertTrue(actualResult.contains("error"));
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java
new file mode 100644
index 0000000..6517b68
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * =============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;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.onap.ccsdk.dashboard.exceptions.BadRequestException;
+import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException;
+import org.onap.ccsdk.dashboard.exceptions.DownstreamException;
+import org.onap.ccsdk.dashboard.exceptions.ServerErrorException;
+import org.onap.ccsdk.dashboard.exceptions.ServiceAlreadyExistsException;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequestObject;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponseLinks;
+import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
+public class DeploymentHandlerControllerTest extends MockitoTestSuite {
+
+ @Mock
+ DeploymentHandlerClient restClient;
+
+ @InjectMocks
+ DeploymentHandlerController subject = new DeploymentHandlerController();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ BadRequestException badReqError;
+ ServiceAlreadyExistsException srvcExistError;
+ ServerErrorException serverError;
+ DownstreamException downStrmError;
+ JsonProcessingException jsonError;
+ DeploymentNotFoundException notFoundError;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ mockedRequest = getMockedRequest();
+ mockedResponse = getMockedResponse();
+ badReqError = new BadRequestException("bad request");
+ srvcExistError = new ServiceAlreadyExistsException("service already exists");
+ serverError = new ServerErrorException("Error occured in server");
+ downStrmError = new DownstreamException("error occured in downstream");
+ notFoundError = new DeploymentNotFoundException("item not found");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testPutDeployment_create() throws Exception {
+ DeploymentRequestObject expectReq =
+ new DeploymentRequestObject("dep1", "dep1", null, "tenant1", "create");
+
+ DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status");
+ DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink);
+
+ when(restClient.putDeployment(Matchers.anyString(), Matchers.anyString(),
+ Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError)
+ .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError)
+ .thenThrow(Exception.class);
+
+ String actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("req1"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testPutDeployment_update() throws Exception {
+ DeploymentRequestObject expectReq =
+ new DeploymentRequestObject("dep1", "dep1", null, "tenant1", "update");
+
+ DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status");
+ DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink);
+
+ when(restClient.updateDeployment(Matchers.anyString(), Matchers.anyString(),
+ Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError)
+ .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError)
+ .thenThrow(Exception.class);
+
+ String actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("req1"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+
+ actualResp = subject.putDeployment(mockedRequest, expectReq);
+ assertTrue(actualResp.contains("error"));
+ }
+
+ @Test
+ public final void testDeleteDeployment() throws Exception {
+
+ doNothing().doThrow(badReqError).doThrow(serverError).doThrow(downStrmError)
+ .doThrow(notFoundError).doThrow(Exception.class).when(restClient)
+ .deleteDeployment(Matchers.anyString(), Matchers.anyString());
+
+ StringBuffer expectedStrBuff = new StringBuffer();
+ expectedStrBuff.append("http://oom.s2.com");
+ when(mockedRequest.getRequestURL()).thenReturn(expectedStrBuff);
+
+ String actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertFalse(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java
new file mode 100644
index 0000000..771c085
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * =============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;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.springframework.web.servlet.ModelAndView;
+
+public class ECDSingleSignOnControllerTest extends MockitoTestSuite {
+
+ @InjectMocks
+ ECDSingleSignOnController subject = new ECDSingleSignOnController();
+
+ @Before
+ public void setUp() throws Exception {
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public final void testSingleSignOnLogin() throws Exception {
+
+ mockedRequest.addParameter("forwardURL", "ecd#");
+ ModelAndView actualResult = subject.singleSignOnLogin(mockedRequest, mockedResponse);
+ assertTrue(actualResult.getViewName().contains("login"));
+
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java
new file mode 100644
index 0000000..4e44c39
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * =============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;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.onap.ccsdk.dashboard.model.HealthStatus;
+import org.onap.portalsdk.core.util.SystemProperties;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({SystemProperties.class})
+public class HealthCheckControllerTest extends MockitoTestSuite {
+
+ @InjectMocks
+ HealthCheckController subject = new HealthCheckController();
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mockedRequest = getMockedRequest();
+ mockedResponse = getMockedResponse();
+ PowerMockito.mockStatic(SystemProperties.class);
+ when(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME))
+ .thenReturn("oom-dash");
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public final void testHealthCheck() {
+ String messg = "oom-dash health check passed";
+ HealthStatus actualResult = subject.healthCheck(mockedRequest, mockedResponse);
+ assertTrue(actualResult.statusCode == 200);
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java
new file mode 100644
index 0000000..01858ed
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java
@@ -0,0 +1,788 @@
+/*******************************************************************************
+ * =============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;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Optional;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.stream.Stream;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.core.MockUser;
+import org.onap.ccsdk.dashboard.core.MockitoTestSuite;
+import org.onap.ccsdk.dashboard.exceptions.inventory.BlueprintParseException;
+import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceNotFoundException;
+import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException;
+import org.onap.ccsdk.dashboard.model.inventory.Service;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceList;
+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.ServiceTypeList;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest;
+import org.onap.ccsdk.dashboard.rest.CloudifyClient;
+import org.onap.ccsdk.dashboard.rest.InventoryClient;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.web.support.AppUtils;
+import org.onap.portalsdk.core.web.support.UserUtils;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.client.HttpServerErrorException;
+import org.springframework.web.client.RestClientException;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({DashboardProperties.class})
+public class InventoryControllerTest extends MockitoTestSuite {
+
+ @Mock
+ private CloudifyClient restClient;
+
+ @Mock
+ private InventoryClient inventoryClient;
+
+ @InjectMocks
+ private InventoryController subject = new InventoryController();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ private HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.BAD_GATEWAY);
+
+ private ServiceNotFoundException serviceException =
+ new ServiceNotFoundException("Invalid deployment");
+
+ private ServiceTypeNotFoundException serviceTypeException =
+ new ServiceTypeNotFoundException("Invalid blueprint");
+
+ @Mock
+ UserUtils userUtils = new UserUtils();
+
+ @Mock
+ User epuser;
+
+ @Mock
+ AppUtils appUtils = new AppUtils();
+
+ HttpServletRequest mockedRequest;
+ HttpServletResponse mockedResponse;
+
+ MockUser mockUser = new MockUser();
+ ServiceList deplList = null;
+ Service deplItem = null;
+
+ ServiceType bpItem = null;
+ ServiceTypeList bpList = null;
+
+ ServiceTypeRequest bpUploadItem = null;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ getExpectedDeployments();
+ getExpectedBueprints();
+ createBpUploadItem();
+ mockedRequest = getMockedRequest();
+ mockedResponse = getMockedResponse();
+ }
+
+ public void getExpectedDeployments()
+ throws JsonParseException, JsonMappingException, IOException {
+
+ deplItem = new Service("dcae_dtiapi_1902", null, "1552335532348", "1552335532348", null,
+ "dummyVnfId", null, "dummyVnfType", "dummyLocation", "dcae_dtiapi_1902", null);
+ Collection<Service> items = new ArrayList<Service>();
+ items.add(deplItem);
+
+ String pageLinks =
+ "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}";
+ ServiceList.PaginationLinks paginationLinks =
+ objectMapper.readValue(pageLinks, ServiceList.PaginationLinks.class);
+ int totalCount = 1;
+ deplList = new ServiceList(items, totalCount, paginationLinks);
+
+ }
+
+ public void getExpectedBueprints()
+ throws JsonParseException, JsonMappingException, IOException {
+ bpItem = new ServiceType.Builder("xyz1731", "xyz1731-helm-1906", 1906,
+ "tosca_definitions_version: cloudify_dsl_1_3", "", "app1", "comp1").build();
+ Collection<ServiceType> items = new ArrayList<ServiceType>();
+ items.add(bpItem);
+
+ String pageLinks2 =
+ "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}";
+ ServiceTypeList.PaginationLinks paginationLinks =
+ objectMapper.readValue(pageLinks2, ServiceTypeList.PaginationLinks.class);
+ int totalCount = 1;
+ bpList = new ServiceTypeList(items, totalCount, paginationLinks);
+ }
+
+ public void createBpUploadItem() {
+ bpUploadItem = ServiceTypeRequest.from(bpItem);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage() {
+ User user = mockUser.mockUser();
+ user.setLoginId("tester");
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("searchBy", "xyz");
+ mockedRequest.addParameter("sortBy", "owner");
+
+ Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Collection<ServiceType> items = bpList.items;
+
+ Stream<ServiceType> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ HttpSession session = mockedRequest.getSession();
+ HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>();
+ comp_deploy_tab.put("comp1", true);
+
+ Set<String> userApps = new TreeSet<String>();
+ userApps.add("comp1");
+
+ when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab);
+ when(session.getAttribute("role_level")).thenReturn("app");
+ when(session.getAttribute("authComponents")).thenReturn(userApps);
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_appl() {
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "application");
+
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_comp() {
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "component");
+
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_typeId() {
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "typeId");
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_typeName() {
+
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "typeName");
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_typeVer() {
+
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "typeVersion");
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_created() {
+
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "created");
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream1 = items.stream();
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<ServiceType> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream2);
+ String result2 = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result2.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_Auth() {
+
+ User user = mockUser.mockUser();
+ user.setLoginId("tester");
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("searchBy", "xyz");
+
+ Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream = items.stream();
+
+ HttpSession session = mockedRequest.getSession();
+ HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>();
+ comp_deploy_tab.put("comp1", true);
+
+ Set<String> userApps = new TreeSet<String>();
+ userApps.add("comp1");
+
+ when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab);
+ when(session.getAttribute("role_level")).thenReturn("ops");
+ when(session.getAttribute("authComponents")).thenReturn(userApps);
+
+ Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any()))
+ .thenReturn(sampleStream);
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testGetServiceTypesByPage_Exception() {
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream = items.stream();
+ when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+ when(inventoryClient.getServiceTypes()).thenThrow(RestClientException.class)
+ .thenThrow(httpException).thenReturn(sampleStream);
+
+ String errResp = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(errResp.contains("error"));
+
+ errResp = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(errResp.contains("error"));
+
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServiceTypesByPage_Filter() {
+ User user = mockUser.mockUser();
+ user.setLoginId("tester");
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("searchBy", "xyz");
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user);
+
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> sampleStream = items.stream();
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+ Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream);
+
+ String result = subject.getServiceTypesByPage(mockedRequest);
+ assertTrue(result.contains("xyz"));
+ }
+
+ @Test
+ public final void testGetServicesByPage_auth() throws IOException {
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("searchBy", "dti");
+
+ Collection<Service> items = deplList.items;
+
+ HttpSession session = mockedRequest1.getSession();
+ HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>();
+ comp_deploy_tab.put("dcae", true);
+
+ Set<String> userApps = new TreeSet<String>();
+ userApps.add("dcae");
+
+ when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab);
+ when(session.getAttribute("role_level")).thenReturn("app");
+ when(session.getAttribute("authComponents")).thenReturn(userApps);
+
+ Stream<Service> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1);
+
+ String result1 = subject.getServicesByPage(mockedRequest1);
+ assertTrue(result1.contains("dti"));
+
+ }
+
+ @Test
+ public final void testGetServicesByPage_auth_ops() throws IOException {
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("searchBy", "dti");
+
+ Collection<Service> items = deplList.items;
+
+ HttpSession session = mockedRequest1.getSession();
+ HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>();
+ comp_deploy_tab.put("dcae", true);
+
+ Set<String> userApps = new TreeSet<String>();
+ userApps.add("dcae");
+
+ when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab);
+ when(session.getAttribute("role_level")).thenReturn("ops");
+ when(session.getAttribute("authComponents")).thenReturn(userApps);
+
+ Stream<Service> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1);
+
+ String result1 = subject.getServicesByPage(mockedRequest1);
+ assertTrue(result1.contains("dti"));
+
+ }
+
+ @Test
+ public final void testGetServicesByPage() throws IOException {
+ /*
+ * User user = mockUser.mockUser(); user.setLoginId("tester");
+ */
+ MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest();
+ mockedRequest1.addParameter("searchBy", "dti");
+ mockedRequest1.addParameter("sortBy", "deploymentRef");
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Collection<Service> items = deplList.items;
+
+ Stream<Service> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1);
+
+ String result1 = subject.getServicesByPage(mockedRequest1);
+ assertTrue(result1.contains("dti"));
+ }
+
+ @Test
+ public final void testGetServicesByPage_sort_serviceId() throws IOException {
+
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "serviceId");
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Collection<Service> items = deplList.items;
+
+ Stream<Service> sampleStream1 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1);
+
+ String result = subject.getServicesByPage(mockedRequest);
+ assertTrue(result.contains("dti"));
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<Service> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream2);
+
+ String result2 = subject.getServicesByPage(mockedRequest);
+ assertTrue(result2.contains("dti"));
+ }
+
+ @Test
+ public final void testGetServicesByPage_sort_created() throws IOException {
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "created");
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Collection<Service> items = deplList.items;
+
+ Stream<Service> sampleStream = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream);
+
+ String result = subject.getServicesByPage(mockedRequest);
+ assertTrue(result.contains("dti"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<Service> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream2);
+
+ String result2 = subject.getServicesByPage(mockedRequest);
+ assertTrue(result2.contains("dti"));
+
+ }
+
+ @Test
+ public final void testGetServicesByPage_sort_modified() throws IOException {
+
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ mockedRequest.addParameter("sortBy", "modified");
+
+ PowerMockito.mockStatic(DashboardProperties.class);
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("os");
+
+ Collection<Service> items = deplList.items;
+
+ Stream<Service> sampleStream = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream);
+
+ String result = subject.getServicesByPage(mockedRequest);
+ assertTrue(result.contains("dti"));
+
+ Mockito
+ .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth"))
+ .thenReturn("auth");
+
+ Stream<Service> sampleStream2 = items.stream();
+ Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream2);
+
+ String result2 = subject.getServicesByPage(mockedRequest);
+ assertTrue(result2.contains("dti"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testUploadServiceTypeBlueprint() throws Exception {
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ String expected = "{\"201\": \"OK\"}";
+ when(inventoryClient.addServiceType(Matchers.<ServiceTypeRequest>any()))
+ .thenThrow(BlueprintParseException.class).thenThrow(httpException)
+ .thenThrow(Exception.class).thenReturn(null);
+
+ String actual1 = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem);
+ assertTrue(actual1.contains("error"));
+
+ String actual2 = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem);
+ assertTrue(actual2.contains("error"));
+
+ String actual3 = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem);
+ assertTrue(actual3.contains("error"));
+
+ String actual = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem);
+ assertEquals(expected, actual);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testUpdateServiceTypeBlueprint() throws Exception {
+ MockHttpServletRequestWrapper mockedRequest = getMockedRequest();
+ String expected = "{\"201\": \"OK\"}";
+ Mockito.when(inventoryClient.addServiceType(Matchers.<ServiceType>any()))
+ .thenThrow(BlueprintParseException.class).thenThrow(httpException)
+ .thenThrow(Exception.class).thenReturn(null);
+
+ String actual1 = subject.updateServiceTypeBlueprint(mockedRequest, bpItem);
+ assertTrue(actual1.contains("error"));
+
+ String actual2 = subject.updateServiceTypeBlueprint(mockedRequest, bpItem);
+ assertTrue(actual2.contains("error"));
+
+ String actual3 = subject.updateServiceTypeBlueprint(mockedRequest, bpItem);
+ assertTrue(actual3.contains("error"));
+
+ String actual = subject.updateServiceTypeBlueprint(mockedRequest, bpItem);
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public final void testDeleteService() throws Exception {
+ String expected = "{\"202\": \"OK\"}";
+ doNothing().doThrow(serviceException).doThrow(Exception.class).when(inventoryClient)
+ .deleteService(Matchers.anyString());
+
+ String actual = subject.deleteService("srvcId", mockedRequest, mockedResponse);
+ assertEquals(expected, actual);
+
+ actual = subject.deleteService("srvcId", mockedRequest, mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteService("srvcId", mockedRequest, mockedResponse);
+ assertTrue(actual.contains("error"));
+ }
+
+ @Test
+ public final void testDeleteServiceType() throws Exception {
+ String expected = "{\"202\": \"OK\"}";
+ doNothing().doThrow(serviceTypeException).doThrow(Exception.class).when(inventoryClient)
+ .deleteServiceType(Matchers.anyString());
+
+ String actual = subject.deleteServiceType("srvcId", mockedRequest, mockedResponse);
+ assertEquals(expected, actual);
+
+ actual = subject.deleteServiceType("srvcId", mockedRequest, mockedResponse);
+ assertTrue(actual.contains("error"));
+
+ actual = subject.deleteServiceType("srvcId", mockedRequest, mockedResponse);
+ assertTrue(actual.contains("error"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public final void testViewServiceTypeBlueprintContentById() throws Exception {
+ Optional<ServiceType> expected = Optional.of(bpItem);
+ when(inventoryClient.getServiceType(Matchers.anyString())).thenReturn(expected)
+ .thenThrow(httpException).thenThrow(Exception.class);
+
+ String result = subject.viewServiceTypeBlueprintContentById("typeId", mockedRequest);
+ assertTrue(result.contains("xyz"));
+
+ result = subject.viewServiceTypeBlueprintContentById("typeId", mockedRequest);
+ assertTrue(result.contains("error"));
+
+ result = subject.viewServiceTypeBlueprintContentById("typeId", mockedRequest);
+ assertTrue(result.contains("error"));
+ }
+
+ @Test
+ public final void testGetServicesForType() throws Exception {
+ String[] testTypeIds = {"44234234"};
+ ServiceRef expectedSrvc = new ServiceRef("dcae_dtiapi_1902", "432423", "433434");
+ Collection<ServiceRef> expectedSrvcIds = new ArrayList<ServiceRef>();
+ expectedSrvcIds.add(expectedSrvc);
+ ServiceRefList expectedSrvcRefList = new ServiceRefList(expectedSrvcIds, 1);
+
+ when(inventoryClient.getServicesForType(Matchers.<ServiceQueryParams>any()))
+ .thenReturn(expectedSrvcRefList);
+ String actual = subject.getServicesForType(mockedRequest, testTypeIds);
+ assertTrue(actual.contains(testTypeIds[0]));
+ }
+
+ /*
+ * @Test public final void testGetItemListForPageWrapper() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testGetServicesForType() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ *
+ *
+ * @Test public final void testViewServiceTypeBlueprintContentById() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testDeleteServiceType() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testDeleteService() { fail("Not yet implemented"); //
+ * TODO }
+ *
+ * @Test public final void testUpdateServiceTypeBlueprint() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testUploadServiceTypeBlueprint() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testGetAppProperties() { fail("Not yet implemented");
+ * // TODO }
+ *
+ * @Test public final void testGetOrSetControllerEndpointSelectionLong() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testGetOrSetControllerEndpointSelection() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testGetInventoryClientHttpServletRequest() {
+ * fail("Not yet implemented"); // TODO }
+ *
+ * @Test public final void testGetInventoryClientLong() {
+ * fail("Not yet implemented"); // TODO }
+ */
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java
index 0a331e0..050e3eb 100644
--- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java
@@ -2,23 +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.
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
*******************************************************************************/
+
package org.onap.ccsdk.dashboard.core;
import java.util.Date;
@@ -27,60 +28,60 @@ import org.onap.portalsdk.core.domain.User;
public class MockUser {
- public User mockUser() {
+ public User mockUser() {
- User ePUser = new User();
- ePUser.setOrgId(null);
- ePUser.setManagerId(null);
- ePUser.setFirstName("test");
- ePUser.setLastName("test");
- ePUser.setMiddleInitial(null);
- ePUser.setPhone(null);
- ePUser.setFax(null);
- ePUser.setCellular(null);
- ePUser.setEmail(null);
- ePUser.setAddressId(null);
- ePUser.setAlertMethodCd(null);
- ePUser.setHrid(null);
- ePUser.setOrgUserId("guestT");
- ePUser.setOrgCode(null);
- ePUser.setAddress1(null);
- ePUser.setAddress2(null);
- ePUser.setCity(null);
- ePUser.setState(null);
- ePUser.setZipCode(null);
- ePUser.setCountry(null);
- ePUser.setOrgManagerUserId(null);
- ePUser.setLocationClli(null);
- ePUser.setBusinessCountryCode(null);
- ePUser.setBusinessCountryName(null);
- ePUser.setBusinessUnit(null);
- ePUser.setBusinessUnitName(null);
- ePUser.setDepartment(null);
- ePUser.setDepartmentName(null);
- ePUser.setCompanyCode(null);
- ePUser.setCompany(null);
- ePUser.setZipCodeSuffix(null);
- ePUser.setJobTitle(null);
- ePUser.setCommandChain(null);
- ePUser.setSiloStatus(null);
- ePUser.setCostCenter(null);
- ePUser.setFinancialLocCode(null);
+ User ePUser = new User();
+ ePUser.setOrgId(null);
+ ePUser.setManagerId(null);
+ ePUser.setFirstName("test");
+ ePUser.setLastName("test");
+ ePUser.setMiddleInitial(null);
+ ePUser.setPhone(null);
+ ePUser.setFax(null);
+ ePUser.setCellular(null);
+ ePUser.setEmail(null);
+ ePUser.setAddressId(null);
+ ePUser.setAlertMethodCd(null);
+ ePUser.setHrid(null);
+ ePUser.setOrgUserId("guestT");
+ ePUser.setOrgCode(null);
+ ePUser.setAddress1(null);
+ ePUser.setAddress2(null);
+ ePUser.setCity(null);
+ ePUser.setState(null);
+ ePUser.setZipCode(null);
+ ePUser.setCountry(null);
+ ePUser.setOrgManagerUserId(null);
+ ePUser.setLocationClli(null);
+ ePUser.setBusinessCountryCode(null);
+ ePUser.setBusinessCountryName(null);
+ ePUser.setBusinessUnit(null);
+ ePUser.setBusinessUnitName(null);
+ ePUser.setDepartment(null);
+ ePUser.setDepartmentName(null);
+ ePUser.setCompanyCode(null);
+ ePUser.setCompany(null);
+ ePUser.setZipCodeSuffix(null);
+ ePUser.setJobTitle(null);
+ ePUser.setCommandChain(null);
+ ePUser.setSiloStatus(null);
+ ePUser.setCostCenter(null);
+ ePUser.setFinancialLocCode(null);
- ePUser.setLoginId(null);
- ePUser.setLoginPwd(null);
- Date date = new Date();
- ePUser.setLastLoginDate(date);
- ePUser.setActive(true);
- ePUser.setInternal(false);
- ePUser.setSelectedProfileId(null);
- ePUser.setTimeZoneId(null);
- ePUser.setOnline(true);
- ePUser.setChatId(null);
- ePUser.setUserApps(null);
- ePUser.setPseudoRoles(null);
+ ePUser.setLoginId(null);
+ ePUser.setLoginPwd(null);
+ Date date = new Date();
+ ePUser.setLastLoginDate(date);
+ ePUser.setActive(true);
+ ePUser.setInternal(false);
+ ePUser.setSelectedProfileId(null);
+ ePUser.setTimeZoneId(null);
+ ePUser.setOnline(true);
+ ePUser.setChatId(null);
+ ePUser.setUserApps(null);
+ ePUser.setPseudoRoles(null);
- ePUser.setId((long) -1);
- return ePUser;
- }
+ ePUser.setId((long) -1);
+ return ePUser;
+ }
}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java
index c251a5c..e211b35 100644
--- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java
@@ -3,7 +3,7 @@
* ============LICENSE_START==========================================
* ONAP Portal
* ===================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ===================================================================
*
* Unless otherwise specified, all software contained herein is licensed
@@ -38,6 +38,10 @@
*/
package org.onap.ccsdk.dashboard.core;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
@@ -51,45 +55,77 @@ import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class MockitoTestSuite {
-
- public MockHttpServletRequestWrapper mockedRequest = new MockHttpServletRequestWrapper(
- Mockito.mock(HttpServletRequest.class));
- public HttpServletResponse mockedResponse = Mockito.mock(HttpServletResponse.class);
-
- public MockHttpServletRequestWrapper getMockedRequest() {
- return mockedRequest;
- }
-
- public HttpServletResponse getMockedResponse() {
- return mockedResponse;
- }
-
- public class MockHttpServletRequestWrapper extends HttpServletRequestWrapper {
-
- HttpSession session = Mockito.mock(HttpSession.class);
-
- public MockHttpServletRequestWrapper(HttpServletRequest request) {
- super(request);
-
- }
-
- @Override
- public HttpSession getSession() {
-
- return session;
- }
-
- @Override
- public HttpSession getSession(boolean create) {
-
- return session;
- }
-
- }
-
- @Test
- public void test()
- {
- assert(true);
- }
-} \ No newline at end of file
+ public MockHttpServletRequestWrapper mockedRequest =
+ new MockHttpServletRequestWrapper(Mockito.mock(HttpServletRequest.class));
+ public HttpServletResponse mockedResponse = Mockito.mock(HttpServletResponse.class);
+
+ public MockHttpServletRequestWrapper getMockedRequest() {
+ return mockedRequest;
+ }
+
+ public HttpServletResponse getMockedResponse() {
+ return mockedResponse;
+ }
+
+ public class MockHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+ HashMap<String, String> params = new HashMap<>();
+
+ HttpSession session = Mockito.mock(HttpSession.class);
+
+ public MockHttpServletRequestWrapper(HttpServletRequest request) {
+ super(request);
+
+ }
+
+ @Override
+ public HttpSession getSession() {
+ return session;
+ }
+
+ @Override
+ public HttpSession getSession(boolean create) {
+
+ return session;
+ }
+
+ @Override
+ public String getParameter(final String name) {
+ // if we added one with the given name, return that one
+ if (params.get(name) != null) {
+ return (String) params.get(name);
+ } else {
+ // otherwise return what's in the original request
+ return super.getParameter(name);
+ }
+ }
+
+ public void addParameter(String name, String value) {
+ params.put(name, value);
+ }
+
+ @Override
+ public Map<String, String[]> getParameterMap() {
+ return super.getParameterMap();
+ }
+
+ @Override
+ public Enumeration<String> getParameterNames() {
+ // defaulf impl, should be overridden for an approprivate map of request params
+ // names
+ return super.getParameterNames();
+ }
+
+ @Override
+ public String[] getParameterValues(final String name) {
+ // defaulf impl, should be overridden for an approprivate map of request params
+ // values
+ return super.getParameterValues(name);
+ }
+ }
+
+ @Test
+ public void test() {
+ assert (true);
+ }
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java
index 5f4f737..a5c5cf8 100644
--- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java
@@ -2,38 +2,39 @@
* =============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.rest;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -42,11 +43,31 @@ import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
-import org.onap.ccsdk.dashboard.model.CloudifyErrorCause;
+import org.onap.ccsdk.dashboard.model.CloudifyBlueprint;
+import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeployment;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest;
+import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse;
import org.onap.ccsdk.dashboard.model.CloudifyEvent;
import org.onap.ccsdk.dashboard.model.CloudifyEventList;
import org.onap.ccsdk.dashboard.model.CloudifyEventList.Metadata;
+import org.onap.ccsdk.dashboard.model.CloudifyExecution;
+import org.onap.ccsdk.dashboard.model.CloudifyExecutionList;
+import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeId;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeIdList;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstance;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceId;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList;
+import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList;
import org.onap.ccsdk.dashboard.model.CloudifyTenantList;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
@@ -60,81 +81,396 @@ import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({DashboardProperties.class})
public class CloudifyRestClientImplTest {
- @Mock
- RestTemplate mockRest;
-
- @InjectMocks
- CloudifyRestClientImpl subject =
- new CloudifyRestClientImpl("https://www.orcl.com/v3.1", "", "");
-
- protected final ObjectMapper objectMapper = new ObjectMapper();
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- objectMapper.registerModule(new Jdk8Module());
- }
-
- @Test
- public final void getEventlogsTest() throws JsonParseException, JsonMappingException, IOException {
- String executionId = "123a123a";
- String tenant = "thisTenant";
- List<CloudifyEvent> items = new ArrayList<CloudifyEvent>();
- CloudifyEvent aMockEvent = new CloudifyEvent("dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02",
- null, "workflow_succeeded", "5f8a2e05-e187-4925-90de-ece9160aa517", "warning", "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4",
- "install workflow execution succeeded", "publish_l36bhr", "publish", "cloudify.interfaces.lifecycle.create",
- "2019-02-28T23:17:49.228Z", "2019-02-28T23:17:49.700Z", "cloudify_event", "install");
- items.add(aMockEvent);
- items.add(
- new CloudifyEvent("dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02",
- null, "workflow_node_event", "5f8a2e05-e187-4925-90de-ece9160aa517", "warning", "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4",
- "Starting node", "publish_l36bhr", "publish", "cloudify.interfaces.lifecycle.create",
- "2019-02-28T23:17:48.391Z", "2019-02-28T23:17:48.516Z", "cloudify_event", "install"));
-
- String metaInfo = "metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}";
- Metadata metadata = null;
- //metadata = objectMapper.readValue(metaInfo, Metadata.class);
-
- CloudifyEventList expected = new CloudifyEventList(items, metadata);
-
- ResponseEntity<CloudifyEventList> response = new ResponseEntity<CloudifyEventList>(expected, HttpStatus.OK);
- Mockito.when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
- Matchers.<ParameterizedTypeReference<CloudifyEventList>>any())).thenReturn(response);
- CloudifyEventList actual = subject.getEventlogs(executionId, tenant);
-
- assertTrue(actual.items.size() == 2);
-
- }
- @Test
- public final void testGetTenants_GetData() {
- // define the entity you want the exchange to return
- String tenantsList = "{\"items\": [{\"id\": 1, \"dName\": null, \"name\": \"default_tenant\"}, {\"id\": 2, \"dName\": null, \"name\": \"dyh1b1902\"}], \"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}";
- CloudifyTenantList sampleData = null;
- try {
- sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class);
- } catch (Exception e) {
- }
-
- ResponseEntity<CloudifyTenantList> response = new ResponseEntity<CloudifyTenantList>(sampleData, HttpStatus.OK);
- Mockito.when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
- Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any())).thenReturn(response);
-
- CloudifyTenantList res = subject.getTenants();
- assertNotNull(res);
- assertThat(res.items.get(1).name, is("dyh1b1902"));
- // Assert.assertEquals(myobjectA, res.get(0));
- }
-
- @Test(expected = RestClientException.class)
- public final void testGetTenants_withException() {
- // define the entity you want the exchange to return
- Mockito.when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
- Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any())).thenThrow(RestClientException.class);
-
- subject.getTenants();
-
-
- }
+ @Mock
+ RestTemplate mockRest;
+
+ @InjectMocks
+ CloudifyRestClientImpl subject = new CloudifyRestClientImpl();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ PowerMockito.mockStatic(DashboardProperties.class);
+ when(DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_URL)).thenReturn("https://orcl.com");
+ this.subject.init();
+ }
+
+ @Test
+ public final void getEventlogsTest()
+ throws JsonParseException, JsonMappingException, IOException {
+ String executionId = "123a123a";
+ String tenant = "thisTenant";
+ List<CloudifyEvent> items = new ArrayList<CloudifyEvent>();
+ CloudifyEvent aMockEvent = new CloudifyEvent(
+ "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02",
+ "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", null, "workflow_succeeded",
+ "5f8a2e05-e187-4925-90de-ece9160aa517", "warning",
+ "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4", "install workflow execution succeeded",
+ "publish_l36bhr", "publish", "cloudify.interfaces.lifecycle.create",
+ "2019-02-28T23:17:49.228Z", "2019-02-28T23:17:49.700Z", "cloudify_event", "install");
+ items.add(aMockEvent);
+ items.add(new CloudifyEvent("dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02",
+ "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", null, "workflow_node_event",
+ "5f8a2e05-e187-4925-90de-ece9160aa517", "warning",
+ "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4", "Starting node", "publish_l36bhr",
+ "publish", "cloudify.interfaces.lifecycle.create", "2019-02-28T23:17:48.391Z",
+ "2019-02-28T23:17:48.516Z", "cloudify_event", "install"));
+
+ String metaInfo =
+ "metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}";
+ Metadata metadata = null;
+
+ CloudifyEventList expected = new CloudifyEventList(items, metadata);
+
+ ResponseEntity<CloudifyEventList> response =
+ new ResponseEntity<CloudifyEventList>(expected, HttpStatus.OK);
+ Mockito
+ .when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyEventList>>any()))
+ .thenReturn(response);
+ CloudifyEventList actual = subject.getEventlogs(executionId, tenant);
+ assertTrue(actual.items.size() == 2);
+
+ }
+
+ @Test
+ public final void testGetTenants_GetData() {
+ // define the entity you want the exchange to return
+ String tenantsList =
+ "{\"items\": [{\"id\": 1, \"dName\": null, \"name\": \"default_tenant\"}, {\"id\": 2, \"dName\": null, \"name\": \"dyh1b1902\"}], \"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}";
+ CloudifyTenantList sampleData = null;
+ try {
+ sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class);
+ } catch (Exception e) {
+ }
+
+ ResponseEntity<CloudifyTenantList> response =
+ new ResponseEntity<CloudifyTenantList>(sampleData, HttpStatus.OK);
+ Mockito
+ .when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any()))
+ .thenReturn(response);
+
+ CloudifyTenantList res = subject.getTenants();
+ assertNotNull(res);
+ assertThat(res.items.get(1).name, is("dyh1b1902"));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test(expected = RestClientException.class)
+ public final void testGetTenants_withException() {
+ // define the entity you want the exchange to return
+ Mockito
+ .when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any()))
+ .thenThrow(RestClientException.class);
+ subject.getTenants();
+ }
+
+ @Test
+ public final void testGetNodeInstanceId() {
+ CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1");
+ List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>();
+ cfyNodeInstItems.add(cfyNodeInst);
+ CloudifyNodeInstanceIdList cfyNodeInstList =
+ new CloudifyNodeInstanceIdList(cfyNodeInstItems, null);
+
+ ResponseEntity<CloudifyNodeInstanceIdList> response =
+ new ResponseEntity<CloudifyNodeInstanceIdList>(cfyNodeInstList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceIdList>>any()))
+ .thenReturn(response);
+
+ CloudifyNodeInstanceIdList actualResult =
+ subject.getNodeInstanceId("deploymentId", "nodeId", "tenant");
+ assertTrue(actualResult.items.get(0).id.equals("node_instance_id1"));
+ }
+
+ @Test
+ public final void testGetNodeInstanceVersion() {
+ CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null);
+
+ List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>();
+ cfyNodeInstanceItems.add(cfyNodeInstance);
+
+ CloudifyNodeInstanceList cfyNodeInstList =
+ new CloudifyNodeInstanceList(cfyNodeInstanceItems, null);
+
+ ResponseEntity<CloudifyNodeInstanceList> response =
+ new ResponseEntity<CloudifyNodeInstanceList>(cfyNodeInstList, HttpStatus.OK);
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceList>>any()))
+ .thenReturn(response);
+
+ CloudifyNodeInstanceList actualResult =
+ subject.getNodeInstanceVersion("deploymentId", "nodeId", "tenant");
+ assertTrue(actualResult.items.get(0).id.equals("id1"));
+ }
+
+ @Test
+ public final void testGetNodeInstanceVersion_blueprint() {
+ CloudifyNodeId cfyNodeId = new CloudifyNodeId("node_id");
+ List<CloudifyNodeId> cfyNodeIdItems = new ArrayList<CloudifyNodeId>();
+ cfyNodeIdItems.add(cfyNodeId);
+ CloudifyNodeIdList cfyNodeIdList = new CloudifyNodeIdList(cfyNodeIdItems, null);
+
+ ResponseEntity<CloudifyNodeIdList> response1 =
+ new ResponseEntity<CloudifyNodeIdList>(cfyNodeIdList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("nodes"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyNodeIdList>>any())).thenReturn(response1);
+
+ CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null);
+
+ List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>();
+ cfyNodeInstanceItems.add(cfyNodeInstance);
+
+ CloudifyNodeInstanceList cfyNodeInstList =
+ new CloudifyNodeInstanceList(cfyNodeInstanceItems, null);
+
+ ResponseEntity<CloudifyNodeInstanceList> response2 =
+ new ResponseEntity<CloudifyNodeInstanceList>(cfyNodeInstList, HttpStatus.OK);
+ when(mockRest.exchange(Matchers.contains("node-instances"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceList>>any()))
+ .thenReturn(response2);
+
+ CloudifyNodeInstanceList actualResult =
+ subject.getNodeInstanceVersion("blueprintId", "tenant");
+ assertTrue(actualResult.items.get(0).id.equals("id1"));
+ }
+
+ @Test
+ public final void testGetNodeInstanceId_blueprint() {
+ CloudifyNodeId cfyNodeId = new CloudifyNodeId("node_id");
+ List<CloudifyNodeId> cfyNodeIdItems = new ArrayList<CloudifyNodeId>();
+ cfyNodeIdItems.add(cfyNodeId);
+ CloudifyNodeIdList cfyNodeIdList = new CloudifyNodeIdList(cfyNodeIdItems, null);
+
+ ResponseEntity<CloudifyNodeIdList> response1 =
+ new ResponseEntity<CloudifyNodeIdList>(cfyNodeIdList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("nodes"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyNodeIdList>>any())).thenReturn(response1);
+
+ CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1");
+ List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>();
+ cfyNodeInstItems.add(cfyNodeInst);
+ CloudifyNodeInstanceIdList cfyNodeInstList =
+ new CloudifyNodeInstanceIdList(cfyNodeInstItems, null);
+
+ ResponseEntity<CloudifyNodeInstanceIdList> response =
+ new ResponseEntity<CloudifyNodeInstanceIdList>(cfyNodeInstList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("node-instances"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceIdList>>any()))
+ .thenReturn(response);
+
+ CloudifyNodeInstanceIdList actualResult = subject.getNodeInstanceId("bpId", "tenant");
+ assertTrue(actualResult.items.get(0).id.equals("node_instance_id1"));
+ }
+
+ @Test
+ public final void testGetTenantInfoFromDeploy() {
+
+ CloudifyDeployedTenant cldDeplTenant = new CloudifyDeployedTenant("id1", "bp1", "tenant1");
+ List<CloudifyDeployedTenant> cldDeplTenantItems = new ArrayList<CloudifyDeployedTenant>();
+ cldDeplTenantItems.add(cldDeplTenant);
+ CloudifyDeployedTenantList cldDeployedTenantList =
+ new CloudifyDeployedTenantList(cldDeplTenantItems, null);
+
+ ResponseEntity<CloudifyDeployedTenantList> response =
+ new ResponseEntity<CloudifyDeployedTenantList>(cldDeployedTenantList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("deployments"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyDeployedTenantList>>any()))
+ .thenReturn(response);
+
+ CloudifyDeployedTenantList actualResults = subject.getTenantInfoFromDeploy("tenant1");
+ assertTrue(actualResults.items.get(0).blueprint_id.equals("bp1"));
+ }
+
+ @Test
+ public void testGetExecutions() {
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ ResponseEntity<CloudifyExecutionList> response =
+ new ResponseEntity<CloudifyExecutionList>(cloudifyExecutionList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("deployment_id"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyExecutionList>>any()))
+ .thenReturn(response);
+
+ CloudifyExecutionList actualResult = subject.getExecutions("deploymentId1", "tenant1");
+ assertTrue(actualResult.items.get(0).id.contains("id1"));
+ }
+
+ @Test
+ public void testGetExecutionsSummary() {
+ CloudifyExecution cldExecution =
+ new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1",
+ "tenant1", "error", "execution_id1", null, false, false);
+
+ List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>();
+
+ cldExecutionList.add(cldExecution);
+
+ CloudifyExecutionList cloudifyExecutionList =
+ new CloudifyExecutionList(cldExecutionList, null);
+
+ ResponseEntity<CloudifyExecutionList> response =
+ new ResponseEntity<CloudifyExecutionList>(cloudifyExecutionList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("include"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<CloudifyExecutionList>>any()))
+ .thenReturn(response);
+
+ CloudifyExecutionList actualResult =
+ subject.getExecutionsSummary("deploymentId1", "tenant1");
+ assertTrue(actualResult.items.get(0).id.contains("id1"));
+ }
+
+ @Test
+ public void testStartExecution() {
+ CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install",
+ false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false);
+
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("key1", "value1");
+
+ CloudifyExecutionRequest cfyExecReq = new CloudifyExecutionRequest("deployment_id",
+ "upgrade", false, false, "tenant1", params);
+
+ when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(),
+ Matchers.<Class<CloudifyExecution>>any())).thenReturn(cfyExecObj);
+
+ CloudifyExecution actualResult = subject.startExecution(cfyExecReq);
+ assertTrue(actualResult.status.equals("successful"));
+ }
+
+ @Test
+ public void testUpdateDeployment() {
+ CloudifyDeploymentUpdateRequest cfyDeployUpdateReq =
+ new CloudifyDeploymentUpdateRequest("deployment_id", "update", false, false,
+ "node_instance_id1", "4", "1000", "image", 2, "my_container");
+
+ CloudifyDeploymentUpdateResponse cfyDeployUpdateResp = new CloudifyDeploymentUpdateResponse(
+ "terminated", "created_at", "update", false, "blueprint_id", "deployment_id", "", "id1",
+ null, "tenant1", "junit", false, "resource_availability");
+
+ when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(),
+ Matchers.<Class<CloudifyDeploymentUpdateResponse>>any()))
+ .thenReturn(cfyDeployUpdateResp);
+
+ CloudifyDeploymentUpdateResponse actualResult =
+ subject.updateDeployment(cfyDeployUpdateReq);
+ assertTrue(actualResult.status.equals("terminated"));
+ }
+
+ @Test
+ @Ignore
+ public void testCancelExecution() {
+ CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install",
+ false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false);
+
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put("key1", "value1");
+
+ ResponseEntity<CloudifyExecution> response =
+ new ResponseEntity<CloudifyExecution>(cfyExecObj, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("executions"), Matchers.eq(HttpMethod.POST),
+ Matchers.<HttpEntity<?>>any(), Matchers.<Class<CloudifyExecution>>any()))
+ .thenReturn(response);
+
+ Map<String, String> parameters = new HashMap<String, String>();
+ parameters.put("key1", "value1");
+
+ CloudifyExecution actualResult =
+ subject.cancelExecution("executionId", parameters, "tenant");
+ assertTrue(actualResult.id.equals("execution_id1"));
+ }
+
+ @Test
+ @Ignore
+ public void testGetBlueprint() {
+ CloudifyBlueprint cldBp =
+ new CloudifyBlueprint("file1", "description1", "343242", "3423423", "id1", null);
+
+ List<CloudifyBlueprint> items = new ArrayList<CloudifyBlueprint>();
+ items.add(cldBp);
+
+ CloudifyBlueprintList.Metadata.Pagination pageObj =
+ new CloudifyBlueprintList.Metadata.Pagination(1, 0, 1);
+
+ CloudifyBlueprintList.Metadata metadata = new CloudifyBlueprintList.Metadata(pageObj);
+
+ CloudifyBlueprintList cldBpList = new CloudifyBlueprintList(items, metadata);
+
+ ResponseEntity<CloudifyBlueprintList> response =
+ new ResponseEntity<CloudifyBlueprintList>(cldBpList, HttpStatus.OK);
+
+ doReturn(response).when(mockRest).exchange(Matchers.anyString(),
+ Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(),
+ Matchers.<Class<CloudifyBlueprintList>>any());
+
+ CloudifyBlueprintList actualResult = subject.getBlueprint("id1", "tenant1");
+ assertTrue(actualResult.items.get(0).id.equals("id1"));
+ }
+
+ @Test
+ @Ignore
+ public void testGetDeployments() {
+
+ CloudifyDeployment cldDeployment = new CloudifyDeployment("description", "blueprint_id",
+ "created_at", "updated_at", "id", null, null, null, null, null, null, null, "tenant");
+
+ List<CloudifyDeployment> cfyDeployItems = new ArrayList<CloudifyDeployment>();
+ cfyDeployItems.add(cldDeployment);
+
+ CloudifyDeploymentList.Metadata.Pagination pageObj =
+ new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1);
+ CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj);
+
+ CloudifyDeploymentList cldDeployList = new CloudifyDeploymentList(cfyDeployItems, metadata);
+
+ ResponseEntity<CloudifyDeploymentList> response =
+ new ResponseEntity<CloudifyDeploymentList>(cldDeployList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.contains("deploy"), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(), Matchers.<Class<CloudifyDeploymentList>>any()))
+ .thenReturn(response);
+
+ CloudifyDeploymentList actualResult = subject.getDeployments();
+ assertTrue(actualResult.items.get(0).id.equals("id"));
+ }
}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java
new file mode 100644
index 0000000..f90afa9
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * =============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.rest;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONObject;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.model.ConsulDatacenter;
+import org.onap.ccsdk.dashboard.model.ConsulNodeInfo;
+import org.onap.ccsdk.dashboard.model.ConsulServiceHealth;
+import org.onap.ccsdk.dashboard.model.ConsulServiceInfo;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({DashboardProperties.class})
+public class ConsulRestClientImplTest {
+
+ @Mock
+ RestTemplate mockRest;
+
+ @InjectMocks
+ ConsulRestClientImpl subject = new ConsulRestClientImpl();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+ HttpClientErrorException httpException;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ httpException = new HttpClientErrorException(HttpStatus.BAD_REQUEST, "statusText");
+ PowerMockito.mockStatic(DashboardProperties.class);
+ when(DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_CONSUL_URL)).thenReturn("https://invt.com");
+ this.subject.init();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public final void testGetServiceHealth() {
+ ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00",
+ "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing",
+ "This is a pgaas1_Service_ID health check",
+ "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n",
+ "pgaas1_Service_ID", "pgaasServer1", 190199, 199395);
+
+ List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>();
+ expectedCnslSrvcHlth.add(consulSrvcHlth);
+
+ ResponseEntity<List<ConsulServiceHealth>> response =
+ new ResponseEntity<List<ConsulServiceHealth>>(expectedCnslSrvcHlth, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<List<ConsulServiceHealth>>>any()))
+ .thenReturn(response);
+
+ List<ConsulServiceHealth> actualCnslSrvcHlth = subject.getServiceHealth("dc1", "srvc1");
+ assertTrue(actualCnslSrvcHlth.get(0).node.equals("cjlvmcnsl00"));
+ }
+
+ @Test
+ @Ignore
+ public final void testGetServices() {
+ List<String> srvcIps = new ArrayList<String>();
+ srvcIps.add("135.91.224.136");
+ srvcIps.add("135.91.224.138");
+ ConsulServiceInfo consulSrvcInfo = new ConsulServiceInfo("pgaasServer1", srvcIps);
+
+ List<ConsulServiceInfo> expectedCnslSrvcs = new ArrayList<ConsulServiceInfo>();
+ expectedCnslSrvcs.add(consulSrvcInfo);
+
+ // ResponseEntity<Map<String, Object>> response = new ResponseEntity<Map<String,
+ // Object>>(consulSrvcInfo);
+
+ subject.getServices("dc1");
+ }
+
+ @Test
+ public final void testGetNodes() {
+ ConsulNodeInfo cnslNode = new ConsulNodeInfo("a2788806-6e2e-423e-8ee7-6cad6f3d3de6",
+ "cjlvmcnsl00", "10.170.8.13", null, null, 6, 17980);
+
+ List<ConsulNodeInfo> cnslNodeList = new ArrayList<ConsulNodeInfo>();
+ cnslNodeList.add(cnslNode);
+
+ ResponseEntity<List<ConsulNodeInfo>> response =
+ new ResponseEntity<List<ConsulNodeInfo>>(cnslNodeList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<List<ConsulNodeInfo>>>any())).thenReturn(response);
+
+ List<ConsulNodeInfo> actualNodeList = subject.getNodes("dc1");
+ assertTrue(actualNodeList.get(0).node.equals("cjlvmcnsl00"));
+
+ }
+
+ @Test
+ public final void testGetNodeServicesHealth() {
+ ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00",
+ "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing",
+ "This is a pgaas1_Service_ID health check",
+ "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n",
+ "pgaas1_Service_ID", "pgaasServer1", 190199, 199395);
+
+ List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>();
+ expectedCnslSrvcHlth.add(consulSrvcHlth);
+
+ ResponseEntity<List<ConsulServiceHealth>> response =
+ new ResponseEntity<List<ConsulServiceHealth>>(expectedCnslSrvcHlth, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<List<ConsulServiceHealth>>>any()))
+ .thenReturn(response);
+
+ List<ConsulServiceHealth> actualNodeHlthList =
+ subject.getNodeServicesHealth("dc1", "nodeId1");
+ assertTrue(actualNodeHlthList.get(0).node.equals("cjlvmcnsl00"));
+ }
+
+ @Test
+ public final void testGetDatacenters() {
+ ConsulDatacenter cnslDc = new ConsulDatacenter("dc1");
+
+ List<ConsulDatacenter> cnslDcList = new ArrayList<ConsulDatacenter>();
+ cnslDcList.add(cnslDc);
+ List<String> dcItems = new ArrayList<String>();
+ dcItems.add("dc1");
+
+ ResponseEntity<List<String>> response =
+ new ResponseEntity<List<String>>(dcItems, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<List<String>>>any())).thenReturn(response);
+ List<ConsulDatacenter> actualDcList = subject.getDatacenters();
+ assertTrue(actualDcList.get(0).name.equals("dc1"));
+ }
+
+ @Test
+ @Ignore
+ public final void testRegisterService() {
+ fail("Not yet implemented"); // TODO
+ }
+
+ @Test
+ public final void testDeregisterService() {
+
+ JSONObject jsonResp = new JSONObject();
+
+ ResponseEntity<JSONObject> result = new ResponseEntity<JSONObject>(jsonResp, HttpStatus.OK);
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<JSONObject>>any()))
+ .thenReturn(result);
+
+ int actualCode = subject.deregisterService("service1");
+ assertTrue(actualCode == 200);
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java
new file mode 100644
index 0000000..7bd085b
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * =============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.rest;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.stream.Stream;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.onap.ccsdk.dashboard.exceptions.BadRequestException;
+import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException;
+import org.onap.ccsdk.dashboard.exceptions.DownstreamException;
+import org.onap.ccsdk.dashboard.exceptions.ServerErrorException;
+import org.onap.ccsdk.dashboard.exceptions.ServiceAlreadyExistsException;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentLink;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponseLinks;
+import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentsListResponse;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.HttpServerErrorException;
+import org.springframework.web.client.RestTemplate;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({DashboardProperties.class})
+public class DeploymentHandlerClientImplTest {
+
+ @Mock
+ RestTemplate mockRest;
+
+ @InjectMocks
+ DeploymentHandlerClientImpl subject;
+
+ @Before
+ public void setUp() throws Exception {
+ PowerMockito.mockStatic(DashboardProperties.class);
+ when(DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_DHANDLER_URL)).thenReturn("https://dplh.com");
+ this.subject.init();
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public final void testGetDeployments() {
+ Collection<DeploymentLink> expectedDeplRefs = new ArrayList<DeploymentLink>();
+ expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl1"));
+ expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl11"));
+
+ DeploymentsListResponse expectedDeplList =
+ new DeploymentsListResponse("req1", expectedDeplRefs);
+
+ ResponseEntity<DeploymentsListResponse> response =
+ new ResponseEntity<DeploymentsListResponse>(expectedDeplList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentsListResponse>>any()))
+ .thenReturn(response);
+
+ Stream<DeploymentLink> actualResult = subject.getDeployments();
+ assertTrue(actualResult.findFirst().get().getHref().contains("dpl1"));
+ }
+
+ @Test
+ public final void testGetDeploymentsString() {
+ Collection<DeploymentLink> expectedDeplRefs = new ArrayList<DeploymentLink>();
+ expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl1"));
+ expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl11"));
+
+ DeploymentsListResponse expectedDeplList =
+ new DeploymentsListResponse("req1", expectedDeplRefs);
+
+ ResponseEntity<DeploymentsListResponse> response =
+ new ResponseEntity<DeploymentsListResponse>(expectedDeplList, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentsListResponse>>any()))
+ .thenReturn(response);
+
+ Stream<DeploymentLink> actualResult = subject.getDeployments("serviceTypeId");
+ assertTrue(actualResult.findFirst().get().getHref().contains("dpl1"));
+ }
+
+ @Test
+ public final void testPutDeployment() throws Exception {
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ DeploymentResponseLinks newDeplItemLink =
+ new DeploymentResponseLinks("selfUrl", "statusUrl");
+ DeploymentResponse expectedDeplItem = new DeploymentResponse("req1", newDeplItemLink);
+
+ ResponseEntity<DeploymentResponse> response =
+ new ResponseEntity<DeploymentResponse>(expectedDeplItem, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())).thenReturn(response);
+
+ DeploymentResponse actualResponse = subject.putDeployment("dpl12", "tenant12", deplReq);
+ assertTrue(actualResponse.getRequestId().equals("req1"));
+ }
+
+ @Test(expected = DownstreamException.class)
+ public final void testPutDeployment_downstreamError() throws Exception {
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.BAD_GATEWAY, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.putDeployment("dpl12", "tenant12", deplReq);
+ }
+
+ @Test(expected = BadRequestException.class)
+ public final void testPutDeployment_badReqError() throws Exception {
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpClientErrorException httpException =
+ new HttpClientErrorException(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.putDeployment("dpl12", "tenant12", deplReq);
+ }
+
+ @Test(expected = ServiceAlreadyExistsException.class)
+ public final void testPutDeployment_srvcExistError() throws Exception {
+
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpClientErrorException httpException =
+ new HttpClientErrorException(HttpStatus.CONFLICT, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.putDeployment("dpl12", "tenant12", deplReq);
+ }
+
+ @Test(expected = ServerErrorException.class)
+ public final void testPutDeployment_srvcError() throws Exception {
+
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.putDeployment("dpl12", "tenant12", deplReq);
+ }
+
+ @Test
+ public final void testUpdateDeployment() throws Exception {
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ DeploymentResponseLinks newDeplItemLink =
+ new DeploymentResponseLinks("selfUrl", "statusUrl");
+ DeploymentResponse expectedDeplItem = new DeploymentResponse("req1", newDeplItemLink);
+
+ ResponseEntity<DeploymentResponse> response =
+ new ResponseEntity<DeploymentResponse>(expectedDeplItem, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())).thenReturn(response);
+
+ DeploymentResponse actualResponse = subject.updateDeployment("dpl12", "tenant12", deplReq);
+ assertTrue(actualResponse.getRequestId().equals("req1"));
+ }
+
+ @Test(expected = DownstreamException.class)
+ public final void testUpdateDeployment_downstreamError() throws Exception {
+
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.BAD_GATEWAY, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.updateDeployment("dpl12", "tenant12", deplReq);
+
+ }
+
+ @Test(expected = BadRequestException.class)
+ public final void testUpdateDeployment_badReqError() throws Exception {
+
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpClientErrorException httpException =
+ new HttpClientErrorException(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.updateDeployment("dpl12", "tenant12", deplReq);
+
+ }
+
+ @Test(expected = ServiceAlreadyExistsException.class)
+ public final void testUpdateDeployment_srvcExistError() throws Exception {
+
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpClientErrorException httpException =
+ new HttpClientErrorException(HttpStatus.CONFLICT, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.updateDeployment("dpl12", "tenant12", deplReq);
+
+ }
+
+ @Test(expected = ServerErrorException.class)
+ public final void testUpdateDeployment_srvcError() throws Exception {
+
+ DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null);
+
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.updateDeployment("dpl12", "tenant12", deplReq);
+
+ }
+
+ @Test
+ public final void testDeleteDeployment() throws Exception {
+ DeploymentResponseLinks newDeplItemLink =
+ new DeploymentResponseLinks("selfUrl", "statusUrl");
+ DeploymentResponse expectedDeplItem = new DeploymentResponse("req1", newDeplItemLink);
+
+ ResponseEntity<DeploymentResponse> response =
+ new ResponseEntity<DeploymentResponse>(expectedDeplItem, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())).thenReturn(response);
+
+ subject.deleteDeployment("deploymentId", "tenant");
+ }
+
+ @Test(expected = ServerErrorException.class)
+ public final void testDeleteDeployment_serverError() throws Exception {
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.deleteDeployment("deploymentId", "tenant");
+ }
+
+ @Test(expected = DeploymentNotFoundException.class)
+ public final void testDeleteDeployment_notFoundError() throws Exception {
+
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.NOT_FOUND, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.deleteDeployment("deploymentId", "tenant");
+ }
+
+ @Test(expected = BadRequestException.class)
+ public final void testDeleteDeployment_badReqError() throws Exception {
+
+ HttpClientErrorException httpException =
+ new HttpClientErrorException(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.deleteDeployment("deploymentId", "tenant");
+ }
+
+ @Test(expected = DownstreamException.class)
+ public final void testDeleteDeployment_downstreamError() throws Exception {
+
+ HttpServerErrorException httpException =
+ new HttpServerErrorException(HttpStatus.BAD_GATEWAY, "statusText");
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<DeploymentResponse>>any()))
+ .thenThrow(httpException);
+
+ subject.deleteDeployment("deploymentId", "tenant");
+ }
+
+}
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java
new file mode 100644
index 0000000..d4c5e14
--- /dev/null
+++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java
@@ -0,0 +1,361 @@
+/*******************************************************************************
+ * =============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.rest;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.onap.ccsdk.dashboard.model.inventory.ApiResponseMessage;
+import org.onap.ccsdk.dashboard.model.inventory.Service;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceList;
+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.ServiceTypeList;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams;
+import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest;
+import org.onap.ccsdk.dashboard.util.DashboardProperties;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({DashboardProperties.class})
+public class RestInventoryClientImplTest {
+
+ @Mock
+ RestTemplate mockRest;
+
+ @InjectMocks
+ RestInventoryClientImpl subject = new RestInventoryClientImpl();
+
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ ServiceList deplList = null;
+ ServiceList deplListNext = null;
+ Service deplItem = null;
+
+ ServiceType bpItem = null;
+ ServiceTypeList bpList = null;
+ ServiceTypeList bpListNext = null;
+
+ ServiceTypeRequest bpUploadItem = null;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ objectMapper.registerModule(new Jdk8Module());
+ getExpectedBueprints();
+ getExpectedDeployments();
+ PowerMockito.mockStatic(DashboardProperties.class);
+ when(DashboardProperties.getControllerProperty("dev",
+ DashboardProperties.CONTROLLER_SUBKEY_INVENTORY_URL)).thenReturn("https://invt.com");
+ this.subject.init();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ public void getExpectedDeployments()
+ throws JsonParseException, JsonMappingException, IOException {
+ deplItem = new Service("dcae_dtiapi_1902", null, "1552335532348", "1552335532348", null,
+ "dummyVnfId", null, "dummyVnfType", "dummyLocation", "dcae_dtiapi_1902", null);
+ Collection<Service> items = new ArrayList<Service>();
+ items.add(deplItem);
+
+ String pageLinks =
+ "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}";
+ String pageLinks2 = "{\"previousLink\":null,\"nextLink\":null}";
+
+ ServiceList.PaginationLinks paginationLinks =
+ objectMapper.readValue(pageLinks, ServiceList.PaginationLinks.class);
+ ServiceList.PaginationLinks paginationLinks2 =
+ objectMapper.readValue(pageLinks2, ServiceList.PaginationLinks.class);
+
+ int totalCount = 2;
+ deplList = new ServiceList(items, totalCount, paginationLinks);
+ deplListNext = new ServiceList(items, totalCount, paginationLinks2);
+ }
+
+ public void getExpectedBueprints()
+ throws JsonParseException, JsonMappingException, IOException {
+ bpItem = new ServiceType.Builder("xyz1731", "xyz1731-helm-1906", 1906,
+ "tosca_definitions_version: cloudify_dsl_1_3", "", "app1", "comp1").build();
+ Collection<ServiceType> items = new ArrayList<ServiceType>();
+ items.add(bpItem);
+
+ String pageLinks =
+ "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}";
+ String pageLinks2 = "{\"previousLink\":null,\"nextLink\":null}";
+ ServiceTypeList.PaginationLinks paginationLinks =
+ objectMapper.readValue(pageLinks, ServiceTypeList.PaginationLinks.class);
+ ServiceTypeList.PaginationLinks paginationLinks2 =
+ objectMapper.readValue(pageLinks2, ServiceTypeList.PaginationLinks.class);
+
+ int totalCount = 2;
+ bpList = new ServiceTypeList(items, totalCount, paginationLinks);
+ bpListNext = new ServiceTypeList(items, totalCount, paginationLinks2);
+ }
+
+ @Test
+ @Ignore
+ public final void testInit() {
+ fail("Not yet implemented"); // TODO
+ }
+
+ @Test
+ public final void testGetServiceTypes() {
+ /*
+ * String serviceTypeStr =
+ * "{\"paginationLinks\":{\"previousLink\":null,\"nextLink\":null}},\"totalCount\":32,\"items\":[{\"owner\":\"xyz1731\",\"typeName\":\"xyz1731-helm-1906\",\"typeVersion\":1906,\"blueprintTemplate\":\"tosca_definitions_version: cloudify_dsl_1_3\\nimports:\\n - http://www.getcloudify.org/spec/cloudify/4.2/types.yaml\\n - http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/helm/3.0.1/helm-type.yaml\\ninputs:\\n deployment-description:\\n default: ''\\n chart-name:\\n default: ''\\n tiller-server:\\n default: ''\\n tiller-server-port:\\n default: ''\\n namespace:\\n default: ''\\n chart-repo-url:\\n default: http://32.68.14.161/charts\\n chart-version :\\n default: ''\\n config-url:\\n default: ''\\n config-format:\\n default: ''\\n tls-enable:\\n description: enable helm TSL\\n type: boolean\\n default: false\\n config-dir:\\n description: config dir\\n type: string\\n default: '/opt/manager/resources/'\\n stable-repo-url:\\n description: URL for stable repository\\n type: string\\n default: 'http://32.68.14.161/stable'\\nnode_templates:\\n ecompcomponent:\\n type: onap.nodes.component\\n properties:\\n tiller-server-ip: { get_input: tiller-server }\\n tiller-server-port: { get_input: tiller-server-port }\\n component-name: { get_input: chart-name }\\n chart-repo-url: { concat: [ 'http://', { get_secret: controller_helm_user }, ':', { get_secret: controller_helm_password }, '@', { get_input: chart-repo-url } ] }\\n chart-version: { get_input: chart-version }\\n namespace: { get_input: namespace }\\n config-url: { concat: [ 'http://', { get_secret: controller_helm_user }, ':', { get_secret: controller_helm_password }, '@', { get_input: config-url } ] }\\n config-format: { get_input: config-format}\\n tls-enable: { get_input: tls-enable}\\n ca: { get_secret: ca_value}\\n cert: { get_secret: cert_value}\\n key: { get_secret: key_value}\\n config-dir: { get_input: config-dir}\\n stable-repo-url: { concat: [ 'http://', { get_secret: controller_helm_user }, ':', { get_secret: controller_helm_password }, '@', { get_input: stable-repo-url } ] }\\noutputs:\\n ecompcomponent-helm-output:\\n description: helm value and helm history\\n value:\\n helm-value: { get_attribute: [ecompcomponent, current-helm-value] }\\n helm-history: { get_attribute: [ecompcomponent, helm-history] }\",\"serviceIds\":[],\"vnfTypes\":[],\"serviceLocations\":[],\"asdcServiceId\":\"\",\"asdcResourceId\":\"\",\"asdcServiceURL\":null,\"application\":\"ECOMP\",\"component\":\"controller\",\"typeId\":\"72b8577a-5043-43ab-9aa5-6808b8f53967\",\"selfLink\":{\"rel\":\"self\",\"href\":\"https://ecompc-invt-dev-s5.ecomp.idns.cip.att.com:30123/dcae-service-types/72b8577a-5043-43ab-9aa5-6808b8f53967\"},\"created\":1551214264536,\"deactivated\":null}]"
+ * ; ServiceTypeList sampleData = null; try { sampleData =
+ * objectMapper.readValue(serviceTypeStr, ServiceTypeList.class); } catch
+ * (Exception e) { }
+ */
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> expectedResult = items.stream();
+
+ ResponseEntity<ServiceTypeList> response =
+ new ResponseEntity<ServiceTypeList>(bpList, HttpStatus.OK);
+
+ ResponseEntity<ServiceTypeList> response2 =
+ new ResponseEntity<ServiceTypeList>(bpListNext, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<ServiceTypeList>>any())).thenReturn(response)
+ .thenReturn(response2);
+
+ Stream<ServiceType> actualResult = subject.getServiceTypes();
+ assertNotNull(actualResult);
+ assertTrue(expectedResult.count() == actualResult.count());
+ }
+
+ @Test
+ public final void testGetServiceTypesServiceTypeQueryParams() {
+ ServiceTypeQueryParams qryParms = new ServiceTypeQueryParams.Builder()
+ .asdcResourceId("asdcResourceId").asdcServiceId("asdcServiceId").onlyActive(true)
+ .onlyLatest(false).serviceId("serviceId").serviceLocation("serviceLocation")
+ .typeName("typeName").vnfType("vnfType").build();
+ Collection<ServiceType> items = bpList.items;
+ Stream<ServiceType> expectedResult = items.stream();
+
+ ResponseEntity<ServiceTypeList> response =
+ new ResponseEntity<ServiceTypeList>(bpList, HttpStatus.OK);
+
+ ResponseEntity<ServiceTypeList> response2 =
+ new ResponseEntity<ServiceTypeList>(bpListNext, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<ServiceTypeList>>any())).thenReturn(response)
+ .thenReturn(response2);
+
+ Stream<ServiceType> actualResult = subject.getServiceTypes(qryParms);
+ assertNotNull(actualResult);
+ assertTrue(expectedResult.count() == actualResult.count());
+ }
+
+ @Test
+ public final void testGetServiceType() {
+ Optional<ServiceType> expectedResult = Optional.of(bpItem);
+
+ ResponseEntity<ServiceType> response =
+ new ResponseEntity<ServiceType>(bpItem, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceType>>any()))
+ .thenReturn(response);
+
+ Optional<ServiceType> actualResult = subject.getServiceType("432432423");
+ assertTrue(expectedResult.get().getTypeName().equals(actualResult.get().getTypeName()));
+ }
+
+ @Test
+ public final void testAddServiceTypeServiceType() {
+
+ when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(),
+ Matchers.<Class<ServiceType>>any())).thenReturn(bpItem);
+
+ ServiceType actualResult = subject.addServiceType(bpItem);
+ assertTrue(actualResult.getTypeName().contains("xyz"));
+ }
+
+ @Test
+ public final void testAddServiceTypeServiceTypeRequest() {
+ ServiceTypeRequest srvcReq = ServiceTypeRequest.from(bpItem);
+
+ when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(),
+ Matchers.<Class<ServiceType>>any())).thenReturn(bpItem);
+
+ ServiceType actualResult = subject.addServiceType(srvcReq);
+ assertTrue(actualResult.getTypeName().contains("xyz"));
+ }
+
+ @Test
+ public final void testDeleteServiceType() throws Exception {
+ ResponseEntity<ApiResponseMessage> response =
+ new ResponseEntity<ApiResponseMessage>(HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<ApiResponseMessage>>any())).thenReturn(response);
+
+ subject.deleteServiceType("4243234");
+ }
+
+ @Test
+ public final void testGetServices() {
+
+ Collection<Service> items = deplList.items;
+ Stream<Service> expectedResult = items.stream();
+
+ ResponseEntity<ServiceList> response =
+ new ResponseEntity<ServiceList>(deplList, HttpStatus.OK);
+
+ ResponseEntity<ServiceList> response2 =
+ new ResponseEntity<ServiceList>(deplListNext, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceList>>any()))
+ .thenReturn(response).thenReturn(response2);
+
+ Stream<Service> actualResult = subject.getServices();
+ assertNotNull(actualResult);
+ assertTrue(expectedResult.count() == actualResult.count());
+
+ }
+
+ @Test
+ public final void testGetServicesForType() {
+ ResponseEntity<ServiceList> response =
+ new ResponseEntity<ServiceList>(deplList, HttpStatus.OK);
+
+ ResponseEntity<ServiceList> response2 =
+ new ResponseEntity<ServiceList>(deplListNext, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceList>>any()))
+ .thenReturn(response).thenReturn(response2);
+ ServiceQueryParams qryParms = new ServiceQueryParams.Builder().typeId("typeId").build();
+
+ ServiceRefList actualResult = subject.getServicesForType(qryParms);
+ assertTrue(actualResult.items.size() == 2);
+ ServiceRef actualSrvcItem = (ServiceRef) actualResult.items.toArray()[0];
+ assertTrue(actualSrvcItem.getServiceId().contains("dtiapi"));
+
+ }
+
+ @Test
+ public final void testGetServicesServiceQueryParams() {
+ ServiceQueryParams qryParms = new ServiceQueryParams.Builder().typeId("typeId")
+ .vnfId("vnfId").vnfLocation("vnfLocation").vnfType("vnfType")
+ .componentType("componentType").shareable(false).created("43443423").build();
+
+ Collection<Service> items = deplList.items;
+ Stream<Service> expectedResult = items.stream();
+
+ ResponseEntity<ServiceList> response =
+ new ResponseEntity<ServiceList>(deplList, HttpStatus.OK);
+
+ ResponseEntity<ServiceList> response2 =
+ new ResponseEntity<ServiceList>(deplListNext, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceList>>any()))
+ .thenReturn(response).thenReturn(response2);
+
+ Stream<Service> actualResult = subject.getServices(qryParms);
+ assertTrue(expectedResult.count() == actualResult.count());
+ }
+
+ @Test
+ public final void testGetService() {
+ Optional<Service> expectedResult = Optional.of(deplItem);
+
+ ResponseEntity<Service> response = new ResponseEntity<Service>(deplItem, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<Service>>any()))
+ .thenReturn(response);
+
+ Optional<Service> actualResult = subject.getService("432432423");
+ assertTrue(
+ expectedResult.get().getDeploymentRef().equals(actualResult.get().getDeploymentRef()));
+ }
+
+ @Test
+ public final void testPutService() {
+
+ ResponseEntity<Service> response = new ResponseEntity<Service>(deplItem, HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT),
+ Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<Service>>any()))
+ .thenReturn(response);
+
+ subject.putService("423423", deplItem);
+ }
+
+ @Test
+ public final void testDeleteService() throws Exception {
+ ResponseEntity<ApiResponseMessage> response =
+ new ResponseEntity<ApiResponseMessage>(HttpStatus.OK);
+
+ when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE),
+ Matchers.<HttpEntity<?>>any(),
+ Matchers.<ParameterizedTypeReference<ApiResponseMessage>>any())).thenReturn(response);
+
+ subject.deleteService("4243234");
+ }
+
+}
diff --git a/ccsdk-app-os/src/main/webapp/static/fusion/images/active.png b/ccsdk-app-os/src/main/webapp/static/fusion/images/active.png
new file mode 100644
index 0000000..4524177
--- /dev/null
+++ b/ccsdk-app-os/src/main/webapp/static/fusion/images/active.png
Binary files differ
diff --git a/ccsdk-app-os/src/main/webapp/static/fusion/images/inactive.png b/ccsdk-app-os/src/main/webapp/static/fusion/images/inactive.png
new file mode 100644
index 0000000..e9920bf
--- /dev/null
+++ b/ccsdk-app-os/src/main/webapp/static/fusion/images/inactive.png
Binary files differ
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-health-service.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-health-service.js
index 64618c1..20fe6d3 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-health-service.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-health-service.js
@@ -1,24 +1,3 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.factory('DatacenterHealthService', function ($http, $q, $log) {
return {
/**
@@ -45,7 +24,7 @@ appDS2.factory('DatacenterHealthService', function ($http, $q, $log) {
$log.error('DatacenterService.getDatacentersHealth failed: ' + JSON.stringify(error));
return $q.reject(error.statusText);
});
- }
+ },
};
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-table-controller.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-table-controller.js
index f1c8820..9ac13c2 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-table-controller.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter-table-controller.js
@@ -1,24 +1,3 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.controller('datacenterTableController', function($scope, $log, $modal, DatacenterHealthService) {
'use strict';
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter_table.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter_table.html
index 73a1b82..cb8e95a 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter_table.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/datacenter_table.html
@@ -5,7 +5,7 @@
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
<div class="span" style="margin-bottom:20px;">
- <i class="icon-primary-spinner small" role="img" aria-label="Please wait while the content loads"></i>
+ <i class="icon-spinner small" role="img" aria-label="Please wait while the content loads"></i>
Please wait while the content loads.
</div>
</div>
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-health-service.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-health-service.js
index 18fc30b..ae1dbb5 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-health-service.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-health-service.js
@@ -1,36 +1,38 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.factory('NodeHealthService', function ($http, $q, $log) {
return {
/**
+ * Get all the datacenter names
+ */
+ getDatacentersHealth: function(pageNum,viewPerPage) {
+ // cache control for IE
+ var cc = "&cc=" + new Date().getTime().toString();
+ return $http({
+ method: 'GET',
+ url: 'healthservices/datacenters',
+ cache: false,
+ responseType: 'json'
+ }).then(function(response) {
+ if (response.data == null || typeof response.data != 'object')
+ return $q.reject('DatacentersService.getDatacentersHealth: response.data null or not object');
+ else
+ return response.data;
+ },
+ function(error) {
+ $log.error('DatacenterService.getDatacentersHealth failed: ' + JSON.stringify(error));
+ return $q.reject(error.statusText);
+ });
+ },
+ /**
* Gets one page of objects.
* @param {Number} pageNum - page number; e.g., 1
* @param {Number} viewPerPage - number of items per page; e.g., 25
* @return {JSON} Response object from remote side
*/
- getNodesHealth: function(pageNum,viewPerPage) {
+ getNodesHealth: function(pageNum,viewPerPage, dc) {
// cache control for IE
let cc = "&cc=" + new Date().getTime().toString();
- let url = 'healthservices/nodes?pageNum=' + pageNum + '&viewPerPage=' + viewPerPage + cc;
+ let url = 'healthservices/nodes?pageNum=' + pageNum + '&viewPerPage=' + viewPerPage +
+ '&dc=' + dc +cc;
return $http({
method: 'GET',
url: url,
@@ -53,10 +55,8 @@ appDS2.factory('NodeHealthService', function ($http, $q, $log) {
* @param {nodeName} node name (not the UUID)
* @return {JSON} Response object from remote side
*/
- getNodeServicesHealth: function(nodeName) {
- // cache control for IE
- let cc = "?cc=" + new Date().getTime().toString();
- let url = 'healthservices/nodes/' + nodeName + cc;
+ getNodeServicesHealth: function(nodeName, dc) {
+ let url = 'healthservices/nodes/' + nodeName + '?dc=' + dc;
return $http({
method: 'GET',
url: url,
@@ -72,7 +72,7 @@ appDS2.factory('NodeHealthService', function ($http, $q, $log) {
$log.error('serviceHealthService.getNodeServicesHealth failed: ' + JSON.stringify(error));
return $q.reject(error.statusText);
});
- }
+ },
};
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-services-controller.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-services-controller.js
index b82ba40..f0820be 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-services-controller.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-services-controller.js
@@ -1,24 +1,3 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.controller('nodeServicesCtrl', function($scope, $log, message, NodeHealthService) {
'use strict';
@@ -32,15 +11,16 @@ appDS2.controller('nodeServicesCtrl', function($scope, $log, message, NodeHealth
// this object holds all app data and functions
$scope.ecdapp = {};
$scope.ecdapp.label = 'Services on Node ' + message.node;
-
+ $scope.ecdapp.activeImg = "static/fusion/images/active.png";
+ $scope.ecdapp.inactiveImg = "static/fusion/images/inactive.png";
/**
* Loads the table of services for the specified node.
*/
- $scope.ecdapp.loadTable = function(nodeName) {
+ $scope.ecdapp.loadTable = function(nodeName, dc) {
$scope.ecdapp.isDataLoading = true;
if (debug)
$log.debug('nodeServicesCtrl: loading data for ' + nodeName);
- NodeHealthService.getNodeServicesHealth(nodeName).then(
+ NodeHealthService.getNodeServicesHealth(nodeName, dc).then(
function(jsonObj) {
if (debug)
$log.debug('nodeServicesCtrl: response is ' + JSON.stringify(jsonObj));
@@ -72,6 +52,7 @@ appDS2.controller('nodeServicesCtrl', function($scope, $log, message, NodeHealth
// Show services for the requested node
if (debug)
$log.debug('nodeServicesCtrl: requesting services for node ' + message.node);
- $scope.ecdapp.loadTable(message.node);
+ $scope.ecdapp.loadTable(message.node, message.dc);
+
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-table-controller.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-table-controller.js
index 61ececb..992caeb 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-table-controller.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node-table-controller.js
@@ -1,24 +1,3 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.controller('nodeTableController', function($scope, $log, $modal, NodeHealthService) {
'use strict';
@@ -31,9 +10,42 @@ appDS2.controller('nodeTableController', function($scope, $log, $modal, NodeHeal
$scope.ecdapp.viewPerPage = 10;
// other
$scope.ecdapp.errMsg = null;
- $scope.ecdapp.isDataLoading = true;
+ $scope.ecdapp.isDataLoading = false;
$scope.ecdapp.isRequestFailed = false;
+ $scope.ecdapp.isDcLoaded = false;
+ $scope.ecdapp.activeImg = "static/fusion/images/active.png";
+ $scope.ecdapp.inactiveImg = "static/fusion/images/inactive.png";
+ $scope.ecdapp.datacenter = "";
+ $scope.ecdapp.datacenters = [];
+ var getDataCenters = function() {
+ NodeHealthService.getDatacentersHealth().then(
+ function(jsonObj) {
+ if (jsonObj.error) {
+ $log.error("datacentersController.loadTable failed: "
+ + jsonObj.error);
+ $scope.ecdapp.isRequestFailed = true;
+ $scope.ecdapp.errMsg = jsonObj.error;
+ $scope.ecdapp.tableData = [];
+ } else {
+ // $log.debug("datacentersController.loadTable
+ // succeeded, size " + jsonObj.data.length);
+ $scope.ecdapp.errMsg = null;
+ $scope.ecdapp.datacenters = jsonObj.items;
+ $scope.ecdapp.datacenter = $scope.ecdapp.datacenters[0].name;
+ $scope.ecdapp.isDcLoaded = true;
+ $scope.ecdapp.isRequestFailed = false;
+ $scope.pageChangeHandler(1);
+ }
+ },
+ function(error) {
+ $log.error("datacentersController.loadTable failed: "
+ + error);
+ $scope.ecdapp.isRequestFailed = true;
+ $scope.ecdapp.errMsg = error;
+ $scope.ecdapp.tableData = [];
+ });
+ };
/**
* Answers an array of the specified size - makes Angular iteration easy.
*/
@@ -48,9 +60,10 @@ appDS2.controller('nodeTableController', function($scope, $log, $modal, NodeHeal
* tableData, or an error to be shown.
*/
$scope.ecdapp.loadTable = function() {
+ if ($scope.ecdapp.datacenter != 'Select Datacenter') {
$scope.ecdapp.isDataLoading = true;
NodeHealthService.getNodesHealth($scope.ecdapp.currentPageNum,
- $scope.ecdapp.viewPerPage).then(
+ $scope.ecdapp.viewPerPage, $scope.ecdapp.datacenter).then(
function(jsonObj) {
if (jsonObj.error) {
$log.error("nodeHealthController.loadTable failed: "
@@ -76,6 +89,7 @@ appDS2.controller('nodeTableController', function($scope, $log, $modal, NodeHeal
$scope.ecdapp.tableData = [];
$scope.ecdapp.isDataLoading = false;
});
+ }
};
/**
@@ -86,19 +100,22 @@ appDS2.controller('nodeTableController', function($scope, $log, $modal, NodeHeal
// console.log('pageChangeHandler: current is ' +
// $scope.ecdapp.currentPageNum + ' new is ' + page);
$scope.ecdapp.currentPageNum = page;
- $scope.ecdapp.loadTable();
+ if ($scope.ecdapp.isDcLoaded) {
+ $scope.ecdapp.loadTable();
+ }
}
/**
* Shows a modal pop-up with services on this node.
*/
- $scope.ecdapp.viewServicesModalPopup = function(nodeInfo) {
+ $scope.ecdapp.viewServicesModalPopup = function(nodeInfo, dc) {
+ nodeInfo.dc = dc;
var modalInstance = $modal.open({
templateUrl : 'node_services_popup.html',
controller : 'nodeServicesCtrl',
windowClass: 'modal-docked',
- sizeClass: 'modal-large',
+ sizeClass: 'modal-jumbo',
resolve : {
message : function() {
return nodeInfo ;
@@ -115,4 +132,5 @@ appDS2.controller('nodeTableController', function($scope, $log, $modal, NodeHeal
// Do not call this here to avoid double load:
// $scope.ecdapp.loadTable();
+ getDataCenters();
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_popups.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_popups.html
index 63b5e5f..6148f8c 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_popups.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_popups.html
@@ -7,11 +7,13 @@
ng-click="$dismiss('cancel')"></button>
</div>
</div>
+ <div class="b2b-modal-body ng-scope ng-isolate-scope" tabindex="0"
+ role="region" aria-label="Modal body content">
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
<div class="span" style="margin-bottom: 20px;">
- <i class="icon-primary-spinner small" role="img"
+ <i class="icon-spinner small" role="img"
aria-label="Please wait while the content loads"></i> Please wait
while the content loads.
</div>
@@ -54,6 +56,7 @@
</div> <!--table-->
</div> <!--failed-->
</div> <!--hide-->
+ </div>
<div class="b2b-modal-footer ng-scope ng-isolate-scope">
<div class="cta-button-group in">
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_table.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_table.html
index 231d331..670fa6a 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_table.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/node_table.html
@@ -1,11 +1,18 @@
<div id="page-content">
-
+ <div style="float: right;" ng-show="ecdapp.isDcLoaded">
+ <div class="field-group span10">
+ <label for="dc">*Datacenters</label>
+ <select id="dc" name="dc" b2b-dropdown class="span8" placeholder-text="Select Datacenter" data-ng-model="ecdapp.datacenter" ng-change="ecdapp.loadTable()" required>
+ <option b2b-dropdown-list option-repeat="d in ecdapp.datacenters" value="{{d.name}}">{{d.name}}</option>
+ </select>
+ </div>
+ </div>
<h1 class="heading-page" id="consul_nodes">Monitored Nodes</h1>
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
<div class="span" style="margin-bottom: 20px;">
- <i class="icon-primary-spinner small" role="img"
+ <i class="icon-spinner small" role="img"
aria-label="Please wait while the content loads"></i> Please wait
while the content loads.
</div>
@@ -40,7 +47,7 @@
<th b2b-table-header key="node">Node Name</th>
<th b2b-table-header key="id">Node ID</th>
<th b2b-table-header key="address">Address</th>
- <th b2b-table-header sortable="false"><i class="icon-controls-gear ecd-icon-display"></i></th>
+ <th b2b-table-header sortable="false"><i class="icon-settings ecd-icon-display"></i></th>
</tr>
</thead>
@@ -51,8 +58,8 @@
<td b2b-table-body ng-bind="rowData.id" />
<td b2b-table-body ng-bind="rowData.address" />
<td b2b-table-body>
- <div ng-click="ecdapp.viewServicesModalPopup(rowData);">
- <a href="" title="View node services" class="icon-people-preview ecd-icon-action"></a>
+ <div ng-click="ecdapp.viewServicesModalPopup(rowData, ecdapp.datacenter);">
+ <a href="" title="View node services" class="icon-overview ecd-icon-action"></a>
</div>
</td>
</tr>
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-controllers.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-controllers.js
index 339c436..6463bac 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-controllers.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-controllers.js
@@ -1,24 +1,3 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.controller('serviceHealthTableController', function($scope, $log, $modal, modalService, ServiceHealthService) {
'use strict';
@@ -31,18 +10,55 @@ appDS2.controller('serviceHealthTableController', function($scope, $log, $modal,
$scope.ecdapp.viewPerPage = 100;
// other
$scope.ecdapp.errMsg = null;
- $scope.ecdapp.isDataLoading = true;
+ $scope.ecdapp.isDataLoading = false;
+ $scope.ecdapp.isDcLoaded = false;
+ $scope.ecdapp.isDcAvail = false;
$scope.ecdapp.isRequestFailed = false;
+ $scope.ecdapp.activeImg = "static/fusion/images/active.png";
+ $scope.ecdapp.inactiveImg = "static/fusion/images/inactive.png";
+ $scope.ecdapp.datacenter = "";
+ $scope.ecdapp.datacenters = [];
+
+ var getDataCenters = function() {
+ ServiceHealthService.getDatacentersHealth().then(
+ function(jsonObj) {
+ if (jsonObj.error) {
+ $log.error("datacentersController.loadTable failed: "
+ + jsonObj.error);
+ $scope.ecdapp.isRequestFailed = true;
+ $scope.ecdapp.errMsg = jsonObj.error;
+ $scope.ecdapp.tableData = [];
+ } else {
+ // $log.debug("datacentersController.loadTable
+ // succeeded, size " + jsonObj.data.length);
+ $scope.ecdapp.errMsg = null;
+ //$scope.ecdapp.totalPages = jsonObj.totalPages;
+ $scope.ecdapp.datacenters = jsonObj.items;
+ $scope.ecdapp.datacenter = $scope.ecdapp.datacenters[0].name;
+ $scope.ecdapp.isDcLoaded = true;
+ $scope.ecdapp.isRequestFailed = false;
+ $scope.pageChangeHandler(1);
+ }
+ },
+ function(error) {
+ $log.error("datacentersController.loadTable failed: "
+ + error);
+ $scope.ecdapp.isRequestFailed = true;
+ $scope.ecdapp.errMsg = error;
+ $scope.ecdapp.tableData = [];
+ });
+ };
/**
* Loads the table. Interprets the remote controller's response and copies
* to scope variables. The response is either list to be assigned to
* tableData, or an error to be shown.
*/
$scope.ecdapp.loadTable = function() {
+ if ($scope.ecdapp.datacenter != 'Select Datacenter') {
$scope.ecdapp.isDataLoading = true;
ServiceHealthService.getServicesHealth($scope.ecdapp.currentPageNum,
- $scope.ecdapp.viewPerPage).then(
+ $scope.ecdapp.viewPerPage, $scope.ecdapp.datacenter).then(
function(jsonObj) {
if (jsonObj.error) {
$log.error("serviceHealthTableController.loadTable failed: "
@@ -68,6 +84,7 @@ appDS2.controller('serviceHealthTableController', function($scope, $log, $modal,
$scope.ecdapp.tableData = [];
$scope.ecdapp.isDataLoading = false;
});
+ }
};
/**
@@ -78,7 +95,9 @@ appDS2.controller('serviceHealthTableController', function($scope, $log, $modal,
// console.log('pageChangeHandler: current is ' +
// $scope.ecdapp.currentPageNum + ' new is ' + page);
$scope.ecdapp.currentPageNum = page;
+ if ($scope.ecdapp.isDcLoaded) {
$scope.ecdapp.loadTable();
+ }
}
/**
@@ -103,8 +122,8 @@ appDS2.controller('serviceHealthTableController', function($scope, $log, $modal,
}
else {
if (response.error != null) {
- $log.error('uploadBlueprintModalPopup failed: ' + response.error);
- alert('Failed to upload blueprint:\n' + response.error);
+ $log.error('registerServiceModalPopup failed: ' + response.error);
+ alert('Failed to register service:\n' + response.error);
}
else {
// success, get the updated list.
@@ -172,6 +191,7 @@ appDS2.controller('serviceHealthTableController', function($scope, $log, $modal,
})
};
+ getDataCenters();
// Populate the table on load. Note that the b2b selector code
// sets the page-number value, and the change event calls load table.
// Do not call this here to avoid double load:
@@ -180,13 +200,13 @@ appDS2.controller('serviceHealthTableController', function($scope, $log, $modal,
});
-appDS2.controller('serviceRegisterCtrl', function($scope, $log, message, ServiceHealthService) {
+appDS2.controller('serviceRegisterCtrl', function($scope, $log, $modalInstance, message, ServiceHealthService) {
'use strict';
// this object holds all app data and functions
$scope.ecdapp = {};
-
+ $scope.ecdapp.uploadInProgress = false;
$scope.ecdapp.label = 'Register Service';
// Model the data simply here.
// Build the complex request later.
@@ -228,6 +248,7 @@ appDS2.controller('serviceRegisterCtrl', function($scope, $log, message, Service
}
$scope.ecdapp.registerService = function(edit_req) {
+ $scope.ecdapp.uploadInProgress = true;
var validateMsg = $scope.ecdapp.validateRequest(edit_req);
if (validateMsg != null) {
alert('Invalid registration request:\n' + validateMsg);
@@ -244,9 +265,9 @@ appDS2.controller('serviceRegisterCtrl', function($scope, $log, message, Service
tags: [ ],
checks : [
{
- endpoint : edit_req.check_endoint,
+ endpoint : edit_req.check_endpoint,
interval : edit_req.check_interval,
- description : edit_req.description,
+ description : edit_req.check_description,
name : edit_req.check_name
}
]
@@ -256,11 +277,16 @@ appDS2.controller('serviceRegisterCtrl', function($scope, $log, message, Service
ServiceHealthService.registerService(request)
.then(function(response) {
- if (response.error)
+ if (response && response.error) {
alert('Failed to register service:\n' + response.error);
+ } else {
+ $modalInstance.close("success");
+ }
+ $scope.ecdapp.uploadInProgress = false;
},
function (error) {
$log.error('serviceRegisterCtrl: error while registering: ' + error);
+ $scope.ecdapp.uploadInProgress = false;
alert('Server rejected registration request:\n' + error);
}
);
@@ -363,4 +389,5 @@ appDS2.controller('serviceHistoryCtlr', function($scope, $log, $modal, message,
});
};
+
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-health-service.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-health-service.js
index 1a60b21..f87d1b3 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-health-service.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service-health-service.js
@@ -1,27 +1,27 @@
-/*******************************************************************************
- * =============LICENSE_START=========================================================
- *
- * =================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- *******************************************************************************/
appDS2.factory('ServiceHealthService', function ($http, $q, $log) {
return {
-
+ /**
+ * Get all the datacenter names
+ */
+ getDatacentersHealth: function() {
+ // cache control for IE
+ var cc = "&cc=" + new Date().getTime().toString();
+ return $http({
+ method: 'GET',
+ url: 'healthservices/datacenters',
+ cache: false,
+ responseType: 'json'
+ }).then(function(response) {
+ if (response.data == null || typeof response.data != 'object')
+ return $q.reject('DatacentersService.getDatacentersHealth: response.data null or not object');
+ else
+ return response.data;
+ },
+ function(error) {
+ $log.error('DatacenterService.getDatacentersHealth failed: ' + JSON.stringify(error));
+ return $q.reject(error.statusText);
+ });
+ },
/**
* Gets information on all services.
*/
@@ -51,10 +51,11 @@ appDS2.factory('ServiceHealthService', function ($http, $q, $log) {
* @param {Number} viewPerPage - number of items per page; e.g., 25
* @return {JSON} Response object from remote side
*/
- getServicesHealth: function(pageNum, viewPerPage) {
+ getServicesHealth: function(pageNum, viewPerPage, dc) {
// cache control for IE
let cc = "&cc=" + new Date().getTime().toString();
- let url = 'healthservices/serviceshealth?pageNum=' + pageNum + '&viewPerPage=' + viewPerPage + cc;
+ let url = 'healthservices/serviceshealth?pageNum=' + pageNum + '&viewPerPage=' + viewPerPage +
+ '&dc=' + dc + cc;
return $http({
method: 'GET',
url: url,
@@ -139,7 +140,7 @@ appDS2.factory('ServiceHealthService', function ($http, $q, $log) {
$log.error('ServiceHealthService.deregisterService failed: ' + JSON.stringify(error));
return $q.reject(error.statusText);
});
- }
+ },
};
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_health_table.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_health_table.html
index b6a4557..40e8d95 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_health_table.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_health_table.html
@@ -1,18 +1,27 @@
<div id="page-content">
+ <div style="float: right;" ng-show="ecdapp.isDcLoaded">
+ <div class="field-group span10">
+ <label for="dc">*Datacenters</label>
+ <select id="dc" name="dc" b2b-dropdown class="span8" placeholder-text="Select Datacenter" data-ng-model="ecdapp.datacenter" ng-change="ecdapp.loadTable()" required>
+ <option b2b-dropdown-list option-repeat="d in ecdapp.datacenters" value="{{d.name}}">{{d.name}}</option>
+ </select>
+ </div>
+ </div>
<h1 class="heading-page" id="consul_services">Monitored Services</h1>
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
<div class="span" style="margin-bottom: 20px;">
- <i class="icon-primary-spinner small" role="img"
+ <i class="icon-spinner small" role="img"
aria-label="Please wait while the content loads"></i> Please wait
while the content loads.
</div>
</div>
-
- <div ng-hide="ecdapp.isDataLoading">
-
+ <div ng-show="ecdapp.isRequestFailed">
+ <span class="ecd-error-message">{{ecdapp.errMsg}}</span>
+ </div>
+ <div ng-hide="ecdapp.isDataLoading" style="margin-top: 10px;">
<div id="button-search-row">
<button class="btn btn-alt btn-small"
type="submit"
@@ -27,10 +36,6 @@
</div>
</div>
- <div ng-show="ecdapp.isRequestFailed">
- <span class="ecd-error-message">{{ecdapp.errMsg}}</span>
- </div>
-
<div ng-hide="ecdapp.isRequestFailed">
<div b2b-table id="consul-services-table" class="b2b-table-div"
@@ -39,16 +44,15 @@
next-sort="ecdapp.nextSortIgnored">
<table>
-
<thead b2b-table-row type="header">
<tr id="th-header-row">
<th b2b-table-header key="serviceName">Service Name</th>
- <th b2b-table-header key="serviceID">Service ID</th>
- <th b2b-table-header key="node">Node Name</th>
<th b2b-table-header key="status">Status</th>
+ <th b2b-table-header key="node">Node Name</th>
+ <th b2b-table-header key="serviceID">Service ID</th>
<th b2b-table-header key="notes">Notes</th>
<th b2b-table-header key="output">Output</th>
- <th b2b-table-header sortable="false"><i class="icon-controls-gear ecd-icon-display"></i></th>
+ <th b2b-table-header sortable="false"><i class="icon-settings ecd-icon-display"></i></th>
</tr>
</thead>
@@ -56,14 +60,20 @@
row-repeat="rowData in ecdapp.tableData">
<tr id="tr-rowData">
<td b2b-table-body ng-bind="rowData.serviceName" />
- <td b2b-table-body ng-bind="rowData.serviceID" />
+ <td b2b-table-body>
+ <!-- <span>{{rowData.status}}</span> -->
+ <span ng-if="rowData.status === 'passing'"><img ng-src="{{ecdapp.activeImg}}" title="{{rowData.status}}"/>
+ </span>
+ <span ng-if="rowData.status != 'passing'"><img ng-src="{{ecdapp.inactiveImg}}" title="{{rowData.status}}"/>
+ </span>
+ </td>
<td b2b-table-body ng-bind="rowData.node" />
- <td b2b-table-body ng-bind="rowData.status" />
+ <td b2b-table-body ng-bind="rowData.serviceID" />
<td b2b-table-body ng-bind="rowData.notes" />
<td b2b-table-body ng-bind="rowData.output" />
<td b2b-table-body>
<div ng-click="ecdapp.viewHealthHistoryModalPopup(rowData);">
- <a href="" title="View history" class="icon-datanetwork-history ecd-icon-action"></a>
+ <a href="" title="View history" class="icoDocuments-bookmarks ecd-icon-action"></a>
</div>
<div ng-click="ecdapp.deregisterServiceModalPopup(rowData);">
<a href="" title="Deregister service" class="icon-misc-trash ecd-icon-action"></a>
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_popups.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_popups.html
index 8fd92b3..0453f8b 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_popups.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/consul/service_popups.html
@@ -10,7 +10,11 @@
<div class="b2b-modal-body ng-scope ng-isolate-scope" tabindex="0"
role="region" aria-label="Modal body content">
-
+ <div ng-show="ecdapp.uploadInProgress" class="row-nowrap">
+ <div class="span" style="margin-bottom:10px;">
+ <i class="icon-spinner small" role="img" aria-label="Please wait while request is in progress"></i>
+ </div>
+ </div>
<div class="row-nowrap">
<div class="span12">
<div class="form-row">
@@ -86,7 +90,11 @@
</div>
</div>
</div>
-
+ <div ng-show="ecdapp.uploadInProgress" class="row-nowrap">
+ <div class="span" style="margin-bottom:10px;">
+ <i class="icon-spinner small" role="img" aria-label="Please wait while request is in progress"></i>
+ </div>
+ </div>
</div>
<div class="b2b-modal-footer ng-scope ng-isolate-scope">
@@ -157,7 +165,7 @@
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
<div class="span" style="margin-bottom: 20px;">
- <i class="icon-primary-spinner small" role="img"
+ <i class="icon-spinner small" role="img"
aria-label="Please wait while the content loads"></i> Please wait
while the content loads.
</div>
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/home/executions-view-controller.js b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/home/executions-view-controller.js
index f3d5393..2491e50 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/home/executions-view-controller.js
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/home/executions-view-controller.js
@@ -4,289 +4,10 @@ appDS2.controller('executionsViewController', function($scope, $rootScope, Contr
$scope.ecdapp = {};
$scope.ecdapp.isDataLoading = false;
$scope.ecdapp.appLabel = "";
- $scope.controllersList = [];
- $scope.controllerCall;
$rootScope.tenantList = {
tenant: '',
data: {}
};
- $rootScope.cardData = [
- {
- "cardHeading": "Applications",
- "cardContent": "Applications managed by ECOMP Controller",
- "cardFooterFlyout": "Some Flyout Content",
- "flyout":"false"
- },
- {
- "cardHeading": "Tenants",
- "cardContent": "Tenants where applications are deployed ",
- "cardFooterFlyout": "Some Flyout Content",
- "flyout":"false"
- },
- {
- "cardHeading": "Blueprints",
- "cardContent": "Blueprints data from ECOMPC Inventory",
- "cardFooterFlyout": "Some Flyout Content",
- "flyout":"false"
- },
- {
- "cardHeading": "Deployments",
- "cardContent": "Deployments done using the blueprints",
- "cardFooterFlyout": "Some Flyout Content",
- "flyout":"false"
- }
- ];
- /* events fired on the drop targets */
- document.addEventListener("dragover", function( event ) {
- // prevent default to allow drop
- event.preventDefault();
- }, false);
-
-
-
- $scope.horizontalPositions = [
- { value: 'center', text: 'Center' },
- { value: 'left', text: 'Left' },
- { value: 'right', text: 'Right' },
- ];
- $scope.horizontalPosition = $scope.horizontalPositions[0];
- $scope.verticalPositions = [
- { value: 'below', text: 'Below' },
- { value: 'above', text: 'Above' },
- ];
- $scope.ddOption1 = [
- { value: '', text: 'Actions' },
- { value: '1', text: 'Option 1' },
- { value: '2', text: 'Option 2' },
- { value: '3', text: 'Option 3' }
- ];
-
- $scope.ddOptionValue1 = {};
- $scope.ddOptionValue1.value = $scope.ddOption1[0].value;
-
- /* This showcases having an expander default expanded */
- $scope.testmpc = true;
- $scope.testmpc6 = true;
- $scope.testmpc14 = true;
- $scope.verticalPosition = $scope.verticalPositions[0];
-
- $scope.concurrent = [10, 20, 30];
- $scope.concurrentValue = $scope.concurrent[0];
-
- $scope.flyoutContent = {};
- $scope.flyoutContent.contentUpdated = false;
- $scope.flyoutContent.enableSave = false;
- $scope.flyoutContent.concurrentCalls = 0;
- $scope.enableSaveFun = function () {
- if ($scope.flyoutContent.concurrentCalls !== 0 || $scope.concurrentValue != $scope.concurrent[0]) {
- $scope.flyoutContent.enableSave = true;
- $scope.flyoutContent.contentUpdated = true;
- } else {
- $scope.flyoutContent.enableSave = false;
- $scope.flyoutContent.contentUpdated = true;
- }
- };
-
- $scope.ecdapp.opsUrls = [];
- $rootScope.gTabs = [];
- $rootScope.menuKeys = [];
- $rootScope.opsMenu = [
- {
- title: 'Cloudify',
- id: 'cfy',
- uniqueId: 'uniqueTab1x',
- tabPanelId: 'threetab1x',
- url: ''
- }, {
- title: 'Grafana',
- id: 'grf',
- uniqueId: 'uniqueTab2x',
- tabPanelId: 'threetab2x',
- url: ''
- }, {
- title: 'Consul',
- id: 'cnsl',
- uniqueId: 'uniqueTab3x',
- tabPanelId: 'threetab3x',
- url: ''
- }, {
- title: 'Kubernetes',
- id: 'k8s',
- uniqueId: 'uniqueTab4x',
- tabPanelId: 'threetab4x',
- url: ''
- }, {
- title: 'Prometheus',
- id: 'prom',
- uniqueId: 'uniqueTab5x',
- tabPanelId: 'threetab5x',
- url: ''
- }, {
- title: 'DBCL',
- id: 'dbcl',
- uniqueId: '',
- tabPanelId: '',
- url: ''
- }
- ];
-
- $rootScope.tenant_cluster_map =
- [
- {
- tenant: 'dyh1b1902',
- cluster: ['platform', 'component']
- },
- {
- tenant: 'DCAE-24256-D-04Central',
- cluster: ['component']
- },
- {
- tenant: 'DCAE-24256-D-04Edge',
- cluster: ['component']
- }
- ];
-
- $rootScope.site_tenant_cluster_list =
- [
- {site: 'dyh1b1902',
- cfy_url: 'https://ecompc-orcl-dev-s1.ecomp.idns.cip.att.com/console/login',
- cnsl_url: 'https://http://ecompc-cnsl-dev-s5.ecomp.idns.cip.att.com:8500/ui/',
- tenant_cluster_map:
- [
- {
- tenant: 'dyh1b1902',
- k8_ip: '32.68.214.62',
- cluster: 'platform',
- k8_url: 'https://32.68.214.62:6443/ui',
- prom_url: 'https://32.68.214.62:30102/graph',
- grf_url: 'https://32.68.214.62:30101/login'
- },
- {
- tenant: 'dyh1b1902',
- k8_ip: '32.68.214.62',
- cluster: 'component',
- k8_url: 'https://32.68.214.62:6443/ui',
- prom_url: 'https://32.68.214.62:30102/graph',
- grf_url: 'https://32.68.214.62:30101/login'
- },
- {
- tenant: 'DCAE-24256-D-04Central',
- k8_ip: '32.68.192.81',
- cluster: 'component',
- k8_url: 'https://32.68.192.81:6443/ui',
- prom_url: 'https://32.68.192.81:30102/graph',
- grf_url: 'https://32.68.192.81:30101/login'
- },
- {
- tenant: 'DCAE-24256-D-04Edge',
- k8_ip: '32.68.194.92',
- cluster: 'component',
- k8_url: 'https://32.68.194.92:6443/ui',
- prom_url: 'https://32.68.194.92:30102/graph',
- grf_url: 'https://32.68.194.92:30101/login'
- }
- ]
- },
- {site: 'mtn23b',
- cfy_url: 'https://ecompc-orcl-dev-s2.ecomp.idns.cip.att.com/console/login',
- cnsl_url: 'https://ecompc-cnsl-dev-s2.ecomp.idns.cip.att.com:8500/ui/',
- tenant_cluster_map:
- [
- {
- tenant: 'mtn23b',
- k8_ip: '32.68.214.62',
- cluster: 'platform',
- k8: 'https://32.68.214.62:6443/ui',
- prom: 'https://32.68.214.62:30102/graph',
- grf: 'https://32.68.214.62:30101/login'
- },
- {
- tenant: 'mtn23b',
- k8_ip: '32.68.214.62',
- cluster: 'component',
- k8: 'https://32.68.214.62:6443/ui',
- prom: 'https://32.68.214.62:30102/graph',
- grf: 'https://32.68.214.62:30101/login'
- },
- {
- tenant: 'DCAE-24256-D-04Central',
- k8_ip: '32.68.192.81',
- cluster: 'component',
- k8: 'https://32.68.192.81:6443/ui',
- prom: 'https://32.68.192.81:30102/graph',
- grf: 'https://32.68.192.81:30101/login'
- },
- {
- tenant: 'DCAE-24256-D-04Edge',
- k8_ip: '32.68.194.92',
- cluster: 'component',
- k8: 'https://32.68.194.92:6443/ui',
- prom: 'https://32.68.194.92:30102/graph',
- grf: 'https://32.68.194.92:30101/login'
- }
- ]
- }
- ];
-
- $rootScope.tenant_cluster_apps_map =
- [
- {
- tenant: 'dyh1b1902',
- k8_ip: '32.68.214.62',
- cluster: 'platform',
- k8: 'https://32.68.214.62:6443/ui',
- prom: 'https://32.68.214.62:30102/graph',
- grf: 'https://32.68.214.62:30101/login'
- },
- {
- tenant: 'dyh1b1902',
- k8_ip: '32.68.214.62',
- cluster: 'component',
- k8: 'https://32.68.214.62:6443/ui',
- prom: 'https://32.68.214.62:30102/graph',
- grf: 'https://32.68.214.62:30101/login'
- },
- {
- tenant: 'DCAE-24256-D-04Central',
- k8_ip: '32.68.192.81',
- cluster: 'component',
- k8: 'https://32.68.192.81:6443/ui',
- prom: 'https://32.68.192.81:30102/graph',
- grf: 'https://32.68.192.81:30101/login'
- },
- {
- tenant: 'DCAE-24256-D-04Edge',
- k8_ip: '32.68.194.92',
- cluster: 'component',
- k8: 'https://32.68.194.92:6443/ui',
- prom: 'https://32.68.194.92:30102/graph',
- grf: 'https://32.68.194.92:30101/login'
- }
- ];
-
- $rootScope.site_cfy_cnsl_map =
- [
- {site: 'dyh1b1902',
- cfy: 'https://ecompc-orcl-dev-s1.ecomp.idns.cip.att.com/console/login',
- cnsl: 'https://http://ecompc-cnsl-dev-s5.ecomp.idns.cip.att.com:8500/ui/'
- },
- {site: 'mtn23b',
- cfy: 'https://ecompc-orcl-dev-s2.ecomp.idns.cip.att.com/console/login',
- cnsl: 'https://ecompc-cnsl-dev-s2.ecomp.idns.cip.att.com:8500/ui/'
- }
- ]
-
- //$rootScope.cfyUrl = $rootScope.site_cfy_map[1].cfy;
-
- $rootScope.site_tenant_map =
- [
- {site: 'dyh1b1902',
- tenant: ['dyh1b1902','DCAE-24256-D-04Central','DCAE-24256-D-04Edge']
- },
- {site: 'mtn23b',
- tenant: ['MTN23b-ECOMP-DEV-S1','DYH1b-FTL3F-DCAE-24256-D-03Central','DYH1b-FTL3F-DCAE-24256-D-03Edge']
- }
- ]
var debug = false;
var getTenants = function() {
@@ -308,124 +29,6 @@ appDS2.controller('executionsViewController', function($scope, $rootScope, Contr
});
};
- var getControllers = function(){
- $scope.ecdapp.isDataLoading = true;
- ControllerService.getControllers().then(function(jsonObj) {
- if (debug)
- $log.debug("verticalComponentController.getControllers succeeded: " + JSON.stringify(jsonObj));
- // Empty
- $scope.controllersList.length = 0;
- // Refill
- jsonObj.filter(function(d) {
- $scope.controllersList.push(d);
- if (d.selected){
- $scope.parent.blueprint_id = d.name;
- $scope.controllerCallDone = true;
- }
- return;
- });
- $scope.ecdapp.isDataLoading = false;
- }, function(error) {
- $scope.ecdapp.isDataLoading = false;
- alert('Failed to load controllers. Please retry.');
- $log.error("verticalComponentController.getControllers failed: " + error);
- });
- };
-
- $rootScope.$on('controllerChange', function(e, d){
- $scope.parent.blueprint_id = d.name;
- });
-
- $scope.ecdapp.loadTable = function(status) {
- $scope.ecdapp.isDataLoading = true;
-
- // Empty list and create the root controller item
- $scope.orgChartData = [];
-
- ExecutionService.getExecutionsByStatus(status).then(
- function(jsonObj) {
- if (jsonObj.error) {
- $log.error("verticalComponentController.loadTable failed: "
- + jsonObj.error);
- $scope.ecdapp.isRequestFailed = true;
- $scope.ecdapp.errMsg = jsonObj.error;
- } else {
- $scope.ecdapp.isRequestFailed = false;
- $scope.ecdapp.errMsg = null;
- for (var i=0; i < jsonObj.items.length; i++) {
- $scope.orgChartData.push(jsonObj.items[i]);
- }
- $scope.$broadcast('listenEvent', {data: $scope.orgChartData} );
- setTimeout(function(){$('.child-item').popover()}, 0);
- }
- $scope.status = status;
- $scope.ecdapp.isDataLoading = false;
- },
- function(error) {
- $log.error("verticalComponentController.loadTable failed: "
- + error);
- $scope.ecdapp.isRequestFailed = true;
- $scope.ecdapp.errMsg = error;
- $scope.ecdapp.isDataLoading = false;
- });
- };
-
- $scope.showEcompCInstancesModalPopup = function() {
- var modalInstance = $modal.open({
- templateUrl : 'ecompc_instances_popup.html',
- controller : 'selectEcompcController',
- windowClass: 'modal-docked',
- sizeClass: 'modal-medium',
- resolve : {
- message : function() {
- return { items: $scope.controllersList }
- }
- }
- });
- };
-
- $scope.showsubDropdown = function(e){
- $('#submenu').toggle();
- e.stopPropagation();
- e.preventDefault();
- }
-
- $scope.closeSubMenu = function(){
- $('#submenu').css({display:'none'})
- }
-
- var getOpsUrls = function() {
- ControllerService.getOpsUrls().then(function(jsonObj) {
- if (jsonObj.error) {
- $log.error("executionsViewController.getOpsUrls failed: " + jsonObj.error);
- } else {
- //$scope.ecdapp.opsUrls = jsonObj;
- angular.forEach(jsonObj, function(value, key) {
- var found = false;
- angular.forEach($rootScope.opsMenu, function(val2, key2, item) {
- if (!found) {
- if (val2.id === value.id) {
- val2.url = value.url;
- found = true;
- }
- }
- });
- });
- }
- }, function(error) {
- $log.error("executionsViewController.getOpsUrls failed: " + error);
- });
- /*
- $scope.ecdapp.opsUrls = [
- {id: 'cfy', url: 'https://ecompc-orcl-dev-s1.ecomp.idns.cip.att.com/console/login'},
- {id: 'grf', url: 'http://ecompc-grfn-dev-s1.ecomp.idns.cip.att.com:30101/login'},
- {id: 'cnsl', url: 'http://ecompc-cnsl-dev-s1.ecomp.idns.cip.att.com:8500/ui/'},
- {id: 'k8s', url: 'https://zldcmtn23aecc1kpma00.809a89.mtn23a.tci.att.com:6443/ui'},
- {id: 'prom', url: 'http://zldcmtn23aecc1kpma00.809a89.mtn23a.tci.att.com:30102/graph'},
- {id: 'dbcl', url: 'http://zldcdyh1bdcc2dokr04.707507.dyh1b.tci.att.com:8080/dmaap-bc-app/login.htm'}];
- */
- };
-
var getAppLabel = function() {
ControllerService.getAppLabel().then(function(jsonObj) {
if (debug)
@@ -438,10 +41,5 @@ appDS2.controller('executionsViewController', function($scope, $rootScope, Contr
// Initialize the page
getAppLabel();
getTenants();
- //getControllers();
- getOpsUrls();
- //$scope.ecdapp.loadTable('active');
- //$scope.showOrgTable = true;
- //$rootScope.activeTabsId = 'cfy';
});
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_blueprint_table.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_blueprint_table.html
index 687c304..3c09687 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_blueprint_table.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_blueprint_table.html
@@ -1,6 +1,6 @@
<div id="page-content">
- <h1 class="heading-page" id="blueprints">EOM Inventory > Blueprints</h1>
+ <h1 class="heading-page" id="blueprints">Inventory > Blueprints</h1>
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
<div class="span" style="margin-bottom:20px;">
@@ -17,13 +17,6 @@
Create
<span class="arrow"></span>
</a>
- <!--
- <button class="btn btn-alt btn-small tooltip-element" data-placement="right"
- type="submit"
- ng-click="ecdapp.uploadBlueprintModalPopup();">
- Create
- <span class="arrow"></span>
- </button>-->
<span class="tooltip-wrapper">
<span class="tooltip-size-control">
<span id="tooltiptextBtn" role="tooltip" aria-live="polite" aria-hidden="true" class="helpertext" tabindex="-1">
@@ -38,9 +31,9 @@
</span>
<div style="float:right;">
<div class="group">
- <button tabindex="-1" class="btn btn-small" title="Reset Filters" type="button" ng-click="ecdapp.loadTable()"><i class="icon-arrows-update&#45;refresh&#45;sync"></i></button>
+ <button tabindex="-1" class="btn btn-small" title="Reset Filters" type="button" ng-click="ecdapp.loadTable()"><i class="icon-arrows-replay-restart"></i></button>
<input tabindex="0" class="btn btn-small" type="text" placeholder="Search Blueprints" ng-model="ecdapp.searchBy"></input>
- <button tabindex="1" class="btn btn-small" title="Search" type="button" ng-click="ecdapp.searchTable(ecdapp.searchBy)"><i class="icon-controls-magnifyingglass"></i></button>
+ <button tabindex="1" class="btn btn-small" title="Search" type="button" ng-click="ecdapp.searchTable(ecdapp.searchBy)"><i class="ion-search"></i></button>
</div>
</div>
</div>
@@ -70,7 +63,7 @@
<th b2b-table-header sortable="false" key="created_at" ng-click="ecdapp.sortTable('created')">Created Date</th>
<th b2b-table-header sortable="false" key="deployment_ref">Deployments
<button style="margin-bottom:-5px; box-shadow:0 0 0 0 rgba(0, 0, 0, 0.15); min-width:0;" tabindex="1" class="btn btn-small" title="Refresh Deployments" type="button" ng-click="ecdapp.updateTable()">
- <i class="icon-arrows-update&#45;refresh&#45;sync"></i>
+ <i class="icon-arrows-replay-restart"></i>
</button>
<div ng-show="ecdapp.isSrvcDataLoading">
<div class="span" style="margin-bottom:5px;">
@@ -79,13 +72,6 @@
</div>
</div>
</th>
- <!--
- <th b2b-table-header sortable="false" key="deployment_info" style="margin-left:-10px;">Deployments
- <button style="margin-bottom:-5px; box-shadow:0 0 0 0 rgba(0, 0, 0, 0.15); min-width:0;" tabindex="1" class="btn btn-small" title="Refresh Deployments" type="button" ng-click="ecdapp.updateTable()">
- <i class="icon-arrows-update&#45;refresh&#45;sync"></i>
- </button>
- </th>
- -->
<th b2b-table-header sortable="false">Actions</th>
<th b2b-table-header sortable="false" key="owner" ng-click="ecdapp.sortTable('owner')">Owner</th>
<th b2b-table-header sortable="false" key="type_id" ng-click="ecdapp.sortTable('typeId')">ID</th>
@@ -114,26 +100,26 @@
</td>
<td b2b-table-body >
<div class="btn-group btn-actions" style="margin-bottom:0;box-shadow:none;">
- <button type="button" class="btn dropdown-toggle" data-toggle="dropdown" title="More Actions"><i class="icon-controls-moreapplications"></i></button>
+ <button type="button" class="btn dropdown-toggle" data-toggle="dropdown" title="More Actions"><i class="icon-apps-marketplace"></i></button>
<ul class="dropdown-menu">
<li>
<div ng-click="ecdapp.viewBlueprintModalPopup(rowData);">
- <i class="icon-people-preview ecd-icon-action"></i><a href="">View</a>
+ <i class="icon-documents-book ecd-icon-action"></i><a href="">View</a>
</div>
</li>
<li>
<div ng-click="ecdapp.exportJson(rowData);">
- <i class="icon-people-preview ecd-icon-action"></i><a href="">Export</a>
+ <i class="icon-documents-copy ecd-icon-action"></i><a href="">Export</a>
</div>
</li>
<li>
<div ng-show="rowData.canDeploy && rowData.deployments.totalCount === 0" ng-click="ecdapp.updateBlueprintModalPopup(rowData);">
- <i class="icon-misc-trash ecd-icon-action"></i><a href="">Update</a>
+ <i class="icon-misc-pen ecd-icon-action"></i><a href="">Update</a>
</div>
</li>
<li>
<div ng-show="rowData.canDeploy" ng-click="ecdapp.deployBlueprintModalPopup(rowData);">
- <i class="icon-datanetwork-cloudupload ecd-icon-action"></i><a href="">Deploy</a>
+ <i class="icon-arrows-download ecd-icon-action"></i><a href="">Deploy</a>
</div>
</li>
<li>
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_deployment_table.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_deployment_table.html
index 3e404b5..5d76bb4 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_deployment_table.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_deployment_table.html
@@ -1,6 +1,6 @@
<div id="page-content">
- <h1 class="heading-page" id="deployments-page">EOM Inventory > Deployments</h1>
+ <h1 class="heading-page" id="deployments-page">Inventory > Deployments</h1>
<!-- show progress indicator -->
<div ng-show="ecdapp.isDataLoading">
@@ -14,9 +14,9 @@
<div id="button-search-row">
<div style="float:right;">
<div class="group">
- <button tabindex="-1" class="btn btn-small" title="Reset Filters" type="button" ng-click="ecdapp.loadTable()"><i class="icon-arrows-update&#45;refresh&#45;sync"></i></button>
+ <button tabindex="-1" class="btn btn-small" title="Reset Filters" type="button" ng-click="ecdapp.loadTable()"><i class="icon-arrows-replay-restart"></i></button>
<input tabindex="0" class="btn btn-small" type="text" placeholder="Search Deployments" ng-model="ecdapp.searchBy"></input>
- <button tabindex="1" class="btn btn-small" type="button" ng-click="ecdapp.searchTable(ecdapp.searchBy)"><i class="icon-controls-magnifyingglass"></i></button>
+ <button tabindex="1" class="btn btn-small" type="button" ng-click="ecdapp.searchTable(ecdapp.searchBy)"><i class="ion-search"></i></button>
</div>
</div>
</div>
@@ -41,7 +41,7 @@
<th b2b-table-header sortable="false" key="updated" ng-click="ecdapp.sortTable('modified')">Modified</th>
<th b2b-table-header sortable="false" key="tenant" style="background-color:#dbefef;">Tenant
<button style="margin-bottom:-5px; box-shadow:0 0 0 0 rgba(0, 0, 0, 0.15); min-width:0;" tabindex="1" class="btn btn-small" title="Refresh Tenant and Status" type="button" ng-click="ecdapp.updateTable()">
- <i class="icon-arrows-update&#45;refresh&#45;sync"></i>
+ <i class="icon-arrows-replay-restart"></i>
</button>
<div ng-show="ecdapp.isSrvcDataLoading">
<div class="span" style="margin-bottom:5px;">
@@ -76,26 +76,26 @@
</td>
<td b2b-table-body ng-class="{'td-error' : rowData.statusInfo === undefined}">
<div class="btn-group btn-actions" style="margin-bottom:0;box-shadow:none;">
- <button type="button" class="btn dropdown-toggle" data-toggle="dropdown" title="More Actions"><i class="icon-controls-moreapplications"></i></button>
+ <button type="button" class="btn dropdown-toggle" data-toggle="dropdown" title="More Actions"><i class="icon-apps-marketplace"></i></button>
<ul class="dropdown-menu">
<li>
<div ng-click="ecdapp.viewBlueprintDataModal(rowData);">
- <i class="icon-documents-document ecd-icon-action"></i><a href="">View blueprint</a>
+ <i class="icon-documents-book ecd-icon-action"></i><a href="">View blueprint</a>
</div>
</li>
<li>
<div ng-click="ecdapp.viewDeploymentInputsModalPopup(rowData);">
- <i class="icon-misc-operations ecd-icon-action"></i><a href="">View Inputs</a>
+ <i class="icoDocuments-report ecd-icon-action"></i><a href="">View Inputs</a>
</div>
</li>
<li>
<div ng-click="ecdapp.viewDeploymentExecutionsModalPopup(rowData);">
- <i class="icon-people-preview ecd-icon-action"></i><a href="">View executions</a>
+ <i class="icon-overview ecd-icon-action"></i><a href="">View executions</a>
</div>
</li>
<li>
<div ng-show="rowData.canDeploy && rowData.statusInfo.status === 'completed'" ng-click="ecdapp.updateDeploymentModalPopup(rowData);">
- <i class="icon-misc-operations ecd-icon-action"></i><a href="">Update deployment</a>
+ <i class="icon-misc-pen ecd-icon-action"></i><a href="">Update deployment</a>
</div>
</li>
<li>
@@ -105,17 +105,17 @@
</li>
<li>
<div ng-show="rowData.statusInfo.is_helm && rowData.statusInfo.helm_status && rowData.statusInfo.status === 'completed'" ng-click="ecdapp.checkHelmStatus(rowData);">
- <i class="icon-misc-operations ecd-icon-action"></i><a href="">Helm Status</a>
+ <i class="icoDocuments-report ecd-icon-action"></i><a href="">Helm Status</a>
</div>
</li>
<li>
<div ng-show="rowData.canDeploy && rowData.statusInfo.is_helm && rowData.statusInfo.status === 'completed'" ng-click="ecdapp.upgradeDeploymentModalPopup(rowData);">
- <i class="icon-datanetwork-contentdelivery ecd-icon-action"></i><a href="#">Helm upgrade deployment</a>
+ <i class="icon-controls-down ecd-icon-action"></i><a href="#">Helm upgrade deployment</a>
</div>
</li>
<li>
<div ng-show="rowData.canDeploy && rowData.statusInfo.is_helm && rowData.statusInfo.status === 'completed'" ng-click="ecdapp.rollbackDeploymentModalPopup(rowData);">
- <i class="icon-datanetwork-software ecd-icon-action"></i><a href="#">Helm rollback deployment</a>
+ <i class="icon-controls-up"></i><a href="#">Helm rollback deployment</a>
</div>
</li>
<li>
diff --git a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_execution_popups.html b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_execution_popups.html
index 7fa380c..4b870dc 100644
--- a/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_execution_popups.html
+++ b/ccsdk-app-overlay/src/main/webapp/app/ccsdk/inventory/inventory_execution_popups.html
@@ -123,7 +123,7 @@
<th b2b-table-header key="workflow_id">Workflow ID</th>
<th b2b-table-header key="id">ID</th>
<th b2b-table-header key="status">Status</th>
- <th b2b-table-header sortable="false"><i class="icon-controls-gear ecd-icon-display"></i></th>
+ <th b2b-table-header sortable="false"><i class="icon-settings ecd-icon-display"></i></th>
</tr>
</thead>
@@ -175,7 +175,7 @@
</td>
<td b2b-table-body ng-if="rowData.status == 'started'">
<div ng-click="ecdapp.cancelExecutionModalPopup(rowData, ecdapp.ui_tenant);">
- <a href="" title="Cancel execution" class="icon-controls-stop ecd-icon-action"></a>
+ <a href="" title="Cancel execution" class="ion-stop ecd-icon-action"></a>
</div>
</td>
</tr>
diff --git a/pom.xml b/pom.xml
index ad274b0..536d9b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,48 +1,50 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <!-- Add oparent parent -->
- <parent>
- <groupId>org.onap.oparent</groupId>
- <artifactId>oparent</artifactId>
- <version>1.2.3</version>
- </parent>
- <!-- Maven parent project for convenience of building and cleaning -->
- <groupId>org.onap.ccsdk.dashboard</groupId>
- <artifactId>ccsdk-app-parent</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>ccsdk-dashboard</name>
-
- <modules>
- <module>ccsdk-app-common</module>
- <module>ccsdk-app-overlay</module>
- <!-- <module>ccsdk-app-os</module> -->
- </modules>
- <distributionManagement>
- <repository>
- <id>ecomp-releases</id>
- <url>${onap.nexus.url}/content/repositories/releases</url>
- </repository>
- <snapshotRepository>
- <id>ecomp-snapshots</id>
- <url>${onap.nexus.url}/content/repositories/snapshots</url>
- </snapshotRepository>
- </distributionManagement>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <version>2.8</version>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- Add oparent parent -->
+
+ <parent>
+ <groupId>org.onap.oparent</groupId>
+ <artifactId>oparent</artifactId>
+ <version>1.2.3</version>
+ </parent>
+
+ <!-- Maven parent project for convenience of building and cleaning -->
+ <groupId>org.onap.ccsdk.dashboard</groupId>
+ <artifactId>ccsdk-app-parent</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <name>ccsdk-dashboard</name>
+
+ <modules>
+ <module>ccsdk-app-common</module>
+ <module>ccsdk-app-overlay</module>
+ <module>ccsdk-app-os</module>
+ </modules>
+ <distributionManagement>
+ <repository>
+ <id>ecomp-releases</id>
+ <url>${onap.nexus.url}/content/repositories/releases</url>
+ </repository>
+ <snapshotRepository>
+ <id>ecomp-snapshots</id>
+ <url>${onap.nexus.url}/content/repositories/snapshots</url>
+ </snapshotRepository>
+ </distributionManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>2.8</version>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>