file: /var/log/policy-agent/application.log
app:
filepath: /opt/app/policy-agent/config/application_configuration.json
+ a1ControllerBaseUrl: http://a1-controller-container:8181
+ a1ControllerUsername: admin
+ a1ControllerPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
server:
port : 8081
@Bean
A1ClientFactory getA1ClientFactory() {
- return new A1ClientFactory();
+ return new A1ClientFactory(getApplicationConfig());
}
@Bean
package org.oransc.policyagent.clients;
import org.oransc.policyagent.clients.A1Client.A1ProtocolType;
+import org.oransc.policyagent.configuration.ApplicationConfig;
import org.oransc.policyagent.exceptions.ServiceException;
import org.oransc.policyagent.repository.Ric;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import reactor.core.publisher.Mono;
public class A1ClientFactory {
private static final Logger logger = LoggerFactory.getLogger(A1ClientFactory.class);
+ private final ApplicationConfig appConfig;
+
+ @Autowired
+ public A1ClientFactory(ApplicationConfig appConfig) {
+ this.appConfig = appConfig;
+ }
+
public Mono<A1Client> createA1Client(Ric ric) {
return getProtocolVersion(ric) //
.flatMap(version -> createA1Client(ric, version));
}
protected A1Client createSdncOscA1Client(Ric ric) {
- return new SdncOscA1Client(ric.getConfig());
+ return new SdncOscA1Client(ric.getConfig(), appConfig.getA1ControllerBaseUrl(),
+ appConfig.getA1ControllerUsername(), appConfig.getA1ControllerPassword());
}
protected A1Client createSdnrOnapA1Client(Ric ric) {
- return new SdnrOnapA1Client(ric.getConfig());
+ return new SdnrOnapA1Client(ric.getConfig(), appConfig.getA1ControllerBaseUrl(),
+ appConfig.getA1ControllerUsername(), appConfig.getA1ControllerPassword());
}
private Mono<A1Client.A1ProtocolType> fetchVersion(Ric ric, A1Client a1Client) {
public class SdncOscA1Client implements A1Client {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- private static final String A1_CONTROLLER_URL = "http://a1-controller-container:8181/restconf/operations";
- private static final String A1_CONTROLLER_USERNAME = "admin";
- private static final String A1_CONTROLLER_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U";
+ private String a1ControllerBaseUrl;
+ private String a1ControllerUsername;
+ private String a1ControllerPassword;
private final RicConfig ricConfig;
private final AsyncRestClient restClient;
- public SdncOscA1Client(RicConfig ricConfig) {
+ public SdncOscA1Client(RicConfig ricConfig, String baseUrl, String username, String password) {
this.ricConfig = ricConfig;
- this.restClient = new AsyncRestClient(A1_CONTROLLER_URL);
- logger.debug("SdncOscA1Client for ric: {}", this.ricConfig.name());
+ this.a1ControllerBaseUrl = baseUrl;
+ this.a1ControllerUsername = username;
+ this.a1ControllerPassword = password;
+ this.restClient = new AsyncRestClient(a1ControllerBaseUrl + "/restconf/operations");
+ logger.debug("SdncOscA1Client for ric: {}, a1ControllerBaseUrl: {}", this.ricConfig.name(),
+ a1ControllerBaseUrl);
}
@Override
logger.debug("POST getPolicyTypeIdentities inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:getPolicyTypeIdentities", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:getPolicyTypeIdentities", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "policy-type-id-list")) //
.flatMap(this::parseJsonArrayOfString);
}
logger.debug("POST getPolicyIdentities inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:getPolicyIdentities", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:getPolicyIdentities", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "policy-id-list")) //
.flatMap(this::parseJsonArrayOfString);
}
logger.debug("POST getPolicyType inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:getPolicyType", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:getPolicyType", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "policy-type")) //
.flatMap(this::extractPolicySchema);
}
logger.debug("POST putPolicy inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:putPolicy", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:putPolicy", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "returned-policy")) //
.flatMap(this::validateJson);
}
String inputJsonString = createInputJsonString(paramsJson);
logger.debug("POST deletePolicy inputJsonString = {}", inputJsonString);
- return restClient.postWithAuthHeader("/A1-ADAPTER-API:deletePolicy", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD);
+ return restClient.postWithAuthHeader("/A1-ADAPTER-API:deletePolicy", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword);
}
@Override
try {
JSONObject outputJson = new JSONObject(response);
JSONObject responseParams = outputJson.getJSONObject("output");
+ if (!responseParams.has(key)) {
+ return Mono.just("");
+ }
String value = responseParams.get(key).toString();
return Mono.just(value);
} catch (JSONException ex) { // invalid json
private Mono<List<String>> parseJsonArrayOfString(String inputString) {
try {
List<String> arrayList = new ArrayList<>();
+ if (inputString.isEmpty()) {
+ return Mono.just(arrayList);
+ }
JSONArray jsonArray = new JSONArray(inputString);
for (int i = 0; i < jsonArray.length(); i++) {
arrayList.add(jsonArray.getString(i));
public class SdnrOnapA1Client implements A1Client {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- private static final String A1_CONTROLLER_URL = "http://sdnc_controller_container:8181/restconf/operations";
- private static final String A1_CONTROLLER_USERNAME = "admin";
- private static final String A1_CONTROLLER_PASSWORD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U";
+ private String a1ControllerBaseUrl;
+ private String a1ControllerUsername;
+ private String a1ControllerPassword;
private final RicConfig ricConfig;
private final AsyncRestClient restClient;
- public SdnrOnapA1Client(RicConfig ricConfig) {
+ public SdnrOnapA1Client(RicConfig ricConfig, String baseUrl, String username, String password) {
this.ricConfig = ricConfig;
- this.restClient = new AsyncRestClient(A1_CONTROLLER_URL);
- logger.debug("SdnrOnapA1Client for ric: {}", this.ricConfig.name());
+ this.a1ControllerBaseUrl = baseUrl;
+ this.a1ControllerUsername = username;
+ this.a1ControllerPassword = password;
+ this.restClient = new AsyncRestClient(a1ControllerBaseUrl + "/restconf/operations");
+ logger.debug("SdnrOnapA1Client for ric: {}, a1ControllerBaseUrl: {}", this.ricConfig.name(),
+ a1ControllerBaseUrl);
}
@Override
logger.debug("POST getPolicyTypeIdentities inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:getPolicyTypes", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:getPolicyTypes", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "policy-type-id-list")) //
.flatMap(this::parseJsonArrayOfString);
}
logger.debug("POST getPolicyIdentities inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:getPolicyInstances", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:getPolicyInstances", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "policy-instance-id-list")) //
.flatMap(this::parseJsonArrayOfString);
}
logger.debug("POST getPolicyType inputJsonString = {}", inputJsonString);
return restClient
- .postWithAuthHeader("/A1-ADAPTER-API:getPolicyType", inputJsonString, A1_CONTROLLER_USERNAME,
- A1_CONTROLLER_PASSWORD) //
+ .postWithAuthHeader("/A1-ADAPTER-API:getPolicyType", inputJsonString, a1ControllerUsername,
+ a1ControllerPassword) //
.flatMap(response -> getValueFromResponse(response, "policy-type")) //
.flatMap(this::extractPolicySchema);
}
logger.debug("POST putPolicy inputJsonString = {}", inputJsonString);
return restClient.postWithAuthHeader("/A1-ADAPTER-API:createPolicyInstance", inputJsonString,
- A1_CONTROLLER_USERNAME, A1_CONTROLLER_PASSWORD);
+ a1ControllerUsername, a1ControllerPassword);
}
public Mono<String> deletePolicy(String policyTypeId, String policyId) {
logger.debug("POST deletePolicy inputJsonString = {}", inputJsonString);
return restClient.postWithAuthHeader("/A1-ADAPTER-API:deletePolicyInstance", inputJsonString,
- A1_CONTROLLER_USERNAME, A1_CONTROLLER_PASSWORD);
+ a1ControllerUsername, a1ControllerPassword);
}
@Override
try {
JSONObject outputJson = new JSONObject(response);
JSONObject responseParams = outputJson.getJSONObject("output");
+ if (!responseParams.has(key)) {
+ return Mono.just("");
+ }
String value = responseParams.get(key).toString();
return Mono.just(value);
} catch (JSONException ex) { // invalid json
private Mono<List<String>> parseJsonArrayOfString(String inputString) {
try {
List<String> arrayList = new ArrayList<>();
+ if (inputString.isEmpty()) {
+ return Mono.just(arrayList);
+ }
JSONArray jsonArray = new JSONArray(inputString);
for (int i = 0; i < jsonArray.length(); i++) {
arrayList.add(jsonArray.getString(i));
@NotEmpty
private String filepath;
+ @NotEmpty
+ private String a1ControllerBaseUrl;
+
+ @NotEmpty
+ private String a1ControllerUsername;
+
+ @NotEmpty
+ private String a1ControllerPassword;
+
private Collection<Observer> observers = new Vector<>();
private Map<String, RicConfig> ricConfigs = new HashMap<>();
@Getter
return this.filepath;
}
+ public String getA1ControllerBaseUrl() {
+ return this.a1ControllerBaseUrl;
+ }
+
+ public String getA1ControllerUsername() {
+ return this.a1ControllerUsername;
+ }
+
+ public String getA1ControllerPassword() {
+ return this.a1ControllerPassword;
+ }
+
/*
* Do not remove, used by framework!
*/
this.filepath = filepath;
}
+ public synchronized void setA1ControllerBaseUrl(String a1ControllerBaseUrl) {
+ this.a1ControllerBaseUrl = a1ControllerBaseUrl;
+ }
+
+ public synchronized void setA1ControllerUsername(String a1ControllerUsername) {
+ this.a1ControllerUsername = a1ControllerUsername;
+ }
+
+ public synchronized void setA1ControllerPassword(String a1ControllerPassword) {
+ this.a1ControllerPassword = a1ControllerPassword;
+ }
+
public synchronized Collection<RicConfig> getRicConfigs() {
return this.ricConfigs.values();
}
package org.oransc.policyagent.utils;
+import static org.mockito.Mockito.mock;
+
import java.lang.invoke.MethodHandles;
import java.util.HashMap;
import java.util.Map;
import org.oransc.policyagent.clients.A1Client;
import org.oransc.policyagent.clients.A1ClientFactory;
+import org.oransc.policyagent.configuration.ApplicationConfig;
import org.oransc.policyagent.repository.PolicyTypes;
import org.oransc.policyagent.repository.Ric;
import org.slf4j.Logger;
private final PolicyTypes policyTypes;
public MockA1ClientFactory(PolicyTypes policyTypes) {
+ super(mock(ApplicationConfig.class));
this.policyTypes = policyTypes;
}
* @return the putPolicy url
*/
public String putPolicyUrl(final String nearRtRicUrl, final String policyId, final String policyTypeId) {
- return UriComponentsBuilder.fromUriString(policiesUrl(nearRtRicUrl)).pathSegment(policyId)
- .pathSegment("?policyTypeId=").pathSegment(policyTypeId).build().toString();
+ return UriComponentsBuilder.fromUriString(policiesUrl(nearRtRicUrl))
+ .pathSegment(policyId + "?policyTypeId=" + policyTypeId).build().toString();
}
/**