aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/pom.xml12
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMgtService.java51
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java35
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java164
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceConvert.java594
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceImpl.java863
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java289
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java326
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/SlicServiceInstanceService.java37
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/AAISliceService.java177
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIService.java148
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceAndInstance.java113
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceInstance.java301
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceNST.java67
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceProfiles.java235
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceRsp.java42
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelatedToProperty.java38
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/Relationship.java73
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelationshipData.java42
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/exception/AAIException.java23
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/KpiSliceService.java43
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiBean.java54
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalBandwidth.java70
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalTraffic.java44
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiUserNumber.java69
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService-595b4273.javaoldbuyong88
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.java126
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.javalocal114
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/ActivateService.java32
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOOperation.java127
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTask.java97
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTaskRsp.java30
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/exception/SOException.java27
-rw-r--r--server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java52
34 files changed, 4601 insertions, 2 deletions
diff --git a/server/pom.xml b/server/pom.xml
index f72cfb67..7a88c68f 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -231,7 +231,11 @@
<artifactId>okhttp</artifactId>
<version>3.12.1</version>
</dependency>
-
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>1.9.4</version>
+ </dependency>
<!-- commons-csv -->
<dependency>
<groupId>org.apache.commons</groupId>
@@ -275,7 +279,11 @@
<artifactId>httpclient</artifactId>
<version>4.5.4</version>
</dependency>
-
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.2.4</version>
+ </dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMgtService.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMgtService.java
new file mode 100644
index 00000000..71602247
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMgtService.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf;
+
+import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult;
+
+public interface ResourceMgtService {
+
+ ServiceResult querySlicingBusiness(int pageNo, int pageSize);
+
+ ServiceResult querySlicingBusinessByStatus(String processingStatus, int pageNo, int pageSize);
+
+ ServiceResult querySlicingBusinessDetails(String businessId);
+
+ ServiceResult queryNsiInstances(int pageNo, int pageSize);
+
+ ServiceResult queryNsiInstancesByStatus(String instanceStatus, int pageNo, int pageSize);
+
+ ServiceResult queryNsiDetails(String nsiId);
+
+ ServiceResult queryNsiRelatedNssiInfo(String nsiId);
+
+ ServiceResult queryNssiInstances(int pageNo, int pageSize);
+
+ ServiceResult queryNssiInstancesByStatus(String instanceStatus, int pageNo, int pageSize);
+
+ ServiceResult queryNssiInstancesByEnvironment(String environmentContext, int pageNo, int pageSize);
+
+ ServiceResult queryNssiDetails(String nssiId);
+
+ ServiceResult activateSlicingService(String serviceId);
+
+ ServiceResult deactivateSlicingService(String serviceId);
+
+ ServiceResult terminateSlicingService(String serviceId);
+
+ ServiceResult queryOperationProgress(String serviceId);
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java
new file mode 100644
index 00000000..253367df
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/TaskMgtService.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf;
+
+import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskAuditInfo;
+
+public interface TaskMgtService {
+
+ ServiceResult querySlicingTask(int pageNo, int pageSize);
+
+ ServiceResult querySlicingTaskByStatus(String processingStatus, int pageNo, int pageSize);
+
+ ServiceResult queryTaskAuditInfo(String taskId);
+
+ ServiceResult updateTaskAuditInfo(SlicingTaskAuditInfo slicingTaskAuditInfo);
+
+ ServiceResult queryTaskCreationInfo(String taskId);
+
+ ServiceResult queryTaskCreationProgress(String taskId);
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java
new file mode 100644
index 00000000..df6c8be8
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/GeneralConvertImpl.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant;
+import org.onap.usecaseui.server.service.slicingdomain.aai.AAISliceService;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceAndInstance;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.Relationship;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import retrofit2.Response;
+
+public class GeneralConvertImpl {
+
+ private static final Logger logger = LoggerFactory.getLogger(GeneralConvertImpl.class);
+ private AAISliceService aaiSliceService;
+
+ public GeneralConvertImpl() {
+ this(RestfulServices.create(AAISliceService.class));
+ }
+
+ public GeneralConvertImpl(AAISliceService aaiSliceService) {
+ this.aaiSliceService = aaiSliceService;
+ }
+
+ public AAIServiceAndInstance queryServiceUtil(JSONObject object) {
+ if (object.containsKey("relationship-list")) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ aaiServiceAndInstance.setModelInvariantId(object.getString("model-invariant-id"));
+ aaiServiceAndInstance.setModelVersionId(object.getString("model-version-id"));
+ if (object.containsKey("workload-context")) {
+ aaiServiceAndInstance.setWorkloadContext(object.getString("workload-context"));
+ }
+
+ JSONArray array = object.getJSONObject("relationship-list").getJSONArray("relationship");
+ List<Relationship> relationshipList = new ArrayList<Relationship>();
+ for (int i = 0; i < array.size(); i++) {
+ Relationship relationship = new Relationship();
+ JSONObject objectShip = array.getJSONObject(i);
+ JSONArray arrayData = objectShip.getJSONArray("relationship-data");
+ relationship.setRelatedTo(objectShip.getString("related-to"));
+ List<RelationshipData> RelationshipDataList = new ArrayList<RelationshipData>();
+ for (int j = 0; j < arrayData.size(); j++) {
+ RelationshipData relationshipData = new RelationshipData();
+ JSONObject objectData = arrayData.getJSONObject(j);
+ relationshipData.setRelationshipKey(objectData.getString("relationship-key"));
+ relationshipData.setRelationshipValue(objectData.getString("relationship-value"));
+ RelationshipDataList.add(relationshipData);
+ }
+ relationshipList.add(relationship);
+ relationship.setRelationshipData(RelationshipDataList);
+
+ }
+ aaiServiceAndInstance.setRelationshipList(relationshipList);
+ return aaiServiceAndInstance;
+ } else {
+ return null;
+ }
+
+ }
+
+ List<String> getAreaTaList(String sourceCoverageAreaTAList) {
+ if (sourceCoverageAreaTAList == null || sourceCoverageAreaTAList.length() == 0) {
+ logger.error("getAreaTaList: sourceCoverageAreaTAList is null or length is 0");
+ return null;
+ }
+ String[] strArr = sourceCoverageAreaTAList.split("\\|");
+ return Arrays.asList(strArr);
+ }
+
+ public AAIServiceAndInstance listServiceByIdUtil(JSONObject object) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ aaiServiceAndInstance.setServiceInstanceId(object.getString("service-instance-id"));
+ aaiServiceAndInstance.setServiceInstanceName(object.getString("service-instance-name"));
+ aaiServiceAndInstance.setEnvironmentContext(object.getString("environment-context"));
+ aaiServiceAndInstance.setOrchestrationStatus(object.getString("orchestration-status"));
+ aaiServiceAndInstance.setServiceType(object.getString("service-type"));
+ return aaiServiceAndInstance;
+
+ }
+
+ String getUseInterval(String serviceId) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .queryOrderByService(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, serviceId)
+ .execute();
+ if (response.isSuccessful()) {
+ JSONObject object = response.body();
+ logger.info("getUseInterval: queryOrderByService response is:{}", response.body());
+ aaiServiceAndInstance = queryServiceUtil(object);
+ String orderId = getOrderIdFromRelation(aaiServiceAndInstance);
+ Response<JSONObject> orderResponse = this.aaiSliceService
+ .queryOrderByOrderId(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, orderId)
+ .execute();
+ if (orderResponse.isSuccessful()) {
+ logger.info("getUseInterval: queryOrderByOrderId response is:{}", orderResponse.body());
+ JSONObject orderObject = orderResponse.body();
+ AAIServiceAndInstance aaiOrderServiceAndInstance = queryServiceUtil(orderObject);
+ String useInterval = aaiOrderServiceAndInstance.getWorkloadContext();
+ return useInterval;
+ } else {
+ logger.error(String
+ .format("getUseInterval: Can not get queryOrderByOrderId[code={}, message={}]", response.code(),
+ response.message()));
+ return "";
+ }
+
+ } else {
+ logger.error(String
+ .format("getUseInterval: Can not get queryOrderByService[code={}, message={}]", response.code(),
+ response.message()));
+ return "";
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return "";
+ }
+ }
+
+ String getOrderIdFromRelation(AAIServiceAndInstance aaiServiceAndInstance) {
+ //获取第一个元素,总共一个切片业务对应一个订单
+ String orderId = "";
+ if (aaiServiceAndInstance.getRelationshipList() != null
+ && aaiServiceAndInstance.getRelationshipList().size() > 0) {
+ Relationship relationship = aaiServiceAndInstance.getRelationshipList().get(0);
+
+ if (null != relationship) {
+ List<org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData> relationshipDataList = relationship
+ .getRelationshipData();
+
+ for (org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData relationshipData : relationshipDataList) {
+ String relationKey = relationshipData.getRelationshipKey();
+ if (relationKey.equals("service-instance.service-instance-id")) {
+ orderId = relationshipData.getRelationshipValue();
+ }
+ }
+ }
+ }
+
+ return orderId;
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceConvert.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceConvert.java
new file mode 100644
index 00000000..df7c2d1b
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceConvert.java
@@ -0,0 +1,594 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import static org.onap.usecaseui.server.util.RestfulServices.create;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.beanutils.BeanUtils;
+import org.onap.usecaseui.server.bean.nsmf.common.PagedResult;
+import org.onap.usecaseui.server.bean.nsmf.resource.HostedBusinessInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.HostedNsiInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.HostedNsiList;
+import org.onap.usecaseui.server.bean.nsmf.resource.IncludedNssiInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiDetailList;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiRelatedNssiInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiServiceInstanceInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiServiceInstanceList;
+import org.onap.usecaseui.server.bean.nsmf.resource.NssiServiceInstanceInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.NssiServiceInstanceList;
+import org.onap.usecaseui.server.bean.nsmf.resource.SlicingBusinessDetails;
+import org.onap.usecaseui.server.bean.nsmf.resource.SlicingBusinessInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.SlicingBusinessList;
+import org.onap.usecaseui.server.bean.nsmf.resource.SubscriberInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.BusinessDemandInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.NstInfo;
+import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant;
+import org.onap.usecaseui.server.service.slicingdomain.aai.AAISliceService;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIService;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceAndInstance;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceNST;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceProfiles;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceRsp;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.Relationship;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.RelationshipData;
+import org.onap.usecaseui.server.service.slicingdomain.so.SOSliceService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOOperation;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.onap.usecaseui.server.util.nsmf.NsmfCommonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import retrofit2.Response;
+
+public class ResourceMgtServiceConvert {
+
+ private static final Logger logger = LoggerFactory.getLogger(ResourceMgtServiceConvert.class);
+ GeneralConvertImpl generalConvert = new GeneralConvertImpl();
+ private SOSliceService soSliceService;
+ private AAISliceService aaiSliceService;
+ Gson gson = new Gson();
+
+ public ResourceMgtServiceConvert() {
+ this(RestfulServices.create(SOSliceService.class), RestfulServices.create(AAISliceService.class));
+ }
+
+ public ResourceMgtServiceConvert(SOSliceService soSliceService, AAISliceService aaiSliceService) {
+ this.soSliceService = soSliceService;
+ this.aaiSliceService = aaiSliceService;
+ }
+
+ void convertSlicingBusinessList(SlicingBusinessList slicingBusinessList, AAIServiceRsp aAIServiceRsp, int pageNo,
+ int pageSize)
+ throws InvocationTargetException, IllegalAccessException, IOException {
+ if (aAIServiceRsp.getaAIService() == null || aAIServiceRsp.getaAIService().size() == 0) {
+ logger.error("convertSlicingBusinessList:aAIServiceRsp.getaAIService() is null or size is 0");
+ return;
+ }
+
+ List<SlicingBusinessInfo> slicingBusinessInfoList = new ArrayList<>();
+ for (AAIService aaiServiceInstance : aAIServiceRsp.getaAIService()) {
+ SlicingBusinessInfo slicingBusinessInfo = new SlicingBusinessInfo();
+ BeanUtils.copyProperties(slicingBusinessInfo, aaiServiceInstance);
+ slicingBusinessInfoList.add(slicingBusinessInfo);
+ }
+ PagedResult pagedOrderList = NsmfCommonUtil.getPagedList(slicingBusinessInfoList, pageNo, pageSize);
+ slicingBusinessList.setSlicingBusinessInfoList(pagedOrderList.getPagedList());
+ slicingBusinessList.setRecordNumber(slicingBusinessInfoList.size());
+ }
+
+ void convertBusinessDetails(String businessId, SlicingBusinessDetails slicingBusinessDetails,
+ AAIServiceAndInstance aaiServiceAndInstance)
+ throws InvocationTargetException, IllegalAccessException, IOException {
+ convertBusinessProfileDetails(businessId, slicingBusinessDetails, aaiServiceAndInstance);
+
+ String nsiId = getNsiIdByBusiness(businessId);
+ NstInfo nstInfo = new NstInfo();
+ getNstInfoByBusiness(nstInfo, nsiId);
+ slicingBusinessDetails.setNstInfo(nstInfo);
+
+ NsiInfo nsiInfo = new NsiInfo();
+ getNsiInfoByBusiness(nsiInfo, nsiId);
+ slicingBusinessDetails.setNsiInfo(nsiInfo);
+
+ }
+
+ void getNsiInfoByBusiness(NsiInfo nsiInfo, String nsiId) {
+ try {
+ // TODO
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ Response<JSONObject> response = this.aaiSliceService
+ .listServiceById(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, nsiId)
+ .execute();
+ if (response.isSuccessful()) {
+ logger.info("getNsiInfoByBusiness:listServiceById reponse is:{}", response.body());
+ JSONObject object = response.body();
+ aaiServiceAndInstance = generalConvert.listServiceByIdUtil(object);
+ nsiInfo.setNsiId(aaiServiceAndInstance.getServiceInstanceId());
+ nsiInfo.setNsiName(aaiServiceAndInstance.getServiceInstanceName());
+ nsiInfo.setNsiOrchestrationStatus(aaiServiceAndInstance.getOrchestrationStatus());
+ nsiInfo.setNsiType(aaiServiceAndInstance.getServiceType());
+ } else {
+ logger.error(String
+ .format("getNsiInfoByBusiness: Can not get listServiceById [code={}, message={}]", response.code(),
+ response.message()));
+ return;
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return;
+ }
+ }
+
+ void getNstInfoByBusiness(NstInfo nstInfo, String nsiId)
+ throws IOException {
+ String modelInvariantId;
+ String modelVersionId;
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.querySerAndSubInsByNSI(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G, nsiId).execute();
+ if (response.isSuccessful()) {
+ JSONObject object = response.body();
+ logger.info("getNstInfoByBusiness: querySerAndSubInsByNSI reponse is:{}", response.body());
+ AAIServiceAndInstance aaiNsi = queryNsiDetailsUtils(object);
+ HostedNsiInfo hostedNsiInfo = new HostedNsiInfo();
+ modelInvariantId = aaiNsi.getModelInvariantId();
+ modelVersionId = aaiNsi.getModelVersionId();
+ } else {
+ logger.error(String
+ .format("getNstInfoByBusiness: Can not get listServiceById [code={}, message={}]", response.code(),
+ response.message()));
+ return;
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return;
+ }
+
+ try {
+ // TODO
+ Response<AAIServiceNST> nstResponse = this.aaiSliceService.queryServiceNST(modelInvariantId, modelVersionId)
+ .execute();
+ if (nstResponse.isSuccessful()) {
+ AAIServiceNST aaiServiceNST = nstResponse.body();
+ logger.info("getNstInfoByBusiness: queryServiceNST reponse is:{}", gson.toJson(aaiServiceNST));
+ nstInfo.setNstId(aaiServiceNST.getModelVersionId());
+ nstInfo.setNstName(aaiServiceNST.getModelName());
+ } else {
+ logger.error(String.format("Can not get queryServiceNST [code={}, message={}]", nstResponse.code(),
+ nstResponse.message()));
+ return;
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return;
+ }
+ }
+
+ String getNsiIdByBusiness(String businessId)
+ throws IOException {
+ List<AAIServiceAndInstance> aaiServiceAndInstanceList = new ArrayList<>();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.queryAllottedResources(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G, businessId).execute();
+ if (response.isSuccessful()) {
+ logger.info("getNsiIdByBusiness: queryAllottedResources response is: {}", response.body());
+ JSONObject object = response.body();
+ aaiServiceAndInstanceList = queryAllottedResourceUtil(object);
+
+ AAIServiceAndInstance aaiServiceAndInstance = aaiServiceAndInstanceList.get(0);
+ Relationship relationship = aaiServiceAndInstance.getRelationshipList().get(0);
+ List<RelationshipData> relationshipDataList = relationship.getRelationshipData();
+ for (RelationshipData relationshipData : relationshipDataList) {
+ if (relationshipData.getRelationshipKey()
+ .equals(NsmfParamConstant.SERVICE_INSTANCE_SERVICE_INSTANCE_ID)) {
+ String nsiId = relationshipData.getRelationshipValue();
+ return nsiId;
+ }
+ }
+
+ } else {
+ logger.error(String
+ .format("getNsiIdByBusiness: Can not get queryAllottedResources[code={}, message={}]",
+ response.code(),
+ response.message()));
+ return "";
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ return "";
+ }
+ return "";
+ }
+
+ void convertBusinessProfileDetails(String businessId, SlicingBusinessDetails slicingBusinessDetails,
+ AAIServiceAndInstance aaiServiceAndInstance)
+ throws InvocationTargetException, IllegalAccessException, IOException {
+
+ BusinessDemandInfo businessDemandInfo = new BusinessDemandInfo();
+ businessDemandInfo.setServiceName(aaiServiceAndInstance.getServiceInstanceName());
+ businessDemandInfo.setServiceSnssai(aaiServiceAndInstance.getEnvironmentContext());
+
+ AAIServiceProfiles aaiServiceProfiles = new AAIServiceProfiles();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.getServiceProfiles(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G, businessId).execute();
+
+ if (response.isSuccessful()) {
+ logger.info("convertBusinessProfileDetails:getServiceProfiles is:{}", response.body());
+ JSONObject object = response.body();
+ if (object.containsKey("service-profile")) {
+ JSONArray array = object.getJSONArray("service-profile");
+ // return normal result code
+ JSONObject objectProfile = array.getJSONObject(0);
+ aaiServiceProfiles = objectProfile
+ .parseObject(objectProfile.toString(), AAIServiceProfiles.class);
+ } else {
+ logger.error(String
+ .format("convertBusinessProfileDetails:Can not get getServiceProfiles[code={}, message={}]",
+ response.code(),
+ response.message()));
+ }
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ }
+
+ String useInterval = generalConvert.getUseInterval(businessId);
+ businessDemandInfo.setUseInterval(useInterval);
+ BeanUtils.copyProperties(businessDemandInfo, aaiServiceProfiles);
+ List<String> areaInfoList = generalConvert.getAreaTaList(aaiServiceProfiles.getCoverageAreaTAList());
+ businessDemandInfo.setCoverageAreaTaList(areaInfoList);
+ slicingBusinessDetails.setBusinessDemandInfo(businessDemandInfo);
+ }
+
+ void convertHostedNsiList(NsiServiceInstanceList nsiServiceInstanceList, AAIServiceRsp aAIServiceRsp, int pageNo,
+ int pageSize)
+ throws InvocationTargetException, IllegalAccessException {
+
+ if (aAIServiceRsp.getaAIService() == null || aAIServiceRsp.getaAIService().size() == 0) {
+ logger.error("convertHostedNsiList:aAIServiceRsp.getaAIService() is null or size is 0");
+ return;
+ }
+ int i = 0;
+ List<NsiServiceInstanceInfo> nsiServiceInstanceInfoList = new ArrayList<>();
+ for (AAIService aaiServiceInstance : aAIServiceRsp.getaAIService()) {
+ i++;
+ NsiServiceInstanceInfo nsiServiceInstanceInfo = new NsiServiceInstanceInfo();
+ nsiServiceInstanceInfo.setServiceInstanceOrder(String.valueOf(i));
+ nsiServiceInstanceInfo.setOrchestrationStatus(aaiServiceInstance.getOrchestrationStatus());
+ nsiServiceInstanceInfo.setServiceInstanceId(aaiServiceInstance.getServiceInstanceId());
+ nsiServiceInstanceInfo.setServiceInstanceName(aaiServiceInstance.getServiceInstanceName());
+ nsiServiceInstanceInfo.setServiceType(aaiServiceInstance.getServiceType());
+
+ nsiServiceInstanceInfoList.add(nsiServiceInstanceInfo);
+ }
+
+ PagedResult pagedOrderList = NsmfCommonUtil.getPagedList(nsiServiceInstanceInfoList, pageNo, pageSize);
+ nsiServiceInstanceList.setNsiServiceInstanceInfoList(pagedOrderList.getPagedList());
+ nsiServiceInstanceList.setRecordNumber(nsiServiceInstanceInfoList.size());
+ }
+
+ void convertNsiDetailList(NsiDetailList nsiDetailList, AAIServiceAndInstance aaiServiceAndInstance)
+ throws IllegalAccessException, IOException, InvocationTargetException {
+
+ List<String> businessIdList = new ArrayList<>();
+ List<String> nssiIdList = new ArrayList<>();
+ getBusinessAndNssiIds(aaiServiceAndInstance, businessIdList, nssiIdList);
+
+ List<HostedBusinessInfo> hostedBusinessInfoList = new ArrayList<>();
+ getHostedBusinessInfoList(hostedBusinessInfoList, businessIdList);
+ nsiDetailList.setHostedBusinessInfoList(hostedBusinessInfoList);
+
+ List<IncludedNssiInfo> includedNssiInfoList = new ArrayList<>();
+ getIncludedNssiInfoList(includedNssiInfoList, nssiIdList);
+ nsiDetailList.setIncludedNssiInfoList(includedNssiInfoList);
+
+ }
+
+ void getIncludedNssiInfoList(List<IncludedNssiInfo> includedNssiInfoList, List<String> nssiIdList)
+ throws IOException, InvocationTargetException, IllegalAccessException {
+ int i = 0;
+ for (String nssiId : nssiIdList) {
+ i++;
+ try {
+ // TODO
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ Response<JSONObject> response = this.aaiSliceService
+ .listServiceById(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, nssiId)
+ .execute();
+ if (response.isSuccessful()) {
+ logger.info("getIncludedNssiInfoList:listServiceById reponse is:{}", response.body());
+ JSONObject object = response.body();
+ aaiServiceAndInstance = generalConvert.listServiceByIdUtil(object);
+ IncludedNssiInfo includedNssiInfo = new IncludedNssiInfo();
+ BeanUtils.copyProperties(includedNssiInfo, aaiServiceAndInstance);
+ includedNssiInfo.setServiceInstanceId(nssiId);
+ includedNssiInfo.setServiceInstanceOrder(String.valueOf(i));
+ includedNssiInfoList.add(includedNssiInfo);
+
+ } else {
+ logger.error(String
+ .format("getIncludedNssiInfoList:Can not get listServiceById [code={}, message={}]",
+ response.code(),
+ response.message()));
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ }
+ }
+ }
+
+ void getHostedBusinessInfoList(List<HostedBusinessInfo> hostedBusinessInfoList, List<String> businessIdList)
+ throws IOException, InvocationTargetException, IllegalAccessException {
+ for (String businessId : businessIdList) {
+ try {
+ // TODO
+ // 添加给slicingTaskCreationProgress赋值的代码
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ Response<JSONObject> response = this.aaiSliceService
+ .listServiceById(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, businessId)
+ .execute();
+ if (response.isSuccessful()) {
+ logger.info("getHostedBusinessInfoList: listServiceById reponse is:{}", response.body());
+ JSONObject object = response.body();
+ aaiServiceAndInstance = generalConvert.listServiceByIdUtil(object);
+ HostedBusinessInfo hostedBusinessInfo = new HostedBusinessInfo();
+ BeanUtils.copyProperties(hostedBusinessInfo, aaiServiceAndInstance);
+ hostedBusinessInfo.setServiceInstanceId(businessId);
+ hostedBusinessInfoList.add(hostedBusinessInfo);
+
+ } else {
+ logger.error(String
+ .format("getHostedBusinessInfoList: Can not get listServiceById [code={}, message={}]",
+ response.code(),
+ response.message()));
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ }
+ }
+ }
+
+ void getBusinessAndNssiIds(AAIServiceAndInstance aaiServiceAndInstance, List<String> businessIdList,
+ List<String> nssiIdList) {
+ List<Relationship> relationshipList = aaiServiceAndInstance.getRelationshipList();
+ if (relationshipList != null && relationshipList.size() > 0) {
+ for (Relationship relationship : relationshipList) {
+ if (relationship.getRelatedTo().equals(NsmfParamConstant.ALLOTTED_RESOURCE)) {
+ List<RelationshipData> relationshipDataList = relationship.getRelationshipData();
+ for (RelationshipData relationshipData : relationshipDataList) {
+ if (relationshipData.getRelationshipKey()
+ .equals(NsmfParamConstant.SERVICE_INSTANCE_SERVICE_INSTANCE_ID)) {
+ businessIdList.add(relationshipData.getRelationshipValue());
+ }
+ }
+ }
+ if (relationship.getRelatedTo().equals(NsmfParamConstant.SERVICE_INSTANCE)) {
+ List<RelationshipData> relationshipDataList = relationship.getRelationshipData();
+ for (RelationshipData relationshipData : relationshipDataList) {
+ if (relationshipData.getRelationshipKey()
+ .equals(NsmfParamConstant.SERVICE_INSTANCE_SERVICE_INSTANCE_ID)) {
+ nssiIdList.add(relationshipData.getRelationshipValue());
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ void convertNsiRelatedNssiInfo(NsiRelatedNssiInfo nsiRelatedNssiInfo, AAIServiceAndInstance aaiServiceAndInstance)
+ throws IllegalAccessException, IOException, InvocationTargetException {
+
+ List<String> nssiIdList = new ArrayList<>();
+ List<String> businessIdList = new ArrayList<>();
+ getBusinessAndNssiIds(aaiServiceAndInstance, businessIdList, nssiIdList);
+ List<IncludedNssiInfo> includedNssiInfoList = new ArrayList<>();
+ getIncludedNssiInfoList(includedNssiInfoList, nssiIdList);
+ getNsiRelatedNssiInfo(nsiRelatedNssiInfo, includedNssiInfoList);
+
+ }
+
+ void getNsiRelatedNssiInfo(NsiRelatedNssiInfo nsiRelatedNssiInfo, List<IncludedNssiInfo> includedNssiInfoList) {
+ for (IncludedNssiInfo includedNssiInfo : includedNssiInfoList) {
+ if (includedNssiInfo.getEnvironmentContext().equals(NsmfParamConstant.AN_NAME)) {
+ nsiRelatedNssiInfo.setAnSuggestNssiId(includedNssiInfo.getServiceInstanceId());
+ nsiRelatedNssiInfo.setAnSuggestNssiName(includedNssiInfo.getServiceInstanceName());
+ }
+
+ if (includedNssiInfo.getEnvironmentContext().equals(NsmfParamConstant.TN_NAME)) {
+ nsiRelatedNssiInfo.setTnSuggestNssiId(includedNssiInfo.getServiceInstanceId());
+ nsiRelatedNssiInfo.setTnSuggestNssiName(includedNssiInfo.getServiceInstanceName());
+ }
+
+ if (includedNssiInfo.getEnvironmentContext().equals(NsmfParamConstant.CN_NAME)) {
+ nsiRelatedNssiInfo.setCnSuggestNssiId(includedNssiInfo.getServiceInstanceId());
+ nsiRelatedNssiInfo.setCnSuggestNssiName(includedNssiInfo.getServiceInstanceName());
+ }
+ }
+ }
+
+ void convertNssiServiceInstanceList(NssiServiceInstanceList nssiServiceInstanceList,
+ AAIServiceRsp aAIServiceRsp,
+ int pageNo, int pageSize)
+ throws InvocationTargetException, IllegalAccessException {
+ if (aAIServiceRsp.getaAIService() == null || aAIServiceRsp.getaAIService().size() == 0) {
+ logger.error("convertNssiServiceInstanceList: aAIServiceRsp.getaAIService() is null or size is 0");
+ return;
+ }
+
+ List<NssiServiceInstanceInfo> nssiServiceInstanceInfoList = new ArrayList<>();
+ int i = 0;
+ for (AAIService aaiService : aAIServiceRsp.getaAIService()) {
+ i++;
+ NssiServiceInstanceInfo nssiServiceInstanceInfo = new NssiServiceInstanceInfo();
+ BeanUtils.copyProperties(nssiServiceInstanceInfo, aaiService);
+ nssiServiceInstanceInfo.setServiceInstanceOrder(String.valueOf(i));
+ nssiServiceInstanceInfoList.add(nssiServiceInstanceInfo);
+ }
+ PagedResult pagedOrderList = NsmfCommonUtil.getPagedList(nssiServiceInstanceInfoList, pageNo, pageSize);
+ nssiServiceInstanceList.setNssiServiceInstanceInfoList(pagedOrderList.getPagedList());
+ nssiServiceInstanceList.setRecordNumber(nssiServiceInstanceInfoList.size());
+ }
+
+ void convertNssiDetails(HostedNsiList hostedNsiList, AAIServiceAndInstance aaiServiceAndInstance)
+ throws InvocationTargetException, IllegalAccessException, IOException {
+
+ List<String> nsiIdList = new ArrayList<>();
+ List<String> emptyList = new ArrayList<>();
+ getBusinessAndNssiIds(aaiServiceAndInstance, emptyList, nsiIdList);
+ List<HostedNsiInfo> hostedNsiInfoList = new ArrayList<>();
+ for (String nsiId : nsiIdList) {
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.querySerAndSubInsByNSI(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G, nsiId).execute();
+ if (response.isSuccessful()) {
+ JSONObject object = response.body();
+ logger.info("convertNssiDetails: querySerAndSubInsByNSI reponse is:{}", response.body());
+ AAIServiceAndInstance aaiNssi = queryNsiDetailsUtils(object);
+ HostedNsiInfo hostedNsiInfo = new HostedNsiInfo();
+ hostedNsiInfo.setServiceInstanceId(aaiNssi.getServiceInstanceId());
+ hostedNsiInfo.setServiceInstanceName(aaiNssi.getServiceInstanceName());
+ hostedNsiInfo.setServiceType(aaiNssi.getServiceType());
+ hostedNsiInfo.setOrchestrationStatus(aaiNssi.getOrchestrationStatus());
+ hostedNsiInfoList.add(hostedNsiInfo);
+ } else {
+ logger.error(String.format("convertNssiDetails: Can not get listServiceById [code={}, message={}]",
+ response.code(),
+ response.message()));
+ }
+ } catch (Exception e) {
+ logger.error(e.getMessage());
+ }
+ }
+
+ hostedNsiList.setHostedNsiInfoList(hostedNsiInfoList);
+ hostedNsiList.setRecordNumber(hostedNsiInfoList.size());
+ }
+
+ SubscriberInfo buildSubscriberInfo(String globalSubscriberId, String serviceType) {
+
+ SubscriberInfo subscriberInfo = new SubscriberInfo();
+ subscriberInfo.setGlobalSubscriberId(globalSubscriberId);
+ subscriberInfo.setServiceType(serviceType);
+ return subscriberInfo;
+ }
+
+ void buildAAIServiceRsp(AAIServiceRsp aAIServiceRsp, JSONArray array) {
+ List<AAIService> aaiserviceList = new ArrayList<AAIService>();
+ for (int i = 0; i < array.size(); i++) {
+ JSONObject object = array.getJSONObject(i);
+ AAIService aaiService = new AAIService();
+ aaiService.setServiceInstanceId(object.getString("service-instance-id"));
+ aaiService.setServiceInstanceName(object.getString("service-instance-name"));
+ aaiService.setServiceType(object.getString("service-type"));
+ aaiService.setEnvironmentContext(object.getString("environment-context"));
+ aaiService.setOrchestrationStatus(object.getString("orchestration-status"));
+ aaiserviceList.add(aaiService);
+ }
+ aAIServiceRsp.setaAIService(aaiserviceList);
+ }
+
+ public AAIServiceAndInstance queryNsiDetailsUtils(JSONObject object) {
+ if (object.containsKey("relationship-list")) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ aaiServiceAndInstance.setServiceInstanceId(object.getString("service-instance-id"));
+ aaiServiceAndInstance.setServiceInstanceName(object.getString("service-instance-name"));
+ aaiServiceAndInstance.setModelInvariantId(object.getString("model-invariant-id"));
+ aaiServiceAndInstance.setModelVersionId(object.getString("model-version-id"));
+ aaiServiceAndInstance.setServiceType(object.getString("service-type"));
+ aaiServiceAndInstance.setOrchestrationStatus(object.getString("orchestration-status"));
+
+ JSONArray array = object.getJSONObject("relationship-list").getJSONArray("relationship");
+ List<Relationship> relationshipList = new ArrayList<Relationship>();
+ for (int i = 0; i < array.size(); i++) {
+
+ Relationship relationship = new Relationship();
+ JSONObject objectShip = array.getJSONObject(i);
+ JSONArray arrayData = objectShip.getJSONArray("relationship-data");
+ relationship.setRelatedTo(objectShip.getString("related-to"));
+ List<RelationshipData> RelationshipDataList = new ArrayList<RelationshipData>();
+ for (int j = 0; j < arrayData.size(); j++) {
+ RelationshipData relationshipData = new RelationshipData();
+ JSONObject objectData = arrayData.getJSONObject(j);
+ relationshipData.setRelationshipKey(objectData.getString("relationship-key"));
+ relationshipData.setRelationshipValue(objectData.getString("relationship-value"));
+ RelationshipDataList.add(relationshipData);
+ }
+ relationshipList.add(relationship);
+ relationship.setRelationshipData(RelationshipDataList);
+
+ }
+ aaiServiceAndInstance.setRelationshipList(relationshipList);
+ return aaiServiceAndInstance;
+ } else {
+ return null;
+ }
+ }
+
+ public List<AAIServiceAndInstance> queryAllottedResourceUtil(JSONObject objectResource) {
+ JSONArray arrayResource = objectResource.getJSONArray("allotted-resource");
+ if (arrayResource == null || arrayResource.size() == 0) {
+ logger.error("arrayResource is null or size is 0");
+ return null;
+ }
+
+ List<AAIServiceAndInstance> aaiServiceAndInstanceList = new ArrayList<AAIServiceAndInstance>();
+ for (int i = 0; i < arrayResource.size(); i++) {
+ JSONObject object = arrayResource.getJSONObject(i);
+ if (object.containsKey("relationship-list")) {
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ JSONArray array = object.getJSONObject("relationship-list").getJSONArray("relationship");
+ List<Relationship> relationshipList = new ArrayList<Relationship>();
+ for (int j = 0; j < array.size(); j++) {
+
+ Relationship relationship = new Relationship();
+ JSONObject objectShip = array.getJSONObject(j);
+ JSONArray arrayData = objectShip.getJSONArray("relationship-data");
+ relationship.setRelatedTo(objectShip.getString("related-to"));
+ List<RelationshipData> RelationshipDataList = new ArrayList<RelationshipData>();
+ for (int h = 0; h < arrayData.size(); h++) {
+ RelationshipData relationshipData = new RelationshipData();
+ JSONObject objectData = arrayData.getJSONObject(h);
+ relationshipData.setRelationshipKey(objectData.getString("relationship-key"));
+ relationshipData.setRelationshipValue(objectData.getString("relationship-value"));
+ RelationshipDataList.add(relationshipData);
+ }
+ relationshipList.add(relationship);
+ relationship.setRelationshipData(RelationshipDataList);
+
+ }
+ aaiServiceAndInstance.setRelationshipList(relationshipList);
+ aaiServiceAndInstanceList.add(aaiServiceAndInstance);
+ } else {
+ return null;
+ }
+ }
+ return aaiServiceAndInstanceList;
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceImpl.java
new file mode 100644
index 00000000..abb15a54
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMgtServiceImpl.java
@@ -0,0 +1,863 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.text.ParseException;
+import java.util.List;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import javax.annotation.Resource;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import org.onap.usecaseui.server.bean.ServiceInstanceOperations;
+import org.onap.usecaseui.server.bean.nsmf.common.ResultHeader;
+import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult;
+import org.onap.usecaseui.server.bean.nsmf.resource.HostedNsiList;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiDetailList;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiRelatedNssiInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.NsiServiceInstanceList;
+import org.onap.usecaseui.server.bean.nsmf.resource.NssiServiceInstanceList;
+import org.onap.usecaseui.server.bean.nsmf.resource.ServiceOperationProgress;
+import org.onap.usecaseui.server.bean.nsmf.resource.ServiceOperationResult;
+import org.onap.usecaseui.server.bean.nsmf.resource.SlicingBusinessDetails;
+import org.onap.usecaseui.server.bean.nsmf.resource.SlicingBusinessInfo;
+import org.onap.usecaseui.server.bean.nsmf.resource.SlicingBusinessList;
+import org.onap.usecaseui.server.bean.nsmf.resource.SubscriberInfo;
+import org.onap.usecaseui.server.constant.CommonConstant;
+import org.onap.usecaseui.server.constant.nsmf.NsmfCodeConstant;
+import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant;
+import org.onap.usecaseui.server.service.lcm.ServiceLcmService;
+import org.onap.usecaseui.server.service.nsmf.ResourceMgtService;
+import org.onap.usecaseui.server.service.slicingdomain.aai.AAISliceService;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceAndInstance;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceInstance;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceRsp;
+import org.onap.usecaseui.server.service.slicingdomain.so.SOSliceService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.ActivateService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOOperation;
+import org.onap.usecaseui.server.util.DateUtils;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.stereotype.Service;
+import retrofit2.Response;
+
+@Service("ResourceMgtService")
+@org.springframework.context.annotation.Configuration
+@EnableAspectJAutoProxy
+public class ResourceMgtServiceImpl implements ResourceMgtService {
+
+ private static final Logger logger = LoggerFactory.getLogger(ResourceMgtServiceImpl.class);
+ @Resource(name = "ServiceLcmService")
+ private ServiceLcmService serviceLcmService;
+
+ private ResourceMgtServiceConvert resourceMgtServiceConvert = new ResourceMgtServiceConvert();
+ GeneralConvertImpl generalConvert = new GeneralConvertImpl();
+
+ private AAISliceService aaiSliceService;
+ private SOSliceService soSliceService;
+ Gson gson = new Gson();
+
+ public ResourceMgtServiceImpl() {
+ this(RestfulServices.create(AAISliceService.class), RestfulServices.create(SOSliceService.class));
+ }
+
+ public ResourceMgtServiceImpl(AAISliceService aaiSliceService, SOSliceService soSliceService) {
+ this.aaiSliceService = aaiSliceService;
+ this.soSliceService = soSliceService;
+ }
+
+ @Override
+ public ServiceResult querySlicingBusiness(int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingBusinessList slicingBusinessList = new SlicingBusinessList();
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .listService(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G).execute();
+ if (response.isSuccessful()) {
+ logger.info("querySlicingBusiness: listService reponse is:{}", response.body());
+ Type type = new TypeToken<List<AAIServiceInstance>>() {
+ }.getType();
+
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert.convertSlicingBusinessList(slicingBusinessList,
+ aAIServiceRsp, pageNo, pageSize);
+ addBusinessProgress(slicingBusinessList);
+ // return normal result code
+ resultMsg = "5G slicing business instances query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("querySlicingBusiness: Can not get slicingBusinessList[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task result query failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing business instances query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("querySlicingBusiness: 5G slicing business instances query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingBusinessList);
+ return serviceResult;
+ }
+
+ public void addBusinessProgress(SlicingBusinessList slicingBusinessList) {
+ if (slicingBusinessList.getSlicingBusinessInfoList() == null
+ || slicingBusinessList.getSlicingBusinessInfoList().size() == 0) {
+ logger.error(
+ "addBusinessProgress: slicingBusinessList.getSlicingBusinessInfoList() is null or slicingBusinessList.getSlicingBusinessInfoList() size is 0.");
+ return;
+ }
+
+ for (SlicingBusinessInfo slicingBusinessInfo : slicingBusinessList.getSlicingBusinessInfoList()) {
+ String businessId = slicingBusinessInfo.getServiceInstanceId();
+ ServiceInstanceOperations serviceInstanceOperations = serviceLcmService
+ .getServiceInstanceOperationById(businessId);
+ if (null == serviceInstanceOperations || serviceInstanceOperations.getOperationId() == null) {
+ logger.error(
+ "addBusinessProgress: null == serviceInstanceOperations for businessId:{}.",
+ businessId);
+ continue;
+ }
+ String operationId = serviceInstanceOperations.getOperationId();
+ Response<SOOperation> response = null;
+ try {
+ response = this.soSliceService.queryOperationProgress(businessId, operationId)
+ .execute();
+ if (response.isSuccessful()) {
+ SOOperation soOperation = response.body();
+ Gson gson = new Gson();
+ logger.info("addBusinessProgress: queryOperationProgress reponse is:{}",
+ gson.toJson(soOperation).toString());
+ if (soOperation == null || soOperation.getOperation() == null) {
+ logger.error("addBusinessProgress: soOperation is null or getOperation() is null for businessId {}!", businessId);
+ continue;
+ }
+ String operationResult = soOperation.getOperation().getResult();
+ String operationType = soOperation.getOperation().getOperation();
+ int progress = soOperation.getOperation().getProgress();
+ logger.info("addBusinessProgress: operationResult is:{}, operationType is {}, progress is {}",
+ operationResult, operationType, progress);
+ if (operationResult.equals(NsmfCodeConstant.OPERATION_ERROR_STATUS)) {
+ logger.error("addBusinessProgress: progress is ok, but operationResult is error for businessId {}!", businessId);
+ continue;
+ }
+ slicingBusinessInfo.setLastOperationType(operationType);
+ slicingBusinessInfo.setLastOperationProgress(String.valueOf(progress));
+ }
+ } catch (IOException e) {
+ logger.error(e.getMessage());
+ logger.error("addBusinessProgress: catch an IOException for businessId {}!", businessId);
+ continue;
+ }
+ }
+ }
+
+ @Override
+ public ServiceResult querySlicingBusinessByStatus(String processingStatus, int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingBusinessList slicingBusinessList = new SlicingBusinessList();
+ String resultMsg;
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.listServiceByStatus(
+ NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, processingStatus).execute();
+ if (response.isSuccessful()) {
+ logger.info("querySlicingBusinessByStatus: listServiceByStatus reponse is:{}", response.body());
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert.convertSlicingBusinessList(slicingBusinessList,
+ aAIServiceRsp, pageNo, pageSize);
+ addBusinessProgress(slicingBusinessList);
+ // return normal result code
+ resultMsg = "5G slicing business instances query based on status result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("querySlicingBusinessByStatus: Can not get slicingBusinessList[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task result query based on status failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing business instances query based on status failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info(
+ "querySlicingBusinessByStatus: 5G slicing business instances query based on status has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingBusinessList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult querySlicingBusinessDetails(String businessId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ SlicingBusinessDetails slicingBusinessDetails = new SlicingBusinessDetails();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .listServiceById(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, businessId)
+ .execute();
+ if (response.isSuccessful()) {
+ logger.info("querySlicingBusinessDetails: listServiceById reponse is:{}", response.body());
+ JSONObject object = response.body();
+ aaiServiceAndInstance = generalConvert.listServiceByIdUtil(object);
+ resourceMgtServiceConvert.convertBusinessDetails(businessId,
+ slicingBusinessDetails, aaiServiceAndInstance);
+ resultMsg = "5G slicing business details query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("querySlicingBusinessDetails: Can not get AAIServiceInstance[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing business details query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing business details query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("querySlicingBusinessDetails: 5G slicing business details query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingBusinessDetails);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNsiInstances(int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NsiServiceInstanceList nsiServiceInstanceList = new NsiServiceInstanceList();
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+
+ String resultMsg;
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .listServiceNSI(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G).execute();
+ if (response.isSuccessful()) {
+ logger.info("queryNsiInstances: listServiceNSI reponse is:{}", response.body());
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert.convertHostedNsiList(nsiServiceInstanceList, aAIServiceRsp,
+ pageNo, pageSize);
+ resultMsg = "5G slicing NSI service instances query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("queryNsiInstances: Can not get AAIServiceInstanceRsp[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing NSI service instances query failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing NSI service instances query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryNsiInstances: 5G slicing NSI service instances query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nsiServiceInstanceList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNsiInstancesByStatus(String instanceStatus, int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NsiServiceInstanceList nsiServiceInstanceList = new NsiServiceInstanceList();
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.listServiceNSIByStatus(
+ NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, instanceStatus).execute();
+ if (response.isSuccessful()) {
+ logger.info("queryNsiInstancesByStatus: listServiceNSIByStatus reponse is:{}", response.body());
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert.convertHostedNsiList(nsiServiceInstanceList, aAIServiceRsp,
+ pageNo, pageSize);
+ resultMsg = "5G slicing NSI service instances based on status result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryNsiInstancesByStatus: Can not get AAIServiceInstanceRsp[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing NSI service instances based on status query failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing NSI service instances based on status query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info(
+ "queryNsiInstancesByStatus: 5G slicing NSI service instances based on status query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nsiServiceInstanceList);
+ return serviceResult;
+ }
+
+
+ @Override
+ public ServiceResult queryNsiDetails(String serviceInstanceId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NsiDetailList nsiDetailList = new NsiDetailList();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.querySerAndSubInsByNSI(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G, serviceInstanceId).execute();
+ if (response.isSuccessful()) {
+ JSONObject object = response.body();
+ logger.info("queryNsiDetails: querySerAndSubInsByNSI reponse is:{}", response.body());
+ AAIServiceAndInstance aaiServiceAndInstance = resourceMgtServiceConvert.queryNsiDetailsUtils(object);
+ resourceMgtServiceConvert.convertNsiDetailList(nsiDetailList,
+ aaiServiceAndInstance);
+ resultMsg = "5G slicing business details query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryNsiDetails: Can not get AAIServiceAndInstance[code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing business details query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing business details query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryNsiDetails: 5G slicing business details query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nsiDetailList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNsiRelatedNssiInfo(String nsiId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NsiRelatedNssiInfo nsiRelatedNssiInfo = new NsiRelatedNssiInfo();
+ String resultMsg;
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .querySerAndSubInsByNSI(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, nsiId)
+ .execute();
+ if (response.isSuccessful()) {
+ JSONObject object = response.body();
+ logger.info("queryNsiRelatedNssiInfo: querySerAndSubInsByNSI reponse is:{}", response.body());
+ AAIServiceAndInstance aaiServiceAndInstance = resourceMgtServiceConvert.queryNsiDetailsUtils(object);
+ resourceMgtServiceConvert.convertNsiRelatedNssiInfo(nsiRelatedNssiInfo,
+ aaiServiceAndInstance);
+ resultMsg = "NSSI associated with NSI result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryNsiRelatedNssiInfo: Can not get AAIServiceAndInstance[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "NSSI associated with NSI result query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "NSSI associated with NSI query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryNsiRelatedNssiInfo: NSSI associated with NSI query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nsiRelatedNssiInfo);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNssiInstances(int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NssiServiceInstanceList nssiServiceInstanceList = new NssiServiceInstanceList();
+ String resultMsg;
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .listServiceNSSI(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G).execute();
+ if (response.isSuccessful()) {
+ logger.info("queryNssiInstances: listServiceNSSI reponse is:{}", response.body());
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert
+ .convertNssiServiceInstanceList(nssiServiceInstanceList, aAIServiceRsp, pageNo, pageSize);
+ resultMsg = "5G slicing NSI service instances query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("queryNssiInstances: Can not get AAIServiceInstanceRsp[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing NSSI service instances result query failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+
+ } catch (Exception e) {
+ resultMsg = "5G slicing NSSI service instances query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryNssiInstances: 5G slicing NSSI service instances query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nssiServiceInstanceList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNssiInstancesByStatus(String instanceStatus, int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NssiServiceInstanceList nssiServiceInstanceList = new NssiServiceInstanceList();
+ String resultMsg;
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.listServiceNSSIByStatus(
+ NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, instanceStatus).execute();
+ if (response.isSuccessful()) {
+ logger.info("queryNssiInstancesByStatus: listServiceNSSIByStatus reponse is:{}", response.body());
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert
+ .convertNssiServiceInstanceList(nssiServiceInstanceList, aAIServiceRsp, pageNo, pageSize);
+ // return normal result code
+ resultMsg = "5G slicing NSSI service instances based on status result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryNssiInstancesByStatus: Can not get AAIServiceInstanceRsp[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing NSSI service instances based on status query failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing NSSI service instances based on status query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info(
+ "queryNssiInstancesByStatus: 5G slicing NSSI service instances based on status query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nssiServiceInstanceList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNssiInstancesByEnvironment(String environmentContext, int pageNo, int pageSize) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ NssiServiceInstanceList nssiServiceInstanceList = new NssiServiceInstanceList();
+ String resultMsg;
+ AAIServiceRsp aAIServiceRsp = new AAIServiceRsp();
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService.listServiceNSSIByEnv(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G, environmentContext).execute();
+ if (response.isSuccessful()) {
+ logger.info("queryNssiInstancesByEnvironment: listServiceNSSIByEnv reponse is:{}", response.body());
+ JSONArray array = response.body().getJSONArray("service-instance");
+ resourceMgtServiceConvert.buildAAIServiceRsp(aAIServiceRsp, array);
+ resourceMgtServiceConvert
+ .convertNssiServiceInstanceList(nssiServiceInstanceList, aAIServiceRsp, pageNo, pageSize);
+ resultMsg = "5G slicing NSSI query based on environment context result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryNssiInstancesByEnvironment: Can not get AAIServiceInstanceRsp[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing NSSI service instances based on environment query failed!";
+ if (response.code() == NsmfCodeConstant.RESOURCE_NOT_FOUND_CODE){
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }else {
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing NSSI service instances based on environment query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info(
+ "queryNssiInstancesByEnvironment: 5G slicing NSSI service instances based on environment query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(nssiServiceInstanceList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryNssiDetails(String nssiId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ AAIServiceAndInstance aaiServiceAndInstance = new AAIServiceAndInstance();
+ HostedNsiList hostedNsiList = new HostedNsiList();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<JSONObject> response = this.aaiSliceService
+ .queryNSIByNSSI(NsmfParamConstant.CUSTOM_5G, NsmfParamConstant.SERVICE_TYPE_5G, nssiId).execute();
+ if (response.isSuccessful()) {
+ logger.info("queryNssiDetails: queryNSIByNSSI reponse is:{}", response.body());
+ JSONObject object = response.body();
+ aaiServiceAndInstance = generalConvert.queryServiceUtil(object);
+ resourceMgtServiceConvert.convertNssiDetails(hostedNsiList, aaiServiceAndInstance);
+ resultMsg = "5G slicing service nssi details query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryNssiDetails: Can not get AAIServiceAndInstance[code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing service nssi details query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing service nssi details query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryNssiDetails: 5G slicing service nssi details query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(hostedNsiList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult activateSlicingService(String serviceId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ ServiceOperationResult serviceActiveResult = new ServiceOperationResult();
+ String resultMsg;
+
+ try {
+ // TODO
+ SubscriberInfo subscriberInfo = resourceMgtServiceConvert.buildSubscriberInfo(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G);
+ String jsonstr = JSON.toJSONString(subscriberInfo);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr.toString());
+ Response<ActivateService> activeResponse = this.soSliceService.activeService(serviceId, requestBody)
+ .execute();
+
+ if (activeResponse.isSuccessful()) {
+ ActivateService activateService = activeResponse.body();
+ logger.info("activateSlicingService: activeService reponse is:{}",
+ gson.toJson(activateService).toString());
+ String operationId = activateService.getOperationId();
+ serviceActiveResult.setOperationId(operationId);
+ ServiceInstanceOperations serviceOpera = new ServiceInstanceOperations(serviceId, operationId,
+ NsmfCodeConstant.ACTIVATE_TYPE, "0", CommonConstant.IN_PROGRESS_CODE,
+ DateUtils.dateToString(DateUtils.now()), null);
+ serviceLcmService.saveOrUpdateServiceInstanceOperation(serviceOpera);
+ resultMsg = "5G slicing service activated normally.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("activateSlicingService: Can not get ActivateService[code={}, message={}]",
+ activeResponse.code(),
+ activeResponse.message()));
+ resultMsg = "5G slicing service activated failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing service activation failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("activateSlicingService: 5G slicing service activation has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(serviceActiveResult);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult deactivateSlicingService(String serviceId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ ServiceOperationResult serviceDeactivateResult = new ServiceOperationResult();
+ String resultMsg;
+
+ try {
+ // TODO
+ SubscriberInfo subscriberInfo = resourceMgtServiceConvert.buildSubscriberInfo(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G);
+ String jsonstr = JSON.toJSONString(subscriberInfo);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr.toString());
+ Response<ActivateService> activeResponse = this.soSliceService.deactiveService(serviceId, requestBody)
+ .execute();
+
+ if (activeResponse.isSuccessful()) {
+ ActivateService activateService = activeResponse.body();
+ logger.info("deactivateSlicingService: deactiveService reponse is:{}",
+ gson.toJson(activateService).toString());
+ String operationId = activateService.getOperationId();
+ serviceDeactivateResult.setOperationId(operationId);
+ ServiceInstanceOperations serviceOpera = new ServiceInstanceOperations(serviceId, operationId,
+ NsmfCodeConstant.DEACTIVATE_TYPE, "0", CommonConstant.IN_PROGRESS_CODE,
+ DateUtils.dateToString(DateUtils.now()), null);
+ serviceLcmService.saveOrUpdateServiceInstanceOperation(serviceOpera);
+ resultMsg = "5G slicing service deactivated normally.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("deactivateSlicingService: Can not get ActivateService[code={}, message={}]",
+ activeResponse.code(),
+ activeResponse.message()));
+ resultMsg = "5G slicing service deactivation failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing service deactivation failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("deactivateSlicingService: 5G slicing service deactivation has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(serviceDeactivateResult);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult terminateSlicingService(String serviceId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ ServiceOperationResult serviceTerminateResult = new ServiceOperationResult();
+ String resultMsg;
+
+ try {
+ // TODO
+ SubscriberInfo subscriberInfo = resourceMgtServiceConvert.buildSubscriberInfo(NsmfParamConstant.CUSTOM_5G,
+ NsmfParamConstant.SERVICE_TYPE_5G);
+ String jsonstr = JSON.toJSONString(subscriberInfo);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr.toString());
+ Response<ActivateService> activeResponse = this.soSliceService.terminateService(serviceId, requestBody)
+ .execute();
+
+ if (activeResponse.isSuccessful()) {
+ ActivateService activateService = activeResponse.body();
+ logger.info("terminateSlicingService: terminateService reponse is:{}",
+ gson.toJson(activateService).toString());
+ String operationId = activateService.getOperationId();
+ serviceTerminateResult.setOperationId(activateService.getOperationId());
+ ServiceInstanceOperations serviceOpera = new ServiceInstanceOperations(serviceId, operationId,
+ NsmfCodeConstant.DELETE_TYPE, "0", CommonConstant.IN_PROGRESS_CODE,
+ DateUtils.dateToString(DateUtils.now()), null);
+ serviceLcmService.saveOrUpdateServiceInstanceOperation(serviceOpera);
+ resultMsg = "5G slicing service terminated normally.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("terminateSlicingService: Can not get ActivateService[code={}, message={}]",
+ activeResponse.code(),
+ activeResponse.message()));
+ resultMsg = "5G slicing service termination failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing service termination failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("terminateSlicingService: 5G slicing service termination has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(serviceTerminateResult);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryOperationProgress(String serviceId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ ServiceOperationProgress operationProgress = new ServiceOperationProgress();
+ String resultMsg = "";
+
+ try {
+ // TODO
+ ServiceInstanceOperations serviceInstanceOperations = serviceLcmService
+ .getServiceInstanceOperationById(serviceId);
+ if (serviceInstanceOperations != null) {
+ String operationId = serviceInstanceOperations.getOperationId();
+ logger.info("queryOperationProgress: operationId is:{}", operationId);
+ Response<SOOperation> response = this.soSliceService.queryOperationProgress(serviceId, operationId)
+ .execute();
+ if (response.isSuccessful()) {
+ SOOperation soOperation = response.body();
+ Gson gson = new Gson();
+ logger.info("queryOperationProgress: queryOperationProgress reponse is:{}",
+ gson.toJson(soOperation).toString());
+ if (soOperation == null || soOperation.getOperation() == null
+ || soOperation.getOperation().getOperation() == null) {
+ logger.error("queryOperationProgress: soOperation is null or getOperation() is null!");
+ resultMsg = "5G slicing service operation progress query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ } else {
+ String operationResult = soOperation.getOperation().getResult();
+ String operationType = soOperation.getOperation().getOperation();
+ int progress = soOperation.getOperation().getProgress();
+ logger
+ .info("queryOperationProgress: operationResult is:{}, operationType is {}, progress is {}",
+ operationResult, operationType, String.valueOf(progress));
+ if (operationResult.equals(NsmfCodeConstant.OPERATION_ERROR_STATUS)) {
+ logger.error("queryOperationProgress: operationResult is error");
+ resultMsg = "5G slicing service operation progress query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ } else {
+ // return normal result code
+ operationProgress.setOperationType(operationType);
+ operationProgress.setOperationProgress(String.valueOf(progress));
+ resultMsg = "5G slicing service operation progress.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ }
+ }
+ } else {
+ logger.error(String.format("Can not get SOOperation[code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing service operation progress query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } else {
+ logger.error("queryOperationProgress: serviceInstanceOperations is null!");
+ resultMsg = "5G slicing service operation progress query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+
+ } catch (Exception e) {
+ resultMsg = "5G slicing service operation progress query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("5G slicing service operation progress query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(operationProgress);
+ return serviceResult;
+ }
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java
new file mode 100644
index 00000000..6b007d19
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceConvert.java
@@ -0,0 +1,289 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.beanutils.BeanUtils;
+import org.onap.usecaseui.server.bean.nsmf.common.PagedResult;
+import org.onap.usecaseui.server.bean.nsmf.task.BusinessDemandInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.NsiAndSubNssiInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.NstInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskAuditInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationProgress;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskList;
+import org.onap.usecaseui.server.service.slicingdomain.aai.AAISliceService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTaskRsp;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.onap.usecaseui.server.util.nsmf.NsmfCommonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TaskMgtServiceConvert {
+
+ private static final Logger logger = LoggerFactory.getLogger(TaskMgtServiceConvert.class);
+
+ private GeneralConvertImpl generalConvert = new GeneralConvertImpl();
+ private AAISliceService aaiSliceService;
+
+ public TaskMgtServiceConvert() {
+ this(RestfulServices.create(AAISliceService.class));
+ }
+
+ public TaskMgtServiceConvert(AAISliceService aaiSliceService) {
+ this.aaiSliceService = aaiSliceService;
+ }
+
+ void convertSlicingTaskList(SlicingTaskList targetSlicingTaskList, SOTaskRsp sourceSoTaskRsp, int pageNo,
+ int pageSize)
+ throws InvocationTargetException, IllegalAccessException {
+ if (sourceSoTaskRsp.getTask() == null) {
+ logger.error("convertSlicingTaskList: sourceSoTaskRsp.getTask() is null");
+ return;
+ }
+
+ List<SlicingTaskInfo> slicingTaskInfoList = new ArrayList<>();
+ for (SOTask soTask : sourceSoTaskRsp.getTask()) {
+ SlicingTaskInfo slicingTaskInfo = new SlicingTaskInfo();
+ BeanUtils.copyProperties(slicingTaskInfo, soTask);
+ JSONObject paramsObject = JSON.parseObject(soTask.getParams());
+ slicingTaskInfo.setServiceSnssai(paramsObject.getString("ServiceProfile.sNSSAI"));
+ slicingTaskInfo.setServiceType(paramsObject.getString("ServiceProfile.sST"));
+ slicingTaskInfo.setCreateTime(soTask.getCreatedTime());
+ slicingTaskInfo.setName(paramsObject.getString("ServiceName"));
+ slicingTaskInfoList.add(slicingTaskInfo);
+ }
+ PagedResult pagedOrderList = NsmfCommonUtil.getPagedList(slicingTaskInfoList, pageNo, pageSize);
+ targetSlicingTaskList.setSlicingTaskInfoList(pagedOrderList.getPagedList());
+ targetSlicingTaskList.setRecordNumber(slicingTaskInfoList.size());
+ }
+
+ void convertTaskAuditInfo(SlicingTaskAuditInfo targetSlicingTaskAuditInfo, SOTask sourceSoTaskInfo) {
+ targetSlicingTaskAuditInfo.setTaskId(sourceSoTaskInfo.getTaskId());
+ targetSlicingTaskAuditInfo.setTaskName(sourceSoTaskInfo.getName());
+ targetSlicingTaskAuditInfo.setCreateTime(sourceSoTaskInfo.getCreatedTime());
+ targetSlicingTaskAuditInfo.setProcessingStatus(sourceSoTaskInfo.getStatus());
+
+ JSONObject paramsObject = JSON.parseObject(sourceSoTaskInfo.getParams());
+ if (paramsObject == null) {
+ logger.error("convertTaskAuditInfo: paramsObject is null");
+ return;
+ }
+
+ BusinessDemandInfo businessDemandInfo = new BusinessDemandInfo();
+ convertBusinessDemandInfo(businessDemandInfo, paramsObject);
+ targetSlicingTaskAuditInfo.setBusinessDemandInfo(businessDemandInfo);
+
+ NstInfo nstInfo = new NstInfo();
+ convertNstInfo(nstInfo, paramsObject);
+ targetSlicingTaskAuditInfo.setNstInfo(nstInfo);
+
+ NsiAndSubNssiInfo nsiAndSubNssiInfo = new NsiAndSubNssiInfo();
+ convertNsiAndSubNssiInfo(nsiAndSubNssiInfo, paramsObject);
+ targetSlicingTaskAuditInfo.setNsiAndSubNssiInfo(nsiAndSubNssiInfo);
+ }
+
+ void convertBusinessDemandInfo(BusinessDemandInfo targetBusinessDemandInfo, JSONObject paramsObject) {
+
+ targetBusinessDemandInfo.setServiceName(paramsObject.getString("ServiceName"));
+ targetBusinessDemandInfo.setServiceSnssai(paramsObject.getString("ServiceProfile.sNSSAI"));
+ targetBusinessDemandInfo.setExpDataRateDL(paramsObject.getString("ServiceProfile.expDataRateDL"));
+ targetBusinessDemandInfo.setExpDataRateUL(paramsObject.getString("ServiceProfile.expDataRateUL"));
+ targetBusinessDemandInfo.setUeMobilityLevel(paramsObject.getString("ServiceProfile.uEMobilityLevel"));
+ targetBusinessDemandInfo.setLatency(paramsObject.getString("ServiceProfile.latency"));
+
+ String useInterval = generalConvert.getUseInterval(paramsObject.getString("ServiceId"));
+ targetBusinessDemandInfo.setUseInterval(useInterval);
+
+ String coverageAreaTA = paramsObject.getString("ServiceProfile.coverageAreaTAList");
+ targetBusinessDemandInfo.setCoverageAreaTaList(generalConvert.getAreaTaList(coverageAreaTA));
+ targetBusinessDemandInfo.setActivityFactor(paramsObject.getString("ServiceProfile.activityFactor"));
+ targetBusinessDemandInfo.setResourceSharingLevel(paramsObject.getString("ServiceProfile.resourceSharingLevel"));
+ targetBusinessDemandInfo.setAreaTrafficCapDL(paramsObject.getString("ServiceProfile.areaTrafficCapDL"));
+ targetBusinessDemandInfo.setAreaTrafficCapUL(paramsObject.getString("ServiceProfile.areaTrafficCapUL"));
+ targetBusinessDemandInfo.setMaxNumberOfUEs(paramsObject.getString("ServiceProfile.maxNumberofUEs"));
+ }
+
+ void convertNstInfo(NstInfo nstInfo, JSONObject paramsObject) {
+ nstInfo.setNstId(paramsObject.getString("NSTId"));
+ nstInfo.setNstName(paramsObject.getString("NSTName"));
+ }
+
+ void convertNsiAndSubNssiInfo(NsiAndSubNssiInfo nsiAndSubNssiInfo, JSONObject paramsObject) {
+ nsiAndSubNssiInfo.setSuggestNsiId(paramsObject.getString("suggestNSIId"));
+ nsiAndSubNssiInfo.setSuggestNsiName(paramsObject.getString("suggestNSIName"));
+ nsiAndSubNssiInfo.setAnSuggestNssiId(paramsObject.getString("AN.suggestNSSIId"));
+ nsiAndSubNssiInfo.setAnSuggestNssiName(paramsObject.getString("AN.suggestNSSIName"));
+ nsiAndSubNssiInfo.setAn5qi(paramsObject.getString("SliceProfile.AN.5QI"));
+
+ String anCoverageAreaTA = paramsObject.getString("SliceProfile.AN.coverageAreaTAList");
+ nsiAndSubNssiInfo.setAnCoverageAreaTaList(generalConvert.getAreaTaList(anCoverageAreaTA));
+ nsiAndSubNssiInfo.setAnLatency(paramsObject.getString("SliceProfile.AN.latency"));
+ nsiAndSubNssiInfo.setAnScriptName(paramsObject.getString("AN.ScriptName"));
+
+ nsiAndSubNssiInfo.setTnSuggestNssiId(paramsObject.getString("TN.suggestNSSIId"));
+ nsiAndSubNssiInfo.setTnSuggestNssiName(paramsObject.getString("TN.suggestNSSIName"));
+ nsiAndSubNssiInfo.setTnLatency(paramsObject.getString("SliceProfile.TN.latency"));
+ nsiAndSubNssiInfo.setTnBandwidth(paramsObject.getString("SliceProfile.TN.bandwidth"));
+ nsiAndSubNssiInfo.setTnScriptName(paramsObject.getString("TN.ScriptName"));
+
+ nsiAndSubNssiInfo.setCnSuggestNssiId(paramsObject.getString("CN.suggestNSSIId"));
+ nsiAndSubNssiInfo.setCnSuggestNssiName(paramsObject.getString("CN.suggestNSSIName"));
+ nsiAndSubNssiInfo.setCnServiceSnssai(paramsObject.getString("SliceProfile.CN.sNSSAI"));
+ nsiAndSubNssiInfo.setCnResourceSharingLevel(paramsObject.getString("SliceProfile.CN.resourceSharingLevel"));
+ nsiAndSubNssiInfo.setCnUeMobilityLevel(paramsObject.getString("SliceProfile.CN.uEMobilityLevel"));
+ nsiAndSubNssiInfo.setCnLatency(paramsObject.getString("SliceProfile.CN.latency"));
+ nsiAndSubNssiInfo.setCnMaxNumberOfUes(paramsObject.getString("SliceProfile.CN.maxNumberofUEs"));
+ nsiAndSubNssiInfo.setCnActivityFactor(paramsObject.getString("SliceProfile.CN.activityFactor"));
+ nsiAndSubNssiInfo.setCnExpDataRateDl(paramsObject.getString("SliceProfile.CN.expDataRateDL"));
+ nsiAndSubNssiInfo.setCnExpDataRateUl(paramsObject.getString("SliceProfile.CN.expDataRateUL"));
+ nsiAndSubNssiInfo.setCnAreaTrafficCapDl(paramsObject.getString("SliceProfile.CN.areaTrafficCapDL"));
+ nsiAndSubNssiInfo.setCnAreaTrafficCapUl(paramsObject.getString("SliceProfile.CN.areaTrafficCapUL"));
+ nsiAndSubNssiInfo.setCnScriptName(paramsObject.getString("CN.ScriptName"));
+ }
+
+ void convertTaskAuditToSoTask(SOTask targetSoTaskInfo, SlicingTaskAuditInfo sourceSlicingTaskAuditInfo) {
+ if (sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo() == null) {
+ logger.error("convertTaskAuditToSoTask: sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo() is null");
+ return;
+ }
+
+ JSONObject jsonObject = JSONObject.parseObject(targetSoTaskInfo.getParams());
+ jsonObject.put("suggestNSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getSuggestNsiId());
+ jsonObject.put("suggestNSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getSuggestNsiName());
+ jsonObject.put("AN.suggestNSSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnSuggestNssiId());
+ jsonObject.put("AN.suggestNSSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnSuggestNssiName());
+ jsonObject.put("SliceProfile.AN.latency", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnLatency());
+ jsonObject.put("SliceProfile.AN.5QI", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAn5qi());
+
+ String aNCoverageAreaTAList = getAreaTaListString
+ (sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnCoverageAreaTaList(), '|');
+ jsonObject.put("SliceProfile.AN.coverageAreaTAList", aNCoverageAreaTAList);
+ jsonObject.put("AN.ScriptName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getAnScriptName());
+
+ jsonObject.put("TN.suggestNSSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnSuggestNssiId());
+ jsonObject.put("TN.suggestNSSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnSuggestNssiName());
+ jsonObject.put("SliceProfile.TN.bandwidth", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnBandwidth());
+ jsonObject.put("SliceProfile.TN.latency", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnLatency());
+ jsonObject.put("TN.ScriptName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getTnScriptName());
+
+ jsonObject.put("CN.suggestNSSIId", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnSuggestNssiId());
+ jsonObject.put("CN.suggestNSSIName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnSuggestNssiName());
+ jsonObject
+ .put("SliceProfile.CN.sNSSAI", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnServiceSnssai());
+ jsonObject.put("SliceProfile.CN.resourceSharingLevel",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnResourceSharingLevel());
+ jsonObject.put("SliceProfile.CN.uEMobilityLevel",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnUeMobilityLevel());
+ jsonObject.put("SliceProfile.CN.latency", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnLatency());
+ jsonObject.put("SliceProfile.CN.maxNumberofUEs",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnMaxNumberOfUes());
+ jsonObject.put("SliceProfile.CN.activityFactor",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnActivityFactor());
+ jsonObject.put("SliceProfile.CN.expDataRateDL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnExpDataRateDl());
+ jsonObject.put("SliceProfile.CN.expDataRateUL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnExpDataRateUl());
+ jsonObject.put("SliceProfile.CN.areaTrafficCapDL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnAreaTrafficCapDl());
+ jsonObject.put("SliceProfile.CN.areaTrafficCapUL",
+ sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnAreaTrafficCapUl());
+ jsonObject.put("CN.ScriptName", sourceSlicingTaskAuditInfo.getNsiAndSubNssiInfo().getCnScriptName());
+ String param = jsonObject.toJSONString();
+ targetSoTaskInfo.setParams(param);
+ }
+
+ String getAreaTaListString(List<String> anCoverageAreaTaList, char separator) {
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < anCoverageAreaTaList.size(); i++) {
+ sb.append(anCoverageAreaTaList.get(i)).append(separator);
+ }
+ return sb.toString().substring(0, sb.toString().length() - 1);
+ }
+
+ void convertTaskCreationInfo(SlicingTaskCreationInfo slicingTaskCreationInfo, SOTask soTask) {
+ slicingTaskCreationInfo.setTaskId(soTask.getTaskId());
+ slicingTaskCreationInfo.setCreateTime(soTask.getCreatedTime());
+ slicingTaskCreationInfo.setProcessingStatus(soTask.getStatus());
+ slicingTaskCreationInfo.setTaskName(soTask.getName());
+
+ JSONObject paramsObject = JSON.parseObject(soTask.getParams());
+ if (paramsObject == null) {
+ logger.error("convertTaskCreationInfo: paramsObject is null");
+ return;
+ }
+
+ BusinessDemandInfo businessDemandInfo = new BusinessDemandInfo();
+ convertCreationBusinessDemandInfo(businessDemandInfo, paramsObject);
+ slicingTaskCreationInfo.setBusinessDemandInfo(businessDemandInfo);
+
+ NstInfo nstInfo = new NstInfo();
+ convertNstInfo(nstInfo, paramsObject);
+ slicingTaskCreationInfo.setNstInfo(nstInfo);
+ }
+
+ void convertCreationBusinessDemandInfo(BusinessDemandInfo targetBusinessDemandInfo, JSONObject paramsObject) {
+ targetBusinessDemandInfo.setServiceName(paramsObject.getString("ServiceName"));
+ targetBusinessDemandInfo.setServiceSnssai(paramsObject.getString("ServiceProfile.sNSSAI"));
+ targetBusinessDemandInfo.setExpDataRateDL(paramsObject.getString("ServiceProfile.expDataRateDL"));
+ targetBusinessDemandInfo.setExpDataRateUL(paramsObject.getString("ServiceProfile.expDataRateUL"));
+ targetBusinessDemandInfo.setUeMobilityLevel(paramsObject.getString("ServiceProfile.uEMobilityLevel"));
+ targetBusinessDemandInfo.setLatency(paramsObject.getString("ServiceProfile.latency"));
+ String useInterval = generalConvert.getUseInterval(paramsObject.getString("ServiceId"));
+ targetBusinessDemandInfo.setUseInterval(useInterval);
+
+ String coverageAreaTA = paramsObject.getString("ServiceProfile.coverageAreaTAList");
+ targetBusinessDemandInfo.setCoverageAreaTaList(generalConvert.getAreaTaList(coverageAreaTA));
+ targetBusinessDemandInfo.setActivityFactor(paramsObject.getString("ServiceProfile.activityFactor"));
+ targetBusinessDemandInfo.setResourceSharingLevel(paramsObject.getString("ServiceProfile.resourceSharingLevel"));
+ targetBusinessDemandInfo.setAreaTrafficCapDL(paramsObject.getString("ServiceProfile.areaTrafficCapDL"));
+ targetBusinessDemandInfo.setAreaTrafficCapUL(paramsObject.getString("ServiceProfile.areaTrafficCapUL"));
+ targetBusinessDemandInfo.setMaxNumberOfUEs(paramsObject.getString("ServiceProfile.maxNumberofUEs"));
+ }
+
+ void convertTaskCreationProgress(SlicingTaskCreationProgress slicingTaskCreationProgress, SOTask soTask) {
+
+ JSONObject paramsObject = JSON.parseObject(soTask.getParams());
+ if (paramsObject == null) {
+ logger.error("convertTaskCreationProgress: paramsObject is null");
+ return;
+ }
+
+ String anProgress = paramsObject.getString("AN.progress");
+ slicingTaskCreationProgress.setAnProgress(anProgress);
+
+ String tnProgress = paramsObject.getString("TN.progress");
+ slicingTaskCreationProgress.setTnProgress(tnProgress);
+
+ String cnProgress = paramsObject.getString("CN.progress");
+ slicingTaskCreationProgress.setCnProgress(cnProgress);
+
+ String anStatus = paramsObject.getString("AN.status");
+ slicingTaskCreationProgress.setAnStatus(anStatus);
+
+ String tnStatus = paramsObject.getString("TN.status");
+ slicingTaskCreationProgress.setTnStatus(tnStatus);
+
+ String cnStatus = paramsObject.getString("CN.status");
+ slicingTaskCreationProgress.setCnStatus(cnStatus);
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java
new file mode 100644
index 00000000..6c2a10fb
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/TaskMgtServiceImpl.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.nsmf.impl;
+
+import java.lang.reflect.Type;
+import java.util.List;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import org.onap.usecaseui.server.bean.nsmf.common.ResultHeader;
+import org.onap.usecaseui.server.bean.nsmf.common.ServiceResult;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskAuditInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationInfo;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskCreationProgress;
+import org.onap.usecaseui.server.bean.nsmf.task.SlicingTaskList;
+import org.onap.usecaseui.server.constant.nsmf.NsmfCodeConstant;
+
+import org.onap.usecaseui.server.service.nsmf.TaskMgtService;
+import org.onap.usecaseui.server.service.slicingdomain.so.SOSliceService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTaskRsp;
+import org.onap.usecaseui.server.util.RestfulServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.stereotype.Service;
+import retrofit2.Response;
+
+@Service("TaskMgtService")
+@org.springframework.context.annotation.Configuration
+@EnableAspectJAutoProxy
+public class TaskMgtServiceImpl implements TaskMgtService {
+
+ private static final Logger logger = LoggerFactory.getLogger(TaskMgtServiceImpl.class);
+ private TaskMgtServiceConvert taskMgtServiceConvert = new TaskMgtServiceConvert();
+
+ private SOSliceService soSliceService;
+
+ public TaskMgtServiceImpl() {
+ this(RestfulServices.create(SOSliceService.class));
+ }
+
+ public TaskMgtServiceImpl(SOSliceService soSliceService) {
+ this.soSliceService = soSliceService;
+ }
+
+ @Override
+ public ServiceResult querySlicingTask(int pageNo, int pageSize) {
+
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskList slicingTaskList = new SlicingTaskList();
+ SOTaskRsp soTaskRsp = new SOTaskRsp();
+ String resultMsg;
+
+ try {
+ Response<JSONArray> response = this.soSliceService.listTask().execute();
+ if (response.isSuccessful()) {
+ Gson gson = new Gson();
+ Type type = new TypeToken<List<SOTask>>() {
+ }.getType();
+ soTaskRsp.setTask(gson.fromJson(response.body().toString(), type));
+ logger.info("querySlicingTask: listTask response is:{}", response.body().toString());
+ taskMgtServiceConvert.convertSlicingTaskList(slicingTaskList, soTaskRsp, pageNo, pageSize);
+ resultMsg = "5G slicing task query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(
+ String.format("querySlicingTask: Can not get slicingTaskList[code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing task result query failed!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task result query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("querySlicingTask: 5G slicing task result query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult querySlicingTaskByStatus(String status, int pageNo, int pageSize) {
+
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskList slicingTaskList = new SlicingTaskList();
+ SOTaskRsp soTaskRsp = new SOTaskRsp();
+ String resultMsg;
+ try {
+ Response<JSONArray> response = this.soSliceService.listTaskByStage(status).execute();
+ if (response.isSuccessful()) {
+ Gson gson = new Gson();
+ Type type = new TypeToken<List<SOTask>>() {
+ }.getType();
+ soTaskRsp.setTask(gson.fromJson(response.body().toString(), type));
+ logger.info("querySlicingTaskByStatus: listTaskByStage response is:{}", response.body().toString());
+ taskMgtServiceConvert.convertSlicingTaskList(slicingTaskList, soTaskRsp, pageNo, pageSize);
+ resultMsg = "5G slicing task query based on status result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("querySlicingTaskByStatus: Can not get slicingTaskList[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task result query based on status failed. ";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task result query based on status failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("querySlicingTaskByStatus: 5G slicing task result query based on status has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskList);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryTaskAuditInfo(String taskId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskAuditInfo slicingTaskAuditInfo = new SlicingTaskAuditInfo();
+ String resultMsg = "";
+
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskById(taskId).execute();
+ if (response.isSuccessful()) {
+ SOTask soTaskInfo = response.body();
+ Gson gson = new Gson();
+ logger.info("queryTaskAuditInfo: getTaskById response is:{}", gson.toJson(soTaskInfo).toString());
+ taskMgtServiceConvert.convertTaskAuditInfo(slicingTaskAuditInfo, soTaskInfo);
+ // return normal result code
+ resultMsg = "5G slicing task configure audit information query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("queryTaskAuditInfo: Can not get slicingTaskAuditInfo[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task configure audit information query failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task configure audit information query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryTaskAuditInfo: 5G slicing task configure audit information query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskAuditInfo);
+ return serviceResult;
+ }
+
+ public ServiceResult updateTaskAuditInfo(SlicingTaskAuditInfo slicingTaskAuditInfo) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+ String resultMsg;
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskById(slicingTaskAuditInfo.getTaskId()).execute();
+ if (response.isSuccessful()) {
+ SOTask soTaskInfo = response.body();
+ Gson gson = new Gson();
+ logger.info("updateTaskAuditInfo: getTaskById response is:{}", gson.toJson(soTaskInfo).toString());
+ taskMgtServiceConvert.convertTaskAuditToSoTask(soTaskInfo, slicingTaskAuditInfo);
+
+ String jsonstr = JSON.toJSONString(soTaskInfo);
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr.toString());
+ Response<ResponseBody> updateResponse = soSliceService
+ .updateService(slicingTaskAuditInfo.getTaskId(), requestBody).execute();
+
+ if (updateResponse.isSuccessful()) {
+ Response<ResponseBody> commitResponse = this.soSliceService
+ .commitTask(slicingTaskAuditInfo.getTaskId()).execute();
+ if (commitResponse.isSuccessful()) {
+ resultMsg = "5G slicing task submit result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String.format("updateTaskAuditInfo: Can not commitTask [code={}, message={}]",
+ commitResponse.code(),
+ commitResponse.message()));
+ resultMsg = "5G slicing task submit failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } else {
+ logger.error(String
+ .format("updateTaskAuditInfo: Can not updateService [code={}, message={}]", response.code(),
+ response.message()));
+ resultMsg = "5G slicing task submit failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } else {
+ logger.error(String.format("updateTaskAuditInfo: Can not get slicingTaskAuditInfo[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task submit failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task submit failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("updateTaskAuditInfo: 5G slicing task submit has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryTaskCreationInfo(String taskId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskCreationInfo slicingTaskCreationInfo = new SlicingTaskCreationInfo();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskByIdD(taskId).execute();
+ if (response.isSuccessful()) {
+ Gson gson = new Gson();
+ SOTask soTask = response.body();
+ logger.info("updateTaskAuditInfo: getTaskById response is:{}", gson.toJson(soTask).toString());
+ taskMgtServiceConvert.convertTaskCreationInfo(slicingTaskCreationInfo, soTask);
+ // return normal result code
+ resultMsg = "5G slicing task creation infomation query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("updateTaskAuditInfo: Can not get slicingTaskCreationInfo[code={}, message={}]",
+ response.code(),
+ response.message()));
+ resultMsg = "5G slicing task creation infomation query failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task creation infomation query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("updateTaskAuditInfo: 5G slicing task creation infomation query has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskCreationInfo);
+ return serviceResult;
+ }
+
+ @Override
+ public ServiceResult queryTaskCreationProgress(String taskId) {
+ ServiceResult serviceResult = new ServiceResult();
+ ResultHeader resultHeader = new ResultHeader();
+
+ SlicingTaskCreationProgress slicingTaskCreationProgress = new SlicingTaskCreationProgress();
+ String resultMsg;
+
+ try {
+ // TODO
+ Response<SOTask> response = this.soSliceService.getTaskByIdD(taskId).execute();
+ if (response.isSuccessful()) {
+ SOTask soTask = response.body();
+ Gson gson = new Gson();
+ logger.info("queryTaskCreationProgress: getTaskById response is:{}", gson.toJson(soTask).toString());
+ taskMgtServiceConvert.convertTaskCreationProgress(slicingTaskCreationProgress, soTask);
+ resultMsg = "5G slicing task operation progress query result.";
+ resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE);
+ } else {
+ logger.error(String
+ .format("queryTaskCreationProgress: Can not get slicingTaskCreationProgress[code={}, message={}]",
+ response.code(), response.message()));
+ resultMsg = "5G slicing task operation progress query failed.";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ }
+ } catch (Exception e) {
+ resultMsg = "5G slicing task operation progress query failed. Unknown exception occurred!";
+ resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN);
+ logger.error(e.getMessage());
+ }
+
+ logger.info(resultMsg);
+ logger.info("queryTaskCreationProgress: 5G slicing task operation progress has been finished.");
+ resultHeader.setResult_message(resultMsg);
+ serviceResult.setResult_header(resultHeader);
+ serviceResult.setResult_body(slicingTaskCreationProgress);
+ return serviceResult;
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/SlicServiceInstanceService.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/SlicServiceInstanceService.java
new file mode 100644
index 00000000..fa5977e2
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/SlicServiceInstanceService.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain;
+
+
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceInstance;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface SlicServiceInstanceService {
+
+ List<AAIServiceInstance> listService();
+
+ List<AAIServiceInstance> listServiceNSI();
+
+ List<AAIServiceInstance> listServiceNSSI();
+
+ JSONObject getServiceProfiles();
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/AAISliceService.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/AAISliceService.java
new file mode 100644
index 00000000..53cbc4fb
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/AAISliceService.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai;
+
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceNST;
+
+import com.alibaba.fastjson.JSONObject;
+
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+
+public interface AAISliceService {
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=e2eslice-service")
+ Call<JSONObject> listService(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=e2eslice-service")
+ Call<JSONObject> listServiceByStatus(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Query("orchestration-status") String orchestrationStatus);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}")
+ Call<JSONObject> listServiceById(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String businessId);
+
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=nsi")
+ Call<JSONObject> listServiceNSI(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=nsi")
+ Call<JSONObject> listServiceNSIByStatus(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Query("orchestration-status") String orchestrationStatus);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=nssi")
+ Call<JSONObject> listServiceNSSI(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=nssi")
+ Call<JSONObject> listServiceNSSIByStatus(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Query("orchestration-status") String orchestrationStatus);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=nssi")
+ Call<JSONObject> listServiceNSSIByEnv(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Query("environment-context") String environmentContext);
+
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v16/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/service-profiles")
+ Call<JSONObject> getServiceProfiles(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String serviceInstanceId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources")
+ Call<JSONObject> queryAllottedResources(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String serviceInstanceId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}")
+ Call<JSONObject> querySerAndSubInsByNSI(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String serviceInstanceId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}")
+ Call<JSONObject> queryNSIByNSSI(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String serviceInstanceId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}")
+ Call<JSONObject> queryOrderByService(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String serviceInstanceId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}")
+ Call<JSONObject> queryOrderByOrderId(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType,@Path("service-instance-id") String serviceInstanceId);
+
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-sdc/v13/models/model/{model-invariant-id}/model-vers/model-ver/{model-version-id}")
+ Call<AAIServiceNST> queryServiceNST(@Path("model-invariant-id") String modelInvariantIid,
+ @Path("model-version-id") String modelVersionId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: MSO",
+ "Authorization: Basic QUFJOkFBSQ==",
+ "Accept: application/json"
+ })
+ @GET("/api/aai-business/v13/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances?service-role=communication-service")
+ Call<JSONObject> listOrders(@Path("global-customer-id") String globalCustomerId,@Path("service-type") String serviceType);
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIService.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIService.java
new file mode 100644
index 00000000..3541c820
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIService.java
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2019 HUAWEI Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import java.io.Serializable;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AAIService implements Serializable{
+ /**
+ *
+ */
+ private static final long serialVersionUID = -2847142014162429886L;
+
+ private String serviceInstanceId;
+
+ private String serviceInstanceName;
+
+ private String serviceType;
+
+ private String serviceRole;
+
+ private String environmentContext;
+
+ private String description;
+
+ private String modelInvariantId;
+
+ private String modelVersionId;
+
+ private String resourceVersion;
+
+ private String serviceInstanceLocationId;
+
+ private String orchestrationStatus;
+
+
+ public String getServiceInstanceId() {
+ return serviceInstanceId;
+ }
+
+ public void setServiceInstanceId(String serviceInstanceId) {
+ this.serviceInstanceId = serviceInstanceId;
+ }
+
+ public String getServiceInstanceName() {
+ return serviceInstanceName;
+ }
+
+ public void setServiceInstanceName(String serviceInstanceName) {
+ this.serviceInstanceName = serviceInstanceName;
+ }
+
+ public String getServiceType() {
+ return serviceType;
+ }
+
+ public void setServiceType(String serviceType) {
+ this.serviceType = serviceType;
+ }
+
+ public String getServiceRole() {
+ return serviceRole;
+ }
+
+ public void setServiceRole(String serviceRole) {
+ this.serviceRole = serviceRole;
+ }
+
+ public String getEnvironmentContext() {
+ return environmentContext;
+ }
+
+ public void setEnvironmentContext(String environmentContext) {
+ this.environmentContext = environmentContext;
+ }
+
+
+ public String getModelInvariantId() {
+ return modelInvariantId;
+ }
+
+ public void setModelInvariantId(String modelInvariantId) {
+ this.modelInvariantId = modelInvariantId;
+ }
+
+ public String getModelVersionId() {
+ return modelVersionId;
+ }
+
+ public void setModelVersionId(String modelVersionId) {
+ this.modelVersionId = modelVersionId;
+ }
+
+ public String getResourceVersion() {
+ return resourceVersion;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public void setResourceVersion(String resourceVersion) {
+ this.resourceVersion = resourceVersion;
+ }
+
+ public String getServiceInstanceLocationId() {
+ return serviceInstanceLocationId;
+ }
+
+ public void setServiceInstanceLocationId(String serviceInstanceLocationId) {
+ this.serviceInstanceLocationId = serviceInstanceLocationId;
+ }
+
+ public String getOrchestrationStatus() {
+ return orchestrationStatus;
+ }
+
+ public void setOrchestrationStatus(String orchestrationStatus) {
+ this.orchestrationStatus = orchestrationStatus;
+ }
+
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceAndInstance.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceAndInstance.java
new file mode 100644
index 00000000..dd6f5c6a
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceAndInstance.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class AAIServiceAndInstance {
+
+ private String serviceInstanceId;
+
+ private String serviceInstanceName;
+
+ private String serviceType;
+
+ private String environmentContext;
+
+ private String modelInvariantId;
+
+ private String modelVersionId;
+
+ private String orchestrationStatus;
+
+ private String workloadContext;
+
+ private List<Relationship> relationshipList;
+
+
+ public String getEnvironmentContext() {
+ return environmentContext;
+ }
+
+ public void setEnvironmentContext(String environmentContext) {
+ this.environmentContext = environmentContext;
+ }
+
+ public String getServiceInstanceId() {
+ return serviceInstanceId;
+ }
+
+ public void setServiceInstanceId(String serviceInstanceId) {
+ this.serviceInstanceId = serviceInstanceId;
+ }
+
+ public String getServiceInstanceName() {
+ return serviceInstanceName;
+ }
+
+ public void setServiceInstanceName(String serviceInstanceName) {
+ this.serviceInstanceName = serviceInstanceName;
+ }
+
+ public String getServiceType() {
+ return serviceType;
+ }
+
+ public void setServiceType(String serviceType) {
+ this.serviceType = serviceType;
+ }
+
+ public String getModelInvariantId() {
+ return modelInvariantId;
+ }
+
+ public void setModelInvariantId(String modelInvariantId) {
+ this.modelInvariantId = modelInvariantId;
+ }
+
+ public String getModelVersionId() {
+ return modelVersionId;
+ }
+
+ public void setModelVersionId(String modelVersionId) {
+ this.modelVersionId = modelVersionId;
+ }
+
+ public String getOrchestrationStatus() {
+ return orchestrationStatus;
+ }
+
+ public void setOrchestrationStatus(String orchestrationStatus) {
+ this.orchestrationStatus = orchestrationStatus;
+ }
+
+ public List<Relationship> getRelationshipList() {
+ return relationshipList;
+ }
+
+ public void setRelationshipList(List<Relationship> relationshipList) {
+ this.relationshipList = relationshipList;
+ }
+
+ public String getWorkloadContext() {
+ return workloadContext;
+ }
+
+ public void setWorkloadContext(String workloadContext) {
+ this.workloadContext = workloadContext;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceInstance.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceInstance.java
new file mode 100644
index 00000000..0e50f614
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceInstance.java
@@ -0,0 +1,301 @@
+/**
+ * Copyright 2019 HUAWEI Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AAIServiceInstance implements Serializable {
+
+ private static final long serialVersionUID = -2847142014162429886L;
+
+ @JsonProperty("service-instance-id")
+ private String serviceInstanceId;
+
+ @JsonProperty("service-instance-name")
+ private String serviceInstanceName;
+
+ @JsonProperty("service-type")
+ private String serviceType;
+
+ @JsonProperty("service-role")
+ private String serviceRole;
+
+ @JsonProperty("environment-context")
+ private String environmentContext;
+
+ @JsonProperty("description")
+ private String description;
+
+ @JsonProperty("model-invariant-id")
+ private String modelInvariantId;
+
+ @JsonProperty("model-version-id")
+ private String modelVersionId;
+
+ @JsonProperty("resource-version")
+ private String resourceVersion;
+
+ @JsonProperty("service-instance-location-id")
+ private String serviceInstanceLocationId;
+
+ @JsonProperty("orchestration-status")
+ private String orchestrationStatus;
+
+ @JsonProperty("relationship-list")
+ public RelationshipList relationshipList;
+
+
+ public AAIServiceInstance() {
+ super();
+ }
+
+ public String getEnvironmentContext() {
+ return environmentContext;
+ }
+
+ public void setEnvironmentContext(String environmentContext) {
+ this.environmentContext = environmentContext;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getServiceInstanceId() {
+ return serviceInstanceId;
+ }
+
+ public void setServiceInstanceId(String serviceInstanceId) {
+ this.serviceInstanceId = serviceInstanceId;
+ }
+
+ public String getServiceInstanceName() {
+ return serviceInstanceName;
+ }
+
+ public void setServiceInstanceName(String serviceInstanceName) {
+ this.serviceInstanceName = serviceInstanceName;
+ }
+
+ public String getServiceType() {
+ return serviceType;
+ }
+
+ public void setServiceType(String serviceType) {
+ this.serviceType = serviceType;
+ }
+
+ public String getServiceRole() {
+ return serviceRole;
+ }
+
+ public void setServiceRole(String serviceRole) {
+ this.serviceRole = serviceRole;
+ }
+
+ public String getServiceInstanceLocationId() {
+ return serviceInstanceLocationId;
+ }
+
+ public void setServiceInstanceLocationId(String serviceInstanceLocationId) {
+ this.serviceInstanceLocationId = serviceInstanceLocationId;
+ }
+
+ public String getOrchestrationStatus() {
+ return orchestrationStatus;
+ }
+
+ public void setOrchestrationStatus(String orchestrationStatus) {
+ this.orchestrationStatus = orchestrationStatus;
+ }
+
+ public String getModelInvariantId() {
+ return modelInvariantId;
+ }
+
+ public void setModelInvariantId(String modelInvariantId) {
+ this.modelInvariantId = modelInvariantId;
+ }
+
+ public String getModelVersionId() {
+ return modelVersionId;
+ }
+
+ public void setModelVersionId(String modelVersionId) {
+ this.modelVersionId = modelVersionId;
+ }
+
+ public String getResourceVersion() {
+ return resourceVersion;
+ }
+
+ public void setResourceVersion(String resourceVersion) {
+ this.resourceVersion = resourceVersion;
+ }
+
+ public RelationshipList getRelationshipList() {
+ return relationshipList;
+ }
+
+ public void setRelationshipList(RelationshipList relationshipList) {
+ this.relationshipList = relationshipList;
+ }
+
+
+ public class RelationshipList {
+
+ public RelationshipList() {
+ super();
+ }
+
+ @JsonProperty("relationship")
+ public List<Relationship> relationship;
+
+ public List<Relationship> getRelationship() {
+ return relationship;
+ }
+
+ public void setRelationship(List<Relationship> relationship) {
+ this.relationship = relationship;
+ }
+
+ }
+
+ public class Relationship {
+
+ public Relationship() {
+ super();
+ }
+
+ @JsonProperty("related-to")
+ private String relatedTo;
+
+ @JsonProperty("relationship-label")
+ private String relationshipLabel;
+
+ @JsonProperty("related-link")
+ private String relatedLink;
+
+ @JsonProperty("relationship-data")
+ private List<RelationshipData> relationshipData;
+
+ @JsonProperty("related-to-property")
+ private List<RelatedToProperty> relatedToProperty;
+
+ public String getRelatedTo() {
+ return relatedTo;
+ }
+
+ public void setRelatedTo(String relatedTo) {
+ this.relatedTo = relatedTo;
+ }
+
+ public String getRelationshipLabel() {
+ return relationshipLabel;
+ }
+
+ public void setRelationshipLabel(String relationshipLabel) {
+ this.relationshipLabel = relationshipLabel;
+ }
+
+ public String getRelatedLink() {
+ return relatedLink;
+ }
+
+ public void setRelatedLink(String relatedLink) {
+ this.relatedLink = relatedLink;
+ }
+
+ public List<RelationshipData> getRelationshipData() {
+ return relationshipData;
+ }
+
+ public void setRelationshipData(List<RelationshipData> relationshipData) {
+ this.relationshipData = relationshipData;
+ }
+
+ public List<RelatedToProperty> getRelatedToProperty() {
+ return relatedToProperty;
+ }
+
+ public void setRelatedToProperty(List<RelatedToProperty> relatedToProperty) {
+ this.relatedToProperty = relatedToProperty;
+ }
+
+ }
+
+ public class RelationshipData {
+
+ @JsonProperty("relationship-key")
+ private String relationshipKey;
+
+ @JsonProperty("relationship-value")
+ private String relationshipValue;
+
+ public String getRelationshipKey() {
+ return relationshipKey;
+ }
+
+ public void setRelationshipKey(String relationshipKey) {
+ this.relationshipKey = relationshipKey;
+ }
+
+ public String getRelationshipValue() {
+ return relationshipValue;
+ }
+
+ public void setRelationshipValue(String relationshipValue) {
+ this.relationshipValue = relationshipValue;
+ }
+
+ }
+
+ public class RelatedToProperty {
+
+ @JsonProperty("property-key")
+ private String propertyKey;
+
+ @JsonProperty("property-value")
+ private String propertyValue;
+
+ public String getPropertyKey() {
+ return propertyKey;
+ }
+
+ public void setPropertyKey(String propertyKey) {
+ this.propertyKey = propertyKey;
+ }
+
+ public String getPropertyValue() {
+ return propertyValue;
+ }
+
+ public void setPropertyValue(String propertyValue) {
+ this.propertyValue = propertyValue;
+ }
+
+ }
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceNST.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceNST.java
new file mode 100644
index 00000000..847a1cc5
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceNST.java
@@ -0,0 +1,67 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AAIServiceNST {
+
+ @JsonProperty("model-version-id")
+ private String modelVersionId;
+
+ @JsonProperty("model-name")
+ private String modelName;
+
+ @JsonProperty("model-version")
+ private String modelVersion;
+
+ @JsonProperty("resource-version")
+ private String resourceVersion;
+
+ public String getModelVersionId() {
+ return modelVersionId;
+ }
+
+ public void setModelVersionId(String modelVersionId) {
+ this.modelVersionId = modelVersionId;
+ }
+
+ public String getModelName() {
+ return modelName;
+ }
+
+ public void setModelName(String modelName) {
+ this.modelName = modelName;
+ }
+
+ public String getModelVersion() {
+ return modelVersion;
+ }
+
+ public void setModelVersion(String modelVersion) {
+ this.modelVersion = modelVersion;
+ }
+
+ public String getResourceVersion() {
+ return resourceVersion;
+ }
+
+ public void setResourceVersion(String resourceVersion) {
+ this.resourceVersion = resourceVersion;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceProfiles.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceProfiles.java
new file mode 100644
index 00000000..4338f469
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceProfiles.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AAIServiceProfiles {
+
+ @JsonProperty("profile-id")
+ private String profileId;
+
+ @JsonProperty("latency")
+ private int latency;
+
+ @JsonProperty("max-number-of-UEs")
+ private int maxNumberOfUEs;
+
+ @JsonProperty("coverage-area-TA-list")
+ private String coverageAreaTAList;
+
+ @JsonProperty("ue-mobility-level")
+ private String ueMobilityLevel;
+
+ @JsonProperty("resource-sharing-level")
+ private String resourceSharingLevel;
+
+ @JsonProperty("exp-data-rate-UL")
+ private int expDataRateUL;
+
+ @JsonProperty("exp-data-rate-DL")
+ private int expDataRateDL;
+
+ @JsonProperty("area-traffic-cap-UL")
+ private int areaTrafficCapUL;
+
+ @JsonProperty("area-traffic-cap-DL")
+ private int areaTrafficCapDL;
+
+ @JsonProperty("activity-factor")
+ private int activityFactor;
+
+ @JsonProperty("jitter")
+ private int jitter;
+
+ @JsonProperty("survival-time")
+ private int survivalTime;
+
+ @JsonProperty("cs-availability")
+ private int csAvailability;
+
+ @JsonProperty("reliability")
+ private int reliability;
+
+ @JsonProperty("exp-data-rate")
+ private int expDataRate;
+
+ @JsonProperty("traffic-density")
+ private int trafficDensity;
+
+ @JsonProperty("conn-density")
+ private int connDensity;
+
+ @JsonProperty("resource-version")
+ private String resourceVersion;
+
+ public String getProfileId() {
+ return profileId;
+ }
+
+ public void setProfileId(String profileId) {
+ this.profileId = profileId;
+ }
+
+ public int getLatency() {
+ return latency;
+ }
+
+ public void setLatency(int latency) {
+ this.latency = latency;
+ }
+
+ public int getMaxNumberOfUEs() {
+ return maxNumberOfUEs;
+ }
+
+ public void setMaxNumberOfUEs(int maxNumberOfUEs) {
+ this.maxNumberOfUEs = maxNumberOfUEs;
+ }
+
+ public String getCoverageAreaTAList() {
+ return coverageAreaTAList;
+ }
+
+ public void setCoverageAreaTAList(String coverageAreaTAList) {
+ this.coverageAreaTAList = coverageAreaTAList;
+ }
+
+ public String getUeMobilityLevel() {
+ return ueMobilityLevel;
+ }
+
+ public void setUeMobilityLevel(String ueMobilityLevel) {
+ this.ueMobilityLevel = ueMobilityLevel;
+ }
+
+ public String getResourceSharingLevel() {
+ return resourceSharingLevel;
+ }
+
+ public void setResourceSharingLevel(String resourceSharingLevel) {
+ this.resourceSharingLevel = resourceSharingLevel;
+ }
+
+ public int getExpDataRateUL() {
+ return expDataRateUL;
+ }
+
+ public void setExpDataRateUL(int expDataRateUL) {
+ this.expDataRateUL = expDataRateUL;
+ }
+
+ public int getExpDataRateDL() {
+ return expDataRateDL;
+ }
+
+ public void setExpDataRateDL(int expDataRateDL) {
+ this.expDataRateDL = expDataRateDL;
+ }
+
+ public int getAreaTrafficCapUL() {
+ return areaTrafficCapUL;
+ }
+
+ public void setAreaTrafficCapUL(int areaTrafficCapUL) {
+ this.areaTrafficCapUL = areaTrafficCapUL;
+ }
+
+ public int getAreaTrafficCapDL() {
+ return areaTrafficCapDL;
+ }
+
+ public void setAreaTrafficCapDL(int areaTrafficCapDL) {
+ this.areaTrafficCapDL = areaTrafficCapDL;
+ }
+
+ public int getActivityFactor() {
+ return activityFactor;
+ }
+
+ public void setActivityFactor(int activityFactor) {
+ this.activityFactor = activityFactor;
+ }
+
+ public int getJitter() {
+ return jitter;
+ }
+
+ public void setJitter(int jitter) {
+ this.jitter = jitter;
+ }
+
+ public int getSurvivalTime() {
+ return survivalTime;
+ }
+
+ public void setSurvivalTime(int survivalTime) {
+ this.survivalTime = survivalTime;
+ }
+
+ public int getCsAvailability() {
+ return csAvailability;
+ }
+
+ public void setCsAvailability(int csAvailability) {
+ this.csAvailability = csAvailability;
+ }
+
+ public int getReliability() {
+ return reliability;
+ }
+
+ public void setReliability(int reliability) {
+ this.reliability = reliability;
+ }
+
+ public int getExpDataRate() {
+ return expDataRate;
+ }
+
+ public void setExpDataRate(int expDataRate) {
+ this.expDataRate = expDataRate;
+ }
+
+ public int getTrafficDensity() {
+ return trafficDensity;
+ }
+
+ public void setTrafficDensity(int trafficDensity) {
+ this.trafficDensity = trafficDensity;
+ }
+
+ public int getConnDensity() {
+ return connDensity;
+ }
+
+ public void setConnDensity(int connDensity) {
+ this.connDensity = connDensity;
+ }
+
+ public String getResourceVersion() {
+ return resourceVersion;
+ }
+
+ public void setResourceVersion(String resourceVersion) {
+ this.resourceVersion = resourceVersion;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceRsp.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceRsp.java
new file mode 100644
index 00000000..72647331
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/AAIServiceRsp.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright 2019 HUAWEI Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import java.io.Serializable;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AAIServiceRsp implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3571621205575997704L;
+ private List<AAIService> aAIService;
+
+ public static long getSerialversionuid() {
+ return serialVersionUID;
+ }
+
+ public List<AAIService> getaAIService() {
+ return aAIService;
+ }
+
+ public void setaAIService(List<AAIService> aAIService) {
+ this.aAIService = aAIService;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelatedToProperty.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelatedToProperty.java
new file mode 100644
index 00000000..b1f26149
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelatedToProperty.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+
+public class RelatedToProperty {
+
+ private String propertyKey;
+
+ private String propertyValue;
+
+ public String getPropertyKey() {
+ return propertyKey;
+ }
+
+ public void setPropertyKey(String propertyKey) {
+ this.propertyKey = propertyKey;
+ }
+
+ public String getPropertyValue() {
+ return propertyValue;
+ }
+
+ public void setPropertyValue(String propertyValue) {
+ this.propertyValue = propertyValue;
+ }
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/Relationship.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/Relationship.java
new file mode 100644
index 00000000..c0dda4ac
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/Relationship.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class Relationship {
+
+
+ private String relatedTo;
+
+ private String relationshipLabel;
+
+ private String relatedLink;
+
+ private List<RelationshipData> relationshipData;
+
+ private List<RelatedToProperty> relatedToProperty;
+
+ public String getRelatedTo() {
+ return relatedTo;
+ }
+
+ public void setRelatedTo(String relatedTo) {
+ this.relatedTo = relatedTo;
+ }
+
+ public String getRelationshipLabel() {
+ return relationshipLabel;
+ }
+
+ public void setRelationshipLabel(String relationshipLabel) {
+ this.relationshipLabel = relationshipLabel;
+ }
+
+ public String getRelatedLink() {
+ return relatedLink;
+ }
+
+ public void setRelatedLink(String relatedLink) {
+ this.relatedLink = relatedLink;
+ }
+
+ public List<RelationshipData> getRelationshipData() {
+ return relationshipData;
+ }
+
+ public void setRelationshipData(List<RelationshipData> relationshipData) {
+ this.relationshipData = relationshipData;
+ }
+
+ public List<RelatedToProperty> getRelatedToProperty() {
+ return relatedToProperty;
+ }
+
+ public void setRelatedToProperty(List<RelatedToProperty> relatedToProperty) {
+ this.relatedToProperty = relatedToProperty;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelationshipData.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelationshipData.java
new file mode 100644
index 00000000..843b2222
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/bean/RelationshipData.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.bean;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class RelationshipData {
+
+ private String relationshipKey;
+
+ private String relationshipValue;
+
+ public String getRelationshipKey() {
+ return relationshipKey;
+ }
+
+ public void setRelationshipKey(String relationshipKey) {
+ this.relationshipKey = relationshipKey;
+ }
+
+ public String getRelationshipValue() {
+ return relationshipValue;
+ }
+
+ public void setRelationshipValue(String relationshipValue) {
+ this.relationshipValue = relationshipValue;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/exception/AAIException.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/exception/AAIException.java
new file mode 100644
index 00000000..feadad3e
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/aai/exception/AAIException.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.aai.exception;
+
+public class AAIException extends RuntimeException {
+
+ public AAIException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/KpiSliceService.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/KpiSliceService.java
new file mode 100644
index 00000000..e6637f5f
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/KpiSliceService.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.kpi;
+
+
+import org.onap.usecaseui.server.service.slicingdomain.kpi.bean.KpiTotalBandwidth;
+import org.onap.usecaseui.server.service.slicingdomain.kpi.bean.KpiTotalTraffic;
+import org.onap.usecaseui.server.service.slicingdomain.kpi.bean.KpiUserNumber;
+import okhttp3.RequestBody;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+
+public interface KpiSliceService {
+
+ @Headers({"Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json"})
+ @POST("/api/kpi-service/v1/userNumber")
+ Call<KpiUserNumber> listUserNumber(@Body RequestBody body);
+
+ @Headers({"Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json"})
+ @POST("/api/kpi-service/v1/totalBandwidth")
+ Call<KpiTotalBandwidth> listTotalBandwidth(@Body RequestBody body);
+
+ @Headers({"Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json"})
+ @POST("/api/kpi-service/v1/totalTraffic")
+ Call<KpiTotalTraffic> listTotalTraffic(@Body RequestBody body);
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiBean.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiBean.java
new file mode 100644
index 00000000..929eb691
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiBean.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.kpi.bean;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class KpiBean {
+ private String id;
+
+ private String timeStamp;
+
+ private int hours;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getTimeStamp() {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(String timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public int getHours() {
+ return hours;
+ }
+
+ public void setHours(int hours) {
+ this.hours = hours;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalBandwidth.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalBandwidth.java
new file mode 100644
index 00000000..eed118c1
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalBandwidth.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.kpi.bean;
+
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class KpiTotalBandwidth {
+ private String id;
+
+ private List<TotalBandwidth> totalBandwidth;
+
+
+ public static class TotalBandwidth{
+ private String timeStamp;
+
+ private int bandwidth;
+
+ public String getTimeStamp() {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(String timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public int getBandwidth() {
+ return bandwidth;
+ }
+
+ public void setBandwidth(int bandwidth) {
+ this.bandwidth = bandwidth;
+ }
+
+
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public List<TotalBandwidth> getTotalBandwidth() {
+ return totalBandwidth;
+ }
+
+ public void setTotalBandwidth(List<TotalBandwidth> totalBandwidth) {
+ this.totalBandwidth = totalBandwidth;
+ }
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalTraffic.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalTraffic.java
new file mode 100644
index 00000000..8c4f99e3
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiTotalTraffic.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.kpi.bean;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class KpiTotalTraffic {
+
+ private String id;
+
+ private int totalTraffic;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public int getTotalTraffic() {
+ return totalTraffic;
+ }
+
+ public void setTotalTraffic(int totalTraffic) {
+ this.totalTraffic = totalTraffic;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiUserNumber.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiUserNumber.java
new file mode 100644
index 00000000..ca4edccf
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiUserNumber.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.kpi.bean;
+
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class KpiUserNumber {
+
+ private String id;
+
+ private List<UserNumbers> userNumbers;
+
+ public static class UserNumbers {
+
+ private String timeStamp;
+
+ private int userNumber;
+
+ public String getTimeStamp() {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(String timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public int getUserNumber() {
+ return userNumber;
+ }
+
+ public void setUserNumber(int userNumber) {
+ this.userNumber = userNumber;
+ }
+
+
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public List<UserNumbers> getUserNumbers() {
+ return userNumbers;
+ }
+
+ public void setUserNumbers(List<UserNumbers> userNumbers) {
+ this.userNumbers = userNumbers;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService-595b4273.javaoldbuyong b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService-595b4273.javaoldbuyong
new file mode 100644
index 00000000..bd33ae52
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService-595b4273.javaoldbuyong
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so;
+
+import org.onap.usecaseui.server.service.lcm.domain.so.bean.DeleteOperationRsp;
+import org.onap.usecaseui.server.service.lcm.domain.so.bean.OperationProgressInformation;
+import org.onap.usecaseui.server.service.lcm.domain.so.bean.ServiceOperation;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIAllottedResources;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceInstance;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceInstanceRsp;
+import org.onap.usecaseui.server.service.slicingdomain.aai.bean.AAIServiceNST;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.ActivateService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOOperation;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTaskD;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTaskRsp;
+
+import com.alibaba.fastjson.JSONObject;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.DELETE;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.PUT;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+
+public interface SOSliceService {
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/onap/so/infra/e2eServiceInstances/v3/{serviceId}/operations/{operationId}")
+ Call<SOOperation> queryOperationProgress(@Path("serviceId") String serviceId,
+ @Path("operationId") String operationId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @POST("/onap/so/infra/e2eServiceInstances/v3/{serviceInstanceId}/activate")
+ Call<ActivateService> activeService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @POST("/onap/so/infra/e2eServiceInstances/v3/{serviceInstanceId}/deactivate")
+ Call<ActivateService> deactiveService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @DELETE("/onap/so/infra/e2eServiceInstances/v3/{serviceInstanceId}")
+ Call<ActivateService> terminateService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/onap/so/infra/orchestrationTasks/v4")
+ Call<SOTaskRsp> listTask();
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/onap/so/infra/orchestrationTasks/v4")
+ Call<SOTaskRsp> listTaskByStage(@Query("status") String status );
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/onap/so/infra/orchestrationTasks/v4/{taskId}")
+ Call<SOTask> getTaskById(@Path("taskId") String taskId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/onap/so/infra/orchestrationTasks/v4/{taskId}")
+ Call<SOTaskD> getTaskByIdD(@Path("taskId") String taskId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @PUT("/onap/so/infra/orchestrationTasks/v4/{taskId}")
+ Call<ResponseBody> updateService(@Path("taskId") String taskId, @Body RequestBody body);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @POST("/onap/so/infra/orchestrationTasks/v4/{taskId}/commit")
+ Call<ResponseBody> commitTask(@Path("taskId") String taskId);
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.java
new file mode 100644
index 00000000..4293c9a9
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so;
+
+import org.onap.usecaseui.server.bean.csmf.CreateResponse;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.ActivateService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOOperation;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+
+import com.alibaba.fastjson.JSONArray;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.DELETE;
+import retrofit2.http.GET;
+import retrofit2.http.HTTP;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.PUT;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+
+public interface SOSliceService {
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/api/so-serviceInstances/v3/{serviceId}/operations/{operationId}")
+ Call<SOOperation> queryOperationProgress(@Path("serviceId") String serviceId,
+ @Path("operationId") String operationId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @POST("/api/so-serviceInstances/v3/{serviceInstanceId}/activate")
+ Call<ActivateService> activeService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @POST("/api/so-serviceInstances/v3/{serviceInstanceId}/deactivate")
+ Call<ActivateService> deactiveService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+
+ @HTTP(method = "DELETE",path = "/api/so-serviceInstances/v3/{serviceInstanceId}",hasBody = true)
+ Call<ActivateService> terminateService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/api/so-orchestrationTasks/v4")
+ Call<JSONArray> listTask();
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/api/so-orchestrationTasks/v4")
+ Call<JSONArray> listTaskByStage(@Query("status") String status );
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/api/so-orchestrationTasks/v4/{taskId}")
+ Call<SOTask> getTaskById(@Path("taskId") String taskId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/api/so-orchestrationTasks/v4/{taskId}")
+ Call<SOTask> getTaskByIdD(@Path("taskId") String taskId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @PUT("/api/so-orchestrationTasks/v4/{taskId}")
+ Call<ResponseBody> updateService(@Path("taskId") String taskId, @Body RequestBody body);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @POST("/api/so-orchestrationTasks/v4/{taskId}/commit")
+ Call<ResponseBody> commitTask(@Path("taskId") String taskId);
+
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @POST("/api/so-serviceInstances/v3")
+ Call<CreateResponse> submitOrders(@Body RequestBody body);
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.javalocal b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.javalocal
new file mode 100644
index 00000000..26f344af
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/SOSliceService.javalocal
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so;
+
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.ActivateService;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOOperation;
+import org.onap.usecaseui.server.service.slicingdomain.so.bean.SOTask;
+
+import com.alibaba.fastjson.JSONArray;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.DELETE;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.PUT;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+
+public interface SOSliceService {
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/onap/so/infra/e2eServiceInstances/v3/{serviceId}/operations/{operationId}")
+ Call<SOOperation> queryOperationProgress(@Path("serviceId") String serviceId,
+ @Path("operationId") String operationId);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @POST("/onap/so/infra/e2eServiceInstances/v3/{serviceInstanceId}/activate")
+ Call<ActivateService> activeService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @POST("/onap/so/infra/e2eServiceInstances/v3/{serviceInstanceId}/deactivate")
+ Call<ActivateService> deactiveService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @DELETE("/onap/so/infra/e2eServiceInstances/v3/{serviceInstanceId}")
+ Call<ActivateService> terminateService(@Path("serviceInstanceId") String serviceInstanceId, @Body RequestBody body);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/onap/so/infra/orchestrationTasks/v4")
+ Call<JSONArray> listTask();
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/onap/so/infra/orchestrationTasks/v4")
+ Call<JSONArray> listTaskByStage(@Query("status") String status );
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @GET("/onap/so/infra/orchestrationTasks/v4/{taskId}")
+ Call<SOTask> getTaskById(@Path("taskId") String taskId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @GET("/onap/so/infra/orchestrationTasks/v4/{taskId}")
+ Call<SOTask> getTaskByIdD(@Path("taskId") String taskId);
+
+ @Headers({ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json" })
+ @PUT("/onap/so/infra/orchestrationTasks/v4/{taskId}")
+ Call<ResponseBody> updateService(@Path("taskId") String taskId, @Body RequestBody body);
+
+ @Headers({
+ "X-TransactionId: 9999",
+ "X-FromAppId: onap-cli",
+ "Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==",
+ "Accept: application/json"
+ })
+ @POST("/onap/so/infra/orchestrationTasks/v4/{taskId}/commit")
+ Call<ResponseBody> commitTask(@Path("taskId") String taskId);
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/ActivateService.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/ActivateService.java
new file mode 100644
index 00000000..2e4ac9df
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/ActivateService.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so.bean;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class ActivateService {
+
+ private String operationId;
+
+ public String getOperationId() {
+ return operationId;
+ }
+
+ public void setOperationId(String operationId) {
+ this.operationId = operationId;
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOOperation.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOOperation.java
new file mode 100644
index 00000000..58b04fdf
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOOperation.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so.bean;
+
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SOOperation {
+
+ private Operation operation;
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public class Operation {
+
+ private String operationId;
+
+ private String operation;
+
+ private String result;
+
+ private String reason;
+
+ private String userId;
+
+ private String operationContent;
+
+ private String operateAt;
+
+ private int progress;
+
+ private String finishedAt;
+
+ public String getOperationId() {
+ return operationId;
+ }
+
+ public void setOperationId(String operationId) {
+ this.operationId = operationId;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
+ public String getResult() {
+ return result;
+ }
+
+ public void setResult(String result) {
+ this.result = result;
+ }
+
+ public String getReason() {
+ return reason;
+ }
+
+ public void setReason(String reason) {
+ this.reason = reason;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public String getOperationContent() {
+ return operationContent;
+ }
+
+ public void setOperationContent(String operationContent) {
+ this.operationContent = operationContent;
+ }
+
+ public String getOperateAt() {
+ return operateAt;
+ }
+
+ public void setOperateAt(String operateAt) {
+ this.operateAt = operateAt;
+ }
+
+ public int getProgress() {
+ return progress;
+ }
+
+ public void setProgress(int progress) {
+ this.progress = progress;
+ }
+
+ public String getFinishedAt() {
+ return finishedAt;
+ }
+
+ public void setFinishedAt(String finishedAt) {
+ this.finishedAt = finishedAt;
+ }
+ }
+
+ public Operation getOperation() {
+ return operation;
+ }
+
+ public void setOperation(Operation operation) {
+ this.operation = operation;
+ }
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTask.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTask.java
new file mode 100644
index 00000000..0fd5684f
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTask.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright 2019 HUAWEI Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so.bean;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SOTask {
+
+ private String taskId;
+
+ private String requestId;
+
+ private String name;
+
+ private String createdTime;
+
+ private String status;
+
+ private String isManual;
+
+ private String params;
+
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ public void setRequestId(String requestId) {
+ this.requestId = requestId;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public String getRequestId() {
+ return requestId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+
+ public String getCreatedTime() {
+ return createdTime;
+ }
+
+ public void setCreatedTime(String createdTime) {
+ this.createdTime = createdTime;
+ }
+
+ public String getIsManual() {
+ return isManual;
+ }
+
+ public void setIsManual(String isManual) {
+ this.isManual = isManual;
+ }
+
+ public String getParams() {
+ return params;
+ }
+
+ public void setParams(String params) {
+ this.params = params;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTaskRsp.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTaskRsp.java
new file mode 100644
index 00000000..40244a46
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/bean/SOTaskRsp.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ * <p>
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so.bean;
+
+import java.util.List;
+
+public class SOTaskRsp {
+
+ private List<SOTask> task;
+
+ public List<SOTask> getTask() {
+ return task;
+ }
+
+ public void setTask(List<SOTask> task) {
+ this.task = task;
+ }
+
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/exception/SOException.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/exception/SOException.java
new file mode 100644
index 00000000..7e9484f1
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/so/exception/SOException.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright 2016-2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onap.usecaseui.server.service.slicingdomain.so.exception;
+
+public class SOException extends RuntimeException {
+
+ public SOException(String message) {
+ super(message);
+ }
+
+ public SOException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java b/server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java
new file mode 100644
index 00000000..3012a723
--- /dev/null
+++ b/server/src/main/java/org/onap/usecaseui/server/util/nsmf/NsmfCommonUtil.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2019 CMCC, Inc. and others. 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.
+ */
+package org.onap.usecaseui.server.util.nsmf;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+import org.onap.usecaseui.server.bean.nsmf.common.PagedResult;
+import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant;
+
+
+public class NsmfCommonUtil {
+
+ public static String timestamp2Time(String timeStamp) throws ParseException {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(NsmfParamConstant.DATE_FORMAT);
+ Date date = simpleDateFormat.parse(timeStamp);
+ long time = date.getTime();
+ return String.valueOf(time);
+ }
+
+ public static String time2Timestamp(String time) {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(NsmfParamConstant.DATE_FORMAT);
+ long longTime = new Long(time);
+ Date date = new Date(longTime);
+ return simpleDateFormat.format(date);
+ }
+
+ public static <T> PagedResult getPagedList(List<T> list, int pageNo, int pageSize) {
+ if (list == null || pageNo < 1 || (pageNo - 1) * pageSize > list.size()) {
+ return new PagedResult(0, Collections.EMPTY_LIST);
+ }
+ list = list.stream().skip((pageNo - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+ return new PagedResult(list.size(), list );
+ }
+}