From 4da3ef72e0cd25712ee5558ea7a994cc9ed9fcee Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 25 Mar 2019 11:12:06 -0400 Subject: Add internal classes to models-pdp Added PdpGroup and other classes. These are the objects that will will actually be stored in the DB. The DB Provider classes should be updated to use these instead of the external classes found in models-pap. Note: These were copied from policy/pap. Change-Id: I2e5518d28e79c26038d0a1600553ab058bcdda1a Issue-ID: POLICY-1542 Signed-off-by: Jim Hahn --- .../onap/policy/models/pdp/concepts/PdpGroup.java | 69 ++++++++++++++++++++ .../onap/policy/models/pdp/concepts/PdpGroups.java | 37 +++++++++++ .../models/pdp/concepts/PdpInstanceDetails.java | 63 ++++++++++++++++++ .../policy/models/pdp/concepts/PdpSubGroup.java | 76 ++++++++++++++++++++++ 4 files changed, 245 insertions(+) create mode 100644 models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java create mode 100644 models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java create mode 100644 models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpInstanceDetails.java create mode 100644 models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpSubGroup.java (limited to 'models-pdp/src/main') diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java new file mode 100644 index 000000000..bb67a4060 --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroup.java @@ -0,0 +1,69 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.models.pdp.concepts; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.pdp.enums.PdpState; +import org.onap.policy.models.tosca.simple.concepts.ToscaEntityType; + +/** + * Class to represent a PDPGroup, which groups multiple PDPSubGroup entities together for + * a particular domain. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +@NoArgsConstructor +public class PdpGroup extends ToscaEntityType { + private static final long serialVersionUID = 1L; + + private PdpState pdpGroupState; + private Map properties; + private List pdpSubgroups; + + /* + * Note: removed "@NotNull" annotation from the constructor argument, because it + * cannot be covered by a junit test, as the superclass does the check and throws an + * exception first. + */ + + /** + * Constructs the object, making a deep copy from the source. + * + * @param source source from which to copy fields + */ + public PdpGroup(PdpGroup source) { + super(source); + this.pdpGroupState = source.pdpGroupState; + this.properties = (source.properties == null ? null : new LinkedHashMap<>(source.properties)); + this.pdpSubgroups = PfUtils.mapList(source.pdpSubgroups, PdpSubGroup::new); + } +} diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java new file mode 100644 index 000000000..ea1c8ff55 --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpGroups.java @@ -0,0 +1,37 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import java.util.List; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * Request deploy or update a set of groups via the PDP Group deployment + * REST API. + */ +@Getter +@Setter +@ToString +public class PdpGroups { + private List groups; +} diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpInstanceDetails.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpInstanceDetails.java new file mode 100644 index 000000000..6cf122e19 --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpInstanceDetails.java @@ -0,0 +1,63 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.models.pdp.concepts; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.NonNull; +import lombok.Setter; +import lombok.ToString; +import org.onap.policy.models.pdp.enums.PdpHealthStatus; +import org.onap.policy.models.pdp.enums.PdpState; + +/** + * Class to represent details of a running instance of PDP. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +@NoArgsConstructor +public class PdpInstanceDetails { + + @NonNull + private String instanceId; + + @NonNull + private PdpState pdpState; + + private PdpHealthStatus healthy; + private String message; + + /** + * Constructs the object, creating a deep copy of the fields from the source. + * + * @param source source from which to copy the fields + */ + public PdpInstanceDetails(PdpInstanceDetails source) { + this.instanceId = source.instanceId; + this.pdpState = source.pdpState; + this.healthy = source.healthy; + this.message = source.message; + } +} diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpSubGroup.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpSubGroup.java new file mode 100644 index 000000000..0466c6300 --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpSubGroup.java @@ -0,0 +1,76 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.models.pdp.concepts; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import lombok.Getter; +import lombok.NonNull; +import lombok.Setter; +import lombok.ToString; +import org.onap.policy.models.base.PfUtils; +import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; + +/** + * Class to represent a group of all PDP's of the same pdp type running for a particular + * domain. + * + * @author Ram Krishna Verma (ram.krishna.verma@est.tech) + */ +@Getter +@Setter +@ToString +public class PdpSubGroup { + + // TODO subclass from ToscaEntityType + + private String pdpType; + private List supportedPolicyTypes; + private List policies; + private int currentInstanceCount; + private int desiredInstanceCount; + private Map properties; + private List pdpInstances; + + /** + * Constructs the object. + */ + public PdpSubGroup() { + super(); + } + + /** + * Constructs the object, making a deep copy from the source. + * + * @param source source from which to copy fields + */ + public PdpSubGroup(@NonNull PdpSubGroup source) { + this.pdpType = source.pdpType; + this.supportedPolicyTypes = PfUtils.mapList(source.supportedPolicyTypes, PolicyTypeIdent::new); + this.policies = PfUtils.mapList(source.policies, ToscaPolicy::new); + this.currentInstanceCount = source.currentInstanceCount; + this.desiredInstanceCount = source.desiredInstanceCount; + this.properties = (source.properties == null ? null : new LinkedHashMap<>(source.properties)); + this.pdpInstances = PfUtils.mapList(source.pdpInstances, PdpInstanceDetails::new); + } +} -- cgit 1.2.3-korg