X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Ftasks%2FStartupService.java;h=590b010789129220504aa0ffc3dd7ee9adde9a1b;hb=61d78df4c74f93d77bc56eaa51280a8cead66209;hp=90358b28be080c94cdbbd85b8dc5ec4be6de3ce9;hpb=f694dec2ff16069e6bb5c9de845278f44e8c9591;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java b/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java index 90358b28..590b0107 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java @@ -20,8 +20,9 @@ package org.oransc.policyagent.tasks; -import org.oransc.policyagent.clients.A1Client; +import org.oransc.policyagent.clients.A1ClientFactory; import org.oransc.policyagent.configuration.ApplicationConfig; +import org.oransc.policyagent.configuration.ApplicationConfig.RicConfigUpdate; import org.oransc.policyagent.configuration.RicConfig; import org.oransc.policyagent.repository.Policies; import org.oransc.policyagent.repository.PolicyTypes; @@ -47,6 +48,9 @@ public class StartupService implements ApplicationConfig.Observer { @Autowired ApplicationConfig applicationConfig; + @Autowired + RefreshConfigTask refreshConfigTask; + @Autowired private Rics rics; @@ -54,7 +58,7 @@ public class StartupService implements ApplicationConfig.Observer { PolicyTypes policyTypes; @Autowired - private A1Client a1Client; + private A1ClientFactory a1ClientFactory; @Autowired private Policies policies; @@ -62,30 +66,37 @@ public class StartupService implements ApplicationConfig.Observer { @Autowired private Services services; - // Only for unittesting - StartupService(ApplicationConfig appConfig, Rics rics, PolicyTypes policyTypes, A1Client a1Client, - Policies policies, Services services) { + // Only for unit testing + StartupService(ApplicationConfig appConfig, RefreshConfigTask refreshTask, Rics rics, PolicyTypes policyTypes, + A1ClientFactory a1ClientFactory, Policies policies, Services services) { this.applicationConfig = appConfig; + this.refreshConfigTask = refreshTask; this.rics = rics; this.policyTypes = policyTypes; - this.a1Client = a1Client; + this.a1ClientFactory = a1ClientFactory; this.policies = policies; this.services = services; } @Override - public void onRicConfigUpdate(RicConfig ricConfig, ApplicationConfig.RicConfigUpdate event) { + public void onRicConfigUpdate(RicConfig ricConfig, RicConfigUpdate event) { synchronized (this.rics) { - if (event.equals(ApplicationConfig.RicConfigUpdate.ADDED) - || event.equals(ApplicationConfig.RicConfigUpdate.CHANGED)) { - Ric ric = new Ric(ricConfig); - rics.put(ric); - RicRecoveryTask recoveryTask = new RicRecoveryTask(a1Client, policyTypes, policies, services); - recoveryTask.run(ric); - } else if (event.equals(ApplicationConfig.RicConfigUpdate.REMOVED)) { - rics.remove(ricConfig.name()); - } else { - logger.debug("Unhandled event :" + event); + switch (event) { + case ADDED: + case CHANGED: + Ric ric = new Ric(ricConfig); + rics.put(ric); + RicSynchronizationTask synchronizationTask = createSynchronizationTask(); + synchronizationTask.run(ric); + break; + + case REMOVED: + rics.remove(ricConfig.name()); + policies.removePoliciesForRic(ricConfig.name()); + break; + + default: + logger.error("Unhandled ric event: {}", event); } } } @@ -96,7 +107,10 @@ public class StartupService implements ApplicationConfig.Observer { public void startup() { logger.debug("Starting up"); applicationConfig.addObserver(this); - applicationConfig.initialize(); + refreshConfigTask.start(); } + RicSynchronizationTask createSynchronizationTask() { + return new RicSynchronizationTask(a1ClientFactory, policyTypes, policies, services); + } }