diff options
author | ramverma <ram.krishna.verma@est.tech> | 2019-03-04 13:29:54 +0000 |
---|---|---|
committer | ramverma <ram.krishna.verma@est.tech> | 2019-03-04 13:29:54 +0000 |
commit | aee89a9ca97ba75b9cbb7cf5eba545a8e78acc09 (patch) | |
tree | 116c2216e408e4a4f42e71bc47fb3d90e0cc4681 /pdp-common/src | |
parent | 6aa615ca038801b48e50f9a5026b19446b22fe8d (diff) |
Adding pdp-common module to policy/common
1) Adding pdp-common module to policy/common. So that all common code
across various pdps will be at one place.
2) Adding java classes for PDP_STATUS, PDP_UPDATE, PDP_STATE_CHANGE &
PDP_HEALTH_CHECK messages.
3) Adding enums for PDPHeathStatus, PDPResponseStatus & PdpState.
4) Adding relevant test cases.
Change-Id: I13e62f393fbd1c261696783cfe4b7dfff72625ba
Issue-ID: POLICY-1443
Signed-off-by: ramverma <ram.krishna.verma@est.tech>
Diffstat (limited to 'pdp-common/src')
13 files changed, 641 insertions, 0 deletions
diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpHealthStatus.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpHealthStatus.java new file mode 100644 index 00000000..5b2f58b9 --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpHealthStatus.java @@ -0,0 +1,44 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.enums; + +/** + * Class to hold the possible values for health status of PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +public enum PdpHealthStatus { + + /** + * PDP is healthy and working fine. + */ + HEALTHY, + + /** + * PDP is not healthy. + */ + NOT_HEALTHY, + + /** + * PDP is currently under test state and performing tests. + */ + TEST_IN_PROGRESS, +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpMessageType.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpMessageType.java new file mode 100644 index 00000000..f59e84fb --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpMessageType.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.enums; + +/** + * Class to hold the possible values for the type of PDP messages. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +public enum PdpMessageType { + + /** + * Used by PDPs to report status to PAP. + */ + PDP_STATUS, + + /** + * Used by PAP to update the policies running on PDPs, triggers a PDP_STATUS message with the result of the + * PDP_UPDATE operation. + */ + PDP_UPDATE, + + /** + * Used by PAP to change the state of PDPs, triggers a PDP_STATUS message with the result of the PDP_STATE_CHANGE + * operation. + */ + PDP_STATE_CHANGE, + + /** + * Used by PAP to order a health check on PDPs, triggers a PDP_STATUS message with the result of the + * PDP_HEALTH_CHECK operation. + */ + PDP_HEALTH_CHECK, +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpResponseStatus.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpResponseStatus.java new file mode 100644 index 00000000..5bc994a6 --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpResponseStatus.java @@ -0,0 +1,39 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.enums; + +/** + * Class to hold the possible values for PDP response status. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +public enum PdpResponseStatus { + + /** + * PDP operation was successful. + */ + SUCCESS, + + /** + * PDP operation failed. + */ + FAIL, +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpState.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpState.java new file mode 100644 index 00000000..88124157 --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/enums/PdpState.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.enums; + +/** + * Class to hold the possible values for state of PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +public enum PdpState { + + /** + * Policy execution is always rejected irrespective of PDP type. + */ + PASSIVE, + + /** + * Policy execution proceeds, but changes to domain state or context are not carried out. The PDP returns an + * indication that it is running in SAFE mode together with the action it would have performed if it was operating + * in ACTIVE mode. + */ + SAFE, + + /** + * Policy execution proceeds and changes to domain and state are carried out in a test environment. The PDP returns + * an indication that it is running in TEST mode together with the action it has performed on the test environment. + */ + TEST, + + /** + * Policy execution is executed in the live environment by the PDP. + */ + ACTIVE, + + /** + * Policy execution is terminated and not available. + */ + TERMINATED +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpHealthCheck.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpHealthCheck.java new file mode 100644 index 00000000..24fbbb9f --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpHealthCheck.java @@ -0,0 +1,50 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import org.onap.policy.pdp.common.enums.PdpMessageType; + +/** + * Class to represent the PDP_HEALTH_CHECK message that PAP will send to either PDPGroup/Subgroup or a PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpHealthCheck extends PdpMessage { + + private String name; + private String pdpGroup; + private String pdpSubgroup; + + /** + * Constructor for instantiating PdpHealthCheck class with message name. + * + */ + public PdpHealthCheck() { + super(PdpMessageType.PDP_HEALTH_CHECK); + } +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpMessage.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpMessage.java new file mode 100644 index 00000000..7d8a6117 --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpMessage.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import org.onap.policy.pdp.common.enums.PdpMessageType; + +/** + * Class to represent the base class for various messages that will ve exchanged between PAP and PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpMessage { + + @Setter(AccessLevel.NONE) + private PdpMessageType messageName; + private String requestId; + + /** + * Constructor for instantiating PdpMessage class with message name. + * + * @param messageName the message name + */ + public PdpMessage(final PdpMessageType messageName) { + this.messageName = messageName; + } +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpResponseDetails.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpResponseDetails.java new file mode 100644 index 00000000..5d1c472d --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpResponseDetails.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import org.onap.policy.pdp.common.enums.PdpResponseStatus; + +/** + * Class to represent PDP response details. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpResponseDetails { + + // The responseTo field should match the original request id in the request. + private String responseTo; + private PdpResponseStatus responseStatus; + private String responseMessage; +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStateChange.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStateChange.java new file mode 100644 index 00000000..e11e4a8b --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStateChange.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import org.onap.policy.pdp.common.enums.PdpMessageType; +import org.onap.policy.pdp.common.enums.PdpState; + +/** + * Class to represent the PDP_STATE_CHANGE message that PAP will send to either PDPGroup/Subgroup or a PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpStateChange extends PdpMessage { + + private String name; + private PdpState state; + private String pdpGroup; + private String pdpSubgroup; + + /** + * Constructor for instantiating PdpStateChange class with message name. + * + */ + public PdpStateChange() { + super(PdpMessageType.PDP_STATE_CHANGE); + } +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStatistics.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStatistics.java new file mode 100644 index 00000000..40f34aa2 --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStatistics.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * Class to represent statistics of a running PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpStatistics { + + private long policyDownloadCount; + private long policyDownloadSuccessCount; + private long policyDownloadFailCount; + private long policyExecutedCount; + private long policyExecutedSuccessCount; + private long policyExecutedFailCount; +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStatus.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStatus.java new file mode 100644 index 00000000..5174cc9e --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpStatus.java @@ -0,0 +1,66 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import java.util.List; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import org.onap.policy.pdp.common.enums.PdpHealthStatus; +import org.onap.policy.pdp.common.enums.PdpMessageType; +import org.onap.policy.pdp.common.enums.PdpState; + +/** + * Class to represent the PDP_STATUS message that all the PDP's will send to PAP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpStatus extends PdpMessage { + + private String name; + private String version; + private String pdpType; + private PdpState state; + private PdpHealthStatus healthy; + private String description; + private String pdpGroup; + private String pdpSubgroup; + private List<String> supportedPolicyTypes; + private List<Policy> policies; + private String instance; + private String deploymentInstanceInfo; + private String properties; + private PdpStatistics statistics; + private PdpResponseDetails response; + + /** + * Constructor for instantiating PdpStatus class with message name. + * + */ + public PdpStatus() { + super(PdpMessageType.PDP_STATUS); + } +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpUpdate.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpUpdate.java new file mode 100644 index 00000000..03559cc8 --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/PdpUpdate.java @@ -0,0 +1,55 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import java.util.List; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import org.onap.policy.pdp.common.enums.PdpMessageType; + +/** + * Class to represent the PDP_UPDATE message that PAP will send to a PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpUpdate extends PdpMessage { + + private String name; + private String pdpType; + private String description; + private String pdpGroup; + private String pdpSubgroup; + private List<Policy> policies; + + /** + * Constructor for instantiating PdpUpdate class with message name. + * + */ + public PdpUpdate() { + super(PdpMessageType.PDP_UPDATE); + } +} diff --git a/pdp-common/src/main/java/org/onap/policy/pdp/common/models/Policy.java b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/Policy.java new file mode 100644 index 00000000..002a777f --- /dev/null +++ b/pdp-common/src/main/java/org/onap/policy/pdp/common/models/Policy.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * Class to represent a policy running in a PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class Policy { + + private String name; + private String policyType; + private String policyTypeVersion; + private String properties; +} diff --git a/pdp-common/src/test/java/org/onap/policy/pdp/common/models/TestModels.java b/pdp-common/src/test/java/org/onap/policy/pdp/common/models/TestModels.java new file mode 100644 index 00000000..082a05ce --- /dev/null +++ b/pdp-common/src/test/java/org/onap/policy/pdp/common/models/TestModels.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdp.common.models; + +import com.openpojo.reflection.filters.FilterPackageInfo; +import com.openpojo.validation.Validator; +import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.test.impl.GetterTester; +import com.openpojo.validation.test.impl.SetterTester; + +import org.junit.Test; +import org.onap.policy.common.utils.validation.ToStringTester; + +/** + * Class to perform unit testing of models. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +public class TestModels { + + private static final String MODELS_PACKAGE = "org.onap.policy.pdp.common.models"; + + @Test + public void testStatisticsReport() { + final Validator validator = ValidatorBuilder.create().with(new ToStringTester()).with(new SetterTester()) + .with(new GetterTester()).build(); + validator.validate(MODELS_PACKAGE, new FilterPackageInfo()); + } +} |