diff options
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 ); + } +} |