* limitations under the License.
* ========================LICENSE_END===================================
*/
+
package org.oransc.policyagent;
+import org.oransc.policyagent.controllers.StartupService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
+ @Autowired
+ private StartupService startupService;
+
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
+ /**
+ * Starts the se4rvice and reads the configuration.
+ *
+ * @param ctx
+ * @return
+ */
+ @Bean
+ public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
+ return args -> {
+
+ startupService.startup();
+ };
+ }
+
}
@Configuration
public class Beans {
- private Rics rics = new Rics();
-
@Bean
public Policies getPolicies() {
return new Policies();
@Bean
public Rics getRics() {
- return rics;
+ return new Rics();
}
@Bean
* limitations under the License.
* ========================LICENSE_END===================================
*/
+
package org.oransc.policyagent.controllers;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
-
import java.util.Optional;
import java.util.Vector;
-
import org.oransc.policyagent.configuration.ApplicationConfig;
import org.oransc.policyagent.configuration.RicConfig;
+import org.oransc.policyagent.repository.Ric;
+import org.oransc.policyagent.repository.Rics;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
public class RicRepositoryController {
private final ApplicationConfig appConfig;
+
+ @Autowired
+ private Rics rics;
+
private static Gson gson = new GsonBuilder() //
.serializeNulls() //
.create(); //
@Autowired
- RicRepositoryController(ApplicationConfig config) {
- this.appConfig = config;
+ RicRepositoryController(ApplicationConfig appConfig) {
+ this.appConfig = appConfig;
}
/**
@ApiResponse(code = 200, message = "OK") //
})
public ResponseEntity<String> getRics() {
- Vector<RicInfo> result = new Vector<RicInfo>();
- for (RicConfig ricConfig : this.appConfig.getRicConfigs()) {
- RicInfo ric = ImmutableRicInfo.builder() //
- .managedElementIds(ricConfig.managedElementIds()) //
- .name(ricConfig.name()) //
- .build();
- result.add(ric);
+ Vector<RicInfo> result = new Vector<>();
+ for (Ric ric : rics.getRics()) {
+ result.add(ImmutableRicInfo.builder() //
+ .name(ric.name()) //
+ .managedElementIds(ric.getManagedNodes()) //
+ .build());
}
+
return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK);
}
package org.oransc.policyagent.repository;
+import java.util.Vector;
import org.oransc.policyagent.configuration.RicConfig;
-import org.oransc.policyagent.repository.Ric.RicState;
/**
* Represents the dynamic information about a NearRealtime-RIC.
state = newState;
}
+ /**
+ * Gets the nodes managed by this Ric.
+ *
+ * @return a vector containing the nodes managed by this Ric.
+ */
+ public Vector<String> getManagedNodes() {
+ return ricConfig.managedElementIds();
+ }
+
/**
* Determines if the given node is managed by this Ric.
*
import static org.junit.Assert.assertFalse;
import java.net.URL;
-import java.util.Vector;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.oransc.policyagent.configuration.ApplicationConfig;
-import org.oransc.policyagent.configuration.ImmutableRicConfig;
-import org.oransc.policyagent.configuration.RicConfig;
import org.oransc.policyagent.exceptions.ServiceException;
import org.oransc.policyagent.repository.ImmutablePolicy;
import org.oransc.policyagent.repository.ImmutablePolicyType;
import org.oransc.policyagent.repository.Policy;
import org.oransc.policyagent.repository.PolicyType;
import org.oransc.policyagent.repository.PolicyTypes;
-import org.oransc.policyagent.repository.Ric;
import org.oransc.policyagent.repository.Rics;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
String url = "http://localhost:" + port + "/policy?type=type1&instance=instance1&ric=ric1&service=service1";
String json = "{}";
addPolicyType("type1");
- addRic(beans.getRics(), "ric1", url);
this.restTemplate.put(url, json);
assertThat(policy.ownerServiceName()).isEqualTo("service1");
}
- private void addRic(Rics rics, String ric, String url) {
- Vector<String> nodeNames = new Vector<>(1);
- nodeNames.add("node1");
- RicConfig ricConfig = ImmutableRicConfig.builder() //
- .name(ric) //
- .baseUrl(url) //
- .managedElementIds(nodeNames) //
- .build();
- Ric ricObj = new Ric(ricConfig);
-
- rics.put(ricObj);
- }
-
private PolicyType addPolicyType(String name) {
PolicyType type = ImmutablePolicyType.builder() //
.jsonSchema("") //
@Test
public void getPolicies() throws Exception {
String url = "http://localhost:" + port + "/policies";
- addRic(beans.getRics(), "ric1", url);
addPolicy("id1", "type1", "service1");
addPolicy("id2", "type2", "service2");
@Test
public void startup_allOk() {
- appConfigMock = mock(ApplicationConfig.class);
+ ApplicationConfig appConfigMock = mock(ApplicationConfig.class);
Vector<RicConfig> ricConfigs = new Vector<>(2);
Vector<String> firstNodes = new Vector<String>(1);
firstNodes.add("nodeA");