- Vector<RicConfig> ricConfigs = applicationConfig.getRicConfigs();
- for (RicConfig ricConfig : ricConfigs) {
- Ric ric = new Ric(ricConfig);
- String baseUrl = ricConfig.baseUrl();
- ricClient.deleteAllPolicies(baseUrl);
- Vector<PolicyType> types = ricClient.getPolicyTypes(baseUrl);
- for (PolicyType policyType : types) {
- if (!policyTypes.contains(policyType)) {
- policyTypes.put(policyType);
- }
- }
- ric.addSupportedPolicyTypes(types);
- ric.setState(RicState.ACTIVE);
- rics.put(ric);
+ Flux.fromIterable(applicationConfig.getRicConfigs()) //
+ .map(ricConfig -> new Ric(ricConfig)) //
+ .doOnNext(ric -> logger.debug("Handling ric: {}", ric.getConfig().name())).flatMap(this::handlePolicyTypes)
+ .flatMap(this::setRicToActive) //
+ .flatMap(this::addRicToRepo) //
+ .subscribe();
+ }
+
+ private Mono<Ric> handlePolicyTypes(Ric ric) {
+ a1Client.getAllPolicyTypes(ric.getConfig().baseUrl()) //
+ .map(policyTypeString -> gson.fromJson(policyTypeString, ImmutablePolicyType.class)) //
+ .doOnNext(type -> logger.debug("For ric: {}, handling type: {}", ric.getConfig().name(), type.name()))
+ .flatMap(this::addTypeToRepo) //
+ .flatMap(type -> addTypeToRic(ric, type)) //
+ .flatMap(type -> deletePoliciesForType(ric, type)) //
+ .subscribe();
+ return Mono.just(ric);
+ }
+
+ private Mono<PolicyType> addTypeToRepo(PolicyType policyType) {
+ if (!policyTypes.contains(policyType)) {
+ policyTypes.put(policyType);