From baa4e928207f5930fcd620bddddcd493aa7a4122 Mon Sep 17 00:00:00 2001 From: jhh Date: Thu, 30 Jan 2020 18:57:13 -0600 Subject: domain native and operational policies support - moved DomainMaker to policy-utils/ project. - support for native drools and controller drools policy types. Issue-ID: POLICY-2345 Signed-off-by: jhh Change-Id: I46b9816eadceb7ef280e0e6789f07b4d4ca51519 Signed-off-by: jhh --- .../policy/drools/domain/models/DroolsPolicy.java | 44 +++ .../onap/policy/drools/domain/models/Metadata.java | 40 +++ .../controller/ControllerCustomSerializer.java | 39 +++ .../domain/models/controller/ControllerPolicy.java | 41 +++ .../models/controller/ControllerProperties.java | 52 ++++ .../models/controller/ControllerSerialization.java | 42 +++ .../models/controller/ControllerSinkTopic.java | 45 +++ .../models/controller/ControllerSourceTopic.java | 44 +++ .../models/nativ/rules/NativeDroolsController.java | 43 +++ .../models/nativ/rules/NativeDroolsPolicy.java | 41 +++ .../models/nativ/rules/NativeDroolsProperties.java | 42 +++ .../nativ/rules/NativeDroolsRulesArtifact.java | 46 +++ ...oop.operational.common.Drools-1.0.0.schema.json | 315 +++++++++++++++++++++ ...ap.policies.drools.Controller-1.0.0.schema.json | 274 ++++++++++++++++++ .../onap.policies.native.Drools-1.0.0.schema.json | 150 ++++++++++ 15 files changed, 1258 insertions(+) create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/Metadata.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerCustomSerializer.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerPolicy.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerProperties.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSerialization.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSinkTopic.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSourceTopic.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsController.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsPolicy.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsProperties.java create mode 100644 feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsRulesArtifact.java create mode 100644 feature-lifecycle/src/main/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json create mode 100644 feature-lifecycle/src/main/resources/schemas/onap.policies.drools.Controller-1.0.0.schema.json create mode 100644 feature-lifecycle/src/main/resources/schemas/onap.policies.native.Drools-1.0.0.schema.json (limited to 'feature-lifecycle/src/main') diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java new file mode 100644 index 00000000..a0234661 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/DroolsPolicy.java @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +public abstract class DroolsPolicy { + @SerializedName("type") + protected String type; + + @SerializedName("type_version") + protected String typeVersion; + + @SerializedName("version") + protected String version; + + @SerializedName("name") + protected String name; + + @SerializedName("metadata") + protected Metadata metadata; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/Metadata.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/Metadata.java new file mode 100644 index 00000000..fd68e5b5 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/Metadata.java @@ -0,0 +1,40 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Builder; +import lombok.Data; + +/** + * Metadata in Native Drools Policies. + */ + +@Data +@Builder +public class Metadata implements Serializable { + + private static final long serialVersionUID = -1027974819756498893L; + + @SerializedName("policy-id") + protected String policyId; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerCustomSerializer.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerCustomSerializer.java new file mode 100644 index 00000000..bda7748d --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerCustomSerializer.java @@ -0,0 +1,39 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.controller; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Data; +import lombok.experimental.SuperBuilder; + + +@Data +@SuperBuilder +public class ControllerCustomSerializer implements Serializable { + private static final long serialVersionUID = 1505345574249332514L; + + @SerializedName("customSerializerClass") + protected String customSerializerClass; + + @SerializedName("jsonParser") + protected String jsonParser; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerPolicy.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerPolicy.java new file mode 100644 index 00000000..0d5a363e --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerPolicy.java @@ -0,0 +1,41 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.controller; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Data; +import lombok.experimental.SuperBuilder; +import org.onap.policy.drools.domain.models.DroolsPolicy; + +/** + * Controller Policy model root object. + */ + +@Data +@SuperBuilder +public class ControllerPolicy extends DroolsPolicy implements Serializable { + + private static final long serialVersionUID = -8171337852833516581L; + + @SerializedName("properties") + protected ControllerProperties properties; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerProperties.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerProperties.java new file mode 100644 index 00000000..0ed6d33c --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerProperties.java @@ -0,0 +1,52 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.controller; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import java.util.List; +import java.util.Map; +import lombok.Data; +import lombok.experimental.SuperBuilder; + + +/** + * Controller Domain Policy. + */ + +@Data +@SuperBuilder +public class ControllerProperties implements Serializable { + private static final long serialVersionUID = 1259434187110418986L; + + @SerializedName("controllerName") + protected String controllerName; + + @SerializedName("sourceTopics") + protected List sourceTopics; + + @SerializedName("sinkTopics") + protected List sinkTopics; + + @SerializedName("customConfig") + protected Map customConfig; + +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSerialization.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSerialization.java new file mode 100644 index 00000000..77a5e93d --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSerialization.java @@ -0,0 +1,42 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.controller; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Data; +import lombok.experimental.SuperBuilder; + + +@Data +@SuperBuilder +public class ControllerSerialization implements Serializable { + + @SerializedName("eventClass") + public String eventClass; + + @SerializedName("eventFilter") + public String eventFilter; + + @SerializedName("customSerializer") + public ControllerCustomSerializer customSerializer; + +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSinkTopic.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSinkTopic.java new file mode 100644 index 00000000..acb4fb01 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSinkTopic.java @@ -0,0 +1,45 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.controller; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import java.util.List; +import lombok.Data; +import lombok.experimental.SuperBuilder; + + +/** + * Sink Topic. + */ + +@Data +@SuperBuilder +public class ControllerSinkTopic implements Serializable { + private static final long serialVersionUID = 8770353732981476267L; + + @SerializedName("topicName") + protected String topicName; + + @SerializedName("serialization") + protected List serialization; + +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSourceTopic.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSourceTopic.java new file mode 100644 index 00000000..69d57bc6 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/controller/ControllerSourceTopic.java @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.controller; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import java.util.List; +import lombok.Data; +import lombok.experimental.SuperBuilder; + + +/** + * Source Topics. + */ + +@Data +@SuperBuilder +public class ControllerSourceTopic implements Serializable { + private static final long serialVersionUID = -1732598566914643612L; + + @SerializedName("topicName") + protected String topicName; + + @SerializedName("serialization") + protected List serialization; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsController.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsController.java new file mode 100644 index 00000000..0af96331 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsController.java @@ -0,0 +1,43 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.nativ.rules; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Builder; +import lombok.Data; + +/** + * Controller Model in Native Drools Policies. + */ + +@Data +@Builder +public class NativeDroolsController implements Serializable { + + private static final long serialVersionUID = -2070515139072136869L; + + @SerializedName("name") + protected String name; + + @SerializedName("version") + protected String version; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsPolicy.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsPolicy.java new file mode 100644 index 00000000..fce6ca1a --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsPolicy.java @@ -0,0 +1,41 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.nativ.rules; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Data; +import lombok.experimental.SuperBuilder; +import org.onap.policy.drools.domain.models.DroolsPolicy; + +/** + * Native Drools Policy model root object. + */ + +@Data +@SuperBuilder +public class NativeDroolsPolicy extends DroolsPolicy implements Serializable { + + private static final long serialVersionUID = -8171337852833516581L; + + @SerializedName("properties") + protected NativeDroolsProperties properties; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsProperties.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsProperties.java new file mode 100644 index 00000000..dfd25ca7 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsProperties.java @@ -0,0 +1,42 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.nativ.rules; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Builder; +import lombok.Data; + +/** + * Properties in Native Drools Policies. + */ + +@Data +@Builder +public class NativeDroolsProperties implements Serializable { + private static final long serialVersionUID = 2360030332628276427L; + + @SerializedName("rulesArtifact") + protected NativeDroolsRulesArtifact rulesArtifact; + + @SerializedName("controller") + protected NativeDroolsController controller; +} diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsRulesArtifact.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsRulesArtifact.java new file mode 100644 index 00000000..8ca33865 --- /dev/null +++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/domain/models/nativ/rules/NativeDroolsRulesArtifact.java @@ -0,0 +1,46 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 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.drools.domain.models.nativ.rules; + +import com.google.gson.annotations.SerializedName; +import java.io.Serializable; +import lombok.Builder; +import lombok.Data; + +/** + * Rules Artifact in Native Drools Policies. + */ + +@Data +@Builder +public class NativeDroolsRulesArtifact implements Serializable { + + private static final long serialVersionUID = -3519759514319217518L; + + @SerializedName("groupId") + protected String groupId; + + @SerializedName("artifactId") + protected String artifactId; + + @SerializedName("version") + protected String version; +} diff --git a/feature-lifecycle/src/main/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json b/feature-lifecycle/src/main/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json new file mode 100644 index 00000000..8548f7f7 --- /dev/null +++ b/feature-lifecycle/src/main/resources/schemas/onap.policies.controlloop.operational.common.Drools-1.0.0.schema.json @@ -0,0 +1,315 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://www.onap.org/policy/models/schemas/onap.policies.controlloop.operational.common.Drools.schema.json", + "type": "object", + "title": "The Root Schema", + "required": [ + "type", + "type_version", + "version", + "metadata", + "properties" + ], + "properties": { + "type": { + "$id": "#/properties/type", + "type": "string", + "title": "Policy Type", + "default": "onap.policies.controlloop.operational.common.Drools", + "examples": [ + "onap.policies.controlloop.operational.common.Drools" + ], + "pattern": "^(.+)$" + }, + "type_version": { + "$id": "#/properties/type_version", + "type": "string", + "title": "Policy Type Version", + "default": "1.0.0", + "examples": [ + "1.0.0" + ], + "pattern": "^(.+)$" + }, + "name": { + "$id": "#/properties/name", + "type": "string", + "title": "Policy Name", + "default": "", + "examples": [ + "example" + ], + "pattern": "^(.*)$" + }, + "version": { + "$id": "#/properties/version", + "type": "string", + "title": "Policy Version", + "default": "1.0.0", + "examples": [ + "1.0.0" + ], + "pattern": "^(.+)$" + }, + "metadata": { + "$id": "#/properties/metadata", + "type": "object", + "title": "Metadata", + "required": [ + "policy-id" + ], + "properties": { + "policy-id": { + "$id": "#/properties/metadata/properties/policy-id", + "type": "string", + "title": "Policy ID", + "examples": [ + "operational.restart" + ], + "pattern": "^(.+)$" + } + } + }, + "properties": { + "$id": "#/properties/properties", + "type": "object", + "title": "Properties", + "required": [ + "id", + "timeout", + "abatement", + "trigger", + "operations", + "controllerName" + ], + "properties": { + "id": { + "$id": "#/properties/properties/properties/id", + "type": "string", + "title": "Control Loop Name", + "examples": [ + "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e" + ], + "pattern": "^(.+)$" + }, + "timeout": { + "$id": "#/properties/properties/properties/timeout", + "type": "integer", + "title": "Timeout in seconds", + "minimum": 1, + "default": 30, + "examples": [ + 3600 + ] + }, + "abatement": { + "$id": "#/properties/properties/properties/abatement", + "type": "boolean", + "title": "Abatement", + "default": false, + "examples": [ + true + ] + }, + "trigger": { + "$id": "#/properties/properties/properties/trigger", + "type": "string", + "title": "Trigger Operation", + "examples": [ + "unique-policy-id-1-restart" + ], + "pattern": "^(.+)$" + }, + "operations": { + "$id": "#/properties/properties/properties/operations", + "type": "array", + "title": "Operations", + "items": { + "$id": "#/properties/properties/properties/operations/items", + "type": "object", + "title": "Items", + "uniqueItems": true, + "required": [ + "id", + "description", + "operation", + "timeout", + "retries", + "success", + "failure", + "failure_timeout", + "failure_retries", + "failure_exception", + "failure_guard" + ], + "properties": { + "id": { + "$id": "#/properties/properties/properties/operations/items/properties/id", + "type": "string", + "title": "Operation Identifier", + "examples": [ + "unique-policy-id-1-restart" + ], + "pattern": "^(.+)$" + }, + "description": { + "$id": "#/properties/properties/properties/operations/items/properties/description", + "type": "string", + "title": "Description", + "examples": [ + "Restart the VM" + ], + "pattern": "^(.+)$" + }, + "operation": { + "$id": "#/properties/properties/properties/operations/items/properties/operation", + "type": "object", + "title": "Operation", + "required": [ + "actor", + "recipe", + "target" + ], + "properties": { + "actor": { + "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/actor", + "type": "string", + "title": "Actor", + "examples": [ + "APPC" + ], + "pattern": "^(.+)$" + }, + "recipe": { + "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/recipe", + "type": "string", + "title": "Recipe", + "examples": [ + "Restart" + ], + "pattern": "^(.+)$" + }, + "target": { + "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/target", + "type": "object", + "title": "Target", + "required": [ + "type" + ], + "properties": { + "type": { + "$id": "#/properties/properties/properties/operations/items/properties/operation/properties/target/properties/type", + "type": "string", + "title": "Target Type", + "examples": [ + "VNF" + ], + "pattern": "^(.+)$" + } + } + } + } + }, + "timeout": { + "$id": "#/properties/properties/properties/operations/items/properties/timeout", + "type": "integer", + "title": "Operation Timeout in seconds", + "default": 10, + "minimum": 1, + "examples": [ + 1200 + ] + }, + "retries": { + "$id": "#/properties/properties/properties/operations/items/properties/retries", + "type": "integer", + "title": "Number of Retries", + "default": 0, + "examples": [ + 3 + ] + }, + "success": { + "$id": "#/properties/properties/properties/operations/items/properties/success", + "type": "string", + "title": "Success Treatment", + "default": "final_success", + "examples": [ + "final_success", + "unique-policy-id-2" + ], + "pattern": "^(.+)$" + }, + "failure": { + "$id": "#/properties/properties/properties/operations/items/properties/failure", + "type": "string", + "title": "Failure Treatment", + "default": "final_failure", + "examples": [ + "final_failure", + "unique-policy-id-2" + ], + "pattern": "^(.+)$" + }, + "failure_timeout": { + "$id": "#/properties/properties/properties/operations/items/properties/failure_timeout", + "type": "string", + "title": "Failure Timeout Treatment", + "default": "final_failure_timeout", + "examples": [ + "final_failure_timeout", + "unique-policy-id-2" + ], + "pattern": "^(.+)$" + }, + "failure_retries": { + "$id": "#/properties/properties/properties/operations/items/properties/failure_retries", + "type": "string", + "title": "Failure Retries Treatment", + "default": "final_failure_retries", + "examples": [ + "final_failure_retries", + "unique-policy-id-2" + ], + "pattern": "^(.+)$" + }, + "failure_exception": { + "$id": "#/properties/properties/properties/operations/items/properties/failure_exception", + "type": "string", + "title": "Failure Exception Treatment", + "default": "", + "examples": [ + "final_failure_exception", + "unique-policy-id-2" + ], + "pattern": "^(.+)$" + }, + "failure_guard": { + "$id": "#/properties/properties/properties/operations/items/properties/failure_guard", + "type": "string", + "title": "Failure Guard Treatment", + "default": "final_failure_guard", + "examples": [ + "final_failure_guard", + "unique-policy-id-2" + ], + "pattern": "^(.+)$" + } + } + } + }, + "controllerName": { + "$id": "#/properties/properties/properties/controllerName", + "type": "string", + "title": "Controller Name", + "default": "", + "examples": [ + "usecases" + ], + "pattern": "^(.+)$" + } + } + } + } +} \ No newline at end of file diff --git a/feature-lifecycle/src/main/resources/schemas/onap.policies.drools.Controller-1.0.0.schema.json b/feature-lifecycle/src/main/resources/schemas/onap.policies.drools.Controller-1.0.0.schema.json new file mode 100644 index 00000000..e07a3e1e --- /dev/null +++ b/feature-lifecycle/src/main/resources/schemas/onap.policies.drools.Controller-1.0.0.schema.json @@ -0,0 +1,274 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://www.onap.org/policy/models/schemas/onap.policies.drools.Controller.schema.json", + "type": "object", + "title": "Domain onap.policies.drools.Controller Policy root schema", + "required": [ + "type", + "type_version", + "version", + "metadata", + "properties" + ], + "properties": { + "type": { + "$id": "#/properties/type", + "type": "string", + "title": "Policy Type", + "default": "onap.policies.native.Drools", + "examples": [ + "onap.policies.native.Drools" + ], + "pattern": "^(.+)$" + }, + "type_version": { + "$id": "#/properties/type_version", + "type": "string", + "title": "Policy Type Version", + "examples": [ + "1.0.0" + ], + "pattern": "^(.+)$" + }, + "version": { + "$id": "#/properties/version", + "type": "string", + "title": "Version", + "examples": [ + "1.0.0" + ], + "pattern": "^(.+)$" + }, + "name": { + "$id": "#/properties/name", + "type": "string", + "title": "Name", + "examples": [ + "example" + ], + "pattern": "^(.+)$" + }, + "metadata": { + "$id": "#/properties/metadata", + "type": "object", + "title": "Metadata", + "required": [ + "policy-id" + ], + "properties": { + "policy-id": { + "$id": "#/properties/metadata/properties/policy-id", + "type": "string", + "title": "The policy-id Schema", + "examples": [ + "example" + ], + "pattern": "^(.+)$" + } + } + }, + "properties": { + "$id": "#/properties/properties", + "type": "object", + "title": "Policy Domain Properties", + "required": [ + "controllerName" + ], + "properties": { + "controllerName": { + "$id": "#/properties/properties/properties/controllerName", + "type": "string", + "title": "Controller Name", + "examples": [ + "example" + ], + "pattern": "^(.+)$" + }, + "sourceTopics": { + "$id": "#/properties/properties/properties/sourceTopics", + "type": "array", + "title": "Source Topics", + "items": { + "$id": "#/properties/properties/properties/sourceTopics/items", + "type": "object", + "title": "Topic Data", + "required": [ + "topicName", + "serialization" + ], + "properties": { + "topicName": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/topicName", + "type": "string", + "title": "Topic Name", + "examples": [ + "DCAE_TOPIC" + ], + "pattern": "^(.+)$" + }, + "serialization": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization", + "type": "array", + "title": "Serialization", + "items": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization/items", + "type": "object", + "title": "Serialization Data", + "required": [ + "eventClass", + "eventFilter", + "customSerializer" + ], + "properties": { + "eventClass": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization/items/properties/eventClass", + "type": "string", + "title": "Event Class", + "examples": [ + "org.onap.policy.controlloop.CanonicalOnset" + ], + "pattern": "^(.+)$" + }, + "eventFilter": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization/items/properties/eventFilter", + "type": "string", + "title": "Event Filter", + "examples": [ + "[?($.closedLoopEventStatus == 'ONSET')]" + ], + "pattern": "^(.+)$" + }, + "customSerializer": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization/items/properties/customSerializer", + "type": "object", + "title": "Custom Serializer", + "required": [ + "customSerializerClass", + "jsonParser" + ], + "properties": { + "customSerializerClass": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization/items/properties/customSerializer/properties/customSerializerClass", + "type": "string", + "title": "Custom Serializer Class", + "examples": [ + "org.onap.policy.controlloop.util.Serialization" + ], + "pattern": "^(.*)$" + }, + "jsonParser": { + "$id": "#/properties/properties/properties/sourceTopics/items/properties/serialization/items/properties/customSerializer/properties/jsonParser", + "type": "string", + "title": "JSON Parser reference", + "examples": [ + "gson" + ], + "pattern": "^(.+)$" + } + } + } + } + } + } + } + } + }, + "sinkTopics": { + "$id": "#/properties/properties/properties/sinkTopics", + "type": "array", + "title": "Sink Topics", + "items": { + "$id": "#/properties/properties/properties/sinkTopics/items", + "type": "object", + "title": "Sink Topic Data", + "required": [ + "topicName", + "serialization" + ], + "properties": { + "topicName": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/topicName", + "type": "string", + "title": "Topic Name", + "default": "", + "examples": [ + "APPC-CL" + ], + "pattern": "^(.+)$" + }, + "serialization": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization", + "type": "array", + "title": "The Serialization Schema", + "items": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization/items", + "type": "object", + "title": "Serialization Data", + "required": [ + "eventClass", + "eventFilter" + ], + "properties": { + "eventClass": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization/items/properties/eventClass", + "type": "string", + "title": "Event Class", + "examples": [ + "org.onap.policy.appc.Response" + ], + "pattern": "^(.+)$" + }, + "eventFilter": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization/items/properties/eventFilter", + "type": "string", + "title": "The Eventfilter Schema", + "examples": [ + "[?($.CommonHeader && $.Status)]" + ], + "pattern": "^(.+)$" + }, + "customSerializer": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization/items/properties/customSerializer", + "type": "object", + "title": "The Customserializer Schema", + "required": [ + "customSerializerClass", + "jsonParser" + ], + "properties": { + "customSerializerClass": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization/items/properties/customSerializer/properties/customSerializerClass", + "type": "string", + "title": "The Customserializerclass Schema", + "examples": [ + "org.onap.policy.appc.util.Serialization" + ], + "pattern": "^(.+)$" + }, + "jsonParser": { + "$id": "#/properties/properties/properties/sinkTopics/items/properties/serialization/items/properties/customSerializer/properties/jsonParser", + "type": "string", + "title": "The Jsonparser Schema", + "examples": [ + "gsonPretty" + ], + "pattern": "^(.+)$" + } + } + } + } + } + } + } + } + }, + "customConfig": { + "$id": "#/properties/properties/properties/customConfig", + "type": "object", + "title": "other Configuration" + } + } + } + } +} diff --git a/feature-lifecycle/src/main/resources/schemas/onap.policies.native.Drools-1.0.0.schema.json b/feature-lifecycle/src/main/resources/schemas/onap.policies.native.Drools-1.0.0.schema.json new file mode 100644 index 00000000..d1866c6b --- /dev/null +++ b/feature-lifecycle/src/main/resources/schemas/onap.policies.native.Drools-1.0.0.schema.json @@ -0,0 +1,150 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://www.onap.org/policy/models/schemas/onap.policies.controlloop.native.Drools.schema.json", + "type": "object", + "title": "Domain onap.policies.controlloop.native.Drools Policy root schema", + "required": [ + "type", + "type_version", + "version", + "metadata", + "properties" + ], + "properties": { + "type": { + "$id": "#/properties/type", + "type": "string", + "title": "Policy Type", + "default": "onap.policies.native.Drools", + "examples": [ + "onap.policies.native.Drools" + ], + "pattern": "^(.+)$" + }, + "type_version": { + "$id": "#/properties/type_version", + "type": "string", + "title": "Policy Type Version", + "examples": [ + "1.0.0" + ], + "pattern": "^(.+)$" + }, + "version": { + "$id": "#/properties/version", + "type": "string", + "title": "Version", + "examples": [ + "1.0.0" + ], + "pattern": "^(.+)$" + }, + "name": { + "$id": "#/properties/name", + "type": "string", + "title": "Name", + "examples": [ + "example" + ], + "pattern": "^(.+)$" + }, + "metadata": { + "$id": "#/properties/metadata", + "type": "object", + "title": "Metadata", + "required": [ + "policy-id" + ], + "properties": { + "policy-id": { + "$id": "#/properties/metadata/properties/policy-id", + "type": "string", + "title": "The Policy-id Schema", + "examples": [ + "example" + ], + "pattern": "^(.+)$" + } + } + }, + "properties": { + "$id": "#/properties/properties", + "type": "object", + "title": "Properties", + "required": [ + "rulesArtifact" + ], + "properties": { + "rulesArtifact": { + "$id": "#/properties/properties/properties/rulesArtifact", + "type": "object", + "title": "Rules Artifact", + "required": [ + "groupId", + "artifactId", + "version" + ], + "properties": { + "groupId": { + "$id": "#/properties/properties/properties/rulesArtifact/properties/groupId", + "type": "string", + "title": "Group Id", + "examples": [ + "org.onap.policy.controlloop" + ], + "pattern": "^(.*)$" + }, + "artifactId": { + "$id": "#/properties/properties/properties/rulesArtifact/properties/artifactId", + "type": "string", + "title": "Artifact ID", + "examples": [ + "example" + ], + "pattern": "^(.*)$" + }, + "version": { + "$id": "#/properties/properties/properties/rulesArtifact/properties/version", + "type": "string", + "title": "Version", + "examples": [ + "1.0.0" + ], + "pattern": "^(.*)$" + } + } + }, + "controller": { + "$id": "#/properties/properties/properties/controller", + "type": "object", + "title": "Controller", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "$id": "#/properties/properties/properties/controller/properties/name", + "type": "string", + "title": "Name", + "examples": [ + "example" + ], + "pattern": "^(.+)$" + }, + "version": { + "$id": "#/properties/properties/properties/controller/properties/version", + "type": "string", + "title": "Version", + "examples": [ + "1.0.0" + ], + "pattern": "^(.*)$" + } + } + } + } + } + } +} -- cgit 1.2.3-korg