Merge "Fix MR polling bug in DMaaP Mediator"
[nonrtric.git] / test / usecases / odusliceassurance / goversion / internal / structures / sliceassurance.go
1 // -
2 //   ========================LICENSE_START=================================
3 //   O-RAN-SC
4 //   %%
5 //   Copyright (C) 2021: Nordix Foundation
6 //   %%
7 //   Licensed under the Apache License, Version 2.0 (the "License");
8 //   you may not use this file except in compliance with the License.
9 //   You may obtain a copy of the License at
10 //
11 //        http://www.apache.org/licenses/LICENSE-2.0
12 //
13 //   Unless required by applicable law or agreed to in writing, software
14 //   distributed under the License is distributed on an "AS IS" BASIS,
15 //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 //   See the License for the specific language governing permissions and
17 //   limitations under the License.
18 //   ========================LICENSE_END===================================
19 //
20
21 package structures
22
23 type SliceAssuranceMeas struct {
24         Metrics  []*SliceMetric
25         Policies map[string]*PolicyRatio
26 }
27
28 func NewSliceAssuranceMeas() *SliceAssuranceMeas {
29         s := SliceAssuranceMeas{}
30         s.Metrics = make([]*SliceMetric, 0)
31         s.Policies = make(map[string]*PolicyRatio)
32         return &s
33 }
34
35 func (sa *SliceAssuranceMeas) AddNewPolicy(pr *PolicyRatio) {
36         sa.Policies[pr.PolicyRatioId] = pr
37 }
38
39 func (sa *SliceAssuranceMeas) GetSliceMetric(duid string, sd int, sst int) *SliceMetric {
40         for _, metric := range sa.Metrics {
41                 if metric.DUId == duid && metric.SliceDiff == sd && metric.SliceServiceType == sst {
42                         return metric
43                 }
44         }
45         return nil
46 }
47
48 func (sa *SliceAssuranceMeas) AddOrUpdateMetric(sm *SliceMetric) {
49         metric := sa.GetSliceMetric(sm.DUId, sm.SliceDiff, sm.SliceServiceType)
50         if metric != nil {
51                 for key, value := range sm.PM {
52                         metric.PM[key] = value
53                 }
54         } else {
55                 sa.Metrics = append(sa.Metrics, sm)
56         }
57 }