package org.oransc.policyagent.clients;
+import java.util.List;
+
+import org.oransc.policyagent.repository.Policy;
+
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
+/**
+ * Common interface for 'A1' Policy access. Implementations of this interface
+ * adapts to the different southbound REST APIs supported.
+ */
public interface A1Client {
- public Flux<String> getAllPolicyTypes(String nearRtRicUrl);
+ public enum A1ProtocolType {
+ UNKNOWN, //
+ STD_V1_1, // STD A1 version 1.1
+ OSC_V1, // OSC 'A1'
+ SDNC_OSC_STD_V1_1, // SDNC_OSC with STD A1 version 1.1 southbound
+ SDNC_OSC_OSC_V1, // SDNC_OSC with OSC 'A1' southbound
+ SDNC_ONAP
+ }
+
+ public Mono<A1ProtocolType> getProtocolVersion();
+
+ public Mono<List<String>> getPolicyTypeIdentities();
+
+ public Mono<List<String>> getPolicyIdentities();
- public Flux<String> getPoliciesForType(String nearRtRicUrl, String policyTypeId);
+ public Mono<String> getPolicyTypeSchema(String policyTypeId);
- public Mono<String> getPolicy(String nearRtRicUrl, String policyId);
+ public Mono<String> putPolicy(Policy policy);
- public Mono<String> putPolicy(String nearRtRicUrl, String policyId, String policyString);
+ public Mono<String> deletePolicy(Policy policy);
- public Mono<Void> deletePolicy(String nearRtRicUrl, String policyId);
+ public Flux<String> deleteAllPolicies();
+ public Mono<String> getPolicyStatus(Policy policy);
}