X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Frepository%2FRic.java;h=fb2e4b92979b04fdf8c8ab482713f8a422922778;hb=7de2f355ed1956001d15cb7e57fdd37fdf88cdc5;hp=18a2dc7e2830ce140fd5309f7bd4d1d61fcd8c02;hpb=bbc4aa48f60dc70154ff07c2143918053f1c9154;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/Ric.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/Ric.java index 18a2dc7e..fb2e4b92 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/Ric.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/Ric.java @@ -25,18 +25,30 @@ import java.util.HashMap; import java.util.Map; import java.util.Vector; +import lombok.Getter; +import lombok.Setter; + +import org.oransc.policyagent.clients.A1Client.A1ProtocolType; import org.oransc.policyagent.configuration.RicConfig; /** - * Represents the dynamic information about a NearRealtime-RIC. + * Represents the dynamic information about a Near-RT RIC. */ public class Ric { - private final RicConfig ricConfig; - private RicState state = RicState.NOT_INITIATED; + + @Setter + private RicConfig ricConfig; + private RicState state = RicState.UNAVAILABLE; private Map supportedPolicyTypes = new HashMap<>(); + @Getter + @Setter + private A1ProtocolType protocolVersion = A1ProtocolType.UNKNOWN; + + @Getter + private final Lock lock = new Lock(); /** - * Creates the Ric. Initial state is {@link RicState.NOT_INITIATED}. + * Creates the Ric. Initial state is {@link RicState.UNDEFINED}. * * @param ricConfig The {@link RicConfig} for this Ric. */ @@ -48,16 +60,16 @@ public class Ric { return ricConfig.name(); } - public RicState state() { - return state; + public RicConfig getConfig() { + return this.ricConfig; } - public void setState(RicState newState) { - state = newState; + public synchronized RicState getState() { + return this.state; } - public RicConfig getConfig() { - return this.ricConfig; + public synchronized void setState(RicState state) { + this.state = state; } /** @@ -65,38 +77,18 @@ public class Ric { * * @return a vector containing the nodes managed by this Ric. */ - public Vector getManagedNodes() { + public synchronized Collection getManagedElementIds() { return ricConfig.managedElementIds(); } /** * Determines if the given node is managed by this Ric. * - * @param nodeName the node name to check. + * @param managedElementId the node name to check. * @return true if the given node is managed by this Ric. */ - public boolean isManaging(String nodeName) { - return ricConfig.managedElementIds().contains(nodeName); - } - - /** - * Adds the given node as managed by this Ric. - * - * @param nodeName the node to add. - */ - public void addManagedNode(String nodeName) { - if (!ricConfig.managedElementIds().contains(nodeName)) { - ricConfig.managedElementIds().add(nodeName); - } - } - - /** - * Removes the given node as managed by this Ric. - * - * @param nodeName the node to remove. - */ - public void removeManagedNode(String nodeName) { - ricConfig.managedElementIds().remove(nodeName); + public synchronized boolean isManaging(String managedElementId) { + return ricConfig.managedElementIds().contains(managedElementId); } /** @@ -104,12 +96,12 @@ public class Ric { * * @return the policy types supported by this Ric in an unmodifiable list. */ - public Collection getSupportedPolicyTypes() { - return supportedPolicyTypes.values(); + public synchronized Collection getSupportedPolicyTypes() { + return new Vector<>(supportedPolicyTypes.values()); } - public Collection getSupportedPolicyTypeNames() { - return supportedPolicyTypes.keySet(); + public synchronized Collection getSupportedPolicyTypeNames() { + return new Vector<>(supportedPolicyTypes.keySet()); } /** @@ -117,28 +109,15 @@ public class Ric { * * @param type the policy type to support. */ - public void addSupportedPolicyType(PolicyType type) { + public synchronized void addSupportedPolicyType(PolicyType type) { supportedPolicyTypes.put(type.name(), type); } /** - * Adds policy types as supported by this Ric. - * - * @param types the policy types to support. - */ - public void addSupportedPolicyTypes(Collection types) { - for (PolicyType type : types) { - addSupportedPolicyType(type); - } - } - - /** - * Removes a policy type as supported by this Ric. - * - * @param type the policy type to remove as supported by this Ric. + * Removes all policy type as supported by this Ric. */ - public void removeSupportedPolicyType(PolicyType type) { - supportedPolicyTypes.remove(type.name()); + public synchronized void clearSupportedPolicyTypes() { + supportedPolicyTypes.clear(); } /** @@ -148,21 +127,36 @@ public class Ric { * * @return true if the given type is supported by this Ric, false otherwise. */ - public boolean isSupportingType(String typeName) { + public synchronized boolean isSupportingType(String typeName) { return supportedPolicyTypes.containsKey(typeName); } + @Override + public synchronized String toString() { + return Ric.class.getSimpleName() + ": " + "name: " + name() + ", state: " + state + ", baseUrl: " + + ricConfig.baseUrl() + ", managedNodes: " + ricConfig.managedElementIds(); + } + /** * Represents the states possible for a Ric. */ - public static enum RicState { + public enum RicState { + /** + * The agent view of the Ric may be inconsistent. + */ + UNAVAILABLE, /** - * The Ric has not been initiated yet. + * The normal state. Policies can be configured. */ - NOT_INITIATED, + AVAILABLE, + /** + * The agent is synchronizing the view of the Ric. + */ + SYNCHRONIZING, + /** - * The Ric is working fine. + * A consistency check between the agent and the Ric is done */ - ACTIVE + CONSISTENCY_CHECK } }