- private Mono<Ric> checkNotReachable(Ric ric) {
- logger.debug("Handling not reachable ric {}", ric);
- a1Client.getPolicyIdentities(ric.getConfig().baseUrl()) //
- .filter(policyId -> !policies.containsPolicy(policyId)) //
- .doOnNext(policyId -> logger.debug("Deleting policy {}", policyId))
- .flatMap(policyId -> a1Client.deletePolicy(ric.getConfig().baseUrl(), policyId)) //
- .subscribe(null, null, () -> ric.setState(RicState.ACTIVE));
+ private Mono<RicData> validateInstances(Collection<String> ricPolicies, RicData ric) {
+ synchronized (this.policies) {
+ if (ricPolicies.size() != policies.getForRic(ric.ric.name()).size()) {
+ return startSynchronization(ric);
+ }
+
+ for (String policyId : ricPolicies) {
+ if (!policies.containsPolicy(policyId)) {
+ return startSynchronization(ric);
+ }
+ }
+ return Mono.just(ric);
+ }
+ }
+
+ private Mono<RicData> checkRicPolicyTypes(RicData ric) {
+ return ric.a1Client.getPolicyTypeIdentities() //
+ .flatMap(ricTypes -> validateTypes(ricTypes, ric));
+ }
+
+ private Mono<RicData> validateTypes(Collection<String> ricTypes, RicData ric) {
+ if (ricTypes.size() != ric.ric.getSupportedPolicyTypes().size()) {
+ return startSynchronization(ric);
+ }
+ for (String typeName : ricTypes) {
+ if (!ric.ric.isSupportingType(typeName)) {
+ return startSynchronization(ric);
+ }
+ }