package org.onap.policy.api.main.parameters;
+import java.util.ArrayList;
+import java.util.List;
import org.onap.policy.common.endpoints.parameters.RestServerParameters;
import org.onap.policy.common.parameters.GroupValidationResult;
import org.onap.policy.common.parameters.ParameterGroup;
private String name;
private RestServerParameters restServerParameters;
private PolicyModelsProviderParameters databaseProviderParameters;
+ private List<String> preloadPolicyTypes;
/**
* Create the api parameter group.
*
* @param name the parameter group name
+ * @param restServerParameters the parameters for instantiating API rest server
+ * @param databaseProviderParameters the parameters for instantiating database provider
+ * @param preloadPolicyTypes the list of preloaded policy types
*/
public ApiParameterGroup(final String name, final RestServerParameters restServerParameters,
- final PolicyModelsProviderParameters databaseProviderParameters) {
+ final PolicyModelsProviderParameters databaseProviderParameters, final List<String> preloadPolicyTypes) {
this.name = name;
this.restServerParameters = restServerParameters;
this.databaseProviderParameters = databaseProviderParameters;
+ this.preloadPolicyTypes = preloadPolicyTypes;
}
/**
return databaseProviderParameters;
}
+ /**
+ * Return the preloadPolicyTypes of this parameter group instance.
+ *
+ * @return the preloadPolicyTypes
+ */
+ public List<String> getPreloadPolicyTypes() {
+ return preloadPolicyTypes;
+ }
+
/**
* Validate the parameter group.
*
import java.util.LinkedHashMap;
import org.onap.policy.api.main.exception.PolicyApiException;
+import org.onap.policy.api.main.parameters.ApiParameterGroup;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
import org.slf4j.Logger;
private StandardCoder standardCoder;
private PolicyModelsProviderFactory factory;
- // @formatter:off
- private static final String[] PRELOAD_POLICYTYPES = {
- "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
- "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
- "policytypes/onap.policies.Optimization.yaml",
- "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
- "policytypes/onap.policies.optimization.DistancePolicy.yaml",
- "policytypes/onap.policies.optimization.HpaPolicy.yaml",
- "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
- "policytypes/onap.policies.optimization.PciPolicy.yaml",
- "policytypes/onap.policies.optimization.QueryPolicy.yaml",
- "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
- "policytypes/onap.policies.optimization.Vim_fit.yaml",
- "policytypes/onap.policies.optimization.VnfPolicy.yaml",
- "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
- "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
- "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
- "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
- "policytypes/onap.policies.controlloop.Operational.yaml",
- "policytypes/onap.policies.Naming.yaml"
- };
- // @formatter:on
-
/**
* Constructs the object.
*/
/**
* Initializes database by preloading policy types.
*
- * @param policyModelsProviderParameters the database parameters
+ * @param apiParameterGroup the apiParameterGroup parameters
* @throws PolicyApiException in case of errors.
*/
- public void initializeApiDatabase(final PolicyModelsProviderParameters policyModelsProviderParameters)
+ public void initializeApiDatabase(final ApiParameterGroup apiParameterGroup)
throws PolicyApiException {
try (PolicyModelsProvider databaseProvider =
- factory.createPolicyModelsProvider(policyModelsProviderParameters)) {
+ factory.createPolicyModelsProvider(apiParameterGroup.getDatabaseProviderParameters())) {
ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
serviceTemplate.setPolicyTypes(new LinkedHashMap<String, ToscaPolicyType>());
serviceTemplate.setToscaDefinitionsVersion("tosca_simple_yaml_1_0_0");
- for (String pt : PRELOAD_POLICYTYPES) {
+ for (String pt : apiParameterGroup.getPreloadPolicyTypes()) {
String policyTypeAsStringYaml = ResourceUtils.getResourceAsString(pt);
if (policyTypeAsStringYaml == null) {
throw new PolicyApiException("Preloading policy type cannot be found: " + pt);
// Initialize database
try {
- new ApiDatabaseInitializer().initializeApiDatabase(parameterGroup.getDatabaseProviderParameters());
+ new ApiDatabaseInitializer().initializeApiDatabase(parameterGroup);
} catch (final PolicyApiException e) {
LOGGER.error("Preloading policy types into DB failed", e);
return;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.util.Collections;
+
import org.junit.Test;
import org.onap.policy.common.endpoints.parameters.RestServerParameters;
import org.onap.policy.common.parameters.GroupValidationResult;
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false, PORT);
final PolicyModelsProviderParameters databaseProviderParameters =
commonTestData.getDatabaseProviderParameters(false);
- final ApiParameterGroup apiParameters = new ApiParameterGroup(
- CommonTestData.API_GROUP_NAME, restServerParameters, databaseProviderParameters);
+ final ApiParameterGroup apiParameters = new ApiParameterGroup(CommonTestData.API_GROUP_NAME,
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertTrue(validationResult.isValid());
assertEquals(restServerParameters.getHost(), apiParameters.getRestServerParameters().getHost());
assertEquals(restServerParameters.isHttps(), apiParameters.getRestServerParameters().isHttps());
assertEquals(restServerParameters.isAaf(), apiParameters.getRestServerParameters().isAaf());
assertEquals(CommonTestData.API_GROUP_NAME, apiParameters.getName());
+ assertTrue(apiParameters.getPreloadPolicyTypes().isEmpty());
}
@Test
final PolicyModelsProviderParameters databaseProviderParameters =
commonTestData.getDatabaseProviderParameters(false);
final ApiParameterGroup apiParameters = new ApiParameterGroup(null,
- restServerParameters, databaseProviderParameters);
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertFalse(validationResult.isValid());
assertEquals(null, apiParameters.getName());
final PolicyModelsProviderParameters databaseProviderParameters =
commonTestData.getDatabaseProviderParameters(false);
final ApiParameterGroup apiParameters = new ApiParameterGroup("",
- restServerParameters, databaseProviderParameters);
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertFalse(validationResult.isValid());
assertEquals("", apiParameters.getName());
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(true, PORT);
final PolicyModelsProviderParameters databaseProviderParameters =
commonTestData.getDatabaseProviderParameters(false);
- final ApiParameterGroup apiParameters = new ApiParameterGroup(
- CommonTestData.API_GROUP_NAME, restServerParameters, databaseProviderParameters);
+ final ApiParameterGroup apiParameters = new ApiParameterGroup(CommonTestData.API_GROUP_NAME,
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
final RestServerParameters restServerParameters = null;
final PolicyModelsProviderParameters databaseProviderParameters =
commonTestData.getDatabaseProviderParameters(false);
- final ApiParameterGroup apiParameters = new ApiParameterGroup(
- CommonTestData.API_GROUP_NAME, restServerParameters, databaseProviderParameters);
+ final ApiParameterGroup apiParameters = new ApiParameterGroup(CommonTestData.API_GROUP_NAME,
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false, PORT);
final PolicyModelsProviderParameters databaseProviderParameters =
commonTestData.getDatabaseProviderParameters(true);
- final ApiParameterGroup apiParameters = new ApiParameterGroup(
- CommonTestData.API_GROUP_NAME, restServerParameters, databaseProviderParameters);
+ final ApiParameterGroup apiParameters = new ApiParameterGroup(CommonTestData.API_GROUP_NAME,
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
public void testApiParameterGroup_NullDatabaseProviderParameters() {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false, PORT);
final PolicyModelsProviderParameters databaseProviderParameters = null;
- final ApiParameterGroup apiParameters = new ApiParameterGroup(
- CommonTestData.API_GROUP_NAME, restServerParameters, databaseProviderParameters);
+ final ApiParameterGroup apiParameters = new ApiParameterGroup(CommonTestData.API_GROUP_NAME,
+ restServerParameters, databaseProviderParameters, Collections.emptyList());
final GroupValidationResult validationResult = apiParameters.validate();
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
@Test
public void testApiParameterGroup_SetName() {
- final ApiParameterGroup apiParameters = new ApiParameterGroup(
- CommonTestData.API_GROUP_NAME, null, null);
+ final ApiParameterGroup apiParameters = new ApiParameterGroup(CommonTestData.API_GROUP_NAME,
+ null, null, Collections.emptyList());
assertEquals(CommonTestData.API_GROUP_NAME, apiParameters.getName());
apiParameters.setName("SampleName");
assertEquals("SampleName", apiParameters.getName());
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Base64;
+import java.util.Collections;
import java.util.Properties;
import javax.net.ssl.SSLContext;
providerParams.setDatabaseUser("policy");
providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
providerParams.setPersistenceUnit("ToscaConceptTest");
- apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
+ apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList());
ParameterService.register(apiParamGroup, true);
policyTypeProvider = new PolicyTypeProvider();
policyProvider = new PolicyProvider();
}
}
+ @Test
+ public void testReadPreloadPolicyTypesPersistentJson() throws Exception {
+ setupParameters();
+ main = startApiService(true);
+ Response rawResponse = readResource(POLICYTYPES, true, APP_JSON);
+ assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
+ ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
+ assertEquals(21, response.getPolicyTypes().size());
+ }
+
+ @Test
+ public void testReadPreloadPolicyTypesPersistentYaml() throws Exception {
+ setupParameters();
+ main = startApiService(true);
+ Response rawResponse = readResource(POLICYTYPES, true, APP_YAML);
+ assertEquals(Response.Status.OK.getStatusCode(), rawResponse.getStatus());
+ ToscaServiceTemplate response = rawResponse.readEntity(ToscaServiceTemplate.class);
+ assertEquals(21, response.getPolicyTypes().size());
+ }
+
@Test
public void testReadPolicyTypesPersistentJson() {
testReadPolicyTypesPersistent(APP_JSON);
import java.util.ArrayList;
import java.util.Base64;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
providerParams.setDatabaseUser("policy");
providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
providerParams.setPersistenceUnit("ToscaConceptTest");
- apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
+ apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList());
ParameterService.register(apiParamGroup, true);
guardPolicyProvider = new LegacyGuardPolicyProvider();
policyTypeProvider = new PolicyTypeProvider();
import java.util.ArrayList;
import java.util.Base64;
+import java.util.Collections;
import java.util.List;
import org.junit.After;
providerParams.setDatabaseUser("policy");
providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
providerParams.setPersistenceUnit("ToscaConceptTest");
- apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
+ apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList());
ParameterService.register(apiParamGroup, true);
operationalPolicyProvider = new LegacyOperationalPolicyProvider();
policyTypeProvider = new PolicyTypeProvider();
import java.util.ArrayList;
import java.util.Base64;
+import java.util.Collections;
import java.util.List;
import org.junit.After;
providerParams.setDatabaseUser("policy");
providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
providerParams.setPersistenceUnit("ToscaConceptTest");
- apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
+ apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList());
ParameterService.register(apiParamGroup, true);
policyTypeProvider = new PolicyTypeProvider();
policyProvider = new PolicyProvider();
import static org.junit.Assert.assertFalse;
import java.util.Base64;
+import java.util.Collections;
+
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
providerParams.setDatabaseUser("policy");
providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
providerParams.setPersistenceUnit("ToscaConceptTest");
- apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams);
+ apiParamGroup = new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList());
ParameterService.register(apiParamGroup, true);
policyTypeProvider = new PolicyTypeProvider();
policyProvider = new PolicyProvider();
"databaseUser": "policy",
"databasePassword": "UDAxaWNZ",
"persistenceUnit": "ToscaConceptTest"
- }
+ },
+ "preloadPolicyTypes": [
+ "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
+ "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
+ "policytypes/onap.policies.Optimization.yaml",
+ "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
+ "policytypes/onap.policies.optimization.DistancePolicy.yaml",
+ "policytypes/onap.policies.optimization.HpaPolicy.yaml",
+ "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
+ "policytypes/onap.policies.optimization.PciPolicy.yaml",
+ "policytypes/onap.policies.optimization.QueryPolicy.yaml",
+ "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
+ "policytypes/onap.policies.optimization.Vim_fit.yaml",
+ "policytypes/onap.policies.optimization.VnfPolicy.yaml",
+ "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
+ "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
+ "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
+ "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
+ "policytypes/onap.policies.controlloop.Operational.yaml",
+ "policytypes/onap.policies.Naming.yaml"
+ ]
}
"databaseUser": "policy",
"databasePassword": "UDAxaWNZ",
"persistenceUnit": "ToscaConceptTest"
- }
+ },
+ "preloadPolicyTypes": [
+ "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
+ "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
+ "policytypes/onap.policies.Optimization.yaml",
+ "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
+ "policytypes/onap.policies.optimization.DistancePolicy.yaml",
+ "policytypes/onap.policies.optimization.HpaPolicy.yaml",
+ "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
+ "policytypes/onap.policies.optimization.PciPolicy.yaml",
+ "policytypes/onap.policies.optimization.QueryPolicy.yaml",
+ "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
+ "policytypes/onap.policies.optimization.Vim_fit.yaml",
+ "policytypes/onap.policies.optimization.VnfPolicy.yaml",
+ "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
+ "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
+ "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
+ "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
+ "policytypes/onap.policies.controlloop.Operational.yaml",
+ "policytypes/onap.policies.Naming.yaml"
+ ]
}
"databaseUser": "policy",
"databasePassword": "UDAxaWNZ",
"persistenceUnit": "ToscaConceptTest"
- }
+ },
+ "preloadPolicyTypes": []
}
"databaseUser": "policy",
"databasePassword": "UDAxaWNZ",
"persistenceUnit": "ToscaConceptTest"
- }
+ },
+ "preloadPolicyTypes": []
}
"databaseUser": "policy",
"databasePassword": "UDAxaWNZ",
"persistenceUnit": "ToscaConceptTest"
- }
-}
+ },
+ "preloadPolicyTypes": []
+}
\ No newline at end of file
"databaseUser": "policy",
"databasePassword": "UDAxaWNZ",
"persistenceUnit": "ToscaConceptTest"
- }
+ },
+ "preloadPolicyTypes": []
}
\ No newline at end of file
"databaseUser": "policy_user",
"databasePassword": "cG9saWN5X3VzZXI=",
"persistenceUnit": "PolicyMariaDb"
- }
+ },
+ "preloadPolicyTypes": [
+ "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
+ "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
+ "policytypes/onap.policies.Optimization.yaml",
+ "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
+ "policytypes/onap.policies.optimization.DistancePolicy.yaml",
+ "policytypes/onap.policies.optimization.HpaPolicy.yaml",
+ "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
+ "policytypes/onap.policies.optimization.PciPolicy.yaml",
+ "policytypes/onap.policies.optimization.QueryPolicy.yaml",
+ "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
+ "policytypes/onap.policies.optimization.Vim_fit.yaml",
+ "policytypes/onap.policies.optimization.VnfPolicy.yaml",
+ "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
+ "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
+ "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
+ "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
+ "policytypes/onap.policies.controlloop.Operational.yaml",
+ "policytypes/onap.policies.Naming.yaml"
+ ]
}
"databaseUser": "policy_user",
"databasePassword": "cG9saWN5X3VzZXI=",
"persistenceUnit": "PolicyMariaDb"
- }
+ },
+ "preloadPolicyTypes": [
+ "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml",
+ "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml",
+ "policytypes/onap.policies.Optimization.yaml",
+ "policytypes/onap.policies.optimization.AffinityPolicy.yaml",
+ "policytypes/onap.policies.optimization.DistancePolicy.yaml",
+ "policytypes/onap.policies.optimization.HpaPolicy.yaml",
+ "policytypes/onap.policies.optimization.OptimizationPolicy.yaml",
+ "policytypes/onap.policies.optimization.PciPolicy.yaml",
+ "policytypes/onap.policies.optimization.QueryPolicy.yaml",
+ "policytypes/onap.policies.optimization.SubscriberPolicy.yaml",
+ "policytypes/onap.policies.optimization.Vim_fit.yaml",
+ "policytypes/onap.policies.optimization.VnfPolicy.yaml",
+ "policytypes/onap.policies.controlloop.guard.Blacklist.yaml",
+ "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml",
+ "policytypes/onap.policies.controlloop.guard.MinMax.yaml",
+ "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml",
+ "policytypes/onap.policies.controlloop.Operational.yaml",
+ "policytypes/onap.policies.Naming.yaml"
+ ]
}
\ No newline at end of file
</modules>
<dependencies>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>