First version of ODU slice assurance usecase
[nonrtric.git] / test / usecases / odusliceassurance / goversion / messages / policyRatio.go
diff --git a/test/usecases/odusliceassurance/goversion/messages/policyRatio.go b/test/usecases/odusliceassurance/goversion/messages/policyRatio.go
new file mode 100644 (file)
index 0000000..8868ff8
--- /dev/null
@@ -0,0 +1,82 @@
+// -
+//   ========================LICENSE_START=================================
+//   O-RAN-SC
+//   %%
+//   Copyright (C) 2021: Nordix Foundation
+//   %%
+//   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 messages
+
+import (
+       "strconv"
+
+       "oransc.org/usecase/oduclosedloop/internal/structures"
+)
+
+type ORanDuRestConf struct {
+       DistributedUnitFunction DistributedUnitFunction `json:"distributed-unit-functions"`
+}
+
+type DistributedUnitFunction struct {
+       Id             string           `json:"id"`
+       Cell           []Cell           `json:"cell"`
+       RRMPolicyRatio []RRMPolicyRatio `json:"radio-resource-management-policy-ratio"`
+}
+
+type Cell struct {
+       Id        string `json:"id"`
+       AdmState  string `json:"administrative-state"`
+       OpState   string `json:"operational-state"`
+       UserLabel string `json:"user-label"`
+}
+
+type RRMPolicyRatio struct {
+       Id                      string            `json:"id"`
+       AdmState                string            `json:"administrative-state"`
+       UserLabel               string            `json:"user-label"`
+       RRMPolicyMaxRatio       int               `json:"radio-resource-management-policy-max-ratio"`
+       RRMPolicyMinRatio       string            `json:"radio-resource-management-policy-min-ratio"`
+       RRMPolicyDedicatedRatio string            `json:"radio-resource-management-policy-dedicated-ratio"`
+       ResourceType            string            `json:"resource-type"`
+       RRMPolicyMembers        []RRMPolicyMember `json:"radio-resource-management-policy-members"`
+}
+
+type RRMPolicyMember struct {
+       MobileCountryCode   string `json:"mobile-country-code"`
+       MobileNetworkCode   string `json:"mobile-network-code"`
+       SliceDifferentiator int    `json:"slice-differentiator"`
+       SliceServiceType    int    `json:"slice-service-type"`
+}
+
+func GetDedicatedRatioUpdateMessage(metric structures.SliceMetric, policy structures.PolicyRatio, dedicatedRatio int) RRMPolicyRatio {
+       return RRMPolicyRatio{
+               Id:                      policy.PolicyRatioId,
+               AdmState:                "Locked",
+               UserLabel:               "Some user label",
+               RRMPolicyMaxRatio:       policy.PolicyMaxRatio,
+               RRMPolicyMinRatio:       policy.PolicyMinRatio,
+               RRMPolicyDedicatedRatio: strconv.Itoa(dedicatedRatio),
+               ResourceType:            "prb",
+               RRMPolicyMembers: []RRMPolicyMember{
+                       {
+                               MobileCountryCode:   "046",
+                               MobileNetworkCode:   "651",
+                               SliceDifferentiator: metric.SliceDiff,
+                               SliceServiceType:    metric.SliceServiceType,
+                       },
+               },
+       }
+}