aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam Fallon <liam.fallon@est.tech>2021-07-20 11:55:15 +0000
committerGerrit Code Review <gerrit@onap.org>2021-07-20 11:55:15 +0000
commit8bd2403907becf8a6d246408434fbceaa30ba745 (patch)
tree258ebff1647b7d9e820fbd359148236402cbae8a
parent561c0a8f068a246438509058f8ecf080751e6b83 (diff)
parent123321473628cbacd35963f4f30bf2ab621fd3b7 (diff)
Merge "Add profile for generating Swagger documents"
-rw-r--r--.gitignore2
-rw-r--r--docs/conf.py175
-rw-r--r--docs/development/devtools/devtools.rst49
-rw-r--r--docs/xacml/swagger.json4
-rw-r--r--integration/pom.xml164
-rw-r--r--pom.xml2
-rw-r--r--resources/pom.xml32
-rw-r--r--resources/src/main/resources/asciidoc/swagger.adoc4
-rw-r--r--resources/src/main/resources/assemblies/swagger-docs.xml40
9 files changed, 462 insertions, 10 deletions
diff --git a/.gitignore b/.gitignore
index dc69c96a..e7d23e9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
.project
.settings
.classpath
+.checkstyle
.jupiter
.pydevproject
target
@@ -9,7 +10,6 @@ target
/bin/
.idea
**/*.iml
-docs/conf.py
docs/conf.pyc
docs/html/
docs/_static/
diff --git a/docs/conf.py b/docs/conf.py
index 87611ec9..11918233 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,21 +1,182 @@
+from docutils.parsers.rst import directives
from docs_conf.conf import *
branch = 'latest'
+doc_url = 'https://docs.onap.org/projects'
master_doc = 'index'
-extensions = [
- 'sphinx.ext.autosectionlabel',
- 'sphinxcontrib.swaggerdoc'
- ]
+
+intersphinx_mapping = {}
+
+# Latest (change to branch)
+intersphinx_mapping['onap-aai-aai-common'] = ('{}/onap-aai-aai-common/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-aai-sparky-be'] = ('{}/onap-aai-sparky-be/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-cds'] = ('{}/onap-ccsdk-cds/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-features'] = ('{}/onap-ccsdk-features/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-distribution'] = ('{}/onap-ccsdk-distribution/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-oran'] = ('{}/onap-ccsdk-oran/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-cli'] = ('{}/onap-cli/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-cps'] = ('{}/onap-cps/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-dcaegen2'] = ('{}/onap-dcaegen2/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-dmaap-messagerouter-messageservice'] = (
+ '{}/onap-dmaap-messagerouter-messageservice/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-dmaap-buscontroller'] = ('{}/onap-dmaap-buscontroller/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-dmaap-datarouter'] = ('{}/onap-dmaap-datarouter/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-dmaap-dbcapi'] = ('{}/onap-dmaap-dbcapi/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-externalapi-nbi'] = ('{}/onap-externalapi-nbi/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-holmes-engine-management'] = (
+ '{}/onap-holmes-engine-management/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-holmes-rule-management'] = (
+ '{}/onap-holmes-rule-management/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-integration'] = ('{}/onap-integration/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-modeling-etsicatalog'] = ('{}/onap-modeling-etsicatalog/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-modeling-modelspec'] = ('{}/onap-modeling-modelspec/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-multicloud-framework'] = ('{}/onap-multicloud-framework/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-msb-apigateway'] = ('{}/onap-msb-apigateway/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-oom'] = ('{}/onap-oom/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-oom-offline-installer'] = ('{}/onap-oom-offline-installer/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-oom-platform-cert-service'] = (
+ '{}/onap-oom-platform-cert-service/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-optf-cmso'] = ('{}/onap-optf-cmso/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-optf-osdf'] = ('{}/onap-optf-osdf/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-optf-has'] = ('{}/onap-optf-has/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-policy-clamp'] = ('{}/onap-policy-clamp/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-policy-parent'] = ('{}/onap-policy-parent/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-sdc'] = ('{}/onap-sdc/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-sdnc-oam'] = ('{}/onap-sdnc-oam/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-so'] = ('{}/onap-so/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-usecase-ui'] = ('{}/onap-usecase-ui/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vfc-nfvo-lcm'] = ('{}/onap-vfc-nfvo-lcm/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vid'] = ('{}/onap-vid/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vnfrqts-guidelines'] = ('{}/onap-vnfrqts-guidelines/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vnfrqts-requirements'] = ('{}/onap-vnfrqts-requirements/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vnfrqts-testcases'] = ('{}/onap-vnfrqts-testcases/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vnfrqts-usecases'] = ('{}/onap-vnfrqts-usecases/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vnfsdk-model'] = ('{}/onap-vnfsdk-model/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vvp-documentation'] = ('{}/onap-vvp-documentation/en/%s'.format(doc_url) % branch, None)
+
+# Guilin
+branch = 'guilin'
+intersphinx_mapping['onap-portal'] = ('{}/onap-portal/en/%s'.format(doc_url) % branch, None)
+
+# Frankfurt
+branch = 'frankfurt'
+intersphinx_mapping['onap-appc'] = ('{}/onap-appc/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-appc-deployment'] = ('{}/onap-appc-deployment/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-music'] = ('{}/onap-music/en/%s'.format(doc_url) % branch, None)
+
+# Latest
+branch = 'latest'
+intersphinx_mapping['onap-aaf-authz'] = ('{}/onap-aaf-authz/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-aaf-sms'] = ('{}/onap-aaf-sms/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-aai-event-client'] = ('{}/onap-aai-event-client/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-aai-esr-gui'] = ('{}/onap-aai-esr-gui/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-aai-esr-server'] = ('{}/onap-aai-esr-server/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-apps'] = ('{}/onap-ccsdk-apps/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-dashboard'] = ('{}/onap-ccsdk-dashboard/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-ccsdk-platform-plugins'] = (
+ '{}/onap-ccsdk-platform-plugins/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-logging-analytics'] = ('{}/onap-logging-analytics/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-logging-analytics-pomba-pomba-audit-common'] = (
+ '{}/onap-logging-analytics-pomba-pomba-audit-common/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-modeling-toscaparsers'] = (
+ '{}/onap-modeling-toscaparsers/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-msb-discovery'] = ('{}/onap-msb-discovery/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-msb-java-sdk'] = ('{}/onap-msb-java-sdk/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-msb-swagger-sdk'] = ('{}/onap-msb-swagger-sdk/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-multicloud-azure'] = ('{}/onap-multicloud-azure/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-multicloud-k8s'] = ('{}/onap-multicloud-k8s/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-music-distributed-kv-store'] = (
+ '{}/onap-music-distributed-kv-store/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-oparent-cia'] = ('{}/onap-oparent-cia/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-osa'] = ('{}/onap-osa/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-sdc-sdc-distribution-client'] = (
+ '{}/onap-sdc-sdc-distribution-client/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-sdc-sdc-workflow-designer'] = (
+ '{}/onap-sdc-sdc-workflow-designer/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-sdc-sdc-tosca'] = ('{}/onap-sdc-sdc-tosca/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-sdc-sdc-docker-base'] = ('{}/onap-sdc-sdc-docker-base/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-so-libs'] = ('{}/onap-so-libs/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-vfc-nfvo-driver-vnfm-svnfm'] = (
+ '{}/onap-vfc-nfvo-driver-vnfm-svnfm/en/%s'.format(doc_url) % branch, None)
linkcheck_ignore = [
'http://localhost',
+ 'https://example.com',
+ 'about:config',
+ # this URL is not directly reachable and must be configured in the system hosts file.
+ 'https://portal.api.simpledemo.onap.org:30225/ONAPPORTAL/login.htm',
+ # anchor issues
+ 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#.*',
+ 'https://docs.linuxfoundation.org/docs/communitybridge/easycla/contributors/contribute-to-a-gerrit-project#.*',
+ 'https://docs.onap.org/projects/onap-integration/en/latest/docs_robot.html#docs-robot',
+ 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#docs-usecases-release',
+ 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases.html#docs-usecases',
+ 'https://docs.onap.org/projects/onap-integration/en/latest/usecases/release_non_functional_requirements.html#release-non-functional-requirements',
]
-intersphinx_mapping = {}
html_last_updated_fmt = '%d-%b-%y %H:%M'
-autosectionlabel_maxdepth = 2
def setup(app):
- app.add_stylesheet("css/ribbon.css")
+ app.add_css_file("css/ribbon.css")
+
+
+needs_extra_options = {
+ "target": directives.unchanged,
+ "keyword": directives.unchanged,
+ "introduced": directives.unchanged,
+ "updated": directives.unchanged,
+ "impacts": directives.unchanged,
+ "validation_mode": directives.unchanged,
+ "validated_by": directives.unchanged,
+ "test": directives.unchanged,
+ "test_case": directives.unchanged,
+ "test_file": directives.unchanged,
+ "notes": directives.unchanged,
+}
+
+needs_id_regex = "^[A-Z0-9]+-[A-Z0-9]+"
+needs_id_required = True
+needs_title_optional = True
+
+needs_template_collapse = """
+.. _{{id}}:
+
+{% if hide == false -%}
+.. role:: needs_tag
+.. role:: needs_status
+.. role:: needs_type
+.. role:: needs_id
+.. role:: needs_title
+
+.. rst-class:: need
+.. rst-class:: need_{{type_name}}
+
+.. container:: need
+
+ `{{id}}` - {{content|indent(4)}}
+
+ .. container:: toggle
+
+ .. container:: header
+
+ Details
+
+{% if status and status|upper != "NONE" and not hide_status %} | status: :needs_status:`{{status}}`{% endif %}
+{% if tags and not hide_tags %} | tags: :needs_tag:`{{tags|join("` :needs_tag:`")}}`{% endif %}
+{% if keyword %} | keyword: `{{keyword}}` {% endif %}
+{% if target %} | target: `{{target}}` {% endif %}
+{% if introduced %} | introduced: `{{introduced}}` {% endif %}
+{% if updated %} | updated: `{{updated}}` {% endif %}
+{% if impacts %} | impacts: `{{impacts}}` {% endif %}
+{% if validation_mode %} | validation mode: `{{validation_mode}}` {% endif %}
+{% if validated_by %} | validated by: `{{validated_by}}` {% endif %}
+{% if test %} | test: `{{test}}` {% endif %}
+{% if test_case %} | test case: {{test_case}} {% endif %}
+{% if test_file %} | test file: `{{test_file}}` {% endif %}
+{% if notes %} | notes: `{{notes}}` {% endif %}
+ | children: :need_incoming:`{{id}}`
+ | parents: :need_outgoing:`{{id}}`
+{% endif -%}
+"""
diff --git a/docs/development/devtools/devtools.rst b/docs/development/devtools/devtools.rst
index 1e2fd49f..7eb5e064 100644
--- a/docs/development/devtools/devtools.rst
+++ b/docs/development/devtools/devtools.rst
@@ -283,3 +283,52 @@ familiar with the Policy Framework components and test any local changes.
xacml-s3p.rst
distribution-s3p.rst
+Generating Swagger Documentation
+********************************
+The `Policy Parent Integration POM <https://github.com/onap/policy-parent/blob/master/integration/pom.xml>`_ contains a *generateSwaggerDocs* profile. This
+profile can be activated on any module that has a Swagger endopint. When active, this profile creates a tarball in Nexus with the name
+*<project-artifactId>-swagger-docs.tar.gz*. The tarball contains the fillowing files:
+
+.. code-block:: bash
+
+ swagger/swagger.html
+ swagger/swagger.json
+ swagger/swagger.pdf
+
+The profile is activated when:
+
+1. The following property is defined at the top of the *pom.xml* file for a module
+
+ .. code-block:: bash
+
+ <!-- This property triggers generation of the Swagger documents -->
+ <swagger.generation.phase>post-integration-test</swagger.generation.phase>
+
+ See the `CLAMP runtime POM <https://github.com/onap/policy-clamp/blob/master/runtime/pom.xml>`_ for an example of the usage of this property.
+
+2. Unit tests are being executed in the build, in other wirds when the *skipTests* flag is *false*.
+
+You **must** create a unit test in your module that generates the following file:
+
+.. code-block:: bash
+
+ src/test/resources/swagger/swagger.json
+
+Typically, you do this by starting your REST endpoint in a unit test, issuing a REST call to get the Swagger API documentation. The test case below is an example
+of such a test case.
+
+.. code-block:: java
+
+ @Test
+ public void testSwaggerJson() throws Exception {
+ ResponseEntity<String> httpsEntity = getRestTemplate()
+ .getForEntity("https://localhost:" + this.httpsPort + "/restservices/clds/api-doc", String.class);
+ assertThat(httpsEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
+ assertThat(httpsEntity.getBody()).contains("swagger");
+ FileUtils.writeStringToFile(new File("target/swagger/swagger.json"), httpsEntity.getBody(),
+ Charset.defaultCharset());
+ }
+
+See `this unit test case <https://github.com/onap/policy-clamp/blob/master/runtime/src/test/java/org/onap/policy/clamp/clds/it/HttpsItCase.java>`_
+for the full example.
+
diff --git a/docs/xacml/swagger.json b/docs/xacml/swagger.json
index 0bb133b9..1588765d 100644
--- a/docs/xacml/swagger.json
+++ b/docs/xacml/swagger.json
@@ -3,7 +3,7 @@
"info" : {
"description" : "Policy Xacml PDP Service",
"version" : "Swagger Server",
- "title" : "",
+ "title" : "Policy Xacml PDP Service",
"x-component" : "Policy Framework",
"x-planned-retirement-date" : "tbd"
},
@@ -1105,4 +1105,4 @@
}
}
}
-} \ No newline at end of file
+}
diff --git a/integration/pom.xml b/integration/pom.xml
index 5380862d..462d1cf4 100644
--- a/integration/pom.xml
+++ b/integration/pom.xml
@@ -36,6 +36,8 @@
<properties>
<java.version>11</java.version>
+ <!-- NOTE: For RELEASE/SNAPSHOT always set to the project version -->
+ <version.parent.resources>3.4.0-SNAPSHOT</version.parent.resources>
<version.logback>1.2.3</version.logback>
<version.dmaap>1.1.12</version.dmaap>
<version.powermock>2.0.9</version.powermock>
@@ -72,6 +74,12 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>org.onap.policy.parent</groupId>
+ <artifactId>policy-parent-resources</artifactId>
+ <version>${version.parent.resources}</version>
+ </dependency>
+
+ <dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>${version.jakarta-api}</version>
@@ -857,6 +865,162 @@
</pluginManagement>
</build>
</profile>
+ <profile>
+ <id>generateSwaggerDocs</id>
+ <activation>
+ <property>
+ <name>!skipTests</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <!-- Read the swagger.json file and the definition from SwaggerConfig.java; generate
+ a list of .adoc files containing the APIs info in more structured way -->
+ <plugin>
+ <groupId>io.github.swagger2markup</groupId>
+ <artifactId>swagger2markup-maven-plugin</artifactId>
+ <version>1.3.3</version>
+ <dependencies>
+ <dependency>
+ <groupId>io.github.swagger2markup</groupId>
+ <artifactId>swagger2markup-import-files-ext</artifactId>
+ <version>1.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>io.github.swagger2markup</groupId>
+ <artifactId>swagger2markup-spring-restdocs-ext</artifactId>
+ <version>1.3.3</version>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <swaggerInput>${project.build.directory}/swagger/swagger.json</swaggerInput>
+ <outputDir>${project.build.directory}/asciidoc/generated</outputDir>
+ <config>
+ <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
+ </config>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>${swagger.generation.phase}</phase>
+ <goals>
+ <goal>convertSwagger2markup</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack-swagger-asciidoc</id>
+ <phase>${swagger.generation.phase}</phase>
+ <goals>
+ <goal>unpack</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>org.onap.policy.parent</groupId>
+ <artifactId>policy-parent-resources</artifactId>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ </artifactItem>
+ </artifactItems>
+ <includes>asciidoc/**</includes>
+ <outputDirectory>${project.build.directory}</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Run the generated asciidoc through Asciidoctor to generate other documentation
+ types, such as PDFs or HTML5 -->
+ <plugin>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctor-maven-plugin</artifactId>
+ <version>1.5.7.1</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj-pdf</artifactId>
+ <version>1.5.0-alpha.10.1</version>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <sourceDirectory>${project.build.directory}/asciidoc</sourceDirectory>
+ <sourceDocumentName>swagger.adoc</sourceDocumentName>
+ <attributes>
+ <doctype>book</doctype>
+ <toc>left</toc>
+ <toclevels>3</toclevels>
+ <numbered />
+ <hardbreaks />
+ <sectlinks />
+ <sectanchors />
+ <generated>${project.build.directory}/asciidoc/generated</generated>
+ </attributes>
+ </configuration>
+
+ <executions>
+ <execution>
+ <id>output-html</id>
+ <phase>${swagger.generation.phase}</phase>
+ <goals>
+ <goal>process-asciidoc</goal>
+ </goals>
+ <configuration>
+ <backend>html5</backend>
+ <outputDirectory>${project.build.directory}/swagger</outputDirectory>
+ </configuration>
+ </execution>
+ <execution>
+ <id>output-pdf</id>
+ <phase>${swagger.generation.phase}</phase>
+ <goals>
+ <goal>process-asciidoc</goal>
+ </goals>
+ <configuration>
+ <backend>pdf</backend>
+ <outputDirectory>${project.build.directory}/swagger</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Create a tarball for Swagger documents -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.policy.parent</groupId>
+ <artifactId>policy-parent-resources</artifactId>
+ <version>${version.parent.resources}</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>generate-swagger-tar</id>
+ <phase>${swagger.generation.phase}</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>swagger-docs</descriptorRef>
+ </descriptorRefs>
+ <finalName>${project.artifactId}</finalName>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+ </profile>
</profiles>
<build>
diff --git a/pom.xml b/pom.xml
index 25453970..229fc656 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,6 +2,7 @@
============LICENSE_START=======================================================
Copyright (C) 2018 Ericsson. All rights reserved.
Modifications Copyright (C) 2020-2021 AT&T. All rights reserved.
+ Modifications Copyright (C) 2021 Nordix Foundation.
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -36,6 +37,7 @@
</properties>
<modules>
+ <module>resources</module>
<module>integration</module>
</modules>
diff --git a/resources/pom.xml b/resources/pom.xml
new file mode 100644
index 00000000..802e93fd
--- /dev/null
+++ b/resources/pom.xml
@@ -0,0 +1,32 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2021 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.
+ ============LICENSE_END=========================================================
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.policy.parent</groupId>
+ <artifactId>policy-parent</artifactId>
+ <version>3.4.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>policy-parent-resources</artifactId>
+ <description>Resources used in builds</description>
+ <packaging>jar</packaging>
+</project>
diff --git a/resources/src/main/resources/asciidoc/swagger.adoc b/resources/src/main/resources/asciidoc/swagger.adoc
new file mode 100644
index 00000000..e2543364
--- /dev/null
+++ b/resources/src/main/resources/asciidoc/swagger.adoc
@@ -0,0 +1,4 @@
+include::{generated}/overview.adoc[]
+include::{generated}/paths.adoc[]
+include::{generated}/security.adoc[]
+include::{generated}/definitions.adoc[]
diff --git a/resources/src/main/resources/assemblies/swagger-docs.xml b/resources/src/main/resources/assemblies/swagger-docs.xml
new file mode 100644
index 00000000..1a1934f3
--- /dev/null
+++ b/resources/src/main/resources/assemblies/swagger-docs.xml
@@ -0,0 +1,40 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2021 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=========================================================
+-->
+
+<assembly>
+ <id>swagger-docs</id>
+ <formats>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>${project.build.directory}/swagger
+ </directory>
+ <includes>
+ <include>*.json</include>
+ <include>*.html</include>
+ <include>*.pdf</include>
+ </includes>
+ <outputDirectory>${file.separator}swagger</outputDirectory>
+ <lineEnding>unix</lineEnding>
+ </fileSet>
+ </fileSets>
+</assembly>