diff options
author | deepikasatheesh <deepika.s84@wipro.com> | 2022-08-30 08:48:17 +0000 |
---|---|---|
committer | deepikasatheesh <deepika.s84@wipro.com> | 2022-08-30 08:49:18 +0000 |
commit | d8424ef4e21880f5dc97131b0adb89509586031c (patch) | |
tree | 3c963fdb7e0980b0f1086874e9fe90306943f6ae /server/src/main/java/org/onap | |
parent | 61070cf915619fc52b07bd1b44030b4aa93ce052 (diff) |
Implement Network slicing KPI Monitoring for new KPI5.1.0
Issue-ID: USECASEUI-715
Signed-off-by: deepikasatheesh <deepika.s84@wipro.com>
Change-Id: Ic02250ea79b6e0894ae2b0218bb22fbf1828744d
Diffstat (limited to 'server/src/main/java/org/onap')
10 files changed, 266 insertions, 0 deletions
diff --git a/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/PDUSessionEstSRInfo.java b/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/PDUSessionEstSRInfo.java new file mode 100644 index 00000000..c60533de --- /dev/null +++ b/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/PDUSessionEstSRInfo.java @@ -0,0 +1,30 @@ +/*
+ * Copyright (C) 2022 Wipro Limited. 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.bean.nsmf.monitor;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PDUSessionEstSRInfo {
+
+ private String timestamp;
+
+ private String pduSessionEstSR;
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/ServicePDUSessionEstSRInfo.java b/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/ServicePDUSessionEstSRInfo.java new file mode 100644 index 00000000..0c71346a --- /dev/null +++ b/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/ServicePDUSessionEstSRInfo.java @@ -0,0 +1,32 @@ +/*
+ * Copyright (C) 2022 Wipro Limited. 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.bean.nsmf.monitor;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ServicePDUSessionEstSRInfo {
+
+ @JsonProperty("service_id")
+ private String id;
+
+ private List<PDUSessionEstSRInfo> pDUSessionEstSRInfoList;
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/ServicePDUSessionEstSRList.java b/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/ServicePDUSessionEstSRList.java new file mode 100644 index 00000000..f87e2fdf --- /dev/null +++ b/server/src/main/java/org/onap/usecaseui/server/bean/nsmf/monitor/ServicePDUSessionEstSRList.java @@ -0,0 +1,30 @@ +/*
+ * Copyright (C) 2022 Wipro Limited. 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.bean.nsmf.monitor;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ServicePDUSessionEstSRList {
+
+ @JsonProperty("slicing_pDUSessionEstSR_list")
+ private List<ServicePDUSessionEstSRInfo> servicePDUSessionEstSRInfoList;
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/controller/nsmf/ResourceMonitorController.java b/server/src/main/java/org/onap/usecaseui/server/controller/nsmf/ResourceMonitorController.java index 2819b115..8f35b68b 100644 --- a/server/src/main/java/org/onap/usecaseui/server/controller/nsmf/ResourceMonitorController.java +++ b/server/src/main/java/org/onap/usecaseui/server/controller/nsmf/ResourceMonitorController.java @@ -68,4 +68,13 @@ public class ResourceMonitorController { ServiceList serviceList) { return resourceMonitorService.querySlicingTotalBandwidth(queryTimestamp, serviceList); } + + @ResponseBody + @PostMapping(value = { + "/queryTimestamp/{queryTimestamp}/pDUSessionEstSR"}, produces = "application/json") + public ServiceResult querySlicingPDUSessionEstSR(@PathVariable(value = "queryTimestamp") String queryTimestamp, + @RequestBody + ServiceList serviceList) { + return resourceMonitorService.querySlicingPDUSessionEstSR(queryTimestamp, serviceList); + } } diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMonitorService.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMonitorService.java index 7a2a249e..19f4e234 100644 --- a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMonitorService.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/ResourceMonitorService.java @@ -25,4 +25,6 @@ public interface ResourceMonitorService { ServiceResult querySlicingOnlineUserNumber(String queryTimestamp, ServiceList serviceList); ServiceResult querySlicingTotalBandwidth(String queryTimestamp, ServiceList serviceList); + + ServiceResult querySlicingPDUSessionEstSR(String queryTimestamp, ServiceList serviceList); } diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceConvert.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceConvert.java index 64e12846..227ce2f7 100644 --- a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceConvert.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceConvert.java @@ -27,12 +27,16 @@ import org.onap.usecaseui.server.bean.nsmf.monitor.TotalBandwidthInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.TrafficReqInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.UsageTrafficInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.UserNumberInfo; +import org.onap.usecaseui.server.bean.nsmf.monitor.ServicePDUSessionEstSRInfo; +import org.onap.usecaseui.server.bean.nsmf.monitor.PDUSessionEstSRInfo; import org.onap.usecaseui.server.constant.nsmf.NsmfParamConstant; 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 org.onap.usecaseui.server.service.slicingdomain.kpi.bean.TotalBandwidth; import org.onap.usecaseui.server.service.slicingdomain.kpi.bean.UserNumbers; +import org.onap.usecaseui.server.service.slicingdomain.kpi.bean.KpiPDUSessionEstSR; +import org.onap.usecaseui.server.service.slicingdomain.kpi.bean.PDUSessionEstSR; import org.onap.usecaseui.server.util.nsmf.NsmfCommonUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,6 +70,14 @@ public class ResourceMonitorServiceConvert { return slicingKpiReqInfo; } + SlicingKpiReqInfo buildSlicingPDUSessionEstSRKpiReqInfo(ServiceInfo serviceInfo, String queryTimestamp, int kpiHours) { + SlicingKpiReqInfo slicingKpiReqInfo = new SlicingKpiReqInfo(); + slicingKpiReqInfo.setId("PDUSessionEstSR"+"."+serviceInfo.getServiceId()); + slicingKpiReqInfo.setTimeStamp(queryTimestamp); + slicingKpiReqInfo.setHours(kpiHours); + return slicingKpiReqInfo; + } + void convertServiceOnlineUserInfo(ServiceOnlineUserInfo serviceOnlineUserInfo, KpiUserNumber kpiUserNumber) throws InvocationTargetException, IllegalAccessException, ParseException { @@ -105,4 +117,21 @@ public class ResourceMonitorServiceConvert { serviceTotalBandwidthInfo.setTotalBandwidthInfoList(totalBandwidthInfoList); } + + void convertServicePDUSessionEstSRInfo(ServicePDUSessionEstSRInfo servicePDUSessionEstSRInfo, + KpiPDUSessionEstSR kpiPDUSessionEstSR) + throws InvocationTargetException, IllegalAccessException, ParseException { + + List<PDUSessionEstSRInfo> kpiPDUSessionEstSRInfoList = new ArrayList<>(); + servicePDUSessionEstSRInfo.setId(kpiPDUSessionEstSR.getRequest().getId().substring(kpiPDUSessionEstSR.getRequest().getId().lastIndexOf(".") + 1)); + if (kpiPDUSessionEstSR.getResult() != null) { + for (PDUSessionEstSR pDUSessionEstSR : kpiPDUSessionEstSR.getResult()) { + PDUSessionEstSRInfo kpiPDUSessionEstSRInfo = new PDUSessionEstSRInfo(); + kpiPDUSessionEstSRInfo.setTimestamp(pDUSessionEstSR.getTimeStamp()); + kpiPDUSessionEstSRInfo.setPduSessionEstSR(String.valueOf(pDUSessionEstSR.getPDUSessionEstSR())); + kpiPDUSessionEstSRInfoList.add(kpiPDUSessionEstSRInfo); + } + } + servicePDUSessionEstSRInfo.setPDUSessionEstSRInfoList(kpiPDUSessionEstSRInfoList); + } } diff --git a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImpl.java index c9c16041..57de5338 100644 --- a/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImpl.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/nsmf/impl/ResourceMonitorServiceImpl.java @@ -34,7 +34,9 @@ import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceList; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceOnlineUserInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceOnlineUserList; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceTotalBandwidthInfo; +import org.onap.usecaseui.server.bean.nsmf.monitor.ServicePDUSessionEstSRInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.ServiceTotalBandwidthList; +import org.onap.usecaseui.server.bean.nsmf.monitor.ServicePDUSessionEstSRList; import org.onap.usecaseui.server.bean.nsmf.monitor.SlicingKpiReqInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.TrafficReqInfo; import org.onap.usecaseui.server.bean.nsmf.monitor.UsageTrafficInfo; @@ -46,6 +48,7 @@ import org.onap.usecaseui.server.service.slicingdomain.kpi.KpiSliceService; 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 org.onap.usecaseui.server.service.slicingdomain.kpi.bean.KpiPDUSessionEstSR; import org.onap.usecaseui.server.util.RestfulServices; import org.onap.usecaseui.server.util.nsmf.NsmfCommonUtil; import org.slf4j.Logger; @@ -250,4 +253,57 @@ public class ResourceMonitorServiceImpl implements ResourceMonitorService { serviceResult.setResult_body(serviceTotalBandwidthList); return serviceResult; } + + @Override + public ServiceResult querySlicingPDUSessionEstSR(String queryTimestamp, ServiceList serviceList) { + ServiceResult serviceResult = new ServiceResult(); + ResultHeader resultHeader = new ResultHeader(); + initConfig(); + ServicePDUSessionEstSRList servicePDUSessionEstSRList = new ServicePDUSessionEstSRList(); + + List<ServicePDUSessionEstSRInfo> servicePDUSessionEstSRInfoList = new ArrayList<>(); + List<ServiceInfo> serviceInfoList = serviceList.getServiceInfoList(); + + String resultMsg = ""; + + try { + for (ServiceInfo serviceInfo : serviceInfoList) { + SlicingKpiReqInfo slicingKpiReqInfo = resourceMonitorServiceConvert + .buildSlicingPDUSessionEstSRKpiReqInfo(serviceInfo, queryTimestamp, kpiHours); + String jsonstr = JSON.toJSONString(slicingKpiReqInfo); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonstr); + Response<KpiPDUSessionEstSR> response =this.kpiSliceService.listPDUSessionEstSR(requestBody).execute(); + if (response.isSuccessful()) { + KpiPDUSessionEstSR kpiPDUSessionEstSR = response.body(); + logger.info("querySlicingPDUSessionEstSR: listPDUSessionEstSR reponse is:{}", + gson.toJson(kpiPDUSessionEstSR)); + ServicePDUSessionEstSRInfo servicePDUSessionEstSRInfo = new ServicePDUSessionEstSRInfo(); + resourceMonitorServiceConvert + .convertServicePDUSessionEstSRInfo(servicePDUSessionEstSRInfo, kpiPDUSessionEstSR); + servicePDUSessionEstSRInfoList.add(servicePDUSessionEstSRInfo); + resultMsg = "5G slicing service PDUSessionEstSR query result."; + resultHeader.setResult_code(NsmfCodeConstant.SUCCESS_CODE); + } else { + logger.error(String + .format("querySlicingPDUSessionEstSR: Can not get KpiUserNumber[code={}, message={}]", + response.code(), + response.message())); + resultMsg = "5G slicing PDUSessionEstSR query failed!"; + resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN); + } + } + } catch (Exception e) { + resultMsg = "5G slicing PDUSessionEstSR query failed. Unknown exception occurred!"; + resultHeader.setResult_code(NsmfCodeConstant.ERROR_CODE_UNKNOWN); + logger.error("Exception in querySlicingPDUSessionEstSR :{}",e); + } + + logger.info(resultMsg); + logger.info("querySlicingPDUSessionEstSR: 5G slicing kpiPDUSessionEstSR query has been finished."); + servicePDUSessionEstSRList.setServicePDUSessionEstSRInfoList(servicePDUSessionEstSRInfoList); + resultHeader.setResult_message(resultMsg); + serviceResult.setResult_header(resultHeader); + serviceResult.setResult_body(servicePDUSessionEstSRList); + return serviceResult; + } } 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 index 084616be..9522b45f 100644 --- 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 @@ -19,6 +19,7 @@ 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 org.onap.usecaseui.server.service.slicingdomain.kpi.bean.KpiPDUSessionEstSR; import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.http.Body; @@ -39,4 +40,8 @@ public interface KpiSliceService { @POST("/api/datalake/v1/exposure/totalTraffic") Call<KpiTotalTraffic> listTotalTraffic(@Body RequestBody body); + @Headers({"Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==", "Accept: application/json"}) + @POST("/api/datalake/v1/exposure/pDUSessionEstSR") + Call<KpiPDUSessionEstSR> listPDUSessionEstSR(@Body RequestBody body); + } diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiPDUSessionEstSR.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiPDUSessionEstSR.java new file mode 100644 index 00000000..1a41f262 --- /dev/null +++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/KpiPDUSessionEstSR.java @@ -0,0 +1,35 @@ +/**
+ * Copyright (C) 2022 Wipro Limited. 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.bean;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+import org.onap.usecaseui.server.bean.nsmf.monitor.SlicingKpiReqInfo;
+
+@Getter
+@Setter
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class KpiPDUSessionEstSR {
+
+ private List<PDUSessionEstSR> result;
+
+ private SlicingKpiReqInfo request;
+
+ private int result_count;
+
+}
diff --git a/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/PDUSessionEstSR.java b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/PDUSessionEstSR.java new file mode 100644 index 00000000..73da0f46 --- /dev/null +++ b/server/src/main/java/org/onap/usecaseui/server/service/slicingdomain/kpi/bean/PDUSessionEstSR.java @@ -0,0 +1,38 @@ +/*
+ * Copyright (C) 2022 Wipro Limited. 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.bean;
+
+public class PDUSessionEstSR {
+ private String timeStamp;
+
+ private int pDUSessionEstSR;
+
+ public String getTimeStamp() {
+ return timeStamp;
+ }
+
+ public void setTimeStamp(String timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public int getPDUSessionEstSR() {
+ return pDUSessionEstSR;
+ }
+
+ public void setPDUSessionEstSR(int pDUSessionEstSR) {
+ this.pDUSessionEstSR = pDUSessionEstSR;
+ }
+}
|