Include ProvMnS interface on DMI-Stub 78/141578/2
authorseanbeirne <sean.beirne@est.tech>
Tue, 22 Jul 2025 16:04:07 +0000 (17:04 +0100)
committerseanbeirne <sean.beirne@est.tech>
Mon, 28 Jul 2025 12:12:27 +0000 (13:12 +0100)
Issue-ID: CPS-2737
Change-Id: Ibf873bcbb7f0e47aeec0e528051910a6e7da7278
Signed-off-by: seanbeirne <sean.beirne@est.tech>
dmi-stub/.openapi-generator-ignore-provmns [new file with mode: 0644]
dmi-stub/dmi-stub-app/.openapi-generator-ignore-provmns [new file with mode: 0644]
dmi-stub/dmi-stub-app/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdGetDataNodeSelectorParameter.java [new file with mode: 0644]
dmi-stub/dmi-stub-app/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/Resource.java [new file with mode: 0644]
dmi-stub/dmi-stub-service/.openapi-generator-ignore-provmns [new file with mode: 0644]
dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdGetDataNodeSelectorParameter.java [new file with mode: 0644]
dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/Resource.java [new file with mode: 0644]
dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/ProvMnsStubController.java [new file with mode: 0644]
dmi-stub/dmi-stub-service/src/main/resources/application.yml
dmi-stub/pom.xml

diff --git a/dmi-stub/.openapi-generator-ignore-provmns b/dmi-stub/.openapi-generator-ignore-provmns
new file mode 100644 (file)
index 0000000..b69e17b
--- /dev/null
@@ -0,0 +1,16 @@
+# Ignore generation of all the models for ProvMns
+target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/*.java
+
+# Allow generation of the below model for ProvMns
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdPatchDefaultResponse.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseDefault.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseDefaultOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseGet.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseGetOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponsePatch.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponsePatchOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/PatchItem.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/PatchOperation.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ResourceOneOf.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/Scope.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ScopeType.java
\ No newline at end of file
diff --git a/dmi-stub/dmi-stub-app/.openapi-generator-ignore-provmns b/dmi-stub/dmi-stub-app/.openapi-generator-ignore-provmns
new file mode 100644 (file)
index 0000000..b69e17b
--- /dev/null
@@ -0,0 +1,16 @@
+# Ignore generation of all the models for ProvMns
+target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/*.java
+
+# Allow generation of the below model for ProvMns
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdPatchDefaultResponse.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseDefault.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseDefaultOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseGet.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseGetOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponsePatch.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponsePatchOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/PatchItem.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/PatchOperation.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ResourceOneOf.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/Scope.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ScopeType.java
\ No newline at end of file
diff --git a/dmi-stub/dmi-stub-app/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdGetDataNodeSelectorParameter.java b/dmi-stub/dmi-stub-app/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdGetDataNodeSelectorParameter.java
new file mode 100644 (file)
index 0000000..56d1074
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2025 OpenInfra Foundation Europe
+ *  ================================================================================
+ *  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.cps.ncmp.dmi.provmns.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * This class serves as a replacement for the generated ClassNameIdGetDataNodeSelector class which contains dependencies
+ * that cause code generation issues.
+ */
+@Getter
+@Setter
+public class ClassNameIdGetDataNodeSelectorParameter {
+
+    private String dataNodeSelector;
+
+}
diff --git a/dmi-stub/dmi-stub-app/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/Resource.java b/dmi-stub/dmi-stub-app/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/Resource.java
new file mode 100644 (file)
index 0000000..470c7ae
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2025 OpenInfra Foundation Europe
+ *  ================================================================================
+ *  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.cps.ncmp.dmi.provmns.model;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * This interface serves as a replacement for the generated Resource class, which has dependencies on the NRM-related
+ * models that we want to avoid for our implementation of Provisioning and Management Services (ProvMnS) API.
+ */
+@JsonSerialize(as = ResourceOneOf.class)
+@JsonDeserialize(as = ResourceOneOf.class)
+public interface Resource { }
diff --git a/dmi-stub/dmi-stub-service/.openapi-generator-ignore-provmns b/dmi-stub/dmi-stub-service/.openapi-generator-ignore-provmns
new file mode 100644 (file)
index 0000000..b69e17b
--- /dev/null
@@ -0,0 +1,16 @@
+# Ignore generation of all the models for ProvMns
+target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/*.java
+
+# Allow generation of the below model for ProvMns
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdPatchDefaultResponse.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseDefault.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseDefaultOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseGet.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponseGetOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponsePatch.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ErrorResponsePatchOtherProblemsInner.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/PatchItem.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/PatchOperation.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ResourceOneOf.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/Scope.java
+!target/generated-sources/openapi/src/gen/java/org/onap/cps/ncmp/dmi/provmns/model/ScopeType.java
\ No newline at end of file
diff --git a/dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdGetDataNodeSelectorParameter.java b/dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/ClassNameIdGetDataNodeSelectorParameter.java
new file mode 100644 (file)
index 0000000..56d1074
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2025 OpenInfra Foundation Europe
+ *  ================================================================================
+ *  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.cps.ncmp.dmi.provmns.model;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * This class serves as a replacement for the generated ClassNameIdGetDataNodeSelector class which contains dependencies
+ * that cause code generation issues.
+ */
+@Getter
+@Setter
+public class ClassNameIdGetDataNodeSelectorParameter {
+
+    private String dataNodeSelector;
+
+}
diff --git a/dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/Resource.java b/dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/provmns/model/Resource.java
new file mode 100644 (file)
index 0000000..470c7ae
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2025 OpenInfra Foundation Europe
+ *  ================================================================================
+ *  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.cps.ncmp.dmi.provmns.model;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+
+/**
+ * This interface serves as a replacement for the generated Resource class, which has dependencies on the NRM-related
+ * models that we want to avoid for our implementation of Provisioning and Management Services (ProvMnS) API.
+ */
+@JsonSerialize(as = ResourceOneOf.class)
+@JsonDeserialize(as = ResourceOneOf.class)
+public interface Resource { }
diff --git a/dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/ProvMnsStubController.java b/dmi-stub/dmi-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/ProvMnsStubController.java
new file mode 100644 (file)
index 0000000..a038005
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2025 OpenInfra Foundation Europe
+ *  ================================================================================
+ *  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.cps.ncmp.dmi.rest.stub.controller;
+
+import java.util.List;
+import org.onap.cps.ncmp.dmi.provmns.model.ClassNameIdGetDataNodeSelectorParameter;
+import org.onap.cps.ncmp.dmi.provmns.model.Resource;
+import org.onap.cps.ncmp.dmi.provmns.model.ResourceOneOf;
+import org.onap.cps.ncmp.dmi.provmns.model.Scope;
+import org.onap.cps.ncmp.dmi.provmns.rest.api.DefaultApi;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+public class ProvMnsStubController implements DefaultApi {
+
+    /**
+     * Replaces a complete single resource or creates it if it does not exist.
+     *
+     * @param className               Class name of the targeted resource
+     * @param id                      Identifier of the targeted resource
+     * @param resource                Resource representation of the resource to be created or replaced
+     * @return {@code ResponseEntity} The representation of the updated resource is returned in the response
+     *                                message body.
+     */
+    @Override
+    public ResponseEntity<Resource> classNameidPut(final String className, final String id, final Resource resource) {
+        return new ResponseEntity<>(resource, HttpStatus.OK);
+    }
+
+    /**
+     * Reads one or multiple resources.
+     *
+     * @param className        Class name of the targeted resource
+     * @param id               Identifier of the targeted resource
+     * @param scope            Extends the set of targeted resources beyond the base
+     *                         resource identified with the authority and path component of
+     *                         the URI.
+     * @param filter           Reduces the targeted set of resources by applying a filter to
+     *                         the scoped set of resource representations. Only resources
+     *                         representations for which the filter construct evaluates to
+     *                         "true" are targeted.
+     * @param attributes       Attributes of the scoped resources to be returned. The
+     *                         value is a comma-separated list of attribute names.
+     * @param fields           Attribute fields of the scoped resources to be returned. The
+     *                         value is a comma-separated list of JSON pointers to the
+     *                         attribute fields.
+     * @param dataNodeSelector dataNodeSelector object
+     * @return {@code ResponseEntity} The resources identified in the request for retrieval are returned
+     *                         in the response message body.
+     */
+    @Override
+    public ResponseEntity<Resource> classNameidGet(final String className, final String id, final Scope scope,
+                                                   final String filter, final List<String> attributes,
+                                                   final List<String> fields,
+                                                   final ClassNameIdGetDataNodeSelectorParameter dataNodeSelector) {
+        return new ResponseEntity<>(new ResourceOneOf("exampleResourceId"), HttpStatus.OK);
+    }
+
+    /**
+     * Patches (Create, Update or Delete) one or multiple resources.
+     *
+     * @param className               Class name of the targeted resource
+     * @param id                      Identifier of the targeted resource
+     * @param resource                Resource representation of the resource to be created or replaced
+     * @return {@code ResponseEntity} The updated resource representations are returned in the response message body.
+     */
+    @Override
+    public ResponseEntity<Resource> classNameidPatch(final String className, final String id, final Resource resource) {
+        return new ResponseEntity<>(resource, HttpStatus.OK);
+    }
+
+    /**
+     * Delete one or multiple resources.
+     *
+     * @param className               Class name of the targeted resource
+     * @param id                      Identifier of the targeted resource
+     * @return {@code ResponseEntity} The response body is empty, HTTP status returned.
+     */
+    @Override
+    public ResponseEntity<Void> classNameidDelete(final String className, final String id) {
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}
index f67d354..e8a15ec 100644 (file)
@@ -21,6 +21,7 @@ server:
 rest:
     api:
         dmi-stub-base-path: /dmi
+        provmns-base-path: /ProvMnS
 
 spring:
     main:
index 8bccd39..8053467 100644 (file)
                     </configOptions>
                 </configuration>
             </execution>
+            <execution>
+                <id>dmi-code-gen-provmns</id>
+                <goals>
+                    <goal>generate</goal>
+                </goals>
+                <configuration>
+                    <inputSpec>https://forge.3gpp.org/rep/all/5G_APIs/-/raw/REL-18/TS28532_ProvMnS.yaml</inputSpec>
+                    <invokerPackage>org.onap.cps.ncmp.dmi.rest.stub.provmns.controller</invokerPackage>
+                    <modelPackage>org.onap.cps.ncmp.dmi.provmns.model</modelPackage>
+                    <apiPackage>org.onap.cps.ncmp.dmi.provmns.rest.api</apiPackage>
+                    <generatorName>spring</generatorName>
+                    <generateSupportingFiles>false</generateSupportingFiles>
+                    <configOptions>
+                        <sourceFolder>src/gen/java</sourceFolder>
+                        <dateLibrary>java11</dateLibrary>
+                        <interfaceOnly>true</interfaceOnly>
+                        <useSpringBoot3>true</useSpringBoot3>
+                        <useTags>true</useTags>
+                        <openApiNullable>false</openApiNullable>
+                        <skipDefaultInterface>true</skipDefaultInterface>
+                    </configOptions>
+                    <importMappings>
+                        <importMapping>Resource=org.onap.cps.ncmp.dmi.provmns.model.Resource</importMapping>
+                        <importMapping>ClassNameIdGetDataNodeSelectorParameter=org.onap.cps.ncmp.dmi.provmns.model.ClassNameIdGetDataNodeSelectorParameter</importMapping>
+                    </importMappings>
+                    <ignoreFileOverride>${project.basedir}/.openapi-generator-ignore-provmns</ignoreFileOverride>
+                </configuration>
+            </execution>
         </executions>
     </plugin>
         <plugin>