aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/reports
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/reports')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/reports/BasicReportGenerator.java110
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/reports/DeploymentReportGenerator.java85
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/reports/ReportGenerator.java32
3 files changed, 227 insertions, 0 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/reports/BasicReportGenerator.java b/vid-app-common/src/main/java/org/onap/vid/reports/BasicReportGenerator.java
new file mode 100644
index 000000000..00f8077d3
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/reports/BasicReportGenerator.java
@@ -0,0 +1,110 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2019 Nokia 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=========================================================
+ */
+package org.onap.vid.reports;
+
+import com.google.common.collect.ImmutableMap;
+import io.joshworks.restclient.http.HttpResponse;
+import org.onap.vid.controller.ControllersUtils;
+import org.onap.vid.model.GitRepositoryState;
+import org.onap.vid.model.SubscriberList;
+import org.onap.vid.model.errorReport.ReportCreationParameters;
+import org.onap.vid.model.probes.ExternalComponentStatus;
+import org.onap.vid.services.AaiService;
+import org.onap.vid.services.ProbeService;
+import org.onap.vid.utils.SystemPropertiesWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.onap.portalsdk.core.util.SystemProperties.ECOMP_REQUEST_ID;
+
+@Component
+public class BasicReportGenerator implements ReportGenerator {
+
+ private static final String GIT_PROPERTIES_FILENAME = "git.properties";
+ private final AaiService aaiService;
+ private final SystemPropertiesWrapper systemPropertiesWrapper;
+ private final ProbeService probeService;
+
+ @Autowired
+ public BasicReportGenerator(AaiService aaiService, SystemPropertiesWrapper systemPropertiesWrapper,
+ ProbeService probeService) {
+ this.aaiService = aaiService;
+ this.systemPropertiesWrapper = systemPropertiesWrapper;
+ this.probeService = probeService;
+ }
+
+ @Override
+ public Map<String, Object> apply(HttpServletRequest request, ReportCreationParameters creationParameters) {
+ return ImmutableMap.<String, Object>builder()
+ .put("X-ECOMP-RequestID", request.getHeader(ECOMP_REQUEST_ID))
+ .put("aaiFullSubscriberList", getFullSubscriberList())
+ .put("userID", getUserIDFromSystemProperties(request))
+ .put("commitInfo", getCommitInfoFromGitProperties())
+ .put("probeInfo", getProbe())
+ .build();
+ }
+
+ @Override
+ public boolean canGenerate(ReportCreationParameters creationParameters) {
+ return true;
+ }
+
+ private GitRepositoryState getCommitInfoFromGitProperties() {
+ GitRepositoryState gitRepositoryState;
+ try (InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream(GIT_PROPERTIES_FILENAME)) {
+ Properties properties = new Properties();
+ properties.load(resourceAsStream);
+ gitRepositoryState = new GitRepositoryState(properties);
+ } catch (IOException e) {
+ gitRepositoryState = GitRepositoryState.EMPTY;
+ }
+ return gitRepositoryState;
+ }
+
+ String getUserIDFromSystemProperties(HttpServletRequest request) {
+ return new ControllersUtils(systemPropertiesWrapper).extractUserId(request);
+ }
+
+ List<ExternalComponentStatus> getProbe() {
+ return probeService.getProbe();
+ }
+
+ ImmutableMap<String, Object> getFullSubscriberList() {
+ ImmutableMap<String, Object> fullSubscriberList;
+ try {
+ HttpResponse<SubscriberList> fullSubscriberListResponse = aaiService.getFullSubscriberList();
+ fullSubscriberList = ImmutableMap.<String, Object>builder()
+ .put("status", fullSubscriberListResponse.getStatus())
+ .put("body", fullSubscriberListResponse.getBody())
+ .put("headers", fullSubscriberListResponse.getHeaders())
+ .build();
+ } catch (Exception e) {
+ fullSubscriberList = ImmutableMap.of("exception", e.toString());
+ }
+ return fullSubscriberList;
+ }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/reports/DeploymentReportGenerator.java b/vid-app-common/src/main/java/org/onap/vid/reports/DeploymentReportGenerator.java
new file mode 100644
index 000000000..da845266d
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/reports/DeploymentReportGenerator.java
@@ -0,0 +1,85 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2019 Nokia 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=========================================================
+ */
+
+package org.onap.vid.reports;
+
+import com.google.common.collect.ImmutableMap;
+import org.onap.vid.asdc.AsdcCatalogException;
+import org.onap.vid.model.errorReport.ReportCreationParameters;
+import org.onap.vid.mso.MsoBusinessLogic;
+import org.onap.vid.mso.MsoResponseWrapper;
+import org.onap.vid.services.VidService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class DeploymentReportGenerator implements ReportGenerator {
+
+ private final VidService vidService;
+ private final MsoBusinessLogic msoBusinessLogic;
+
+ @Autowired
+ public DeploymentReportGenerator(VidService vidService, MsoBusinessLogic msoBusinessLogic) {
+ this.vidService = vidService;
+ this.msoBusinessLogic = msoBusinessLogic;
+ }
+
+ @Override
+ public Map<String, Object> apply(HttpServletRequest request, ReportCreationParameters creationParameters) {
+ return ImmutableMap.<String, Object>builder()
+ .put("serviceInstanceInfo", getOrchestrationRequestFromMso(creationParameters.getRequestId()))
+ .put("serviceDetails", getServiceDetails(creationParameters.getServiceUuid()))
+ .build();
+ }
+
+ @Override
+ public boolean canGenerate(ReportCreationParameters creationParameters) {
+ return creationParameters.getRequestId() != null && creationParameters.getServiceUuid() != null;
+ }
+
+ MsoResponseWrapper getOrchestrationRequestFromMso(String requestId) {
+ return msoBusinessLogic.getOrchestrationRequest(requestId);
+ }
+
+ Map<String, Object> getServiceDetails(String serviceUuid) {
+ Map<String, Object> serviceDetails;
+ try {
+ org.onap.vid.model.Service serviceModel = vidService.getService(serviceUuid).getService();
+ serviceDetails = ImmutableMap.of("details", serviceModel);
+ } catch (AsdcCatalogException | NullPointerException e) {
+ serviceDetails = generateServiceDetailsExceptionResponse(serviceUuid, e);
+ }
+ return serviceDetails;
+ }
+
+ Map<String, Object> generateServiceDetailsExceptionResponse(String serviceUuid, Exception e) {
+ Map<String, Object> result = new HashMap<>();
+ if (e.getClass() == NullPointerException.class) {
+ result.put("message", "Service details for given uuid were not found");
+ }
+ result.put("exception", e.toString());
+ result.put("serviceUuid", serviceUuid);
+ return result;
+ }
+}
diff --git a/vid-app-common/src/main/java/org/onap/vid/reports/ReportGenerator.java b/vid-app-common/src/main/java/org/onap/vid/reports/ReportGenerator.java
new file mode 100644
index 000000000..ccc290115
--- /dev/null
+++ b/vid-app-common/src/main/java/org/onap/vid/reports/ReportGenerator.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2019 Nokia 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=========================================================
+ */
+package org.onap.vid.reports;
+
+import org.onap.vid.model.errorReport.ReportCreationParameters;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+import java.util.function.BiFunction;
+
+public interface ReportGenerator extends BiFunction<HttpServletRequest, ReportCreationParameters, Map<String, Object>>{
+
+ boolean canGenerate(ReportCreationParameters creationParameters);
+
+}