Seed code for O-DU slice assurance new repo
[nonrtric/rapp/ransliceassurance.git] / smoversion / internal / structures / measurements.go
diff --git a/smoversion/internal/structures/measurements.go b/smoversion/internal/structures/measurements.go
new file mode 100644 (file)
index 0000000..7842916
--- /dev/null
@@ -0,0 +1,88 @@
+// -
+//   ========================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 structures
+
+import "oransc.org/usecase/oduclosedloop/messages"
+
+type SliceMetric struct {
+       DUId             string
+       CellId           string
+       SliceDiff        int
+       SliceServiceType int
+       RRMPolicyRatioId string
+       PM               map[string]int
+}
+
+func NewSliceMetric(duid string, cellid string, sd int, sst int) *SliceMetric {
+       sm := SliceMetric{
+               DUId:             duid,
+               CellId:           cellid,
+               SliceDiff:        sd,
+               SliceServiceType: sst,
+       }
+       sm.PM = make(map[string]int)
+       return &sm
+}
+
+type PolicyRatio struct {
+       PolicyRatioId        string
+       PolicyMaxRatio       int
+       PolicyMinRatio       int
+       PolicyDedicatedRatio int
+}
+
+func NewPolicyRatio(id string, max_ratio int, min_ratio int, ded_ratio int) *PolicyRatio {
+       pr := PolicyRatio{
+               PolicyRatioId:        id,
+               PolicyMaxRatio:       max_ratio,
+               PolicyMinRatio:       min_ratio,
+               PolicyDedicatedRatio: ded_ratio,
+       }
+       return &pr
+}
+
+func (pr *PolicyRatio) GetUpdateDedicatedRatioMessage(sd int, sst int, dedicatedRatio int) interface{} {
+       message := messages.RRMPolicyRatio{
+               Id:                      pr.PolicyRatioId,
+               AdmState:                "unlocked",
+               UserLabel:               pr.PolicyRatioId,
+               RRMPolicyMaxRatio:       pr.PolicyMaxRatio,
+               RRMPolicyMinRatio:       pr.PolicyMinRatio,
+               RRMPolicyDedicatedRatio: dedicatedRatio,
+               ResourceType:            "prb",
+               RRMPolicyMembers: []messages.RRMPolicyMember{
+                       {
+                               MobileCountryCode:   "046",
+                               MobileNetworkCode:   "651",
+                               SliceDifferentiator: sd,
+                               SliceServiceType:    sst,
+                       },
+               },
+       }
+       rrmPolicies := []messages.RRMPolicyRatio{message}
+
+       return struct {
+               RRMPolicies []messages.RRMPolicyRatio `json:"radio-resource-management-policy-ratio"`
+       }{
+               RRMPolicies: rrmPolicies,
+       }
+
+}