bfd8ef65e1316ca8e6e6a640fe4aa9a58cd5be77
[nonrtric.git] / policy-agent / src / main / java / org / oransc / policyagent / repository / Ric.java
1 /*-
2  * ========================LICENSE_START=================================
3  * O-RAN-SC
4  * %%
5  * Copyright (C) 2019 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 org.oransc.policyagent.repository;
22
23 import org.oransc.policyagent.configuration.RicConfig;
24 import org.oransc.policyagent.repository.Ric.RicState;
25
26 /**
27  * Represents the dynamic information about a NearRealtime-RIC.
28  */
29 public class Ric {
30     private final RicConfig ricConfig;
31     private RicState state = RicState.NOT_INITIATED;
32
33     /**
34      * Creates the Ric. Initial state is {@link RicState.NOT_INITIATED}.
35      *
36      * @param ricConfig The {@link RicConfig} for this Ric.
37      */
38     public Ric(RicConfig ricConfig) {
39         this.ricConfig = ricConfig;
40     }
41
42     public String name() {
43         return ricConfig.name();
44     }
45
46     public RicState state() {
47         return state;
48     }
49
50     public void setState(RicState newState) {
51         state = newState;
52     }
53
54     /**
55      * Determines if the given node is managed by this Ric.
56      *
57      * @param nodeName the node name to check.
58      * @return true if the given node is managed by this Ric.
59      */
60     public boolean isManaging(String nodeName) {
61         return ricConfig.managedElementIds().contains(nodeName);
62     }
63
64     /**
65      * Adds the given node as managed by this Ric.
66      *
67      * @param nodeName the node to add.
68      */
69     public void addManagedNode(String nodeName) {
70         if (!ricConfig.managedElementIds().contains(nodeName)) {
71             ricConfig.managedElementIds().add(nodeName);
72         }
73     }
74
75     /**
76      * Removes the given node as managed by this Ric.
77      *
78      * @param nodeName the node to remove.
79      */
80     public void removeManagedNode(String nodeName) {
81         ricConfig.managedElementIds().remove(nodeName);
82     }
83
84     /**
85      * Represents the states possible for a Ric.
86      */
87     public static enum RicState {
88         /**
89          * The Ric has not been initiated yet.
90          */
91         NOT_INITIATED,
92         /**
93          * The Ric is working fine.
94          */
95         ACTIVE,
96         /**
97          * Something is wrong with the Ric.
98          */
99         FAULTY,
100         /**
101          * The node is unreachable at the moment.
102          */
103         UNREACHABLE
104     }
105 }