X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=bpmn%2Fso-bpmn-moi%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fso%2Fbpmn%2Fmoi%2Ftasks%2FModifyRANNssiBBTask.java;fp=bpmn%2Fso-bpmn-moi%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fso%2Fbpmn%2Fmoi%2Ftasks%2FModifyRANNssiBBTask.java;h=eba35673e1af7056b68499b98c73de31dd374cb2;hb=09e2242fd1b3258d299018e501c10f124e5b3104;hp=0000000000000000000000000000000000000000;hpb=6624366c1485f352220216e45666d6083da04d6c;p=so.git diff --git a/bpmn/so-bpmn-moi/src/main/java/org/onap/so/bpmn/moi/tasks/ModifyRANNssiBBTask.java b/bpmn/so-bpmn-moi/src/main/java/org/onap/so/bpmn/moi/tasks/ModifyRANNssiBBTask.java new file mode 100644 index 0000000000..eba35673e1 --- /dev/null +++ b/bpmn/so-bpmn-moi/src/main/java/org/onap/so/bpmn/moi/tasks/ModifyRANNssiBBTask.java @@ -0,0 +1,186 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (c) 2022 Deutsche telekom + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + + +package org.onap.so.bpmn.moi.tasks; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.onap.aai.domain.yang.ServiceInstance; +import org.onap.aai.domain.yang.SliceProfile; +import org.onap.aaiclient.client.aai.AAIRestClientImpl; +import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.common.InjectionHelper; +import org.onap.so.bpmn.moi.util.AAISliceProfileUtil; +import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock; +import org.onap.so.moi.PlmnInfo; +import org.onap.so.moi.RANSliceSubnetProfile; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + + +@Component +public class ModifyRANNssiBBTask { + private static final Logger LOGGER = LoggerFactory.getLogger(ModifyRANNssiBBTask.class); + + @Autowired + private InjectionHelper injectionHelper; + + @Autowired + private AAISliceProfileUtil aaiSliceProfileUtil; + + private AAIRestClientImpl aaiRestClient = new AAIRestClientImpl(); + + private static final ObjectMapper mapper = new ObjectMapper(); + + + public void modifyNssi(BuildingBlockExecution execution) throws JsonProcessingException { + LOGGER.info("Modify NSSI"); + GeneralBuildingBlock gBB = execution.getGeneralBuildingBlock(); + + String serviceInstanceId = gBB.getServiceInstance().getServiceInstanceId(); + List> sliceProfilesData = gBB.getRequestContext().getRequestParameters().getUserParams(); + + SliceProfile updatedSliceProfile = mapUserParamsToSliceProfile(sliceProfilesData); + String sliceProfileIdFromRequest = getSliceProfileIdFromReq(sliceProfilesData); + aaiSliceProfileUtil.updateSliceProfile(execution, sliceProfileIdFromRequest, updatedSliceProfile); + + + + } + + private ServiceInstance mapUserParamsToServiceInstance(ServiceInstance sliceProfileServiceInstanceObj, + List> sliceProfilesData) { + Map mapParam = (Map) sliceProfilesData.get(0).get("nssi"); + LOGGER.info(">>> mapParam: {}", mapParam); + + // update administrative State + String administrativeState = (String) mapParam.get("administrativeState"); + LOGGER.info(">>> administrativeState: {}", administrativeState); + sliceProfileServiceInstanceObj.setOperationalStatus(administrativeState); + + List list = (ArrayList) mapParam.get("sliceProfileList"); + LOGGER.info(">>> sliceProfile List: {}", list); + Map idMap = (Map) list.get(0); + LOGGER.info("Keys of Id Map {} ", idMap.keySet()); + + // PlmnInfoList + for (String key : idMap.keySet()) { + if (key.equalsIgnoreCase("plmnInfoList")) { + PlmnInfo plmnInfo = mapper.convertValue(mapParam, PlmnInfo.class); + LOGGER.info("PlmnInfo {}", plmnInfo.getPlmnId().getMcc() + "-" + plmnInfo.getPlmnId().getMnc()); + LOGGER.info("Snssai {} ", plmnInfo.getSnssai().getSst() + "-" + plmnInfo.getSnssai().getSd()); + sliceProfileServiceInstanceObj.setServiceInstanceLocationId( + plmnInfo.getPlmnId().getMcc() + "-" + plmnInfo.getPlmnId().getMnc()); + sliceProfileServiceInstanceObj + .setEnvironmentContext(plmnInfo.getSnssai().getSst() + "-" + plmnInfo.getSnssai().getSd()); + } + } + return sliceProfileServiceInstanceObj; + } + + SliceProfile mapUserParamsToSliceProfile(List> sliceProfilesData) + throws JsonProcessingException { + SliceProfile sliceProfile = new SliceProfile(); + Map mapParam = (Map) sliceProfilesData.get(0).get("nssi"); + LOGGER.info(">>> mapParam in map: {}", mapParam); + + List list = (ArrayList) mapParam.get("sliceProfileList"); + + Map idMap = (Map) list.get(0); + + String sliceProfileId = (String) idMap.get("sliceProfileId"); + + sliceProfile.setProfileId(sliceProfileId); + RANSliceSubnetProfile ranSliceSubnetProfile = mapper.convertValue(mapParam, RANSliceSubnetProfile.class); + + + for (String key : idMap.keySet()) { + if (key.equalsIgnoreCase("RANSliceSubnetProfile")) { + RANSliceSubnetProfile RANSliceSubnetProfile = + mapper.convertValue(mapParam, RANSliceSubnetProfile.class); + LOGGER.info("RANSliceSubnetProfile inside {}", RANSliceSubnetProfile); + Map ranMap = (Map) idMap.get(key); + ranMap.forEach((k, v) -> { + LOGGER.info("Key : {}", k); + switch (k) { + case "coverageAreaTAList": + Integer coverageAreaTAList = (Integer) ranMap.get(k); + LOGGER.info("coverageAreaTAList {}", coverageAreaTAList); + sliceProfile.setCoverageAreaTAList(coverageAreaTAList.toString()); + break; + + case "latency": + Integer latency = (Integer) ranMap.get(k); + LOGGER.info("latency {}", latency); + sliceProfile.setLatency(latency); + break; + + case "dLLatency": + Integer dLLatency = (Integer) ranMap.get(k); + LOGGER.info("dLLatency {}", dLLatency); + sliceProfile.setLatency(dLLatency); + break; + + case "areaTrafficCapDL": + Integer areaTrafficCapDL = (Integer) ranMap.get(k); + LOGGER.info("areaTrafficCapDL {}", areaTrafficCapDL); + sliceProfile.setAreaTrafficCapDL(areaTrafficCapDL); + break; + + case "resourceSharingLevel": + String resourceSharingLevel = (String) ranMap.get(k); + LOGGER.info("resourceSharingLevel {}", resourceSharingLevel); + sliceProfile.setResourceSharingLevel(resourceSharingLevel); + break; + + case "maxNumberofUEs": + Integer maxNumberofUEs = (Integer) ranMap.get(k); + LOGGER.info("maxNumberofUEs {}", maxNumberofUEs); + sliceProfile.setMaxNumberOfUEs(maxNumberofUEs); + break; + + } + }); + } + } + return sliceProfile; + } + + private String getSliceProfileIdFromReq(List> sliceProfilesData) + throws JsonProcessingException { + Map mapParam = (Map) sliceProfilesData.get(0).get("nssi"); + + List list = (ArrayList) mapParam.get("sliceProfileList"); + + Map idMap = (Map) list.get(0); + String sliceProfileId = (String) idMap.get("sliceProfileId"); + + return sliceProfileId; + } + + +}