diff options
Diffstat (limited to 'northbound/asdcApi')
20 files changed, 5005 insertions, 0 deletions
diff --git a/northbound/asdcApi/.gitignore b/northbound/asdcApi/.gitignore new file mode 100755 index 000000000..b73caf31e --- /dev/null +++ b/northbound/asdcApi/.gitignore @@ -0,0 +1,34 @@ +#####standard .git ignore entries##### + +## IDE Specific Files ## +org.eclipse.core.resources.prefs +.classpath +.project +.settings +.idea +.externalToolBuilders +maven-eclipse.xml +workspace + +## Compilation Files ## +*.class +**/target +target +target-ide +MANIFEST.MF + +## Misc Ignores (OS specific etc) ## +bin/ +dist +*~ +*.ipr +*.iml +*.iws +classes +out/ +.DS_STORE +.metadata + +## Folders which contain auto generated source code ## +yang-gen-config +yang-gen-sal diff --git a/northbound/asdcApi/installer/pom.xml b/northbound/asdcApi/installer/pom.xml new file mode 100755 index 000000000..bbdeb0cba --- /dev/null +++ b/northbound/asdcApi/installer/pom.xml @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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.ccsdk.parent</groupId> + <artifactId>odlparent-lite</artifactId> + <version>2.1.0</version> + <relativePath/> + </parent> + + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi-installer</artifactId> + <version>1.1.1-SNAPSHOT</version> + <packaging>pom</packaging> + + <name>ccsdk-sli-northbound :: asdcApi :: ${project.artifactId}</name> + + <properties> + <application.name>ccsdk-asdcApi</application.name> + <features.boot>${application.name}</features.boot> + <features.repositories>mvn:org.onap.ccsdk.sli.northbound/${features.boot}/${project.version}/xml/features</features.repositories> + <include.transitive.dependencies>false</include.transitive.dependencies> + </properties> + + <dependencies> + + <dependency> + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi-provider</artifactId> + <version>${project.version}</version> + </dependency> + + + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.6</version> + <executions> + <execution> + <id>maven-repo-zip</id> + <goals> + <goal>single</goal> + </goals> + <phase>package</phase> + <configuration> + <attach>true</attach> + <finalName>stage/${application.name}-${project.version}</finalName> + <descriptors> + <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> + </descriptors> + <appendAssemblyId>true</appendAssemblyId> + </configuration> + </execution> + <execution> + <id>installer-zip</id> + <goals> + <goal>single</goal> + </goals> + <phase>package</phase> + <configuration> + <attach>true</attach> + <finalName>${application.name}-${project.version}-installer</finalName> + <descriptors> + <descriptor>src/assembly/assemble_installer_zip.xml</descriptor> + </descriptors> + <appendAssemblyId>false</appendAssemblyId> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-dependencies</id> + <goals> + <goal>copy-dependencies</goal> + </goals> + <phase>prepare-package</phase> + <configuration> + <transitive>false</transitive> + <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> + <overWriteReleases>false</overWriteReleases> + <overWriteSnapshots>true</overWriteSnapshots> + <overWriteIfNewer>true</overWriteIfNewer> + <useRepositoryLayout>true</useRepositoryLayout> + <addParentPoms>false</addParentPoms> + <copyPom>false</copyPom> + <includeGroupIds>org.onap.ccsdk.sli.northbound</includeGroupIds> + <scope>provided</scope> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <version>2.6</version> + <executions> + <execution> + <id>copy-version</id> + <goals> + <goal>copy-resources</goal> + </goals><!-- here the phase you need --> + <phase>validate</phase> + <configuration> + <outputDirectory>${basedir}/target/stage</outputDirectory> + <resources> + <resource> + <directory>src/main/resources/scripts</directory> + <includes> + <include>install-feature.sh</include> + </includes> + <filtering>true</filtering> + </resource> + </resources> + </configuration> + </execution> + + </executions> + </plugin> + + </plugins> + </build> +</project> diff --git a/northbound/asdcApi/installer/src/assembly/assemble_installer_zip.xml b/northbound/asdcApi/installer/src/assembly/assemble_installer_zip.xml new file mode 100644 index 000000000..3bed4b5ef --- /dev/null +++ b/northbound/asdcApi/installer/src/assembly/assemble_installer_zip.xml @@ -0,0 +1,59 @@ +<!-- + ============LICENSE_START======================================================= + openECOMP : SDN-C + ================================================================================ + Copyright (C) 2017 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========================================================= + --> + +<!-- Defines how we build the .zip file which is our distribution. --> + +<assembly + xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> + <id>installer_zip</id> + <formats> + <format>zip</format> + </formats> + + <!-- we want "system" and related files right at the root level + as this file is suppose to be unzip on top of a karaf + distro. --> + <includeBaseDirectory>false</includeBaseDirectory> + + <fileSets> + <fileSet> + <directory>target/stage/</directory> + <outputDirectory>${application.name}</outputDirectory> + <fileMode>755</fileMode> + <includes> + <include>*.sh</include> + </includes> + </fileSet> + <fileSet> + <directory>target/stage/</directory> + <outputDirectory>${application.name}</outputDirectory> + <fileMode>644</fileMode> + <excludes> + <exclude>*.sh</exclude> + </excludes> + </fileSet> + </fileSets> + + + +</assembly> diff --git a/northbound/asdcApi/installer/src/assembly/assemble_mvnrepo_zip.xml b/northbound/asdcApi/installer/src/assembly/assemble_mvnrepo_zip.xml new file mode 100644 index 000000000..479896182 --- /dev/null +++ b/northbound/asdcApi/installer/src/assembly/assemble_mvnrepo_zip.xml @@ -0,0 +1,47 @@ +<!-- + ============LICENSE_START======================================================= + openECOMP : SDN-C + ================================================================================ + Copyright (C) 2017 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========================================================= + --> + +<!-- Defines how we build the .zip file which is our distribution. --> + +<assembly + xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> + <id>repo</id> + <formats> + <format>zip</format> + </formats> + + <!-- we want "system" and related files right at the root level + as this file is suppose to be unzip on top of a karaf + distro. --> + <includeBaseDirectory>false</includeBaseDirectory> + + <fileSets> + <fileSet> + <directory>target/assembly/</directory> + <outputDirectory>.</outputDirectory> + <excludes> + </excludes> + </fileSet> + </fileSets> + +</assembly> diff --git a/northbound/asdcApi/installer/src/main/resources/scripts/install-feature.sh b/northbound/asdcApi/installer/src/main/resources/scripts/install-feature.sh new file mode 100644 index 000000000..cee4a4952 --- /dev/null +++ b/northbound/asdcApi/installer/src/main/resources/scripts/install-feature.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 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========================================================= +### + +ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} +ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client} +INSTALLERDIR=$(dirname $0) + +REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip + +if [ -f ${REPOZIP} ] +then + unzip -d ${ODL_HOME} ${REPOZIP} +else + echo "ERROR : repo zip ($REPOZIP) not found" + exit 1 +fi + +${ODL_KARAF_CLIENT} feature:repo-add ${features.repositories} +${ODL_KARAF_CLIENT} feature:install ${features.boot} diff --git a/northbound/asdcApi/model/pom.xml b/northbound/asdcApi/model/pom.xml new file mode 100755 index 000000000..53fed3587 --- /dev/null +++ b/northbound/asdcApi/model/pom.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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.ccsdk.parent</groupId> + <artifactId>binding-parent</artifactId> + <version>2.1.0</version> + <relativePath/> + </parent> + + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi-model</artifactId> + <version>1.1.1-SNAPSHOT</version> + <packaging>bundle</packaging> + + <name>ccsdk-sli-northbound :: asdcApi :: ${project.artifactId}</name> + + <properties> + <ccsdk.sli.northbound.version>${project.version}</ccsdk.sli.northbound.version> + </properties> + + <dependencies> + + <dependency> + <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId> + <artifactId>rfc6991</artifactId> + </dependency> + + + </dependencies> +</project> diff --git a/northbound/asdcApi/model/src/main/resources/asdc-api.20170201.json b/northbound/asdcApi/model/src/main/resources/asdc-api.20170201.json new file mode 100644 index 000000000..7bf27da82 --- /dev/null +++ b/northbound/asdcApi/model/src/main/resources/asdc-api.20170201.json @@ -0,0 +1,3254 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0" + }, + "basePath": "/restconf", + "paths": { + "/config": { + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "**(config)artifacts", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API(config)artifacts-TOP" + } + }, + { + "in": "body", + "name": "**(config)vf-license-model-versions", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model-versions-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)ASDC-API_modulePOST" + } + } + }, + "description": "SDC Interface", + "operationId": "POST-ASDC-API_module" + } + }, + "/config/ASDC-API:artifacts": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "operationId": "DELETE-artifacts" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)artifacts" + } + } + }, + "operationId": "GET-artifacts" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "**(config)artifact", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/artifacts(config)artifact-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)artifactsPOST" + } + } + }, + "operationId": "POST-artifacts" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "(config)artifacts", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API(config)artifacts-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API(config)artifacts-TOP" + } + } + }, + "operationId": "PUT-artifacts" + } + }, + "/config/ASDC-API:artifacts/artifact/{artifact-name}/{artifact-version}": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Name of artifact", + "in": "path", + "name": "artifact-name", + "required": true, + "type": "string" + }, + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "operationId": "DELETE-artifact" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Name of artifact", + "in": "path", + "name": "artifact-name", + "required": true, + "type": "string" + }, + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)artifact" + } + } + }, + "operationId": "GET-artifact" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Name of artifact", + "in": "path", + "name": "artifact-name", + "required": true, + "type": "string" + }, + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)artifact", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/artifacts(config)artifact-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/artifacts(config)artifact-TOP" + } + } + }, + "operationId": "PUT-artifact" + } + }, + "/config/ASDC-API:vf-license-model-versions": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "operationId": "DELETE-vf-license-model-versions" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)vf-license-model-versions" + } + } + }, + "operationId": "GET-vf-license-model-versions" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "**(config)vf-license-model-version", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions(config)vf-license-model-version-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)vf-license-model-versionsPOST" + } + } + }, + "operationId": "POST-vf-license-model-versions" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "(config)vf-license-model-versions", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model-versions-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model-versions-TOP" + } + } + }, + "operationId": "PUT-vf-license-model-versions" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "operationId": "DELETE-vf-license-model-version" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)vf-license-model-version" + } + } + }, + "operationId": "GET-vf-license-model-version" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)vf-license-model", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)vf-license-model-versionPOST" + } + } + }, + "operationId": "POST-vf-license-model-version" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)vf-license-model-version", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions(config)vf-license-model-version-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions(config)vf-license-model-version-TOP" + } + } + }, + "operationId": "PUT-vf-license-model-version" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-vf-license-model" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)vf-license-model" + } + } + }, + "description": "xxxx", + "operationId": "GET-vf-license-model" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)feature-group-list", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)vf-license-modelPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-vf-license-model" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)vf-license-model", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-vf-license-model" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-feature-group-list" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)feature-group-list" + } + } + }, + "description": "xxxx", + "operationId": "GET-feature-group-list" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)feature-group", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)feature-group-listPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-feature-group-list" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)feature-group-list", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-feature-group-list" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-feature-group" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)feature-group" + } + } + }, + "description": "xxxx", + "operationId": "GET-feature-group" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)license-key-group-list", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list-TOP" + } + }, + { + "in": "body", + "name": "**(config)entitlement-pool-list", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)feature-groupPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-feature-group" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)feature-group", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-feature-group" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-entitlement-pool-list" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)entitlement-pool-list" + } + } + }, + "description": "xxxx", + "operationId": "GET-entitlement-pool-list" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)entitlement-pool", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)entitlement-pool-listPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-entitlement-pool-list" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)entitlement-pool-list", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-entitlement-pool-list" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-entitlement-pool" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)entitlement-pool" + } + } + }, + "description": "xxxx", + "operationId": "GET-entitlement-pool" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)threshold-value", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value-TOP" + } + }, + { + "in": "body", + "name": "**(config)time", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time-TOP" + } + }, + { + "in": "body", + "name": "**(config)operational-scope", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope-TOP" + } + }, + { + "in": "body", + "name": "**(config)entitlement-metric", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric-TOP" + } + }, + { + "in": "body", + "name": "**(config)aggregation-function", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)entitlement-poolPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-entitlement-pool" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)entitlement-pool", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-entitlement-pool" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/aggregation-function": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-aggregation-function" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)aggregation-function" + } + } + }, + "description": "xxxx", + "operationId": "GET-aggregation-function" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)aggregation-function", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-aggregation-function" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/entitlement-metric": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-entitlement-metric" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)entitlement-metric" + } + } + }, + "description": "xxxx", + "operationId": "GET-entitlement-metric" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)entitlement-metric", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-entitlement-metric" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/operational-scope": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-operational-scope" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)operational-scope" + } + } + }, + "description": "xxxx", + "operationId": "GET-operational-scope" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)operational-scope", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-operational-scope" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/threshold-value": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-threshold-value" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)threshold-value" + } + } + }, + "description": "xxxx", + "operationId": "GET-threshold-value" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)threshold-value", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-threshold-value" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool/time": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-time" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)time" + } + } + }, + "description": "xxxx", + "operationId": "GET-time" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)time", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-time" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-license-key-group-list" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)license-key-group-list" + } + } + }, + "description": "xxxx", + "operationId": "GET-license-key-group-list" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)license-key-group", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)license-key-group-listPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-license-key-group-list" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)license-key-group-list", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-license-key-group-list" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-license-key-group" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)license-key-group" + } + } + }, + "description": "xxxx", + "operationId": "GET-license-key-group" + }, + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "**(config)operational-scope", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)license-key-groupPOST" + } + } + }, + "description": "xxxx", + "operationId": "POST-license-key-group" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)license-key-group", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-license-key-group" + } + }, + "/config/ASDC-API:vf-license-model-versions/vf-license-model-version/{artifact-version}/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group/operational-scope": { + "delete": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified" + } + }, + "description": "xxxx", + "operationId": "DELETE-operational-scope" + }, + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(config)operational-scope" + } + } + }, + "description": "xxxx", + "operationId": "GET-operational-scope" + }, + "put": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "description": "Version of artifact", + "in": "path", + "name": "artifact-version", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "(config)operational-scope", + "required": false, + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope-TOP" + } + } + }, + "description": "xxxx", + "operationId": "PUT-operational-scope" + } + }, + "/operational/ASDC-API:artifacts": { + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(operational)artifacts" + } + } + }, + "operationId": "GET-artifacts" + } + }, + "/operational/ASDC-API:vf-license-model-versions": { + "get": { + "produces": [ + "application/json", + "application/xml" + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(operational)vf-license-model-versions" + } + } + }, + "operationId": "GET-vf-license-model-versions" + } + }, + "/operations/ASDC-API:vf-license-model-update": { + "post": { + "consumes": [ + "application/json", + "application/xml" + ], + "produces": [ + "application/json", + "application/xml" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "required": false, + "schema": { + "$ref": "#/definitions/(vf-license-model-update)input-TOP" + } + } + ], + "responses": { + "200": { + "description": "No response was specified", + "schema": { + "$ref": "#/definitions/(vf-license-model-update)output-TOP" + } + } + }, + "operationId": "vf-license-model-update" + } + } + }, + "definitions": { + "(config)ASDC-API_modulePOST": { + "properties": { + "artifacts": { + "items": { + "$ref": "#/definitions/ASDC-API(config)artifacts" + }, + "type": "object" + }, + "vf-license-model-versions": { + "items": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model-versions" + }, + "type": "object" + } + }, + "type": "object" + }, + "(config)aggregation-functionPOST": { + "properties": { + "other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)artifactPOST": { + "properties": { + "artifact-name": { + "$ref": "#/definitions/Optional.empty", + "description": "Name of artifact" + }, + "artifact-version": { + "$ref": "#/definitions/Optional.empty", + "description": "Version of artifact" + } + }, + "type": "object" + }, + "(config)artifactsPOST": { + "properties": { + "artifact": { + "items": { + "$ref": "#/definitions/ASDC-API/artifacts(config)artifact" + }, + "type": "array" + } + }, + "type": "object" + }, + "(config)entitlement-metricPOST": { + "properties": { + "other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)entitlement-pool-listPOST": { + "properties": { + "entitlement-pool": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool" + }, + "type": "array" + } + }, + "type": "object" + }, + "(config)entitlement-poolPOST": { + "properties": { + "aggregation-function": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function" + }, + "type": "object" + }, + "description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "entitlement-metric": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric" + }, + "type": "object" + }, + "entitlement-pool-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "increments": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "manufacturer-reference-number": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "operational-scope": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope" + }, + "type": "object" + }, + "threshold-value": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value" + }, + "type": "object" + }, + "time": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time" + }, + "type": "object" + } + }, + "type": "object" + }, + "(config)feature-group-listPOST": { + "properties": { + "feature-group": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list(config)feature-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "(config)feature-groupPOST": { + "properties": { + "att-part-number": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "entitlement-pool-list": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list" + }, + "type": "object" + }, + "feature-group-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "license-key-group-list": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group(config)license-key-group-list" + }, + "type": "object" + }, + "name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)license-key-group-listPOST": { + "properties": { + "license-key-group": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group" + }, + "type": "array" + }, + "name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)license-key-groupPOST": { + "properties": { + "description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "license-key-group-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "operational-scope": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope" + }, + "type": "object" + }, + "type": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)operational-scopePOST": { + "properties": { + "other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)threshold-valuePOST": { + "properties": { + "unit": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)timePOST": { + "properties": { + "other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(config)vf-license-model-versionPOST": { + "properties": { + "artifact-name": { + "$ref": "#/definitions/Optional.empty", + "description": "Name of artifact" + }, + "artifact-version": { + "$ref": "#/definitions/Optional.empty", + "description": "Version of artifact" + }, + "vf-license-model": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model" + }, + "type": "object" + } + }, + "type": "object" + }, + "(config)vf-license-model-versionsPOST": { + "properties": { + "vf-license-model-version": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions(config)vf-license-model-version" + }, + "type": "array" + } + }, + "type": "object" + }, + "(config)vf-license-modelPOST": { + "properties": { + "feature-group-list": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model(config)feature-group-list" + }, + "type": "object" + }, + "vendor-name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "vf-id": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "(vf-license-model-update)input": { + "properties": { + "ASDC-API:artifact-name": { + "$ref": "#/definitions/Optional.empty", + "description": "Name of artifact" + }, + "ASDC-API:artifact-version": { + "$ref": "#/definitions/Optional.empty", + "description": "Version of artifact" + }, + "ASDC-API:vf-license-model": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model" + }, + "type": "object" + } + }, + "type": "object" + }, + "(vf-license-model-update)input-TOP": { + "properties": { + "ASDC-API:input": { + "items": { + "$ref": "#/definitions/(vf-license-model-update)input" + }, + "type": "object" + } + }, + "type": "object" + }, + "(vf-license-model-update)output": { + "properties": { + "ASDC-API:asdc-api-response-code": { + "$ref": "#/definitions/Optional.empty", + "description": "Code indicating success/failure" + }, + "ASDC-API:asdc-api-response-text": { + "$ref": "#/definitions/Optional.empty", + "description": "Text indicating reason for failure" + } + }, + "type": "object" + }, + "(vf-license-model-update)output-TOP": { + "properties": { + "ASDC-API:output": { + "items": { + "$ref": "#/definitions/(vf-license-model-update)output" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API(config)artifacts": { + "properties": { + "ASDC-API:artifact": { + "items": { + "$ref": "#/definitions/ASDC-API/artifacts(config)artifact" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API(config)artifacts-TOP": { + "properties": { + "ASDC-API:artifacts": { + "items": { + "$ref": "#/definitions/ASDC-API(config)artifacts" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API(config)vf-license-model": { + "properties": { + "ASDC-API:feature-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model(config)feature-group-list" + }, + "type": "object" + }, + "ASDC-API:vendor-name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:vf-id": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API(config)vf-license-model-TOP": { + "properties": { + "ASDC-API:vf-license-model": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API(config)vf-license-model-versions": { + "properties": { + "ASDC-API:vf-license-model-version": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions(config)vf-license-model-version" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API(config)vf-license-model-versions-TOP": { + "properties": { + "ASDC-API:vf-license-model-versions": { + "items": { + "$ref": "#/definitions/ASDC-API(config)vf-license-model-versions" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API(operational)artifacts": { + "type": "object" + }, + "ASDC-API(operational)artifacts-TOP": { + "properties": { + "ASDC-API:artifacts": { + "items": { + "$ref": "#/definitions/ASDC-API(operational)artifacts" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API(operational)vf-license-model-versions": { + "type": "object" + }, + "ASDC-API(operational)vf-license-model-versions-TOP": { + "properties": { + "ASDC-API:vf-license-model-versions": { + "items": { + "$ref": "#/definitions/ASDC-API(operational)vf-license-model-versions" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/artifacts(config)artifact": { + "properties": { + "ASDC-API:artifact-name": { + "$ref": "#/definitions/Optional.empty", + "description": "Name of artifact" + }, + "ASDC-API:artifact-version": { + "$ref": "#/definitions/Optional.empty", + "description": "Version of artifact" + } + }, + "type": "object" + }, + "ASDC-API/artifacts(config)artifact-TOP": { + "properties": { + "ASDC-API:artifact": { + "items": { + "$ref": "#/definitions/ASDC-API/artifacts(config)artifact" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model(config)feature-group-list": { + "properties": { + "ASDC-API:feature-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list(config)feature-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model(config)feature-group-list-TOP": { + "properties": { + "ASDC-API:feature-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model(config)feature-group-list" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions(config)vf-license-model-version": { + "properties": { + "ASDC-API:artifact-name": { + "$ref": "#/definitions/Optional.empty", + "description": "Name of artifact" + }, + "ASDC-API:artifact-version": { + "$ref": "#/definitions/Optional.empty", + "description": "Version of artifact" + }, + "ASDC-API:vf-license-model": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions(config)vf-license-model-version-TOP": { + "properties": { + "ASDC-API:vf-license-model-version": { + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions(config)vf-license-model-version" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model": { + "properties": { + "ASDC-API:feature-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list" + }, + "type": "object" + }, + "ASDC-API:vendor-name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:vf-id": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model-TOP": { + "properties": { + "ASDC-API:vf-license-model": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version(config)vf-license-model" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list": { + "properties": { + "ASDC-API:feature-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list-TOP": { + "properties": { + "ASDC-API:feature-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model(config)feature-group-list" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group": { + "properties": { + "ASDC-API:att-part-number": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:entitlement-pool-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list" + }, + "type": "object" + }, + "ASDC-API:feature-group-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:license-key-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list" + }, + "type": "object" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group-TOP": { + "properties": { + "ASDC-API:feature-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list(config)feature-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list": { + "properties": { + "ASDC-API:entitlement-pool": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list-TOP": { + "properties": { + "ASDC-API:entitlement-pool-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list": { + "properties": { + "ASDC-API:license-key-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group" + }, + "type": "array" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list-TOP": { + "properties": { + "ASDC-API:license-key-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group(config)license-key-group-list" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool": { + "properties": { + "ASDC-API:aggregation-function": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function" + }, + "type": "object" + }, + "ASDC-API:description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:entitlement-metric": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric" + }, + "type": "object" + }, + "ASDC-API:entitlement-pool-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:increments": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:manufacturer-reference-number": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope" + }, + "type": "object" + }, + "ASDC-API:threshold-value": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value" + }, + "type": "object" + }, + "ASDC-API:time": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool-TOP": { + "properties": { + "ASDC-API:entitlement-pool": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function-TOP": { + "properties": { + "ASDC-API:aggregation-function": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric-TOP": { + "properties": { + "ASDC-API:entitlement-metric": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope-TOP": { + "properties": { + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value": { + "properties": { + "ASDC-API:unit": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value-TOP": { + "properties": { + "ASDC-API:threshold-value": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time-TOP": { + "properties": { + "ASDC-API:time": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group": { + "properties": { + "ASDC-API:description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:license-key-group-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope" + }, + "type": "object" + }, + "ASDC-API:type": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group-TOP": { + "properties": { + "ASDC-API:license-key-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope-TOP": { + "properties": { + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model-versions/vf-license-model-version/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list(config)feature-group": { + "properties": { + "ASDC-API:att-part-number": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:entitlement-pool-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list" + }, + "type": "object" + }, + "ASDC-API:feature-group-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:license-key-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group(config)license-key-group-list" + }, + "type": "object" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list(config)feature-group-TOP": { + "properties": { + "ASDC-API:feature-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list(config)feature-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list": { + "properties": { + "ASDC-API:entitlement-pool": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list-TOP": { + "properties": { + "ASDC-API:entitlement-pool-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group(config)entitlement-pool-list" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group(config)license-key-group-list": { + "properties": { + "ASDC-API:license-key-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group" + }, + "type": "array" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group(config)license-key-group-list-TOP": { + "properties": { + "ASDC-API:license-key-group-list": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group(config)license-key-group-list" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool": { + "properties": { + "ASDC-API:aggregation-function": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function" + }, + "type": "object" + }, + "ASDC-API:description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:entitlement-metric": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric" + }, + "type": "object" + }, + "ASDC-API:entitlement-pool-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:increments": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:manufacturer-reference-number": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope" + }, + "type": "object" + }, + "ASDC-API:threshold-value": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value" + }, + "type": "object" + }, + "ASDC-API:time": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool-TOP": { + "properties": { + "ASDC-API:entitlement-pool": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list(config)entitlement-pool" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function-TOP": { + "properties": { + "ASDC-API:aggregation-function": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)aggregation-function" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric-TOP": { + "properties": { + "ASDC-API:entitlement-metric": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)entitlement-metric" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope-TOP": { + "properties": { + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)operational-scope" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value": { + "properties": { + "ASDC-API:unit": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value-TOP": { + "properties": { + "ASDC-API:threshold-value": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)threshold-value" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time-TOP": { + "properties": { + "ASDC-API:time": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/entitlement-pool-list/entitlement-pool(config)time" + }, + "type": "object" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group": { + "properties": { + "ASDC-API:description": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:license-key-group-uuid": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:name": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope" + }, + "type": "object" + }, + "ASDC-API:type": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group-TOP": { + "properties": { + "ASDC-API:license-key-group": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list(config)license-key-group" + }, + "type": "array" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope": { + "properties": { + "ASDC-API:other": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + }, + "ASDC-API:value": { + "$ref": "#/definitions/Optional.empty", + "description": "xxxx" + } + }, + "type": "object" + }, + "ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope-TOP": { + "properties": { + "ASDC-API:operational-scope": { + "description": "xxxx", + "items": { + "$ref": "#/definitions/ASDC-API/vf-license-model/feature-group-list/feature-group/license-key-group-list/license-key-group(config)operational-scope" + }, + "type": "object" + } + }, + "type": "object" + }, + "unique_empty_identifier": {} + } +} diff --git a/northbound/asdcApi/model/src/main/yang/ASDC-API.yang b/northbound/asdcApi/model/src/main/yang/ASDC-API.yang new file mode 100755 index 000000000..12cfb9a56 --- /dev/null +++ b/northbound/asdcApi/model/src/main/yang/ASDC-API.yang @@ -0,0 +1,63 @@ + +module ASDC-API { + yang-version "1"; + + namespace "org:onap:ccsdk"; + + prefix asdc-api; + + import asdc-api-common { prefix asdc-api-common; } + + + import asdc-license-model { prefix asdc-license-model; } + + import ietf-inet-types { + prefix inet; + revision-date "2013-07-15"; + } + + organization + "ONAP"; + + contact + "Dan Timoney"; + + description + "SDC Interface"; + + revision 2017-02-01 { + description "database definitions"; + } + + // Containers + container artifacts { + list artifact { + key "artifact-name artifact-version"; + + uses asdc-api-common:artifact-fields; + } + } + + + + container vf-license-model-versions { + list vf-license-model-version { + key artifact-version; + uses asdc-api-common:artifact-fields; + uses asdc-license-model:vf-license-model-grouping; + } + } + + + // RPCs + + rpc vf-license-model-update { + input { + uses asdc-api-common:artifact-fields; + uses asdc-license-model:vf-license-model-grouping; + } + output { + uses asdc-api-common:asdc-api-response; + } + } +} diff --git a/northbound/asdcApi/model/src/main/yang/asdc-api-common.yang b/northbound/asdcApi/model/src/main/yang/asdc-api-common.yang new file mode 100755 index 000000000..1531b7b30 --- /dev/null +++ b/northbound/asdcApi/model/src/main/yang/asdc-api-common.yang @@ -0,0 +1,53 @@ + +module asdc-api-common { + yang-version "1"; + + // Use same namespace defined for file upload in 15.12 + namespace "org:onap:ccsdk:sli:northbound:asdcapi:common"; + + prefix asdcapi; + + organization + "ONAP"; + + contact + "Dan Timoney"; + + description + "ASDC/SDN-C API common data"; + + revision 2017-02-01 { + description "Initial release"; + } + + + + // Groupings + + grouping artifact-fields { + leaf artifact-name { + type string; + description "Name of artifact"; + } + + leaf artifact-version { + type string; + description "Version of artifact"; + } + } + + grouping asdc-api-response { + leaf asdc-api-response-code { + type string; + description "Code indicating success/failure"; + } + + leaf asdc-api-response-text { + type string; + description "Text indicating reason for failure"; + } + } + + + +} diff --git a/northbound/asdcApi/model/src/main/yang/asdc-license-model.yang b/northbound/asdcApi/model/src/main/yang/asdc-license-model.yang new file mode 100755 index 000000000..33f383569 --- /dev/null +++ b/northbound/asdcApi/model/src/main/yang/asdc-license-model.yang @@ -0,0 +1,369 @@ +module asdc-license-model { + + namespace "http://xmlns.onap.org/asdc/license-model/1.0"; + prefix le; + organization "onap"; + contact "asdc"; + description "schema for both vendor license and VF license models"; + revision 2016-04-27 { + description "xxxx"; + reference "xxxx"; + } + + container vendor-license-model { + description "xxxx"; + leaf vendor-name { + type string{ + length "1..200"; + } + description "xxxx"; + } + uses entitlement-pools; + uses license-key-groups; + } + + grouping entitlement-pools { + description "xxxx"; + container entitlement-pool-list { + description "xxxx"; + uses entitlement-pool; + } + } + + grouping entitlement-pool { + description "xxxx"; + list entitlement-pool { + description "xxxx"; + leaf entitlement-pool-uuid { + type string; + description "xxxx"; + } + leaf name { + type string{ + length "1..120"; + } + description "xxxx"; + } + leaf description { + type string{ + length "1..1000"; + } + description "xxxx"; + } + leaf manufacturer-reference-number { + type string{ + length "1..100"; + } + description "xxxx"; + } + uses operational-scope; + uses threshold-value; + uses entitlement-metric; + leaf increments { + type string{ + length "1..120"; + } + description "xxxx"; + } + uses aggregation-function; + uses time; + } + } + + grouping operational-scope { + description "xxxx"; + container operational-scope { + description "xxxx"; + leaf value { + type enumeration { + enum "Network_Wide"{ + description "xxxx"; + } + enum "Availability_Zone"{ + description "xxxx"; + } + enum "Data_Center"{ + description "xxxx"; + } + enum "Tenant"{ + description "xxxx"; + } + enum "VM"{ + description "xxxx"; + } + enum "CPU"{ + description "xxxx"; + } + enum "Core"{ + description "xxxx"; + } + enum "Other"{ + description "xxxx"; + } + } + description "xxxx"; + } + leaf other { + type string{ + length "1..200"; + } + description "xxxx"; + } + } + } + + grouping threshold-value { + description "xxxx"; + container threshold-value { + description "xxxx"; + leaf value { + type uint32{ + range "0..9999999"; + } //TBD Change to type number + description "xxxx"; + } + leaf unit { + type enumeration { + enum "Absolute"{ + description "xxxx"; + } + enum "Percentage"{ + description "xxxx"; + } + } + description "xxxx"; + } + } + } + + grouping entitlement-metric { + description "xxxx"; + container entitlement-metric { + description "xxxx"; + leaf value { + type enumeration { + enum "Software_Instances_Count"{ + description "xxxx"; + } + enum "CPU"{ + description "xxxx"; + } + enum "Core"{ + description "xxxx"; + } + enum "Trunks"{ + description "xxxx"; + } + enum "User"{ + description "xxxx"; + } + enum "Subscribers"{ + description "xxxx"; + } + enum "Tenants"{ + description "xxxx"; + } + enum "Tokens"{ + description "xxxx"; + } + enum "Seats"{ + description "xxxx"; + } + enum "Units_TB"{ + description "xxxx"; + } + enum "Units_GB"{ + description "xxxx"; + } + enum "Units_MB"{ + description "xxxx"; + } + enum "Other"{ + description "xxxx"; + } + } + description "xxxx"; + } + leaf other { + type string{ + length "1..200"; + } + description "xxxx"; + } + } + } + + grouping aggregation-function { + description "xxxx"; + container aggregation-function { + description "xxxx"; + leaf value { + type enumeration { + enum "Peak"{ + description "xxxx"; + } + enum "Average"{ + description "xxxx"; + } + enum "Other"{ + description "xxxx"; + } + } + description "xxxx"; + } + leaf other { + type string{ + length "1..200"; + } + description "xxxx"; + } + } + } + + grouping time { + description "xxxx"; + container time { + description "xxxx"; + leaf value { + type enumeration { + enum "Hour"{ + description "xxxx"; + } + enum "Day"{ + description "xxxx"; + } + enum "Month"{ + description "xxxx"; + } + enum "Quarter"{ + description "xxxx"; + } + enum "Year"{ + description "xxxx"; + } + enum "Other"{ + description "xxxx"; + } + } + description "xxxx"; + } + leaf other { + type string{ + length "1..200"; + } + description "xxxx"; + } + } + } + + + + grouping license-key-groups { + description "xxxx"; + container license-key-group-list { + description "xxxx"; + leaf name { + type string; + description "xxxx"; + } + uses license-key-group; + } + } + + grouping license-key-group { + description "xxxx"; + list license-key-group { + description "xxxx"; + leaf license-key-group-uuid { + type string; + description "xxxx"; + } + leaf name { + type string{ + length "1..120"; + } + description "xxxx"; + } + leaf description { + type string{ + length "1..1000"; + } + description "xxxx"; + } + uses operational-scope; + leaf type { + type enumeration { + enum "Universal"{ + description "xxxx"; + } + enum "Unique"{ + description "xxxx"; + } + enum "One_Time"{ + description "xxxx"; + } + } + description "xxxx"; + } + } + } + + grouping vf-license-model-grouping { + description "xxxx"; + container vf-license-model { + description "xxxx"; + leaf vf-id { + type string{ + length "1..200"; + } + description "xxxx"; + } + leaf vendor-name { + type string{ + length "1..200"; + } + description "xxxx"; + } + uses feature-groups; + } + } + + grouping feature-groups { + description "xxxx"; + container feature-group-list { + description "xxxx"; + uses feature-group-grouping; + } + } + + grouping feature-group-grouping { + description "xxxx"; + list feature-group { + description "xxxx"; + leaf name{ + type string{ + length "1..120"; + } + description "xxxx"; + } + leaf feature-group-uuid{ + type string; + description "xxxx"; + } + leaf description { + type string{ + length "1..1000"; + } + description "xxxx"; + } + leaf att-part-number { + type string{ + length "1..100"; + } + description "xxxx"; + } + uses entitlement-pools; + uses license-key-groups; + } + } +} diff --git a/northbound/asdcApi/pom.xml b/northbound/asdcApi/pom.xml new file mode 100755 index 000000000..b5cea9931 --- /dev/null +++ b/northbound/asdcApi/pom.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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.ccsdk.parent</groupId> + <artifactId>odlparent-lite</artifactId> + <version>2.1.0</version> + <relativePath/> + </parent> + + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi</artifactId> + <version>1.1.1-SNAPSHOT</version> + <packaging>pom</packaging> + + <name>ccsdk-sli-northbound :: asdcApi</name> + + <modules> + <module>model</module> + <module>provider</module> + <module>installer</module> + </modules> + + <properties> + <ccsdk.sli.northbound.version>${project.version}</ccsdk.sli.northbound.version> + </properties> +</project> diff --git a/northbound/asdcApi/provider/pom.xml b/northbound/asdcApi/provider/pom.xml new file mode 100755 index 000000000..97c4ba9aa --- /dev/null +++ b/northbound/asdcApi/provider/pom.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8"?> +<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.ccsdk.parent</groupId> + <artifactId>binding-parent</artifactId> + <version>2.1.0</version> + <relativePath/> + </parent> + + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi-provider</artifactId> + <version>1.1.1-SNAPSHOT</version> + <packaging>bundle</packaging> + + <name>ccsdk-sli-northbound :: asdcApi :: ${project.artifactId}</name> + + <properties> + <ccsdk.sli.northbound.version>${project.version}</ccsdk.sli.northbound.version> + </properties> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-core-artifacts</artifactId> + <version>${ccsdk.sli.core.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.sli.northbound</groupId> + <artifactId>asdcApi-model</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-binding-api</artifactId> + </dependency> + + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-common-util</artifactId> + </dependency> + + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-common</artifactId> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-provider</artifactId> + </dependency> + + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-test-model</artifactId> + <scope>test</scope> + </dependency> + + + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-binding-broker-impl</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-binding-broker-impl</artifactId> + <type>test-jar</type> + <classifier>tests</classifier> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.testng</groupId> + <artifactId>testng</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>test</scope> + </dependency> + </dependencies> +</project> diff --git a/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiProvider.java b/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiProvider.java new file mode 100644 index 000000000..1a79f8c41 --- /dev/null +++ b/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiProvider.java @@ -0,0 +1,379 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 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.ccsdk.sli.northbound.asdcapi; + +import java.util.Properties; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; +import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; +import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.yang.gen.v1.http.xmlns.onap.org.asdc.license.model._1._0.rev160427.vf.license.model.grouping.VfLicenseModel; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.ASDCAPIService; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.Artifacts; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.ArtifactsBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateInput; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateInputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateOutput; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateOutputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelVersions; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelVersionsBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.artifacts.Artifact; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.artifacts.ArtifactBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.artifacts.ArtifactKey; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.vf.license.model.versions.VfLicenseModelVersion; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.vf.license.model.versions.VfLicenseModelVersionBuilder; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; + +/** + * Defines a base implementation for your provider. This class extends from a helper class + * which provides storage for the most commonly used components of the MD-SAL. Additionally the + * base class provides some basic logging and initialization / clean up methods. + * + * To use this, copy and paste (overwrite) the following method into the TestApplicationProviderModule + * class which is auto generated under src/main/java in this project + * (created only once during first compilation): + * + * <pre> + + @Override + public java.lang.AutoCloseable createInstance() { + + final asdcApiProvider provider = new asdcApiProvider(); + provider.setDataBroker( getDataBrokerDependency() ); + provider.setNotificationService( getNotificationServiceDependency() ); + provider.setRpcRegistry( getRpcRegistryDependency() ); + provider.initialize(); + return new AutoCloseable() { + + @Override + public void close() throws Exception { + //TODO: CLOSE ANY REGISTRATION OBJECTS CREATED USING ABOVE BROKER/NOTIFICATION + //SERVIE/RPC REGISTRY + provider.close(); + } + }; + } + + + </pre> + */ +public class AsdcApiProvider implements AutoCloseable, ASDCAPIService { + + private static final Logger LOG = LoggerFactory.getLogger(AsdcApiProvider.class); + + private static final String ACTIVE_VERSION = "active"; + + private static final String APPLICATION_NAME = "asdcApi"; + + private final ExecutorService executor; + protected DataBroker dataBroker; + protected NotificationPublishService notificationService; + protected RpcProviderRegistry rpcRegistry; + private final AsdcApiSliClient asdcApiSliClient; + + protected BindingAwareBroker.RpcRegistration<ASDCAPIService> rpcRegistration; + + public AsdcApiProvider(final DataBroker dataBroker, + final NotificationPublishService notificationPublishService, + final RpcProviderRegistry rpcProviderRegistry, + final AsdcApiSliClient asdcApiSliClient) { + + LOG.info("Creating provider for {}", APPLICATION_NAME); + executor = Executors.newFixedThreadPool(1); + this.dataBroker = dataBroker; + notificationService = notificationPublishService; + rpcRegistry = rpcProviderRegistry; + this.asdcApiSliClient= asdcApiSliClient; + initialize(); + } + + public void initialize(){ + LOG.info("Initializing {} for {}", this.getClass().getName(), APPLICATION_NAME); + + createContainers(); + + if (rpcRegistration == null) { + if (rpcRegistry != null) { + rpcRegistration = rpcRegistry.addRpcImplementation( + ASDCAPIService.class, this); + LOG.info("Initialization complete for {}", APPLICATION_NAME); + } else { + LOG.warn("Error initializing {} : rpcRegistry unset", APPLICATION_NAME); + } + } + } + + private void createContainers() { + + if (dataBroker != null) { + final WriteTransaction t = dataBroker.newReadWriteTransaction(); + + // Create the vf-model-license-versions and artifacts containers + t.merge(LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(VfLicenseModelVersions.class), + new VfLicenseModelVersionsBuilder().build()); + + t.merge(LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(Artifacts.class), new ArtifactsBuilder().build()); + + + try { + CheckedFuture<Void, TransactionCommitFailedException> checkedFuture = t.submit(); + checkedFuture.get(); + LOG.info("Create Containers succeeded!: "); + + } catch (InterruptedException | ExecutionException e) { + LOG.error("Create Containers Failed: ", e); + } + } else { + LOG.warn("createContainers : cannot find dataBroker to create containers"); + } + } + protected void initializeChild() { + //Override if you have custom initialization intelligence + } + + @Override + public void close() throws Exception { + LOG.info( "Closing provider for " + APPLICATION_NAME); + executor.shutdown(); + rpcRegistration.close(); + LOG.info( "Successfully closed provider for " + APPLICATION_NAME); + } + + protected boolean artifactVersionExists(String aName, String aVersion) { + InstanceIdentifier artifactInstanceId = + InstanceIdentifier.<Artifacts>builder(Artifacts.class) + .child(Artifact.class, new ArtifactKey(aName, aVersion)).build(); + Optional<Artifact> data = null; + try(ReadOnlyTransaction readTx = dataBroker.newReadOnlyTransaction()) { + data = (Optional<Artifact>) readTx.read(LogicalDatastoreType.CONFIGURATION, artifactInstanceId).get(); + } catch (InterruptedException | ExecutionException e) { + LOG.error("Caught Exception reading MD-SAL for ["+aName+","+ aVersion+"] " ,e); + return false; + } + + return data.isPresent(); + } + + protected void addArtifactVersion(String aName, String aVersion) { + + + try { + ArtifactBuilder aBuilder = new ArtifactBuilder(); + + aBuilder.setArtifactName(aName); + aBuilder.setArtifactVersion(aVersion); + + Artifact artifact = aBuilder.build(); + + InstanceIdentifier.InstanceIdentifierBuilder<Artifact> aIdBuilder = InstanceIdentifier + .<Artifacts> builder(Artifacts.class) + .child(Artifact.class, artifact.key()); + + InstanceIdentifier<Artifact> path = aIdBuilder.build(); + + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + + tx.merge(LogicalDatastoreType.CONFIGURATION, path, + artifact); + tx.submit().checkedGet(); + } catch (Exception e) { + LOG.error("Caught exception trying to add artifact entry", e); + } + + } + + + private void applyVfLicenseModelUpdate(VfLicenseModelUpdateInput input) { + + String aName = input.getArtifactName(); + String aVersion = input.getArtifactVersion(); + VfLicenseModel vfLicenseModel = input.getVfLicenseModel(); + + + // Add new version (version = artifact-version) + try { + + VfLicenseModelVersionBuilder vBuilder = new VfLicenseModelVersionBuilder(); + vBuilder.setArtifactName(aName); + vBuilder.setArtifactVersion(aVersion); + vBuilder.setVfLicenseModel(vfLicenseModel); + + VfLicenseModelVersion version = vBuilder.build(); + + InstanceIdentifier.InstanceIdentifierBuilder<VfLicenseModelVersion> versionIdBuilder = InstanceIdentifier + .<VfLicenseModelVersions> builder(VfLicenseModelVersions.class) + .child(VfLicenseModelVersion.class, version.key()); + + InstanceIdentifier<VfLicenseModelVersion> path = versionIdBuilder.build(); + + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + tx.merge(LogicalDatastoreType.CONFIGURATION, path, + version); + tx.submit().checkedGet(); + } catch (Exception e) { + LOG.error( + "Caught exception trying to save entry to MD-SAL", + e); + } + + + // Add "active" version (version = "active") + try { + + VfLicenseModelVersionBuilder vBuilder = new VfLicenseModelVersionBuilder(); + vBuilder.setArtifactName(aName); + vBuilder.setArtifactVersion(ACTIVE_VERSION); + vBuilder.setVfLicenseModel(vfLicenseModel); + + VfLicenseModelVersion version = vBuilder.build(); + InstanceIdentifier.InstanceIdentifierBuilder<VfLicenseModelVersion> versionIdBuilder = InstanceIdentifier + .<VfLicenseModelVersions> builder(VfLicenseModelVersions.class) + .child(VfLicenseModelVersion.class, version.key()); + + InstanceIdentifier<VfLicenseModelVersion> path = versionIdBuilder.build(); + + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + + tx.merge(LogicalDatastoreType.CONFIGURATION, path, + version); + tx.submit().checkedGet(); + } catch (Exception e) { + LOG.error( + "Caught exception trying to save entry to MD-SAL", + e); + } + +} + +@Override +public ListenableFuture<RpcResult<VfLicenseModelUpdateOutput>> vfLicenseModelUpdate(VfLicenseModelUpdateInput input) { + final String svcOperation = "vf-license-model-update"; + + Properties parms = new Properties(); + + LOG.info( svcOperation +" called." ); + + if(input == null ) { + LOG.debug("exiting " +svcOperation+ " because of invalid input"); + return null; + } + + VfLicenseModelUpdateInputBuilder inputBuilder = new VfLicenseModelUpdateInputBuilder(input); + + VfLicenseModelUpdateInput inputVfLic = inputBuilder.build(); + + String errorMessage = "Success"; + String errorCode = "200"; + + // If this artifact already exists, reject this update + if (artifactVersionExists(inputVfLic.getArtifactName(), inputVfLic.getArtifactVersion())) { + errorCode = "409"; + errorMessage = "Artifact version already exists"; + } else { + // Translate input object into SLI-consumable properties + LOG.info("Adding INPUT data for "+svcOperation+" input: " + inputVfLic); + AsdcApiUtil.toProperties(parms, inputVfLic); + + + // Call directed graph + Properties respProps = null; + try + { + if (asdcApiSliClient.hasGraph("ASDC-API", svcOperation , null, "sync")) + { + + try + { + respProps = asdcApiSliClient.execute("ASDC-API", svcOperation, null, "sync", parms); + } + catch (Exception e) + { + LOG.error("Caught exception executing service logic for "+ svcOperation, e); + } + } else { + errorMessage = "No service logic active for ASDC-API: '" + svcOperation + "'"; + errorCode = "503"; + } + } + catch (Exception e) + { + errorCode = "500"; + errorMessage = e.getMessage(); + LOG.error("Caught exception looking for service logic", e); + } + + + if (respProps != null) + { + errorCode = respProps.getProperty("error-code"); + errorMessage = respProps.getProperty("error-message", ""); + } + } + + + if ("200".equals(errorCode)) { + LOG.info("ASDC update succeeded"); + + // Update config tree + applyVfLicenseModelUpdate(inputVfLic); + addArtifactVersion(inputVfLic.getArtifactName(), inputVfLic.getArtifactVersion()); + + } else { + LOG.info("ASDC update failed ("+errorCode+" : "+errorMessage); + } + + // Send response + VfLicenseModelUpdateOutputBuilder respBuilder = new VfLicenseModelUpdateOutputBuilder(); + respBuilder.setAsdcApiResponseCode(errorCode); + if (errorMessage != null && errorMessage.length() > 0) { + respBuilder.setAsdcApiResponseText(errorMessage); + } + + RpcResult<VfLicenseModelUpdateOutput> rpcResult; + + + rpcResult = RpcResultBuilder.<VfLicenseModelUpdateOutput> status(true).withResult(respBuilder.build()).build(); + + + + return Futures.immediateFuture(rpcResult); +} + + +} diff --git a/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiSliClient.java b/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiSliClient.java new file mode 100644 index 000000000..880a2fb76 --- /dev/null +++ b/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiSliClient.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * Modifications Copyright © 2018 IBM. + * ================================================================================ + * 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.ccsdk.sli.northbound.asdcapi; + +import java.util.Properties; + +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class AsdcApiSliClient { + + private static final Logger LOG = LoggerFactory.getLogger(AsdcApiSliClient.class); + + private final SvcLogicService svcLogicService; + + private String ErrorCode = "error-code"; + + public AsdcApiSliClient(final SvcLogicService svcLogicService) { + this.svcLogicService = svcLogicService; + } + + public boolean hasGraph(String module, String rpc, String version, String mode) throws SvcLogicException + { + return svcLogicService.hasGraph(module, rpc, version, mode); + } + + + public Properties execute(String module, String rpc, String version, String mode, Properties parms) + throws SvcLogicException { + + + if (LOG.isDebugEnabled()) + { + LOG.debug("Parameters passed to SLI"); + + for (Object key : parms.keySet()) { + String parmName = (String) key; + String parmValue = parms.getProperty(parmName); + + LOG.debug(parmName+" = "+parmValue); + + } + } + + Properties respProps = svcLogicService.execute(module, rpc, version, mode, parms); + + if (LOG.isDebugEnabled()) + { + LOG.debug("Parameters returned by SLI"); + + for (Object key : respProps.keySet()) { + String parmName = (String) key; + String parmValue = respProps.getProperty(parmName); + + LOG.debug(parmName+" = "+parmValue); + + } + } + + if ("failure".equalsIgnoreCase(respProps.getProperty("SvcLogic.status"))) { + + if (!respProps.containsKey(ErrorCode)) { + respProps.setProperty(ErrorCode, "500"); + } + } else { + if (!respProps.containsKey(ErrorCode)) { + respProps.setProperty(ErrorCode, "200"); + } + } + + + return respProps; + } + +} diff --git a/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiUtil.java b/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiUtil.java new file mode 100644 index 000000000..602b389cb --- /dev/null +++ b/northbound/asdcApi/provider/src/main/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiUtil.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 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.ccsdk.sli.northbound.asdcapi; + +import org.onap.ccsdk.sli.core.sli.provider.MdsalHelper; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.ArtifactsBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateInput; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateInputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelVersionsBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.vf.license.model.versions.VfLicenseModelVersionBuilder; + +public class AsdcApiUtil extends MdsalHelper { + + static { + + // Input objects + + VfLicenseModelUpdateInput i13 = new VfLicenseModelUpdateInputBuilder().build(); + + + // Other builders + ArtifactsBuilder b1 = new ArtifactsBuilder(); + + VfLicenseModelVersionsBuilder b14a = new VfLicenseModelVersionsBuilder(); + VfLicenseModelVersionBuilder b26a = new VfLicenseModelVersionBuilder(); + + + } +} diff --git a/northbound/asdcApi/provider/src/main/resources/OSGI-INF/blueprint/asdc-blueprint.xml b/northbound/asdcApi/provider/src/main/resources/OSGI-INF/blueprint/asdc-blueprint.xml new file mode 100644 index 000000000..9ad08d3db --- /dev/null +++ b/northbound/asdcApi/provider/src/main/resources/OSGI-INF/blueprint/asdc-blueprint.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" + odl:use-default-for-reference-types="true"> + + <reference id="svcLogicService" + interface="org.onap.ccsdk.sli.core.sli.provider.SvcLogicService" /> + + <bean id="client" class="org.onap.ccsdk.sli.northbound.asdcapi.AsdcApiSliClient"> + <argument ref="svcLogicService" /> + </bean> + + <reference id="dataBroker" + interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" + odl:type="default" /> + + <reference id="notificationService" + interface="org.opendaylight.controller.md.sal.binding.api.NotificationPublishService" + odl:type="default" /> + + <reference id="rpcRegistry" + interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" + odl:type="default" /> + + <bean id="provider" class="org.onap.ccsdk.sli.northbound.asdcapi.AsdcApiProvider"> + <argument ref="dataBroker" /> + <argument ref="notificationService" /> + <argument ref="rpcRegistry" /> + <argument ref="client" /> + </bean> + +</blueprint>
\ No newline at end of file diff --git a/northbound/asdcApi/provider/src/main/resources/org/opendaylight/blueprint/asdc-blueprint.xml b/northbound/asdcApi/provider/src/main/resources/org/opendaylight/blueprint/asdc-blueprint.xml new file mode 100644 index 000000000..9ad08d3db --- /dev/null +++ b/northbound/asdcApi/provider/src/main/resources/org/opendaylight/blueprint/asdc-blueprint.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" + odl:use-default-for-reference-types="true"> + + <reference id="svcLogicService" + interface="org.onap.ccsdk.sli.core.sli.provider.SvcLogicService" /> + + <bean id="client" class="org.onap.ccsdk.sli.northbound.asdcapi.AsdcApiSliClient"> + <argument ref="svcLogicService" /> + </bean> + + <reference id="dataBroker" + interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" + odl:type="default" /> + + <reference id="notificationService" + interface="org.opendaylight.controller.md.sal.binding.api.NotificationPublishService" + odl:type="default" /> + + <reference id="rpcRegistry" + interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" + odl:type="default" /> + + <bean id="provider" class="org.onap.ccsdk.sli.northbound.asdcapi.AsdcApiProvider"> + <argument ref="dataBroker" /> + <argument ref="notificationService" /> + <argument ref="rpcRegistry" /> + <argument ref="client" /> + </bean> + +</blueprint>
\ No newline at end of file diff --git a/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiSliClientTest.java b/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiSliClientTest.java new file mode 100644 index 000000000..5e6a9daf7 --- /dev/null +++ b/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiSliClientTest.java @@ -0,0 +1,59 @@ +package org.onap.ccsdk.sli.northbound.asdcapi; + +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; + +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.provider.SvcLogicService; + +public class AsdcApiSliClientTest { + Properties mockProp; + Properties propReturn; + AsdcApiSliClient testAsdcApiSliClient; + + @Before + public void setup() { + SvcLogicService mockSvcLogic = mock(SvcLogicService.class); + mockProp = new Properties(); + mockProp.setProperty("test-value1", "value1"); + propReturn = new Properties(); + propReturn.setProperty("SvcLogic.status", "Success"); + propReturn.setProperty("Object1", "value1"); + try { + when(mockSvcLogic.hasGraph("TestModule", "TestRPC", "TestVersion", "TestMode")).thenReturn(true); + when(mockSvcLogic.hasGraph("NotExist", "TestRPC", "TestVersion", "TestMode")).thenReturn(false); + when(mockSvcLogic.execute("TestModule", "TestRPC", "TestVersion", "TestMode", mockProp)).thenReturn(propReturn); + } catch (Exception e) { + System.out.println(e); + } + + testAsdcApiSliClient = new AsdcApiSliClient(mockSvcLogic); + } + + @Test + public void testhasGraphGraphExsists() throws SvcLogicException { + assertTrue(testAsdcApiSliClient.hasGraph("TestModule", "TestRPC", "TestVersion", "TestMode")); + } + + @Test + public void testhasGraphnoGraph() throws SvcLogicException { + assertFalse(testAsdcApiSliClient.hasGraph("NotExist", "TestRPC", "TestVersion", "TestMode")); + } + + @Test + public void testExecutewithSvcLogicSuccess() throws SvcLogicException { + Properties result = testAsdcApiSliClient.execute("TestModule", "TestRPC", "TestVersion", "TestMode", mockProp); + assertEquals(result.getProperty("error-code"), "200"); + } + + @Test + public void testExecutewithSvcLogicFailure500() throws SvcLogicException { + propReturn.setProperty("SvcLogic.status", "failure"); + Properties result = testAsdcApiSliClient.execute("TestModule", "TestRPC", "TestVersion", "TestMode", mockProp); + assertEquals(result.getProperty("error-code"), "500"); + } +}
\ No newline at end of file diff --git a/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiUtilTest.java b/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiUtilTest.java new file mode 100644 index 000000000..463e5ea0b --- /dev/null +++ b/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/AsdcApiUtilTest.java @@ -0,0 +1,15 @@ +package org.onap.ccsdk.sli.northbound.asdcapi; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class AsdcApiUtilTest { + + @Test + public void testAsdcApiUtilConstructor() { + AsdcApiUtil asdcApiUtilTest = new AsdcApiUtil(); + assertNotNull(asdcApiUtilTest); + } + +}
\ No newline at end of file diff --git a/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/TestAsdcApiApi.java b/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/TestAsdcApiApi.java new file mode 100644 index 000000000..1f266365c --- /dev/null +++ b/northbound/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/TestAsdcApiApi.java @@ -0,0 +1,136 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 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.ccsdk.sli.northbound.asdcapi; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; +import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest; +import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.yang.gen.v1.http.xmlns.onap.org.asdc.license.model._1._0.rev160427.vf.license.model.grouping.VfLicenseModelBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateInputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.ccsdk.rev170201.VfLicenseModelUpdateOutput; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Properties; + +public class TestAsdcApiApi extends AbstractConcurrentDataBrokerTest { + + private AsdcApiProvider asdcApiProvider; + private static final Logger LOG = LoggerFactory.getLogger(AsdcApiProvider.class); + + @Before + public void setUp() throws Exception { + if (null == asdcApiProvider) { + DataBroker dataBroker = getDataBroker(); + NotificationPublishService mockNotification = mock(NotificationPublishService.class); + RpcProviderRegistry mockRpcRegistry = mock(RpcProviderRegistry.class); + AsdcApiSliClient mockSliClient = mock(AsdcApiSliClient.class); + Properties respProps = new Properties(); + respProps.setProperty("error-code", "200"); + respProps.setProperty("error-message", "Success"); + + when(mockSliClient.hasGraph("ASDC-API", "vf-license-model-update" , null, "sync")).thenReturn(true); + when(mockSliClient.execute("ASDC-API", "vf-license-model-update", null, "sync", respProps)).thenReturn(respProps); + + asdcApiProvider = new AsdcApiProvider(dataBroker, mockNotification, mockRpcRegistry, mockSliClient); + } + } + + //Testcase should return error 503 when No service logic active for ASDC-API. + @Test + public void testVfLicenseModelUpdate() { + + VfLicenseModelUpdateInputBuilder inputBuilder = new VfLicenseModelUpdateInputBuilder(); + + inputBuilder.setArtifactName("abc"); + inputBuilder.setArtifactVersion("1"); + + // TODO: currently initialize SvcLogicServiceClient is failing, need to fix + java.util.concurrent.Future<RpcResult<VfLicenseModelUpdateOutput>> future = asdcApiProvider + .vfLicenseModelUpdate(inputBuilder.build()); + RpcResult<VfLicenseModelUpdateOutput> rpcResult = null; + try { + rpcResult = future.get(); + } catch (Exception e) { + fail("Error : " + e); + } + LOG.info("result: {}", rpcResult); + assertEquals("200", rpcResult.getResult().getAsdcApiResponseCode()); + } + + //Input parameter validation + @Test + public void testVfLicenseModelUpdateInputValidation() { + + VfLicenseModelUpdateInputBuilder inputBuilder = new VfLicenseModelUpdateInputBuilder(); + + inputBuilder.setArtifactName("abc"); + inputBuilder.setArtifactVersion("1"); + + java.util.concurrent.Future<RpcResult<VfLicenseModelUpdateOutput>> future = asdcApiProvider + .vfLicenseModelUpdate(null); + assertNull(future); + } + + @Test + public void testVfLicenseModelUpdateValidation1() { + + VfLicenseModelUpdateInputBuilder inputBuilder = new VfLicenseModelUpdateInputBuilder(); + + inputBuilder.setArtifactName("license1"); + inputBuilder.setArtifactVersion("version1"); + + VfLicenseModelBuilder vfLicenseModelBuilder = new VfLicenseModelBuilder(); + vfLicenseModelBuilder.setVfId("123"); + vfLicenseModelBuilder.setVendorName("acme"); + inputBuilder.setVfLicenseModel(vfLicenseModelBuilder.build()); + + + java.util.concurrent.Future<RpcResult<VfLicenseModelUpdateOutput>> future = asdcApiProvider + .vfLicenseModelUpdate(inputBuilder.build()); + RpcResult<VfLicenseModelUpdateOutput> rpcResult = null; + try { + rpcResult = future.get(); + } catch (Exception e) { + fail("Error : " + e); + } + } + + + + + @Test + public void testAddArtifactVersion() { + asdcApiProvider.addArtifactVersion("artifact1", + "version1"); + } +} |