diff options
Diffstat (limited to 'resource-assignment')
147 files changed, 8084 insertions, 8094 deletions
diff --git a/resource-assignment/features/pom.xml b/resource-assignment/features/pom.xml index 9e718e7a..338f7a1d 100755 --- a/resource-assignment/features/pom.xml +++ b/resource-assignment/features/pom.xml @@ -1,133 +1,133 @@ <?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> - <artifactId>resource-assignment</artifactId> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <version>0.0.1-SNAPSHOT</version> - </parent> - <artifactId>resource-assignment-features</artifactId> - <name>Resource Assignment Adaptor - Features</name> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>resource-assignment</artifactId> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <version>0.0.1-SNAPSHOT</version> + </parent> + <artifactId>resource-assignment-features</artifactId> + <name>Resource Assignment Adaptor - Features</name> - <packaging>jar</packaging> + <packaging>jar</packaging> - <dependencies> + <dependencies> - <dependency> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <artifactId>resource-assignment-provider</artifactId> - <version>${project.version}</version> - </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>resource-assignment-provider</artifactId> + <version>${project.version}</version> + </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.6</version> - <scope>compile</scope> - </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + <version>2.6</version> + <scope>compile</scope> + </dependency> - <dependency> - <groupId>org.opendaylight.mdsal</groupId> - <artifactId>features-mdsal</artifactId> - <version>${odl.mdsal.features.version}</version> - <classifier>features</classifier> - <type>xml</type> + <dependency> + <groupId>org.opendaylight.mdsal</groupId> + <artifactId>features-mdsal</artifactId> + <version>${odl.mdsal.features.version}</version> + <classifier>features</classifier> + <type>xml</type> - <scope>runtime</scope> - </dependency> + <scope>runtime</scope> + </dependency> - <!-- dependency for opendaylight-karaf-empty for use by testing --> - <dependency> - <groupId>org.opendaylight.odlparent</groupId> - <artifactId>opendaylight-karaf-empty</artifactId> - <version>${odl.karaf.empty.distro.version}</version> - <type>zip</type> - </dependency> + <!-- dependency for opendaylight-karaf-empty for use by testing --> + <dependency> + <groupId>org.opendaylight.odlparent</groupId> + <artifactId>opendaylight-karaf-empty</artifactId> + <version>${odl.karaf.empty.distro.version}</version> + <type>zip</type> + </dependency> - <dependency> - <!-- Required for launching the feature tests --> - <groupId>org.opendaylight.odlparent</groupId> - <artifactId>features-test</artifactId> - <version>${odl.commons.opendaylight.version}</version> - <scope>test</scope> - </dependency> + <dependency> + <!-- Required for launching the feature tests --> + <groupId>org.opendaylight.odlparent</groupId> + <artifactId>features-test</artifactId> + <version>${odl.commons.opendaylight.version}</version> + <scope>test</scope> + </dependency> - <dependency> - <groupId>org.opendaylight.yangtools</groupId> - <artifactId>features-yangtools</artifactId> - <version>${odl.yangtools.version}</version> - <classifier>features</classifier> - <type>xml</type> - <scope>runtime</scope> - </dependency> - </dependencies> + <dependency> + <groupId>org.opendaylight.yangtools</groupId> + <artifactId>features-yangtools</artifactId> + <version>${odl.yangtools.version}</version> + <classifier>features</classifier> + <type>xml</type> + <scope>runtime</scope> + </dependency> + </dependencies> - <build> - <resources> - <resource> - <filtering>true</filtering> - <directory>src/main/resources</directory> - </resource> - </resources> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <executions> - <execution> - <id>filter</id> - <goals> - <goal>resources</goal> - </goals> - <phase>generate-resources</phase> - </execution> - </executions> - </plugin> - <!-- launches the feature test, which validates that your karaf feature - can be installed inside of a karaf container. It doesn't validate that your - functionality works correctly, just that you have all of the dependent bundles - defined correctly. - <plugin> + <build> + <resources> + <resource> + <filtering>true</filtering> + <directory>src/main/resources</directory> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>filter</id> + <goals> + <goal>resources</goal> + </goals> + <phase>generate-resources</phase> + </execution> + </executions> + </plugin> + <!-- launches the feature test, which validates that your karaf feature + can be installed inside of a karaf container. It doesn't validate that your + functionality works correctly, just that you have all of the dependent bundles + defined correctly. + <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-surefire-plugin</artifactId> - <version>2.16</version> - <configuration> - <systemPropertyVariables> - <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId> - <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId> - <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version> - </systemPropertyVariables> - <dependenciesToScan> - <dependency>org.opendaylight.yangtools:features-test</dependency> - </dependenciesToScan> - </configuration> - </plugin> - --> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>build-helper-maven-plugin</artifactId> - <executions> - <execution> - <id>attach-artifacts</id> - <goals> - <goal>attach-artifact</goal> - </goals> - <phase>package</phase> - <configuration> - <artifacts> - <artifact> - <file>${project.build.directory}/classes/${features.file}</file> - <type>xml</type> - <classifier>features</classifier> - </artifact> - </artifacts> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.16</version> + <configuration> + <systemPropertyVariables> + <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId> + <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId> + <karaf.distro.version>${odl.karaf.empty.distro.version}</karaf.distro.version> + </systemPropertyVariables> + <dependenciesToScan> + <dependency>org.opendaylight.yangtools:features-test</dependency> + </dependenciesToScan> + </configuration> + </plugin> + --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>attach-artifacts</id> + <goals> + <goal>attach-artifact</goal> + </goals> + <phase>package</phase> + <configuration> + <artifacts> + <artifact> + <file>${project.build.directory}/classes/${features.file}</file> + <type>xml</type> + <classifier>features</classifier> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> diff --git a/resource-assignment/features/src/main/resources/features.xml b/resource-assignment/features/src/main/resources/features.xml index 01c55789..2834914a 100644 --- a/resource-assignment/features/src/main/resources/features.xml +++ b/resource-assignment/features/src/main/resources/features.xml @@ -4,7 +4,7 @@ openECOMP : SDN-C ================================================================================ Copyright (C) 2017 ONAP Intellectual Property. All rights - reserved. + reserved. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/resource-assignment/installer/pom.xml b/resource-assignment/installer/pom.xml index 900f0444..19359dc9 100755 --- a/resource-assignment/installer/pom.xml +++ b/resource-assignment/installer/pom.xml @@ -1,138 +1,138 @@ <?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> - <artifactId>resource-assignment</artifactId> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <version>0.0.1-SNAPSHOT</version> - </parent> - <artifactId>resource-assignment-installer</artifactId> - <name>Resource allocator- Karaf Installer</name> - <packaging>pom</packaging> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>resource-assignment</artifactId> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <version>0.0.1-SNAPSHOT</version> + </parent> + <artifactId>resource-assignment-installer</artifactId> + <name>Resource allocator- Karaf Installer</name> + <packaging>pom</packaging> - <properties> - <application.name>sdnc-resource-assignment</application.name> - <features.boot>sdnc-resource-assignment</features.boot> - <features.repositories>mvn:org.onap.ccsdk.sli.adaptors/resource-assignment-features/${project.version}/xml/features</features.repositories> - <include.transitive.dependencies>false</include.transitive.dependencies> - </properties> + <properties> + <application.name>sdnc-resource-assignment</application.name> + <features.boot>sdnc-resource-assignment</features.boot> + <features.repositories>mvn:org.onap.ccsdk.sli.adaptors/resource-assignment-features/${project.version}/xml/features</features.repositories> + <include.transitive.dependencies>false</include.transitive.dependencies> + </properties> - <dependencies> + <dependencies> - <dependency> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <artifactId>resource-assignment-features</artifactId> - <version>${project.version}</version> - <classifier>features</classifier> - <type>xml</type> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>resource-assignment-features</artifactId> + <version>${project.version}</version> + <classifier>features</classifier> + <type>xml</type> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> - <dependency> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <artifactId>resource-assignment-provider</artifactId> - <version>${project.version}</version> - </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>resource-assignment-provider</artifactId> + <version>${project.version}</version> + </dependency> - </dependencies> + </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>false</attach> - <finalName>stage/${application.name}-${project.version}</finalName> - <descriptors> - <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> - </descriptors> - <appendAssemblyId>false</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</includeGroupIds> - <excludeArtifactIds>sli-common,sli-provider,dblib-provider</excludeArtifactIds> - <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> + <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>false</attach> + <finalName>stage/${application.name}-${project.version}</finalName> + <descriptors> + <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> + </descriptors> + <appendAssemblyId>false</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</includeGroupIds> + <excludeArtifactIds>sli-common,sli-provider,dblib-provider</excludeArtifactIds> + <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> + </executions> + </plugin> - </plugins> - </build> + </plugins> + </build> </project> diff --git a/resource-assignment/installer/src/assembly/assemble_installer_zip.xml b/resource-assignment/installer/src/assembly/assemble_installer_zip.xml index e278872a..40e2f26a 100644 --- a/resource-assignment/installer/src/assembly/assemble_installer_zip.xml +++ b/resource-assignment/installer/src/assembly/assemble_installer_zip.xml @@ -3,7 +3,7 @@ openECOMP : SDN-C ================================================================================ Copyright (C) 2017 ONAP Intellectual Property. All rights - reserved. + reserved. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -22,37 +22,37 @@ <!-- 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> + 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> + <!-- 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> + <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> diff --git a/resource-assignment/installer/src/assembly/assemble_mvnrepo_zip.xml b/resource-assignment/installer/src/assembly/assemble_mvnrepo_zip.xml index 1edacdb6..7304fe50 100644 --- a/resource-assignment/installer/src/assembly/assemble_mvnrepo_zip.xml +++ b/resource-assignment/installer/src/assembly/assemble_mvnrepo_zip.xml @@ -3,7 +3,7 @@ openECOMP : SDN-C ================================================================================ Copyright (C) 2017 ONAP Intellectual Property. All rights - reserved. + reserved. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -22,27 +22,27 @@ <!-- 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>mvnrepo_zip</id> - <formats> - <format>zip</format> - </formats> + 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>mvnrepo_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> + <!-- 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> + <fileSets> + <fileSet> + <directory>target/assembly/</directory> + <outputDirectory>.</outputDirectory> + <excludes> + </excludes> + </fileSet> + </fileSets> diff --git a/resource-assignment/installer/src/main/resources/scripts/install-feature.sh b/resource-assignment/installer/src/main/resources/scripts/install-feature.sh index 9a47d222..9b687718 100644 --- a/resource-assignment/installer/src/main/resources/scripts/install-feature.sh +++ b/resource-assignment/installer/src/main/resources/scripts/install-feature.sh @@ -5,7 +5,7 @@ # openECOMP : SDN-C # ================================================================================ # Copyright (C) 2017 ONAP Intellectual Property. All rights -# reserved. +# reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,10 +30,10 @@ REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip if [ -f ${REPOZIP} ] then - unzip -d ${ODL_HOME} ${REPOZIP} + unzip -d ${ODL_HOME} ${REPOZIP} else - echo "ERROR : repo zip ($REPOZIP) not found" - exit 1 + echo "ERROR : repo zip ($REPOZIP) not found" + exit 1 fi ${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories} diff --git a/resource-assignment/pom.xml b/resource-assignment/pom.xml index e0e140f2..5e44d5ff 100755 --- a/resource-assignment/pom.xml +++ b/resource-assignment/pom.xml @@ -1,25 +1,25 @@ <?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/maven-v4_0_0.xsd"> - <parent> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <artifactId>sdnc-adaptors</artifactId> - <version>0.0.1-SNAPSHOT</version> - </parent> + <parent> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>sdnc-adaptors</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> - <modelVersion>4.0.0</modelVersion> - <packaging>pom</packaging> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> - <artifactId>resource-assignment</artifactId> - <version>0.0.1-SNAPSHOT</version> + <modelVersion>4.0.0</modelVersion> + <packaging>pom</packaging> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>resource-assignment</artifactId> + <version>0.0.1-SNAPSHOT</version> - <name>Resource Assignment Adaptor</name> - <description>The resource assignment adaptor allows service logic to check and allocate network capacity</description> + <name>Resource Assignment Adaptor</name> + <description>The resource assignment adaptor allows service logic to check and allocate network capacity</description> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> <artifactId>resource-assignment-features</artifactId> <classifier>features</classifier> <type>xml</type> diff --git a/resource-assignment/provider/pom.xml b/resource-assignment/provider/pom.xml index f6d7fede..4d801522 100755 --- a/resource-assignment/provider/pom.xml +++ b/resource-assignment/provider/pom.xml @@ -1,115 +1,105 @@ <?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.sli.adaptors</groupId> - <artifactId>resource-assignment</artifactId> - <version>0.0.1-SNAPSHOT</version> - </parent> - <artifactId>resource-assignment-provider</artifactId> - <packaging>bundle</packaging> - <name>Resource Assignment Adaptor - Provider</name> - <url>http://maven.apache.org</url> - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - </properties> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - <version>${junit.version}</version> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-test</artifactId> - <version>${spring.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <version>${h2database.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>sli-common</artifactId> - <version>${sdnctl.sli.version}</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>sli-provider</artifactId> - <version>${sdnctl.sli.version}</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.onap.ccsdk.sli.core</groupId> - <artifactId>dblib-provider</artifactId> - <version>${sdnctl.dblib.version}</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - <version>${slf4j.version}</version> - </dependency> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>${mysql.connector.version}</version> - <type>jar</type> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - <version>${spring.version}</version> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - <version>${spring.version}</version> - </dependency> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-jdbc</artifactId> - <version>${spring.version}</version> - </dependency> - </dependencies> - - <build> - <plugins> - - - - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <version>${bundle.plugin.version}</version> - <extensions>true</extensions> - <configuration> - <instructions> - <Bundle-SymbolicName>org.openecomp.sdnc.ra</Bundle-SymbolicName> - <Export-Package>org.openecomp.sdnc.ra</Export-Package> - <Import-Package>*,org.openecomp.sdnc.sli.resource.dblib,org.openecomp.sdnc.sli.*,org.osgi.framework.*,org.slf4j.*,com.mysql.jdbc.*</Import-Package> - <!--Import-Package>*</Import-Package--> - <Embed-Transitive>true</Embed-Transitive> - </instructions> - - - </configuration> - - </plugin> - - - </plugins> - - </build> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>resource-assignment</artifactId> + <version>0.0.1-SNAPSHOT</version> + </parent> + <artifactId>resource-assignment-provider</artifactId> + <packaging>bundle</packaging> + <name>Resource Assignment Adaptor - Provider</name> + <url>http://maven.apache.org</url> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + <version>${junit.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>${spring.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>${h2database.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-common</artifactId> + <version>${sdnctl.sli.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>sli-provider</artifactId> + <version>${sdnctl.sli.version}</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.core</groupId> + <artifactId>dblib-provider</artifactId> + <version>${sdnctl.dblib.version}</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>${slf4j.version}</version> + </dependency> + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>${mysql.connector.version}</version> + <type>jar</type> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>${spring.version}</version> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-jdbc</artifactId> + <version>${spring.version}</version> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>${bundle.plugin.version}</version> + <extensions>true</extensions> + <configuration> + <instructions> + <Bundle-SymbolicName>org.openecomp.sdnc.ra</Bundle-SymbolicName> + <Export-Package>org.openecomp.sdnc.ra</Export-Package> + <Import-Package>*,org.openecomp.sdnc.sli.resource.dblib,org.openecomp.sdnc.sli.*,org.osgi.framework.*,org.slf4j.*,com.mysql.jdbc.*</Import-Package> + <!--Import-Package>*</Import-Package--> + <Embed-Transitive>true</Embed-Transitive> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelper.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelper.java index acdce65e..5e179dc4 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelper.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelper.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,11 +25,11 @@ import java.util.Collection; public interface LockHelper { - void lock(String resourceName, String lockRequester, int lockTimeout /* Seconds */); + void lock(String resourceName, String lockRequester, int lockTimeout /* Seconds */); - void unlock(String resourceName, boolean force); + void unlock(String resourceName, boolean force); - void lock(Collection<String> resourceNameList, String lockRequester, int lockTimeout /* Seconds */); + void lock(Collection<String> resourceNameList, String lockRequester, int lockTimeout /* Seconds */); - void unlock(Collection<String> resourceNameList, boolean force); + void unlock(Collection<String> resourceNameList, boolean force); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelperImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelperImpl.java index 306fc162..62b88c67 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelperImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/LockHelperImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,135 +32,135 @@ import org.openecomp.sdnc.lock.data.ResourceLock; public class LockHelperImpl implements LockHelper { - private ResourceLockDao resourceLockDao; - private int retryCount = 10; - private int lockWait = 5; // Seconds - - @Override - public void lock(String resourceName, String lockRequester, int lockTimeout /* Seconds */) { - lock(Collections.singleton(resourceName), lockRequester, lockTimeout); - } - - @Override - public void unlock(String resourceName, boolean force) { - unlock(Collections.singleton(resourceName), force); - } - - @Override - public void lock(Collection<String> resourceNameList, String lockRequester, int lockTimeout /* Seconds */) { - for (int i = 0; true; i++) { - try { - tryLock(resourceNameList, lockRequester, lockTimeout); - return; - } catch (ResourceLockedException e) { - if (i > retryCount) - throw e; - try { - Thread.sleep(lockWait * 1000); - } catch (InterruptedException ex) { - } - } - } - } - - @Override - public void unlock(Collection<String> lockNames, boolean force) { - if (lockNames == null || lockNames.size() == 0) - return; - - resourceLockDao.lockTable(); - - try { - for (String name : lockNames) { - ResourceLock l = resourceLockDao.getByResourceName(name); - if (l != null) - if (force || l.lockCount == 1) - resourceLockDao.delete(l.id); - else - resourceLockDao.decrementLockCount(l.id); - } - } finally { - resourceLockDao.unlockTable(); - } - } - - public void tryLock(Collection<String> resourceNameList, String lockRequester, int lockTimeout /* Seconds */) { - if (resourceNameList == null || resourceNameList.size() == 0) - return; - - lockRequester = generateLockRequester(lockRequester, 100); - - resourceLockDao.lockTable(); - - try { - // First check if all requested records are available to lock - - Date now = new Date(); - - List<ResourceLock> dbLockList = new ArrayList<ResourceLock>(); - List<String> insertLockNameList = new ArrayList<String>(); - for (String name : resourceNameList) { - ResourceLock l = resourceLockDao.getByResourceName(name); - - boolean canLock = - l == null || now.getTime() > l.expirationTime.getTime() || lockRequester != null && - lockRequester.equals(l.lockHolder) || l.lockCount <= 0; - if (!canLock) - throw new ResourceLockedException(l.resourceName, l.lockHolder, lockRequester); - - if (l != null) - dbLockList.add(l); - else - insertLockNameList.add(name); - } - - // Update the lock info in DB - for (ResourceLock l : dbLockList) - resourceLockDao.update(l.id, now, new Date(now.getTime() + lockTimeout * 1000), l.lockCount + 1); - - // Insert records for those that are not yet there - for (String lockName : insertLockNameList) { - ResourceLock l = new ResourceLock(); - l.resourceName = lockName; - l.lockHolder = lockRequester; - l.lockTime = now; - l.expirationTime = new Date(now.getTime() + lockTimeout * 1000); - l.lockCount = 1; - resourceLockDao.add(l); - } - } finally { - resourceLockDao.unlockTable(); - } - } - - private static String generateLockRequester(String name, int maxLength) { - if (name == null) - name = ""; - int l1 = name.length(); - String tname = Thread.currentThread().getName(); - int l2 = tname.length(); - if (l1 + l2 + 1 > maxLength) { - int maxl1 = maxLength / 2; - if (l1 > maxl1) { - name = name.substring(0, maxl1); - l1 = maxl1; - } - int maxl2 = maxLength - l1 - 1; - if (l2 > maxl2) - tname = tname.substring(0, 6) + "..." + tname.substring(l2 - maxl2 + 9); - } - return tname + '-' + name; - } - - public void setResourceLockDao(ResourceLockDao resourceLockDao) { - this.resourceLockDao = resourceLockDao; - } - - public void setRetryCount(int retryCount) { - this.retryCount = retryCount; - } - - public void setLockWait(int lockWait /* Seconds */) { - this.lockWait = lockWait; - } + private ResourceLockDao resourceLockDao; + private int retryCount = 10; + private int lockWait = 5; // Seconds + + @Override + public void lock(String resourceName, String lockRequester, int lockTimeout /* Seconds */) { + lock(Collections.singleton(resourceName), lockRequester, lockTimeout); + } + + @Override + public void unlock(String resourceName, boolean force) { + unlock(Collections.singleton(resourceName), force); + } + + @Override + public void lock(Collection<String> resourceNameList, String lockRequester, int lockTimeout /* Seconds */) { + for (int i = 0; true; i++) { + try { + tryLock(resourceNameList, lockRequester, lockTimeout); + return; + } catch (ResourceLockedException e) { + if (i > retryCount) + throw e; + try { + Thread.sleep(lockWait * 1000); + } catch (InterruptedException ex) { + } + } + } + } + + @Override + public void unlock(Collection<String> lockNames, boolean force) { + if (lockNames == null || lockNames.size() == 0) + return; + + resourceLockDao.lockTable(); + + try { + for (String name : lockNames) { + ResourceLock l = resourceLockDao.getByResourceName(name); + if (l != null) + if (force || l.lockCount == 1) + resourceLockDao.delete(l.id); + else + resourceLockDao.decrementLockCount(l.id); + } + } finally { + resourceLockDao.unlockTable(); + } + } + + public void tryLock(Collection<String> resourceNameList, String lockRequester, int lockTimeout /* Seconds */) { + if (resourceNameList == null || resourceNameList.size() == 0) + return; + + lockRequester = generateLockRequester(lockRequester, 100); + + resourceLockDao.lockTable(); + + try { + // First check if all requested records are available to lock + + Date now = new Date(); + + List<ResourceLock> dbLockList = new ArrayList<ResourceLock>(); + List<String> insertLockNameList = new ArrayList<String>(); + for (String name : resourceNameList) { + ResourceLock l = resourceLockDao.getByResourceName(name); + + boolean canLock = + l == null || now.getTime() > l.expirationTime.getTime() || lockRequester != null && + lockRequester.equals(l.lockHolder) || l.lockCount <= 0; + if (!canLock) + throw new ResourceLockedException(l.resourceName, l.lockHolder, lockRequester); + + if (l != null) + dbLockList.add(l); + else + insertLockNameList.add(name); + } + + // Update the lock info in DB + for (ResourceLock l : dbLockList) + resourceLockDao.update(l.id, now, new Date(now.getTime() + lockTimeout * 1000), l.lockCount + 1); + + // Insert records for those that are not yet there + for (String lockName : insertLockNameList) { + ResourceLock l = new ResourceLock(); + l.resourceName = lockName; + l.lockHolder = lockRequester; + l.lockTime = now; + l.expirationTime = new Date(now.getTime() + lockTimeout * 1000); + l.lockCount = 1; + resourceLockDao.add(l); + } + } finally { + resourceLockDao.unlockTable(); + } + } + + private static String generateLockRequester(String name, int maxLength) { + if (name == null) + name = ""; + int l1 = name.length(); + String tname = Thread.currentThread().getName(); + int l2 = tname.length(); + if (l1 + l2 + 1 > maxLength) { + int maxl1 = maxLength / 2; + if (l1 > maxl1) { + name = name.substring(0, maxl1); + l1 = maxl1; + } + int maxl2 = maxLength - l1 - 1; + if (l2 > maxl2) + tname = tname.substring(0, 6) + "..." + tname.substring(l2 - maxl2 + 9); + } + return tname + '-' + name; + } + + public void setResourceLockDao(ResourceLockDao resourceLockDao) { + this.resourceLockDao = resourceLockDao; + } + + public void setRetryCount(int retryCount) { + this.retryCount = retryCount; + } + + public void setLockWait(int lockWait /* Seconds */) { + this.lockWait = lockWait; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/ResourceLockedException.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/ResourceLockedException.java index 8e3142cc..eb3f3341 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/ResourceLockedException.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/ResourceLockedException.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,19 +23,19 @@ package org.openecomp.sdnc.lock.comp; public class ResourceLockedException extends RuntimeException { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - private String lockName, lockHolder, lockRequester; + private String lockName, lockHolder, lockRequester; - public ResourceLockedException(String lockName, String lockHolder, String lockRequester) { - this.lockName = lockName; - this.lockHolder = lockHolder; - this.lockRequester = lockRequester; - } + public ResourceLockedException(String lockName, String lockHolder, String lockRequester) { + this.lockName = lockName; + this.lockHolder = lockHolder; + this.lockRequester = lockRequester; + } - @Override - public String getMessage() { - return "Failed to lock [" + lockName + "] for [" + lockRequester + "]. Currently locked by [" + lockHolder + - "]."; - } + @Override + public String getMessage() { + return "Failed to lock [" + lockName + "] for [" + lockRequester + "]. Currently locked by [" + lockHolder + + "]."; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/SynchronizedFunction.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/SynchronizedFunction.java index a76fca11..c3e35b70 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/SynchronizedFunction.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/comp/SynchronizedFunction.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,30 +27,30 @@ import java.util.Set; public abstract class SynchronizedFunction { - private Set<String> synchset; - private String lockRequester; - private int lockTimeout; // Seconds - private LockHelper lockHelper; - - protected SynchronizedFunction(LockHelper lockHelper, Collection<String> synchset, int lockTimeout) { - this.lockHelper = lockHelper; - this.synchset = new HashSet<String>(synchset); - this.lockRequester = generateLockRequester(); - this.lockTimeout = lockTimeout; - } - - protected abstract void _exec(); - - public void exec() { - lockHelper.lock(synchset, lockRequester, lockTimeout); - try { - _exec(); - } finally { - lockHelper.unlock(synchset, true); - } - } - - private static String generateLockRequester() { - return "SynchronizedFunction-" + (int) (Math.random() * 1000000); - } + private Set<String> synchset; + private String lockRequester; + private int lockTimeout; // Seconds + private LockHelper lockHelper; + + protected SynchronizedFunction(LockHelper lockHelper, Collection<String> synchset, int lockTimeout) { + this.lockHelper = lockHelper; + this.synchset = new HashSet<String>(synchset); + this.lockRequester = generateLockRequester(); + this.lockTimeout = lockTimeout; + } + + protected abstract void _exec(); + + public void exec() { + lockHelper.lock(synchset, lockRequester, lockTimeout); + try { + _exec(); + } finally { + lockHelper.unlock(synchset, true); + } + } + + private static String generateLockRequester() { + return "SynchronizedFunction-" + (int) (Math.random() * 1000000); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDao.java index 014765df..5ccde824 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,17 +27,17 @@ import org.openecomp.sdnc.lock.data.ResourceLock; public interface ResourceLockDao { - void lockTable(); + void lockTable(); - void unlockTable(); + void unlockTable(); - void add(ResourceLock l); + void add(ResourceLock l); - void update(long id, Date lockTime, Date expirationTime, int lockCount); + void update(long id, Date lockTime, Date expirationTime, int lockCount); - ResourceLock getByResourceName(String resourceName); + ResourceLock getByResourceName(String resourceName); - void delete(long id); + void delete(long id); - void decrementLockCount(long id); + void decrementLockCount(long id); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDaoImpl.java index f4819b83..9a619763 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/dao/ResourceLockDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,81 +35,81 @@ import org.springframework.jdbc.core.RowMapper; public class ResourceLockDaoImpl implements ResourceLockDao { - private static final Logger log = LoggerFactory.getLogger(ResourceLockDaoImpl.class); - - private JdbcTemplate jdbcTemplate; - private boolean testing = false; - - @Override - public void lockTable() { - if (!testing) { - jdbcTemplate.update("LOCK TABLES RESOURCE_LOCK WRITE"); - log.info("Table RESOURCE_LOCK locked."); - } - } - - @Override - public void unlockTable() { - if (!testing) { - jdbcTemplate.update("UNLOCK TABLES"); - log.info("Table RESOURCE_LOCK unlocked."); - - CachedDataSourceWrap ds = (CachedDataSourceWrap) jdbcTemplate.getDataSource(); - ds.releaseConnection(); - } - } - - @Override - public void add(ResourceLock l) { - jdbcTemplate.update( - "INSERT INTO RESOURCE_LOCK (resource_name, lock_holder, lock_count, lock_time, expiration_time)\n" + - "VALUES (?, ?, ?, ?, ?)", - new Object[] { l.resourceName, l.lockHolder, l.lockCount, l.lockTime, l.expirationTime }); - } - - @Override - public void update(long id, Date lockTime, Date expirationTime, int lockCount) { - jdbcTemplate.update( - "UPDATE RESOURCE_LOCK SET lock_time = ?, expiration_time = ?, lock_count = ? WHERE resource_lock_id = ?", - new Object[] { lockTime, expirationTime, lockCount, id }); - } - - @Override - public ResourceLock getByResourceName(String resourceName) { - List<ResourceLock> ll = jdbcTemplate.query("SELECT * FROM RESOURCE_LOCK WHERE resource_name = ?", - new Object[] { resourceName }, new RowMapper<ResourceLock>() { - - @Override - public ResourceLock mapRow(ResultSet rs, int rowNum) throws SQLException { - ResourceLock rl = new ResourceLock(); - rl.id = rs.getLong("resource_lock_id"); - rl.resourceName = rs.getString("resource_name"); - rl.lockHolder = rs.getString("lock_holder"); - rl.lockCount = rs.getInt("lock_count"); - rl.lockTime = rs.getTimestamp("lock_time"); - rl.expirationTime = rs.getTimestamp("expiration_time"); - return rl; - } - }); - return ll != null && !ll.isEmpty() ? ll.get(0) : null; - } - - @Override - public void delete(long id) { - jdbcTemplate.update("DELETE FROM RESOURCE_LOCK WHERE resource_lock_id = ?", new Object[] { id }); - } - - @Override - public void decrementLockCount(long id) { - jdbcTemplate.update("UPDATE RESOURCE_LOCK SET lock_count = lock_count - 1 WHERE resource_lock_id = ?", - new Object[] { id }); - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } - - public void setTesting(boolean testing) { - this.testing = testing; - } + private static final Logger log = LoggerFactory.getLogger(ResourceLockDaoImpl.class); + + private JdbcTemplate jdbcTemplate; + private boolean testing = false; + + @Override + public void lockTable() { + if (!testing) { + jdbcTemplate.update("LOCK TABLES RESOURCE_LOCK WRITE"); + log.info("Table RESOURCE_LOCK locked."); + } + } + + @Override + public void unlockTable() { + if (!testing) { + jdbcTemplate.update("UNLOCK TABLES"); + log.info("Table RESOURCE_LOCK unlocked."); + + CachedDataSourceWrap ds = (CachedDataSourceWrap) jdbcTemplate.getDataSource(); + ds.releaseConnection(); + } + } + + @Override + public void add(ResourceLock l) { + jdbcTemplate.update( + "INSERT INTO RESOURCE_LOCK (resource_name, lock_holder, lock_count, lock_time, expiration_time)\n" + + "VALUES (?, ?, ?, ?, ?)", + new Object[] { l.resourceName, l.lockHolder, l.lockCount, l.lockTime, l.expirationTime }); + } + + @Override + public void update(long id, Date lockTime, Date expirationTime, int lockCount) { + jdbcTemplate.update( + "UPDATE RESOURCE_LOCK SET lock_time = ?, expiration_time = ?, lock_count = ? WHERE resource_lock_id = ?", + new Object[] { lockTime, expirationTime, lockCount, id }); + } + + @Override + public ResourceLock getByResourceName(String resourceName) { + List<ResourceLock> ll = jdbcTemplate.query("SELECT * FROM RESOURCE_LOCK WHERE resource_name = ?", + new Object[] { resourceName }, new RowMapper<ResourceLock>() { + + @Override + public ResourceLock mapRow(ResultSet rs, int rowNum) throws SQLException { + ResourceLock rl = new ResourceLock(); + rl.id = rs.getLong("resource_lock_id"); + rl.resourceName = rs.getString("resource_name"); + rl.lockHolder = rs.getString("lock_holder"); + rl.lockCount = rs.getInt("lock_count"); + rl.lockTime = rs.getTimestamp("lock_time"); + rl.expirationTime = rs.getTimestamp("expiration_time"); + return rl; + } + }); + return ll != null && !ll.isEmpty() ? ll.get(0) : null; + } + + @Override + public void delete(long id) { + jdbcTemplate.update("DELETE FROM RESOURCE_LOCK WHERE resource_lock_id = ?", new Object[] { id }); + } + + @Override + public void decrementLockCount(long id) { + jdbcTemplate.update("UPDATE RESOURCE_LOCK SET lock_count = lock_count - 1 WHERE resource_lock_id = ?", + new Object[] { id }); + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public void setTesting(boolean testing) { + this.testing = testing; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/data/ResourceLock.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/data/ResourceLock.java index 561fd82a..4e27fd95 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/data/ResourceLock.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/lock/data/ResourceLock.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,10 +25,10 @@ import java.util.Date; public class ResourceLock { - public long id; - public String resourceName; - public String lockHolder; - public int lockCount; - public Date lockTime; - public Date expirationTime; + public long id; + public String resourceName; + public String lockHolder; + public int lockCount; + public Date lockTime; + public Date expirationTime; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReleaseRequestType.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReleaseRequestType.java index 52104ec5..0e375452 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReleaseRequestType.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReleaseRequestType.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,24 +22,24 @@ package org.openecomp.sdnc.ra; public enum ReleaseRequestType { - Cancel, Activate, Disconnect; + Cancel, Activate, Disconnect; - public static ReleaseRequestType convert(Object o) { - if (o == null) - return null; - String s = o.toString(); - s = s.trim(); - if (s.length() == 0) - return null; + public static ReleaseRequestType convert(Object o) { + if (o == null) + return null; + String s = o.toString(); + s = s.trim(); + if (s.length() == 0) + return null; - if (s.equalsIgnoreCase("Cancel")) - return Cancel; - if (s.equalsIgnoreCase("Activate")) - return Activate; - if (s.equalsIgnoreCase("Disconnect")) - return Disconnect; + if (s.equalsIgnoreCase("Cancel")) + return Cancel; + if (s.equalsIgnoreCase("Activate")) + return Activate; + if (s.equalsIgnoreCase("Disconnect")) + return Disconnect; - throw new IllegalArgumentException("Invalid request-type: " + s + - ". Supported values are Cancel, Activate, Disconnect."); - } + throw new IllegalArgumentException("Invalid request-type: " + s + + ". Supported values are Cancel, Activate, Disconnect."); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReserveRequestType.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReserveRequestType.java index d9964331..b0d0a50c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReserveRequestType.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ReserveRequestType.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,22 +22,22 @@ package org.openecomp.sdnc.ra; public enum ReserveRequestType { - New, Change; + New, Change; - public static ReserveRequestType convert(Object o) { - if (o == null) - return null; - String s = o.toString(); - s = s.trim(); - if (s.length() == 0) - return null; + public static ReserveRequestType convert(Object o) { + if (o == null) + return null; + String s = o.toString(); + s = s.trim(); + if (s.length() == 0) + return null; - if (s.equalsIgnoreCase("New")) - return New; - if (s.equalsIgnoreCase("Change")) - return Change; + if (s.equalsIgnoreCase("New")) + return New; + if (s.equalsIgnoreCase("Change")) + return Change; - throw new IllegalArgumentException("Invalid request-type: " + s + - ". Supported values are New, Change."); - } + throw new IllegalArgumentException("Invalid request-type: " + s + + ". Supported values are New, Change."); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ResourceAllocator.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ResourceAllocator.java index ae281cf1..e6a2c80c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ResourceAllocator.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/ResourceAllocator.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -68,949 +68,949 @@ import org.slf4j.LoggerFactory; public class ResourceAllocator implements SvcLogicResource { - private static final Logger log = LoggerFactory.getLogger(ResourceAllocator.class); - - public ResourceAllocator() { - log.info("ResourceAllocator created."); - } - - private ServerDao serverDao; - private VpePortDao vpePortDao; - private VplspePortDao vplspePortDao; - private MaxPortSpeedDao maxPortSpeedDao; - private MaxServerSpeedDao maxServerSpeedDao; - private ServiceResourceDao serviceResourceDao; - private ParameterDao parameterDao; - - private AllocationRequestBuilder allocationRequestBuilder; - private ResourceManager resourceManager; - private SpeedUtil speedUtil; - - private EndPointAllocator endPointAllocator; - - @Override - public QueryStatus notify(String resource, String action, String key, SvcLogicContext ctx) - throws SvcLogicException { - return (QueryStatus.SUCCESS); - } - - @Override - public QueryStatus update( - String resource, - String key, - Map<String, String> parms, - String prefix, - SvcLogicContext ctx) throws SvcLogicException { - - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus exists(String resource, String key, String prefix, SvcLogicContext ctx) - throws SvcLogicException { - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus delete(String arg0, String arg1, SvcLogicContext arg2) throws SvcLogicException { - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus save( - String arg0, - boolean arg1, - boolean arg2, - String arg3, - Map<String, String> arg4, - String arg5, - SvcLogicContext arg6) throws SvcLogicException { - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus isAvailable(String resource, String key, String prefix, SvcLogicContext ctx) - throws SvcLogicException { - String serviceModel = ctx.getAttribute("tmp.resource-allocator.service-model"); - if (serviceModel != null && serviceModel.trim().length() > 0) - return allocateResources(serviceModel, ctx, true, prefix); - return allocateResourcesL3SDN(ctx, true, prefix); - } - - @Override - public QueryStatus query( - String resource, - boolean localOnly, - String select, - String key, - String prefix, - String orderBy, - SvcLogicContext ctx) throws SvcLogicException { - - prefix = prefix == null ? "" : prefix + '.'; - - if (!resource.equals("NetworkCapacity")) { - log.info("resource: " + resource); - log.info("key: " + key); - - Resource r = resourceManager.getResource(resource, key); - if (r == null) - return QueryStatus.NOT_FOUND; - - if (r instanceof LimitResource) { - ctx.setAttribute(prefix + "used", String.valueOf(((LimitResource) r).used)); - - log.info("Added context attr: " + prefix + "used: " + String.valueOf(((LimitResource) r).used)); - } - - return QueryStatus.SUCCESS; - } - - log.info("key: " + key); - log.info("prefix: " + prefix); - - if (key == null) - return QueryStatus.SUCCESS; - - if (key.startsWith("'") && key.endsWith("'")) - key = key.substring(1, key.length() - 1); - - String endPointPosition = "VPE-Cust"; - - String resourceUnionId = key + '/' + endPointPosition; - List<Resource> rlist = resourceManager.getResourceUnion(resourceUnionId); - - log.info("Resources found for " + resourceUnionId + ": " + rlist.size()); - - String assetId = null; - for (Resource r : rlist) { - log.info("Resource: " + r.resourceKey.resourceName); - - if (r instanceof RangeResource) { - RangeResource rr = (RangeResource) r; - for (AllocationItem ai : r.allocationItems) - if (ai.resourceUnionId.equals(resourceUnionId)) { - RangeAllocationItem rai = (RangeAllocationItem) ai; - ctx.setAttribute(prefix + r.resourceKey.resourceName, String.valueOf(rai.used.first())); - - log.info("Added context attr: " + prefix + r.resourceKey.resourceName + ": " + - String.valueOf(rr.used.first())); - - assetId = r.resourceKey.assetId; - String vpeName = assetId; - int i1 = assetId.indexOf('/'); - if (i1 > 0) - vpeName = assetId.substring(0, i1); - ctx.setAttribute(prefix + "vpe-name", vpeName); - - log.info("Added context attr: " + prefix + "vpe-name: " + vpeName); - } - } - } - - String affinityLink = "1"; - if (assetId != null) { - for (Resource r : rlist) { - if (r instanceof LimitResource) { - LimitResource ll = (LimitResource) r; - if (ll.resourceKey.assetId.startsWith(assetId + '-')) { - int i1 = ll.resourceKey.assetId.lastIndexOf('-'); - affinityLink = ll.resourceKey.assetId.substring(i1 + 1); - break; - } - } - } - } - - ctx.setAttribute(prefix + "affinity-link", affinityLink); - - log.info("Added context attr: " + prefix + "affinity-link: " + affinityLink); - - return QueryStatus.SUCCESS; - } - - @Override - public QueryStatus reserve(String resource, String select, String key, String prefix, SvcLogicContext ctx) - throws SvcLogicException { - String serviceModel = ctx.getAttribute("tmp.resource-allocator.service-model"); - if (serviceModel != null && serviceModel.trim().length() > 0) - return allocateResources(serviceModel, ctx, false, prefix); - return allocateResourcesL3SDN(ctx, false, prefix); - } - - @Override - public QueryStatus release(String resource, String key, SvcLogicContext ctx) throws SvcLogicException { - String serviceInstanceId = ctx.getAttribute("tmp.resource-allocator.service-instance-id"); - if (serviceInstanceId == null) - throw new SvcLogicException("tmp.resource-allocator.service-instance-id is required in ResourceAllocator"); - - String requestTypeStr = ctx.getAttribute("tmp.resource-allocator.request-type"); - if (requestTypeStr == null) - throw new SvcLogicException("tmp.resource-allocator.request-type is required in ResourceAllocator"); - - ReleaseRequestType requestType = null; - try { - requestType = ReleaseRequestType.convert(requestTypeStr); - } catch (IllegalArgumentException e) { - throw new SvcLogicException("Invalid tmp.resource-allocator.request-type: " + requestTypeStr + - ". Supported values are Cancel, Activate, Disconnect."); - } - - log.info("Starting release: " + requestType + " for: " + serviceInstanceId); - - ServiceResource activeServiceResource = - serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Active); - ServiceResource pendingServiceResource = - serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Pending); - - log.info("Active ServiceResource: "); - StrUtil.info(log, activeServiceResource); - log.info("Pending ServiceResource: "); - StrUtil.info(log, pendingServiceResource); - - if (requestType == ReleaseRequestType.Cancel) { - if (pendingServiceResource != null) { - log.info("Releasing pending resources: " + pendingServiceResource.resourceSetId); - - resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); - serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Pending); - } else { - log.info("Pending record not found for service instance: " + serviceInstanceId + ". Nothing to do."); - } - - } else if (requestType == ReleaseRequestType.Activate) { - if (pendingServiceResource != null) { - if (activeServiceResource != null) { - log.info("Releasing active resources: " + activeServiceResource.resourceSetId); - - resourceManager.releaseResourceSet(activeServiceResource.resourceSetId); - serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Active); - } - - log.info("Updating the status of the pending record to active."); - - serviceResourceDao.updateServiceStatus(serviceInstanceId, ServiceStatus.Pending, ServiceStatus.Active); - } else { - log.info("Pending record not found for service instance: " + serviceInstanceId + ". Nothing to do."); - } - - } else if (requestType == ReleaseRequestType.Disconnect) { - if (pendingServiceResource != null) { - log.info("Releasing pending resources: " + pendingServiceResource.resourceSetId); - - resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); - serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Pending); - } - if (activeServiceResource != null) { - log.info("Releasing active resources: " + activeServiceResource.resourceSetId); - - resourceManager.releaseResourceSet(activeServiceResource.resourceSetId); - serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Active); - } - } - - return QueryStatus.SUCCESS; - } - - private QueryStatus allocateResourcesL3SDN(SvcLogicContext ctx, boolean checkOnly, String prefix) - throws SvcLogicException { - prefix = prefix == null ? "" : prefix + '.'; - - String aicSiteId = getAicSiteId(ctx); - Map<String, Object> service = getServiceData(ctx); - - String requestTypeStr = ctx.getAttribute("tmp.resource-allocator.request-type"); - if (requestTypeStr == null) - requestTypeStr = "New"; - - ReserveRequestType requestType = null; - try { - requestType = ReserveRequestType.convert(requestTypeStr); - } catch (IllegalArgumentException e) { - throw new SvcLogicException("Invalid tmp.resource-allocator.request-type: " + requestTypeStr + - ". Supported values are New, Change."); - } - - String serviceInstanceId = String.valueOf(service.get("service-instance-id")); - - ServiceResource activeServiceResource = - serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Active); - ServiceResource pendingServiceResource = - serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Pending); - - log.info("Active ServiceResource: "); - StrUtil.info(log, activeServiceResource); - log.info("Pending ServiceResource: "); - StrUtil.info(log, pendingServiceResource); - - ServiceResource sr = new ServiceResource(); - sr.serviceInstanceId = serviceInstanceId; - sr.serviceStatus = ServiceStatus.Pending; - sr.serviceChangeNumber = 1; - if (pendingServiceResource != null) - sr.serviceChangeNumber = pendingServiceResource.serviceChangeNumber + 1; - else if (activeServiceResource != null) - sr.serviceChangeNumber = activeServiceResource.serviceChangeNumber + 1; - sr.resourceSetId = serviceInstanceId + "/" + sr.serviceChangeNumber; - sr.resourceUnionId = serviceInstanceId; - - log.info("New ServiceResource: "); - StrUtil.info(log, sr); - - List<Map<String, Object>> vpePortData = vpePortDao.getVpePortData(aicSiteId); - List<Map<String, Object>> vplspePortData = vplspePortDao.getVplspePortData(aicSiteId); - List<Map<String, Object>> serverData = serverDao.getServerData(aicSiteId); - - vpePortData = orderVpe(vpePortData); - - long maxAvailableSpeedVpePort = 0; - boolean vpePortFound = false; - - for (Map<String, Object> vpe : vpePortData) { - String vpeId = String.valueOf(vpe.get("vpe-id")); - String interfaceName = String.valueOf(vpe.get("physical-interface-name")); - String portId = vpeId + "/" + interfaceName; - - log.info("Checking VPE port: " + portId); - - String provStatus = String.valueOf(vpe.get("provisioning-status")); - if (!provStatus.equals("PROV")) { - log.info("Skipping port " + portId + ": Provisioning status is not PROV."); - continue; - } - - String imageFile = String.valueOf(vpe.get("image-file-name")); - String endPointPosition = "VPE-Cust"; - long maxPortSpeed = maxPortSpeedDao.getMaxPortSpeed(imageFile, endPointPosition, interfaceName); - vpe.put("max-port-speed", maxPortSpeed); - - EquipmentData ed = new EquipmentData(); - ed.data = vpe; - ed.equipmentId = portId; - ed.equipmentLevel = EquipmentLevel.Port; - - ServiceData sd = new ServiceData(); - sd.data = service; - sd.serviceModel = "L3SDN"; - sd.endPointPosition = endPointPosition; - sd.resourceUnionId = sr.resourceUnionId; - sd.resourceSetId = sr.resourceSetId; - - StrUtil.info(log, ed); - StrUtil.info(log, sd); - - AllocationRequest ar = allocationRequestBuilder.buildAllocationRequest(sd, ed, checkOnly, - requestType == ReserveRequestType.Change); - AllocationOutcome ao = resourceManager.allocateResources(ar); - - if (ao.status == AllocationStatus.Success) { - - // Assign affinity link - if (!checkOnly) { - List<String> affinityLinkIdList = new ArrayList<>(); - affinityLinkIdList.add("0"); - affinityLinkIdList.add("1"); - affinityLinkIdList.add("2"); - affinityLinkIdList.add("3"); - - String preferedAffinityLinkId = "0"; - long lowestAssignedBw = Long.MAX_VALUE; - for (String affinityLinkId : affinityLinkIdList) { - long used = 0; - String assetId = ed.equipmentId + "-" + affinityLinkId; - Resource r = resourceManager.getResource("Bandwidth", assetId); - if (r != null) { - LimitResource ll = (LimitResource) r; - used = ll.used; - } - if (used < lowestAssignedBw) { - lowestAssignedBw = used; - preferedAffinityLinkId = affinityLinkId; - } - log.info("Assigned bandwidth on affinity link: " + assetId + ": " + used); - } - - log.info("Prefered affinity link for " + ed.equipmentId + ": " + preferedAffinityLinkId); - - ctx.setAttribute(prefix + "affinity-link", preferedAffinityLinkId); - - LimitAllocationRequest ar1 = new LimitAllocationRequest(); - ar1.resourceSetId = sd.resourceSetId; - ar1.resourceUnionId = sd.resourceUnionId; - ar1.resourceShareGroupList = null; - ar1.resourceName = "Bandwidth"; - ar1.assetId = ed.equipmentId + "-" + preferedAffinityLinkId; - ar1.missingResourceAction = AllocationAction.Succeed_Allocate; - ar1.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar1.replace = true; - ar1.strict = false; - ar1.checkLimit = Long.MAX_VALUE; - ar1.checkCount = 0; - ar1.allocateCount = (Long) sd.data.get("service-speed-kbps"); - - resourceManager.allocateResources(ar1); - } - - ctx.setAttribute(prefix + "vpe-name", vpeId); - - vpePortFound = true; - break; - } - - if (ao instanceof LimitAllocationOutcome) { - LimitAllocationOutcome lao = (LimitAllocationOutcome) ao; - long available = lao.limit - lao.used; - if (available > maxAvailableSpeedVpePort) - maxAvailableSpeedVpePort = available; - } - } - - long maxAvailableSpeedVplspePort = 0; - boolean vplspePortFound = false; - - for (Map<String, Object> vplspe : vplspePortData) { - String vplspeId = String.valueOf(vplspe.get("vplspe-id")); - String interfaceName = String.valueOf(vplspe.get("physical-interface-name")); - String portId = vplspeId + "/" + interfaceName; - - log.info("Checking VPLSPE port: " + portId); - - String provStatus = String.valueOf(vplspe.get("provisioning-status")); - if (!provStatus.equals("PROV")) { - log.info("Skipping port " + portId + ": Provisioning status is not PROV."); - continue; - } - - long physicalSpeed = (Long) vplspe.get("physical-interface-speed"); - String physicalSpeedUnit = String.valueOf(vplspe.get("physical-interface-speed-unit")); - long maxPortSpeed = speedUtil.convertToKbps(physicalSpeed, physicalSpeedUnit); - vplspe.put("max-port-speed", maxPortSpeed); - - EquipmentData ed = new EquipmentData(); - ed.data = vplspe; - ed.equipmentId = portId; - ed.equipmentLevel = EquipmentLevel.Port; - - ServiceData sd = new ServiceData(); - sd.data = service; - sd.serviceModel = "L3SDN"; - sd.endPointPosition = "IPAG-TOA"; - sd.resourceUnionId = sr.resourceUnionId; - sd.resourceSetId = sr.resourceSetId; - - StrUtil.info(log, ed); - StrUtil.info(log, sd); - - AllocationRequest ar = allocationRequestBuilder.buildAllocationRequest(sd, ed, checkOnly, - requestType == ReserveRequestType.Change); - AllocationOutcome ao = resourceManager.allocateResources(ar); - - if (ao.status == AllocationStatus.Success) { - vplspePortFound = true; - break; - } - - if (ao instanceof LimitAllocationOutcome) { - LimitAllocationOutcome lao = (LimitAllocationOutcome) ao; - long available = lao.limit - lao.used; - if (available > maxAvailableSpeedVplspePort) - maxAvailableSpeedVplspePort = available; - } - } - - long maxAvailableSpeedServer = 0; - boolean serverFound = false; - - for (Map<String, Object> server : serverData) { - String serverId = String.valueOf(server.get("server-id")); - String serverModel = String.valueOf(server.get("server-model")); - - log.info("Checking Server: " + serverId); - - String endPointPosition = "VCE-Cust"; - - int serverCount = (Integer) server.get("server-count"); - if (serverCount == 0) - serverCount = 1; - String ratioString = parameterDao.getParameter("homing.pserver.sparing.ratio"); - if (ratioString == null || ratioString.length() == 0) - ratioString = "1:1"; - int primaryServerCount = calculatePrimaryServerCount(serverCount, ratioString); - server.put("number-primary-servers", primaryServerCount); - - int evcCount = getEvcCountOnServer(serverId); - int evcCountPerServer = (evcCount + primaryServerCount - 1) / primaryServerCount; - long maxServerSpeed = maxServerSpeedDao.getMaxServerSpeed(serverModel, evcCountPerServer); - server.put("max-server-speed", maxServerSpeed); - server.put("evc-count", evcCount); - server.put("evc-count-per-server", evcCountPerServer); - - EquipmentData ed = new EquipmentData(); - ed.data = server; - ed.equipmentId = serverId; - ed.equipmentLevel = EquipmentLevel.Server; - - ServiceData sd = new ServiceData(); - sd.data = service; - sd.serviceModel = "L3SDN"; - sd.endPointPosition = endPointPosition; - sd.resourceUnionId = sr.resourceUnionId; - sd.resourceSetId = sr.resourceSetId; - - StrUtil.info(log, ed); - StrUtil.info(log, sd); - - AllocationRequest ar = allocationRequestBuilder.buildAllocationRequest(sd, ed, checkOnly, - requestType == ReserveRequestType.Change); - AllocationOutcome ao = resourceManager.allocateResources(ar); - - if (ao.status == AllocationStatus.Success) { - serverFound = true; - - if (ao instanceof MultiResourceAllocationOutcome) { - MultiResourceAllocationOutcome mrao = (MultiResourceAllocationOutcome) ao; - for (AllocationOutcome ao1 : mrao.allocationOutcomeList) { - if (ao1 instanceof LimitAllocationOutcome) { - LimitAllocationOutcome lao = (LimitAllocationOutcome) ao1; - if (lao.request.resourceName.equals("Bandwidth")) { - ThresholdStatus th = allocationRequestBuilder.getThresholdStatus(sd, ed, lao); - setThresholdData(ctx, th, sd, ed); - } - } - } - } - - break; - } - - if (ao instanceof MultiResourceAllocationOutcome) { - MultiResourceAllocationOutcome mrao = (MultiResourceAllocationOutcome) ao; - for (AllocationOutcome ao1 : mrao.allocationOutcomeList) { - if (ao1 instanceof LimitAllocationOutcome) { - LimitAllocationOutcome lao = (LimitAllocationOutcome) ao1; - if (lao.status == AllocationStatus.Failure && lao.request.resourceName.equals("Bandwidth")) { - long available = lao.limit - lao.used; - if (available > maxAvailableSpeedServer) - maxAvailableSpeedServer = available; - } - if (lao.status == AllocationStatus.Failure && lao.request.resourceName.equals("Connection")) { - maxAvailableSpeedServer = 0; - break; - } - - ThresholdStatus th = allocationRequestBuilder.getThresholdStatus(sd, ed, lao); - setThresholdData(ctx, th, sd, ed); - } - } - } - } - - if (vpePortFound && vplspePortFound && serverFound) { - if (!checkOnly) { - if (pendingServiceResource == null) { - log.info("Adding the pending service resource record to DB."); - serviceResourceDao.addServiceResource(sr); - } else { - log.info("Releasing previously allocated resources for resource set id: " + - pendingServiceResource.resourceSetId); - resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); - - log.info("Updating the pending service resource record in DB with service change number: " + - sr.serviceChangeNumber); - serviceResourceDao.updateServiceResource(sr); - } - } - - return QueryStatus.SUCCESS; - } - - log.info("Releasing allocated resources (if any) for resource set id: " + sr.resourceSetId); - resourceManager.releaseResourceSet(sr.resourceSetId); - - long maxAvailableSpeed = Long.MAX_VALUE; - if (!vpePortFound && maxAvailableSpeedVpePort < maxAvailableSpeed) - maxAvailableSpeed = maxAvailableSpeedVpePort; - if (!vplspePortFound && maxAvailableSpeedVplspePort < maxAvailableSpeed) - maxAvailableSpeed = maxAvailableSpeedVplspePort; - if (!serverFound && maxAvailableSpeedServer < maxAvailableSpeed) - maxAvailableSpeed = maxAvailableSpeedServer; - - setOutputContext(ctx, maxAvailableSpeed, "kbps"); - return QueryStatus.NOT_FOUND; - } - - private List<Map<String, Object>> orderVpe(List<Map<String, Object>> vpePortData) { - for (Map<String, Object> vpe : vpePortData) { - String vpeId = String.valueOf(vpe.get("vpe-id")); - String interfaceName = String.valueOf(vpe.get("physical-interface-name")); - String portId = vpeId + "/" + interfaceName; - Resource r = resourceManager.getResource("Bandwidth", portId); - long used = 0; - if (r != null) { - LimitResource ll = (LimitResource) r; - used = ll.used; - } - vpe.put("used-bandwidth", used); - - log.info("Used bandwidth on VPE: " + vpeId + ": " + used); - } - - Collections.sort(vpePortData, new Comparator<Map<String, Object>>() { - - @Override - public int compare(Map<String, Object> o1, Map<String, Object> o2) { - long used1 = (Long) o1.get("used-bandwidth"); - long used2 = (Long) o2.get("used-bandwidth"); - if (used1 < used2) - return -1; - if (used1 > used2) - return 1; - return 0; - } - }); - - return vpePortData; - } - - private void setThresholdData(SvcLogicContext ctx, ThresholdStatus th, ServiceData sd, EquipmentData ed) { - if (th == null) - return; - - String pp = "tmp.resource-allocator-output.threshold-notification-list.threshold-hotification[0]."; - ctx.setAttribute("tmp.resource-allocator-output.threshold-notification-list.threshold-hotification_length", - "1"); - ctx.setAttribute(pp + "message", th.resourceThreshold.message); - ctx.setAttribute(pp + "resource-rule.service-model", th.resourceRule.serviceModel); - ctx.setAttribute(pp + "resource-rule.endpoint-position", th.resourceRule.endPointPosition); - ctx.setAttribute(pp + "resource-rule.resource-name", th.resourceRule.resourceName); - ctx.setAttribute(pp + "resource-rule.equipment-level", th.resourceRule.equipmentLevel); - ctx.setAttribute(pp + "resource-rule.soft-limit-expression", th.resourceRule.softLimitExpression); - ctx.setAttribute(pp + "resource-rule.hard-limit-expression", th.resourceRule.hardLimitExpression); - ctx.setAttribute(pp + "resource-state.used", String.valueOf(th.used)); - ctx.setAttribute(pp + "resource-state.limit-value", String.valueOf(th.limitValue)); - ctx.setAttribute(pp + "resource-state.threshold-value", String.valueOf(th.thresholdValue)); - ctx.setAttribute(pp + "resource-state.last-added", String.valueOf(th.lastAdded)); - ctx.setAttribute(pp + "equipment-data.equipment-id", ed.equipmentId); - for (String edKey : ed.data.keySet()) - ctx.setAttribute(pp + "equipment-data." + edKey, String.valueOf(ed.data.get(edKey))); - } - - private QueryStatus allocateResources(String serviceModel, SvcLogicContext ctx, boolean checkOnly, String prefix) - throws SvcLogicException { - prefix = prefix == null ? "" : prefix + '.'; - - Map<String, Object> service = getServiceData(ctx); - Map<String, Object> ec = getEquipConstraints(ctx); - - String requestTypeStr = ctx.getAttribute("tmp.resource-allocator.request-type"); - if (requestTypeStr == null) - requestTypeStr = "New"; - - ReserveRequestType requestType = null; - try { - requestType = ReserveRequestType.convert(requestTypeStr); - } catch (IllegalArgumentException e) { - throw new SvcLogicException("Invalid tmp.resource-allocator.request-type: " + requestTypeStr + - ". Supported values are New, Change."); - } - - String serviceInstanceId = String.valueOf(service.get("service-instance-id")); - - log.info("Starting reserve: " + requestType + ", service-instance-id: " + serviceInstanceId); - - ServiceResource activeServiceResource = - serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Active); - ServiceResource pendingServiceResource = - serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Pending); - - log.info("Active ServiceResource: "); - StrUtil.info(log, activeServiceResource); - log.info("Pending ServiceResource: "); - StrUtil.info(log, pendingServiceResource); - - int changeNumber = 1; - if (pendingServiceResource != null) - changeNumber = pendingServiceResource.serviceChangeNumber + 1; - else if (activeServiceResource != null) - changeNumber = activeServiceResource.serviceChangeNumber + 1; - - ServiceData sd = new ServiceData(); - sd.data = service; - sd.serviceModel = serviceModel; - sd.endPointPosition = (String) service.get("end-point-position"); - sd.resourceShareGroup = (String) service.get("resource-share-group"); - sd.resourceName = (String) service.get("resource-name"); - sd.serviceInstanceId = serviceInstanceId; - - StrUtil.info(log, sd); - - List<EndPointData> epList = endPointAllocator.allocateEndPoints(sd, ec, checkOnly, - requestType == ReserveRequestType.Change, changeNumber); - - if (epList != null && !epList.isEmpty()) { - if (!checkOnly) { - EndPointData ep = epList.get(0); - - if (sd.resourceName == null) { - ServiceResource sr = new ServiceResource(); - sr.serviceInstanceId = serviceInstanceId; - sr.serviceStatus = ServiceStatus.Pending; - sr.serviceChangeNumber = changeNumber; - sr.resourceSetId = ep.resourceSetId; - sr.resourceUnionId = ep.resourceUnionId; - - log.info("New ServiceResource: "); - StrUtil.info(log, sr); - - if (pendingServiceResource == null) { - log.info("Adding the pending service resource record to DB."); - serviceResourceDao.addServiceResource(sr); - } else { - log.info("Releasing previously allocated resources for resource set id: " + - pendingServiceResource.resourceSetId); - resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); - - log.info("Updating the pending service resource record in DB with service change number: " + - sr.serviceChangeNumber); - serviceResourceDao.updateServiceResource(sr); - } - } - - for (EndPointData ep1 : epList) - if (ep1.data != null && !ep1.data.isEmpty()) - for (String key : ep1.data.keySet()) { - String value = String.valueOf(ep1.data.get(key)); - ctx.setAttribute(prefix + key, value); - - log.info("Added context attr: " + prefix + key + ": " + value); - } - } - - return QueryStatus.SUCCESS; - } - - log.info("Capacity not found for EVC: " + serviceInstanceId); - - return QueryStatus.NOT_FOUND; - } - - private int getEvcCountOnServer(String serverId) { - LimitResource l = (LimitResource) resourceManager.getResource("Connection", serverId); - if (l != null) - return (int) l.used; - return 0; - } - - private String getAicSiteId(SvcLogicContext ctx) throws SvcLogicException { - String aicSiteId = ctx.getAttribute("tmp.resource-allocator.aic-site-id"); - if (aicSiteId == null) - throw new SvcLogicException("tmp.resource-allocator.aic-site-id is required in ResourceAllocator"); - return aicSiteId; - } - - private Map<String, Object> getServiceData(SvcLogicContext ctx) throws SvcLogicException { - Map<String, Object> sd = new HashMap<String, Object>(); - - String endPointPosition = ctx.getAttribute("tmp.resource-allocator.end-point-position"); - if (endPointPosition != null && endPointPosition.trim().length() > 0) - sd.put("end-point-position", endPointPosition.trim()); - - String resourceName = ctx.getAttribute("tmp.resource-allocator.resource-name"); - if (resourceName != null && resourceName.trim().length() > 0) - sd.put("resource-name", resourceName.trim()); - - String resourceShareGroup = ctx.getAttribute("tmp.resource-allocator.resource-share-group"); - if (resourceShareGroup != null && resourceShareGroup.trim().length() > 0) - sd.put("resource-share-group", resourceShareGroup.trim()); - - String serviceInstanceId = ctx.getAttribute("tmp.resource-allocator.service-instance-id"); - if (serviceInstanceId == null) - serviceInstanceId = "checkServiceInstance"; - sd.put("service-instance-id", serviceInstanceId); - - String speedStr = ctx.getAttribute("tmp.resource-allocator.speed"); - if (speedStr != null && speedStr.trim().length() > 0) { - long speed = 0; - try { - speed = Long.parseLong(speedStr); - } catch (NumberFormatException e) { - throw new SvcLogicException("Invalid tmp.resource-allocator.speed. Must be a number."); - } - String unit = ctx.getAttribute("tmp.resource-allocator.speed-unit"); - if (unit == null || unit.trim().length() == 0) - throw new SvcLogicException("tmp.resource-allocator.speed-unit is required in ResourceAllocator"); - long serviceSpeedKbps = speedUtil.convertToKbps(speed, unit); - - sd.put("service-speed-kbps", serviceSpeedKbps); - } - - String vpnId = ctx.getAttribute("tmp.resource-allocator.vpn-id"); - if (vpnId != null && vpnId.trim().length() > 0) - sd.put("vpn-id", vpnId.trim()); - - String vpnIdList = ctx.getAttribute("tmp.resource-allocator.vpn-id-list"); - if (vpnIdList != null && vpnIdList.trim().length() > 0) - sd.put("vpn-id-list", vpnIdList.trim()); - - String vrfName = ctx.getAttribute("tmp.resource-allocator.vrf-name"); - if (vrfName != null && vrfName.trim().length() > 0) - sd.put("vrf-name", vrfName.trim()); - - String vrfNameList = ctx.getAttribute("tmp.resource-allocator.vrf-name-list"); - if (vrfNameList != null && vrfNameList.trim().length() > 0) - sd.put("vrf-name-list", vrfNameList.trim()); - - String v4multicast = ctx.getAttribute("tmp.resource-allocator.v4-multicast"); - if (v4multicast != null && v4multicast.trim().length() > 0) - sd.put("v4-multicast", v4multicast.trim()); - - String v6multicast = ctx.getAttribute("tmp.resource-allocator.v6-multicast"); - if (v6multicast != null && v6multicast.trim().length() > 0) - sd.put("v6-multicast", v6multicast.trim()); - - String v4ServingSite = ctx.getAttribute("tmp.resource-allocator.v4-serving-site"); - if (v4ServingSite != null && v4ServingSite.trim().length() > 0) - sd.put("v4-serving-site", v4ServingSite.trim()); - - String v6ServingSite = ctx.getAttribute("tmp.resource-allocator.v6-serving-site"); - if (v6ServingSite != null && v6ServingSite.trim().length() > 0) - sd.put("v6-serving-site", v6ServingSite.trim()); - - return sd; - } - - private Map<String, Object> getEquipConstraints(SvcLogicContext ctx) throws SvcLogicException { - Map<String, Object> mm = new HashMap<String, Object>(); - - String vrfRequired = ctx.getAttribute("tmp.resource-allocator.vrf-required"); - if (vrfRequired != null && vrfRequired.trim().length() > 0) - mm.put("vrf-required", vrfRequired.trim()); - - String clli = ctx.getAttribute("tmp.resource-allocator.clli"); - if (clli == null || clli.trim().length() == 0) - clli = ctx.getAttribute("tmp.resource-allocator.aic-site-id"); - if (clli != null) { - mm.put("clli", clli.trim()); - mm.put("aic-site-id", clli.trim()); - } - - String vpeName = ctx.getAttribute("tmp.resource-allocator.vpe-name"); - if (vpeName != null && vpeName.trim().length() > 0) - mm.put("vpe-name", vpeName.trim()); - - String vnfName = ctx.getAttribute("tmp.resource-allocator.device-name"); - if (vnfName != null && vnfName.trim().length() > 0) - mm.put("vnf-name", vnfName.trim()); - - String excludeVpeList = ctx.getAttribute("tmp.resource-allocator.exclude-vpe-list"); - if (excludeVpeList != null && excludeVpeList.trim().length() > 0) - mm.put("exclude-vpe-list", excludeVpeList.trim()); - - String uplinkCircuitCountStr = - ctx.getAttribute("tmp.resource-allocator.uplink-circuit-list.uplink-circuit_length"); - if (uplinkCircuitCountStr != null) { - long uplinkCircuitCount = 0; - try { - uplinkCircuitCount = Long.parseLong(uplinkCircuitCountStr); - } catch (NumberFormatException e) { - throw new SvcLogicException( - "Invalid tmp.resource-allocator.uplink-circuit-list.uplink-circuit_length. Must be a number."); - } - List<Map<String, Object>> uplinkCircuitList = new ArrayList<>(); - for (int i = 0; i < uplinkCircuitCount; i++) { - String uplinkCircuitId = ctx.getAttribute( - "tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + i + "].uplink-circuit-id"); - String uplinkCircuitBandwidthStr = - ctx.getAttribute("tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + i + - "].uplink-circuit-bandwidth"); - String uplinkCircuitBandwidthUnit = - ctx.getAttribute("tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + i + - "].uplink-circuit-bandwidth-unit"); - - long uplinkCircuitBandwidth = 0; - try { - uplinkCircuitBandwidth = Long.parseLong(uplinkCircuitBandwidthStr); - } catch (NumberFormatException e) { - throw new SvcLogicException("Invalid tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + - i + "].uplink-circuit-id. Must be a number."); - } - - long uplinkCircuitBandwidthKbps = - speedUtil.convertToKbps(uplinkCircuitBandwidth, uplinkCircuitBandwidthUnit); - - Map<String, Object> uplinkCircuit = new HashMap<String, Object>(); - uplinkCircuit.put("uplink-circuit-id", uplinkCircuitId); - uplinkCircuit.put("uplink-circuit-bandwidth", uplinkCircuitBandwidthKbps); - uplinkCircuitList.add(uplinkCircuit); - } - mm.put("uplink-circuit-list", uplinkCircuitList); - } - - return mm; - } - - private void setOutputContext(SvcLogicContext ctx, long maxAvailableSpeed, String unit) { - ctx.setAttribute("tmp.resource-allocator-output.max-available-speed", String.valueOf(maxAvailableSpeed)); - ctx.setAttribute("tmp.resource-allocator-output.speed-unit", unit); - } - - private int calculatePrimaryServerCount(int serverCount, String ratioString) throws SvcLogicException { - String[] ss = ratioString.split(":"); - if (ss.length != 2) - throw new SvcLogicException("Invalid value for homing.pserver.sparing.ratio: " + ratioString); - - int n = 1, m = 1; - try { - n = Integer.parseInt(ss[0]); - m = Integer.parseInt(ss[1]); - } catch (Exception e) { - throw new SvcLogicException("Invalid value for homing.pserver.sparing.ratio: " + ratioString); - } - - return (serverCount - 1) * n / (n + m) + 1; - } - - public void setServerDao(ServerDao serverDao) { - this.serverDao = serverDao; - } - - public void setVpePortDao(VpePortDao vpePortDao) { - this.vpePortDao = vpePortDao; - } - - public void setVplspePortDao(VplspePortDao vplspePortDao) { - this.vplspePortDao = vplspePortDao; - } - - public void setMaxPortSpeedDao(MaxPortSpeedDao maxPortSpeedDao) { - this.maxPortSpeedDao = maxPortSpeedDao; - } - - public void setMaxServerSpeedDao(MaxServerSpeedDao maxServerSpeedDao) { - this.maxServerSpeedDao = maxServerSpeedDao; - } - - public void setAllocationRequestBuilder(AllocationRequestBuilder allocationRequestBuilder) { - this.allocationRequestBuilder = allocationRequestBuilder; - } - - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } - - public void setSpeedUtil(SpeedUtil speedUtil) { - this.speedUtil = speedUtil; - } - - public void setServiceResourceDao(ServiceResourceDao serviceResourceDao) { - this.serviceResourceDao = serviceResourceDao; - } - - public void setEndPointAllocator(EndPointAllocator endPointAllocator) { - this.endPointAllocator = endPointAllocator; - } - - public void setParameterDao(ParameterDao parameterDao) { - this.parameterDao = parameterDao; - } + private static final Logger log = LoggerFactory.getLogger(ResourceAllocator.class); + + public ResourceAllocator() { + log.info("ResourceAllocator created."); + } + + private ServerDao serverDao; + private VpePortDao vpePortDao; + private VplspePortDao vplspePortDao; + private MaxPortSpeedDao maxPortSpeedDao; + private MaxServerSpeedDao maxServerSpeedDao; + private ServiceResourceDao serviceResourceDao; + private ParameterDao parameterDao; + + private AllocationRequestBuilder allocationRequestBuilder; + private ResourceManager resourceManager; + private SpeedUtil speedUtil; + + private EndPointAllocator endPointAllocator; + + @Override + public QueryStatus notify(String resource, String action, String key, SvcLogicContext ctx) + throws SvcLogicException { + return (QueryStatus.SUCCESS); + } + + @Override + public QueryStatus update( + String resource, + String key, + Map<String, String> parms, + String prefix, + SvcLogicContext ctx) throws SvcLogicException { + + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus exists(String resource, String key, String prefix, SvcLogicContext ctx) + throws SvcLogicException { + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus delete(String arg0, String arg1, SvcLogicContext arg2) throws SvcLogicException { + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus save( + String arg0, + boolean arg1, + boolean arg2, + String arg3, + Map<String, String> arg4, + String arg5, + SvcLogicContext arg6) throws SvcLogicException { + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus isAvailable(String resource, String key, String prefix, SvcLogicContext ctx) + throws SvcLogicException { + String serviceModel = ctx.getAttribute("tmp.resource-allocator.service-model"); + if (serviceModel != null && serviceModel.trim().length() > 0) + return allocateResources(serviceModel, ctx, true, prefix); + return allocateResourcesL3SDN(ctx, true, prefix); + } + + @Override + public QueryStatus query( + String resource, + boolean localOnly, + String select, + String key, + String prefix, + String orderBy, + SvcLogicContext ctx) throws SvcLogicException { + + prefix = prefix == null ? "" : prefix + '.'; + + if (!resource.equals("NetworkCapacity")) { + log.info("resource: " + resource); + log.info("key: " + key); + + Resource r = resourceManager.getResource(resource, key); + if (r == null) + return QueryStatus.NOT_FOUND; + + if (r instanceof LimitResource) { + ctx.setAttribute(prefix + "used", String.valueOf(((LimitResource) r).used)); + + log.info("Added context attr: " + prefix + "used: " + String.valueOf(((LimitResource) r).used)); + } + + return QueryStatus.SUCCESS; + } + + log.info("key: " + key); + log.info("prefix: " + prefix); + + if (key == null) + return QueryStatus.SUCCESS; + + if (key.startsWith("'") && key.endsWith("'")) + key = key.substring(1, key.length() - 1); + + String endPointPosition = "VPE-Cust"; + + String resourceUnionId = key + '/' + endPointPosition; + List<Resource> rlist = resourceManager.getResourceUnion(resourceUnionId); + + log.info("Resources found for " + resourceUnionId + ": " + rlist.size()); + + String assetId = null; + for (Resource r : rlist) { + log.info("Resource: " + r.resourceKey.resourceName); + + if (r instanceof RangeResource) { + RangeResource rr = (RangeResource) r; + for (AllocationItem ai : r.allocationItems) + if (ai.resourceUnionId.equals(resourceUnionId)) { + RangeAllocationItem rai = (RangeAllocationItem) ai; + ctx.setAttribute(prefix + r.resourceKey.resourceName, String.valueOf(rai.used.first())); + + log.info("Added context attr: " + prefix + r.resourceKey.resourceName + ": " + + String.valueOf(rr.used.first())); + + assetId = r.resourceKey.assetId; + String vpeName = assetId; + int i1 = assetId.indexOf('/'); + if (i1 > 0) + vpeName = assetId.substring(0, i1); + ctx.setAttribute(prefix + "vpe-name", vpeName); + + log.info("Added context attr: " + prefix + "vpe-name: " + vpeName); + } + } + } + + String affinityLink = "1"; + if (assetId != null) { + for (Resource r : rlist) { + if (r instanceof LimitResource) { + LimitResource ll = (LimitResource) r; + if (ll.resourceKey.assetId.startsWith(assetId + '-')) { + int i1 = ll.resourceKey.assetId.lastIndexOf('-'); + affinityLink = ll.resourceKey.assetId.substring(i1 + 1); + break; + } + } + } + } + + ctx.setAttribute(prefix + "affinity-link", affinityLink); + + log.info("Added context attr: " + prefix + "affinity-link: " + affinityLink); + + return QueryStatus.SUCCESS; + } + + @Override + public QueryStatus reserve(String resource, String select, String key, String prefix, SvcLogicContext ctx) + throws SvcLogicException { + String serviceModel = ctx.getAttribute("tmp.resource-allocator.service-model"); + if (serviceModel != null && serviceModel.trim().length() > 0) + return allocateResources(serviceModel, ctx, false, prefix); + return allocateResourcesL3SDN(ctx, false, prefix); + } + + @Override + public QueryStatus release(String resource, String key, SvcLogicContext ctx) throws SvcLogicException { + String serviceInstanceId = ctx.getAttribute("tmp.resource-allocator.service-instance-id"); + if (serviceInstanceId == null) + throw new SvcLogicException("tmp.resource-allocator.service-instance-id is required in ResourceAllocator"); + + String requestTypeStr = ctx.getAttribute("tmp.resource-allocator.request-type"); + if (requestTypeStr == null) + throw new SvcLogicException("tmp.resource-allocator.request-type is required in ResourceAllocator"); + + ReleaseRequestType requestType = null; + try { + requestType = ReleaseRequestType.convert(requestTypeStr); + } catch (IllegalArgumentException e) { + throw new SvcLogicException("Invalid tmp.resource-allocator.request-type: " + requestTypeStr + + ". Supported values are Cancel, Activate, Disconnect."); + } + + log.info("Starting release: " + requestType + " for: " + serviceInstanceId); + + ServiceResource activeServiceResource = + serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Active); + ServiceResource pendingServiceResource = + serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Pending); + + log.info("Active ServiceResource: "); + StrUtil.info(log, activeServiceResource); + log.info("Pending ServiceResource: "); + StrUtil.info(log, pendingServiceResource); + + if (requestType == ReleaseRequestType.Cancel) { + if (pendingServiceResource != null) { + log.info("Releasing pending resources: " + pendingServiceResource.resourceSetId); + + resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); + serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Pending); + } else { + log.info("Pending record not found for service instance: " + serviceInstanceId + ". Nothing to do."); + } + + } else if (requestType == ReleaseRequestType.Activate) { + if (pendingServiceResource != null) { + if (activeServiceResource != null) { + log.info("Releasing active resources: " + activeServiceResource.resourceSetId); + + resourceManager.releaseResourceSet(activeServiceResource.resourceSetId); + serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Active); + } + + log.info("Updating the status of the pending record to active."); + + serviceResourceDao.updateServiceStatus(serviceInstanceId, ServiceStatus.Pending, ServiceStatus.Active); + } else { + log.info("Pending record not found for service instance: " + serviceInstanceId + ". Nothing to do."); + } + + } else if (requestType == ReleaseRequestType.Disconnect) { + if (pendingServiceResource != null) { + log.info("Releasing pending resources: " + pendingServiceResource.resourceSetId); + + resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); + serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Pending); + } + if (activeServiceResource != null) { + log.info("Releasing active resources: " + activeServiceResource.resourceSetId); + + resourceManager.releaseResourceSet(activeServiceResource.resourceSetId); + serviceResourceDao.deleteServiceResource(serviceInstanceId, ServiceStatus.Active); + } + } + + return QueryStatus.SUCCESS; + } + + private QueryStatus allocateResourcesL3SDN(SvcLogicContext ctx, boolean checkOnly, String prefix) + throws SvcLogicException { + prefix = prefix == null ? "" : prefix + '.'; + + String aicSiteId = getAicSiteId(ctx); + Map<String, Object> service = getServiceData(ctx); + + String requestTypeStr = ctx.getAttribute("tmp.resource-allocator.request-type"); + if (requestTypeStr == null) + requestTypeStr = "New"; + + ReserveRequestType requestType = null; + try { + requestType = ReserveRequestType.convert(requestTypeStr); + } catch (IllegalArgumentException e) { + throw new SvcLogicException("Invalid tmp.resource-allocator.request-type: " + requestTypeStr + + ". Supported values are New, Change."); + } + + String serviceInstanceId = String.valueOf(service.get("service-instance-id")); + + ServiceResource activeServiceResource = + serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Active); + ServiceResource pendingServiceResource = + serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Pending); + + log.info("Active ServiceResource: "); + StrUtil.info(log, activeServiceResource); + log.info("Pending ServiceResource: "); + StrUtil.info(log, pendingServiceResource); + + ServiceResource sr = new ServiceResource(); + sr.serviceInstanceId = serviceInstanceId; + sr.serviceStatus = ServiceStatus.Pending; + sr.serviceChangeNumber = 1; + if (pendingServiceResource != null) + sr.serviceChangeNumber = pendingServiceResource.serviceChangeNumber + 1; + else if (activeServiceResource != null) + sr.serviceChangeNumber = activeServiceResource.serviceChangeNumber + 1; + sr.resourceSetId = serviceInstanceId + "/" + sr.serviceChangeNumber; + sr.resourceUnionId = serviceInstanceId; + + log.info("New ServiceResource: "); + StrUtil.info(log, sr); + + List<Map<String, Object>> vpePortData = vpePortDao.getVpePortData(aicSiteId); + List<Map<String, Object>> vplspePortData = vplspePortDao.getVplspePortData(aicSiteId); + List<Map<String, Object>> serverData = serverDao.getServerData(aicSiteId); + + vpePortData = orderVpe(vpePortData); + + long maxAvailableSpeedVpePort = 0; + boolean vpePortFound = false; + + for (Map<String, Object> vpe : vpePortData) { + String vpeId = String.valueOf(vpe.get("vpe-id")); + String interfaceName = String.valueOf(vpe.get("physical-interface-name")); + String portId = vpeId + "/" + interfaceName; + + log.info("Checking VPE port: " + portId); + + String provStatus = String.valueOf(vpe.get("provisioning-status")); + if (!provStatus.equals("PROV")) { + log.info("Skipping port " + portId + ": Provisioning status is not PROV."); + continue; + } + + String imageFile = String.valueOf(vpe.get("image-file-name")); + String endPointPosition = "VPE-Cust"; + long maxPortSpeed = maxPortSpeedDao.getMaxPortSpeed(imageFile, endPointPosition, interfaceName); + vpe.put("max-port-speed", maxPortSpeed); + + EquipmentData ed = new EquipmentData(); + ed.data = vpe; + ed.equipmentId = portId; + ed.equipmentLevel = EquipmentLevel.Port; + + ServiceData sd = new ServiceData(); + sd.data = service; + sd.serviceModel = "L3SDN"; + sd.endPointPosition = endPointPosition; + sd.resourceUnionId = sr.resourceUnionId; + sd.resourceSetId = sr.resourceSetId; + + StrUtil.info(log, ed); + StrUtil.info(log, sd); + + AllocationRequest ar = allocationRequestBuilder.buildAllocationRequest(sd, ed, checkOnly, + requestType == ReserveRequestType.Change); + AllocationOutcome ao = resourceManager.allocateResources(ar); + + if (ao.status == AllocationStatus.Success) { + + // Assign affinity link + if (!checkOnly) { + List<String> affinityLinkIdList = new ArrayList<>(); + affinityLinkIdList.add("0"); + affinityLinkIdList.add("1"); + affinityLinkIdList.add("2"); + affinityLinkIdList.add("3"); + + String preferedAffinityLinkId = "0"; + long lowestAssignedBw = Long.MAX_VALUE; + for (String affinityLinkId : affinityLinkIdList) { + long used = 0; + String assetId = ed.equipmentId + "-" + affinityLinkId; + Resource r = resourceManager.getResource("Bandwidth", assetId); + if (r != null) { + LimitResource ll = (LimitResource) r; + used = ll.used; + } + if (used < lowestAssignedBw) { + lowestAssignedBw = used; + preferedAffinityLinkId = affinityLinkId; + } + log.info("Assigned bandwidth on affinity link: " + assetId + ": " + used); + } + + log.info("Prefered affinity link for " + ed.equipmentId + ": " + preferedAffinityLinkId); + + ctx.setAttribute(prefix + "affinity-link", preferedAffinityLinkId); + + LimitAllocationRequest ar1 = new LimitAllocationRequest(); + ar1.resourceSetId = sd.resourceSetId; + ar1.resourceUnionId = sd.resourceUnionId; + ar1.resourceShareGroupList = null; + ar1.resourceName = "Bandwidth"; + ar1.assetId = ed.equipmentId + "-" + preferedAffinityLinkId; + ar1.missingResourceAction = AllocationAction.Succeed_Allocate; + ar1.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar1.replace = true; + ar1.strict = false; + ar1.checkLimit = Long.MAX_VALUE; + ar1.checkCount = 0; + ar1.allocateCount = (Long) sd.data.get("service-speed-kbps"); + + resourceManager.allocateResources(ar1); + } + + ctx.setAttribute(prefix + "vpe-name", vpeId); + + vpePortFound = true; + break; + } + + if (ao instanceof LimitAllocationOutcome) { + LimitAllocationOutcome lao = (LimitAllocationOutcome) ao; + long available = lao.limit - lao.used; + if (available > maxAvailableSpeedVpePort) + maxAvailableSpeedVpePort = available; + } + } + + long maxAvailableSpeedVplspePort = 0; + boolean vplspePortFound = false; + + for (Map<String, Object> vplspe : vplspePortData) { + String vplspeId = String.valueOf(vplspe.get("vplspe-id")); + String interfaceName = String.valueOf(vplspe.get("physical-interface-name")); + String portId = vplspeId + "/" + interfaceName; + + log.info("Checking VPLSPE port: " + portId); + + String provStatus = String.valueOf(vplspe.get("provisioning-status")); + if (!provStatus.equals("PROV")) { + log.info("Skipping port " + portId + ": Provisioning status is not PROV."); + continue; + } + + long physicalSpeed = (Long) vplspe.get("physical-interface-speed"); + String physicalSpeedUnit = String.valueOf(vplspe.get("physical-interface-speed-unit")); + long maxPortSpeed = speedUtil.convertToKbps(physicalSpeed, physicalSpeedUnit); + vplspe.put("max-port-speed", maxPortSpeed); + + EquipmentData ed = new EquipmentData(); + ed.data = vplspe; + ed.equipmentId = portId; + ed.equipmentLevel = EquipmentLevel.Port; + + ServiceData sd = new ServiceData(); + sd.data = service; + sd.serviceModel = "L3SDN"; + sd.endPointPosition = "IPAG-TOA"; + sd.resourceUnionId = sr.resourceUnionId; + sd.resourceSetId = sr.resourceSetId; + + StrUtil.info(log, ed); + StrUtil.info(log, sd); + + AllocationRequest ar = allocationRequestBuilder.buildAllocationRequest(sd, ed, checkOnly, + requestType == ReserveRequestType.Change); + AllocationOutcome ao = resourceManager.allocateResources(ar); + + if (ao.status == AllocationStatus.Success) { + vplspePortFound = true; + break; + } + + if (ao instanceof LimitAllocationOutcome) { + LimitAllocationOutcome lao = (LimitAllocationOutcome) ao; + long available = lao.limit - lao.used; + if (available > maxAvailableSpeedVplspePort) + maxAvailableSpeedVplspePort = available; + } + } + + long maxAvailableSpeedServer = 0; + boolean serverFound = false; + + for (Map<String, Object> server : serverData) { + String serverId = String.valueOf(server.get("server-id")); + String serverModel = String.valueOf(server.get("server-model")); + + log.info("Checking Server: " + serverId); + + String endPointPosition = "VCE-Cust"; + + int serverCount = (Integer) server.get("server-count"); + if (serverCount == 0) + serverCount = 1; + String ratioString = parameterDao.getParameter("homing.pserver.sparing.ratio"); + if (ratioString == null || ratioString.length() == 0) + ratioString = "1:1"; + int primaryServerCount = calculatePrimaryServerCount(serverCount, ratioString); + server.put("number-primary-servers", primaryServerCount); + + int evcCount = getEvcCountOnServer(serverId); + int evcCountPerServer = (evcCount + primaryServerCount - 1) / primaryServerCount; + long maxServerSpeed = maxServerSpeedDao.getMaxServerSpeed(serverModel, evcCountPerServer); + server.put("max-server-speed", maxServerSpeed); + server.put("evc-count", evcCount); + server.put("evc-count-per-server", evcCountPerServer); + + EquipmentData ed = new EquipmentData(); + ed.data = server; + ed.equipmentId = serverId; + ed.equipmentLevel = EquipmentLevel.Server; + + ServiceData sd = new ServiceData(); + sd.data = service; + sd.serviceModel = "L3SDN"; + sd.endPointPosition = endPointPosition; + sd.resourceUnionId = sr.resourceUnionId; + sd.resourceSetId = sr.resourceSetId; + + StrUtil.info(log, ed); + StrUtil.info(log, sd); + + AllocationRequest ar = allocationRequestBuilder.buildAllocationRequest(sd, ed, checkOnly, + requestType == ReserveRequestType.Change); + AllocationOutcome ao = resourceManager.allocateResources(ar); + + if (ao.status == AllocationStatus.Success) { + serverFound = true; + + if (ao instanceof MultiResourceAllocationOutcome) { + MultiResourceAllocationOutcome mrao = (MultiResourceAllocationOutcome) ao; + for (AllocationOutcome ao1 : mrao.allocationOutcomeList) { + if (ao1 instanceof LimitAllocationOutcome) { + LimitAllocationOutcome lao = (LimitAllocationOutcome) ao1; + if (lao.request.resourceName.equals("Bandwidth")) { + ThresholdStatus th = allocationRequestBuilder.getThresholdStatus(sd, ed, lao); + setThresholdData(ctx, th, sd, ed); + } + } + } + } + + break; + } + + if (ao instanceof MultiResourceAllocationOutcome) { + MultiResourceAllocationOutcome mrao = (MultiResourceAllocationOutcome) ao; + for (AllocationOutcome ao1 : mrao.allocationOutcomeList) { + if (ao1 instanceof LimitAllocationOutcome) { + LimitAllocationOutcome lao = (LimitAllocationOutcome) ao1; + if (lao.status == AllocationStatus.Failure && lao.request.resourceName.equals("Bandwidth")) { + long available = lao.limit - lao.used; + if (available > maxAvailableSpeedServer) + maxAvailableSpeedServer = available; + } + if (lao.status == AllocationStatus.Failure && lao.request.resourceName.equals("Connection")) { + maxAvailableSpeedServer = 0; + break; + } + + ThresholdStatus th = allocationRequestBuilder.getThresholdStatus(sd, ed, lao); + setThresholdData(ctx, th, sd, ed); + } + } + } + } + + if (vpePortFound && vplspePortFound && serverFound) { + if (!checkOnly) { + if (pendingServiceResource == null) { + log.info("Adding the pending service resource record to DB."); + serviceResourceDao.addServiceResource(sr); + } else { + log.info("Releasing previously allocated resources for resource set id: " + + pendingServiceResource.resourceSetId); + resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); + + log.info("Updating the pending service resource record in DB with service change number: " + + sr.serviceChangeNumber); + serviceResourceDao.updateServiceResource(sr); + } + } + + return QueryStatus.SUCCESS; + } + + log.info("Releasing allocated resources (if any) for resource set id: " + sr.resourceSetId); + resourceManager.releaseResourceSet(sr.resourceSetId); + + long maxAvailableSpeed = Long.MAX_VALUE; + if (!vpePortFound && maxAvailableSpeedVpePort < maxAvailableSpeed) + maxAvailableSpeed = maxAvailableSpeedVpePort; + if (!vplspePortFound && maxAvailableSpeedVplspePort < maxAvailableSpeed) + maxAvailableSpeed = maxAvailableSpeedVplspePort; + if (!serverFound && maxAvailableSpeedServer < maxAvailableSpeed) + maxAvailableSpeed = maxAvailableSpeedServer; + + setOutputContext(ctx, maxAvailableSpeed, "kbps"); + return QueryStatus.NOT_FOUND; + } + + private List<Map<String, Object>> orderVpe(List<Map<String, Object>> vpePortData) { + for (Map<String, Object> vpe : vpePortData) { + String vpeId = String.valueOf(vpe.get("vpe-id")); + String interfaceName = String.valueOf(vpe.get("physical-interface-name")); + String portId = vpeId + "/" + interfaceName; + Resource r = resourceManager.getResource("Bandwidth", portId); + long used = 0; + if (r != null) { + LimitResource ll = (LimitResource) r; + used = ll.used; + } + vpe.put("used-bandwidth", used); + + log.info("Used bandwidth on VPE: " + vpeId + ": " + used); + } + + Collections.sort(vpePortData, new Comparator<Map<String, Object>>() { + + @Override + public int compare(Map<String, Object> o1, Map<String, Object> o2) { + long used1 = (Long) o1.get("used-bandwidth"); + long used2 = (Long) o2.get("used-bandwidth"); + if (used1 < used2) + return -1; + if (used1 > used2) + return 1; + return 0; + } + }); + + return vpePortData; + } + + private void setThresholdData(SvcLogicContext ctx, ThresholdStatus th, ServiceData sd, EquipmentData ed) { + if (th == null) + return; + + String pp = "tmp.resource-allocator-output.threshold-notification-list.threshold-hotification[0]."; + ctx.setAttribute("tmp.resource-allocator-output.threshold-notification-list.threshold-hotification_length", + "1"); + ctx.setAttribute(pp + "message", th.resourceThreshold.message); + ctx.setAttribute(pp + "resource-rule.service-model", th.resourceRule.serviceModel); + ctx.setAttribute(pp + "resource-rule.endpoint-position", th.resourceRule.endPointPosition); + ctx.setAttribute(pp + "resource-rule.resource-name", th.resourceRule.resourceName); + ctx.setAttribute(pp + "resource-rule.equipment-level", th.resourceRule.equipmentLevel); + ctx.setAttribute(pp + "resource-rule.soft-limit-expression", th.resourceRule.softLimitExpression); + ctx.setAttribute(pp + "resource-rule.hard-limit-expression", th.resourceRule.hardLimitExpression); + ctx.setAttribute(pp + "resource-state.used", String.valueOf(th.used)); + ctx.setAttribute(pp + "resource-state.limit-value", String.valueOf(th.limitValue)); + ctx.setAttribute(pp + "resource-state.threshold-value", String.valueOf(th.thresholdValue)); + ctx.setAttribute(pp + "resource-state.last-added", String.valueOf(th.lastAdded)); + ctx.setAttribute(pp + "equipment-data.equipment-id", ed.equipmentId); + for (String edKey : ed.data.keySet()) + ctx.setAttribute(pp + "equipment-data." + edKey, String.valueOf(ed.data.get(edKey))); + } + + private QueryStatus allocateResources(String serviceModel, SvcLogicContext ctx, boolean checkOnly, String prefix) + throws SvcLogicException { + prefix = prefix == null ? "" : prefix + '.'; + + Map<String, Object> service = getServiceData(ctx); + Map<String, Object> ec = getEquipConstraints(ctx); + + String requestTypeStr = ctx.getAttribute("tmp.resource-allocator.request-type"); + if (requestTypeStr == null) + requestTypeStr = "New"; + + ReserveRequestType requestType = null; + try { + requestType = ReserveRequestType.convert(requestTypeStr); + } catch (IllegalArgumentException e) { + throw new SvcLogicException("Invalid tmp.resource-allocator.request-type: " + requestTypeStr + + ". Supported values are New, Change."); + } + + String serviceInstanceId = String.valueOf(service.get("service-instance-id")); + + log.info("Starting reserve: " + requestType + ", service-instance-id: " + serviceInstanceId); + + ServiceResource activeServiceResource = + serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Active); + ServiceResource pendingServiceResource = + serviceResourceDao.getServiceResource(serviceInstanceId, ServiceStatus.Pending); + + log.info("Active ServiceResource: "); + StrUtil.info(log, activeServiceResource); + log.info("Pending ServiceResource: "); + StrUtil.info(log, pendingServiceResource); + + int changeNumber = 1; + if (pendingServiceResource != null) + changeNumber = pendingServiceResource.serviceChangeNumber + 1; + else if (activeServiceResource != null) + changeNumber = activeServiceResource.serviceChangeNumber + 1; + + ServiceData sd = new ServiceData(); + sd.data = service; + sd.serviceModel = serviceModel; + sd.endPointPosition = (String) service.get("end-point-position"); + sd.resourceShareGroup = (String) service.get("resource-share-group"); + sd.resourceName = (String) service.get("resource-name"); + sd.serviceInstanceId = serviceInstanceId; + + StrUtil.info(log, sd); + + List<EndPointData> epList = endPointAllocator.allocateEndPoints(sd, ec, checkOnly, + requestType == ReserveRequestType.Change, changeNumber); + + if (epList != null && !epList.isEmpty()) { + if (!checkOnly) { + EndPointData ep = epList.get(0); + + if (sd.resourceName == null) { + ServiceResource sr = new ServiceResource(); + sr.serviceInstanceId = serviceInstanceId; + sr.serviceStatus = ServiceStatus.Pending; + sr.serviceChangeNumber = changeNumber; + sr.resourceSetId = ep.resourceSetId; + sr.resourceUnionId = ep.resourceUnionId; + + log.info("New ServiceResource: "); + StrUtil.info(log, sr); + + if (pendingServiceResource == null) { + log.info("Adding the pending service resource record to DB."); + serviceResourceDao.addServiceResource(sr); + } else { + log.info("Releasing previously allocated resources for resource set id: " + + pendingServiceResource.resourceSetId); + resourceManager.releaseResourceSet(pendingServiceResource.resourceSetId); + + log.info("Updating the pending service resource record in DB with service change number: " + + sr.serviceChangeNumber); + serviceResourceDao.updateServiceResource(sr); + } + } + + for (EndPointData ep1 : epList) + if (ep1.data != null && !ep1.data.isEmpty()) + for (String key : ep1.data.keySet()) { + String value = String.valueOf(ep1.data.get(key)); + ctx.setAttribute(prefix + key, value); + + log.info("Added context attr: " + prefix + key + ": " + value); + } + } + + return QueryStatus.SUCCESS; + } + + log.info("Capacity not found for EVC: " + serviceInstanceId); + + return QueryStatus.NOT_FOUND; + } + + private int getEvcCountOnServer(String serverId) { + LimitResource l = (LimitResource) resourceManager.getResource("Connection", serverId); + if (l != null) + return (int) l.used; + return 0; + } + + private String getAicSiteId(SvcLogicContext ctx) throws SvcLogicException { + String aicSiteId = ctx.getAttribute("tmp.resource-allocator.aic-site-id"); + if (aicSiteId == null) + throw new SvcLogicException("tmp.resource-allocator.aic-site-id is required in ResourceAllocator"); + return aicSiteId; + } + + private Map<String, Object> getServiceData(SvcLogicContext ctx) throws SvcLogicException { + Map<String, Object> sd = new HashMap<String, Object>(); + + String endPointPosition = ctx.getAttribute("tmp.resource-allocator.end-point-position"); + if (endPointPosition != null && endPointPosition.trim().length() > 0) + sd.put("end-point-position", endPointPosition.trim()); + + String resourceName = ctx.getAttribute("tmp.resource-allocator.resource-name"); + if (resourceName != null && resourceName.trim().length() > 0) + sd.put("resource-name", resourceName.trim()); + + String resourceShareGroup = ctx.getAttribute("tmp.resource-allocator.resource-share-group"); + if (resourceShareGroup != null && resourceShareGroup.trim().length() > 0) + sd.put("resource-share-group", resourceShareGroup.trim()); + + String serviceInstanceId = ctx.getAttribute("tmp.resource-allocator.service-instance-id"); + if (serviceInstanceId == null) + serviceInstanceId = "checkServiceInstance"; + sd.put("service-instance-id", serviceInstanceId); + + String speedStr = ctx.getAttribute("tmp.resource-allocator.speed"); + if (speedStr != null && speedStr.trim().length() > 0) { + long speed = 0; + try { + speed = Long.parseLong(speedStr); + } catch (NumberFormatException e) { + throw new SvcLogicException("Invalid tmp.resource-allocator.speed. Must be a number."); + } + String unit = ctx.getAttribute("tmp.resource-allocator.speed-unit"); + if (unit == null || unit.trim().length() == 0) + throw new SvcLogicException("tmp.resource-allocator.speed-unit is required in ResourceAllocator"); + long serviceSpeedKbps = speedUtil.convertToKbps(speed, unit); + + sd.put("service-speed-kbps", serviceSpeedKbps); + } + + String vpnId = ctx.getAttribute("tmp.resource-allocator.vpn-id"); + if (vpnId != null && vpnId.trim().length() > 0) + sd.put("vpn-id", vpnId.trim()); + + String vpnIdList = ctx.getAttribute("tmp.resource-allocator.vpn-id-list"); + if (vpnIdList != null && vpnIdList.trim().length() > 0) + sd.put("vpn-id-list", vpnIdList.trim()); + + String vrfName = ctx.getAttribute("tmp.resource-allocator.vrf-name"); + if (vrfName != null && vrfName.trim().length() > 0) + sd.put("vrf-name", vrfName.trim()); + + String vrfNameList = ctx.getAttribute("tmp.resource-allocator.vrf-name-list"); + if (vrfNameList != null && vrfNameList.trim().length() > 0) + sd.put("vrf-name-list", vrfNameList.trim()); + + String v4multicast = ctx.getAttribute("tmp.resource-allocator.v4-multicast"); + if (v4multicast != null && v4multicast.trim().length() > 0) + sd.put("v4-multicast", v4multicast.trim()); + + String v6multicast = ctx.getAttribute("tmp.resource-allocator.v6-multicast"); + if (v6multicast != null && v6multicast.trim().length() > 0) + sd.put("v6-multicast", v6multicast.trim()); + + String v4ServingSite = ctx.getAttribute("tmp.resource-allocator.v4-serving-site"); + if (v4ServingSite != null && v4ServingSite.trim().length() > 0) + sd.put("v4-serving-site", v4ServingSite.trim()); + + String v6ServingSite = ctx.getAttribute("tmp.resource-allocator.v6-serving-site"); + if (v6ServingSite != null && v6ServingSite.trim().length() > 0) + sd.put("v6-serving-site", v6ServingSite.trim()); + + return sd; + } + + private Map<String, Object> getEquipConstraints(SvcLogicContext ctx) throws SvcLogicException { + Map<String, Object> mm = new HashMap<String, Object>(); + + String vrfRequired = ctx.getAttribute("tmp.resource-allocator.vrf-required"); + if (vrfRequired != null && vrfRequired.trim().length() > 0) + mm.put("vrf-required", vrfRequired.trim()); + + String clli = ctx.getAttribute("tmp.resource-allocator.clli"); + if (clli == null || clli.trim().length() == 0) + clli = ctx.getAttribute("tmp.resource-allocator.aic-site-id"); + if (clli != null) { + mm.put("clli", clli.trim()); + mm.put("aic-site-id", clli.trim()); + } + + String vpeName = ctx.getAttribute("tmp.resource-allocator.vpe-name"); + if (vpeName != null && vpeName.trim().length() > 0) + mm.put("vpe-name", vpeName.trim()); + + String vnfName = ctx.getAttribute("tmp.resource-allocator.device-name"); + if (vnfName != null && vnfName.trim().length() > 0) + mm.put("vnf-name", vnfName.trim()); + + String excludeVpeList = ctx.getAttribute("tmp.resource-allocator.exclude-vpe-list"); + if (excludeVpeList != null && excludeVpeList.trim().length() > 0) + mm.put("exclude-vpe-list", excludeVpeList.trim()); + + String uplinkCircuitCountStr = + ctx.getAttribute("tmp.resource-allocator.uplink-circuit-list.uplink-circuit_length"); + if (uplinkCircuitCountStr != null) { + long uplinkCircuitCount = 0; + try { + uplinkCircuitCount = Long.parseLong(uplinkCircuitCountStr); + } catch (NumberFormatException e) { + throw new SvcLogicException( + "Invalid tmp.resource-allocator.uplink-circuit-list.uplink-circuit_length. Must be a number."); + } + List<Map<String, Object>> uplinkCircuitList = new ArrayList<>(); + for (int i = 0; i < uplinkCircuitCount; i++) { + String uplinkCircuitId = ctx.getAttribute( + "tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + i + "].uplink-circuit-id"); + String uplinkCircuitBandwidthStr = + ctx.getAttribute("tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + i + + "].uplink-circuit-bandwidth"); + String uplinkCircuitBandwidthUnit = + ctx.getAttribute("tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + i + + "].uplink-circuit-bandwidth-unit"); + + long uplinkCircuitBandwidth = 0; + try { + uplinkCircuitBandwidth = Long.parseLong(uplinkCircuitBandwidthStr); + } catch (NumberFormatException e) { + throw new SvcLogicException("Invalid tmp.resource-allocator.uplink-circuit-list.uplink-circuit[" + + i + "].uplink-circuit-id. Must be a number."); + } + + long uplinkCircuitBandwidthKbps = + speedUtil.convertToKbps(uplinkCircuitBandwidth, uplinkCircuitBandwidthUnit); + + Map<String, Object> uplinkCircuit = new HashMap<String, Object>(); + uplinkCircuit.put("uplink-circuit-id", uplinkCircuitId); + uplinkCircuit.put("uplink-circuit-bandwidth", uplinkCircuitBandwidthKbps); + uplinkCircuitList.add(uplinkCircuit); + } + mm.put("uplink-circuit-list", uplinkCircuitList); + } + + return mm; + } + + private void setOutputContext(SvcLogicContext ctx, long maxAvailableSpeed, String unit) { + ctx.setAttribute("tmp.resource-allocator-output.max-available-speed", String.valueOf(maxAvailableSpeed)); + ctx.setAttribute("tmp.resource-allocator-output.speed-unit", unit); + } + + private int calculatePrimaryServerCount(int serverCount, String ratioString) throws SvcLogicException { + String[] ss = ratioString.split(":"); + if (ss.length != 2) + throw new SvcLogicException("Invalid value for homing.pserver.sparing.ratio: " + ratioString); + + int n = 1, m = 1; + try { + n = Integer.parseInt(ss[0]); + m = Integer.parseInt(ss[1]); + } catch (Exception e) { + throw new SvcLogicException("Invalid value for homing.pserver.sparing.ratio: " + ratioString); + } + + return (serverCount - 1) * n / (n + m) + 1; + } + + public void setServerDao(ServerDao serverDao) { + this.serverDao = serverDao; + } + + public void setVpePortDao(VpePortDao vpePortDao) { + this.vpePortDao = vpePortDao; + } + + public void setVplspePortDao(VplspePortDao vplspePortDao) { + this.vplspePortDao = vplspePortDao; + } + + public void setMaxPortSpeedDao(MaxPortSpeedDao maxPortSpeedDao) { + this.maxPortSpeedDao = maxPortSpeedDao; + } + + public void setMaxServerSpeedDao(MaxServerSpeedDao maxServerSpeedDao) { + this.maxServerSpeedDao = maxServerSpeedDao; + } + + public void setAllocationRequestBuilder(AllocationRequestBuilder allocationRequestBuilder) { + this.allocationRequestBuilder = allocationRequestBuilder; + } + + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } + + public void setSpeedUtil(SpeedUtil speedUtil) { + this.speedUtil = speedUtil; + } + + public void setServiceResourceDao(ServiceResourceDao serviceResourceDao) { + this.serviceResourceDao = serviceResourceDao; + } + + public void setEndPointAllocator(EndPointAllocator endPointAllocator) { + this.endPointAllocator = endPointAllocator; + } + + public void setParameterDao(ParameterDao parameterDao) { + this.parameterDao = parameterDao; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/AffinityAllocationRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/AffinityAllocationRule.java index b77df92a..7245216f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/AffinityAllocationRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/AffinityAllocationRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,37 +32,37 @@ import org.slf4j.LoggerFactory; public class AffinityAllocationRule implements AllocationRule { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(AffinityAllocationRule.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(AffinityAllocationRule.class); - @Override - public AllocationRequest buildAllocationRequest( - String resourceUnionId, - String resourceSetId, - String endPointPosition, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - String affinityLink = (String) equipmentData.data.get("affinity-link"); - if (affinityLink == null) - affinityLink = "1"; + @Override + public AllocationRequest buildAllocationRequest( + String resourceUnionId, + String resourceSetId, + String endPointPosition, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + String affinityLink = (String) equipmentData.data.get("affinity-link"); + if (affinityLink == null) + affinityLink = "1"; - long serviceSpeed = (Long) serviceData.data.get("service-speed-kbps"); + long serviceSpeed = (Long) serviceData.data.get("service-speed-kbps"); - LimitAllocationRequest ar = new LimitAllocationRequest(); - ar.resourceSetId = resourceSetId; - ar.resourceUnionId = resourceUnionId; - ar.resourceShareGroupList = null; - ar.resourceName = "Bandwidth"; - ar.assetId = equipmentData.equipmentId + "-" + affinityLink; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.strict = false; - ar.checkLimit = Long.MAX_VALUE; - ar.checkCount = 0; - ar.allocateCount = serviceSpeed; - return ar; - } + LimitAllocationRequest ar = new LimitAllocationRequest(); + ar.resourceSetId = resourceSetId; + ar.resourceUnionId = resourceUnionId; + ar.resourceShareGroupList = null; + ar.resourceName = "Bandwidth"; + ar.assetId = equipmentData.equipmentId + "-" + affinityLink; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.strict = false; + ar.checkLimit = Long.MAX_VALUE; + ar.checkCount = 0; + ar.allocateCount = serviceSpeed; + return ar; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/DbAllocationRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/DbAllocationRule.java index a066378a..84788395 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/DbAllocationRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/DbAllocationRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,112 +44,112 @@ import org.slf4j.LoggerFactory; public class DbAllocationRule implements AllocationRule { - private static final Logger log = LoggerFactory.getLogger(DbAllocationRule.class); - - private ResourceRuleDao resourceRuleDao; - private RangeRuleDao rangeRuleDao; - - @Override - public AllocationRequest buildAllocationRequest( - String resourceUnionId, - String resourceSetId, - String endPointPosition, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - List<ResourceRule> resourceRuleList = resourceRuleDao.getResourceRules(serviceData.serviceModel, - endPointPosition, equipmentData.equipmentLevel); - List<RangeRule> rangeRuleList = - rangeRuleDao.getRangeRules(serviceData.serviceModel, endPointPosition, equipmentData.equipmentLevel); - - List<AllocationRequest> arlist = new ArrayList<AllocationRequest>(); - - for (ResourceRule rr : resourceRuleList) { - if (serviceData.resourceName != null && !serviceData.resourceName.equals(rr.resourceName)) - continue; - AllocationRequest ar1 = buildAllocationRequest(rr, resourceUnionId, resourceSetId, serviceData, - equipmentData, checkOnly, change); - arlist.add(ar1); - } - for (RangeRule rr : rangeRuleList) { - if (serviceData.resourceName != null && !serviceData.resourceName.equals(rr.rangeName)) - continue; - AllocationRequest ar1 = buildAllocationRequest(rr, resourceUnionId, resourceSetId, serviceData, - equipmentData, checkOnly, change); - arlist.add(ar1); - } - - if (arlist.isEmpty()) - return null; - - if (arlist.size() == 1) - return arlist.get(0); - - MultiResourceAllocationRequest ar = new MultiResourceAllocationRequest(); - ar.stopOnFirstFailure = false; - ar.allocationRequestList = arlist; - return ar; - } - - private AllocationRequest buildAllocationRequest( - ResourceRule resourceRule, - String resourceUnionId, - String resourceSetId, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - StrUtil.info(log, resourceRule); - - LimitAllocationRequest ar = new LimitAllocationRequest(); - ar.resourceSetId = resourceSetId; - ar.resourceUnionId = resourceUnionId; - ar.resourceName = resourceRule.resourceName; - if (serviceData.resourceShareGroup != null) - ar.resourceShareGroupList = Collections.singleton(serviceData.resourceShareGroup); - ar.assetId = equipmentData.equipmentId; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.strict = false; - ar.checkLimit = ExpressionEvaluator.evalLong( - change ? resourceRule.hardLimitExpression : resourceRule.softLimitExpression, equipmentData.data);; - ar.checkCount = ExpressionEvaluator.evalLong(resourceRule.allocationExpression, serviceData.data); - ar.allocateCount = checkOnly ? 0 : ar.checkCount; - return ar; - } - - private AllocationRequest buildAllocationRequest( - RangeRule rangeRule, - String resourceUnionId, - String resourceSetId, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - StrUtil.info(log, rangeRule); - - RangeAllocationRequest ar = new RangeAllocationRequest(); - ar.resourceSetId = resourceSetId; - ar.resourceUnionId = resourceUnionId; - ar.resourceName = rangeRule.rangeName; - ar.assetId = equipmentData.equipmentId; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.check = true; - ar.allocate = !checkOnly; - ar.checkMin = rangeRule.minValue; - ar.checkMax = rangeRule.maxValue; - return ar; - } - - public void setResourceRuleDao(ResourceRuleDao resourceRuleDao) { - this.resourceRuleDao = resourceRuleDao; - } - - public void setRangeRuleDao(RangeRuleDao rangeRuleDao) { - this.rangeRuleDao = rangeRuleDao; - } + private static final Logger log = LoggerFactory.getLogger(DbAllocationRule.class); + + private ResourceRuleDao resourceRuleDao; + private RangeRuleDao rangeRuleDao; + + @Override + public AllocationRequest buildAllocationRequest( + String resourceUnionId, + String resourceSetId, + String endPointPosition, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + List<ResourceRule> resourceRuleList = resourceRuleDao.getResourceRules(serviceData.serviceModel, + endPointPosition, equipmentData.equipmentLevel); + List<RangeRule> rangeRuleList = + rangeRuleDao.getRangeRules(serviceData.serviceModel, endPointPosition, equipmentData.equipmentLevel); + + List<AllocationRequest> arlist = new ArrayList<AllocationRequest>(); + + for (ResourceRule rr : resourceRuleList) { + if (serviceData.resourceName != null && !serviceData.resourceName.equals(rr.resourceName)) + continue; + AllocationRequest ar1 = buildAllocationRequest(rr, resourceUnionId, resourceSetId, serviceData, + equipmentData, checkOnly, change); + arlist.add(ar1); + } + for (RangeRule rr : rangeRuleList) { + if (serviceData.resourceName != null && !serviceData.resourceName.equals(rr.rangeName)) + continue; + AllocationRequest ar1 = buildAllocationRequest(rr, resourceUnionId, resourceSetId, serviceData, + equipmentData, checkOnly, change); + arlist.add(ar1); + } + + if (arlist.isEmpty()) + return null; + + if (arlist.size() == 1) + return arlist.get(0); + + MultiResourceAllocationRequest ar = new MultiResourceAllocationRequest(); + ar.stopOnFirstFailure = false; + ar.allocationRequestList = arlist; + return ar; + } + + private AllocationRequest buildAllocationRequest( + ResourceRule resourceRule, + String resourceUnionId, + String resourceSetId, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + StrUtil.info(log, resourceRule); + + LimitAllocationRequest ar = new LimitAllocationRequest(); + ar.resourceSetId = resourceSetId; + ar.resourceUnionId = resourceUnionId; + ar.resourceName = resourceRule.resourceName; + if (serviceData.resourceShareGroup != null) + ar.resourceShareGroupList = Collections.singleton(serviceData.resourceShareGroup); + ar.assetId = equipmentData.equipmentId; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.strict = false; + ar.checkLimit = ExpressionEvaluator.evalLong( + change ? resourceRule.hardLimitExpression : resourceRule.softLimitExpression, equipmentData.data);; + ar.checkCount = ExpressionEvaluator.evalLong(resourceRule.allocationExpression, serviceData.data); + ar.allocateCount = checkOnly ? 0 : ar.checkCount; + return ar; + } + + private AllocationRequest buildAllocationRequest( + RangeRule rangeRule, + String resourceUnionId, + String resourceSetId, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + StrUtil.info(log, rangeRule); + + RangeAllocationRequest ar = new RangeAllocationRequest(); + ar.resourceSetId = resourceSetId; + ar.resourceUnionId = resourceUnionId; + ar.resourceName = rangeRule.rangeName; + ar.assetId = equipmentData.equipmentId; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.check = true; + ar.allocate = !checkOnly; + ar.checkMin = rangeRule.minValue; + ar.checkMax = rangeRule.maxValue; + return ar; + } + + public void setResourceRuleDao(ResourceRuleDao resourceRuleDao) { + this.resourceRuleDao = resourceRuleDao; + } + + public void setRangeRuleDao(RangeRuleDao rangeRuleDao) { + this.rangeRuleDao = rangeRuleDao; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/ServingSiteAllocationRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/ServingSiteAllocationRule.java index cb36a8be..cf1dd8f8 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/ServingSiteAllocationRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/ServingSiteAllocationRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,47 +34,47 @@ import org.slf4j.LoggerFactory; public class ServingSiteAllocationRule implements AllocationRule { - private static final Logger log = LoggerFactory.getLogger(ServingSiteAllocationRule.class); + private static final Logger log = LoggerFactory.getLogger(ServingSiteAllocationRule.class); - @Override - public AllocationRequest buildAllocationRequest( - String resourceUnionId, - String resourceSetId, - String endPointPosition, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - String vrfName = (String) serviceData.data.get("vrf-name"); - if (vrfName == null) - return null; + @Override + public AllocationRequest buildAllocationRequest( + String resourceUnionId, + String resourceSetId, + String endPointPosition, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + String vrfName = (String) serviceData.data.get("vrf-name"); + if (vrfName == null) + return null; - log.info("vrfName: " + vrfName); + log.info("vrfName: " + vrfName); - String v4ServingSiteStr = (String) serviceData.data.get("v4-serving-site"); - String v6ServingSiteStr = (String) serviceData.data.get("v6-serving-site"); - boolean v4ServingSite = v4ServingSiteStr != null && - (v4ServingSiteStr.equalsIgnoreCase("Y") || v4ServingSiteStr.equalsIgnoreCase("true")); - boolean v6ServingSite = v6ServingSiteStr != null && - (v6ServingSiteStr.equalsIgnoreCase("Y") || v6ServingSiteStr.equalsIgnoreCase("true")); - if (!v4ServingSite && !v6ServingSite) - return null; + String v4ServingSiteStr = (String) serviceData.data.get("v4-serving-site"); + String v6ServingSiteStr = (String) serviceData.data.get("v6-serving-site"); + boolean v4ServingSite = v4ServingSiteStr != null && + (v4ServingSiteStr.equalsIgnoreCase("Y") || v4ServingSiteStr.equalsIgnoreCase("true")); + boolean v6ServingSite = v6ServingSiteStr != null && + (v6ServingSiteStr.equalsIgnoreCase("Y") || v6ServingSiteStr.equalsIgnoreCase("true")); + if (!v4ServingSite && !v6ServingSite) + return null; - VpnParam vpnp = VrfUtil.parseVrfInstanceName(vrfName); + VpnParam vpnp = VrfUtil.parseVrfInstanceName(vrfName); - LimitAllocationRequest ar = new LimitAllocationRequest(); - ar.resourceSetId = resourceSetId; - ar.resourceUnionId = resourceUnionId; - ar.resourceName = "ServingSite"; - ar.assetId = equipmentData.equipmentId + "-" + vpnp.vpnId; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.strict = false; - ar.checkLimit = 1; - ar.checkCount = 1; - ar.allocateCount = 1; + LimitAllocationRequest ar = new LimitAllocationRequest(); + ar.resourceSetId = resourceSetId; + ar.resourceUnionId = resourceUnionId; + ar.resourceName = "ServingSite"; + ar.assetId = equipmentData.equipmentId + "-" + vpnp.vpnId; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.strict = false; + ar.checkLimit = 1; + ar.checkCount = 1; + ar.allocateCount = 1; - return ar; - } + return ar; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/VrfAllocationRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/VrfAllocationRule.java index f23f1e98..cc4adfb3 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/VrfAllocationRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/alloc/VrfAllocationRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,75 +37,75 @@ import org.slf4j.LoggerFactory; public class VrfAllocationRule implements AllocationRule { - private static final Logger log = LoggerFactory.getLogger(VrfAllocationRule.class); + private static final Logger log = LoggerFactory.getLogger(VrfAllocationRule.class); - @Override - public AllocationRequest buildAllocationRequest( - String resourceUnionId, - String resourceSetId, - String endPointPosition, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - String vrfName = (String) serviceData.data.get("vrf-name"); - if (vrfName == null) - return null; + @Override + public AllocationRequest buildAllocationRequest( + String resourceUnionId, + String resourceSetId, + String endPointPosition, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + String vrfName = (String) serviceData.data.get("vrf-name"); + if (vrfName == null) + return null; - log.info("vrfName: " + vrfName); + log.info("vrfName: " + vrfName); - Set<String> resourceShareGroupList = new HashSet<>(); - resourceShareGroupList.add(vrfName); + Set<String> resourceShareGroupList = new HashSet<>(); + resourceShareGroupList.add(vrfName); - LimitAllocationRequest ar = new LimitAllocationRequest(); - ar.resourceSetId = resourceSetId; - ar.resourceUnionId = resourceUnionId; - ar.resourceShareGroupList = resourceShareGroupList; - ar.resourceName = "VRF"; - ar.assetId = equipmentData.equipmentId; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.strict = false; - ar.checkLimit = 999999999; - ar.checkCount = 1; - ar.allocateCount = 1; + LimitAllocationRequest ar = new LimitAllocationRequest(); + ar.resourceSetId = resourceSetId; + ar.resourceUnionId = resourceUnionId; + ar.resourceShareGroupList = resourceShareGroupList; + ar.resourceName = "VRF"; + ar.assetId = equipmentData.equipmentId; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.strict = false; + ar.checkLimit = 999999999; + ar.checkCount = 1; + ar.allocateCount = 1; - String v4MulticastStr = (String) serviceData.data.get("v4-multicast"); - String v6MulticastStr = (String) serviceData.data.get("v6-multicast"); - boolean v4Multicast = v4MulticastStr != null && - (v4MulticastStr.equalsIgnoreCase("Y") || v4MulticastStr.equalsIgnoreCase("true")); - boolean v6Multicast = v6MulticastStr != null && - (v6MulticastStr.equalsIgnoreCase("Y") || v6MulticastStr.equalsIgnoreCase("true")); - if (v4Multicast || v6Multicast) { - LimitAllocationRequest ar2 = new LimitAllocationRequest(); - ar2.resourceSetId = resourceSetId; - ar2.resourceUnionId = resourceUnionId; - ar2.resourceShareGroupList = resourceShareGroupList; - ar2.resourceName = "MVRF"; - ar2.assetId = equipmentData.equipmentId; - ar2.missingResourceAction = AllocationAction.Succeed_Allocate; - ar2.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar2.replace = true; - ar2.strict = false; - ar2.checkLimit = 999999999; - ar2.checkCount = 1; - ar2.allocateCount = 1; + String v4MulticastStr = (String) serviceData.data.get("v4-multicast"); + String v6MulticastStr = (String) serviceData.data.get("v6-multicast"); + boolean v4Multicast = v4MulticastStr != null && + (v4MulticastStr.equalsIgnoreCase("Y") || v4MulticastStr.equalsIgnoreCase("true")); + boolean v6Multicast = v6MulticastStr != null && + (v6MulticastStr.equalsIgnoreCase("Y") || v6MulticastStr.equalsIgnoreCase("true")); + if (v4Multicast || v6Multicast) { + LimitAllocationRequest ar2 = new LimitAllocationRequest(); + ar2.resourceSetId = resourceSetId; + ar2.resourceUnionId = resourceUnionId; + ar2.resourceShareGroupList = resourceShareGroupList; + ar2.resourceName = "MVRF"; + ar2.assetId = equipmentData.equipmentId; + ar2.missingResourceAction = AllocationAction.Succeed_Allocate; + ar2.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar2.replace = true; + ar2.strict = false; + ar2.checkLimit = 999999999; + ar2.checkCount = 1; + ar2.allocateCount = 1; - MultiResourceAllocationRequest mar = new MultiResourceAllocationRequest(); - mar.resourceSetId = resourceSetId; - mar.resourceUnionId = resourceUnionId; - mar.resourceShareGroupList = resourceShareGroupList; - mar.assetId = equipmentData.equipmentId; - mar.missingResourceAction = AllocationAction.Succeed_Allocate; - mar.expiredResourceAction = AllocationAction.Succeed_Allocate; - mar.allocationRequestList = new ArrayList<>(); - mar.allocationRequestList.add(ar); - mar.allocationRequestList.add(ar2); + MultiResourceAllocationRequest mar = new MultiResourceAllocationRequest(); + mar.resourceSetId = resourceSetId; + mar.resourceUnionId = resourceUnionId; + mar.resourceShareGroupList = resourceShareGroupList; + mar.assetId = equipmentData.equipmentId; + mar.missingResourceAction = AllocationAction.Succeed_Allocate; + mar.expiredResourceAction = AllocationAction.Succeed_Allocate; + mar.allocationRequestList = new ArrayList<>(); + mar.allocationRequestList.add(ar); + mar.allocationRequestList.add(ar2); - return mar; - } + return mar; + } - return ar; - } + return ar; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/AnyVrfPresentCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/AnyVrfPresentCheck.java index aee761c7..fd9ca1e5 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/AnyVrfPresentCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/AnyVrfPresentCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,41 +34,41 @@ import org.slf4j.LoggerFactory; public class AnyVrfPresentCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(AnyVrfPresentCheck.class); + private static final Logger log = LoggerFactory.getLogger(AnyVrfPresentCheck.class); - private ResourceManager resourceManager; + private ResourceManager resourceManager; - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String vrfNameListStr = (String) serviceData.data.get("vrf-name-list"); - if (vrfNameListStr == null) - vrfNameListStr = (String) serviceData.data.get("vrf-name"); - if (vrfNameListStr == null) - return true; + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String vrfNameListStr = (String) serviceData.data.get("vrf-name-list"); + if (vrfNameListStr == null) + vrfNameListStr = (String) serviceData.data.get("vrf-name"); + if (vrfNameListStr == null) + return true; - String vrfRequiredStr = (String) equipmentConstraints.get("vrf-required"); - if (vrfRequiredStr == null || !vrfRequiredStr.equalsIgnoreCase("true")) - return true; + String vrfRequiredStr = (String) equipmentConstraints.get("vrf-required"); + if (vrfRequiredStr == null || !vrfRequiredStr.equalsIgnoreCase("true")) + return true; - String[] vrfNameList = vrfNameListStr.split(","); + String[] vrfNameList = vrfNameListStr.split(","); - Resource r = resourceManager.getResource("VRF", equipData.equipmentId); - if (r != null && r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) - for (String vrfName : vrfNameList) - if (ai.resourceShareGroupList.contains(vrfName)) - return true; + Resource r = resourceManager.getResource("VRF", equipData.equipmentId); + if (r != null && r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) + for (String vrfName : vrfNameList) + if (ai.resourceShareGroupList.contains(vrfName)) + return true; - log.info("Skipping VPE " + equipData.equipmentId + - ": Existing VRF is required, but there is no existing VRF on the VPE for any of the requested VPNs."); - return false; - } + log.info("Skipping VPE " + equipData.equipmentId + + ": Existing VRF is required, but there is no existing VRF on the VPE for any of the requested VPNs."); + return false; + } - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ExcludeVpeCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ExcludeVpeCheck.java index 25571fb2..7ceac902 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ExcludeVpeCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ExcludeVpeCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,27 +31,27 @@ import org.slf4j.LoggerFactory; public class ExcludeVpeCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(ExcludeVpeCheck.class); - - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String excludeVpeListStr = (String) equipmentConstraints.get("exclude-vpe-list"); - if (excludeVpeListStr == null) - return true; - - String vpeName = (String) equipData.data.get("vpe-id"); - - String[] excludeVpeList = excludeVpeListStr.split(","); - for (String excludeVpe : excludeVpeList) - if (excludeVpe.equals(vpeName)) { - log.info("Skipping VPE " + equipData.equipmentId + ": Present in the exclude VPE list."); - return false; - } - - return true; - } + private static final Logger log = LoggerFactory.getLogger(ExcludeVpeCheck.class); + + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String excludeVpeListStr = (String) equipmentConstraints.get("exclude-vpe-list"); + if (excludeVpeListStr == null) + return true; + + String vpeName = (String) equipData.data.get("vpe-id"); + + String[] excludeVpeList = excludeVpeListStr.split(","); + for (String excludeVpe : excludeVpeList) + if (excludeVpe.equals(vpeName)) { + log.info("Skipping VPE " + equipData.equipmentId + ": Present in the exclude VPE list."); + return false; + } + + return true; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/HubWithRgCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/HubWithRgCheck.java index 6c2b4c59..79428de8 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/HubWithRgCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/HubWithRgCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,72 +36,72 @@ import org.slf4j.LoggerFactory; public class HubWithRgCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(HubWithRgCheck.class); - - private ResourceManager resourceManager; - - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String vrfName = (String) serviceData.data.get("vrf-name"); - if (vrfName == null) - return true; - - // Check if this is HUB. If not, this check is not applicable - VpnParam vpnp = VrfUtil.parseVrfInstanceName(vrfName); - if (vpnp.siteType == null || !vpnp.siteType.equals("HUB")) - return true; - - boolean rgPresent = vpnp.routeGroupName != null; - - // First check if a new VRF would be required. If not, we are good - Resource r = resourceManager.getResource("VRF", equipData.equipmentId); - if (r != null && r.allocationItems != null) { - for (AllocationItem ai : r.allocationItems) - if (ai.resourceShareGroupList.contains(vrfName)) - return true; - - String resourceUnionId = serviceData.serviceInstanceId + '/' + serviceData.endPointPosition; - - // Check if there is already another HUB VRF with RG presence that does not match the requested - for (AllocationItem ai : r.allocationItems) { - - // Skip the allocation item for the current service instance, if there, in case it is a change order - if (ai.resourceUnionId.equals(resourceUnionId)) - continue; - - if (ai.resourceShareGroupList != null && ai.resourceShareGroupList.size() > 0) { - String vrfName2 = ai.resourceShareGroupList.iterator().next(); - VpnParam vpnp2 = VrfUtil.parseVrfInstanceName(vrfName2); - - if (vpnp2.siteType == null || !vpnp2.siteType.equals("HUB")) - continue; - - boolean rgPresent2 = vpnp2.routeGroupName != null; - - if (rgPresent && !rgPresent2) { - log.info("Skipping VPE " + equipData.equipmentId + - ": This request requires new HUB with RG VRF, " + - "but there is already another HUB VRF with no RG: " + vrfName2 + "."); - return false; - } - if (!rgPresent && rgPresent2) { - log.info("Skipping VPE " + equipData.equipmentId + - ": This request requires new HUB VRF with no RG, " + - "but there is already another HUB with RG VRF: " + vrfName2 + "."); - return false; - } - } - } - } - - return true; - } - - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + private static final Logger log = LoggerFactory.getLogger(HubWithRgCheck.class); + + private ResourceManager resourceManager; + + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String vrfName = (String) serviceData.data.get("vrf-name"); + if (vrfName == null) + return true; + + // Check if this is HUB. If not, this check is not applicable + VpnParam vpnp = VrfUtil.parseVrfInstanceName(vrfName); + if (vpnp.siteType == null || !vpnp.siteType.equals("HUB")) + return true; + + boolean rgPresent = vpnp.routeGroupName != null; + + // First check if a new VRF would be required. If not, we are good + Resource r = resourceManager.getResource("VRF", equipData.equipmentId); + if (r != null && r.allocationItems != null) { + for (AllocationItem ai : r.allocationItems) + if (ai.resourceShareGroupList.contains(vrfName)) + return true; + + String resourceUnionId = serviceData.serviceInstanceId + '/' + serviceData.endPointPosition; + + // Check if there is already another HUB VRF with RG presence that does not match the requested + for (AllocationItem ai : r.allocationItems) { + + // Skip the allocation item for the current service instance, if there, in case it is a change order + if (ai.resourceUnionId.equals(resourceUnionId)) + continue; + + if (ai.resourceShareGroupList != null && ai.resourceShareGroupList.size() > 0) { + String vrfName2 = ai.resourceShareGroupList.iterator().next(); + VpnParam vpnp2 = VrfUtil.parseVrfInstanceName(vrfName2); + + if (vpnp2.siteType == null || !vpnp2.siteType.equals("HUB")) + continue; + + boolean rgPresent2 = vpnp2.routeGroupName != null; + + if (rgPresent && !rgPresent2) { + log.info("Skipping VPE " + equipData.equipmentId + + ": This request requires new HUB with RG VRF, " + + "but there is already another HUB VRF with no RG: " + vrfName2 + "."); + return false; + } + if (!rgPresent && rgPresent2) { + log.info("Skipping VPE " + equipData.equipmentId + + ": This request requires new HUB VRF with no RG, " + + "but there is already another HUB with RG VRF: " + vrfName2 + "."); + return false; + } + } + } + } + + return true; + } + + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/OneMVrfCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/OneMVrfCheck.java index 56fd535e..82e7e01a 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/OneMVrfCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/OneMVrfCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,65 +36,65 @@ import org.slf4j.LoggerFactory; public class OneMVrfCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(OneMVrfCheck.class); + private static final Logger log = LoggerFactory.getLogger(OneMVrfCheck.class); - private ResourceManager resourceManager; + private ResourceManager resourceManager; - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String vrfName = (String) serviceData.data.get("vrf-name"); - if (vrfName == null) - return true; + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String vrfName = (String) serviceData.data.get("vrf-name"); + if (vrfName == null) + return true; - String v4MulticastStr = (String) serviceData.data.get("v4-multicast"); - String v6MulticastStr = (String) serviceData.data.get("v6-multicast"); - boolean v4Multicast = v4MulticastStr != null && - (v4MulticastStr.equalsIgnoreCase("Y") || v4MulticastStr.equalsIgnoreCase("true")); - boolean v6Multicast = v6MulticastStr != null && - (v6MulticastStr.equalsIgnoreCase("Y") || v6MulticastStr.equalsIgnoreCase("true")); - if (!v4Multicast && !v6Multicast) - return true; + String v4MulticastStr = (String) serviceData.data.get("v4-multicast"); + String v6MulticastStr = (String) serviceData.data.get("v6-multicast"); + boolean v4Multicast = v4MulticastStr != null && + (v4MulticastStr.equalsIgnoreCase("Y") || v4MulticastStr.equalsIgnoreCase("true")); + boolean v6Multicast = v6MulticastStr != null && + (v6MulticastStr.equalsIgnoreCase("Y") || v6MulticastStr.equalsIgnoreCase("true")); + if (!v4Multicast && !v6Multicast) + return true; - // First check if a new VRF would be required. If not, we are good - Resource r = resourceManager.getResource("VRF", equipData.equipmentId); - if (r != null && r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) - if (ai.resourceShareGroupList.contains(vrfName)) - return true; + // First check if a new VRF would be required. If not, we are good + Resource r = resourceManager.getResource("VRF", equipData.equipmentId); + if (r != null && r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) + if (ai.resourceShareGroupList.contains(vrfName)) + return true; - String resourceUnionId = serviceData.serviceInstanceId + '/' + serviceData.endPointPosition; + String resourceUnionId = serviceData.serviceInstanceId + '/' + serviceData.endPointPosition; - // Check if there is already another multicast VRF for the same VPN - VpnParam vpnp = VrfUtil.parseVrfInstanceName(vrfName); - r = resourceManager.getResource("MVRF", equipData.equipmentId); - if (r != null && r.allocationItems != null) { - for (AllocationItem ai : r.allocationItems) { + // Check if there is already another multicast VRF for the same VPN + VpnParam vpnp = VrfUtil.parseVrfInstanceName(vrfName); + r = resourceManager.getResource("MVRF", equipData.equipmentId); + if (r != null && r.allocationItems != null) { + for (AllocationItem ai : r.allocationItems) { - // Skip the allocation item for the current service instance, if there, in case it is a change order - if (ai.resourceUnionId.equals(resourceUnionId)) - continue; + // Skip the allocation item for the current service instance, if there, in case it is a change order + if (ai.resourceUnionId.equals(resourceUnionId)) + continue; - if (ai.resourceShareGroupList != null && ai.resourceShareGroupList.size() > 0) { - String vrfName2 = ai.resourceShareGroupList.iterator().next(); - VpnParam vpnp2 = VrfUtil.parseVrfInstanceName(vrfName2); - if (vpnp.vpnId.equals(vpnp2.vpnId)) { - log.info("Skipping VPE " + equipData.equipmentId + - ": This request requires new multicast VRF, " + - "but there is already another multicast VRF for the same VPN: " + vrfName2 + "."); - return false; - } - } - } - } + if (ai.resourceShareGroupList != null && ai.resourceShareGroupList.size() > 0) { + String vrfName2 = ai.resourceShareGroupList.iterator().next(); + VpnParam vpnp2 = VrfUtil.parseVrfInstanceName(vrfName2); + if (vpnp.vpnId.equals(vpnp2.vpnId)) { + log.info("Skipping VPE " + equipData.equipmentId + + ": This request requires new multicast VRF, " + + "but there is already another multicast VRF for the same VPN: " + vrfName2 + "."); + return false; + } + } + } + } - return true; - } + return true; + } - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ProvStatusCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ProvStatusCheck.java index baed60eb..1ec079f9 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ProvStatusCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/ProvStatusCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,19 +31,19 @@ import org.slf4j.LoggerFactory; public class ProvStatusCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(ProvStatusCheck.class); + private static final Logger log = LoggerFactory.getLogger(ProvStatusCheck.class); - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String provStatus = (String) equipData.data.get("provisioning-status"); - if (provStatus == null || !provStatus.equals("PROV")) { - log.info("Skipping VPE " + equipData.equipmentId + ": Not in PROV status."); - return false; - } - return true; - } + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String provStatus = (String) equipData.data.get("provisioning-status"); + if (provStatus == null || !provStatus.equals("PROV")) { + log.info("Skipping VPE " + equipData.equipmentId + ": Not in PROV status."); + return false; + } + return true; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VlanSpeedCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VlanSpeedCheck.java index 4644a14a..57b8f037 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VlanSpeedCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VlanSpeedCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,20 +31,20 @@ import org.slf4j.LoggerFactory; public class VlanSpeedCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(VlanSpeedCheck.class); + private static final Logger log = LoggerFactory.getLogger(VlanSpeedCheck.class); - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String vpeName = (String) equipData.data.get("vpe-id"); - Long serviceSpeed = (Long) serviceData.data.get("service-speed-kbps"); - if (serviceSpeed != null && serviceSpeed > 0 && serviceSpeed < 1000) { - log.info("Skipping VPE " + vpeName + ": Service speed < 1Mbps is not supported."); - return false; - } - return true; - } + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String vpeName = (String) equipData.data.get("vpe-id"); + Long serviceSpeed = (Long) serviceData.data.get("service-speed-kbps"); + if (serviceSpeed != null && serviceSpeed > 0 && serviceSpeed < 1000) { + log.info("Skipping VPE " + vpeName + ": Service speed < 1Mbps is not supported."); + return false; + } + return true; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VpeLockCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VpeLockCheck.java index 3b350b41..fe7bd30d 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VpeLockCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/check/VpeLockCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,77 +35,77 @@ import org.slf4j.LoggerFactory; public class VpeLockCheck implements EquipmentCheck { - private static final Logger log = LoggerFactory.getLogger(VpeLockCheck.class); - - private VpeLockDao vpeLockDao; - private ResourceManager resourceManager; - - @Override - public boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints) { - String vrfName = (String) serviceData.data.get("vrf-name"); - if (vrfName == null) - return true; - - String vpeName = (String) equipData.data.get("vpe-id"); - String vpeLock = vpeLockDao.getVpeLock(vpeName); - if (vpeLock == null) - return true; - - if (vpeLock.equals("vpe-total-lock")) { - log.info("Skipping VPE " + vpeName + ": There is a " + vpeLock + " on it."); - return false; - } - - if (vpeLock.equals("vpe-vrf-lock") && requiresNewVrf(equipData.equipmentId, vrfName)) { - log.info("Skipping VPE " + vpeName + ": There is a " + vpeLock + - " on it and it requires a new VRF for VPN: " + vrfName + "."); - return false; - } - - if (vpeLock.equals("vpe-mvrf-lock") && requiresNewMVrf(equipData.equipmentId, vrfName)) { - log.info("Skipping VPE " + vpeName + ": There is a " + vpeLock + - " on it and it requires a new multicast VRF for VPN: " + vrfName + "."); - return false; - } - - return true; - } - - boolean requiresNewVrf(String equipmentId, String vrfName) { - Resource r = resourceManager.getResource("VRF", equipmentId); - if (r == null || r.allocationItems == null) - return true; - - for (AllocationItem ai : r.allocationItems) { - if (ai.resourceShareGroupList.contains(vrfName)) - return false; - } - - return true; - } - - boolean requiresNewMVrf(String equipmentId, String vrfName) { - Resource r = resourceManager.getResource("MVRF", equipmentId); - if (r == null || r.allocationItems == null) - return true; - - for (AllocationItem ai : r.allocationItems) { - if (ai.resourceShareGroupList.contains(vrfName)) - return false; - } - - return true; - } - - public void setVpeLockDao(VpeLockDao vpeLockDao) { - this.vpeLockDao = vpeLockDao; - } - - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + private static final Logger log = LoggerFactory.getLogger(VpeLockCheck.class); + + private VpeLockDao vpeLockDao; + private ResourceManager resourceManager; + + @Override + public boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints) { + String vrfName = (String) serviceData.data.get("vrf-name"); + if (vrfName == null) + return true; + + String vpeName = (String) equipData.data.get("vpe-id"); + String vpeLock = vpeLockDao.getVpeLock(vpeName); + if (vpeLock == null) + return true; + + if (vpeLock.equals("vpe-total-lock")) { + log.info("Skipping VPE " + vpeName + ": There is a " + vpeLock + " on it."); + return false; + } + + if (vpeLock.equals("vpe-vrf-lock") && requiresNewVrf(equipData.equipmentId, vrfName)) { + log.info("Skipping VPE " + vpeName + ": There is a " + vpeLock + + " on it and it requires a new VRF for VPN: " + vrfName + "."); + return false; + } + + if (vpeLock.equals("vpe-mvrf-lock") && requiresNewMVrf(equipData.equipmentId, vrfName)) { + log.info("Skipping VPE " + vpeName + ": There is a " + vpeLock + + " on it and it requires a new multicast VRF for VPN: " + vrfName + "."); + return false; + } + + return true; + } + + boolean requiresNewVrf(String equipmentId, String vrfName) { + Resource r = resourceManager.getResource("VRF", equipmentId); + if (r == null || r.allocationItems == null) + return true; + + for (AllocationItem ai : r.allocationItems) { + if (ai.resourceShareGroupList.contains(vrfName)) + return false; + } + + return true; + } + + boolean requiresNewMVrf(String equipmentId, String vrfName) { + Resource r = resourceManager.getResource("MVRF", equipmentId); + if (r == null || r.allocationItems == null) + return true; + + for (AllocationItem ai : r.allocationItems) { + if (ai.resourceShareGroupList.contains(vrfName)) + return false; + } + + return true; + } + + public void setVpeLockDao(VpeLockDao vpeLockDao) { + this.vpeLockDao = vpeLockDao; + } + + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/AllocationRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/AllocationRule.java index 0877933b..260d9d01 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/AllocationRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/AllocationRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,12 +26,12 @@ import org.openecomp.sdnc.rm.data.AllocationRequest; public interface AllocationRule { - AllocationRequest buildAllocationRequest( - String resourceUnionId, - String resourceSetId, - String endPointPosition, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change); + AllocationRequest buildAllocationRequest( + String resourceUnionId, + String resourceSetId, + String endPointPosition, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocationDefinition.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocationDefinition.java index 21e49c3a..5a5623c1 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocationDefinition.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocationDefinition.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,34 +27,34 @@ import org.openecomp.sdnc.ra.equip.comp.EquipmentReader; public class EndPointAllocationDefinition { - public String serviceModel; - public String endPointPosition; - public EquipmentReader equipmentReader; - public List<EquipmentCheck> equipmentCheckList; - public List<PreferenceRule> preferenceRuleList; - public List<AllocationRule> allocationRuleList; + public String serviceModel; + public String endPointPosition; + public EquipmentReader equipmentReader; + public List<EquipmentCheck> equipmentCheckList; + public List<PreferenceRule> preferenceRuleList; + public List<AllocationRule> allocationRuleList; - public void setServiceModel(String serviceModel) { - this.serviceModel = serviceModel; - } + public void setServiceModel(String serviceModel) { + this.serviceModel = serviceModel; + } - public void setEndPointPosition(String endPointPosition) { - this.endPointPosition = endPointPosition; - } + public void setEndPointPosition(String endPointPosition) { + this.endPointPosition = endPointPosition; + } - public void setEquipmentReader(EquipmentReader equipmentReader) { - this.equipmentReader = equipmentReader; - } + public void setEquipmentReader(EquipmentReader equipmentReader) { + this.equipmentReader = equipmentReader; + } - public void setEquipmentCheckList(List<EquipmentCheck> equipmentCheckList) { - this.equipmentCheckList = equipmentCheckList; - } + public void setEquipmentCheckList(List<EquipmentCheck> equipmentCheckList) { + this.equipmentCheckList = equipmentCheckList; + } - public void setPreferenceRuleList(List<PreferenceRule> preferenceRuleList) { - this.preferenceRuleList = preferenceRuleList; - } + public void setPreferenceRuleList(List<PreferenceRule> preferenceRuleList) { + this.preferenceRuleList = preferenceRuleList; + } - public void setAllocationRuleList(List<AllocationRule> allocationRuleList) { - this.allocationRuleList = allocationRuleList; - } + public void setAllocationRuleList(List<AllocationRule> allocationRuleList) { + this.allocationRuleList = allocationRuleList; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocator.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocator.java index 645c953c..e817d587 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocator.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocator.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,10 +26,10 @@ import java.util.Map; public interface EndPointAllocator { - List<EndPointData> allocateEndPoints( - ServiceData serviceData, - Map<String, Object> equipmentConstraints, - boolean checkOnly, - boolean change, - int changeNumber); + List<EndPointData> allocateEndPoints( + ServiceData serviceData, + Map<String, Object> equipmentConstraints, + boolean checkOnly, + boolean change, + int changeNumber); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocatorImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocatorImpl.java index 1af81434..3d11f8e0 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocatorImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointAllocatorImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,171 +44,171 @@ import org.slf4j.LoggerFactory; public class EndPointAllocatorImpl implements EndPointAllocator { - private static final Logger log = LoggerFactory.getLogger(EndPointAllocatorImpl.class); - - private Map<String, List<EndPointAllocationDefinition>> endPointAllocationDefinitionMap; - - private ResourceManager resourceManager; - - @Override - public List<EndPointData> allocateEndPoints( - ServiceData serviceData, - Map<String, Object> equipmentConstraints, - boolean checkOnly, - boolean change, - int changeNumber) { - List<EndPointAllocationDefinition> defList = endPointAllocationDefinitionMap.get(serviceData.serviceModel); - if (defList == null) - throw new NotImplementedException("Service model: " + serviceData.serviceModel + " not supported"); - - List<EndPointData> epList = new ArrayList<>(); - for (EndPointAllocationDefinition def : defList) { - if (serviceData.endPointPosition != null && !serviceData.endPointPosition.equals(def.endPointPosition)) - continue; - - log.info( - "Starting allocation of end point: " + def.endPointPosition + ": " + serviceData.serviceInstanceId); - - String resourceUnionId = serviceData.serviceInstanceId + '/' + def.endPointPosition; - String resourceSetId = resourceUnionId + '/' + changeNumber; - - String equipmentId = (String) equipmentConstraints.get("equipment-id"); - if (equipmentId == null) { - EndPointData epExisting = readEndPoint(resourceUnionId, resourceSetId); - if (epExisting != null && epExisting.equipmentId != null) { - equipmentConstraints.put("equipment-id", epExisting.equipmentId); - - log.info("Trying assignment on the current equipment: " + epExisting.equipmentId); - } - } - - List<EquipmentData> equipList = def.equipmentReader.readEquipment(equipmentConstraints); - if (equipList == null || equipList.isEmpty()) { - log.info("Equipment not found for " + def.endPointPosition); - break; - } - - if (def.equipmentCheckList != null) { - for (EquipmentCheck filter : def.equipmentCheckList) { - List<EquipmentData> newEquipList = new ArrayList<>(); - for (EquipmentData equipData : equipList) - if (filter.checkEquipment(def.endPointPosition, serviceData, equipData, equipmentConstraints)) - newEquipList.add(equipData); - equipList = newEquipList; - } - if (equipList.isEmpty()) { - log.info("No equipment meets the requiremets for the service for: " + def.endPointPosition); - break; - } - } - - if (equipList.size() > 1 && def.preferenceRuleList != null && !def.preferenceRuleList.isEmpty()) { - - List<PrefEquipment> prefEquipList = new ArrayList<>(); - for (EquipmentData equipData : equipList) { - PrefEquipment prefEquip = new PrefEquipment(); - prefEquip.equipData = equipData; - prefEquip.prefNumbers = new long[def.preferenceRuleList.size()]; - prefEquipList.add(prefEquip); - - int i = 0; - for (PreferenceRule prefRule : def.preferenceRuleList) - prefEquip.prefNumbers[i++] = - prefRule.assignOrderNumber(def.endPointPosition, serviceData, equipData); - } - - Collections.sort(prefEquipList); - - equipList = new ArrayList<>(); - for (PrefEquipment prefEquip : prefEquipList) - equipList.add(prefEquip.equipData); - } - - for (EquipmentData equipData : equipList) { - boolean allgood = true; - if (def.allocationRuleList != null) - for (AllocationRule allocationRule : def.allocationRuleList) { - AllocationRequest ar = allocationRule.buildAllocationRequest(resourceUnionId, resourceSetId, - def.endPointPosition, serviceData, equipData, checkOnly, change); - if (ar != null) { - AllocationOutcome ao = resourceManager.allocateResources(ar); - if (ao.status != AllocationStatus.Success) { - allgood = false; - break; - } - } - } - if (allgood) { - EndPointData ep = readEndPoint(resourceUnionId, resourceSetId); - epList.add(ep); - break; - } - } - } - - return epList; - } - - private EndPointData readEndPoint(String resourceUnionId, String resourceSetId) { - EndPointData ep = new EndPointData(); - ep.resourceUnionId = resourceUnionId; - ep.resourceSetId = resourceSetId; - - int i1 = resourceUnionId.indexOf('/'); - if (i1 > 0) - ep.endPointPosition = resourceUnionId.substring(i1 + 1); - - ep.data = new HashMap<>(); - - List<Resource> rlist = resourceManager.getResourceUnion(resourceUnionId); - for (Resource r : rlist) { - if (r instanceof RangeResource) { - RangeResource rr = (RangeResource) r; - for (AllocationItem ai : r.allocationItems) - if (ai.resourceUnionId.equals(resourceUnionId)) { - RangeAllocationItem rai = (RangeAllocationItem) ai; - ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName, rai.used.first()); - } - } - if (r instanceof LimitResource) { - LimitResource rr = (LimitResource) r; - for (AllocationItem ai : r.allocationItems) - if (ai.resourceUnionId.equals(resourceUnionId)) { - LimitAllocationItem rai = (LimitAllocationItem) ai; - ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName + ".allocated", rai.used); - ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName + ".used", rr.used); - ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName + ".assetId", - r.resourceKey.assetId); - } - } - } - - return ep; - } - - private static class PrefEquipment implements Comparable<PrefEquipment> { - - public long[] prefNumbers; - public EquipmentData equipData; - - @Override - public int compareTo(PrefEquipment o) { - for (int i = 0; i < prefNumbers.length; i++) { - if (prefNumbers[i] < o.prefNumbers[i]) - return -1; - if (prefNumbers[i] > o.prefNumbers[i]) - return 1; - } - return 0; - } - } - - public void setEndPointAllocationDefinitionMap( - Map<String, List<EndPointAllocationDefinition>> endPointAllocationDefinitionMap) { - this.endPointAllocationDefinitionMap = endPointAllocationDefinitionMap; - } - - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + private static final Logger log = LoggerFactory.getLogger(EndPointAllocatorImpl.class); + + private Map<String, List<EndPointAllocationDefinition>> endPointAllocationDefinitionMap; + + private ResourceManager resourceManager; + + @Override + public List<EndPointData> allocateEndPoints( + ServiceData serviceData, + Map<String, Object> equipmentConstraints, + boolean checkOnly, + boolean change, + int changeNumber) { + List<EndPointAllocationDefinition> defList = endPointAllocationDefinitionMap.get(serviceData.serviceModel); + if (defList == null) + throw new NotImplementedException("Service model: " + serviceData.serviceModel + " not supported"); + + List<EndPointData> epList = new ArrayList<>(); + for (EndPointAllocationDefinition def : defList) { + if (serviceData.endPointPosition != null && !serviceData.endPointPosition.equals(def.endPointPosition)) + continue; + + log.info( + "Starting allocation of end point: " + def.endPointPosition + ": " + serviceData.serviceInstanceId); + + String resourceUnionId = serviceData.serviceInstanceId + '/' + def.endPointPosition; + String resourceSetId = resourceUnionId + '/' + changeNumber; + + String equipmentId = (String) equipmentConstraints.get("equipment-id"); + if (equipmentId == null) { + EndPointData epExisting = readEndPoint(resourceUnionId, resourceSetId); + if (epExisting != null && epExisting.equipmentId != null) { + equipmentConstraints.put("equipment-id", epExisting.equipmentId); + + log.info("Trying assignment on the current equipment: " + epExisting.equipmentId); + } + } + + List<EquipmentData> equipList = def.equipmentReader.readEquipment(equipmentConstraints); + if (equipList == null || equipList.isEmpty()) { + log.info("Equipment not found for " + def.endPointPosition); + break; + } + + if (def.equipmentCheckList != null) { + for (EquipmentCheck filter : def.equipmentCheckList) { + List<EquipmentData> newEquipList = new ArrayList<>(); + for (EquipmentData equipData : equipList) + if (filter.checkEquipment(def.endPointPosition, serviceData, equipData, equipmentConstraints)) + newEquipList.add(equipData); + equipList = newEquipList; + } + if (equipList.isEmpty()) { + log.info("No equipment meets the requiremets for the service for: " + def.endPointPosition); + break; + } + } + + if (equipList.size() > 1 && def.preferenceRuleList != null && !def.preferenceRuleList.isEmpty()) { + + List<PrefEquipment> prefEquipList = new ArrayList<>(); + for (EquipmentData equipData : equipList) { + PrefEquipment prefEquip = new PrefEquipment(); + prefEquip.equipData = equipData; + prefEquip.prefNumbers = new long[def.preferenceRuleList.size()]; + prefEquipList.add(prefEquip); + + int i = 0; + for (PreferenceRule prefRule : def.preferenceRuleList) + prefEquip.prefNumbers[i++] = + prefRule.assignOrderNumber(def.endPointPosition, serviceData, equipData); + } + + Collections.sort(prefEquipList); + + equipList = new ArrayList<>(); + for (PrefEquipment prefEquip : prefEquipList) + equipList.add(prefEquip.equipData); + } + + for (EquipmentData equipData : equipList) { + boolean allgood = true; + if (def.allocationRuleList != null) + for (AllocationRule allocationRule : def.allocationRuleList) { + AllocationRequest ar = allocationRule.buildAllocationRequest(resourceUnionId, resourceSetId, + def.endPointPosition, serviceData, equipData, checkOnly, change); + if (ar != null) { + AllocationOutcome ao = resourceManager.allocateResources(ar); + if (ao.status != AllocationStatus.Success) { + allgood = false; + break; + } + } + } + if (allgood) { + EndPointData ep = readEndPoint(resourceUnionId, resourceSetId); + epList.add(ep); + break; + } + } + } + + return epList; + } + + private EndPointData readEndPoint(String resourceUnionId, String resourceSetId) { + EndPointData ep = new EndPointData(); + ep.resourceUnionId = resourceUnionId; + ep.resourceSetId = resourceSetId; + + int i1 = resourceUnionId.indexOf('/'); + if (i1 > 0) + ep.endPointPosition = resourceUnionId.substring(i1 + 1); + + ep.data = new HashMap<>(); + + List<Resource> rlist = resourceManager.getResourceUnion(resourceUnionId); + for (Resource r : rlist) { + if (r instanceof RangeResource) { + RangeResource rr = (RangeResource) r; + for (AllocationItem ai : r.allocationItems) + if (ai.resourceUnionId.equals(resourceUnionId)) { + RangeAllocationItem rai = (RangeAllocationItem) ai; + ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName, rai.used.first()); + } + } + if (r instanceof LimitResource) { + LimitResource rr = (LimitResource) r; + for (AllocationItem ai : r.allocationItems) + if (ai.resourceUnionId.equals(resourceUnionId)) { + LimitAllocationItem rai = (LimitAllocationItem) ai; + ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName + ".allocated", rai.used); + ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName + ".used", rr.used); + ep.data.put(ep.endPointPosition + '.' + rr.resourceKey.resourceName + ".assetId", + r.resourceKey.assetId); + } + } + } + + return ep; + } + + private static class PrefEquipment implements Comparable<PrefEquipment> { + + public long[] prefNumbers; + public EquipmentData equipData; + + @Override + public int compareTo(PrefEquipment o) { + for (int i = 0; i < prefNumbers.length; i++) { + if (prefNumbers[i] < o.prefNumbers[i]) + return -1; + if (prefNumbers[i] > o.prefNumbers[i]) + return 1; + } + return 0; + } + } + + public void setEndPointAllocationDefinitionMap( + Map<String, List<EndPointAllocationDefinition>> endPointAllocationDefinitionMap) { + this.endPointAllocationDefinitionMap = endPointAllocationDefinitionMap; + } + + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointData.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointData.java index e425e373..eb030f3e 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointData.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EndPointData.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,9 +25,9 @@ import java.util.Map; public class EndPointData { - public String resourceSetId; - public String resourceUnionId; - public String endPointPosition; - public String equipmentId; - public Map<String, Object> data; + public String resourceSetId; + public String resourceUnionId; + public String endPointPosition; + public String equipmentId; + public Map<String, Object> data; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EquipmentCheck.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EquipmentCheck.java index fcca4f7c..ab65b31e 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EquipmentCheck.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/EquipmentCheck.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,9 +27,9 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentData; public interface EquipmentCheck { - boolean checkEquipment( - String endPointPosition, - ServiceData serviceData, - EquipmentData equipData, - Map<String, Object> equipmentConstraints); + boolean checkEquipment( + String endPointPosition, + ServiceData serviceData, + EquipmentData equipData, + Map<String, Object> equipmentConstraints); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/PreferenceRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/PreferenceRule.java index acaf10d9..d1287633 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/PreferenceRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/PreferenceRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,6 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentData; public interface PreferenceRule { - // Smaller order number is preferred - int assignOrderNumber(String endPointPosition, ServiceData serviceData, EquipmentData equipData); + // Smaller order number is preferred + int assignOrderNumber(String endPointPosition, ServiceData serviceData, EquipmentData equipData); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/ServiceData.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/ServiceData.java index 0d29e54f..685f0988 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/ServiceData.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/comp/ServiceData.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,12 +25,12 @@ import java.util.Map; public class ServiceData { - public String serviceModel; - public String serviceInstanceId; - public String resourceSetId; - public String resourceUnionId; - public String resourceShareGroup; - public String endPointPosition; - public String resourceName; - public Map<String, Object> data; + public String serviceModel; + public String serviceInstanceId; + public String resourceSetId; + public String resourceUnionId; + public String resourceShareGroup; + public String endPointPosition; + public String resourceName; + public Map<String, Object> data; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/comp/EquipmentReader.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/comp/EquipmentReader.java index a380594b..8e3247d1 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/comp/EquipmentReader.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/comp/EquipmentReader.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,5 +28,5 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentData; public interface EquipmentReader { - List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints); + List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDao.java index 44873873..b90a0856 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,5 +26,5 @@ import java.util.Map; public interface ServerDao { - List<Map<String, Object>> getServerData(String aicSiteId); + List<Map<String, Object>> getServerData(String aicSiteId); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDaoImpl.java index e1bc2a5a..b0c62e5c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/ServerDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,33 +32,33 @@ import org.springframework.jdbc.core.JdbcTemplate; public class ServerDaoImpl implements ServerDao { - private static final Logger log = LoggerFactory.getLogger(ServerDaoImpl.class); + private static final Logger log = LoggerFactory.getLogger(ServerDaoImpl.class); - private static final String GET_SERVER_COUNT_SQL = "SELECT count(*) FROM PSERVER WHERE aic_site_id = ?"; + private static final String GET_SERVER_COUNT_SQL = "SELECT count(*) FROM PSERVER WHERE aic_site_id = ?"; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - @Override - public List<Map<String, Object>> getServerData(String aicSiteId) { - List<Map<String, Object>> ll = new ArrayList<Map<String, Object>>(); - Map<String, Object> sd = new HashMap<String, Object>(); - sd.put("aic-site-id", aicSiteId); - sd.put("server-id", aicSiteId + "/Server1"); - sd.put("server-model", "Unknown"); - sd.put("server-count", getServerCount(aicSiteId)); - ll.add(sd); - return ll; - } + @Override + public List<Map<String, Object>> getServerData(String aicSiteId) { + List<Map<String, Object>> ll = new ArrayList<Map<String, Object>>(); + Map<String, Object> sd = new HashMap<String, Object>(); + sd.put("aic-site-id", aicSiteId); + sd.put("server-id", aicSiteId + "/Server1"); + sd.put("server-model", "Unknown"); + sd.put("server-count", getServerCount(aicSiteId)); + ll.add(sd); + return ll; + } - private int getServerCount(String aicSiteId) { - int n = jdbcTemplate.queryForInt(GET_SERVER_COUNT_SQL, aicSiteId); + private int getServerCount(String aicSiteId) { + int n = jdbcTemplate.queryForInt(GET_SERVER_COUNT_SQL, aicSiteId); - log.info("Number of servers in " + aicSiteId + ": " + n); + log.info("Number of servers in " + aicSiteId + ": " + n); - return n; - } + return n; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDao.java index 4a0f6b8c..052bf9ed 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ import java.util.Map; public interface VpePortDao { - List<Map<String, Object>> getVpePortData(String aicSiteId); + List<Map<String, Object>> getVpePortData(String aicSiteId); - List<Map<String, Object>> getVpePortData(String aicSiteId, String vpeName); + List<Map<String, Object>> getVpePortData(String aicSiteId, String vpeName); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDaoImpl.java index d25fe9c4..d81e391c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VpePortDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,48 +34,48 @@ import org.springframework.jdbc.core.RowMapper; public class VpePortDaoImpl implements VpePortDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(VpePortDaoImpl.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(VpePortDaoImpl.class); - private static final String GET_SQL = "SELECT * FROM VPE_POOL WHERE aic_site_id = ?"; - private static final String GET2_SQL = "SELECT * FROM VPE_POOL WHERE vpe_name = ?"; - private static final String GET3_SQL = - "SELECT * FROM VPE_POOL WHERE substring(aic_site_id, 1, 8) = substring(?, 1, 8)"; + private static final String GET_SQL = "SELECT * FROM VPE_POOL WHERE aic_site_id = ?"; + private static final String GET2_SQL = "SELECT * FROM VPE_POOL WHERE vpe_name = ?"; + private static final String GET3_SQL = + "SELECT * FROM VPE_POOL WHERE substring(aic_site_id, 1, 8) = substring(?, 1, 8)"; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - @Override - public List<Map<String, Object>> getVpePortData(String aicSiteId) { - return jdbcTemplate.query(GET_SQL, new Object[] { aicSiteId }, new VpePortRowMapper()); - } + @Override + public List<Map<String, Object>> getVpePortData(String aicSiteId) { + return jdbcTemplate.query(GET_SQL, new Object[] { aicSiteId }, new VpePortRowMapper()); + } - @Override - public List<Map<String, Object>> getVpePortData(String aicSiteId, String vpeName) { - String sql = vpeName != null ? GET2_SQL : GET3_SQL; - Object[] param = new Object[] { vpeName != null ? vpeName : aicSiteId }; + @Override + public List<Map<String, Object>> getVpePortData(String aicSiteId, String vpeName) { + String sql = vpeName != null ? GET2_SQL : GET3_SQL; + Object[] param = new Object[] { vpeName != null ? vpeName : aicSiteId }; - return jdbcTemplate.query(sql, param, new VpePortRowMapper()); - } + return jdbcTemplate.query(sql, param, new VpePortRowMapper()); + } - private static class VpePortRowMapper implements RowMapper<Map<String, Object>> { + private static class VpePortRowMapper implements RowMapper<Map<String, Object>> { - @Override - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { - Map<String, Object> mm = new HashMap<String, Object>(); - mm.put("vpe-id", rs.getString("vpe_name")); - mm.put("aic-site-id", rs.getString("aic_site_id")); - mm.put("availability-zone", rs.getString("availability_zone")); - mm.put("image-file-name", rs.getString("image_filename")); - mm.put("vendor", rs.getString("vendor")); - mm.put("provisioning-status", rs.getString("provisioning_status")); - mm.put("physical-interface-name", rs.getString("physical_intf_name")); - mm.put("physical-interface-speed", rs.getLong("physical_intf_speed")); - mm.put("physical-interface-speed-unit", rs.getString("physical_intf_units")); - return mm; - } - } + @Override + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { + Map<String, Object> mm = new HashMap<String, Object>(); + mm.put("vpe-id", rs.getString("vpe_name")); + mm.put("aic-site-id", rs.getString("aic_site_id")); + mm.put("availability-zone", rs.getString("availability_zone")); + mm.put("image-file-name", rs.getString("image_filename")); + mm.put("vendor", rs.getString("vendor")); + mm.put("provisioning-status", rs.getString("provisioning_status")); + mm.put("physical-interface-name", rs.getString("physical_intf_name")); + mm.put("physical-interface-speed", rs.getLong("physical_intf_speed")); + mm.put("physical-interface-speed-unit", rs.getString("physical_intf_units")); + return mm; + } + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDao.java index 879a233d..dc32280f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,5 +26,5 @@ import java.util.Map; public interface VplspePortDao { - List<Map<String, Object>> getVplspePortData(String aicSiteId); + List<Map<String, Object>> getVplspePortData(String aicSiteId); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDaoImpl.java index bad64641..1f3aa8ef 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/dao/VplspePortDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,37 +34,37 @@ import org.springframework.jdbc.core.RowMapper; public class VplspePortDaoImpl implements VplspePortDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(VplspePortDaoImpl.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(VplspePortDaoImpl.class); - private static final String GET_SQL = "SELECT * FROM VPLSPE_POOL WHERE aic_site_id = ?"; + private static final String GET_SQL = "SELECT * FROM VPLSPE_POOL WHERE aic_site_id = ?"; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - @Override - public List<Map<String, Object>> getVplspePortData(String aicSiteId) { - List<Map<String, Object>> ll = - jdbcTemplate.query(GET_SQL, new Object[] { aicSiteId }, new RowMapper<Map<String, Object>>() { + @Override + public List<Map<String, Object>> getVplspePortData(String aicSiteId) { + List<Map<String, Object>> ll = + jdbcTemplate.query(GET_SQL, new Object[] { aicSiteId }, new RowMapper<Map<String, Object>>() { - @Override - public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { - Map<String, Object> mm = new HashMap<String, Object>(); - mm.put("vplspe-id", rs.getString("vplspe_name")); - mm.put("aic-site-id", rs.getString("aic_site_id")); - mm.put("availability-zone", rs.getString("availability_zone")); - mm.put("image-file-name", rs.getString("image_filename")); - mm.put("vendor", rs.getString("vendor")); - mm.put("provisioning-status", rs.getString("provisioning_status")); - mm.put("physical-interface-name", rs.getString("physical_intf_name")); - mm.put("physical-interface-speed", rs.getLong("physical_intf_speed")); - mm.put("physical-interface-speed-unit", rs.getString("physical_intf_units")); - return mm; - } - }); - return ll; - } + @Override + public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { + Map<String, Object> mm = new HashMap<String, Object>(); + mm.put("vplspe-id", rs.getString("vplspe_name")); + mm.put("aic-site-id", rs.getString("aic_site_id")); + mm.put("availability-zone", rs.getString("availability_zone")); + mm.put("image-file-name", rs.getString("image_filename")); + mm.put("vendor", rs.getString("vendor")); + mm.put("provisioning-status", rs.getString("provisioning_status")); + mm.put("physical-interface-name", rs.getString("physical_intf_name")); + mm.put("physical-interface-speed", rs.getLong("physical_intf_speed")); + mm.put("physical-interface-speed-unit", rs.getString("physical_intf_units")); + return mm; + } + }); + return ll; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentData.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentData.java index d485224b..ae2a4e7c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentData.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentData.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ import java.util.Map; public class EquipmentData { - public String equipmentId; - public EquipmentLevel equipmentLevel; - public Map<String, Object> data; + public String equipmentId; + public EquipmentLevel equipmentLevel; + public Map<String, Object> data; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentLevel.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentLevel.java index 44ae593a..fbf13fb5 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentLevel.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/equip/data/EquipmentLevel.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,5 +22,5 @@ package org.openecomp.sdnc.ra.equip.data; public enum EquipmentLevel { - Port, Device, Server, Site + Port, Device, Server, Site } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/AffinityLinkPref.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/AffinityLinkPref.java index 09af2081..cb3f78ec 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/AffinityLinkPref.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/AffinityLinkPref.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,51 +35,51 @@ import org.slf4j.LoggerFactory; public class AffinityLinkPref implements PreferenceRule { - private static final Logger log = LoggerFactory.getLogger(AffinityLinkPref.class); + private static final Logger log = LoggerFactory.getLogger(AffinityLinkPref.class); - private ResourceManager resourceManager; - private List<String> affinityLinkIdList; + private ResourceManager resourceManager; + private List<String> affinityLinkIdList; - public AffinityLinkPref() { - // Set default values for affinity link ids (can be overridden by the spring config) - affinityLinkIdList = new ArrayList<>(); - affinityLinkIdList.add("1"); - affinityLinkIdList.add("2"); - } + public AffinityLinkPref() { + // Set default values for affinity link ids (can be overridden by the spring config) + affinityLinkIdList = new ArrayList<>(); + affinityLinkIdList.add("1"); + affinityLinkIdList.add("2"); + } - @Override - public int assignOrderNumber(String endPointPosition, ServiceData serviceData, EquipmentData equipData) { + @Override + public int assignOrderNumber(String endPointPosition, ServiceData serviceData, EquipmentData equipData) { - // This class does not really assign order number, but instead sets the affinity link with the lowest - // assigned bandwidth in the equipment data + // This class does not really assign order number, but instead sets the affinity link with the lowest + // assigned bandwidth in the equipment data - String preferedAffinityLinkId = "1"; - long lowestAssignedBw = Long.MAX_VALUE; - for (String affinityLinkId : affinityLinkIdList) { - String assetId = equipData.equipmentId + "-" + affinityLinkId; - Resource r = resourceManager.getResource("Bandwidth", assetId); - if (r != null) { - LimitResource ll = (LimitResource) r; - if (ll.used < lowestAssignedBw) { - lowestAssignedBw = ll.used; - preferedAffinityLinkId = affinityLinkId; - } - log.info("Assigned bandwidth on affinity link: " + assetId + ": " + ll.used); - } - } + String preferedAffinityLinkId = "1"; + long lowestAssignedBw = Long.MAX_VALUE; + for (String affinityLinkId : affinityLinkIdList) { + String assetId = equipData.equipmentId + "-" + affinityLinkId; + Resource r = resourceManager.getResource("Bandwidth", assetId); + if (r != null) { + LimitResource ll = (LimitResource) r; + if (ll.used < lowestAssignedBw) { + lowestAssignedBw = ll.used; + preferedAffinityLinkId = affinityLinkId; + } + log.info("Assigned bandwidth on affinity link: " + assetId + ": " + ll.used); + } + } - equipData.data.put("affinity-link", preferedAffinityLinkId); + equipData.data.put("affinity-link", preferedAffinityLinkId); - log.info("Prefered affinity link for " + equipData.equipmentId + ": " + preferedAffinityLinkId); + log.info("Prefered affinity link for " + equipData.equipmentId + ": " + preferedAffinityLinkId); - return 0; - } + return 0; + } - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } - public void setAffinityLinkIdList(List<String> affinityLinkIdList) { - this.affinityLinkIdList = affinityLinkIdList; - } + public void setAffinityLinkIdList(List<String> affinityLinkIdList) { + this.affinityLinkIdList = affinityLinkIdList; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/EvcExistingVrfPref.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/EvcExistingVrfPref.java index abef0a24..93c041eb 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/EvcExistingVrfPref.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/pref/EvcExistingVrfPref.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,29 +32,29 @@ import org.slf4j.LoggerFactory; public class EvcExistingVrfPref implements PreferenceRule { - private static final Logger log = LoggerFactory.getLogger(EvcExistingVrfPref.class); + private static final Logger log = LoggerFactory.getLogger(EvcExistingVrfPref.class); - private ResourceManager resourceManager; + private ResourceManager resourceManager; - @Override - public int assignOrderNumber(String endPointPosition, ServiceData serviceData, EquipmentData equipData) { - String vrfName = (String) serviceData.data.get("vrf-name"); - if (vrfName == null) - return 0; + @Override + public int assignOrderNumber(String endPointPosition, ServiceData serviceData, EquipmentData equipData) { + String vrfName = (String) serviceData.data.get("vrf-name"); + if (vrfName == null) + return 0; - Resource r = resourceManager.getResource("VRF", equipData.equipmentId); - if (r != null && r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) - if (ai.resourceShareGroupList.contains(vrfName)) { - log.info("VRF for VPN: " + vrfName + " found on VPE: " + equipData.equipmentId); - return 1; - } + Resource r = resourceManager.getResource("VRF", equipData.equipmentId); + if (r != null && r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) + if (ai.resourceShareGroupList.contains(vrfName)) { + log.info("VRF for VPN: " + vrfName + " found on VPE: " + equipData.equipmentId); + return 1; + } - log.info("VRF for VPN: " + vrfName + " NOT found on VPE: " + equipData.equipmentId); - return 2; - } + log.info("VRF for VPN: " + vrfName + " NOT found on VPE: " + equipData.equipmentId); + return 2; + } - public void setResourceManager(ResourceManager resourceManager) { - this.resourceManager = resourceManager; - } + public void setResourceManager(ResourceManager resourceManager) { + this.resourceManager = resourceManager; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/AicSiteReader.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/AicSiteReader.java index 4040b0b4..1bf2ead0 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/AicSiteReader.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/AicSiteReader.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,18 +32,18 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentLevel; public class AicSiteReader implements EquipmentReader { - @Override - public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { - String aicSiteId = (String) equipmentConstraints.get("aic-site-id"); + @Override + public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { + String aicSiteId = (String) equipmentConstraints.get("aic-site-id"); - EquipmentData equipData = new EquipmentData(); - equipData.equipmentLevel = EquipmentLevel.Site; - equipData.equipmentId = aicSiteId; - equipData.data = new HashMap<String, Object>(); + EquipmentData equipData = new EquipmentData(); + equipData.equipmentLevel = EquipmentLevel.Site; + equipData.equipmentId = aicSiteId; + equipData.data = new HashMap<String, Object>(); - List<EquipmentData> equipList = new ArrayList<>(); - equipList.add(equipData); + List<EquipmentData> equipList = new ArrayList<>(); + equipList.add(equipData); - return equipList; - } + return equipList; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/UplinkCircuitReader.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/UplinkCircuitReader.java index 0adf6d12..ad65c379 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/UplinkCircuitReader.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/UplinkCircuitReader.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,24 +31,24 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentLevel; public class UplinkCircuitReader implements EquipmentReader { - @SuppressWarnings("unchecked") - @Override - public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { - List<EquipmentData> equipList = new ArrayList<>(); - - List<Map<String, Object>> uplinkCircuitList = - (List<Map<String, Object>>) equipmentConstraints.get("uplink-circuit-list"); - if (uplinkCircuitList == null || uplinkCircuitList.isEmpty()) - return equipList; - - for (Map<String, Object> uplinkCircuit : uplinkCircuitList) { - EquipmentData equipData = new EquipmentData(); - equipData.equipmentLevel = EquipmentLevel.Device; - equipData.equipmentId = (String) uplinkCircuit.get("uplink-circuit-id"); - equipData.data = uplinkCircuit; - equipList.add(equipData); - } - - return equipList; - } + @SuppressWarnings("unchecked") + @Override + public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { + List<EquipmentData> equipList = new ArrayList<>(); + + List<Map<String, Object>> uplinkCircuitList = + (List<Map<String, Object>>) equipmentConstraints.get("uplink-circuit-list"); + if (uplinkCircuitList == null || uplinkCircuitList.isEmpty()) + return equipList; + + for (Map<String, Object> uplinkCircuit : uplinkCircuitList) { + EquipmentData equipData = new EquipmentData(); + equipData.equipmentLevel = EquipmentLevel.Device; + equipData.equipmentId = (String) uplinkCircuit.get("uplink-circuit-id"); + equipData.data = uplinkCircuit; + equipList.add(equipData); + } + + return equipList; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VnfReader.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VnfReader.java index 7039370a..ac53afe5 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VnfReader.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VnfReader.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,18 +32,18 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentLevel; public class VnfReader implements EquipmentReader { - @Override - public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { - String vnfName = (String) equipmentConstraints.get("vnf-name"); + @Override + public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { + String vnfName = (String) equipmentConstraints.get("vnf-name"); - EquipmentData equipData = new EquipmentData(); - equipData.equipmentLevel = EquipmentLevel.Device; - equipData.equipmentId = vnfName; - equipData.data = new HashMap<String, Object>(); + EquipmentData equipData = new EquipmentData(); + equipData.equipmentLevel = EquipmentLevel.Device; + equipData.equipmentId = vnfName; + equipData.data = new HashMap<String, Object>(); - List<EquipmentData> equipList = new ArrayList<>(); - equipList.add(equipData); + List<EquipmentData> equipList = new ArrayList<>(); + equipList.add(equipData); - return equipList; - } + return equipList; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VpePortReader.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VpePortReader.java index 360f7806..ba497c01 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VpePortReader.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/reader/VpePortReader.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,39 +32,39 @@ import org.openecomp.sdnc.ra.equip.data.EquipmentLevel; public class VpePortReader implements EquipmentReader { - private VpePortDao vpePortDao; + private VpePortDao vpePortDao; - @Override - public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { - String clli = (String) equipmentConstraints.get("clli"); - String vpeName = (String) equipmentConstraints.get("vpe-name"); - if (vpeName == null) { - String equipmentId = (String) equipmentConstraints.get("equipment-id"); - if (equipmentId != null) { - int i1 = equipmentId.indexOf('/'); - if (i1 > 0) - equipmentId = equipmentId.substring(0, i1); - vpeName = equipmentId; - } - } + @Override + public List<EquipmentData> readEquipment(Map<String, Object> equipmentConstraints) { + String clli = (String) equipmentConstraints.get("clli"); + String vpeName = (String) equipmentConstraints.get("vpe-name"); + if (vpeName == null) { + String equipmentId = (String) equipmentConstraints.get("equipment-id"); + if (equipmentId != null) { + int i1 = equipmentId.indexOf('/'); + if (i1 > 0) + equipmentId = equipmentId.substring(0, i1); + vpeName = equipmentId; + } + } - List<Map<String, Object>> vpeDataList = vpePortDao.getVpePortData(clli, vpeName); + List<Map<String, Object>> vpeDataList = vpePortDao.getVpePortData(clli, vpeName); - List<EquipmentData> equipList = new ArrayList<>(); - for (Map<String, Object> vpeData : vpeDataList) { - EquipmentData equipData = new EquipmentData(); - equipData.equipmentLevel = EquipmentLevel.Port; - equipData.equipmentId = - (String) vpeData.get("vpe-id") + '/' + (String) vpeData.get("physical-interface-name"); - equipData.data = vpeData; + List<EquipmentData> equipList = new ArrayList<>(); + for (Map<String, Object> vpeData : vpeDataList) { + EquipmentData equipData = new EquipmentData(); + equipData.equipmentLevel = EquipmentLevel.Port; + equipData.equipmentId = + (String) vpeData.get("vpe-id") + '/' + (String) vpeData.get("physical-interface-name"); + equipData.data = vpeData; - equipList.add(equipData); - } + equipList.add(equipData); + } - return equipList; - } + return equipList; + } - public void setVpePortDao(VpePortDao vpePortDao) { - this.vpePortDao = vpePortDao; - } + public void setVpePortDao(VpePortDao vpePortDao) { + this.vpePortDao = vpePortDao; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilder.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilder.java index 44e4c53a..c2d61416 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilder.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilder.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,14 +29,14 @@ import org.openecomp.sdnc.rm.data.LimitAllocationOutcome; public interface AllocationRequestBuilder { - AllocationRequest buildAllocationRequest( - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change); + AllocationRequest buildAllocationRequest( + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change); - ThresholdStatus getThresholdStatus( - ServiceData serviceData, - EquipmentData equipmentData, - LimitAllocationOutcome limitAllocationOutcome); + ThresholdStatus getThresholdStatus( + ServiceData serviceData, + EquipmentData equipmentData, + LimitAllocationOutcome limitAllocationOutcome); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilderImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilderImpl.java index dbc0d8be..37f9cb81 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilderImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/comp/AllocationRequestBuilderImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,128 +45,128 @@ import org.slf4j.LoggerFactory; public class AllocationRequestBuilderImpl implements AllocationRequestBuilder { - private static final Logger log = LoggerFactory.getLogger(AllocationRequestBuilderImpl.class); - - private ResourceRuleDao resourceRuleDao; - private RangeRuleDao rangeRuleDao; - - @Override - public AllocationRequest buildAllocationRequest( - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - List<ResourceRule> resourceRuleList = resourceRuleDao.getResourceRules(serviceData.serviceModel, - serviceData.endPointPosition, equipmentData.equipmentLevel); - List<RangeRule> rangeRuleList = rangeRuleDao.getRangeRules(serviceData.serviceModel, - serviceData.endPointPosition, equipmentData.equipmentLevel); - if (resourceRuleList.isEmpty() && rangeRuleList.isEmpty()) - return null; - if (resourceRuleList.size() == 1 && rangeRuleList.isEmpty()) - return buildAllocationRequest(resourceRuleList.get(0), serviceData, equipmentData, checkOnly, change); - - if (resourceRuleList.isEmpty() && rangeRuleList.size() == 1) - return buildAllocationRequest(rangeRuleList.get(0), serviceData, equipmentData, checkOnly, change); - - MultiResourceAllocationRequest ar = new MultiResourceAllocationRequest(); - ar.stopOnFirstFailure = false; - ar.allocationRequestList = new ArrayList<AllocationRequest>(); - for (ResourceRule rr : resourceRuleList) { - AllocationRequest ar1 = buildAllocationRequest(rr, serviceData, equipmentData, checkOnly, change); - ar.allocationRequestList.add(ar1); - } - for (RangeRule rr : rangeRuleList) { - AllocationRequest ar1 = buildAllocationRequest(rr, serviceData, equipmentData, checkOnly, change); - ar.allocationRequestList.add(ar1); - } - return ar; - } - - private AllocationRequest buildAllocationRequest( - ResourceRule resourceRule, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - StrUtil.info(log, resourceRule); - - LimitAllocationRequest ar = new LimitAllocationRequest(); - ar.resourceSetId = serviceData.resourceSetId; - ar.resourceUnionId = serviceData.resourceUnionId; - ar.resourceName = resourceRule.resourceName; - ar.assetId = equipmentData.equipmentId; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.strict = false; - ar.checkLimit = ExpressionEvaluator.evalLong( - change ? resourceRule.hardLimitExpression : resourceRule.softLimitExpression, equipmentData.data); - ar.checkCount = ExpressionEvaluator.evalLong(resourceRule.allocationExpression, serviceData.data); - ar.allocateCount = checkOnly ? 0 : ar.checkCount; - return ar; - } - - private AllocationRequest buildAllocationRequest( - RangeRule rangeRule, - ServiceData serviceData, - EquipmentData equipmentData, - boolean checkOnly, - boolean change) { - StrUtil.info(log, rangeRule); - - RangeAllocationRequest ar = new RangeAllocationRequest(); - ar.resourceSetId = serviceData.resourceSetId; - ar.resourceUnionId = serviceData.resourceUnionId; - ar.resourceName = rangeRule.rangeName; - ar.assetId = equipmentData.equipmentId; - ar.missingResourceAction = AllocationAction.Succeed_Allocate; - ar.expiredResourceAction = AllocationAction.Succeed_Allocate; - ar.replace = true; - ar.check = true; - ar.allocate = !checkOnly; - ar.checkMin = rangeRule.minValue; - ar.checkMax = rangeRule.maxValue; - return ar; - } - - @Override - public ThresholdStatus getThresholdStatus( - ServiceData serviceData, - EquipmentData equipmentData, - LimitAllocationOutcome limitAllocationOutcome) { - ResourceRule rr = resourceRuleDao.getResourceRule(serviceData.serviceModel, serviceData.endPointPosition, - equipmentData.equipmentLevel, limitAllocationOutcome.request.resourceName); - if (rr == null || rr.thresholdList == null || rr.thresholdList.isEmpty()) - return null; - - ThresholdStatus thresholdStatus = null; - long maxThresholdValue = 0; - for (ResourceThreshold th : rr.thresholdList) { - long thresholdValue = ExpressionEvaluator.evalLong(th.expression, equipmentData.data); - - if (thresholdValue > maxThresholdValue) { - maxThresholdValue = thresholdValue; - - if (limitAllocationOutcome.used >= thresholdValue) { - thresholdStatus = new ThresholdStatus(); - thresholdStatus.resourceRule = rr; - thresholdStatus.resourceThreshold = th; - thresholdStatus.limitValue = limitAllocationOutcome.limit; - thresholdStatus.thresholdValue = thresholdValue; - thresholdStatus.used = limitAllocationOutcome.used; - thresholdStatus.lastAdded = limitAllocationOutcome.allocatedCount; - } - } - } - - return thresholdStatus; - } - - public void setResourceRuleDao(ResourceRuleDao resourceRuleDao) { - this.resourceRuleDao = resourceRuleDao; - } - - public void setRangeRuleDao(RangeRuleDao rangeRuleDao) { - this.rangeRuleDao = rangeRuleDao; - } + private static final Logger log = LoggerFactory.getLogger(AllocationRequestBuilderImpl.class); + + private ResourceRuleDao resourceRuleDao; + private RangeRuleDao rangeRuleDao; + + @Override + public AllocationRequest buildAllocationRequest( + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + List<ResourceRule> resourceRuleList = resourceRuleDao.getResourceRules(serviceData.serviceModel, + serviceData.endPointPosition, equipmentData.equipmentLevel); + List<RangeRule> rangeRuleList = rangeRuleDao.getRangeRules(serviceData.serviceModel, + serviceData.endPointPosition, equipmentData.equipmentLevel); + if (resourceRuleList.isEmpty() && rangeRuleList.isEmpty()) + return null; + if (resourceRuleList.size() == 1 && rangeRuleList.isEmpty()) + return buildAllocationRequest(resourceRuleList.get(0), serviceData, equipmentData, checkOnly, change); + + if (resourceRuleList.isEmpty() && rangeRuleList.size() == 1) + return buildAllocationRequest(rangeRuleList.get(0), serviceData, equipmentData, checkOnly, change); + + MultiResourceAllocationRequest ar = new MultiResourceAllocationRequest(); + ar.stopOnFirstFailure = false; + ar.allocationRequestList = new ArrayList<AllocationRequest>(); + for (ResourceRule rr : resourceRuleList) { + AllocationRequest ar1 = buildAllocationRequest(rr, serviceData, equipmentData, checkOnly, change); + ar.allocationRequestList.add(ar1); + } + for (RangeRule rr : rangeRuleList) { + AllocationRequest ar1 = buildAllocationRequest(rr, serviceData, equipmentData, checkOnly, change); + ar.allocationRequestList.add(ar1); + } + return ar; + } + + private AllocationRequest buildAllocationRequest( + ResourceRule resourceRule, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + StrUtil.info(log, resourceRule); + + LimitAllocationRequest ar = new LimitAllocationRequest(); + ar.resourceSetId = serviceData.resourceSetId; + ar.resourceUnionId = serviceData.resourceUnionId; + ar.resourceName = resourceRule.resourceName; + ar.assetId = equipmentData.equipmentId; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.strict = false; + ar.checkLimit = ExpressionEvaluator.evalLong( + change ? resourceRule.hardLimitExpression : resourceRule.softLimitExpression, equipmentData.data); + ar.checkCount = ExpressionEvaluator.evalLong(resourceRule.allocationExpression, serviceData.data); + ar.allocateCount = checkOnly ? 0 : ar.checkCount; + return ar; + } + + private AllocationRequest buildAllocationRequest( + RangeRule rangeRule, + ServiceData serviceData, + EquipmentData equipmentData, + boolean checkOnly, + boolean change) { + StrUtil.info(log, rangeRule); + + RangeAllocationRequest ar = new RangeAllocationRequest(); + ar.resourceSetId = serviceData.resourceSetId; + ar.resourceUnionId = serviceData.resourceUnionId; + ar.resourceName = rangeRule.rangeName; + ar.assetId = equipmentData.equipmentId; + ar.missingResourceAction = AllocationAction.Succeed_Allocate; + ar.expiredResourceAction = AllocationAction.Succeed_Allocate; + ar.replace = true; + ar.check = true; + ar.allocate = !checkOnly; + ar.checkMin = rangeRule.minValue; + ar.checkMax = rangeRule.maxValue; + return ar; + } + + @Override + public ThresholdStatus getThresholdStatus( + ServiceData serviceData, + EquipmentData equipmentData, + LimitAllocationOutcome limitAllocationOutcome) { + ResourceRule rr = resourceRuleDao.getResourceRule(serviceData.serviceModel, serviceData.endPointPosition, + equipmentData.equipmentLevel, limitAllocationOutcome.request.resourceName); + if (rr == null || rr.thresholdList == null || rr.thresholdList.isEmpty()) + return null; + + ThresholdStatus thresholdStatus = null; + long maxThresholdValue = 0; + for (ResourceThreshold th : rr.thresholdList) { + long thresholdValue = ExpressionEvaluator.evalLong(th.expression, equipmentData.data); + + if (thresholdValue > maxThresholdValue) { + maxThresholdValue = thresholdValue; + + if (limitAllocationOutcome.used >= thresholdValue) { + thresholdStatus = new ThresholdStatus(); + thresholdStatus.resourceRule = rr; + thresholdStatus.resourceThreshold = th; + thresholdStatus.limitValue = limitAllocationOutcome.limit; + thresholdStatus.thresholdValue = thresholdValue; + thresholdStatus.used = limitAllocationOutcome.used; + thresholdStatus.lastAdded = limitAllocationOutcome.allocatedCount; + } + } + } + + return thresholdStatus; + } + + public void setResourceRuleDao(ResourceRuleDao resourceRuleDao) { + this.resourceRuleDao = resourceRuleDao; + } + + public void setRangeRuleDao(RangeRuleDao rangeRuleDao) { + this.rangeRuleDao = rangeRuleDao; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDao.java index a56b7880..af6eca7e 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,6 @@ package org.openecomp.sdnc.ra.rule.dao; public interface MaxPortSpeedDao { - // Returns max speed in kbps - long getMaxPortSpeed(String imageFile, String endPointPosition, String interfaceName); + // Returns max speed in kbps + long getMaxPortSpeed(String imageFile, String endPointPosition, String interfaceName); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDaoImpl.java index ea0bd771..b0cc7d2c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxPortSpeedDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,53 +33,53 @@ import org.springframework.jdbc.core.RowMapper; public class MaxPortSpeedDaoImpl implements MaxPortSpeedDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(MaxPortSpeedDaoImpl.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(MaxPortSpeedDaoImpl.class); - private final static String GET_SQL = - "SELECT * FROM MAX_PORT_SPEED WHERE image_file_name = ? AND end_point_position = ? AND interface_name = ?"; + private final static String GET_SQL = + "SELECT * FROM MAX_PORT_SPEED WHERE image_file_name = ? AND end_point_position = ? AND interface_name = ?"; - private JdbcTemplate jdbcTemplate; - private long defaultMaxPortSpeed = 5000000; - private SpeedUtil speedUtil; + private JdbcTemplate jdbcTemplate; + private long defaultMaxPortSpeed = 5000000; + private SpeedUtil speedUtil; - @Override - public long getMaxPortSpeed(String imageFile, String endPointPosition, String interfaceName) { - List<MaxPortSpeed> maxPortSpeedList = - jdbcTemplate.query(GET_SQL, new Object[] { imageFile, endPointPosition, interfaceName }, - new RowMapper<MaxPortSpeed>() { + @Override + public long getMaxPortSpeed(String imageFile, String endPointPosition, String interfaceName) { + List<MaxPortSpeed> maxPortSpeedList = + jdbcTemplate.query(GET_SQL, new Object[] { imageFile, endPointPosition, interfaceName }, + new RowMapper<MaxPortSpeed>() { - @Override - public MaxPortSpeed mapRow(ResultSet rs, int rowNum) throws SQLException { - MaxPortSpeed mps = new MaxPortSpeed(); - mps.maxSpeed = rs.getLong("max_speed"); - mps.unit = rs.getString("unit"); - return mps; - } - }); + @Override + public MaxPortSpeed mapRow(ResultSet rs, int rowNum) throws SQLException { + MaxPortSpeed mps = new MaxPortSpeed(); + mps.maxSpeed = rs.getLong("max_speed"); + mps.unit = rs.getString("unit"); + return mps; + } + }); - if (maxPortSpeedList.isEmpty()) - return defaultMaxPortSpeed; + if (maxPortSpeedList.isEmpty()) + return defaultMaxPortSpeed; - MaxPortSpeed mps = maxPortSpeedList.get(0); - return speedUtil.convertToKbps(mps.maxSpeed, mps.unit); - } + MaxPortSpeed mps = maxPortSpeedList.get(0); + return speedUtil.convertToKbps(mps.maxSpeed, mps.unit); + } - private static class MaxPortSpeed { + private static class MaxPortSpeed { - public long maxSpeed; - public String unit; - } + public long maxSpeed; + public String unit; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } - public void setDefaultMaxPortSpeed(long defaultMaxPortSpeed) { - this.defaultMaxPortSpeed = defaultMaxPortSpeed; - } + public void setDefaultMaxPortSpeed(long defaultMaxPortSpeed) { + this.defaultMaxPortSpeed = defaultMaxPortSpeed; + } - public void setSpeedUtil(SpeedUtil speedUtil) { - this.speedUtil = speedUtil; - } + public void setSpeedUtil(SpeedUtil speedUtil) { + this.speedUtil = speedUtil; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDao.java index 4bd17f1d..dd6ae9c8 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,6 @@ package org.openecomp.sdnc.ra.rule.dao; public interface MaxServerSpeedDao { - // Returns max speed in kbps - long getMaxServerSpeed(String serverModel, int evcCount); + // Returns max speed in kbps + long getMaxServerSpeed(String serverModel, int evcCount); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDaoImpl.java index c3428179..c0be2e6b 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/MaxServerSpeedDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,54 +33,54 @@ import org.springframework.jdbc.core.RowMapper; public class MaxServerSpeedDaoImpl implements MaxServerSpeedDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(MaxServerSpeedDaoImpl.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(MaxServerSpeedDaoImpl.class); - private final static String GET_SQL = - "SELECT * FROM MAX_SERVER_SPEED\n" + - "WHERE (server_model = ? OR server_model = 'ALL') AND evc_count >= ?\n" + - "ORDER BY evc_count"; + private final static String GET_SQL = + "SELECT * FROM MAX_SERVER_SPEED\n" + + "WHERE (server_model = ? OR server_model = 'ALL') AND evc_count >= ?\n" + + "ORDER BY evc_count"; - private JdbcTemplate jdbcTemplate; - private long defaultMaxServerSpeed = 1600000; - private SpeedUtil speedUtil; + private JdbcTemplate jdbcTemplate; + private long defaultMaxServerSpeed = 1600000; + private SpeedUtil speedUtil; - @Override - public long getMaxServerSpeed(String serverModel, int evcCount) { - List<MaxServerSpeed> maxServerSpeedList = - jdbcTemplate.query(GET_SQL, new Object[] { serverModel, evcCount }, new RowMapper<MaxServerSpeed>() { + @Override + public long getMaxServerSpeed(String serverModel, int evcCount) { + List<MaxServerSpeed> maxServerSpeedList = + jdbcTemplate.query(GET_SQL, new Object[] { serverModel, evcCount }, new RowMapper<MaxServerSpeed>() { - @Override - public MaxServerSpeed mapRow(ResultSet rs, int rowNum) throws SQLException { - MaxServerSpeed mps = new MaxServerSpeed(); - mps.maxSpeed = rs.getLong("max_speed"); - mps.unit = rs.getString("unit"); - return mps; - } - }); + @Override + public MaxServerSpeed mapRow(ResultSet rs, int rowNum) throws SQLException { + MaxServerSpeed mps = new MaxServerSpeed(); + mps.maxSpeed = rs.getLong("max_speed"); + mps.unit = rs.getString("unit"); + return mps; + } + }); - if (maxServerSpeedList.isEmpty()) - return defaultMaxServerSpeed; + if (maxServerSpeedList.isEmpty()) + return defaultMaxServerSpeed; - MaxServerSpeed mps = maxServerSpeedList.get(0); - return speedUtil.convertToKbps(mps.maxSpeed, mps.unit); - } + MaxServerSpeed mps = maxServerSpeedList.get(0); + return speedUtil.convertToKbps(mps.maxSpeed, mps.unit); + } - private static class MaxServerSpeed { + private static class MaxServerSpeed { - public long maxSpeed; - public String unit; - } + public long maxSpeed; + public String unit; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } - public void setDefaultMaxServerSpeed(long defaultMaxServerSpeed) { - this.defaultMaxServerSpeed = defaultMaxServerSpeed; - } + public void setDefaultMaxServerSpeed(long defaultMaxServerSpeed) { + this.defaultMaxServerSpeed = defaultMaxServerSpeed; + } - public void setSpeedUtil(SpeedUtil speedUtil) { - this.speedUtil = speedUtil; - } + public void setSpeedUtil(SpeedUtil speedUtil) { + this.speedUtil = speedUtil; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDao.java index 509a034a..2042ba9c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.ra.rule.dao; public interface ParameterDao { - String getParameter(String name); + String getParameter(String name); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDaoImpl.java index 2cafb280..c2ca99ce 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ParameterDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,28 +30,28 @@ import org.springframework.jdbc.core.JdbcTemplate; public class ParameterDaoImpl implements ParameterDao { - private static final Logger log = LoggerFactory.getLogger(ParameterDaoImpl.class); + private static final Logger log = LoggerFactory.getLogger(ParameterDaoImpl.class); - private final static String GET_SQL = "SELECT * FROM PARAMETERS WHERE name = ?"; + private final static String GET_SQL = "SELECT * FROM PARAMETERS WHERE name = ?"; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - @Override - public String getParameter(String name) { - List<Map<String, Object>> ll = jdbcTemplate.queryForList(GET_SQL, name); + @Override + public String getParameter(String name) { + List<Map<String, Object>> ll = jdbcTemplate.queryForList(GET_SQL, name); - if (ll == null || ll.isEmpty()) { - log.info("Parameter: " + name + " not found in DB"); - return null; - } + if (ll == null || ll.isEmpty()) { + log.info("Parameter: " + name + " not found in DB"); + return null; + } - String v = (String) ll.get(0).get("value"); - log.info("Parameter from DB: " + name + "='" + v + "'"); + String v = (String) ll.get(0).get("value"); + log.info("Parameter from DB: " + name + "='" + v + "'"); - return v; - } + return v; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDao.java index 798a2303..670039f4 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,5 +28,5 @@ import org.openecomp.sdnc.ra.rule.data.RangeRule; public interface RangeRuleDao { - List<RangeRule> getRangeRules(String serviceModel, String endPointPosition, EquipmentLevel equipLevel); + List<RangeRule> getRangeRules(String serviceModel, String endPointPosition, EquipmentLevel equipLevel); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDaoImpl.java index dec05ece..0880929b 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/RangeRuleDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,37 +34,37 @@ import org.springframework.jdbc.core.RowMapper; public class RangeRuleDaoImpl implements RangeRuleDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(RangeRuleDaoImpl.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(RangeRuleDaoImpl.class); - private static final String GET_SQL = - "SELECT * FROM RANGE_RULE WHERE service_model = ? AND end_point_position = ? AND equipment_level = ?"; + private static final String GET_SQL = + "SELECT * FROM RANGE_RULE WHERE service_model = ? AND end_point_position = ? AND equipment_level = ?"; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - @Override - public List<RangeRule> getRangeRules(String serviceModel, String endPointPosition, EquipmentLevel equipLevel) { - List<RangeRule> rangeRuleList = - jdbcTemplate.query(GET_SQL, new Object[] { serviceModel, endPointPosition, equipLevel.toString() }, - new RowMapper<RangeRule>() { + @Override + public List<RangeRule> getRangeRules(String serviceModel, String endPointPosition, EquipmentLevel equipLevel) { + List<RangeRule> rangeRuleList = + jdbcTemplate.query(GET_SQL, new Object[] { serviceModel, endPointPosition, equipLevel.toString() }, + new RowMapper<RangeRule>() { - @Override - public RangeRule mapRow(ResultSet rs, int rowNum) throws SQLException { - RangeRule rl = new RangeRule(); - rl.id = rs.getLong("range_rule_id"); - rl.rangeName = rs.getString("range_name"); - rl.serviceModel = rs.getString("service_model"); - rl.endPointPosition = rs.getString("end_point_position"); - rl.equipmentLevel = rs.getString("equipment_level"); - rl.minValue = rs.getInt("min_value"); - rl.maxValue = rs.getInt("max_value"); - return rl; - } - }); - return rangeRuleList; - } + @Override + public RangeRule mapRow(ResultSet rs, int rowNum) throws SQLException { + RangeRule rl = new RangeRule(); + rl.id = rs.getLong("range_rule_id"); + rl.rangeName = rs.getString("range_name"); + rl.serviceModel = rs.getString("service_model"); + rl.endPointPosition = rs.getString("end_point_position"); + rl.equipmentLevel = rs.getString("equipment_level"); + rl.minValue = rs.getInt("min_value"); + rl.maxValue = rs.getInt("max_value"); + return rl; + } + }); + return rangeRuleList; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDao.java index 31ce9e6a..55b24b61 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,11 +28,11 @@ import org.openecomp.sdnc.ra.rule.data.ResourceRule; public interface ResourceRuleDao { - List<ResourceRule> getResourceRules(String serviceModel, String endPointPosition, EquipmentLevel equipLevel); + List<ResourceRule> getResourceRules(String serviceModel, String endPointPosition, EquipmentLevel equipLevel); - ResourceRule getResourceRule( - String serviceModel, - String endPointPosition, - EquipmentLevel equipLevel, - String resourceName); + ResourceRule getResourceRule( + String serviceModel, + String endPointPosition, + EquipmentLevel equipLevel, + String resourceName); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDaoImpl.java index 819a01cd..72793a40 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/ResourceRuleDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,83 +35,83 @@ import org.springframework.jdbc.core.RowMapper; public class ResourceRuleDaoImpl implements ResourceRuleDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ResourceRuleDaoImpl.class); - - private static final String GET1_SQL = - "SELECT * FROM RESOURCE_RULE WHERE service_model = ? AND end_point_position = ? AND equipment_level = ?"; - private static final String GET2_SQL = - "SELECT * FROM RESOURCE_RULE WHERE service_model = ? AND end_point_position = ? AND equipment_level = ? AND resource_name = ?"; - private static final String THRESHOLD_SQL = "SELECT * FROM RESOURCE_THRESHOLD WHERE resource_rule_id = ?"; - - private JdbcTemplate jdbcTemplate; - ResourceRuleRowMapper resourceRuleRowMapper = new ResourceRuleRowMapper(); - ResourceThresholdRowMapper resourceThresholdRowMapper = new ResourceThresholdRowMapper(); - - @Override - public List<ResourceRule> getResourceRules( - String serviceModel, - String endPointPosition, - EquipmentLevel equipLevel) { - List<ResourceRule> resourceRuleList = jdbcTemplate.query(GET1_SQL, - new Object[] { serviceModel, endPointPosition, equipLevel.toString() }, resourceRuleRowMapper); - - for (ResourceRule rr : resourceRuleList) - rr.thresholdList = jdbcTemplate.query(THRESHOLD_SQL, new Object[] { rr.id }, resourceThresholdRowMapper); - - return resourceRuleList; - } - - @Override - public ResourceRule getResourceRule( - String serviceModel, - String endPointPosition, - EquipmentLevel equipLevel, - String resourceName) { - List<ResourceRule> resourceRuleList = jdbcTemplate.query(GET2_SQL, - new Object[] { serviceModel, endPointPosition, equipLevel.toString(), resourceName }, - resourceRuleRowMapper); - - if (resourceRuleList == null || resourceRuleList.isEmpty()) - return null; - - ResourceRule rr = resourceRuleList.get(0); - rr.thresholdList = jdbcTemplate.query(THRESHOLD_SQL, new Object[] { rr.id }, resourceThresholdRowMapper); - - return rr; - } - - private static class ResourceRuleRowMapper implements RowMapper<ResourceRule> { - - @Override - public ResourceRule mapRow(ResultSet rs, int rowNum) throws SQLException { - ResourceRule rl = new ResourceRule(); - rl.id = rs.getLong("resource_rule_id"); - rl.resourceName = rs.getString("resource_name"); - rl.serviceModel = rs.getString("service_model"); - rl.endPointPosition = rs.getString("end_point_position"); - rl.serviceExpression = rs.getString("service_expression"); - rl.equipmentLevel = rs.getString("equipment_level"); - rl.equipmentExpression = rs.getString("equipment_expression"); - rl.allocationExpression = rs.getString("allocation_expression"); - rl.softLimitExpression = rs.getString("soft_limit_expression"); - rl.hardLimitExpression = rs.getString("hard_limit_expression"); - return rl; - } - } - - private static class ResourceThresholdRowMapper implements RowMapper<ResourceThreshold> { - - @Override - public ResourceThreshold mapRow(ResultSet rs, int rowNum) throws SQLException { - ResourceThreshold th = new ResourceThreshold(); - th.expression = rs.getString("threshold_expression"); - th.message = rs.getString("threshold_message"); - return th; - } - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(ResourceRuleDaoImpl.class); + + private static final String GET1_SQL = + "SELECT * FROM RESOURCE_RULE WHERE service_model = ? AND end_point_position = ? AND equipment_level = ?"; + private static final String GET2_SQL = + "SELECT * FROM RESOURCE_RULE WHERE service_model = ? AND end_point_position = ? AND equipment_level = ? AND resource_name = ?"; + private static final String THRESHOLD_SQL = "SELECT * FROM RESOURCE_THRESHOLD WHERE resource_rule_id = ?"; + + private JdbcTemplate jdbcTemplate; + ResourceRuleRowMapper resourceRuleRowMapper = new ResourceRuleRowMapper(); + ResourceThresholdRowMapper resourceThresholdRowMapper = new ResourceThresholdRowMapper(); + + @Override + public List<ResourceRule> getResourceRules( + String serviceModel, + String endPointPosition, + EquipmentLevel equipLevel) { + List<ResourceRule> resourceRuleList = jdbcTemplate.query(GET1_SQL, + new Object[] { serviceModel, endPointPosition, equipLevel.toString() }, resourceRuleRowMapper); + + for (ResourceRule rr : resourceRuleList) + rr.thresholdList = jdbcTemplate.query(THRESHOLD_SQL, new Object[] { rr.id }, resourceThresholdRowMapper); + + return resourceRuleList; + } + + @Override + public ResourceRule getResourceRule( + String serviceModel, + String endPointPosition, + EquipmentLevel equipLevel, + String resourceName) { + List<ResourceRule> resourceRuleList = jdbcTemplate.query(GET2_SQL, + new Object[] { serviceModel, endPointPosition, equipLevel.toString(), resourceName }, + resourceRuleRowMapper); + + if (resourceRuleList == null || resourceRuleList.isEmpty()) + return null; + + ResourceRule rr = resourceRuleList.get(0); + rr.thresholdList = jdbcTemplate.query(THRESHOLD_SQL, new Object[] { rr.id }, resourceThresholdRowMapper); + + return rr; + } + + private static class ResourceRuleRowMapper implements RowMapper<ResourceRule> { + + @Override + public ResourceRule mapRow(ResultSet rs, int rowNum) throws SQLException { + ResourceRule rl = new ResourceRule(); + rl.id = rs.getLong("resource_rule_id"); + rl.resourceName = rs.getString("resource_name"); + rl.serviceModel = rs.getString("service_model"); + rl.endPointPosition = rs.getString("end_point_position"); + rl.serviceExpression = rs.getString("service_expression"); + rl.equipmentLevel = rs.getString("equipment_level"); + rl.equipmentExpression = rs.getString("equipment_expression"); + rl.allocationExpression = rs.getString("allocation_expression"); + rl.softLimitExpression = rs.getString("soft_limit_expression"); + rl.hardLimitExpression = rs.getString("hard_limit_expression"); + return rl; + } + } + + private static class ResourceThresholdRowMapper implements RowMapper<ResourceThreshold> { + + @Override + public ResourceThreshold mapRow(ResultSet rs, int rowNum) throws SQLException { + ResourceThreshold th = new ResourceThreshold(); + th.expression = rs.getString("threshold_expression"); + th.message = rs.getString("threshold_message"); + return th; + } + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDao.java index eb41792d..6734fb54 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.ra.rule.dao; public interface VpeLockDao { - String getVpeLock(String vpeName); + String getVpeLock(String vpeName); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDaoImpl.java index eb6cef3b..d712b8d0 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/dao/VpeLockDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,20 +29,20 @@ import org.springframework.jdbc.core.JdbcTemplate; public class VpeLockDaoImpl implements VpeLockDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(VpeLockDaoImpl.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(VpeLockDaoImpl.class); - private final static String GET_SQL = "SELECT vpn_lock FROM VPE_LOCK WHERE vpe_name = ?"; + private final static String GET_SQL = "SELECT vpn_lock FROM VPE_LOCK WHERE vpe_name = ?"; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - @Override - public String getVpeLock(String vpeName) { - List<String> ll = jdbcTemplate.queryForList(GET_SQL, String.class, vpeName); - return ll != null && !ll.isEmpty() ? ll.get(0) : null; - } + @Override + public String getVpeLock(String vpeName) { + List<String> ll = jdbcTemplate.queryForList(GET_SQL, String.class, vpeName); + return ll != null && !ll.isEmpty() ? ll.get(0) : null; + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/RangeRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/RangeRule.java index ed76f6b1..e657e8b4 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/RangeRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/RangeRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,11 +23,11 @@ package org.openecomp.sdnc.ra.rule.data; public class RangeRule { - public long id; - public String rangeName; - public String serviceModel; - public String endPointPosition; - public String equipmentLevel; - public int minValue; - public int maxValue; + public long id; + public String rangeName; + public String serviceModel; + public String endPointPosition; + public String equipmentLevel; + public int minValue; + public int maxValue; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceRule.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceRule.java index c4d55f92..ca8ab540 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceRule.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceRule.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,15 +25,15 @@ import java.util.List; public class ResourceRule { - public long id; - public String resourceName; - public String serviceModel; - public String endPointPosition; - public String serviceExpression; - public String equipmentLevel; - public String equipmentExpression; - public String allocationExpression; - public String softLimitExpression; - public String hardLimitExpression; - public List<ResourceThreshold> thresholdList; + public long id; + public String resourceName; + public String serviceModel; + public String endPointPosition; + public String serviceExpression; + public String equipmentLevel; + public String equipmentExpression; + public String allocationExpression; + public String softLimitExpression; + public String hardLimitExpression; + public List<ResourceThreshold> thresholdList; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceThreshold.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceThreshold.java index 7be4067e..b733a356 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceThreshold.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ResourceThreshold.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,6 @@ package org.openecomp.sdnc.ra.rule.data; public class ResourceThreshold { - public String expression; - public String message; + public String expression; + public String message; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ThresholdStatus.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ThresholdStatus.java index 5f772ef1..d9ea2176 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ThresholdStatus.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/rule/data/ThresholdStatus.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,10 +23,10 @@ package org.openecomp.sdnc.ra.rule.data; public class ThresholdStatus { - public ResourceRule resourceRule; - public ResourceThreshold resourceThreshold; - public long limitValue; - public long thresholdValue; - public long used; - public long lastAdded; + public ResourceRule resourceRule; + public ResourceThreshold resourceThreshold; + public long limitValue; + public long thresholdValue; + public long used; + public long lastAdded; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDao.java index 811118cb..c057d91f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,13 +26,13 @@ import org.openecomp.sdnc.ra.service.data.ServiceStatus; public interface ServiceResourceDao { - ServiceResource getServiceResource(String serviceInstanceId, ServiceStatus serviceStatus); + ServiceResource getServiceResource(String serviceInstanceId, ServiceStatus serviceStatus); - void addServiceResource(ServiceResource serviceResource); + void addServiceResource(ServiceResource serviceResource); - void updateServiceResource(ServiceResource serviceResource); + void updateServiceResource(ServiceResource serviceResource); - void deleteServiceResource(String serviceInstanceId, ServiceStatus serviceStatus); + void deleteServiceResource(String serviceInstanceId, ServiceStatus serviceStatus); - void updateServiceStatus(String serviceInstanceId, ServiceStatus serviceStatus, ServiceStatus newServiceStatus); + void updateServiceStatus(String serviceInstanceId, ServiceStatus serviceStatus, ServiceStatus newServiceStatus); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDaoImpl.java index 6432e80d..2b5cc0ac 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/dao/ServiceResourceDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,77 +34,77 @@ import org.springframework.jdbc.core.RowMapper; public class ServiceResourceDaoImpl implements ServiceResourceDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ServiceResourceDaoImpl.class); - - private static final String GET_SQL = - "SELECT * FROM SERVICE_RESOURCE WHERE service_instance_id = ? AND service_status = ?"; - - private static final String ADD_SQL = "INSERT INTO SERVICE_RESOURCE (\n" - + " service_instance_id, service_status, service_change_number, resource_set_id, resource_union_id)\n" - + "VALUES (?, ?, ?, ?, ?)"; - - private static final String UPDATE_SQL = - "UPDATE SERVICE_RESOURCE SET service_change_number = ?, resource_set_id = ?\n" - + "WHERE service_instance_id = ? AND service_status = ?"; - - private static final String DELETE_SQL = - "DELETE FROM SERVICE_RESOURCE WHERE service_instance_id = ? AND service_status = ?"; - - private static final String UPDATE_STATUS_SQL = - "UPDATE SERVICE_RESOURCE SET service_status = ? WHERE service_instance_id = ? AND service_status = ?"; - - private JdbcTemplate jdbcTemplate; - - @Override - public ServiceResource getServiceResource(final String serviceInstanceId, final ServiceStatus serviceStatus) { - List<ServiceResource> serviceResourceList = - jdbcTemplate.query(GET_SQL, new Object[] { serviceInstanceId, serviceStatus.toString() }, - new RowMapper<ServiceResource>() { - - @Override - public ServiceResource mapRow(ResultSet rs, int rowNum) throws SQLException { - ServiceResource sr = new ServiceResource(); - sr.id = rs.getLong("service_resource_id"); - sr.serviceInstanceId = serviceInstanceId; - sr.serviceStatus = serviceStatus; - sr.serviceChangeNumber = rs.getInt("service_change_number"); - sr.resourceSetId = rs.getString("resource_set_id"); - sr.resourceUnionId = rs.getString("resource_union_id"); - return sr; - } - }); - if (serviceResourceList.isEmpty()) - return null; - return serviceResourceList.get(0); - } - - @Override - public void addServiceResource(ServiceResource serviceResource) { - jdbcTemplate.update(ADD_SQL, serviceResource.serviceInstanceId, serviceResource.serviceStatus.toString(), - serviceResource.serviceChangeNumber, serviceResource.resourceSetId, serviceResource.resourceUnionId); - } - - @Override - public void updateServiceResource(ServiceResource serviceResource) { - jdbcTemplate.update(UPDATE_SQL, serviceResource.serviceChangeNumber, serviceResource.resourceSetId, - serviceResource.serviceInstanceId, serviceResource.serviceStatus.toString()); - } - - @Override - public void deleteServiceResource(String serviceInstanceId, ServiceStatus serviceStatus) { - jdbcTemplate.update(DELETE_SQL, serviceInstanceId, serviceStatus.toString()); - } - - @Override - public void updateServiceStatus( - String serviceInstanceId, - ServiceStatus serviceStatus, - ServiceStatus newServiceStatus) { - jdbcTemplate.update(UPDATE_STATUS_SQL, newServiceStatus.toString(), serviceInstanceId, serviceStatus.toString()); - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(ServiceResourceDaoImpl.class); + + private static final String GET_SQL = + "SELECT * FROM SERVICE_RESOURCE WHERE service_instance_id = ? AND service_status = ?"; + + private static final String ADD_SQL = "INSERT INTO SERVICE_RESOURCE (\n" + + " service_instance_id, service_status, service_change_number, resource_set_id, resource_union_id)\n" + + "VALUES (?, ?, ?, ?, ?)"; + + private static final String UPDATE_SQL = + "UPDATE SERVICE_RESOURCE SET service_change_number = ?, resource_set_id = ?\n" + + "WHERE service_instance_id = ? AND service_status = ?"; + + private static final String DELETE_SQL = + "DELETE FROM SERVICE_RESOURCE WHERE service_instance_id = ? AND service_status = ?"; + + private static final String UPDATE_STATUS_SQL = + "UPDATE SERVICE_RESOURCE SET service_status = ? WHERE service_instance_id = ? AND service_status = ?"; + + private JdbcTemplate jdbcTemplate; + + @Override + public ServiceResource getServiceResource(final String serviceInstanceId, final ServiceStatus serviceStatus) { + List<ServiceResource> serviceResourceList = + jdbcTemplate.query(GET_SQL, new Object[] { serviceInstanceId, serviceStatus.toString() }, + new RowMapper<ServiceResource>() { + + @Override + public ServiceResource mapRow(ResultSet rs, int rowNum) throws SQLException { + ServiceResource sr = new ServiceResource(); + sr.id = rs.getLong("service_resource_id"); + sr.serviceInstanceId = serviceInstanceId; + sr.serviceStatus = serviceStatus; + sr.serviceChangeNumber = rs.getInt("service_change_number"); + sr.resourceSetId = rs.getString("resource_set_id"); + sr.resourceUnionId = rs.getString("resource_union_id"); + return sr; + } + }); + if (serviceResourceList.isEmpty()) + return null; + return serviceResourceList.get(0); + } + + @Override + public void addServiceResource(ServiceResource serviceResource) { + jdbcTemplate.update(ADD_SQL, serviceResource.serviceInstanceId, serviceResource.serviceStatus.toString(), + serviceResource.serviceChangeNumber, serviceResource.resourceSetId, serviceResource.resourceUnionId); + } + + @Override + public void updateServiceResource(ServiceResource serviceResource) { + jdbcTemplate.update(UPDATE_SQL, serviceResource.serviceChangeNumber, serviceResource.resourceSetId, + serviceResource.serviceInstanceId, serviceResource.serviceStatus.toString()); + } + + @Override + public void deleteServiceResource(String serviceInstanceId, ServiceStatus serviceStatus) { + jdbcTemplate.update(DELETE_SQL, serviceInstanceId, serviceStatus.toString()); + } + + @Override + public void updateServiceStatus( + String serviceInstanceId, + ServiceStatus serviceStatus, + ServiceStatus newServiceStatus) { + jdbcTemplate.update(UPDATE_STATUS_SQL, newServiceStatus.toString(), serviceInstanceId, serviceStatus.toString()); + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceResource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceResource.java index 65d4488e..e17145e5 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceResource.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceResource.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,10 +23,10 @@ package org.openecomp.sdnc.ra.service.data; public class ServiceResource { - public long id; - public String serviceInstanceId; - public ServiceStatus serviceStatus; - public int serviceChangeNumber; - public String resourceSetId; - public String resourceUnionId; + public long id; + public String serviceInstanceId; + public ServiceStatus serviceStatus; + public int serviceChangeNumber; + public String resourceSetId; + public String resourceUnionId; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceStatus.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceStatus.java index 32f473d3..862c3e44 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceStatus.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/ra/service/data/ServiceStatus.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.ra.service.data; public enum ServiceStatus { - Active, Pending + Active, Pending } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/AllocationFunction.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/AllocationFunction.java index 3a934091..00cfb1fc 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/AllocationFunction.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/AllocationFunction.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,270 +61,270 @@ import org.slf4j.LoggerFactory; class AllocationFunction extends SynchronizedFunction { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(AllocationFunction.class); - - private ResourceDao resourceDao; - - private String applicationId; - private AllocationRequest request; - private AllocationOutcome outcome; - - private List<Resource> updateList = new ArrayList<Resource>(); - - public AllocationFunction(LockHelper lockHelper, ResourceDao resourceDao, String applicationId, - AllocationRequest request, int lockTimeout) { - super(lockHelper, getLockNames(request), lockTimeout); - this.applicationId = applicationId; - this.resourceDao = resourceDao; - this.request = request; - } - - private static Collection<String> getLockNames(AllocationRequest request) { - Set<String> lockResourceNames = new HashSet<String>(); - addLockNames(lockResourceNames, request); - return lockResourceNames; - } - - private static void addLockNames(Set<String> lockResourceNames, AllocationRequest request) { - if (request instanceof MultiAssetAllocationRequest) { - MultiAssetAllocationRequest req = (MultiAssetAllocationRequest) request; - if (req.assetIdList != null) - lockResourceNames.addAll(req.assetIdList); - } else if (request instanceof MultiResourceAllocationRequest) { - MultiResourceAllocationRequest req = (MultiResourceAllocationRequest) request; - if (req.allocationRequestList != null) - for (AllocationRequest request1 : req.allocationRequestList) - addLockNames(lockResourceNames, request1); - } else if (request.assetId != null) - lockResourceNames.add(request.assetId); - } - - @Override - public void _exec() throws ResourceLockedException { - outcome = allocate(request); - if (outcome.status == AllocationStatus.Success) - for (Resource r : updateList) - resourceDao.saveResource(r); - } - - private AllocationOutcome allocate(AllocationRequest allocationRequest) throws ResourceLockedException { - if (allocationRequest instanceof MultiAssetAllocationRequest) - return allocateMultiAsset((MultiAssetAllocationRequest) allocationRequest); - if (allocationRequest instanceof MultiResourceAllocationRequest) - return allocateMultiResource((MultiResourceAllocationRequest) allocationRequest); - if (allocationRequest instanceof LimitAllocationRequest) - return allocateLimit((LimitAllocationRequest) allocationRequest); - if (allocationRequest instanceof LabelAllocationRequest) - return allocateLabel((LabelAllocationRequest) allocationRequest); - if (allocationRequest instanceof RangeAllocationRequest) - return allocateRange((RangeAllocationRequest) allocationRequest); - return null; - } - - private MultiAssetAllocationOutcome allocateMultiAsset(MultiAssetAllocationRequest req) { - // TODO Auto-generated method stub - return null; - } - - private MultiResourceAllocationOutcome allocateMultiResource(MultiResourceAllocationRequest req) { - MultiResourceAllocationOutcome out = new MultiResourceAllocationOutcome(); - out.request = req; - out.allocationOutcomeList = new ArrayList<AllocationOutcome>(); - out.status = AllocationStatus.Success; - - if (req.allocationRequestList != null) - for (AllocationRequest req1 : req.allocationRequestList) { - AllocationOutcome out1 = allocate(req1); - out.allocationOutcomeList.add(out1); - if (out1.status != AllocationStatus.Success) - out.status = AllocationStatus.Failure; - } - - return out; - } - - private LimitAllocationOutcome allocateLimit(LimitAllocationRequest req) { - LimitAllocationOutcome out = new LimitAllocationOutcome(); - out.request = req; - - Resource r = resourceDao.getResource(req.assetId, req.resourceName); - if (r == null) { - r = new LimitResource(); - r.resourceKey = new ResourceKey(); - r.resourceKey.assetId = req.assetId; - r.resourceKey.resourceName = req.resourceName; - r.resourceType = ResourceType.Limit; - } else { - if (r.resourceType != ResourceType.Limit) { - out.status = AllocationStatus.ResourceNotFound; - return out; - } - LimitUtil.recalculate((LimitResource) r); - } - - LimitResource l = (LimitResource) r; - if (LimitUtil.checkLimit(l, req)) { - out.status = AllocationStatus.Success; - if (req.allocateCount > 0) { - out.allocatedCount = LimitUtil.allocateLimit(l, req, applicationId); - updateList.add(l); - } - } else - out.status = AllocationStatus.Failure; - - out.used = l.used; - out.limit = req.checkLimit; - - return out; - } - - private LabelAllocationOutcome allocateLabel(LabelAllocationRequest req) { - LabelAllocationOutcome out = new LabelAllocationOutcome(); - - out.request = req; - - Resource r = resourceDao.getResource(req.assetId, req.resourceName); - if (r == null) { - r = new LabelResource(); - r.resourceKey = new ResourceKey(); - r.resourceKey.assetId = req.assetId; - r.resourceKey.resourceName = req.resourceName; - r.resourceType = ResourceType.Label; - } else { - if (r.resourceType != ResourceType.Label) { - out.status = AllocationStatus.ResourceNotFound; - return out; - } - LabelUtil.recalculate((LabelResource) r); - } - - LabelResource l = (LabelResource) r; - if (LabelUtil.checkLabel(l, req)) { - out.status = AllocationStatus.Success; - out.currentLabel = l.label; - if (req.allocate) { - out.allocatedLabel = LabelUtil.allocateLabel(l, req, applicationId); - updateList.add(l); - } - } else - out.status = AllocationStatus.Failure; - - return out; - } - - private RangeAllocationOutcome allocateRange(RangeAllocationRequest req) { - RangeAllocationOutcome out = new RangeAllocationOutcome(); - - out.request = req; - - Resource r = resourceDao.getResource(req.assetId, req.resourceName); - if (r == null) { - r = new RangeResource(); - r.resourceKey = new ResourceKey(); - r.resourceKey.assetId = req.assetId; - r.resourceKey.resourceName = req.resourceName; - r.resourceType = ResourceType.Range; - } else { - if (r.resourceType != ResourceType.Range) { - out.status = AllocationStatus.ResourceNotFound; - return out; - } - RangeUtil.recalculate((RangeResource) r); - } - - RangeResource rr = (RangeResource) r; - SortedSet<Integer> foundNumbers = null; - if (!req.check) { - out.status = AllocationStatus.Success; - foundNumbers = req.requestedNumbers; - } else { - if (req.requestedNumbers != null && req.requestedNumbers.size() > 0) { - foundNumbers = req.requestedNumbers; - out.status = AllocationStatus.Success; - for (int n : foundNumbers) - if (!RangeUtil.checkRange(rr, req, n)) { - out.status = AllocationStatus.Failure; - break; - } - } else { - foundNumbers = new TreeSet<Integer>(); - int foundCount = 0; - - // First try to reuse the numbers already taken by the same resource union - SortedSet<Integer> uu = RangeUtil.getUsed(rr, req.resourceUnionId); - if (uu != null && !uu.isEmpty()) { - if (uu.size() >= req.requestedCount) { - // Just take the first req.requestedCount numbers from uu - Iterator<Integer> i = uu.iterator(); - while (foundCount < req.requestedCount) { - foundNumbers.add(i.next()); - foundCount++; - } - } else { - // Additional numbers are requested. Try to find them starting from - // the minimum we have in uu (the first element) towards the min - // parameter, and then starting from the maximum in uu (the last - // element) towards the max parameter. - // NOTE: In case of request for sequential numbers, the parameters - // alignBlockSize and alignModulus are ignored. It would be harder - // to take them into account, and currently it is not needed. - - int uumin = uu.first() - 1; - int uumax = uu.last() + 1; - foundNumbers.addAll(uu); - foundCount = uu.size(); - for (int n = uumin; foundCount < req.requestedCount && n >= req.checkMin; n--) { - if (RangeUtil.checkRange(rr, req, n)) { - foundNumbers.add(n); - foundCount++; - } else if (req.sequential) - break; - } - for (int n = uumax; foundCount < req.requestedCount && n <= req.checkMax; n++) { - if (RangeUtil.checkRange(rr, req, n)) { - foundNumbers.add(n); - foundCount++; - } else if (req.sequential) - break; - } - - // If we could not find enough numbers trying to reuse currently - // allocated, reset foundNumbers and foundCount, continue with - // the normal allocation of new numbers. - if (foundCount < req.requestedCount) { - foundNumbers = new TreeSet<Integer>(); - foundCount = 0; - } - } - } - - for (int n = req.checkMin; foundCount < req.requestedCount && n <= req.checkMax; n++) - if (RangeUtil.checkRange(rr, req, n)) { - foundNumbers.add(n); - foundCount++; - } else if (req.sequential) - foundCount = 0; - - out.status = foundCount == req.requestedCount ? AllocationStatus.Success : AllocationStatus.Failure; - } - } - - if (out.status == AllocationStatus.Success) { - out.allocated = foundNumbers; - if (req.allocate) { - RangeUtil.allocateRange(rr, out.allocated, req, applicationId); - updateList.add(rr); - } - } else - out.allocated = new TreeSet<Integer>(); - - out.used = rr.used; - - return out; - } - - public AllocationOutcome getAllocationOutcome() { - return outcome; - } + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(AllocationFunction.class); + + private ResourceDao resourceDao; + + private String applicationId; + private AllocationRequest request; + private AllocationOutcome outcome; + + private List<Resource> updateList = new ArrayList<Resource>(); + + public AllocationFunction(LockHelper lockHelper, ResourceDao resourceDao, String applicationId, + AllocationRequest request, int lockTimeout) { + super(lockHelper, getLockNames(request), lockTimeout); + this.applicationId = applicationId; + this.resourceDao = resourceDao; + this.request = request; + } + + private static Collection<String> getLockNames(AllocationRequest request) { + Set<String> lockResourceNames = new HashSet<String>(); + addLockNames(lockResourceNames, request); + return lockResourceNames; + } + + private static void addLockNames(Set<String> lockResourceNames, AllocationRequest request) { + if (request instanceof MultiAssetAllocationRequest) { + MultiAssetAllocationRequest req = (MultiAssetAllocationRequest) request; + if (req.assetIdList != null) + lockResourceNames.addAll(req.assetIdList); + } else if (request instanceof MultiResourceAllocationRequest) { + MultiResourceAllocationRequest req = (MultiResourceAllocationRequest) request; + if (req.allocationRequestList != null) + for (AllocationRequest request1 : req.allocationRequestList) + addLockNames(lockResourceNames, request1); + } else if (request.assetId != null) + lockResourceNames.add(request.assetId); + } + + @Override + public void _exec() throws ResourceLockedException { + outcome = allocate(request); + if (outcome.status == AllocationStatus.Success) + for (Resource r : updateList) + resourceDao.saveResource(r); + } + + private AllocationOutcome allocate(AllocationRequest allocationRequest) throws ResourceLockedException { + if (allocationRequest instanceof MultiAssetAllocationRequest) + return allocateMultiAsset((MultiAssetAllocationRequest) allocationRequest); + if (allocationRequest instanceof MultiResourceAllocationRequest) + return allocateMultiResource((MultiResourceAllocationRequest) allocationRequest); + if (allocationRequest instanceof LimitAllocationRequest) + return allocateLimit((LimitAllocationRequest) allocationRequest); + if (allocationRequest instanceof LabelAllocationRequest) + return allocateLabel((LabelAllocationRequest) allocationRequest); + if (allocationRequest instanceof RangeAllocationRequest) + return allocateRange((RangeAllocationRequest) allocationRequest); + return null; + } + + private MultiAssetAllocationOutcome allocateMultiAsset(MultiAssetAllocationRequest req) { + // TODO Auto-generated method stub + return null; + } + + private MultiResourceAllocationOutcome allocateMultiResource(MultiResourceAllocationRequest req) { + MultiResourceAllocationOutcome out = new MultiResourceAllocationOutcome(); + out.request = req; + out.allocationOutcomeList = new ArrayList<AllocationOutcome>(); + out.status = AllocationStatus.Success; + + if (req.allocationRequestList != null) + for (AllocationRequest req1 : req.allocationRequestList) { + AllocationOutcome out1 = allocate(req1); + out.allocationOutcomeList.add(out1); + if (out1.status != AllocationStatus.Success) + out.status = AllocationStatus.Failure; + } + + return out; + } + + private LimitAllocationOutcome allocateLimit(LimitAllocationRequest req) { + LimitAllocationOutcome out = new LimitAllocationOutcome(); + out.request = req; + + Resource r = resourceDao.getResource(req.assetId, req.resourceName); + if (r == null) { + r = new LimitResource(); + r.resourceKey = new ResourceKey(); + r.resourceKey.assetId = req.assetId; + r.resourceKey.resourceName = req.resourceName; + r.resourceType = ResourceType.Limit; + } else { + if (r.resourceType != ResourceType.Limit) { + out.status = AllocationStatus.ResourceNotFound; + return out; + } + LimitUtil.recalculate((LimitResource) r); + } + + LimitResource l = (LimitResource) r; + if (LimitUtil.checkLimit(l, req)) { + out.status = AllocationStatus.Success; + if (req.allocateCount > 0) { + out.allocatedCount = LimitUtil.allocateLimit(l, req, applicationId); + updateList.add(l); + } + } else + out.status = AllocationStatus.Failure; + + out.used = l.used; + out.limit = req.checkLimit; + + return out; + } + + private LabelAllocationOutcome allocateLabel(LabelAllocationRequest req) { + LabelAllocationOutcome out = new LabelAllocationOutcome(); + + out.request = req; + + Resource r = resourceDao.getResource(req.assetId, req.resourceName); + if (r == null) { + r = new LabelResource(); + r.resourceKey = new ResourceKey(); + r.resourceKey.assetId = req.assetId; + r.resourceKey.resourceName = req.resourceName; + r.resourceType = ResourceType.Label; + } else { + if (r.resourceType != ResourceType.Label) { + out.status = AllocationStatus.ResourceNotFound; + return out; + } + LabelUtil.recalculate((LabelResource) r); + } + + LabelResource l = (LabelResource) r; + if (LabelUtil.checkLabel(l, req)) { + out.status = AllocationStatus.Success; + out.currentLabel = l.label; + if (req.allocate) { + out.allocatedLabel = LabelUtil.allocateLabel(l, req, applicationId); + updateList.add(l); + } + } else + out.status = AllocationStatus.Failure; + + return out; + } + + private RangeAllocationOutcome allocateRange(RangeAllocationRequest req) { + RangeAllocationOutcome out = new RangeAllocationOutcome(); + + out.request = req; + + Resource r = resourceDao.getResource(req.assetId, req.resourceName); + if (r == null) { + r = new RangeResource(); + r.resourceKey = new ResourceKey(); + r.resourceKey.assetId = req.assetId; + r.resourceKey.resourceName = req.resourceName; + r.resourceType = ResourceType.Range; + } else { + if (r.resourceType != ResourceType.Range) { + out.status = AllocationStatus.ResourceNotFound; + return out; + } + RangeUtil.recalculate((RangeResource) r); + } + + RangeResource rr = (RangeResource) r; + SortedSet<Integer> foundNumbers = null; + if (!req.check) { + out.status = AllocationStatus.Success; + foundNumbers = req.requestedNumbers; + } else { + if (req.requestedNumbers != null && req.requestedNumbers.size() > 0) { + foundNumbers = req.requestedNumbers; + out.status = AllocationStatus.Success; + for (int n : foundNumbers) + if (!RangeUtil.checkRange(rr, req, n)) { + out.status = AllocationStatus.Failure; + break; + } + } else { + foundNumbers = new TreeSet<Integer>(); + int foundCount = 0; + + // First try to reuse the numbers already taken by the same resource union + SortedSet<Integer> uu = RangeUtil.getUsed(rr, req.resourceUnionId); + if (uu != null && !uu.isEmpty()) { + if (uu.size() >= req.requestedCount) { + // Just take the first req.requestedCount numbers from uu + Iterator<Integer> i = uu.iterator(); + while (foundCount < req.requestedCount) { + foundNumbers.add(i.next()); + foundCount++; + } + } else { + // Additional numbers are requested. Try to find them starting from + // the minimum we have in uu (the first element) towards the min + // parameter, and then starting from the maximum in uu (the last + // element) towards the max parameter. + // NOTE: In case of request for sequential numbers, the parameters + // alignBlockSize and alignModulus are ignored. It would be harder + // to take them into account, and currently it is not needed. + + int uumin = uu.first() - 1; + int uumax = uu.last() + 1; + foundNumbers.addAll(uu); + foundCount = uu.size(); + for (int n = uumin; foundCount < req.requestedCount && n >= req.checkMin; n--) { + if (RangeUtil.checkRange(rr, req, n)) { + foundNumbers.add(n); + foundCount++; + } else if (req.sequential) + break; + } + for (int n = uumax; foundCount < req.requestedCount && n <= req.checkMax; n++) { + if (RangeUtil.checkRange(rr, req, n)) { + foundNumbers.add(n); + foundCount++; + } else if (req.sequential) + break; + } + + // If we could not find enough numbers trying to reuse currently + // allocated, reset foundNumbers and foundCount, continue with + // the normal allocation of new numbers. + if (foundCount < req.requestedCount) { + foundNumbers = new TreeSet<Integer>(); + foundCount = 0; + } + } + } + + for (int n = req.checkMin; foundCount < req.requestedCount && n <= req.checkMax; n++) + if (RangeUtil.checkRange(rr, req, n)) { + foundNumbers.add(n); + foundCount++; + } else if (req.sequential) + foundCount = 0; + + out.status = foundCount == req.requestedCount ? AllocationStatus.Success : AllocationStatus.Failure; + } + } + + if (out.status == AllocationStatus.Success) { + out.allocated = foundNumbers; + if (req.allocate) { + RangeUtil.allocateRange(rr, out.allocated, req, applicationId); + updateList.add(rr); + } + } else + out.allocated = new TreeSet<Integer>(); + + out.used = rr.used; + + return out; + } + + public AllocationOutcome getAllocationOutcome() { + return outcome; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ReleaseFunction.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ReleaseFunction.java index f546954f..c8dab080 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ReleaseFunction.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ReleaseFunction.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,52 +37,52 @@ import org.slf4j.LoggerFactory; class ReleaseFunction extends SynchronizedFunction { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ReleaseFunction.class); + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(ReleaseFunction.class); - private ResourceDao resourceDao; + private ResourceDao resourceDao; - private String resourceSetId, resourceUnionId; + private String resourceSetId, resourceUnionId; - public ReleaseFunction(LockHelper lockHelper, ResourceDao resourceDao, String resourceSetId, - String resourceUnionId, Collection<String> lockNames, int lockTimeout) { - super(lockHelper, lockNames, lockTimeout); - this.resourceDao = resourceDao; - this.resourceSetId = resourceSetId; - this.resourceUnionId = resourceUnionId; - } + public ReleaseFunction(LockHelper lockHelper, ResourceDao resourceDao, String resourceSetId, + String resourceUnionId, Collection<String> lockNames, int lockTimeout) { + super(lockHelper, lockNames, lockTimeout); + this.resourceDao = resourceDao; + this.resourceSetId = resourceSetId; + this.resourceUnionId = resourceUnionId; + } - @Override - public void _exec() throws ResourceLockedException { - List<Resource> resourceList = - resourceSetId != null - ? resourceDao.getResourceSet(resourceSetId) : resourceDao.getResourceUnion(resourceUnionId); - for (Resource r : resourceList) { - boolean updated = false; - if (r.allocationItems != null) { - Iterator<AllocationItem> i = r.allocationItems.iterator(); - while (i.hasNext()) { - AllocationItem ai = i.next(); - if (resourceSetId != null) { - if (resourceSetId.equals(ai.resourceSetId)) { - i.remove(); - updated = true; - } + @Override + public void _exec() throws ResourceLockedException { + List<Resource> resourceList = + resourceSetId != null + ? resourceDao.getResourceSet(resourceSetId) : resourceDao.getResourceUnion(resourceUnionId); + for (Resource r : resourceList) { + boolean updated = false; + if (r.allocationItems != null) { + Iterator<AllocationItem> i = r.allocationItems.iterator(); + while (i.hasNext()) { + AllocationItem ai = i.next(); + if (resourceSetId != null) { + if (resourceSetId.equals(ai.resourceSetId)) { + i.remove(); + updated = true; + } - } else if (resourceUnionId != null) { + } else if (resourceUnionId != null) { - if (resourceUnionId.equals(ai.resourceUnionId)) { - i.remove(); - updated = true; - } + if (resourceUnionId.equals(ai.resourceUnionId)) { + i.remove(); + updated = true; + } - } - } - } - if (updated) { - ResourceUtil.recalculate(r); - resourceDao.saveResource(r); - } - } - } + } + } + } + if (updated) { + ResourceUtil.recalculate(r); + resourceDao.saveResource(r); + } + } + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceLoader.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceLoader.java index aea0b0a3..d5bb9e47 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceLoader.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceLoader.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,13 +27,13 @@ import org.openecomp.sdnc.rm.data.Resource; public interface ResourceLoader { - void loadResource(String applicationId, Resource resource, boolean force); + void loadResource(String applicationId, Resource resource, boolean force); - void loadResources(String applicationId, Collection<Resource> resourceList, boolean force); + void loadResources(String applicationId, Collection<Resource> resourceList, boolean force); - void loadResourcesForAsset(String applicationId, String assetId, Collection<Resource> resourceList, boolean force); + void loadResourcesForAsset(String applicationId, String assetId, Collection<Resource> resourceList, boolean force); - void deleteResource(String applicationId, String assetId, String resourceName); + void deleteResource(String applicationId, String assetId, String resourceName); - void deleteResourcesForAsset(String applicationId, String assetId); + void deleteResourcesForAsset(String applicationId, String assetId); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManager.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManager.java index 7a3ce034..737deb1c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManager.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManager.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,13 +29,13 @@ import org.openecomp.sdnc.rm.data.Resource; public interface ResourceManager { - Resource getResource(String resourceName, String assetId); + Resource getResource(String resourceName, String assetId); - List<Resource> getResourceUnion(String resourceUnionId); + List<Resource> getResourceUnion(String resourceUnionId); - AllocationOutcome allocateResources(AllocationRequest allocationRequest); + AllocationOutcome allocateResources(AllocationRequest allocationRequest); - void releaseResourceSet(String resourceSetId); + void releaseResourceSet(String resourceSetId); - void releaseResourceUnion(String resourceUnionId); + void releaseResourceUnion(String resourceUnionId); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManagerImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManagerImpl.java index b9d5a099..e70e06c2 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManagerImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/comp/ResourceManagerImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,92 +37,92 @@ import org.slf4j.LoggerFactory; public class ResourceManagerImpl implements ResourceManager { - private static final Logger log = LoggerFactory.getLogger(ResourceManagerImpl.class); - - private LockHelper lockHelper; - private ResourceDao resourceDao; - - private String applicationId; - private int lockTimeout = 10 * 60; // Default 10 min - - public ResourceManagerImpl() { - log.info("ResourceManager created."); - } - - @Override - public Resource getResource(String resourceName, String assetId) { - Resource r = resourceDao.getResource(assetId, resourceName); - ResourceUtil.recalculate(r); - return r; - } - - @Override - public List<Resource> getResourceUnion(String resourceUnionId) { - List<Resource> rlist = resourceDao.getResourceUnion(resourceUnionId); - for (Resource r : rlist) - ResourceUtil.recalculate(r); - return rlist; - } - - @Override - public AllocationOutcome allocateResources(AllocationRequest allocationRequest) { - if (allocationRequest == null) - throw new IllegalArgumentException("allocateResources called with null argument"); - - AllocationFunction allocationFunction = - new AllocationFunction(lockHelper, resourceDao, applicationId, allocationRequest, lockTimeout); - allocationFunction.exec(); - AllocationOutcome allocationOutcome = allocationFunction.getAllocationOutcome(); - - StrUtil.info(log, allocationOutcome); - - return allocationOutcome; - } - - @Override - public void releaseResourceSet(String resourceSetId) { - List<Resource> resourceList = resourceDao.getResourceSet(resourceSetId); - if (resourceList == null || resourceList.isEmpty()) - return; - - Set<String> lockNames = getLockNames(resourceList); - ReleaseFunction releaseFunction = - new ReleaseFunction(lockHelper, resourceDao, resourceSetId, null, lockNames, lockTimeout); - releaseFunction.exec(); - } - - @Override - public void releaseResourceUnion(String resourceUnionId) { - List<Resource> resourceList = resourceDao.getResourceUnion(resourceUnionId); - if (resourceList == null || resourceList.isEmpty()) - return; - - Set<String> lockNames = getLockNames(resourceList); - ReleaseFunction releaseFunction = - new ReleaseFunction(lockHelper, resourceDao, null, resourceUnionId, lockNames, lockTimeout); - releaseFunction.exec(); - } - - private Set<String> getLockNames(List<Resource> resourceList) { - Set<String> lockNames = new HashSet<String>(); - for (Resource r : resourceList) - lockNames.add(r.resourceKey.assetId); - return lockNames; - } - - public void setResourceDao(ResourceDao resourceDao) { - this.resourceDao = resourceDao; - } - - public void setLockTimeout(int lockTimeout) { - this.lockTimeout = lockTimeout; - } - - public void setApplicationId(String applicationId) { - this.applicationId = applicationId; - } - - public void setLockHelper(LockHelper lockHelper) { - this.lockHelper = lockHelper; - } + private static final Logger log = LoggerFactory.getLogger(ResourceManagerImpl.class); + + private LockHelper lockHelper; + private ResourceDao resourceDao; + + private String applicationId; + private int lockTimeout = 10 * 60; // Default 10 min + + public ResourceManagerImpl() { + log.info("ResourceManager created."); + } + + @Override + public Resource getResource(String resourceName, String assetId) { + Resource r = resourceDao.getResource(assetId, resourceName); + ResourceUtil.recalculate(r); + return r; + } + + @Override + public List<Resource> getResourceUnion(String resourceUnionId) { + List<Resource> rlist = resourceDao.getResourceUnion(resourceUnionId); + for (Resource r : rlist) + ResourceUtil.recalculate(r); + return rlist; + } + + @Override + public AllocationOutcome allocateResources(AllocationRequest allocationRequest) { + if (allocationRequest == null) + throw new IllegalArgumentException("allocateResources called with null argument"); + + AllocationFunction allocationFunction = + new AllocationFunction(lockHelper, resourceDao, applicationId, allocationRequest, lockTimeout); + allocationFunction.exec(); + AllocationOutcome allocationOutcome = allocationFunction.getAllocationOutcome(); + + StrUtil.info(log, allocationOutcome); + + return allocationOutcome; + } + + @Override + public void releaseResourceSet(String resourceSetId) { + List<Resource> resourceList = resourceDao.getResourceSet(resourceSetId); + if (resourceList == null || resourceList.isEmpty()) + return; + + Set<String> lockNames = getLockNames(resourceList); + ReleaseFunction releaseFunction = + new ReleaseFunction(lockHelper, resourceDao, resourceSetId, null, lockNames, lockTimeout); + releaseFunction.exec(); + } + + @Override + public void releaseResourceUnion(String resourceUnionId) { + List<Resource> resourceList = resourceDao.getResourceUnion(resourceUnionId); + if (resourceList == null || resourceList.isEmpty()) + return; + + Set<String> lockNames = getLockNames(resourceList); + ReleaseFunction releaseFunction = + new ReleaseFunction(lockHelper, resourceDao, null, resourceUnionId, lockNames, lockTimeout); + releaseFunction.exec(); + } + + private Set<String> getLockNames(List<Resource> resourceList) { + Set<String> lockNames = new HashSet<String>(); + for (Resource r : resourceList) + lockNames.add(r.resourceKey.assetId); + return lockNames; + } + + public void setResourceDao(ResourceDao resourceDao) { + this.resourceDao = resourceDao; + } + + public void setLockTimeout(int lockTimeout) { + this.lockTimeout = lockTimeout; + } + + public void setApplicationId(String applicationId) { + this.applicationId = applicationId; + } + + public void setLockHelper(LockHelper lockHelper) { + this.lockHelper = lockHelper; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/ResourceDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/ResourceDao.java index f499801c..a116ef50 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/ResourceDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/ResourceDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,13 +27,13 @@ import org.openecomp.sdnc.rm.data.Resource; public interface ResourceDao { - Resource getResource(String assetId, String resourceName); + Resource getResource(String assetId, String resourceName); - void saveResource(Resource resource); + void saveResource(Resource resource); - void deleteResource(String assetId, String resourceName); + void deleteResource(String assetId, String resourceName); - List<Resource> getResourceSet(String resourceSetId); + List<Resource> getResourceSet(String resourceSetId); - List<Resource> getResourceUnion(String resourceUnionId); + List<Resource> getResourceUnion(String resourceUnionId); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java index eb5f3988..7087c18f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,13 +25,13 @@ import java.util.Date; public class AllocationItem { - public long id; - public long resourceId; - public String applicationId; - public String resourceSetId, resourceUnionId; - public String resourceShareGroupList; - public long ltUsed; - public String llLabel; - public String rrUsed; - public Date allocationTime; + public long id; + public long resourceId; + public String applicationId; + public String resourceSetId, resourceUnionId; + public String resourceShareGroupList; + public long ltUsed; + public String llLabel; + public String rrUsed; + public Date allocationTime; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java index 30f9d26a..fe6199ea 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,11 +25,11 @@ import java.util.List; public interface AllocationItemJdbcDao { - void add(AllocationItem ai); + void add(AllocationItem ai); - List<AllocationItem> getAllocationItems(long resourceId); + List<AllocationItem> getAllocationItems(long resourceId); - void update(AllocationItem ai); + void update(AllocationItem ai); - void delete(long id); + void delete(long id); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java index 1d88261c..2710f358 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,88 +39,88 @@ import org.springframework.jdbc.support.KeyHolder; public class AllocationItemJdbcDaoImpl implements AllocationItemJdbcDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class); - - private static final String INSERT_SQL = "INSERT INTO ALLOCATION_ITEM (\n" - + " resource_id, application_id, resource_set_id, resource_union_id, resource_share_group_list,\n" - + " lt_used, ll_label, rr_used, allocation_time)\nVALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; - - private static final String UPDATE_SQL = "UPDATE ALLOCATION_ITEM SET\n" - + " resource_share_group_list = ?, lt_used = ?, ll_label = ?, rr_used = ?, allocation_time = ?\n" - + "WHERE allocation_item_id = ?"; - - private static final String DELETE_SQL = "DELETE FROM ALLOCATION_ITEM WHERE allocation_item_id = ?"; - - private static final String GET_SQL = "SELECT * FROM ALLOCATION_ITEM WHERE resource_id = ?"; - - private JdbcTemplate jdbcTemplate; - private AllocationItemRowMapper allocationItemRowMapper = new AllocationItemRowMapper(); - - @Override - public void add(final AllocationItem ai) { - PreparedStatementCreator psc = new PreparedStatementCreator() { - - @Override - public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException { - PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "allocation_item_id" }); - ps.setLong(1, ai.resourceId); - ps.setString(2, ai.applicationId); - ps.setString(3, ai.resourceSetId); - ps.setString(4, ai.resourceUnionId); - ps.setString(5, ai.resourceShareGroupList); - ps.setLong(6, ai.ltUsed); - ps.setString(7, ai.llLabel); - ps.setString(8, ai.rrUsed); - ps.setTimestamp(9, new Timestamp(ai.allocationTime.getTime())); - return ps; - } - }; - KeyHolder keyHolder = new GeneratedKeyHolder(); - jdbcTemplate.update(psc, keyHolder); - ai.id = keyHolder.getKey().longValue(); - } - - @Override - public void update(AllocationItem ai) { - Long ltUsed = ai.ltUsed <= 0 ? null : ai.ltUsed; - jdbcTemplate.update(UPDATE_SQL, ai.resourceShareGroupList, ltUsed, ai.llLabel, ai.rrUsed, ai.allocationTime, - ai.id); - } - - @Override - public void delete(long id) { - jdbcTemplate.update(DELETE_SQL, id); - } - - @Override - public List<AllocationItem> getAllocationItems(long resourceId) { - if (resourceId <= 0) - return Collections.emptyList(); - - return jdbcTemplate.query(GET_SQL, new Object[] { resourceId }, allocationItemRowMapper); - } - - private static class AllocationItemRowMapper implements RowMapper<AllocationItem> { - - @Override - public AllocationItem mapRow(ResultSet rs, int n) throws SQLException { - AllocationItem ai = new AllocationItem(); - ai.id = rs.getLong("allocation_item_id"); - ai.resourceId = rs.getLong("resource_id"); - ai.applicationId = rs.getString("application_id"); - ai.resourceSetId = rs.getString("resource_set_id"); - ai.resourceUnionId = rs.getString("resource_union_id"); - ai.resourceShareGroupList = rs.getString("resource_share_group_list"); - ai.ltUsed = rs.getLong("lt_used"); - ai.llLabel = rs.getString("ll_label"); - ai.rrUsed = rs.getString("rr_used"); - ai.allocationTime = rs.getTimestamp("allocation_time"); - return ai; - } - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class); + + private static final String INSERT_SQL = "INSERT INTO ALLOCATION_ITEM (\n" + + " resource_id, application_id, resource_set_id, resource_union_id, resource_share_group_list,\n" + + " lt_used, ll_label, rr_used, allocation_time)\nVALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + private static final String UPDATE_SQL = "UPDATE ALLOCATION_ITEM SET\n" + + " resource_share_group_list = ?, lt_used = ?, ll_label = ?, rr_used = ?, allocation_time = ?\n" + + "WHERE allocation_item_id = ?"; + + private static final String DELETE_SQL = "DELETE FROM ALLOCATION_ITEM WHERE allocation_item_id = ?"; + + private static final String GET_SQL = "SELECT * FROM ALLOCATION_ITEM WHERE resource_id = ?"; + + private JdbcTemplate jdbcTemplate; + private AllocationItemRowMapper allocationItemRowMapper = new AllocationItemRowMapper(); + + @Override + public void add(final AllocationItem ai) { + PreparedStatementCreator psc = new PreparedStatementCreator() { + + @Override + public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException { + PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "allocation_item_id" }); + ps.setLong(1, ai.resourceId); + ps.setString(2, ai.applicationId); + ps.setString(3, ai.resourceSetId); + ps.setString(4, ai.resourceUnionId); + ps.setString(5, ai.resourceShareGroupList); + ps.setLong(6, ai.ltUsed); + ps.setString(7, ai.llLabel); + ps.setString(8, ai.rrUsed); + ps.setTimestamp(9, new Timestamp(ai.allocationTime.getTime())); + return ps; + } + }; + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update(psc, keyHolder); + ai.id = keyHolder.getKey().longValue(); + } + + @Override + public void update(AllocationItem ai) { + Long ltUsed = ai.ltUsed <= 0 ? null : ai.ltUsed; + jdbcTemplate.update(UPDATE_SQL, ai.resourceShareGroupList, ltUsed, ai.llLabel, ai.rrUsed, ai.allocationTime, + ai.id); + } + + @Override + public void delete(long id) { + jdbcTemplate.update(DELETE_SQL, id); + } + + @Override + public List<AllocationItem> getAllocationItems(long resourceId) { + if (resourceId <= 0) + return Collections.emptyList(); + + return jdbcTemplate.query(GET_SQL, new Object[] { resourceId }, allocationItemRowMapper); + } + + private static class AllocationItemRowMapper implements RowMapper<AllocationItem> { + + @Override + public AllocationItem mapRow(ResultSet rs, int n) throws SQLException { + AllocationItem ai = new AllocationItem(); + ai.id = rs.getLong("allocation_item_id"); + ai.resourceId = rs.getLong("resource_id"); + ai.applicationId = rs.getString("application_id"); + ai.resourceSetId = rs.getString("resource_set_id"); + ai.resourceUnionId = rs.getString("resource_union_id"); + ai.resourceShareGroupList = rs.getString("resource_share_group_list"); + ai.ltUsed = rs.getLong("lt_used"); + ai.llLabel = rs.getString("ll_label"); + ai.rrUsed = rs.getString("rr_used"); + ai.allocationTime = rs.getTimestamp("allocation_time"); + return ai; + } + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java index ca66964c..4bbe2ebd 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,10 +23,10 @@ package org.openecomp.sdnc.rm.dao.jdbc; public class Resource { - public long id; - public String assetId, name, type; - public long ltUsed; - public String llLabel; - public int llReferenceCount; - public String rrUsed; + public long id; + public String assetId, name, type; + public long ltUsed; + public String llLabel; + public int llReferenceCount; + public String rrUsed; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java index 32c8f4d7..cbae3d20 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,333 +38,333 @@ import org.openecomp.sdnc.util.str.StrUtil; public class ResourceDaoImpl implements ResourceDao { - private ResourceJdbcDao resourceJdbcDao; - private ResourceLoadJdbcDao resourceLoadJdbcDao; - private AllocationItemJdbcDao allocationItemJdbcDao; - - @Override - public org.openecomp.sdnc.rm.data.Resource getResource(String assetId, String resourceName) { - Resource rEntity = resourceJdbcDao.getResource(assetId, resourceName); - org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity); - - if (r != null) { - List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id); - r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>(); - for (AllocationItem aiEntity : aiEntityList) { - org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity); - r.allocationItems.add(ai); - } - - List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id); - r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>(); - for (ResourceLoad rlEntity : rlEntityList) { - org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity); - r.resourceLoadList.add(rl); - } - } - - return r; - } - - @Override - public void saveResource(org.openecomp.sdnc.rm.data.Resource resource) { - if (resource == null) - return; - - org.openecomp.sdnc.rm.dao.jdbc.Resource resourceEntity = - resourceJdbcDao.getResource(resource.resourceKey.assetId, resource.resourceKey.resourceName); - if (resourceEntity == null) { - resourceEntity = createResourceEntity(resource); - resourceJdbcDao.add(resourceEntity); - if (resource.allocationItems != null) - for (org.openecomp.sdnc.rm.data.AllocationItem ai : resource.allocationItems) { - AllocationItem aiEntity = createAllocationItemEntity(resourceEntity.id, ai); - allocationItemJdbcDao.add(aiEntity); - } - if (resource.resourceLoadList != null) - for (org.openecomp.sdnc.rm.data.ResourceLoad rl : resource.resourceLoadList) { - ResourceLoad rlEntity = createResourceLoadEntity(resourceEntity.id, rl); - resourceLoadJdbcDao.add(rlEntity); - } - } else { - updateResourceEntity(resourceEntity, resource); - resourceJdbcDao.update(resourceEntity); - - List<AllocationItem> oldAiEntityList = allocationItemJdbcDao.getAllocationItems(resourceEntity.id); - if (resource.allocationItems != null) - for (org.openecomp.sdnc.rm.data.AllocationItem newai : resource.allocationItems) { - AllocationItem foundAiEntity = null; - for (AllocationItem oldAiEntity : oldAiEntityList) - if (oldAiEntity.resourceSetId.equals(newai.resourceSetId)) { - foundAiEntity = oldAiEntity; - break; - } - if (foundAiEntity != null) { - updateAllocationItemEntity(foundAiEntity, newai); - allocationItemJdbcDao.update(foundAiEntity); - } else { - AllocationItem newAiEntity = createAllocationItemEntity(resourceEntity.id, newai); - allocationItemJdbcDao.add(newAiEntity); - } - } - for (AllocationItem oldAiEntity : oldAiEntityList) { - boolean found = false; - if (resource.allocationItems != null) - for (org.openecomp.sdnc.rm.data.AllocationItem newai : resource.allocationItems) - if (oldAiEntity.resourceSetId.equals(newai.resourceSetId)) { - found = true; - break; - } - if (!found) - allocationItemJdbcDao.delete(oldAiEntity.id); - } - - List<ResourceLoad> oldRlEntityList = resourceLoadJdbcDao.getResourceLoads(resourceEntity.id); - if (resource.resourceLoadList != null) - for (org.openecomp.sdnc.rm.data.ResourceLoad newrl : resource.resourceLoadList) { - ResourceLoad foundRlEntity = null; - for (ResourceLoad oldRlEntity : oldRlEntityList) - if (oldRlEntity.applicationId.equals(newrl.applicationId)) { - foundRlEntity = oldRlEntity; - break; - } - if (foundRlEntity != null) { - updateResourceLoadEntity(foundRlEntity, newrl); - resourceLoadJdbcDao.update(foundRlEntity); - } else { - ResourceLoad newRlEntity = createResourceLoadEntity(resourceEntity.id, newrl); - resourceLoadJdbcDao.add(newRlEntity); - } - } - for (ResourceLoad oldRlEntity : oldRlEntityList) { - boolean found = false; - if (resource.resourceLoadList != null) - for (org.openecomp.sdnc.rm.data.ResourceLoad newrl : resource.resourceLoadList) - if (oldRlEntity.applicationId.equals(newrl.applicationId)) { - found = true; - break; - } - if (!found) - resourceLoadJdbcDao.delete(oldRlEntity.id); - } - } - } - - @Override - public void deleteResource(String assetId, String resourceName) { - org.openecomp.sdnc.rm.dao.jdbc.Resource resourceEntity = resourceJdbcDao.getResource(assetId, resourceName); - if (resourceEntity != null) - resourceJdbcDao.delete(resourceEntity.id); - } - - @Override - public List<org.openecomp.sdnc.rm.data.Resource> getResourceSet(String resourceSetId) { - List<Resource> rEntityList = resourceJdbcDao.getResourceSet(resourceSetId); - List<org.openecomp.sdnc.rm.data.Resource> rlist = new ArrayList<org.openecomp.sdnc.rm.data.Resource>(); - for (Resource rEntity : rEntityList) { - org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity); - rlist.add(r); - - List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id); - r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>(); - for (AllocationItem aiEntity : aiEntityList) { - org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity); - r.allocationItems.add(ai); - } - - List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id); - r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>(); - for (ResourceLoad rlEntity : rlEntityList) { - org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity); - r.resourceLoadList.add(rl); - } - } - return rlist; - } - - @Override - public List<org.openecomp.sdnc.rm.data.Resource> getResourceUnion(String resourceUnionId) { - List<Resource> rEntityList = resourceJdbcDao.getResourceUnion(resourceUnionId); - List<org.openecomp.sdnc.rm.data.Resource> rlist = new ArrayList<org.openecomp.sdnc.rm.data.Resource>(); - for (Resource rEntity : rEntityList) { - org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity); - rlist.add(r); - - List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id); - r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>(); - for (AllocationItem aiEntity : aiEntityList) { - org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity); - r.allocationItems.add(ai); - } - - List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id); - r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>(); - for (ResourceLoad rlEntity : rlEntityList) { - org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity); - r.resourceLoadList.add(rl); - } - } - return rlist; - } - - private Resource createResourceEntity(org.openecomp.sdnc.rm.data.Resource resource) { - Resource resourceEntity = new Resource(); - resourceEntity.assetId = resource.resourceKey.assetId; - resourceEntity.name = resource.resourceKey.resourceName; - resourceEntity.type = resource.resourceType.toString(); - if (resource.resourceType == ResourceType.Limit) - resourceEntity.ltUsed = ((LimitResource) resource).used; - else if (resource.resourceType == ResourceType.Label) { - resourceEntity.llLabel = ((LabelResource) resource).label; - resourceEntity.llReferenceCount = ((LabelResource) resource).referenceCount; - } else if (resource.resourceType == ResourceType.Range) - resourceEntity.rrUsed = StrUtil.listInt(((RangeResource) resource).used); - - return resourceEntity; - } - - private ResourceLoad createResourceLoadEntity(long resourceId, org.openecomp.sdnc.rm.data.ResourceLoad rl) { - ResourceLoad rlEntity = new ResourceLoad(); - rlEntity.resourceId = resourceId; - rlEntity.applicationId = rl.applicationId; - rlEntity.loadTime = rl.resourceLoadTime; - rlEntity.expirationTime = rl.resourceExpirationTime; - return rlEntity; - } - - private void updateResourceLoadEntity(ResourceLoad rlEntity, org.openecomp.sdnc.rm.data.ResourceLoad rl) { - rlEntity.loadTime = rl.resourceLoadTime; - rlEntity.expirationTime = rl.resourceExpirationTime; - } - - private AllocationItem createAllocationItemEntity(long resourceId, org.openecomp.sdnc.rm.data.AllocationItem ai) { - AllocationItem aiEntity = new AllocationItem(); - aiEntity.resourceId = resourceId; - aiEntity.resourceSetId = ai.resourceSetId; - aiEntity.resourceUnionId = ai.resourceUnionId; - aiEntity.resourceShareGroupList = StrUtil.listStr(ai.resourceShareGroupList); - aiEntity.applicationId = ai.applicationId; - aiEntity.allocationTime = ai.allocationTime; - if (ai.resourceType == ResourceType.Limit) - aiEntity.ltUsed = ((LimitAllocationItem) ai).used; - else if (ai.resourceType == ResourceType.Label) - aiEntity.llLabel = ((LabelAllocationItem) ai).label; - else if (ai.resourceType == ResourceType.Range) - aiEntity.rrUsed = StrUtil.listInt(((RangeAllocationItem) ai).used); - return aiEntity; - } - - private void updateAllocationItemEntity(AllocationItem aiEntity, org.openecomp.sdnc.rm.data.AllocationItem ai) { - aiEntity.resourceShareGroupList = StrUtil.listStr(ai.resourceShareGroupList); - aiEntity.allocationTime = ai.allocationTime; - if (ai.resourceType == ResourceType.Limit) - aiEntity.ltUsed = ((LimitAllocationItem) ai).used; - else if (ai.resourceType == ResourceType.Label) - aiEntity.llLabel = ((LabelAllocationItem) ai).label; - else if (ai.resourceType == ResourceType.Range) - aiEntity.rrUsed = StrUtil.listInt(((RangeAllocationItem) ai).used); - } - - private void updateResourceEntity(Resource resourceEntity, org.openecomp.sdnc.rm.data.Resource resource) { - if (resource.resourceType == ResourceType.Limit) - resourceEntity.ltUsed = ((LimitResource) resource).used; - else if (resource.resourceType == ResourceType.Label) { - resourceEntity.llLabel = ((LabelResource) resource).label; - resourceEntity.llReferenceCount = ((LabelResource) resource).referenceCount; - } else if (resource.resourceType == ResourceType.Range) - resourceEntity.rrUsed = StrUtil.listInt(((RangeResource) resource).used); - } - - private org.openecomp.sdnc.rm.data.Resource createResource(Resource resourceEntity) { - if (resourceEntity == null) - return null; - - org.openecomp.sdnc.rm.data.Resource r = null; - ResourceType type = ResourceType.valueOf(resourceEntity.type); - if (type == ResourceType.Limit) { - LimitResource l = new LimitResource(); - l.used = resourceEntity.ltUsed; - r = l; - } else if (type == ResourceType.Label) { - LabelResource l = new LabelResource(); - l.label = resourceEntity.llLabel; - l.referenceCount = resourceEntity.llReferenceCount; - r = l; - } else if (type == ResourceType.Range) { - RangeResource rr = new RangeResource(); - rr.used = - StrUtil.listInt(resourceEntity.rrUsed, "Invalid data found in DB in for Resource Id: " + - resourceEntity.id + ": RESOURCE.RR_USED: " + resourceEntity.rrUsed); - r = rr; - } - - r.resourceType = type; - r.resourceKey = new ResourceKey(); - r.resourceKey.assetId = resourceEntity.assetId; - r.resourceKey.resourceName = resourceEntity.name; - - return r; - } - - private org.openecomp.sdnc.rm.data.AllocationItem createAllocationItem( - org.openecomp.sdnc.rm.data.Resource r, - AllocationItem aiEntity) { - if (r == null || aiEntity == null) - return null; - - org.openecomp.sdnc.rm.data.AllocationItem ai = null; - if (r.resourceType == ResourceType.Limit) { - LimitAllocationItem lai = new LimitAllocationItem(); - lai.used = aiEntity.ltUsed; - ai = lai; - } else if (r.resourceType == ResourceType.Label) { - LabelAllocationItem lai = new LabelAllocationItem(); - lai.label = aiEntity.llLabel; - ai = lai; - } else if (r.resourceType == ResourceType.Range) { - RangeAllocationItem rai = new RangeAllocationItem(); - rai.used = - StrUtil.listInt(aiEntity.rrUsed, "Invalid data found in DB in for Allocation Item Id: " + - aiEntity.id + ": ALLOCATION_ITEM.RR_USED: " + aiEntity.rrUsed); - ai = rai; - } - - ai.resourceType = r.resourceType; - ai.resourceKey = r.resourceKey; - ai.resourceSetId = aiEntity.resourceSetId; - ai.resourceUnionId = aiEntity.resourceUnionId; - if (aiEntity.resourceShareGroupList != null) - ai.resourceShareGroupList = new HashSet<String>(StrUtil.listStr(aiEntity.resourceShareGroupList)); - ai.applicationId = aiEntity.applicationId; - ai.allocationTime = aiEntity.allocationTime; - - return ai; - } - - private org.openecomp.sdnc.rm.data.ResourceLoad createResourceLoad( - org.openecomp.sdnc.rm.data.Resource r, - ResourceLoad rlEntity) { - if (rlEntity == null) - return null; - - org.openecomp.sdnc.rm.data.ResourceLoad rl = new org.openecomp.sdnc.rm.data.ResourceLoad(); - rl.resourceKey = r.resourceKey; - rl.applicationId = rlEntity.applicationId; - rl.resourceLoadTime = rlEntity.loadTime; - rl.resourceExpirationTime = rlEntity.expirationTime; - - return rl; - } - - public void setResourceJdbcDao(ResourceJdbcDao resourceJdbcDao) { - this.resourceJdbcDao = resourceJdbcDao; - } - - public void setResourceLoadJdbcDao(ResourceLoadJdbcDao resourceLoadJdbcDao) { - this.resourceLoadJdbcDao = resourceLoadJdbcDao; - } - - public void setAllocationItemJdbcDao(AllocationItemJdbcDao allocationItemJdbcDao) { - this.allocationItemJdbcDao = allocationItemJdbcDao; - } + private ResourceJdbcDao resourceJdbcDao; + private ResourceLoadJdbcDao resourceLoadJdbcDao; + private AllocationItemJdbcDao allocationItemJdbcDao; + + @Override + public org.openecomp.sdnc.rm.data.Resource getResource(String assetId, String resourceName) { + Resource rEntity = resourceJdbcDao.getResource(assetId, resourceName); + org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity); + + if (r != null) { + List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id); + r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>(); + for (AllocationItem aiEntity : aiEntityList) { + org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity); + r.allocationItems.add(ai); + } + + List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id); + r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>(); + for (ResourceLoad rlEntity : rlEntityList) { + org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity); + r.resourceLoadList.add(rl); + } + } + + return r; + } + + @Override + public void saveResource(org.openecomp.sdnc.rm.data.Resource resource) { + if (resource == null) + return; + + org.openecomp.sdnc.rm.dao.jdbc.Resource resourceEntity = + resourceJdbcDao.getResource(resource.resourceKey.assetId, resource.resourceKey.resourceName); + if (resourceEntity == null) { + resourceEntity = createResourceEntity(resource); + resourceJdbcDao.add(resourceEntity); + if (resource.allocationItems != null) + for (org.openecomp.sdnc.rm.data.AllocationItem ai : resource.allocationItems) { + AllocationItem aiEntity = createAllocationItemEntity(resourceEntity.id, ai); + allocationItemJdbcDao.add(aiEntity); + } + if (resource.resourceLoadList != null) + for (org.openecomp.sdnc.rm.data.ResourceLoad rl : resource.resourceLoadList) { + ResourceLoad rlEntity = createResourceLoadEntity(resourceEntity.id, rl); + resourceLoadJdbcDao.add(rlEntity); + } + } else { + updateResourceEntity(resourceEntity, resource); + resourceJdbcDao.update(resourceEntity); + + List<AllocationItem> oldAiEntityList = allocationItemJdbcDao.getAllocationItems(resourceEntity.id); + if (resource.allocationItems != null) + for (org.openecomp.sdnc.rm.data.AllocationItem newai : resource.allocationItems) { + AllocationItem foundAiEntity = null; + for (AllocationItem oldAiEntity : oldAiEntityList) + if (oldAiEntity.resourceSetId.equals(newai.resourceSetId)) { + foundAiEntity = oldAiEntity; + break; + } + if (foundAiEntity != null) { + updateAllocationItemEntity(foundAiEntity, newai); + allocationItemJdbcDao.update(foundAiEntity); + } else { + AllocationItem newAiEntity = createAllocationItemEntity(resourceEntity.id, newai); + allocationItemJdbcDao.add(newAiEntity); + } + } + for (AllocationItem oldAiEntity : oldAiEntityList) { + boolean found = false; + if (resource.allocationItems != null) + for (org.openecomp.sdnc.rm.data.AllocationItem newai : resource.allocationItems) + if (oldAiEntity.resourceSetId.equals(newai.resourceSetId)) { + found = true; + break; + } + if (!found) + allocationItemJdbcDao.delete(oldAiEntity.id); + } + + List<ResourceLoad> oldRlEntityList = resourceLoadJdbcDao.getResourceLoads(resourceEntity.id); + if (resource.resourceLoadList != null) + for (org.openecomp.sdnc.rm.data.ResourceLoad newrl : resource.resourceLoadList) { + ResourceLoad foundRlEntity = null; + for (ResourceLoad oldRlEntity : oldRlEntityList) + if (oldRlEntity.applicationId.equals(newrl.applicationId)) { + foundRlEntity = oldRlEntity; + break; + } + if (foundRlEntity != null) { + updateResourceLoadEntity(foundRlEntity, newrl); + resourceLoadJdbcDao.update(foundRlEntity); + } else { + ResourceLoad newRlEntity = createResourceLoadEntity(resourceEntity.id, newrl); + resourceLoadJdbcDao.add(newRlEntity); + } + } + for (ResourceLoad oldRlEntity : oldRlEntityList) { + boolean found = false; + if (resource.resourceLoadList != null) + for (org.openecomp.sdnc.rm.data.ResourceLoad newrl : resource.resourceLoadList) + if (oldRlEntity.applicationId.equals(newrl.applicationId)) { + found = true; + break; + } + if (!found) + resourceLoadJdbcDao.delete(oldRlEntity.id); + } + } + } + + @Override + public void deleteResource(String assetId, String resourceName) { + org.openecomp.sdnc.rm.dao.jdbc.Resource resourceEntity = resourceJdbcDao.getResource(assetId, resourceName); + if (resourceEntity != null) + resourceJdbcDao.delete(resourceEntity.id); + } + + @Override + public List<org.openecomp.sdnc.rm.data.Resource> getResourceSet(String resourceSetId) { + List<Resource> rEntityList = resourceJdbcDao.getResourceSet(resourceSetId); + List<org.openecomp.sdnc.rm.data.Resource> rlist = new ArrayList<org.openecomp.sdnc.rm.data.Resource>(); + for (Resource rEntity : rEntityList) { + org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity); + rlist.add(r); + + List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id); + r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>(); + for (AllocationItem aiEntity : aiEntityList) { + org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity); + r.allocationItems.add(ai); + } + + List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id); + r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>(); + for (ResourceLoad rlEntity : rlEntityList) { + org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity); + r.resourceLoadList.add(rl); + } + } + return rlist; + } + + @Override + public List<org.openecomp.sdnc.rm.data.Resource> getResourceUnion(String resourceUnionId) { + List<Resource> rEntityList = resourceJdbcDao.getResourceUnion(resourceUnionId); + List<org.openecomp.sdnc.rm.data.Resource> rlist = new ArrayList<org.openecomp.sdnc.rm.data.Resource>(); + for (Resource rEntity : rEntityList) { + org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity); + rlist.add(r); + + List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id); + r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>(); + for (AllocationItem aiEntity : aiEntityList) { + org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity); + r.allocationItems.add(ai); + } + + List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id); + r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>(); + for (ResourceLoad rlEntity : rlEntityList) { + org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity); + r.resourceLoadList.add(rl); + } + } + return rlist; + } + + private Resource createResourceEntity(org.openecomp.sdnc.rm.data.Resource resource) { + Resource resourceEntity = new Resource(); + resourceEntity.assetId = resource.resourceKey.assetId; + resourceEntity.name = resource.resourceKey.resourceName; + resourceEntity.type = resource.resourceType.toString(); + if (resource.resourceType == ResourceType.Limit) + resourceEntity.ltUsed = ((LimitResource) resource).used; + else if (resource.resourceType == ResourceType.Label) { + resourceEntity.llLabel = ((LabelResource) resource).label; + resourceEntity.llReferenceCount = ((LabelResource) resource).referenceCount; + } else if (resource.resourceType == ResourceType.Range) + resourceEntity.rrUsed = StrUtil.listInt(((RangeResource) resource).used); + + return resourceEntity; + } + + private ResourceLoad createResourceLoadEntity(long resourceId, org.openecomp.sdnc.rm.data.ResourceLoad rl) { + ResourceLoad rlEntity = new ResourceLoad(); + rlEntity.resourceId = resourceId; + rlEntity.applicationId = rl.applicationId; + rlEntity.loadTime = rl.resourceLoadTime; + rlEntity.expirationTime = rl.resourceExpirationTime; + return rlEntity; + } + + private void updateResourceLoadEntity(ResourceLoad rlEntity, org.openecomp.sdnc.rm.data.ResourceLoad rl) { + rlEntity.loadTime = rl.resourceLoadTime; + rlEntity.expirationTime = rl.resourceExpirationTime; + } + + private AllocationItem createAllocationItemEntity(long resourceId, org.openecomp.sdnc.rm.data.AllocationItem ai) { + AllocationItem aiEntity = new AllocationItem(); + aiEntity.resourceId = resourceId; + aiEntity.resourceSetId = ai.resourceSetId; + aiEntity.resourceUnionId = ai.resourceUnionId; + aiEntity.resourceShareGroupList = StrUtil.listStr(ai.resourceShareGroupList); + aiEntity.applicationId = ai.applicationId; + aiEntity.allocationTime = ai.allocationTime; + if (ai.resourceType == ResourceType.Limit) + aiEntity.ltUsed = ((LimitAllocationItem) ai).used; + else if (ai.resourceType == ResourceType.Label) + aiEntity.llLabel = ((LabelAllocationItem) ai).label; + else if (ai.resourceType == ResourceType.Range) + aiEntity.rrUsed = StrUtil.listInt(((RangeAllocationItem) ai).used); + return aiEntity; + } + + private void updateAllocationItemEntity(AllocationItem aiEntity, org.openecomp.sdnc.rm.data.AllocationItem ai) { + aiEntity.resourceShareGroupList = StrUtil.listStr(ai.resourceShareGroupList); + aiEntity.allocationTime = ai.allocationTime; + if (ai.resourceType == ResourceType.Limit) + aiEntity.ltUsed = ((LimitAllocationItem) ai).used; + else if (ai.resourceType == ResourceType.Label) + aiEntity.llLabel = ((LabelAllocationItem) ai).label; + else if (ai.resourceType == ResourceType.Range) + aiEntity.rrUsed = StrUtil.listInt(((RangeAllocationItem) ai).used); + } + + private void updateResourceEntity(Resource resourceEntity, org.openecomp.sdnc.rm.data.Resource resource) { + if (resource.resourceType == ResourceType.Limit) + resourceEntity.ltUsed = ((LimitResource) resource).used; + else if (resource.resourceType == ResourceType.Label) { + resourceEntity.llLabel = ((LabelResource) resource).label; + resourceEntity.llReferenceCount = ((LabelResource) resource).referenceCount; + } else if (resource.resourceType == ResourceType.Range) + resourceEntity.rrUsed = StrUtil.listInt(((RangeResource) resource).used); + } + + private org.openecomp.sdnc.rm.data.Resource createResource(Resource resourceEntity) { + if (resourceEntity == null) + return null; + + org.openecomp.sdnc.rm.data.Resource r = null; + ResourceType type = ResourceType.valueOf(resourceEntity.type); + if (type == ResourceType.Limit) { + LimitResource l = new LimitResource(); + l.used = resourceEntity.ltUsed; + r = l; + } else if (type == ResourceType.Label) { + LabelResource l = new LabelResource(); + l.label = resourceEntity.llLabel; + l.referenceCount = resourceEntity.llReferenceCount; + r = l; + } else if (type == ResourceType.Range) { + RangeResource rr = new RangeResource(); + rr.used = + StrUtil.listInt(resourceEntity.rrUsed, "Invalid data found in DB in for Resource Id: " + + resourceEntity.id + ": RESOURCE.RR_USED: " + resourceEntity.rrUsed); + r = rr; + } + + r.resourceType = type; + r.resourceKey = new ResourceKey(); + r.resourceKey.assetId = resourceEntity.assetId; + r.resourceKey.resourceName = resourceEntity.name; + + return r; + } + + private org.openecomp.sdnc.rm.data.AllocationItem createAllocationItem( + org.openecomp.sdnc.rm.data.Resource r, + AllocationItem aiEntity) { + if (r == null || aiEntity == null) + return null; + + org.openecomp.sdnc.rm.data.AllocationItem ai = null; + if (r.resourceType == ResourceType.Limit) { + LimitAllocationItem lai = new LimitAllocationItem(); + lai.used = aiEntity.ltUsed; + ai = lai; + } else if (r.resourceType == ResourceType.Label) { + LabelAllocationItem lai = new LabelAllocationItem(); + lai.label = aiEntity.llLabel; + ai = lai; + } else if (r.resourceType == ResourceType.Range) { + RangeAllocationItem rai = new RangeAllocationItem(); + rai.used = + StrUtil.listInt(aiEntity.rrUsed, "Invalid data found in DB in for Allocation Item Id: " + + aiEntity.id + ": ALLOCATION_ITEM.RR_USED: " + aiEntity.rrUsed); + ai = rai; + } + + ai.resourceType = r.resourceType; + ai.resourceKey = r.resourceKey; + ai.resourceSetId = aiEntity.resourceSetId; + ai.resourceUnionId = aiEntity.resourceUnionId; + if (aiEntity.resourceShareGroupList != null) + ai.resourceShareGroupList = new HashSet<String>(StrUtil.listStr(aiEntity.resourceShareGroupList)); + ai.applicationId = aiEntity.applicationId; + ai.allocationTime = aiEntity.allocationTime; + + return ai; + } + + private org.openecomp.sdnc.rm.data.ResourceLoad createResourceLoad( + org.openecomp.sdnc.rm.data.Resource r, + ResourceLoad rlEntity) { + if (rlEntity == null) + return null; + + org.openecomp.sdnc.rm.data.ResourceLoad rl = new org.openecomp.sdnc.rm.data.ResourceLoad(); + rl.resourceKey = r.resourceKey; + rl.applicationId = rlEntity.applicationId; + rl.resourceLoadTime = rlEntity.loadTime; + rl.resourceExpirationTime = rlEntity.expirationTime; + + return rl; + } + + public void setResourceJdbcDao(ResourceJdbcDao resourceJdbcDao) { + this.resourceJdbcDao = resourceJdbcDao; + } + + public void setResourceLoadJdbcDao(ResourceLoadJdbcDao resourceLoadJdbcDao) { + this.resourceLoadJdbcDao = resourceLoadJdbcDao; + } + + public void setAllocationItemJdbcDao(AllocationItemJdbcDao allocationItemJdbcDao) { + this.allocationItemJdbcDao = allocationItemJdbcDao; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java index 645c377e..5ed07b25 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,15 +25,15 @@ import java.util.List; public interface ResourceJdbcDao { - Resource getResource(String assetId, String resourceName); + Resource getResource(String assetId, String resourceName); - List<Resource> getResourceSet(String resourceSetId); + List<Resource> getResourceSet(String resourceSetId); - List<Resource> getResourceUnion(String resourceUnionId); + List<Resource> getResourceUnion(String resourceUnionId); - void add(Resource r); + void add(Resource r); - void delete(long id); + void delete(long id); - void update(Resource r); + void update(Resource r); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java index 5e529f70..08592819 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,107 +38,107 @@ import org.springframework.jdbc.support.KeyHolder; public class ResourceJdbcDaoImpl implements ResourceJdbcDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class); - - private static final String RESOURCE_SQL = "SELECT * FROM RESOURCE WHERE asset_id = ? AND resource_name = ?"; - - private static final String RESOURCE_SET_SQL = "SELECT * FROM RESOURCE WHERE resource_id IN (\n" - + "SELECT DISTINCT resource_id FROM ALLOCATION_ITEM WHERE resource_set_id = ?)"; - - private static final String RESOURCE_UNION_SQL = "SELECT * FROM RESOURCE WHERE resource_id IN (\n" - + "SELECT DISTINCT resource_id FROM ALLOCATION_ITEM WHERE resource_union_id = ?)"; - - private static final String INSERT_SQL = "INSERT INTO RESOURCE (\n" - + " asset_id, resource_name, resource_type, lt_used, ll_label, ll_reference_count, rr_used)\n" - + "VALUES (?, ?, ?, ?, ?, ?, ?)"; - - private static final String UPDATE_SQL = "UPDATE RESOURCE SET\n" - + " lt_used = ?, ll_label = ?, ll_reference_count = ?, rr_used = ?\nWHERE resource_id = ?"; - - private static final String DELETE_SQL = "DELETE FROM RESOURCE WHERE resource_id = ?"; - - private JdbcTemplate jdbcTemplate; - private ResourceRowMapper resourceRowMapper = new ResourceRowMapper(); - - @Override - public Resource getResource(String assetId, String resourceName) { - if (assetId == null || assetId.trim().length() == 0 || resourceName == null || - resourceName.trim().length() == 0) - return null; - - List<Resource> ll = jdbcTemplate.query(RESOURCE_SQL, new Object[] { assetId, resourceName }, resourceRowMapper); - return ll.isEmpty() ? null : ll.get(0); - } - - @Override - public List<Resource> getResourceSet(String resourceSetId) { - if (resourceSetId == null) - return Collections.emptyList(); - - return jdbcTemplate.query(RESOURCE_SET_SQL, new Object[] { resourceSetId }, resourceRowMapper); - } - - @Override - public List<Resource> getResourceUnion(String resourceUnionId) { - if (resourceUnionId == null) - return Collections.emptyList(); - - return jdbcTemplate.query(RESOURCE_UNION_SQL, new Object[] { resourceUnionId }, resourceRowMapper); - } - - @Override - public void add(final Resource r) { - PreparedStatementCreator psc = new PreparedStatementCreator() { - - @Override - public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException { - PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "resource_id" }); - ps.setString(1, r.assetId); - ps.setString(2, r.name); - ps.setString(3, r.type); - ps.setLong(4, r.ltUsed); - ps.setString(5, r.llLabel); - ps.setInt(6, r.llReferenceCount); - ps.setString(7, r.rrUsed); - return ps; - } - }; - KeyHolder keyHolder = new GeneratedKeyHolder(); - jdbcTemplate.update(psc, keyHolder); - r.id = keyHolder.getKey().longValue(); - } - - @Override + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class); + + private static final String RESOURCE_SQL = "SELECT * FROM RESOURCE WHERE asset_id = ? AND resource_name = ?"; + + private static final String RESOURCE_SET_SQL = "SELECT * FROM RESOURCE WHERE resource_id IN (\n" + + "SELECT DISTINCT resource_id FROM ALLOCATION_ITEM WHERE resource_set_id = ?)"; + + private static final String RESOURCE_UNION_SQL = "SELECT * FROM RESOURCE WHERE resource_id IN (\n" + + "SELECT DISTINCT resource_id FROM ALLOCATION_ITEM WHERE resource_union_id = ?)"; + + private static final String INSERT_SQL = "INSERT INTO RESOURCE (\n" + + " asset_id, resource_name, resource_type, lt_used, ll_label, ll_reference_count, rr_used)\n" + + "VALUES (?, ?, ?, ?, ?, ?, ?)"; + + private static final String UPDATE_SQL = "UPDATE RESOURCE SET\n" + + " lt_used = ?, ll_label = ?, ll_reference_count = ?, rr_used = ?\nWHERE resource_id = ?"; + + private static final String DELETE_SQL = "DELETE FROM RESOURCE WHERE resource_id = ?"; + + private JdbcTemplate jdbcTemplate; + private ResourceRowMapper resourceRowMapper = new ResourceRowMapper(); + + @Override + public Resource getResource(String assetId, String resourceName) { + if (assetId == null || assetId.trim().length() == 0 || resourceName == null || + resourceName.trim().length() == 0) + return null; + + List<Resource> ll = jdbcTemplate.query(RESOURCE_SQL, new Object[] { assetId, resourceName }, resourceRowMapper); + return ll.isEmpty() ? null : ll.get(0); + } + + @Override + public List<Resource> getResourceSet(String resourceSetId) { + if (resourceSetId == null) + return Collections.emptyList(); + + return jdbcTemplate.query(RESOURCE_SET_SQL, new Object[] { resourceSetId }, resourceRowMapper); + } + + @Override + public List<Resource> getResourceUnion(String resourceUnionId) { + if (resourceUnionId == null) + return Collections.emptyList(); + + return jdbcTemplate.query(RESOURCE_UNION_SQL, new Object[] { resourceUnionId }, resourceRowMapper); + } + + @Override + public void add(final Resource r) { + PreparedStatementCreator psc = new PreparedStatementCreator() { + + @Override + public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException { + PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "resource_id" }); + ps.setString(1, r.assetId); + ps.setString(2, r.name); + ps.setString(3, r.type); + ps.setLong(4, r.ltUsed); + ps.setString(5, r.llLabel); + ps.setInt(6, r.llReferenceCount); + ps.setString(7, r.rrUsed); + return ps; + } + }; + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update(psc, keyHolder); + r.id = keyHolder.getKey().longValue(); + } + + @Override public void update(Resource r) { - Long ltUsed = r.ltUsed <= 0 ? null : r.ltUsed; - Integer llRefCount = r.llReferenceCount <= 0 ? null : r.llReferenceCount; - jdbcTemplate.update(UPDATE_SQL, ltUsed, r.llLabel, llRefCount, r.rrUsed, r.id); - } - - @Override - public void delete(long id) { - jdbcTemplate.update(DELETE_SQL, id); - } - - private static class ResourceRowMapper implements RowMapper<Resource> { - - @Override - public Resource mapRow(ResultSet rs, int arg1) throws SQLException { - Resource r = new Resource(); - r.id = rs.getLong("resource_id"); - r.assetId = rs.getString("asset_id"); - r.name = rs.getString("resource_name"); - r.type = rs.getString("resource_type"); - r.ltUsed = rs.getLong("lt_used"); - r.llLabel = rs.getString("ll_label"); - r.llReferenceCount = rs.getInt("ll_reference_count"); - r.rrUsed = rs.getString("rr_used"); - return r; - } - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + Long ltUsed = r.ltUsed <= 0 ? null : r.ltUsed; + Integer llRefCount = r.llReferenceCount <= 0 ? null : r.llReferenceCount; + jdbcTemplate.update(UPDATE_SQL, ltUsed, r.llLabel, llRefCount, r.rrUsed, r.id); + } + + @Override + public void delete(long id) { + jdbcTemplate.update(DELETE_SQL, id); + } + + private static class ResourceRowMapper implements RowMapper<Resource> { + + @Override + public Resource mapRow(ResultSet rs, int arg1) throws SQLException { + Resource r = new Resource(); + r.id = rs.getLong("resource_id"); + r.assetId = rs.getString("asset_id"); + r.name = rs.getString("resource_name"); + r.type = rs.getString("resource_type"); + r.ltUsed = rs.getLong("lt_used"); + r.llLabel = rs.getString("ll_label"); + r.llReferenceCount = rs.getInt("ll_reference_count"); + r.rrUsed = rs.getString("rr_used"); + return r; + } + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java index 5c810b1d..5b566924 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,9 +25,9 @@ import java.util.Date; public class ResourceLoad { - public long id; - public long resourceId; - public String applicationId; - public Date loadTime; - public Date expirationTime; + public long id; + public long resourceId; + public String applicationId; + public Date loadTime; + public Date expirationTime; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java index 9a337a83..ad38372f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,12 +25,12 @@ import java.util.List; public interface ResourceLoadJdbcDao { - void add(ResourceLoad rl); + void add(ResourceLoad rl); - List<ResourceLoad> getResourceLoads(long resourceId); + List<ResourceLoad> getResourceLoads(long resourceId); - void update(ResourceLoad rl); + void update(ResourceLoad rl); - void delete(long id); + void delete(long id); } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java index 854b6696..aa44afae 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,74 +39,74 @@ import org.springframework.jdbc.support.KeyHolder; public class ResourceLoadJdbcDaoImpl implements ResourceLoadJdbcDao { - @SuppressWarnings("unused") - private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class); - - private static final String INSERT_SQL = "INSERT INTO RESOURCE_LOAD (\n" - + " resource_id, application_id, resource_load_time, resource_expiration_time)\nVALUES (?, ?, ?, ?)"; - - private static final String UPDATE_SQL = "UPDATE RESOURCE_LOAD SET\n" - + " resource_load_time = ?, resource_expiration_time = ?\nWHERE resource_id = ?"; - - private static final String DELETE_SQL = "DELETE FROM RESOURCE_LOAD WHERE resource_load_id = ?"; - - private static final String GET_SQL = "SELECT * FROM RESOURCE_LOAD WHERE resource_id = ?"; - - private JdbcTemplate jdbcTemplate; - private ResourceLoadRowMapper resourceLoadRowMapper = new ResourceLoadRowMapper(); - - @Override - public void add(final ResourceLoad rl) { - PreparedStatementCreator psc = new PreparedStatementCreator() { - - @Override - public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException { - PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "resource_load_id" }); - ps.setLong(1, rl.resourceId); - ps.setString(2, rl.applicationId); - ps.setTimestamp(3, new Timestamp(rl.loadTime.getTime())); - ps.setTimestamp(4, new Timestamp(rl.expirationTime.getTime())); - return ps; - } - }; - KeyHolder keyHolder = new GeneratedKeyHolder(); - jdbcTemplate.update(psc, keyHolder); - rl.id = keyHolder.getKey().longValue(); - } - - @Override - public void update(ResourceLoad rl) { - jdbcTemplate.update(UPDATE_SQL, rl.loadTime, rl.expirationTime, rl.id); - } - - @Override - public void delete(long id) { - jdbcTemplate.update(DELETE_SQL, id); - } - - @Override - public List<ResourceLoad> getResourceLoads(long resourceId) { - if (resourceId <= 0) - return Collections.emptyList(); - - return jdbcTemplate.query(GET_SQL, new Object[] { resourceId }, resourceLoadRowMapper); - } - - private static class ResourceLoadRowMapper implements RowMapper<ResourceLoad> { - - @Override - public ResourceLoad mapRow(ResultSet rs, int n) throws SQLException { - ResourceLoad rl = new ResourceLoad(); - rl.id = rs.getLong("allocation_item_id"); - rl.resourceId = rs.getLong("resource_id"); - rl.applicationId = rs.getString("application_id"); - rl.loadTime = rs.getTimestamp("resource_load_time"); - rl.expirationTime = rs.getTimestamp("resource_expiration_time"); - return rl; - } - } - - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + @SuppressWarnings("unused") + private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class); + + private static final String INSERT_SQL = "INSERT INTO RESOURCE_LOAD (\n" + + " resource_id, application_id, resource_load_time, resource_expiration_time)\nVALUES (?, ?, ?, ?)"; + + private static final String UPDATE_SQL = "UPDATE RESOURCE_LOAD SET\n" + + " resource_load_time = ?, resource_expiration_time = ?\nWHERE resource_id = ?"; + + private static final String DELETE_SQL = "DELETE FROM RESOURCE_LOAD WHERE resource_load_id = ?"; + + private static final String GET_SQL = "SELECT * FROM RESOURCE_LOAD WHERE resource_id = ?"; + + private JdbcTemplate jdbcTemplate; + private ResourceLoadRowMapper resourceLoadRowMapper = new ResourceLoadRowMapper(); + + @Override + public void add(final ResourceLoad rl) { + PreparedStatementCreator psc = new PreparedStatementCreator() { + + @Override + public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException { + PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "resource_load_id" }); + ps.setLong(1, rl.resourceId); + ps.setString(2, rl.applicationId); + ps.setTimestamp(3, new Timestamp(rl.loadTime.getTime())); + ps.setTimestamp(4, new Timestamp(rl.expirationTime.getTime())); + return ps; + } + }; + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update(psc, keyHolder); + rl.id = keyHolder.getKey().longValue(); + } + + @Override + public void update(ResourceLoad rl) { + jdbcTemplate.update(UPDATE_SQL, rl.loadTime, rl.expirationTime, rl.id); + } + + @Override + public void delete(long id) { + jdbcTemplate.update(DELETE_SQL, id); + } + + @Override + public List<ResourceLoad> getResourceLoads(long resourceId) { + if (resourceId <= 0) + return Collections.emptyList(); + + return jdbcTemplate.query(GET_SQL, new Object[] { resourceId }, resourceLoadRowMapper); + } + + private static class ResourceLoadRowMapper implements RowMapper<ResourceLoad> { + + @Override + public ResourceLoad mapRow(ResultSet rs, int n) throws SQLException { + ResourceLoad rl = new ResourceLoad(); + rl.id = rs.getLong("allocation_item_id"); + rl.resourceId = rs.getLong("resource_id"); + rl.applicationId = rs.getString("application_id"); + rl.loadTime = rs.getTimestamp("resource_load_time"); + rl.expirationTime = rs.getTimestamp("resource_expiration_time"); + return rl; + } + } + + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationAction.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationAction.java index c791d427..4eab7d9d 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationAction.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationAction.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,5 +22,5 @@ package org.openecomp.sdnc.rm.data; public enum AllocationAction { - Fail, Succeed_DoNothing, Succeed_Allocate + Fail, Succeed_DoNothing, Succeed_Allocate } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationItem.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationItem.java index f4cabf96..4a7ee6a7 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationItem.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationItem.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,11 +26,11 @@ import java.util.Set; public abstract class AllocationItem { - public ResourceKey resourceKey; - public ResourceType resourceType; - public String resourceSetId; - public String resourceUnionId; - public Set<String> resourceShareGroupList; - public String applicationId; - public Date allocationTime; + public ResourceKey resourceKey; + public ResourceType resourceType; + public String resourceSetId; + public String resourceUnionId; + public Set<String> resourceShareGroupList; + public String applicationId; + public Date allocationTime; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationOutcome.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationOutcome.java index 20ecf051..7283e11c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationOutcome.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationOutcome.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,6 @@ package org.openecomp.sdnc.rm.data; public class AllocationOutcome { - public AllocationStatus status = null; - public AllocationRequest request = null; + public AllocationStatus status = null; + public AllocationRequest request = null; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationRequest.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationRequest.java index d54475ff..d4291167 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationRequest.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationRequest.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,11 +25,11 @@ import java.util.Set; public class AllocationRequest { - public String resourceUnionId = null; - public String resourceSetId = null; - public Set<String> resourceShareGroupList = null; - public String resourceName = null; - public String assetId = null; - public AllocationAction missingResourceAction = AllocationAction.Succeed_Allocate; - public AllocationAction expiredResourceAction = AllocationAction.Succeed_Allocate; + public String resourceUnionId = null; + public String resourceSetId = null; + public Set<String> resourceShareGroupList = null; + public String resourceName = null; + public String assetId = null; + public AllocationAction missingResourceAction = AllocationAction.Succeed_Allocate; + public AllocationAction expiredResourceAction = AllocationAction.Succeed_Allocate; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationStatus.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationStatus.java index a18077a1..aa8d1df1 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationStatus.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/AllocationStatus.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.rm.data; public enum AllocationStatus { - Success, Failure, NotTried, ResourceNotFound, ResourceExpired + Success, Failure, NotTried, ResourceNotFound, ResourceExpired } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/InitAction.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/InitAction.java index 8b9dfaa3..d0075bdb 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/InitAction.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/InitAction.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,15 +22,15 @@ package org.openecomp.sdnc.rm.data; public enum InitAction { - CheckInit("Initialize if needed"), ForceInit("Always Initialize"), NoInit("No initialization"); + CheckInit("Initialize if needed"), ForceInit("Always Initialize"), NoInit("No initialization"); - private String str; + private String str; - private InitAction(String str) { - this.str = str; - } + private InitAction(String str) { + this.str = str; + } - public String getInitActionStr() { - return str; - } + public String getInitActionStr() { + return str; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationItem.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationItem.java index e456542c..97ee3ba8 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationItem.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationItem.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.rm.data; public class LabelAllocationItem extends AllocationItem { - public String label; + public String label; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationOutcome.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationOutcome.java index d0cb2c52..c1763ff2 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationOutcome.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationOutcome.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,6 @@ package org.openecomp.sdnc.rm.data; public class LabelAllocationOutcome extends AllocationOutcome { - public String allocatedLabel = null; - public String currentLabel = null; + public String allocatedLabel = null; + public String currentLabel = null; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationRequest.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationRequest.java index 2b6ce033..8e509f66 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationRequest.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelAllocationRequest.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ package org.openecomp.sdnc.rm.data; public class LabelAllocationRequest extends AllocationRequest { - public String label = null; - public boolean check = false; - public boolean allocate = false; + public String label = null; + public boolean check = false; + public boolean allocate = false; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelResource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelResource.java index 54bfb852..d8270192 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelResource.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LabelResource.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,8 +23,8 @@ package org.openecomp.sdnc.rm.data; public class LabelResource extends Resource { - public static final String BLOCKED = "__BLOCKED__"; + public static final String BLOCKED = "__BLOCKED__"; - public String label; - public int referenceCount; + public String label; + public int referenceCount; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationItem.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationItem.java index 270220a8..181172f2 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationItem.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationItem.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.rm.data; public class LimitAllocationItem extends AllocationItem { - public long used; + public long used; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationOutcome.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationOutcome.java index f1c13c08..ffc11941 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationOutcome.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationOutcome.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ package org.openecomp.sdnc.rm.data; public class LimitAllocationOutcome extends AllocationOutcome { - public long allocatedCount = 0; - public long used = 0; - public long limit = 0; + public long allocatedCount = 0; + public long used = 0; + public long limit = 0; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationRequest.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationRequest.java index 787715bb..31c0d115 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationRequest.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitAllocationRequest.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,9 +23,9 @@ package org.openecomp.sdnc.rm.data; public class LimitAllocationRequest extends AllocationRequest { - public long checkCount = 0; - public long allocateCount = 0; - public long checkLimit = -1; - public boolean replace = false; - public boolean strict = false; + public long checkCount = 0; + public long allocateCount = 0; + public long checkLimit = -1; + public boolean replace = false; + public boolean strict = false; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitResource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitResource.java index cad0ba23..ad706ee8 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitResource.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/LimitResource.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,5 +23,5 @@ package org.openecomp.sdnc.rm.data; public class LimitResource extends Resource { - public long used = 0; + public long used = 0; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationOutcome.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationOutcome.java index bf9bbbfa..dcbac367 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationOutcome.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationOutcome.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,6 @@ import java.util.List; public class MultiAssetAllocationOutcome extends AllocationOutcome { - public List<String> goodAssetIdList; - public List<AllocationOutcome> allocationOutcomeList; + public List<String> goodAssetIdList; + public List<AllocationOutcome> allocationOutcomeList; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationRequest.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationRequest.java index da1a96d7..d4dd65ed 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationRequest.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiAssetAllocationRequest.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,8 @@ import java.util.List; public class MultiAssetAllocationRequest extends AllocationRequest { - public List<String> assetIdList = null; - public AllocationRequest allocationRequest = null; - public int requestedCount = 0; - public boolean sequential = false; + public List<String> assetIdList = null; + public AllocationRequest allocationRequest = null; + public int requestedCount = 0; + public boolean sequential = false; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationOutcome.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationOutcome.java index 9deca6c2..355d5081 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationOutcome.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationOutcome.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,5 +25,5 @@ import java.util.List; public class MultiResourceAllocationOutcome extends AllocationOutcome { - public List<AllocationOutcome> allocationOutcomeList; + public List<AllocationOutcome> allocationOutcomeList; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationRequest.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationRequest.java index 9e48a31e..4de9868b 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationRequest.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/MultiResourceAllocationRequest.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + *reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,6 @@ import java.util.List; public class MultiResourceAllocationRequest extends AllocationRequest { - public List<AllocationRequest> allocationRequestList = null; - public boolean stopOnFirstFailure = true; + public List<AllocationRequest> allocationRequestList = null; + public boolean stopOnFirstFailure = true; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationItem.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationItem.java index 229c8e44..4260b4dc 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationItem.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationItem.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,5 +25,5 @@ import java.util.SortedSet; public class RangeAllocationItem extends AllocationItem { - public SortedSet<Integer> used; + public SortedSet<Integer> used; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationOutcome.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationOutcome.java index 8b35d9f0..ad14f510 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationOutcome.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationOutcome.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,6 @@ import java.util.SortedSet; public class RangeAllocationOutcome extends AllocationOutcome { - public SortedSet<Integer> allocated = null; - public SortedSet<Integer> used = null; + public SortedSet<Integer> allocated = null; + public SortedSet<Integer> used = null; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationRequest.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationRequest.java index 0732613d..9315535f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationRequest.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeAllocationRequest.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,12 +25,12 @@ import java.util.SortedSet; public class RangeAllocationRequest extends AllocationRequest { - public int checkMin = 0; - public int checkMax = 0; - public boolean check = false; - public boolean allocate = false; - public boolean replace = false; - public SortedSet<Integer> requestedNumbers = null; - public int requestedCount = 1; - public boolean sequential = false; + public int checkMin = 0; + public int checkMax = 0; + public boolean check = false; + public boolean allocate = false; + public boolean replace = false; + public SortedSet<Integer> requestedNumbers = null; + public int requestedCount = 1; + public boolean sequential = false; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeResource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeResource.java index 99a2b207..4bec3044 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeResource.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/RangeResource.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,5 +25,5 @@ import java.util.SortedSet; public class RangeResource extends Resource { - public SortedSet<Integer> used; + public SortedSet<Integer> used; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/Resource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/Resource.java index b04f7105..c462bde3 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/Resource.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/Resource.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,8 @@ import java.util.Collection; public abstract class Resource { - public ResourceKey resourceKey; - public ResourceType resourceType; - public Collection<AllocationItem> allocationItems; - public Collection<ResourceLoad> resourceLoadList; + public ResourceKey resourceKey; + public ResourceType resourceType; + public Collection<AllocationItem> allocationItems; + public Collection<ResourceLoad> resourceLoadList; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceKey.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceKey.java index b303b07f..765c9251 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceKey.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceKey.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,28 +23,28 @@ package org.openecomp.sdnc.rm.data; public class ResourceKey { - public String assetId; - public String resourceName; + public String assetId; + public String resourceName; - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || !(o instanceof ResourceKey)) - return false; - ResourceKey rk = (ResourceKey) o; - if (assetId == null || resourceName == null) - return false; - return assetId.equals(rk.assetId) && resourceName.equals(rk.resourceName); - } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || !(o instanceof ResourceKey)) + return false; + ResourceKey rk = (ResourceKey) o; + if (assetId == null || resourceName == null) + return false; + return assetId.equals(rk.assetId) && resourceName.equals(rk.resourceName); + } - @Override - public int hashCode() { - return (int) ((long) System.identityHashCode(assetId) + (long) System.identityHashCode(resourceName)); - } + @Override + public int hashCode() { + return (int) ((long) System.identityHashCode(assetId) + (long) System.identityHashCode(resourceName)); + } - @Override - public String toString() { - return "(" + assetId + ", " + resourceName + ")"; - } + @Override + public String toString() { + return "(" + assetId + ", " + resourceName + ")"; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceLoad.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceLoad.java index 06970cbc..f1e96a8b 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceLoad.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceLoad.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,8 @@ import java.util.Date; public class ResourceLoad { - public ResourceKey resourceKey; - public String applicationId; - public Date resourceLoadTime; - public Date resourceExpirationTime; + public ResourceKey resourceKey; + public String applicationId; + public Date resourceLoadTime; + public Date resourceExpirationTime; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceType.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceType.java index 1d8b9c4c..d97cb7d7 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceType.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/data/ResourceType.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,5 +22,5 @@ package org.openecomp.sdnc.rm.data; public enum ResourceType { - Limit, Label, Range + Limit, Label, Range } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LabelUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LabelUtil.java index bbaa3a37..d15a149f 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LabelUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LabelUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,63 +33,63 @@ import org.openecomp.sdnc.rm.data.ResourceType; public class LabelUtil { - public static boolean checkLabel(LabelResource l, LabelAllocationRequest req) { - if (req.check && req.label != null && l.allocationItems != null && !l.allocationItems.isEmpty()) { - for (AllocationItem ai : l.allocationItems) { - LabelAllocationItem lai = (LabelAllocationItem) ai; - if (!eq(req.resourceUnionId, lai.resourceUnionId) && !eq(req.label, lai.label)) - return false; - } - } - return true; - } + public static boolean checkLabel(LabelResource l, LabelAllocationRequest req) { + if (req.check && req.label != null && l.allocationItems != null && !l.allocationItems.isEmpty()) { + for (AllocationItem ai : l.allocationItems) { + LabelAllocationItem lai = (LabelAllocationItem) ai; + if (!eq(req.resourceUnionId, lai.resourceUnionId) && !eq(req.label, lai.label)) + return false; + } + } + return true; + } - public static String allocateLabel(LabelResource l, LabelAllocationRequest req, String applicationId) { - if (!req.allocate) - return null; + public static String allocateLabel(LabelResource l, LabelAllocationRequest req, String applicationId) { + if (!req.allocate) + return null; - LabelAllocationItem lai = (LabelAllocationItem) ResourceUtil.getAllocationItem(l, req.resourceSetId); - if (lai == null) { - lai = new LabelAllocationItem(); - lai.resourceType = ResourceType.Label; - lai.resourceKey = new ResourceKey(); - lai.resourceKey.assetId = req.assetId; - lai.resourceKey.resourceName = req.resourceName; - lai.applicationId = applicationId; - lai.resourceSetId = req.resourceSetId; - lai.resourceUnionId = req.resourceUnionId; - lai.resourceShareGroupList = req.resourceShareGroupList; + LabelAllocationItem lai = (LabelAllocationItem) ResourceUtil.getAllocationItem(l, req.resourceSetId); + if (lai == null) { + lai = new LabelAllocationItem(); + lai.resourceType = ResourceType.Label; + lai.resourceKey = new ResourceKey(); + lai.resourceKey.assetId = req.assetId; + lai.resourceKey.resourceName = req.resourceName; + lai.applicationId = applicationId; + lai.resourceSetId = req.resourceSetId; + lai.resourceUnionId = req.resourceUnionId; + lai.resourceShareGroupList = req.resourceShareGroupList; - if (l.allocationItems == null) - l.allocationItems = new ArrayList<AllocationItem>(); - l.allocationItems.add(lai); - } + if (l.allocationItems == null) + l.allocationItems = new ArrayList<AllocationItem>(); + l.allocationItems.add(lai); + } - lai.label = req.label; - lai.allocationTime = new Date(); + lai.label = req.label; + lai.allocationTime = new Date(); - recalculate(l); + recalculate(l); - return lai.label; - } + return lai.label; + } - public static void recalculate(LabelResource l) { - l.label = null; - l.referenceCount = 0; - if (l.allocationItems != null) - for (AllocationItem ai : l.allocationItems) { - LabelAllocationItem lai = (LabelAllocationItem) ai; - if (lai.label != null) { - l.referenceCount++; - if (l.label == null) - l.label = lai.label; - else if (!l.label.equals(lai.label)) - l.label = "__BLOCKED__"; - } - } - } + public static void recalculate(LabelResource l) { + l.label = null; + l.referenceCount = 0; + if (l.allocationItems != null) + for (AllocationItem ai : l.allocationItems) { + LabelAllocationItem lai = (LabelAllocationItem) ai; + if (lai.label != null) { + l.referenceCount++; + if (l.label == null) + l.label = lai.label; + else if (!l.label.equals(lai.label)) + l.label = "__BLOCKED__"; + } + } + } - private static boolean eq(Object o1, Object o2) { - return o1 == null ? o2 == null : o1.equals(o2); - } + private static boolean eq(Object o1, Object o2) { + return o1 == null ? o2 == null : o1.equals(o2); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LimitUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LimitUtil.java index 45799560..76c3ef76 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LimitUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/LimitUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,296 +39,296 @@ import org.slf4j.LoggerFactory; public class LimitUtil { - private static final Logger log = LoggerFactory.getLogger(LimitUtil.class); - - public static boolean checkLimit(LimitResource l, LimitAllocationRequest req) { - if (req.checkCount <= 0) - return true; - - long checkCount = req.checkCount; - long currentUsage = 0; - if (req.resourceSetId != null) { - LimitAllocationItem lai = (LimitAllocationItem) ResourceUtil.getAllocationItem(l, req.resourceSetId); - if (lai != null) - currentUsage = lai.used; - } - if (!req.replace) - checkCount += currentUsage; - - long used = calculateLimitUsage(l, 0, null, null); - long wouldUse = calculateLimitUsage(l, checkCount, req.resourceUnionId, req.resourceShareGroupList); - - // If usage is not increasing by this request, only check the limit if - // strictCheck is true. - if (wouldUse <= used && !req.strict) - return true; - - return wouldUse <= req.checkLimit; - } - - private static long calculateLimitUsage( - LimitResource l, - long checkCount, - String resourceUnionId, - Set<String> resourceShareGroupList) { - if ((l.allocationItems == null || l.allocationItems.isEmpty()) && - (resourceUnionId == null || resourceUnionId.length() == 0)) - return 0; - - long t1 = System.currentTimeMillis(); - boolean logit = false; - String rn = "Resource: " + l.resourceKey.resourceName + " - " + l.resourceKey.assetId; - - // In order to best utilize the resource, we need to take not the sum of all allocation items, but - // instead the maximum usage that could happen at any moment of time (given not all allocation items are active - // at the same time), also taking into account possible resource sharing. - // Thus we need to find all combinations of allocation items that can be active at the same time (allocation - // items with the same first union cannot be active at the same time), compute the usage for each (again, - // taking into account resource sharing), and take the maximum. - // - // Example: - // Let's have the following allocation items: - // ai1: sdid1, vrf1 - usage 5 - // ai2: sdid2, vrf1 - usage 10 - // ai3: sdid3, vrf2 - usage 15 - // ai4: sdid1, vrf3 - usage 20 - // ai5: sdid3, vrf1 - usage 25 - // The following combinations of active allocation items are possible: - // 1) ai1, ai2, ai3 - // 2) ai1, ai2, ai5 - // 3) ai2, ai3, ai4 - // 4) ai2, ai3, ai5 - // Here is how we calculate the usage for combination 1: - // ai1 and ai2 contain the same resource union vrf1, so they share the resource - we take the max of usage, - // so we have: - // max(5, 10) + 15 = 25 - // Similarly, we calculate the usage of the other combinations: - // 2) max(5, 10, 25) = 25 - // 3) 10 + 15 + 20 = 45 - // 4) max(10, 25) + 15 = 40 - // So, the result in this case is: - // max(25, 25, 45, 40) = 45 - // - // We might have a problem with this approach, if we have a lot of combinations. Assuming we have at most 2 - // allocation items with the same resource union (sdid), the number of combinations would be - // 2 ^ n - // where n is the number of allocation items that have the same resource union (sdid). That would be - // the number of change orders currently in progress. - // - // Here is one optimization that we can do: - // If we have allocation items that have all resource unions the same, we don't need to generate combinations - // with each of them, we can just take the one of them with the maximum usage, as it is clear that the others - // will not lead to a bigger usage. - // For example, if we had the following allocation items: - // ai1: sdid1, vrf1 - usage 10 - // ai2: sdid1, vrf1 - usage 20 - // We only need to take the combinations with ai2, as they will always lead to bigger usage than the remaining - // combinations with ai1. - - // First, group the allocation items by the first resource union, using the LimitUsage structure - int regularChangeCount = 0; - Map<String/* resourceUnionId */, List<LimitUsage>> limitUsageMap = new HashMap<String, List<LimitUsage>>(); - if (l.allocationItems != null) - for (AllocationItem ai : l.allocationItems) { - LimitAllocationItem lai = (LimitAllocationItem) ai; - boolean regularChange = - addLimitUsage(limitUsageMap, lai.resourceUnionId, lai.resourceShareGroupList, lai.used); - if (regularChange) - regularChangeCount++; - } - if (checkCount > 0 && resourceUnionId != null) { - boolean regularChange = addLimitUsage(limitUsageMap, resourceUnionId, resourceShareGroupList, checkCount); - if (regularChange) - regularChangeCount++; - } - - // Generate all the combinations, containing one LimitUsage object for each firstResourceUnion - int significantChangeCount = 0; - List<List<LimitUsage>> allCombinations = new ArrayList<List<LimitUsage>>(); - for (String firstResourceUnion : limitUsageMap.keySet()) { - List<LimitUsage> limitUsageList = limitUsageMap.get(firstResourceUnion); - if (limitUsageList.size() > 1) - significantChangeCount++; - if (allCombinations.isEmpty()) { - for (LimitUsage limitUsage : limitUsageList) { - List<LimitUsage> newCombination = new ArrayList<LimitUsage>(); - newCombination.add(limitUsage); - allCombinations.add(newCombination); - } - } else { - if (limitUsageList.size() == 1) { - // No new combinations are generated - just add this one to all combinations we have until now - for (List<LimitUsage> combination : allCombinations) - combination.add(limitUsageList.get(0)); - } else { - // We have to duplicate each of the current combinations for each element of limitUsageList - List<List<LimitUsage>> newAllCombinations = new ArrayList<List<LimitUsage>>(); - for (List<LimitUsage> combination : allCombinations) - for (LimitUsage limitUsage : limitUsageList) { - List<LimitUsage> newCombination = new ArrayList<LimitUsage>(combination); - newCombination.add(limitUsage); - newAllCombinations.add(newCombination); - } - allCombinations = newAllCombinations; - } - } - } - - // Now, go through all combinations and calculate its usage, get the maximum - long maxUsage = 0; - for (List<LimitUsage> combination : allCombinations) { - long usage = calculateUsage(combination); - if (usage > maxUsage) - maxUsage = usage; - } - - long t2 = System.currentTimeMillis(); - if (logit) { - log.debug(rn + ": Calculating usage completed:"); - log.debug(rn + ": Regular changes: " + regularChangeCount); - log.debug(rn + ": Significant changes: " + significantChangeCount); - log.debug(rn + ": Combinations: " + allCombinations.size()); - log.debug(rn + ": Usage: " + maxUsage); - log.debug(rn + ": Time: " + (t2 - t1)); - } - - return maxUsage; - } - - private static boolean addLimitUsage( - Map<String/* resourceUnionId */, List<LimitUsage>> limitUsageMap, - String resourceUnionId, - Set<String> resourceShareGroupList, - long used) { - List<LimitUsage> limitUsageList = limitUsageMap.get(resourceUnionId); - if (limitUsageList == null) { - limitUsageList = new ArrayList<LimitUsage>(); - limitUsageMap.put(resourceUnionId, limitUsageList); - } - // See if we already have the same shareResourceUnionSet in the list. In such case just update the usage - // to the bigger value. - LimitUsage limitUsage = null; - for (LimitUsage limitUsage1 : limitUsageList) { - if ((limitUsage1.resourceShareGroupList == null || limitUsage1.resourceShareGroupList.isEmpty()) && - (resourceShareGroupList == null || resourceShareGroupList.isEmpty())) { - limitUsage = limitUsage1; - break; - } - if (limitUsage1.resourceShareGroupList != null && - limitUsage1.resourceShareGroupList.equals(resourceShareGroupList)) { - limitUsage = limitUsage1; - break; - } - } - if (limitUsage != null) { - if (limitUsage.usage < used) - limitUsage.usage = used; - return true; - } - - limitUsage = new LimitUsage(); - limitUsage.resourceUnion = resourceUnionId; - limitUsage.resourceShareGroupList = resourceShareGroupList; - limitUsage.usage = used; - limitUsageList.add(limitUsage); - return false; - } - - private static class LimitUsage { - - @SuppressWarnings("unused") - public String resourceUnion; - public Set<String> resourceShareGroupList; - public long usage; - } - - private static boolean hasCommonSharedResource(LimitUsage limitUsage1, LimitUsage limitUsage2) { - if (limitUsage1.resourceShareGroupList == null || limitUsage1.resourceShareGroupList.isEmpty()) - return false; - if (limitUsage2.resourceShareGroupList == null || limitUsage2.resourceShareGroupList.isEmpty()) - return false; - - for (String resourceUnion : limitUsage1.resourceShareGroupList) - if (limitUsage2.resourceShareGroupList.contains(resourceUnion)) - return true; - - return false; - } - - private static long calculateUsage(List<LimitUsage> combination) { - // All LimitUsage objects that have a common value in their sharedResourceUnionSet reuse the resource, so - // split the combination in sets that have common value. Then the usage of each set will be the maximum of - // the usages of the LimitUsage objects in the set. The usage of the combination will be the sum of the usages - // of all sets. - List<List<LimitUsage>> sharedSets = new ArrayList<List<LimitUsage>>(); - for (LimitUsage limitUsage : combination) { - // See if we can put limitUsage in any of the existing sets - is it has a common resource union with - // any of the LimitUsage objects in a set. - boolean found = false; - for (List<LimitUsage> sharedSet : sharedSets) { - for (LimitUsage limitUsage1 : sharedSet) { - if (hasCommonSharedResource(limitUsage, limitUsage1)) { - found = true; - break; - } - } - if (found) { - sharedSet.add(limitUsage); - break; - } - } - if (!found) { - // Start a new set - List<LimitUsage> newSharedSet = new ArrayList<LimitUsage>(); - newSharedSet.add(limitUsage); - sharedSets.add(newSharedSet); - } - } - - long sum = 0; - for (List<LimitUsage> sharedSet : sharedSets) { - float max = 0; - for (LimitUsage limitUsage : sharedSet) - if (max < limitUsage.usage) - max = limitUsage.usage; - sum += max; - } - - return sum; - } - - public static long allocateLimit(LimitResource l, LimitAllocationRequest req, String applicationId) { - if (req.allocateCount <= 0) - return 0; - long uu = l.used; - - LimitAllocationItem lai = (LimitAllocationItem) ResourceUtil.getAllocationItem(l, req.resourceSetId); - if (lai == null) { - lai = new LimitAllocationItem(); - lai.resourceType = ResourceType.Limit; - lai.resourceKey = new ResourceKey(); - lai.resourceKey.assetId = req.assetId; - lai.resourceKey.resourceName = req.resourceName; - lai.applicationId = applicationId; - lai.resourceSetId = req.resourceSetId; - lai.resourceUnionId = req.resourceUnionId; - lai.resourceShareGroupList = req.resourceShareGroupList; - lai.used = req.allocateCount; - - if (l.allocationItems == null) - l.allocationItems = new ArrayList<AllocationItem>(); - l.allocationItems.add(lai); - } else - lai.used = req.replace ? req.allocateCount : lai.used + req.allocateCount; - - lai.allocationTime = new Date(); - - recalculate(l); - - return l.used - uu; - } - - public static void recalculate(LimitResource l) { - l.used = calculateLimitUsage(l, 0, null, null); - } + private static final Logger log = LoggerFactory.getLogger(LimitUtil.class); + + public static boolean checkLimit(LimitResource l, LimitAllocationRequest req) { + if (req.checkCount <= 0) + return true; + + long checkCount = req.checkCount; + long currentUsage = 0; + if (req.resourceSetId != null) { + LimitAllocationItem lai = (LimitAllocationItem) ResourceUtil.getAllocationItem(l, req.resourceSetId); + if (lai != null) + currentUsage = lai.used; + } + if (!req.replace) + checkCount += currentUsage; + + long used = calculateLimitUsage(l, 0, null, null); + long wouldUse = calculateLimitUsage(l, checkCount, req.resourceUnionId, req.resourceShareGroupList); + + // If usage is not increasing by this request, only check the limit if + // strictCheck is true. + if (wouldUse <= used && !req.strict) + return true; + + return wouldUse <= req.checkLimit; + } + + private static long calculateLimitUsage( + LimitResource l, + long checkCount, + String resourceUnionId, + Set<String> resourceShareGroupList) { + if ((l.allocationItems == null || l.allocationItems.isEmpty()) && + (resourceUnionId == null || resourceUnionId.length() == 0)) + return 0; + + long t1 = System.currentTimeMillis(); + boolean logit = false; + String rn = "Resource: " + l.resourceKey.resourceName + " - " + l.resourceKey.assetId; + + // In order to best utilize the resource, we need to take not the sum of all allocation items, but + // instead the maximum usage that could happen at any moment of time (given not all allocation items are active + // at the same time), also taking into account possible resource sharing. + // Thus we need to find all combinations of allocation items that can be active at the same time (allocation + // items with the same first union cannot be active at the same time), compute the usage for each (again, + // taking into account resource sharing), and take the maximum. + // + // Example: + // Let's have the following allocation items: + // ai1: sdid1, vrf1 - usage 5 + // ai2: sdid2, vrf1 - usage 10 + // ai3: sdid3, vrf2 - usage 15 + // ai4: sdid1, vrf3 - usage 20 + // ai5: sdid3, vrf1 - usage 25 + // The following combinations of active allocation items are possible: + // 1) ai1, ai2, ai3 + // 2) ai1, ai2, ai5 + // 3) ai2, ai3, ai4 + // 4) ai2, ai3, ai5 + // Here is how we calculate the usage for combination 1: + // ai1 and ai2 contain the same resource union vrf1, so they share the resource - we take the max of usage, + // so we have: + // max(5, 10) + 15 = 25 + // Similarly, we calculate the usage of the other combinations: + // 2) max(5, 10, 25) = 25 + // 3) 10 + 15 + 20 = 45 + // 4) max(10, 25) + 15 = 40 + // So, the result in this case is: + // max(25, 25, 45, 40) = 45 + // + // We might have a problem with this approach, if we have a lot of combinations. Assuming we have at most 2 + // allocation items with the same resource union (sdid), the number of combinations would be + // 2 ^ n + // where n is the number of allocation items that have the same resource union (sdid). That would be + // the number of change orders currently in progress. + // + // Here is one optimization that we can do: + // If we have allocation items that have all resource unions the same, we don't need to generate combinations + // with each of them, we can just take the one of them with the maximum usage, as it is clear that the others + // will not lead to a bigger usage. + // For example, if we had the following allocation items: + // ai1: sdid1, vrf1 - usage 10 + // ai2: sdid1, vrf1 - usage 20 + // We only need to take the combinations with ai2, as they will always lead to bigger usage than the remaining + // combinations with ai1. + + // First, group the allocation items by the first resource union, using the LimitUsage structure + int regularChangeCount = 0; + Map<String/* resourceUnionId */, List<LimitUsage>> limitUsageMap = new HashMap<String, List<LimitUsage>>(); + if (l.allocationItems != null) + for (AllocationItem ai : l.allocationItems) { + LimitAllocationItem lai = (LimitAllocationItem) ai; + boolean regularChange = + addLimitUsage(limitUsageMap, lai.resourceUnionId, lai.resourceShareGroupList, lai.used); + if (regularChange) + regularChangeCount++; + } + if (checkCount > 0 && resourceUnionId != null) { + boolean regularChange = addLimitUsage(limitUsageMap, resourceUnionId, resourceShareGroupList, checkCount); + if (regularChange) + regularChangeCount++; + } + + // Generate all the combinations, containing one LimitUsage object for each firstResourceUnion + int significantChangeCount = 0; + List<List<LimitUsage>> allCombinations = new ArrayList<List<LimitUsage>>(); + for (String firstResourceUnion : limitUsageMap.keySet()) { + List<LimitUsage> limitUsageList = limitUsageMap.get(firstResourceUnion); + if (limitUsageList.size() > 1) + significantChangeCount++; + if (allCombinations.isEmpty()) { + for (LimitUsage limitUsage : limitUsageList) { + List<LimitUsage> newCombination = new ArrayList<LimitUsage>(); + newCombination.add(limitUsage); + allCombinations.add(newCombination); + } + } else { + if (limitUsageList.size() == 1) { + // No new combinations are generated - just add this one to all combinations we have until now + for (List<LimitUsage> combination : allCombinations) + combination.add(limitUsageList.get(0)); + } else { + // We have to duplicate each of the current combinations for each element of limitUsageList + List<List<LimitUsage>> newAllCombinations = new ArrayList<List<LimitUsage>>(); + for (List<LimitUsage> combination : allCombinations) + for (LimitUsage limitUsage : limitUsageList) { + List<LimitUsage> newCombination = new ArrayList<LimitUsage>(combination); + newCombination.add(limitUsage); + newAllCombinations.add(newCombination); + } + allCombinations = newAllCombinations; + } + } + } + + // Now, go through all combinations and calculate its usage, get the maximum + long maxUsage = 0; + for (List<LimitUsage> combination : allCombinations) { + long usage = calculateUsage(combination); + if (usage > maxUsage) + maxUsage = usage; + } + + long t2 = System.currentTimeMillis(); + if (logit) { + log.debug(rn + ": Calculating usage completed:"); + log.debug(rn + ": Regular changes: " + regularChangeCount); + log.debug(rn + ": Significant changes: " + significantChangeCount); + log.debug(rn + ": Combinations: " + allCombinations.size()); + log.debug(rn + ": Usage: " + maxUsage); + log.debug(rn + ": Time: " + (t2 - t1)); + } + + return maxUsage; + } + + private static boolean addLimitUsage( + Map<String/* resourceUnionId */, List<LimitUsage>> limitUsageMap, + String resourceUnionId, + Set<String> resourceShareGroupList, + long used) { + List<LimitUsage> limitUsageList = limitUsageMap.get(resourceUnionId); + if (limitUsageList == null) { + limitUsageList = new ArrayList<LimitUsage>(); + limitUsageMap.put(resourceUnionId, limitUsageList); + } + // See if we already have the same shareResourceUnionSet in the list. In such case just update the usage + // to the bigger value. + LimitUsage limitUsage = null; + for (LimitUsage limitUsage1 : limitUsageList) { + if ((limitUsage1.resourceShareGroupList == null || limitUsage1.resourceShareGroupList.isEmpty()) && + (resourceShareGroupList == null || resourceShareGroupList.isEmpty())) { + limitUsage = limitUsage1; + break; + } + if (limitUsage1.resourceShareGroupList != null && + limitUsage1.resourceShareGroupList.equals(resourceShareGroupList)) { + limitUsage = limitUsage1; + break; + } + } + if (limitUsage != null) { + if (limitUsage.usage < used) + limitUsage.usage = used; + return true; + } + + limitUsage = new LimitUsage(); + limitUsage.resourceUnion = resourceUnionId; + limitUsage.resourceShareGroupList = resourceShareGroupList; + limitUsage.usage = used; + limitUsageList.add(limitUsage); + return false; + } + + private static class LimitUsage { + + @SuppressWarnings("unused") + public String resourceUnion; + public Set<String> resourceShareGroupList; + public long usage; + } + + private static boolean hasCommonSharedResource(LimitUsage limitUsage1, LimitUsage limitUsage2) { + if (limitUsage1.resourceShareGroupList == null || limitUsage1.resourceShareGroupList.isEmpty()) + return false; + if (limitUsage2.resourceShareGroupList == null || limitUsage2.resourceShareGroupList.isEmpty()) + return false; + + for (String resourceUnion : limitUsage1.resourceShareGroupList) + if (limitUsage2.resourceShareGroupList.contains(resourceUnion)) + return true; + + return false; + } + + private static long calculateUsage(List<LimitUsage> combination) { + // All LimitUsage objects that have a common value in their sharedResourceUnionSet reuse the resource, so + // split the combination in sets that have common value. Then the usage of each set will be the maximum of + // the usages of the LimitUsage objects in the set. The usage of the combination will be the sum of the usages + // of all sets. + List<List<LimitUsage>> sharedSets = new ArrayList<List<LimitUsage>>(); + for (LimitUsage limitUsage : combination) { + // See if we can put limitUsage in any of the existing sets - is it has a common resource union with + // any of the LimitUsage objects in a set. + boolean found = false; + for (List<LimitUsage> sharedSet : sharedSets) { + for (LimitUsage limitUsage1 : sharedSet) { + if (hasCommonSharedResource(limitUsage, limitUsage1)) { + found = true; + break; + } + } + if (found) { + sharedSet.add(limitUsage); + break; + } + } + if (!found) { + // Start a new set + List<LimitUsage> newSharedSet = new ArrayList<LimitUsage>(); + newSharedSet.add(limitUsage); + sharedSets.add(newSharedSet); + } + } + + long sum = 0; + for (List<LimitUsage> sharedSet : sharedSets) { + float max = 0; + for (LimitUsage limitUsage : sharedSet) + if (max < limitUsage.usage) + max = limitUsage.usage; + sum += max; + } + + return sum; + } + + public static long allocateLimit(LimitResource l, LimitAllocationRequest req, String applicationId) { + if (req.allocateCount <= 0) + return 0; + long uu = l.used; + + LimitAllocationItem lai = (LimitAllocationItem) ResourceUtil.getAllocationItem(l, req.resourceSetId); + if (lai == null) { + lai = new LimitAllocationItem(); + lai.resourceType = ResourceType.Limit; + lai.resourceKey = new ResourceKey(); + lai.resourceKey.assetId = req.assetId; + lai.resourceKey.resourceName = req.resourceName; + lai.applicationId = applicationId; + lai.resourceSetId = req.resourceSetId; + lai.resourceUnionId = req.resourceUnionId; + lai.resourceShareGroupList = req.resourceShareGroupList; + lai.used = req.allocateCount; + + if (l.allocationItems == null) + l.allocationItems = new ArrayList<AllocationItem>(); + l.allocationItems.add(lai); + } else + lai.used = req.replace ? req.allocateCount : lai.used + req.allocateCount; + + lai.allocationTime = new Date(); + + recalculate(l); + + return l.used - uu; + } + + public static void recalculate(LimitResource l) { + l.used = calculateLimitUsage(l, 0, null, null); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/RangeUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/RangeUtil.java index af828314..27d0e55b 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/RangeUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/RangeUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,76 +35,76 @@ import org.openecomp.sdnc.rm.data.ResourceType; public class RangeUtil { - public static void recalculate(RangeResource r) { - r.used = new TreeSet<Integer>(); - if (r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) { - RangeAllocationItem rai = (RangeAllocationItem) ai; - if (rai.used != null) - r.used.addAll(rai.used); - } - } + public static void recalculate(RangeResource r) { + r.used = new TreeSet<Integer>(); + if (r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) { + RangeAllocationItem rai = (RangeAllocationItem) ai; + if (rai.used != null) + r.used.addAll(rai.used); + } + } - public static boolean checkRange(RangeResource r, RangeAllocationRequest req, int num) { - if (num < req.checkMin || num > req.checkMax) - return false; + public static boolean checkRange(RangeResource r, RangeAllocationRequest req, int num) { + if (num < req.checkMin || num > req.checkMax) + return false; - if (r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) { - RangeAllocationItem rai = (RangeAllocationItem) ai; - if (!eq(req.resourceUnionId, rai.resourceUnionId) && rai.used != null && rai.used.contains(num)) - return false; - } + if (r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) { + RangeAllocationItem rai = (RangeAllocationItem) ai; + if (!eq(req.resourceUnionId, rai.resourceUnionId) && rai.used != null && rai.used.contains(num)) + return false; + } - return true; - } + return true; + } - private static boolean eq(Object o1, Object o2) { - return o1 == null ? o2 == null : o1.equals(o2); - } + private static boolean eq(Object o1, Object o2) { + return o1 == null ? o2 == null : o1.equals(o2); + } - public static SortedSet<Integer> getUsed(RangeResource r, String resourceUnionId) { - SortedSet<Integer> used = new TreeSet<Integer>(); - if (r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) { - RangeAllocationItem rai = (RangeAllocationItem) ai; - if (eq(resourceUnionId, rai.resourceUnionId) && rai.used != null) - used.addAll(rai.used); - } - return used; - } + public static SortedSet<Integer> getUsed(RangeResource r, String resourceUnionId) { + SortedSet<Integer> used = new TreeSet<Integer>(); + if (r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) { + RangeAllocationItem rai = (RangeAllocationItem) ai; + if (eq(resourceUnionId, rai.resourceUnionId) && rai.used != null) + used.addAll(rai.used); + } + return used; + } - public static void allocateRange( - RangeResource rr, - SortedSet<Integer> requestedNumbers, - RangeAllocationRequest req, - String applicationId) { - if (!req.allocate) - return; + public static void allocateRange( + RangeResource rr, + SortedSet<Integer> requestedNumbers, + RangeAllocationRequest req, + String applicationId) { + if (!req.allocate) + return; - RangeAllocationItem rai = (RangeAllocationItem) ResourceUtil.getAllocationItem(rr, req.resourceSetId); - if (rai == null) { - rai = new RangeAllocationItem(); - rai.resourceType = ResourceType.Range; - rai.resourceKey = new ResourceKey(); - rai.resourceKey.assetId = req.assetId; - rai.resourceKey.resourceName = req.resourceName; - rai.applicationId = applicationId; - rai.resourceSetId = req.resourceSetId; - rai.resourceUnionId = req.resourceUnionId; - rai.resourceShareGroupList = req.resourceShareGroupList; - rai.used = requestedNumbers; + RangeAllocationItem rai = (RangeAllocationItem) ResourceUtil.getAllocationItem(rr, req.resourceSetId); + if (rai == null) { + rai = new RangeAllocationItem(); + rai.resourceType = ResourceType.Range; + rai.resourceKey = new ResourceKey(); + rai.resourceKey.assetId = req.assetId; + rai.resourceKey.resourceName = req.resourceName; + rai.applicationId = applicationId; + rai.resourceSetId = req.resourceSetId; + rai.resourceUnionId = req.resourceUnionId; + rai.resourceShareGroupList = req.resourceShareGroupList; + rai.used = requestedNumbers; - if (rr.allocationItems == null) - rr.allocationItems = new ArrayList<AllocationItem>(); - rr.allocationItems.add(rai); - } else if (req.replace) - rai.used = requestedNumbers; - else - rai.used.addAll(requestedNumbers); + if (rr.allocationItems == null) + rr.allocationItems = new ArrayList<AllocationItem>(); + rr.allocationItems.add(rai); + } else if (req.replace) + rai.used = requestedNumbers; + else + rai.used.addAll(requestedNumbers); - rai.allocationTime = new Date(); + rai.allocationTime = new Date(); - recalculate(rr); - } + recalculate(rr); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/ResourceUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/ResourceUtil.java index 7afe7b5d..0253204c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/ResourceUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/util/ResourceUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,21 +29,21 @@ import org.openecomp.sdnc.rm.data.ResourceType; public class ResourceUtil { - public static AllocationItem getAllocationItem(Resource r, String resourceSetId) { - if (r.allocationItems != null) - for (AllocationItem ai : r.allocationItems) - if (ai.resourceSetId != null && ai.resourceSetId.equals(resourceSetId)) - return ai; - return null; - } + public static AllocationItem getAllocationItem(Resource r, String resourceSetId) { + if (r.allocationItems != null) + for (AllocationItem ai : r.allocationItems) + if (ai.resourceSetId != null && ai.resourceSetId.equals(resourceSetId)) + return ai; + return null; + } - public static void recalculate(Resource r) { - if (r == null) - return; + public static void recalculate(Resource r) { + if (r == null) + return; - if (r.resourceType == ResourceType.Limit) - LimitUtil.recalculate((LimitResource) r); - else if (r.resourceType == ResourceType.Label) - LabelUtil.recalculate((LabelResource) r); - } + if (r.resourceType == ResourceType.Limit) + LimitUtil.recalculate((LimitResource) r); + else if (r.resourceType == ResourceType.Label) + LabelUtil.recalculate((LabelResource) r); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/CachedDataSourceWrap.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/CachedDataSourceWrap.java index 8918ce0c..12ba1586 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/CachedDataSourceWrap.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/CachedDataSourceWrap.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,90 +33,90 @@ import org.slf4j.LoggerFactory; public class CachedDataSourceWrap implements DataSource { - private static final Logger log = LoggerFactory.getLogger(CachedDataSourceWrap.class); - - private ThreadLocal<ConnectionWrap> con = new ThreadLocal<>(); - - private DataSource dataSource; - - @Override - public PrintWriter getLogWriter() throws SQLException { - return dataSource.getLogWriter(); - } - - @Override - public void setLogWriter(PrintWriter out) throws SQLException { - dataSource.setLogWriter(out); - } - - @Override - public void setLoginTimeout(int seconds) throws SQLException { - dataSource.setLoginTimeout(seconds); - } - - @Override - public int getLoginTimeout() throws SQLException { - return dataSource.getLoginTimeout(); - } - - @Override - public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { - return dataSource.getParentLogger(); - } - - @Override - public <T> T unwrap(Class<T> iface) throws SQLException { - return dataSource.unwrap(iface); - } - - @Override - public boolean isWrapperFor(Class<?> iface) throws SQLException { - return dataSource.isWrapperFor(iface); - } - - @Override - public Connection getConnection() throws SQLException { - if (con.get() == null) { - Connection c = dataSource.getConnection(); - ConnectionWrap cc = new ConnectionWrap(c); - con.set(cc); - - log.info("Got new DB connection: " + c); - } else - log.info("Using thread DB connection: " + con.get().getCon()); - - return con.get(); - } - - @Override - public Connection getConnection(String username, String password) throws SQLException { - if (con.get() == null) { - Connection c = dataSource.getConnection(username, password); - ConnectionWrap cc = new ConnectionWrap(c); - con.set(cc); - - log.info("Got new DB connection: " + c); - } else - log.info("Using thread DB connection: " + con.get().getCon()); - - return con.get(); - } - - public void releaseConnection() { - if (con.get() != null) { - try { - con.get().realClose(); - - log.info("DB Connection released: " + con.get().getCon()); - } catch (SQLException e) { - log.warn("Failed to release DB connection", e); - } finally { - con.remove(); - } - } - } - - public void setDataSource(DataSource dataSource) { - this.dataSource = dataSource; - } + private static final Logger log = LoggerFactory.getLogger(CachedDataSourceWrap.class); + + private ThreadLocal<ConnectionWrap> con = new ThreadLocal<>(); + + private DataSource dataSource; + + @Override + public PrintWriter getLogWriter() throws SQLException { + return dataSource.getLogWriter(); + } + + @Override + public void setLogWriter(PrintWriter out) throws SQLException { + dataSource.setLogWriter(out); + } + + @Override + public void setLoginTimeout(int seconds) throws SQLException { + dataSource.setLoginTimeout(seconds); + } + + @Override + public int getLoginTimeout() throws SQLException { + return dataSource.getLoginTimeout(); + } + + @Override + public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { + return dataSource.getParentLogger(); + } + + @Override + public <T> T unwrap(Class<T> iface) throws SQLException { + return dataSource.unwrap(iface); + } + + @Override + public boolean isWrapperFor(Class<?> iface) throws SQLException { + return dataSource.isWrapperFor(iface); + } + + @Override + public Connection getConnection() throws SQLException { + if (con.get() == null) { + Connection c = dataSource.getConnection(); + ConnectionWrap cc = new ConnectionWrap(c); + con.set(cc); + + log.info("Got new DB connection: " + c); + } else + log.info("Using thread DB connection: " + con.get().getCon()); + + return con.get(); + } + + @Override + public Connection getConnection(String username, String password) throws SQLException { + if (con.get() == null) { + Connection c = dataSource.getConnection(username, password); + ConnectionWrap cc = new ConnectionWrap(c); + con.set(cc); + + log.info("Got new DB connection: " + c); + } else + log.info("Using thread DB connection: " + con.get().getCon()); + + return con.get(); + } + + public void releaseConnection() { + if (con.get() != null) { + try { + con.get().realClose(); + + log.info("DB Connection released: " + con.get().getCon()); + } catch (SQLException e) { + log.warn("Failed to release DB connection", e); + } finally { + con.remove(); + } + } + } + + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/ConnectionWrap.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/ConnectionWrap.java index 1927fdb9..11560498 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/ConnectionWrap.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/ConnectionWrap.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,297 +42,297 @@ import java.util.concurrent.Executor; public class ConnectionWrap implements Connection { - private Connection cc; - - public ConnectionWrap(Connection cc) { - super(); - this.cc = cc; - } - - public Connection getCon() { - return cc; - } - - public void realClose() throws SQLException { - cc.close(); - } - - @Override - public <T> T unwrap(Class<T> iface) throws SQLException { - return cc.unwrap(iface); - } - - @Override - public boolean isWrapperFor(Class<?> iface) throws SQLException { - return cc.isWrapperFor(iface); - } - - @Override - public Statement createStatement() throws SQLException { - return cc.createStatement(); - } - - @Override - public PreparedStatement prepareStatement(String sql) throws SQLException { - return cc.prepareStatement(sql); - } - - @Override - public CallableStatement prepareCall(String sql) throws SQLException { - return cc.prepareCall(sql); - } - - @Override - public String nativeSQL(String sql) throws SQLException { - return cc.nativeSQL(sql); - } - - @Override - public void setAutoCommit(boolean autoCommit) throws SQLException { - cc.setAutoCommit(autoCommit); - } - - @Override - public boolean getAutoCommit() throws SQLException { - return cc.getAutoCommit(); - } - - @Override - public void commit() throws SQLException { - cc.commit(); - } - - @Override - public void rollback() throws SQLException { - cc.rollback(); - } - - @Override - public void close() throws SQLException { - } - - @Override - public boolean isClosed() throws SQLException { - return cc.isClosed(); - } - - @Override - public DatabaseMetaData getMetaData() throws SQLException { - return cc.getMetaData(); - } - - @Override - public void setReadOnly(boolean readOnly) throws SQLException { - cc.setReadOnly(readOnly); - } - - @Override - public boolean isReadOnly() throws SQLException { - return cc.isReadOnly(); - } - - @Override - public void setCatalog(String catalog) throws SQLException { - cc.setCatalog(catalog); - } - - @Override - public String getCatalog() throws SQLException { - return cc.getCatalog(); - } - - @Override - public void setTransactionIsolation(int level) throws SQLException { - cc.setTransactionIsolation(level); - } - - @Override - public int getTransactionIsolation() throws SQLException { - return cc.getTransactionIsolation(); - } - - @Override - public SQLWarning getWarnings() throws SQLException { - return cc.getWarnings(); - } - - @Override - public void clearWarnings() throws SQLException { - cc.clearWarnings(); - } - - @Override - public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { - return cc.createStatement(resultSetType, resultSetConcurrency); - } - - @Override - public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) - throws SQLException { - return cc.prepareStatement(sql, resultSetType, resultSetConcurrency); - } - - @Override - public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { - return cc.prepareCall(sql, resultSetType, resultSetConcurrency); - } - - @Override - public Map<String, Class<?>> getTypeMap() throws SQLException { - return cc.getTypeMap(); - } - - @Override - public void setTypeMap(Map<String, Class<?>> map) throws SQLException { - cc.setTypeMap(map); - } - - @Override - public void setHoldability(int holdability) throws SQLException { - cc.setHoldability(holdability); - } - - @Override - public int getHoldability() throws SQLException { - return cc.getHoldability(); - } - - @Override - public Savepoint setSavepoint() throws SQLException { - return cc.setSavepoint(); - } - - @Override - public Savepoint setSavepoint(String name) throws SQLException { - return cc.setSavepoint(name); - } - - @Override - public void rollback(Savepoint savepoint) throws SQLException { - cc.rollback(savepoint); - } - - @Override - public void releaseSavepoint(Savepoint savepoint) throws SQLException { - cc.releaseSavepoint(savepoint); - } - - @Override - public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) - throws SQLException { - return cc.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability); - } - - @Override - public PreparedStatement prepareStatement( - String sql, - int resultSetType, - int resultSetConcurrency, - int resultSetHoldability) throws SQLException { - return cc.prepareStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability); - } - - @Override - public CallableStatement prepareCall( - String sql, - int resultSetType, - int resultSetConcurrency, - int resultSetHoldability) throws SQLException { - return cc.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability); - } - - @Override - public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException { - return cc.prepareStatement(sql, autoGeneratedKeys); - } - - @Override - public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException { - return cc.prepareStatement(sql, columnIndexes); - } - - @Override - public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException { - return cc.prepareStatement(sql, columnNames); - } - - @Override - public Clob createClob() throws SQLException { - return cc.createClob(); - } - - @Override - public Blob createBlob() throws SQLException { - return cc.createBlob(); - } - - @Override - public NClob createNClob() throws SQLException { - return cc.createNClob(); - } - - @Override - public SQLXML createSQLXML() throws SQLException { - return cc.createSQLXML(); - } - - @Override - public boolean isValid(int timeout) throws SQLException { - return cc.isValid(timeout); - } - - @Override - public void setClientInfo(String name, String value) throws SQLClientInfoException { - cc.setClientInfo(name, value); - } - - @Override - public void setClientInfo(Properties properties) throws SQLClientInfoException { - cc.setClientInfo(properties); - } - - @Override - public String getClientInfo(String name) throws SQLException { - return cc.getClientInfo(name); - } - - @Override - public Properties getClientInfo() throws SQLException { - return cc.getClientInfo(); - } - - @Override - public Array createArrayOf(String typeName, Object[] elements) throws SQLException { - return cc.createArrayOf(typeName, elements); - } - - @Override - public Struct createStruct(String typeName, Object[] attributes) throws SQLException { - return cc.createStruct(typeName, attributes); - } - - @Override - public void setSchema(String schema) throws SQLException { - cc.setSchema(schema); - } - - @Override - public String getSchema() throws SQLException { - return cc.getSchema(); - } - - @Override - public void abort(Executor executor) throws SQLException { - cc.abort(executor); - } - - @Override - public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException { - cc.setNetworkTimeout(executor, milliseconds); - } - - @Override - public int getNetworkTimeout() throws SQLException { - return cc.getNetworkTimeout(); - } + private Connection cc; + + public ConnectionWrap(Connection cc) { + super(); + this.cc = cc; + } + + public Connection getCon() { + return cc; + } + + public void realClose() throws SQLException { + cc.close(); + } + + @Override + public <T> T unwrap(Class<T> iface) throws SQLException { + return cc.unwrap(iface); + } + + @Override + public boolean isWrapperFor(Class<?> iface) throws SQLException { + return cc.isWrapperFor(iface); + } + + @Override + public Statement createStatement() throws SQLException { + return cc.createStatement(); + } + + @Override + public PreparedStatement prepareStatement(String sql) throws SQLException { + return cc.prepareStatement(sql); + } + + @Override + public CallableStatement prepareCall(String sql) throws SQLException { + return cc.prepareCall(sql); + } + + @Override + public String nativeSQL(String sql) throws SQLException { + return cc.nativeSQL(sql); + } + + @Override + public void setAutoCommit(boolean autoCommit) throws SQLException { + cc.setAutoCommit(autoCommit); + } + + @Override + public boolean getAutoCommit() throws SQLException { + return cc.getAutoCommit(); + } + + @Override + public void commit() throws SQLException { + cc.commit(); + } + + @Override + public void rollback() throws SQLException { + cc.rollback(); + } + + @Override + public void close() throws SQLException { + } + + @Override + public boolean isClosed() throws SQLException { + return cc.isClosed(); + } + + @Override + public DatabaseMetaData getMetaData() throws SQLException { + return cc.getMetaData(); + } + + @Override + public void setReadOnly(boolean readOnly) throws SQLException { + cc.setReadOnly(readOnly); + } + + @Override + public boolean isReadOnly() throws SQLException { + return cc.isReadOnly(); + } + + @Override + public void setCatalog(String catalog) throws SQLException { + cc.setCatalog(catalog); + } + + @Override + public String getCatalog() throws SQLException { + return cc.getCatalog(); + } + + @Override + public void setTransactionIsolation(int level) throws SQLException { + cc.setTransactionIsolation(level); + } + + @Override + public int getTransactionIsolation() throws SQLException { + return cc.getTransactionIsolation(); + } + + @Override + public SQLWarning getWarnings() throws SQLException { + return cc.getWarnings(); + } + + @Override + public void clearWarnings() throws SQLException { + cc.clearWarnings(); + } + + @Override + public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { + return cc.createStatement(resultSetType, resultSetConcurrency); + } + + @Override + public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) + throws SQLException { + return cc.prepareStatement(sql, resultSetType, resultSetConcurrency); + } + + @Override + public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { + return cc.prepareCall(sql, resultSetType, resultSetConcurrency); + } + + @Override + public Map<String, Class<?>> getTypeMap() throws SQLException { + return cc.getTypeMap(); + } + + @Override + public void setTypeMap(Map<String, Class<?>> map) throws SQLException { + cc.setTypeMap(map); + } + + @Override + public void setHoldability(int holdability) throws SQLException { + cc.setHoldability(holdability); + } + + @Override + public int getHoldability() throws SQLException { + return cc.getHoldability(); + } + + @Override + public Savepoint setSavepoint() throws SQLException { + return cc.setSavepoint(); + } + + @Override + public Savepoint setSavepoint(String name) throws SQLException { + return cc.setSavepoint(name); + } + + @Override + public void rollback(Savepoint savepoint) throws SQLException { + cc.rollback(savepoint); + } + + @Override + public void releaseSavepoint(Savepoint savepoint) throws SQLException { + cc.releaseSavepoint(savepoint); + } + + @Override + public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) + throws SQLException { + return cc.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability); + } + + @Override + public PreparedStatement prepareStatement( + String sql, + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability) throws SQLException { + return cc.prepareStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability); + } + + @Override + public CallableStatement prepareCall( + String sql, + int resultSetType, + int resultSetConcurrency, + int resultSetHoldability) throws SQLException { + return cc.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability); + } + + @Override + public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException { + return cc.prepareStatement(sql, autoGeneratedKeys); + } + + @Override + public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException { + return cc.prepareStatement(sql, columnIndexes); + } + + @Override + public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException { + return cc.prepareStatement(sql, columnNames); + } + + @Override + public Clob createClob() throws SQLException { + return cc.createClob(); + } + + @Override + public Blob createBlob() throws SQLException { + return cc.createBlob(); + } + + @Override + public NClob createNClob() throws SQLException { + return cc.createNClob(); + } + + @Override + public SQLXML createSQLXML() throws SQLException { + return cc.createSQLXML(); + } + + @Override + public boolean isValid(int timeout) throws SQLException { + return cc.isValid(timeout); + } + + @Override + public void setClientInfo(String name, String value) throws SQLClientInfoException { + cc.setClientInfo(name, value); + } + + @Override + public void setClientInfo(Properties properties) throws SQLClientInfoException { + cc.setClientInfo(properties); + } + + @Override + public String getClientInfo(String name) throws SQLException { + return cc.getClientInfo(name); + } + + @Override + public Properties getClientInfo() throws SQLException { + return cc.getClientInfo(); + } + + @Override + public Array createArrayOf(String typeName, Object[] elements) throws SQLException { + return cc.createArrayOf(typeName, elements); + } + + @Override + public Struct createStruct(String typeName, Object[] attributes) throws SQLException { + return cc.createStruct(typeName, attributes); + } + + @Override + public void setSchema(String schema) throws SQLException { + cc.setSchema(schema); + } + + @Override + public String getSchema() throws SQLException { + return cc.getSchema(); + } + + @Override + public void abort(Executor executor) throws SQLException { + cc.abort(executor); + } + + @Override + public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException { + cc.setNetworkTimeout(executor, milliseconds); + } + + @Override + public int getNetworkTimeout() throws SQLException { + return cc.getNetworkTimeout(); + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/DataSourceWrap.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/DataSourceWrap.java index d729e127..b01b31f9 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/DataSourceWrap.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/db/DataSourceWrap.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,66 +33,66 @@ import org.slf4j.LoggerFactory; public class DataSourceWrap implements DataSource { - private static final Logger log = LoggerFactory.getLogger(DataSourceWrap.class); + private static final Logger log = LoggerFactory.getLogger(DataSourceWrap.class); - private DataSource dataSource; + private DataSource dataSource; - @Override - public PrintWriter getLogWriter() throws SQLException { - return dataSource.getLogWriter(); - } + @Override + public PrintWriter getLogWriter() throws SQLException { + return dataSource.getLogWriter(); + } - @Override - public void setLogWriter(PrintWriter out) throws SQLException { - dataSource.setLogWriter(out); - } + @Override + public void setLogWriter(PrintWriter out) throws SQLException { + dataSource.setLogWriter(out); + } - @Override - public void setLoginTimeout(int seconds) throws SQLException { - dataSource.setLoginTimeout(seconds); - } + @Override + public void setLoginTimeout(int seconds) throws SQLException { + dataSource.setLoginTimeout(seconds); + } - @Override - public int getLoginTimeout() throws SQLException { - return dataSource.getLoginTimeout(); - } + @Override + public int getLoginTimeout() throws SQLException { + return dataSource.getLoginTimeout(); + } - @Override - public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { - return dataSource.getParentLogger(); - } + @Override + public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { + return dataSource.getParentLogger(); + } - @Override - public <T> T unwrap(Class<T> iface) throws SQLException { - return dataSource.unwrap(iface); - } + @Override + public <T> T unwrap(Class<T> iface) throws SQLException { + return dataSource.unwrap(iface); + } - @Override - public boolean isWrapperFor(Class<?> iface) throws SQLException { - return dataSource.isWrapperFor(iface); - } + @Override + public boolean isWrapperFor(Class<?> iface) throws SQLException { + return dataSource.isWrapperFor(iface); + } - @Override - public Connection getConnection() throws SQLException { - Connection c = dataSource.getConnection(); + @Override + public Connection getConnection() throws SQLException { + Connection c = dataSource.getConnection(); - log.debug("getConnection: " + c.getClass().getName()); + log.debug("getConnection: " + c.getClass().getName()); - c.setAutoCommit(true); - return c; - } + c.setAutoCommit(true); + return c; + } - @Override - public Connection getConnection(String username, String password) throws SQLException { - Connection c = dataSource.getConnection(username, password); + @Override + public Connection getConnection(String username, String password) throws SQLException { + Connection c = dataSource.getConnection(username, password); - log.debug("getConnection: " + c.getClass().getName()); + log.debug("getConnection: " + c.getClass().getName()); - c.setAutoCommit(true); - return c; - } + c.setAutoCommit(true); + return c; + } - public void setDataSource(DataSource dataSource) { - this.dataSource = dataSource; - } + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/expr/ExpressionEvaluator.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/expr/ExpressionEvaluator.java index ff15d770..345a6263 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/expr/ExpressionEvaluator.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/expr/ExpressionEvaluator.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,183 +25,183 @@ import java.util.Map; public class ExpressionEvaluator { - public static long evalLong(String expr, Map<String, Object> vars) { - return (long) evalFloat(expr, vars); - } - - public static float evalFloat(String expr, Map<String, Object> vars) { - expr = expr.trim(); - int sl = expr.length(); - if (sl == 0) - throw new IllegalArgumentException("Cannot interpret empty string."); - - // Remove parentheses if any - if (expr.charAt(0) == '(' && expr.charAt(sl - 1) == ')') - return evalFloat(expr.substring(1, sl - 1), vars); - - // Look for operators in the order of least priority - String[] sss = findOperator(expr, "-", true); - if (sss != null) - return evalFloat(sss[0], vars) - evalFloat(sss[1], vars); - - sss = findOperator(expr, "+", true); - if (sss != null) - return evalFloat(sss[0], vars) + evalFloat(sss[1], vars); - - sss = findOperator(expr, "/", true); - if (sss != null) - return evalFloat(sss[0], vars) / evalFloat(sss[1], vars); - - sss = findOperator(expr, "*", true); - if (sss != null) - return evalFloat(sss[0], vars) * evalFloat(sss[1], vars); - - // Check if expr is a number - try { - return Float.valueOf(expr); - } catch (Exception e) { - } - - // Must be a variable - Object v = vars.get(expr); - if (v != null) { - if (v instanceof Float) - return (Float) v; - if (v instanceof Long) - return (Long) v; - if (v instanceof Integer) - return (Integer) v; - } - return 0; - } - - public static boolean evalBoolean(String expr, Map<String, Object> vars) { - expr = expr.trim(); - int sl = expr.length(); - if (sl == 0) - throw new IllegalArgumentException("Cannot interpret empty string."); - - if (expr.equalsIgnoreCase("true")) - return true; - - if (expr.equalsIgnoreCase("false")) - return false; - - // Remove parentheses if any - if (expr.charAt(0) == '(' && expr.charAt(sl - 1) == ')') - return evalBoolean(expr.substring(1, sl - 1), vars); - - // Look for operators in the order of least priority - String[] sss = findOperator(expr, "or", true); - if (sss != null) - return evalBoolean(sss[0], vars) || evalBoolean(sss[1], vars); - - sss = findOperator(expr, "and", true); - if (sss != null) - return evalBoolean(sss[0], vars) && evalBoolean(sss[1], vars); - - sss = findOperator(expr, "not", true); - if (sss != null) - return !evalBoolean(sss[1], vars); - - sss = findOperator(expr, "!=", false); - if (sss == null) - sss = findOperator(expr, "<>", false); - if (sss != null) - return evalLong(sss[0], vars) != evalLong(sss[1], vars); - - sss = findOperator(expr, "==", false); - if (sss == null) - sss = findOperator(expr, "=", false); - if (sss != null) - return evalLong(sss[0], vars) == evalLong(sss[1], vars); - - sss = findOperator(expr, ">=", false); - if (sss != null) - return evalLong(sss[0], vars) >= evalLong(sss[1], vars); - - sss = findOperator(expr, ">", false); - if (sss != null) - return evalLong(sss[0], vars) > evalLong(sss[1], vars); - - sss = findOperator(expr, "<=", false); - if (sss != null) - return evalLong(sss[0], vars) <= evalLong(sss[1], vars); - - sss = findOperator(expr, "<", false); - if (sss != null) - return evalLong(sss[0], vars) < evalLong(sss[1], vars); - - throw new IllegalArgumentException("Cannot interpret '" + expr + "': Invalid expression."); - } - - private static String[] findOperator(String s, String op, boolean delimiterRequired) { - int opl = op.length(); - int sl = s.length(); - String delimiters = " \0\t\r\n()"; - int pcount = 0, qcount = 0; - for (int i = 0; i < sl; i++) { - char c = s.charAt(i); - if (c == '(' && qcount == 0) - pcount++; - else if (c == ')' && qcount == 0) { - pcount--; - if (pcount < 0) - throw new IllegalArgumentException("Cannot interpret '" + s + "': Parentheses do not match."); - } else if (c == '\'') - qcount = (qcount + 1) % 2; - else if (i <= sl - opl && pcount == 0 && qcount == 0) { - String ss = s.substring(i, i + opl); - if (ss.equalsIgnoreCase(op)) { - boolean found = true; - if (delimiterRequired) { - // Check for delimiter before and after to make sure it is not part of another word - char chbefore = '\0'; - if (i > 0) - chbefore = s.charAt(i - 1); - char chafter = '\0'; - if (i < sl - opl) - chafter = s.charAt(i + opl); - found = delimiters.indexOf(chbefore) >= 0 && delimiters.indexOf(chafter) >= 0; - } - if (found) { - // We've found the operator, split the string - String[] sss = new String[2]; - sss[0] = s.substring(0, i); - sss[1] = s.substring(i + opl); - return sss; - } - } - } - } - if (pcount > 0) - throw new IllegalArgumentException("Cannot interpret '" + s + "': Parentheses do not match."); - if (qcount > 0) - throw new IllegalArgumentException("Cannot interpret '" + s + "': No closing '."); - return null; - } - - private static Object parseObject(String s) { - s = s.trim(); - int sl = s.length(); - if (sl == 0) - throw new IllegalArgumentException("Cannot interpret empty string."); - if (s.equalsIgnoreCase("null")) - return null; - if (s.charAt(0) == '\'') { - if (sl < 2 || s.charAt(sl - 1) != '\'') - throw new IllegalArgumentException("Cannot interpret '" + s + "': No closing '."); - return s.substring(1, sl - 1); - } - // Not in quotes - must be a number - try { - return Long.valueOf(s); - } catch (Exception e) { - } - try { - return Double.valueOf(s); - } catch (Exception e) { - throw new IllegalArgumentException("Cannot interpret '" + s + "': Invalid number."); - } - } + public static long evalLong(String expr, Map<String, Object> vars) { + return (long) evalFloat(expr, vars); + } + + public static float evalFloat(String expr, Map<String, Object> vars) { + expr = expr.trim(); + int sl = expr.length(); + if (sl == 0) + throw new IllegalArgumentException("Cannot interpret empty string."); + + // Remove parentheses if any + if (expr.charAt(0) == '(' && expr.charAt(sl - 1) == ')') + return evalFloat(expr.substring(1, sl - 1), vars); + + // Look for operators in the order of least priority + String[] sss = findOperator(expr, "-", true); + if (sss != null) + return evalFloat(sss[0], vars) - evalFloat(sss[1], vars); + + sss = findOperator(expr, "+", true); + if (sss != null) + return evalFloat(sss[0], vars) + evalFloat(sss[1], vars); + + sss = findOperator(expr, "/", true); + if (sss != null) + return evalFloat(sss[0], vars) / evalFloat(sss[1], vars); + + sss = findOperator(expr, "*", true); + if (sss != null) + return evalFloat(sss[0], vars) * evalFloat(sss[1], vars); + + // Check if expr is a number + try { + return Float.valueOf(expr); + } catch (Exception e) { + } + + // Must be a variable + Object v = vars.get(expr); + if (v != null) { + if (v instanceof Float) + return (Float) v; + if (v instanceof Long) + return (Long) v; + if (v instanceof Integer) + return (Integer) v; + } + return 0; + } + + public static boolean evalBoolean(String expr, Map<String, Object> vars) { + expr = expr.trim(); + int sl = expr.length(); + if (sl == 0) + throw new IllegalArgumentException("Cannot interpret empty string."); + + if (expr.equalsIgnoreCase("true")) + return true; + + if (expr.equalsIgnoreCase("false")) + return false; + + // Remove parentheses if any + if (expr.charAt(0) == '(' && expr.charAt(sl - 1) == ')') + return evalBoolean(expr.substring(1, sl - 1), vars); + + // Look for operators in the order of least priority + String[] sss = findOperator(expr, "or", true); + if (sss != null) + return evalBoolean(sss[0], vars) || evalBoolean(sss[1], vars); + + sss = findOperator(expr, "and", true); + if (sss != null) + return evalBoolean(sss[0], vars) && evalBoolean(sss[1], vars); + + sss = findOperator(expr, "not", true); + if (sss != null) + return !evalBoolean(sss[1], vars); + + sss = findOperator(expr, "!=", false); + if (sss == null) + sss = findOperator(expr, "<>", false); + if (sss != null) + return evalLong(sss[0], vars) != evalLong(sss[1], vars); + + sss = findOperator(expr, "==", false); + if (sss == null) + sss = findOperator(expr, "=", false); + if (sss != null) + return evalLong(sss[0], vars) == evalLong(sss[1], vars); + + sss = findOperator(expr, ">=", false); + if (sss != null) + return evalLong(sss[0], vars) >= evalLong(sss[1], vars); + + sss = findOperator(expr, ">", false); + if (sss != null) + return evalLong(sss[0], vars) > evalLong(sss[1], vars); + + sss = findOperator(expr, "<=", false); + if (sss != null) + return evalLong(sss[0], vars) <= evalLong(sss[1], vars); + + sss = findOperator(expr, "<", false); + if (sss != null) + return evalLong(sss[0], vars) < evalLong(sss[1], vars); + + throw new IllegalArgumentException("Cannot interpret '" + expr + "': Invalid expression."); + } + + private static String[] findOperator(String s, String op, boolean delimiterRequired) { + int opl = op.length(); + int sl = s.length(); + String delimiters = " \0\t\r\n()"; + int pcount = 0, qcount = 0; + for (int i = 0; i < sl; i++) { + char c = s.charAt(i); + if (c == '(' && qcount == 0) + pcount++; + else if (c == ')' && qcount == 0) { + pcount--; + if (pcount < 0) + throw new IllegalArgumentException("Cannot interpret '" + s + "': Parentheses do not match."); + } else if (c == '\'') + qcount = (qcount + 1) % 2; + else if (i <= sl - opl && pcount == 0 && qcount == 0) { + String ss = s.substring(i, i + opl); + if (ss.equalsIgnoreCase(op)) { + boolean found = true; + if (delimiterRequired) { + // Check for delimiter before and after to make sure it is not part of another word + char chbefore = '\0'; + if (i > 0) + chbefore = s.charAt(i - 1); + char chafter = '\0'; + if (i < sl - opl) + chafter = s.charAt(i + opl); + found = delimiters.indexOf(chbefore) >= 0 && delimiters.indexOf(chafter) >= 0; + } + if (found) { + // We've found the operator, split the string + String[] sss = new String[2]; + sss[0] = s.substring(0, i); + sss[1] = s.substring(i + opl); + return sss; + } + } + } + } + if (pcount > 0) + throw new IllegalArgumentException("Cannot interpret '" + s + "': Parentheses do not match."); + if (qcount > 0) + throw new IllegalArgumentException("Cannot interpret '" + s + "': No closing '."); + return null; + } + + private static Object parseObject(String s) { + s = s.trim(); + int sl = s.length(); + if (sl == 0) + throw new IllegalArgumentException("Cannot interpret empty string."); + if (s.equalsIgnoreCase("null")) + return null; + if (s.charAt(0) == '\'') { + if (sl < 2 || s.charAt(sl - 1) != '\'') + throw new IllegalArgumentException("Cannot interpret '" + s + "': No closing '."); + return s.substring(1, sl - 1); + } + // Not in quotes - must be a number + try { + return Long.valueOf(s); + } catch (Exception e) { + } + try { + return Double.valueOf(s); + } catch (Exception e) { + throw new IllegalArgumentException("Cannot interpret '" + s + "': Invalid number."); + } + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/speed/SpeedUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/speed/SpeedUtil.java index 8a0b006b..f382a639 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/speed/SpeedUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/speed/SpeedUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,19 +23,19 @@ package org.openecomp.sdnc.util.speed; public class SpeedUtil { - private long unitFactor = 1000; + private long unitFactor = 1000; - public long convertToKbps(long maxSpeed, String unit) { - if (unit.equalsIgnoreCase("kbps")) - return maxSpeed; - if (unit.equalsIgnoreCase("Mbps")) - return maxSpeed * unitFactor; - if (unit.equalsIgnoreCase("Gbps")) - return maxSpeed * unitFactor * unitFactor; - return 0; - } + public long convertToKbps(long maxSpeed, String unit) { + if (unit.equalsIgnoreCase("kbps")) + return maxSpeed; + if (unit.equalsIgnoreCase("Mbps")) + return maxSpeed * unitFactor; + if (unit.equalsIgnoreCase("Gbps")) + return maxSpeed * unitFactor * unitFactor; + return 0; + } - public void setUnitFactor(long unitFactor) { - this.unitFactor = unitFactor; - } + public void setUnitFactor(long unitFactor) { + this.unitFactor = unitFactor; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/str/StrUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/str/StrUtil.java index 02857e10..f7fa81d1 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/str/StrUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/str/StrUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,269 +37,269 @@ import org.slf4j.LoggerFactory; public class StrUtil { - private static final Logger log = LoggerFactory.getLogger(StrUtil.class); - - public static final String INDENT_STR = " "; - - public static void indent(StringBuilder ss, int ind) { - for (int i = 0; i < ind; i++) - ss.append(INDENT_STR); - } - - public static void info(Logger log, Object o) { - if (log.isInfoEnabled()) { - StringBuilder ss = new StringBuilder(); - struct(ss, o); - log.info(ss.toString()); - } - } - - public static void debug(Logger log, Object o) { - if (log.isDebugEnabled()) { - StringBuilder ss = new StringBuilder(); - struct(ss, o); - log.debug(ss.toString()); - } - } - - public static void struct(StringBuilder ss, Object o) { - struct(ss, o, 0); - } - - public static void struct(StringBuilder ss, Object o, int ind) { - if (o == null) { - ss.append("null"); - return; - } - - if (isSimple(o)) { - ss.append(o); - return; - } - - Class<? extends Object> cls = o.getClass(); - - if (cls.isEnum()) { - ss.append(o); - return; - } - - if (cls.isArray()) { - int n = Array.getLength(o); - if (n == 0) { - ss.append("[]"); - return; - } - - Object o1 = Array.get(o, 0); - if (isSimple(o1)) { - ss.append('[').append(o1); - for (int i = 1; i < n; i++) { - o1 = Array.get(o, i); - ss.append(", ").append(o1); - } - ss.append(']'); - return; - } - - ss.append('\n'); - indent(ss, ind + 1); - ss.append('['); - struct(ss, o1, ind + 1); - for (int i = 1; i < n; i++) { - o1 = Array.get(o, i); - struct(ss, o1, ind + 1); - } - ss.append('\n'); - indent(ss, ind + 1); - ss.append(']'); - return; - } - - if (o instanceof Collection<?>) { - Collection<?> ll = (Collection<?>) o; - - int n = ll.size(); - if (n == 0) { - ss.append("[]"); - return; - } - - Iterator<?> ii = ll.iterator(); - Object o1 = ii.next(); - if (isSimple(o1)) { - ss.append('[').append(o1); - while (ii.hasNext()) { - o1 = ii.next(); - ss.append(", ").append(o1); - } - ss.append(']'); - return; - } - - ss.append('\n'); - indent(ss, ind + 1); - ss.append('['); - struct(ss, o1, ind + 1); - while (ii.hasNext()) { - o1 = ii.next(); - struct(ss, o1, ind + 1); - } - ss.append('\n'); - indent(ss, ind + 1); - ss.append(']'); - return; - - } - - if (o instanceof Map<?, ?>) { - Map<?, ?> mm = (Map<?, ?>) o; - - int n = mm.size(); - if (n == 0) { - ss.append("{}"); - return; - } - - ss.append('{'); - - for (Object k : mm.keySet()) { - ss.append('\n'); - indent(ss, ind + 1); - ss.append(k).append(": "); - - Object o1 = mm.get(k); - struct(ss, o1, ind + 2); - } - - ss.append('\n'); - indent(ss, ind); - ss.append('}'); - - return; - } - - Field[] fields = cls.getFields(); - - if (fields.length == 0) { - ss.append(o); - return; - } - - ss.append('\n'); - indent(ss, ind + 1); - ss.append('<').append(cls.getSimpleName()).append("> {"); - for (Field f : fields) { - ss.append('\n'); - indent(ss, ind + 2); - ss.append(f.getName()).append(": "); - Object v = null; - try { - v = f.get(o); - } catch (IllegalAccessException e) { - v = "*** Cannot obtain value *** : " + e.getMessage(); - } - struct(ss, v, ind + 2); - } - ss.append('\n'); - indent(ss, ind + 1); - ss.append('}'); - } - - public static SortedSet<Integer> listInt(String ss, String warning) { - if (ss == null || ss.length() == 0) - return null; - - SortedSet<Integer> ll = new TreeSet<Integer>(); - String[] str = ss.split(","); - for (String s : str) { - try { - int i1 = s.indexOf('-'); - int start, end; - if (i1 > 0) { - String s1 = s.substring(0, i1); - String s2 = s.substring(i1 + 1); - start = Integer.parseInt(s1); - end = Integer.parseInt(s2); - } else - start = end = Integer.parseInt(s); - for (int i = start; i <= end; i++) - ll.add(i); - } catch (NumberFormatException e) { - // Skip this - bad data in DB - log.warn(warning + " [" + s + "].", e); - } - } - return ll; - } - - public static String listInt(SortedSet<Integer> ll) { - if (ll == null || ll.size() == 0) - return null; - - StringBuilder sb = new StringBuilder(2000); - Iterator<Integer> i = ll.iterator(); - int n = i.next(); - int start = n; - int end = n; - boolean first = true; - while (i.hasNext()) { - n = i.next(); - if (n != end + 1) { - if (!first) - sb.append(','); - first = false; - - if (start == end) - sb.append(start); - else if (start == end - 1) - sb.append(start).append(',').append(end); - else - sb.append(start).append('-').append(end); - - start = n; - } - end = n; - } - - if (!first) - sb.append(','); - - if (start == end) - sb.append(start); - else if (start == end - 1) - sb.append(start).append(',').append(end); - else - sb.append(start).append('-').append(end); - - return sb.toString(); - } - - public static List<String> listStr(String s) { - if (s == null || s.length() == 0) - return null; - String[] ss = s.split(","); - return Arrays.asList(ss); - } - - public static String listStr(Collection<String> ll) { - if (ll == null || ll.isEmpty()) - return null; - StringBuilder ss = new StringBuilder(1000); - Iterator<String> i = ll.iterator(); - ss.append(i.next()); - while (i.hasNext()) - ss.append(',').append(i.next()); - return ss.toString(); - } - - private static boolean isSimple(Object o) { - if (o == null) - return true; - - if (o instanceof Number || o instanceof String || o instanceof Boolean || o instanceof Date) - return true; - - return false; - } + private static final Logger log = LoggerFactory.getLogger(StrUtil.class); + + public static final String INDENT_STR = " "; + + public static void indent(StringBuilder ss, int ind) { + for (int i = 0; i < ind; i++) + ss.append(INDENT_STR); + } + + public static void info(Logger log, Object o) { + if (log.isInfoEnabled()) { + StringBuilder ss = new StringBuilder(); + struct(ss, o); + log.info(ss.toString()); + } + } + + public static void debug(Logger log, Object o) { + if (log.isDebugEnabled()) { + StringBuilder ss = new StringBuilder(); + struct(ss, o); + log.debug(ss.toString()); + } + } + + public static void struct(StringBuilder ss, Object o) { + struct(ss, o, 0); + } + + public static void struct(StringBuilder ss, Object o, int ind) { + if (o == null) { + ss.append("null"); + return; + } + + if (isSimple(o)) { + ss.append(o); + return; + } + + Class<? extends Object> cls = o.getClass(); + + if (cls.isEnum()) { + ss.append(o); + return; + } + + if (cls.isArray()) { + int n = Array.getLength(o); + if (n == 0) { + ss.append("[]"); + return; + } + + Object o1 = Array.get(o, 0); + if (isSimple(o1)) { + ss.append('[').append(o1); + for (int i = 1; i < n; i++) { + o1 = Array.get(o, i); + ss.append(", ").append(o1); + } + ss.append(']'); + return; + } + + ss.append('\n'); + indent(ss, ind + 1); + ss.append('['); + struct(ss, o1, ind + 1); + for (int i = 1; i < n; i++) { + o1 = Array.get(o, i); + struct(ss, o1, ind + 1); + } + ss.append('\n'); + indent(ss, ind + 1); + ss.append(']'); + return; + } + + if (o instanceof Collection<?>) { + Collection<?> ll = (Collection<?>) o; + + int n = ll.size(); + if (n == 0) { + ss.append("[]"); + return; + } + + Iterator<?> ii = ll.iterator(); + Object o1 = ii.next(); + if (isSimple(o1)) { + ss.append('[').append(o1); + while (ii.hasNext()) { + o1 = ii.next(); + ss.append(", ").append(o1); + } + ss.append(']'); + return; + } + + ss.append('\n'); + indent(ss, ind + 1); + ss.append('['); + struct(ss, o1, ind + 1); + while (ii.hasNext()) { + o1 = ii.next(); + struct(ss, o1, ind + 1); + } + ss.append('\n'); + indent(ss, ind + 1); + ss.append(']'); + return; + + } + + if (o instanceof Map<?, ?>) { + Map<?, ?> mm = (Map<?, ?>) o; + + int n = mm.size(); + if (n == 0) { + ss.append("{}"); + return; + } + + ss.append('{'); + + for (Object k : mm.keySet()) { + ss.append('\n'); + indent(ss, ind + 1); + ss.append(k).append(": "); + + Object o1 = mm.get(k); + struct(ss, o1, ind + 2); + } + + ss.append('\n'); + indent(ss, ind); + ss.append('}'); + + return; + } + + Field[] fields = cls.getFields(); + + if (fields.length == 0) { + ss.append(o); + return; + } + + ss.append('\n'); + indent(ss, ind + 1); + ss.append('<').append(cls.getSimpleName()).append("> {"); + for (Field f : fields) { + ss.append('\n'); + indent(ss, ind + 2); + ss.append(f.getName()).append(": "); + Object v = null; + try { + v = f.get(o); + } catch (IllegalAccessException e) { + v = "*** Cannot obtain value *** : " + e.getMessage(); + } + struct(ss, v, ind + 2); + } + ss.append('\n'); + indent(ss, ind + 1); + ss.append('}'); + } + + public static SortedSet<Integer> listInt(String ss, String warning) { + if (ss == null || ss.length() == 0) + return null; + + SortedSet<Integer> ll = new TreeSet<Integer>(); + String[] str = ss.split(","); + for (String s : str) { + try { + int i1 = s.indexOf('-'); + int start, end; + if (i1 > 0) { + String s1 = s.substring(0, i1); + String s2 = s.substring(i1 + 1); + start = Integer.parseInt(s1); + end = Integer.parseInt(s2); + } else + start = end = Integer.parseInt(s); + for (int i = start; i <= end; i++) + ll.add(i); + } catch (NumberFormatException e) { + // Skip this - bad data in DB + log.warn(warning + " [" + s + "].", e); + } + } + return ll; + } + + public static String listInt(SortedSet<Integer> ll) { + if (ll == null || ll.size() == 0) + return null; + + StringBuilder sb = new StringBuilder(2000); + Iterator<Integer> i = ll.iterator(); + int n = i.next(); + int start = n; + int end = n; + boolean first = true; + while (i.hasNext()) { + n = i.next(); + if (n != end + 1) { + if (!first) + sb.append(','); + first = false; + + if (start == end) + sb.append(start); + else if (start == end - 1) + sb.append(start).append(',').append(end); + else + sb.append(start).append('-').append(end); + + start = n; + } + end = n; + } + + if (!first) + sb.append(','); + + if (start == end) + sb.append(start); + else if (start == end - 1) + sb.append(start).append(',').append(end); + else + sb.append(start).append('-').append(end); + + return sb.toString(); + } + + public static List<String> listStr(String s) { + if (s == null || s.length() == 0) + return null; + String[] ss = s.split(","); + return Arrays.asList(ss); + } + + public static String listStr(Collection<String> ll) { + if (ll == null || ll.isEmpty()) + return null; + StringBuilder ss = new StringBuilder(1000); + Iterator<String> i = ll.iterator(); + ss.append(i.next()); + while (i.hasNext()) + ss.append(',').append(i.next()); + return ss.toString(); + } + + private static boolean isSimple(Object o) { + if (o == null) + return true; + + if (o instanceof Number || o instanceof String || o instanceof Boolean || o instanceof Date) + return true; + + return false; + } } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VpnParam.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VpnParam.java index a9d69507..a28b0aff 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VpnParam.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VpnParam.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,8 +23,8 @@ package org.openecomp.sdnc.util.vrf; public class VpnParam { - public String vpnId; - public String siteType; - public String spokeServiceInstanceId; - public String routeGroupName; + public String vpnId; + public String siteType; + public String spokeServiceInstanceId; + public String routeGroupName; } diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VrfUtil.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VrfUtil.java index d5a691bb..2b90027c 100644 --- a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VrfUtil.java +++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/util/vrf/VrfUtil.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,54 +23,54 @@ package org.openecomp.sdnc.util.vrf; public class VrfUtil { - public static String createVrfInstanceName( - String serviceInstanceId, - String vpnId, - String siteType, - String routeGroup) { - if (vpnId == null || vpnId.trim().length() == 0) - return null; + public static String createVrfInstanceName( + String serviceInstanceId, + String vpnId, + String siteType, + String routeGroup) { + if (vpnId == null || vpnId.trim().length() == 0) + return null; - String ss = "VPN-" + vpnId; - if (siteType != null && siteType.equalsIgnoreCase("hub")) - ss += "-HUB"; - if (siteType != null && siteType.equalsIgnoreCase("spoke")) - ss += "-SP-" + serviceInstanceId; - if (routeGroup != null && routeGroup.trim().length() > 0) - ss += "-RG-" + routeGroup; + String ss = "VPN-" + vpnId; + if (siteType != null && siteType.equalsIgnoreCase("hub")) + ss += "-HUB"; + if (siteType != null && siteType.equalsIgnoreCase("spoke")) + ss += "-SP-" + serviceInstanceId; + if (routeGroup != null && routeGroup.trim().length() > 0) + ss += "-RG-" + routeGroup; - return ss; - } + return ss; + } - public static VpnParam parseVrfInstanceName(String vrfInstanceName) { - VpnParam vpnParam = new VpnParam(); + public static VpnParam parseVrfInstanceName(String vrfInstanceName) { + VpnParam vpnParam = new VpnParam(); - int i1 = vrfInstanceName.indexOf("-HUB"); - if (i1 > 0) - vpnParam.siteType = "HUB"; + int i1 = vrfInstanceName.indexOf("-HUB"); + if (i1 > 0) + vpnParam.siteType = "HUB"; - int i2 = vrfInstanceName.indexOf("-SP-"); - if (i2 > 0) - vpnParam.siteType = "SPOKE"; + int i2 = vrfInstanceName.indexOf("-SP-"); + if (i2 > 0) + vpnParam.siteType = "SPOKE"; - int i3 = vrfInstanceName.indexOf("-RG-"); - if (i3 > 0) - vpnParam.routeGroupName = vrfInstanceName.substring(i3 + 4); + int i3 = vrfInstanceName.indexOf("-RG-"); + if (i3 > 0) + vpnParam.routeGroupName = vrfInstanceName.substring(i3 + 4); - int i4 = vrfInstanceName.length(); - if (i1 > 0) - i4 = i1; - else if (i2 > 0) - i4 = i2; - else if (i3 > 0) - i4 = i3; - vpnParam.vpnId = vrfInstanceName.substring(4, i4); + int i4 = vrfInstanceName.length(); + if (i1 > 0) + i4 = i1; + else if (i2 > 0) + i4 = i2; + else if (i3 > 0) + i4 = i3; + vpnParam.vpnId = vrfInstanceName.substring(4, i4); - if (i2 > 0 && i3 < 0) - vpnParam.spokeServiceInstanceId = vrfInstanceName.substring(i2 + 4); - if (i2 > 0 && i3 > 0) - vpnParam.spokeServiceInstanceId = vrfInstanceName.substring(i2 + 4, i3); + if (i2 > 0 && i3 < 0) + vpnParam.spokeServiceInstanceId = vrfInstanceName.substring(i2 + 4); + if (i2 > 0 && i3 > 0) + vpnParam.spokeServiceInstanceId = vrfInstanceName.substring(i2 + 4, i3); - return vpnParam; - } + return vpnParam; + } } diff --git a/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-context.xml b/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-context.xml index b123944d..9bd3fe11 100644 --- a/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-context.xml +++ b/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-context.xml @@ -4,7 +4,7 @@ openECOMP : SDN-C ================================================================================ Copyright (C) 2017 ONAP Intellectual Property. All rights - reserved. + reserved. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,276 +21,276 @@ --> <beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/beans + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - <!-- JDBC setup --> + <!-- JDBC setup --> - <bean id="rm.dataSource" class="org.openecomp.sdnc.util.db.DataSourceWrap"> - <property name="dataSource" ref="dblib.dataSource" /> - </bean> + <bean id="rm.dataSource" class="org.openecomp.sdnc.util.db.DataSourceWrap"> + <property name="dataSource" ref="dblib.dataSource" /> + </bean> - <bean id="lock.dataSource" class="org.openecomp.sdnc.util.db.CachedDataSourceWrap"> - <property name="dataSource" ref="rm.dataSource" /> - </bean> + <bean id="lock.dataSource" class="org.openecomp.sdnc.util.db.CachedDataSourceWrap"> + <property name="dataSource" ref="rm.dataSource" /> + </bean> - <bean id="rm.jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> - <property name="dataSource" ref="rm.dataSource" /> - </bean> + <bean id="rm.jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> + <property name="dataSource" ref="rm.dataSource" /> + </bean> - <bean id="lock.jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> - <property name="dataSource" ref="lock.dataSource" /> - </bean> + <bean id="lock.jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> + <property name="dataSource" ref="lock.dataSource" /> + </bean> - <!-- Utils Configuration --> + <!-- Utils Configuration --> - <bean id="speedUtil" class="org.openecomp.sdnc.util.speed.SpeedUtil"> - <property name="unitFactor" value="1000" /> - </bean> + <bean id="speedUtil" class="org.openecomp.sdnc.util.speed.SpeedUtil"> + <property name="unitFactor" value="1000" /> + </bean> - <!-- Resource Lock Configuration --> + <!-- Resource Lock Configuration --> - <bean id="resourceLockDao" class="org.openecomp.sdnc.lock.dao.ResourceLockDaoImpl"> - <property name="jdbcTemplate" ref="lock.jdbcTemplate" /> - </bean> + <bean id="resourceLockDao" class="org.openecomp.sdnc.lock.dao.ResourceLockDaoImpl"> + <property name="jdbcTemplate" ref="lock.jdbcTemplate" /> + </bean> - <bean id="lockHelper" class="org.openecomp.sdnc.lock.comp.LockHelperImpl"> - <property name="resourceLockDao" ref="resourceLockDao" /> - <property name="retryCount" value="10" /> - <property name="lockWait" value="5" /> <!-- Seconds --> - </bean> + <bean id="lockHelper" class="org.openecomp.sdnc.lock.comp.LockHelperImpl"> + <property name="resourceLockDao" ref="resourceLockDao" /> + <property name="retryCount" value="10" /> + <property name="lockWait" value="5" /> <!-- Seconds --> + </bean> - <!-- RM Configuration --> + <!-- RM Configuration --> - <bean id="resourceJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceJdbcDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="allocationItemJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.AllocationItemJdbcDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="resourceLoadJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceLoadJdbcDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="resourceDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceDaoImpl"> - <property name="resourceJdbcDao" ref="resourceJdbcDao" /> - <property name="allocationItemJdbcDao" ref="allocationItemJdbcDao" /> - <property name="resourceLoadJdbcDao" ref="resourceLoadJdbcDao" /> - </bean> - - <bean id="resourceManager" class="org.openecomp.sdnc.rm.comp.ResourceManagerImpl"> - <property name="lockHelper" ref="lockHelper" /> - <property name="resourceDao" ref="resourceDao" /> - <property name="applicationId" value="SDNC" /> - <property name="lockTimeout" value="600" /> <!-- Seconds --> - </bean> - - <!-- Equipment DAO Configuration --> - - <bean id="serverDao" class="org.openecomp.sdnc.ra.equip.dao.ServerDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="vpePortDao" class="org.openecomp.sdnc.ra.equip.dao.VpePortDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="vplspePortDao" class="org.openecomp.sdnc.ra.equip.dao.VplspePortDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <!-- Rule DAO Configuration --> - - <bean id="parameterDao" class="org.openecomp.sdnc.ra.rule.dao.ParameterDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="maxPortSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxPortSpeedDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - <property name="speedUtil" ref="speedUtil" /> - </bean> - - <bean id="maxServerSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxServerSpeedDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - <property name="speedUtil" ref="speedUtil" /> - </bean> - - <bean id="resourceRuleDao" class="org.openecomp.sdnc.ra.rule.dao.ResourceRuleDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="rangeRuleDao" class="org.openecomp.sdnc.ra.rule.dao.RangeRuleDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="vpeLockDao" class="org.openecomp.sdnc.ra.rule.dao.VpeLockDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <!-- Service DAO Configuration --> - - <bean id="serviceResourceDao" class="org.openecomp.sdnc.ra.service.dao.ServiceResourceDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <!-- ResourceAllocator Configuration --> - - <bean id="allocationRequestBuilder" - class="org.openecomp.sdnc.ra.rule.comp.AllocationRequestBuilderImpl"> - <property name="resourceRuleDao" ref="resourceRuleDao" /> - <property name="rangeRuleDao" ref="rangeRuleDao" /> - </bean> - - <bean id="resourceAllocator" class="org.openecomp.sdnc.ra.ResourceAllocator"> - <property name="speedUtil" ref="speedUtil" /> - <property name="parameterDao" ref="parameterDao" /> - <property name="serverDao" ref="serverDao" /> - <property name="vpePortDao" ref="vpePortDao" /> - <property name="vplspePortDao" ref="vplspePortDao" /> - <property name="maxPortSpeedDao" ref="maxPortSpeedDao" /> - <property name="maxServerSpeedDao" ref="maxServerSpeedDao" /> - <property name="serviceResourceDao" ref="serviceResourceDao" /> - <property name="allocationRequestBuilder" ref="allocationRequestBuilder" /> - <property name="resourceManager" ref="resourceManager" /> - <property name="endPointAllocator" ref="endPointAllocator" /> - </bean> - - <!-- EndPointAllocator Configuration --> - - <bean id="endPointAllocator" class="org.openecomp.sdnc.ra.comp.EndPointAllocatorImpl"> - <property name="resourceManager" ref="resourceManager" /> - <property name="endPointAllocationDefinitionMap"> - <map> - <entry key="L3AVPN-PORT"> - <list> - <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> - <property name="serviceModel" value="L3AVPN-PORT" /> - <property name="endPointPosition" value="VPE-Cust" /> - <property name="equipmentReader" ref="vpePortReader" /> - <property name="equipmentCheckList"> - <list> - <ref bean="provStatusCheck" /> - <ref bean="excludeVpeCheck" /> - <ref bean="anyVrfPresentCheck" /> - </list> - </property> - <property name="preferenceRuleList"> - <list> - <ref bean="affinityLinkPref" /> - </list> - </property> - <property name="allocationRuleList"> - <list> - <ref bean="dbAllocationRule" /> - <ref bean="affinityAllocationRule" /> - </list> - </property> - </bean> - </list> - </entry> - <entry key="L3AVPN-EVC"> - <list> - <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> - <property name="serviceModel" value="L3AVPN-EVC" /> - <property name="endPointPosition" value="VPE-Cust" /> - <property name="equipmentReader" ref="vpePortReader" /> - <property name="equipmentCheckList"> - <list> - <ref bean="vlanSpeedCheck" /> - <ref bean="provStatusCheck" /> - <ref bean="excludeVpeCheck" /> - <ref bean="vpeLockCheck" /> - <ref bean="anyVrfPresentCheck" /> - <ref bean="oneMVrfCheck" /> - <ref bean="hubWithRgCheck" /> - </list> - </property> - <property name="preferenceRuleList"> - <list> - <ref bean="affinityLinkPref" /> - </list> - </property> - <property name="allocationRuleList"> - <list> - <ref bean="dbAllocationRule" /> - <ref bean="vrfAllocationRule" /> - <ref bean="servingSiteAllocationRule" /> - <ref bean="affinityAllocationRule" /> - </list> - </property> - </bean> - </list> - </entry> - </map> - </property> - </bean> - - <!-- Equipment Readers Configuration --> - - <bean id="vpePortReader" class="org.openecomp.sdnc.ra.reader.VpePortReader"> - <property name="vpePortDao" ref="vpePortDao" /> - </bean> - - <bean id="vnfReader" class="org.openecomp.sdnc.ra.reader.VnfReader"> - </bean> - - <bean id="aicSiteReader" class="org.openecomp.sdnc.ra.reader.AicSiteReader"> - </bean> - - <bean id="uplinkCircuitReader" class="org.openecomp.sdnc.ra.reader.UplinkCircuitReader"> - </bean> - - <!-- Equipment Checks Configuration --> - - <bean id="vlanSpeedCheck" class="org.openecomp.sdnc.ra.check.VlanSpeedCheck"> - </bean> - - <bean id="provStatusCheck" class="org.openecomp.sdnc.ra.check.ProvStatusCheck"> - </bean> - - <bean id="excludeVpeCheck" class="org.openecomp.sdnc.ra.check.ExcludeVpeCheck"> - </bean> - - <bean id="vpeLockCheck" class="org.openecomp.sdnc.ra.check.VpeLockCheck"> - <property name="vpeLockDao" ref="vpeLockDao" /> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <bean id="anyVrfPresentCheck" class="org.openecomp.sdnc.ra.check.AnyVrfPresentCheck"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <bean id="oneMVrfCheck" class="org.openecomp.sdnc.ra.check.OneMVrfCheck"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <bean id="hubWithRgCheck" class="org.openecomp.sdnc.ra.check.HubWithRgCheck"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <!-- Preference Rule Configuration --> - - <bean id="affinityLinkPref" class="org.openecomp.sdnc.ra.pref.AffinityLinkPref"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <!-- Resource Allocation Rule Configuration --> - - <bean id="dbAllocationRule" class="org.openecomp.sdnc.ra.alloc.DbAllocationRule"> - <property name="resourceRuleDao" ref="resourceRuleDao" /> - <property name="rangeRuleDao" ref="rangeRuleDao" /> - </bean> - - <bean id="vrfAllocationRule" class="org.openecomp.sdnc.ra.alloc.VrfAllocationRule"> - </bean> - - <bean id="servingSiteAllocationRule" class="org.openecomp.sdnc.ra.alloc.ServingSiteAllocationRule"> - </bean> - - <bean id="affinityAllocationRule" class="org.openecomp.sdnc.ra.alloc.AffinityAllocationRule"> - </bean> + <bean id="resourceJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceJdbcDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="allocationItemJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.AllocationItemJdbcDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="resourceLoadJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceLoadJdbcDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="resourceDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceDaoImpl"> + <property name="resourceJdbcDao" ref="resourceJdbcDao" /> + <property name="allocationItemJdbcDao" ref="allocationItemJdbcDao" /> + <property name="resourceLoadJdbcDao" ref="resourceLoadJdbcDao" /> + </bean> + + <bean id="resourceManager" class="org.openecomp.sdnc.rm.comp.ResourceManagerImpl"> + <property name="lockHelper" ref="lockHelper" /> + <property name="resourceDao" ref="resourceDao" /> + <property name="applicationId" value="SDNC" /> + <property name="lockTimeout" value="600" /> <!-- Seconds --> + </bean> + + <!-- Equipment DAO Configuration --> + + <bean id="serverDao" class="org.openecomp.sdnc.ra.equip.dao.ServerDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="vpePortDao" class="org.openecomp.sdnc.ra.equip.dao.VpePortDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="vplspePortDao" class="org.openecomp.sdnc.ra.equip.dao.VplspePortDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <!-- Rule DAO Configuration --> + + <bean id="parameterDao" class="org.openecomp.sdnc.ra.rule.dao.ParameterDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="maxPortSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxPortSpeedDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + <property name="speedUtil" ref="speedUtil" /> + </bean> + + <bean id="maxServerSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxServerSpeedDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + <property name="speedUtil" ref="speedUtil" /> + </bean> + + <bean id="resourceRuleDao" class="org.openecomp.sdnc.ra.rule.dao.ResourceRuleDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="rangeRuleDao" class="org.openecomp.sdnc.ra.rule.dao.RangeRuleDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="vpeLockDao" class="org.openecomp.sdnc.ra.rule.dao.VpeLockDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <!-- Service DAO Configuration --> + + <bean id="serviceResourceDao" class="org.openecomp.sdnc.ra.service.dao.ServiceResourceDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <!-- ResourceAllocator Configuration --> + + <bean id="allocationRequestBuilder" + class="org.openecomp.sdnc.ra.rule.comp.AllocationRequestBuilderImpl"> + <property name="resourceRuleDao" ref="resourceRuleDao" /> + <property name="rangeRuleDao" ref="rangeRuleDao" /> + </bean> + + <bean id="resourceAllocator" class="org.openecomp.sdnc.ra.ResourceAllocator"> + <property name="speedUtil" ref="speedUtil" /> + <property name="parameterDao" ref="parameterDao" /> + <property name="serverDao" ref="serverDao" /> + <property name="vpePortDao" ref="vpePortDao" /> + <property name="vplspePortDao" ref="vplspePortDao" /> + <property name="maxPortSpeedDao" ref="maxPortSpeedDao" /> + <property name="maxServerSpeedDao" ref="maxServerSpeedDao" /> + <property name="serviceResourceDao" ref="serviceResourceDao" /> + <property name="allocationRequestBuilder" ref="allocationRequestBuilder" /> + <property name="resourceManager" ref="resourceManager" /> + <property name="endPointAllocator" ref="endPointAllocator" /> + </bean> + + <!-- EndPointAllocator Configuration --> + + <bean id="endPointAllocator" class="org.openecomp.sdnc.ra.comp.EndPointAllocatorImpl"> + <property name="resourceManager" ref="resourceManager" /> + <property name="endPointAllocationDefinitionMap"> + <map> + <entry key="L3AVPN-PORT"> + <list> + <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> + <property name="serviceModel" value="L3AVPN-PORT" /> + <property name="endPointPosition" value="VPE-Cust" /> + <property name="equipmentReader" ref="vpePortReader" /> + <property name="equipmentCheckList"> + <list> + <ref bean="provStatusCheck" /> + <ref bean="excludeVpeCheck" /> + <ref bean="anyVrfPresentCheck" /> + </list> + </property> + <property name="preferenceRuleList"> + <list> + <ref bean="affinityLinkPref" /> + </list> + </property> + <property name="allocationRuleList"> + <list> + <ref bean="dbAllocationRule" /> + <ref bean="affinityAllocationRule" /> + </list> + </property> + </bean> + </list> + </entry> + <entry key="L3AVPN-EVC"> + <list> + <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> + <property name="serviceModel" value="L3AVPN-EVC" /> + <property name="endPointPosition" value="VPE-Cust" /> + <property name="equipmentReader" ref="vpePortReader" /> + <property name="equipmentCheckList"> + <list> + <ref bean="vlanSpeedCheck" /> + <ref bean="provStatusCheck" /> + <ref bean="excludeVpeCheck" /> + <ref bean="vpeLockCheck" /> + <ref bean="anyVrfPresentCheck" /> + <ref bean="oneMVrfCheck" /> + <ref bean="hubWithRgCheck" /> + </list> + </property> + <property name="preferenceRuleList"> + <list> + <ref bean="affinityLinkPref" /> + </list> + </property> + <property name="allocationRuleList"> + <list> + <ref bean="dbAllocationRule" /> + <ref bean="vrfAllocationRule" /> + <ref bean="servingSiteAllocationRule" /> + <ref bean="affinityAllocationRule" /> + </list> + </property> + </bean> + </list> + </entry> + </map> + </property> + </bean> + + <!-- Equipment Readers Configuration --> + + <bean id="vpePortReader" class="org.openecomp.sdnc.ra.reader.VpePortReader"> + <property name="vpePortDao" ref="vpePortDao" /> + </bean> + + <bean id="vnfReader" class="org.openecomp.sdnc.ra.reader.VnfReader"> + </bean> + + <bean id="aicSiteReader" class="org.openecomp.sdnc.ra.reader.AicSiteReader"> + </bean> + + <bean id="uplinkCircuitReader" class="org.openecomp.sdnc.ra.reader.UplinkCircuitReader"> + </bean> + + <!-- Equipment Checks Configuration --> + + <bean id="vlanSpeedCheck" class="org.openecomp.sdnc.ra.check.VlanSpeedCheck"> + </bean> + + <bean id="provStatusCheck" class="org.openecomp.sdnc.ra.check.ProvStatusCheck"> + </bean> + + <bean id="excludeVpeCheck" class="org.openecomp.sdnc.ra.check.ExcludeVpeCheck"> + </bean> + + <bean id="vpeLockCheck" class="org.openecomp.sdnc.ra.check.VpeLockCheck"> + <property name="vpeLockDao" ref="vpeLockDao" /> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <bean id="anyVrfPresentCheck" class="org.openecomp.sdnc.ra.check.AnyVrfPresentCheck"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <bean id="oneMVrfCheck" class="org.openecomp.sdnc.ra.check.OneMVrfCheck"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <bean id="hubWithRgCheck" class="org.openecomp.sdnc.ra.check.HubWithRgCheck"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <!-- Preference Rule Configuration --> + + <bean id="affinityLinkPref" class="org.openecomp.sdnc.ra.pref.AffinityLinkPref"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <!-- Resource Allocation Rule Configuration --> + + <bean id="dbAllocationRule" class="org.openecomp.sdnc.ra.alloc.DbAllocationRule"> + <property name="resourceRuleDao" ref="resourceRuleDao" /> + <property name="rangeRuleDao" ref="rangeRuleDao" /> + </bean> + + <bean id="vrfAllocationRule" class="org.openecomp.sdnc.ra.alloc.VrfAllocationRule"> + </bean> + + <bean id="servingSiteAllocationRule" class="org.openecomp.sdnc.ra.alloc.ServingSiteAllocationRule"> + </bean> + + <bean id="affinityAllocationRule" class="org.openecomp.sdnc.ra.alloc.AffinityAllocationRule"> + </bean> </beans> diff --git a/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-osgi-context.xml b/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-osgi-context.xml index bec30ce1..195e9a66 100644 --- a/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-osgi-context.xml +++ b/resource-assignment/provider/src/main/resources/META-INF/spring/resource-assignment-osgi-context.xml @@ -4,7 +4,7 @@ openECOMP : SDN-C ================================================================================ Copyright (C) 2017 ONAP Intellectual Property. All rights - reserved. + reserved. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,19 +21,19 @@ --> <beans:beans xmlns="http://www.springframework.org/schema/osgi" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" - xsi:schemaLocation="http://www.springframework.org/schema/osgi + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" + xsi:schemaLocation="http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - <reference id="dblib.dataSource"> - <interfaces> - <beans:value>javax.sql.DataSource</beans:value> - <beans:value>org.openecomp.sdnc.sli.resource.dblib.DbLibService</beans:value> - </interfaces> - </reference> + <reference id="dblib.dataSource"> + <interfaces> + <beans:value>javax.sql.DataSource</beans:value> + <beans:value>org.openecomp.sdnc.sli.resource.dblib.DbLibService</beans:value> + </interfaces> + </reference> - <service ref="resourceAllocator" interface="org.openecomp.sdnc.ra.ResourceAllocator" /> + <service ref="resourceAllocator" interface="org.openecomp.sdnc.ra.ResourceAllocator" /> </beans:beans> diff --git a/resource-assignment/provider/src/main/resources/sql/001_resource_rule_ddl.sql b/resource-assignment/provider/src/main/resources/sql/001_resource_rule_ddl.sql index ea60c62d..d39e2485 100644 --- a/resource-assignment/provider/src/main/resources/sql/001_resource_rule_ddl.sql +++ b/resource-assignment/provider/src/main/resources/sql/001_resource_rule_ddl.sql @@ -3,7 +3,7 @@ -- openECOMP : SDN-C -- ================================================================================ -- Copyright (C) 2017 ONAP Intellectual Property. All rights --- reserved. +-- reserved. -- ================================================================================ -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. @@ -20,13 +20,13 @@ --- CREATE TABLE resource_rule ( - resource_rule_id SERIAL PRIMARY KEY, - resource_name VARCHAR(50) NOT NULL, - end_point_position VARCHAR(50) NOT NULL, - service_expression VARCHAR(2000) NOT NULL, - equipment_level VARCHAR(50) NOT NULL, - equipment_expression VARCHAR(2000) NOT NULL, - allocation_expression VARCHAR(2000) NOT NULL, - soft_limit_expression VARCHAR(2000) NOT NULL, - hard_limit_expression VARCHAR(2000) NOT NULL + resource_rule_id SERIAL PRIMARY KEY, + resource_name VARCHAR(50) NOT NULL, + end_point_position VARCHAR(50) NOT NULL, + service_expression VARCHAR(2000) NOT NULL, + equipment_level VARCHAR(50) NOT NULL, + equipment_expression VARCHAR(2000) NOT NULL, + allocation_expression VARCHAR(2000) NOT NULL, + soft_limit_expression VARCHAR(2000) NOT NULL, + hard_limit_expression VARCHAR(2000) NOT NULL ); diff --git a/resource-assignment/provider/src/main/resources/sql/002_max_port_speed_ddl.sql b/resource-assignment/provider/src/main/resources/sql/002_max_port_speed_ddl.sql index 2aa66ac8..d752eb3a 100644 --- a/resource-assignment/provider/src/main/resources/sql/002_max_port_speed_ddl.sql +++ b/resource-assignment/provider/src/main/resources/sql/002_max_port_speed_ddl.sql @@ -3,7 +3,7 @@ -- openECOMP : SDN-C -- ================================================================================ -- Copyright (C) 2017 ONAP Intellectual Property. All rights --- reserved. +-- reserved. -- ================================================================================ -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. @@ -20,10 +20,10 @@ --- CREATE TABLE max_port_speed ( - max_port_speed_id SERIAL PRIMARY KEY, - image_file_name VARCHAR(50) NOT NULL, - end_point_position VARCHAR(50) NOT NULL, - interface_name VARCHAR(100) NOT NULL, - max_speed BIGINT NOT NULL, - unit VARCHAR(10) NOT NULL + max_port_speed_id SERIAL PRIMARY KEY, + image_file_name VARCHAR(50) NOT NULL, + end_point_position VARCHAR(50) NOT NULL, + interface_name VARCHAR(100) NOT NULL, + max_speed BIGINT NOT NULL, + unit VARCHAR(10) NOT NULL ); diff --git a/resource-assignment/provider/src/main/resources/sql/003_max_server_speed_ddl.sql b/resource-assignment/provider/src/main/resources/sql/003_max_server_speed_ddl.sql index 671117e7..b33c32a0 100644 --- a/resource-assignment/provider/src/main/resources/sql/003_max_server_speed_ddl.sql +++ b/resource-assignment/provider/src/main/resources/sql/003_max_server_speed_ddl.sql @@ -3,7 +3,7 @@ -- openECOMP : SDN-C -- ================================================================================ -- Copyright (C) 2017 ONAP Intellectual Property. All rights --- reserved. +-- reserved. -- ================================================================================ -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. @@ -20,9 +20,9 @@ --- CREATE TABLE max_server_speed ( - max_server_speed_id SERIAL PRIMARY KEY, - server_model VARCHAR(50) NOT NULL, - evc_count SMALLINT NOT NULL, - max_speed BIGINT NOT NULL, - unit VARCHAR(10) NOT NULL + max_server_speed_id SERIAL PRIMARY KEY, + server_model VARCHAR(50) NOT NULL, + evc_count SMALLINT NOT NULL, + max_speed BIGINT NOT NULL, + unit VARCHAR(10) NOT NULL ); diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/DataSetup.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/DataSetup.java index f74eeee5..46ac760a 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/DataSetup.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/DataSetup.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,234 +28,234 @@ import jtest.util.org.openecomp.sdnc.ra.TestTable; public class DataSetup { - private TestDb testDb; - - private TestTable vpePool = null; - private TestTable vplspePool = null; - private TestTable pserver = null; - private TestTable serviceResource = null; - private TestTable resource = null; - private TestTable allocationItem = null; - - private static final String[] VPE_POOL_COLUMNS = { - "vpe_name", "ipv4_oam_address", "loopback0_ipv4_address", "provisioning_status", "aic_site_id", - "availability_zone", "vlan_id_outer", "vendor", "physical_intf_name", "physical_intf_speed", - "physical_intf_units", "vpe_uuid", "vpe_id", "image_filename" }; - - private static final String[] VPLSPE_POOL_COLUMNS = { - "vplspe_name", "aic_site_id", "availability_zone", "physical_intf_name", "physical_intf_speed", - "physical_intf_units", "loopback0_ipv4_address", "vlan_id_outer", "vplspe_uuid", "image_filename", - "provisioning_status", "vendor" }; - - private static final String[] PSERVER_COLUMNS = { - "hostname", "ptnii_equip_name", "number_of_cpus", "disk_in_gigabytes", "ram_in_megabytes", "equip_type", - "equip_vendor", "equip_model", "fqdn", "pserver_selflink", "ipv4_oam_address", "serial_number", - "pserver_id", "internet_topology", "aic_site_id", "in_maint", "pserver_name2", "purpose" }; - - private static final String[] SERVICE_RESOURCE_COLUMNS = { - "service_instance_id", "service_status", "service_change_number", "resource_set_id", "resource_union_id" }; - - private static final String[] RESOURCE_COLUMNS = { "asset_id", "resource_name", "resource_type", "lt_used" }; - - private static final String[] ALLOCATION_ITEM_COLUMNS = { - "resource_id", "application_id", "resource_set_id", "resource_union_id", "resource_share_group_list", - "lt_used", "allocation_time" }; - - private void initTables() { - if (vpePool == null) - vpePool = testDb.table("VPE_POOL", "vpe_name", VPE_POOL_COLUMNS); - if (vplspePool == null) - vplspePool = testDb.table("VPLSPE_POOL", "vplspe_name", VPLSPE_POOL_COLUMNS); - if (pserver == null) - pserver = testDb.table("PSERVER", "hostname", PSERVER_COLUMNS); - if (serviceResource == null) - serviceResource = testDb.table("SERVICE_RESOURCE", "service_resource_id", SERVICE_RESOURCE_COLUMNS); - if (resource == null) - resource = testDb.table("RESOURCE", "resource_id", RESOURCE_COLUMNS); - if (allocationItem == null) - allocationItem = testDb.table("ALLOCATION_ITEM", "allocation_item_id", ALLOCATION_ITEM_COLUMNS); - } - - public void cleanup() { - initTables(); - vpePool.delete("true"); - vplspePool.delete("true"); - pserver.delete("true"); - serviceResource.delete("true"); - allocationItem.delete("true"); - resource.delete("true"); - } - - public void setupVpePort( - String aicSiteId, - String vpeId, - String interfaceName, - String provStatus, - String imageFileName) { - initTables(); - vpePool.add(vpeId, "127.0.0.1", "107.134.152.139", provStatus, aicSiteId, "mtanj-esx-az01", "3501", - "JUNIPER", interfaceName, "1", "GBPS", "vpe002", "VPESAT-auttx200me6", imageFileName); - } - - public void setupVplspePort( - String aicSiteId, - String vplspeId, - String interfaceName, - String provStatus, - String imageFileName) { - initTables(); - vplspePool.add(vplspeId, aicSiteId, "mtanj-esx-az01", interfaceName, "100", "GBPS", "192.168.119.32", "3501", - "vpls002", imageFileName, provStatus, "JUNIPER"); - } - - public void setupPserver(String hostname, String aicSiteId) { - initTables(); - pserver.add(hostname, hostname + "srv1", 4, 1000, 16000, "equip_type", "equip_vendor", "equip_model", "fqdn", - "pserver_selflink", "123.123.123.123", "serial_number", "pserver_id", "internet_topology", aicSiteId, - "N", hostname, "purpose"); - } - - public void setupService( - String serviceInstanceId, - String status, - int changeNumber, - long speedKbps, - String vpeId, - String vplspeId, - String serverId) { - initTables(); - - String resourceSetId = serviceInstanceId + "/" + changeNumber; - String resourceUnionId = serviceInstanceId; - - serviceResource.add(serviceInstanceId, status, changeNumber, resourceSetId, resourceUnionId); - - Long rid = resource.getId("asset_id = '" + vpeId + "/ae0' AND resource_name = 'Bandwidth'"); - if (rid == null) { - resource.add(vpeId + "/ae0", "Bandwidth", "Limit", 1); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, speedKbps, new Date()); - - rid = resource.getId("asset_id = '" + vplspeId + "' AND resource_name = 'Bandwidth'"); - if (rid == null) { - resource.add(vplspeId, "Bandwidth", "Limit", 1); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, speedKbps, new Date()); - - rid = resource.getId("asset_id = '" + serverId + "' AND resource_name = 'Bandwidth'"); - if (rid == null) { - resource.add(serverId, "Bandwidth", "Limit", 1); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, speedKbps, new Date()); - - rid = resource.getId("asset_id = '" + serverId + "' AND resource_name = 'Connection'"); - if (rid == null) { - resource.add(serverId, "Connection", "Limit", 1); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, 1, new Date()); - } - - public boolean serviceNotInDb(String serviceInstanceId, String status, Integer changeNumber) { - String where = "service_instance_id = '" + serviceInstanceId + "'"; - if (status != null) - where += " AND service_status = '" + status + "'"; - if (changeNumber != null) - where += " AND service_change_number = " + changeNumber; - - if (serviceResource.exists(where)) - return false; - - where = "resource_union_id = '" + serviceInstanceId + "'"; - if (changeNumber != null) - where += " AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "'"; - - if (allocationItem.exists(where)) - return false; - - return true; - } - - public boolean serviceCorrectInDb(String serviceInstanceId, String status, int changeNumber, long speedKbps) { - String where = "service_instance_id = '" + serviceInstanceId + "' AND service_status = '" + status + - "' AND service_change_number = " + changeNumber; - if (!serviceResource.exists(where)) - return false; - - where = "resource_union_id = '" + serviceInstanceId + "' AND resource_set_id = '" + serviceInstanceId + "/" + - changeNumber + "' AND lt_used = " + speedKbps; - if (!allocationItem.exists(where)) - return false; - - return true; - } - - public boolean serviceCorrectInDb( - String vpeId, - String aicSiteId, - String serviceInstanceId, - String status, - int changeNumber, - long speedKbps) { - - String where = "service_instance_id = '" + serviceInstanceId + "' AND service_status = '" + status + - "' AND service_change_number = " + changeNumber; - if (!serviceResource.exists(where)) - return false; - - Long vpebwrid = resource.getId("asset_id = '" + vpeId + "/ae0' AND resource_name = 'Bandwidth'"); - if (vpebwrid == null) - return false; - - where = "resource_id = " + vpebwrid + " AND resource_union_id = '" + serviceInstanceId + - "' AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "' AND lt_used = " + speedKbps; - if (!allocationItem.exists(where)) - return false; - - Long srvbwrid = resource.getId("asset_id = '" + aicSiteId + "/Server1' AND resource_name = 'Bandwidth'"); - if (srvbwrid == null) - return false; - - where = "resource_id = " + srvbwrid + " AND resource_union_id = '" + serviceInstanceId + - "' AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "' AND lt_used = " + speedKbps; - if (!allocationItem.exists(where)) - return false; - - Long srvconrid = resource.getId("asset_id = '" + aicSiteId + "/Server1' AND resource_name = 'Connection'"); - if (srvconrid == null) - return false; - - where = "resource_id = " + srvconrid + " AND resource_union_id = '" + serviceInstanceId + - "' AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "' AND lt_used = 1"; - if (!allocationItem.exists(where)) - return false; - - return true; - } - - public boolean serviceCorrectInDb( - String serviceInstanceId, - String endPointPosition, - String status, - int changeNumber, - long speedKbps) { - String where = "service_instance_id = '" + serviceInstanceId + "' AND service_status = '" + status + - "' AND service_change_number = " + changeNumber; - if (!serviceResource.exists(where)) - return false; - - where = "resource_union_id = '" + serviceInstanceId + "/" + endPointPosition + "' AND resource_set_id = '" + - serviceInstanceId + "/" + endPointPosition + "/" + changeNumber + "' AND lt_used = " + speedKbps; - if (!allocationItem.exists(where)) - return false; - - return true; - } - - public void setTestDb(TestDb testDb) { - this.testDb = testDb; - } + private TestDb testDb; + + private TestTable vpePool = null; + private TestTable vplspePool = null; + private TestTable pserver = null; + private TestTable serviceResource = null; + private TestTable resource = null; + private TestTable allocationItem = null; + + private static final String[] VPE_POOL_COLUMNS = { + "vpe_name", "ipv4_oam_address", "loopback0_ipv4_address", "provisioning_status", "aic_site_id", + "availability_zone", "vlan_id_outer", "vendor", "physical_intf_name", "physical_intf_speed", + "physical_intf_units", "vpe_uuid", "vpe_id", "image_filename" }; + + private static final String[] VPLSPE_POOL_COLUMNS = { + "vplspe_name", "aic_site_id", "availability_zone", "physical_intf_name", "physical_intf_speed", + "physical_intf_units", "loopback0_ipv4_address", "vlan_id_outer", "vplspe_uuid", "image_filename", + "provisioning_status", "vendor" }; + + private static final String[] PSERVER_COLUMNS = { + "hostname", "ptnii_equip_name", "number_of_cpus", "disk_in_gigabytes", "ram_in_megabytes", "equip_type", + "equip_vendor", "equip_model", "fqdn", "pserver_selflink", "ipv4_oam_address", "serial_number", + "pserver_id", "internet_topology", "aic_site_id", "in_maint", "pserver_name2", "purpose" }; + + private static final String[] SERVICE_RESOURCE_COLUMNS = { + "service_instance_id", "service_status", "service_change_number", "resource_set_id", "resource_union_id" }; + + private static final String[] RESOURCE_COLUMNS = { "asset_id", "resource_name", "resource_type", "lt_used" }; + + private static final String[] ALLOCATION_ITEM_COLUMNS = { + "resource_id", "application_id", "resource_set_id", "resource_union_id", "resource_share_group_list", + "lt_used", "allocation_time" }; + + private void initTables() { + if (vpePool == null) + vpePool = testDb.table("VPE_POOL", "vpe_name", VPE_POOL_COLUMNS); + if (vplspePool == null) + vplspePool = testDb.table("VPLSPE_POOL", "vplspe_name", VPLSPE_POOL_COLUMNS); + if (pserver == null) + pserver = testDb.table("PSERVER", "hostname", PSERVER_COLUMNS); + if (serviceResource == null) + serviceResource = testDb.table("SERVICE_RESOURCE", "service_resource_id", SERVICE_RESOURCE_COLUMNS); + if (resource == null) + resource = testDb.table("RESOURCE", "resource_id", RESOURCE_COLUMNS); + if (allocationItem == null) + allocationItem = testDb.table("ALLOCATION_ITEM", "allocation_item_id", ALLOCATION_ITEM_COLUMNS); + } + + public void cleanup() { + initTables(); + vpePool.delete("true"); + vplspePool.delete("true"); + pserver.delete("true"); + serviceResource.delete("true"); + allocationItem.delete("true"); + resource.delete("true"); + } + + public void setupVpePort( + String aicSiteId, + String vpeId, + String interfaceName, + String provStatus, + String imageFileName) { + initTables(); + vpePool.add(vpeId, "127.0.0.1", "107.134.152.139", provStatus, aicSiteId, "mtanj-esx-az01", "3501", + "JUNIPER", interfaceName, "1", "GBPS", "vpe002", "VPESAT-auttx200me6", imageFileName); + } + + public void setupVplspePort( + String aicSiteId, + String vplspeId, + String interfaceName, + String provStatus, + String imageFileName) { + initTables(); + vplspePool.add(vplspeId, aicSiteId, "mtanj-esx-az01", interfaceName, "100", "GBPS", "192.168.119.32", "3501", + "vpls002", imageFileName, provStatus, "JUNIPER"); + } + + public void setupPserver(String hostname, String aicSiteId) { + initTables(); + pserver.add(hostname, hostname + "srv1", 4, 1000, 16000, "equip_type", "equip_vendor", "equip_model", "fqdn", + "pserver_selflink", "123.123.123.123", "serial_number", "pserver_id", "internet_topology", aicSiteId, + "N", hostname, "purpose"); + } + + public void setupService( + String serviceInstanceId, + String status, + int changeNumber, + long speedKbps, + String vpeId, + String vplspeId, + String serverId) { + initTables(); + + String resourceSetId = serviceInstanceId + "/" + changeNumber; + String resourceUnionId = serviceInstanceId; + + serviceResource.add(serviceInstanceId, status, changeNumber, resourceSetId, resourceUnionId); + + Long rid = resource.getId("asset_id = '" + vpeId + "/ae0' AND resource_name = 'Bandwidth'"); + if (rid == null) { + resource.add(vpeId + "/ae0", "Bandwidth", "Limit", 1); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, speedKbps, new Date()); + + rid = resource.getId("asset_id = '" + vplspeId + "' AND resource_name = 'Bandwidth'"); + if (rid == null) { + resource.add(vplspeId, "Bandwidth", "Limit", 1); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, speedKbps, new Date()); + + rid = resource.getId("asset_id = '" + serverId + "' AND resource_name = 'Bandwidth'"); + if (rid == null) { + resource.add(serverId, "Bandwidth", "Limit", 1); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, speedKbps, new Date()); + + rid = resource.getId("asset_id = '" + serverId + "' AND resource_name = 'Connection'"); + if (rid == null) { + resource.add(serverId, "Connection", "Limit", 1); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, 1, new Date()); + } + + public boolean serviceNotInDb(String serviceInstanceId, String status, Integer changeNumber) { + String where = "service_instance_id = '" + serviceInstanceId + "'"; + if (status != null) + where += " AND service_status = '" + status + "'"; + if (changeNumber != null) + where += " AND service_change_number = " + changeNumber; + + if (serviceResource.exists(where)) + return false; + + where = "resource_union_id = '" + serviceInstanceId + "'"; + if (changeNumber != null) + where += " AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "'"; + + if (allocationItem.exists(where)) + return false; + + return true; + } + + public boolean serviceCorrectInDb(String serviceInstanceId, String status, int changeNumber, long speedKbps) { + String where = "service_instance_id = '" + serviceInstanceId + "' AND service_status = '" + status + + "' AND service_change_number = " + changeNumber; + if (!serviceResource.exists(where)) + return false; + + where = "resource_union_id = '" + serviceInstanceId + "' AND resource_set_id = '" + serviceInstanceId + "/" + + changeNumber + "' AND lt_used = " + speedKbps; + if (!allocationItem.exists(where)) + return false; + + return true; + } + + public boolean serviceCorrectInDb( + String vpeId, + String aicSiteId, + String serviceInstanceId, + String status, + int changeNumber, + long speedKbps) { + + String where = "service_instance_id = '" + serviceInstanceId + "' AND service_status = '" + status + + "' AND service_change_number = " + changeNumber; + if (!serviceResource.exists(where)) + return false; + + Long vpebwrid = resource.getId("asset_id = '" + vpeId + "/ae0' AND resource_name = 'Bandwidth'"); + if (vpebwrid == null) + return false; + + where = "resource_id = " + vpebwrid + " AND resource_union_id = '" + serviceInstanceId + + "' AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "' AND lt_used = " + speedKbps; + if (!allocationItem.exists(where)) + return false; + + Long srvbwrid = resource.getId("asset_id = '" + aicSiteId + "/Server1' AND resource_name = 'Bandwidth'"); + if (srvbwrid == null) + return false; + + where = "resource_id = " + srvbwrid + " AND resource_union_id = '" + serviceInstanceId + + "' AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "' AND lt_used = " + speedKbps; + if (!allocationItem.exists(where)) + return false; + + Long srvconrid = resource.getId("asset_id = '" + aicSiteId + "/Server1' AND resource_name = 'Connection'"); + if (srvconrid == null) + return false; + + where = "resource_id = " + srvconrid + " AND resource_union_id = '" + serviceInstanceId + + "' AND resource_set_id = '" + serviceInstanceId + "/" + changeNumber + "' AND lt_used = 1"; + if (!allocationItem.exists(where)) + return false; + + return true; + } + + public boolean serviceCorrectInDb( + String serviceInstanceId, + String endPointPosition, + String status, + int changeNumber, + long speedKbps) { + String where = "service_instance_id = '" + serviceInstanceId + "' AND service_status = '" + status + + "' AND service_change_number = " + changeNumber; + if (!serviceResource.exists(where)) + return false; + + where = "resource_union_id = '" + serviceInstanceId + "/" + endPointPosition + "' AND resource_set_id = '" + + serviceInstanceId + "/" + endPointPosition + "/" + changeNumber + "' AND lt_used = " + speedKbps; + if (!allocationItem.exists(where)) + return false; + + return true; + } + + public void setTestDb(TestDb testDb) { + this.testDb = testDb; + } } diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestIsAvailable.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestIsAvailable.java index 7d57eba3..2c25c3e1 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestIsAvailable.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestIsAvailable.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,384 +41,384 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestIsAvailable { - private static final Logger log = LoggerFactory.getLogger(TestIsAvailable.class); + private static final Logger log = LoggerFactory.getLogger(TestIsAvailable.class); - @Autowired(required = true) - private ResourceAllocator resourceAllocator; + @Autowired(required = true) + private ResourceAllocator resourceAllocator; - @Autowired(required = true) - private DataSetup dataSetup; + @Autowired(required = true) + private DataSetup dataSetup; - @Test - public void test001() throws Exception { - String t = "001"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test successful response - all resources available"); + @Test + public void test001() throws Exception { + String t = "001"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test successful response - all resources available"); - String service1 = "isAvailable" + t + "/service1"; + String service1 = "isAvailable" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test002() throws Exception { - String t = "002"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - request very big number that is above the limits"); + @Test + public void test002() throws Exception { + String t = "002"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - request very big number that is above the limits"); - String service1 = "isAvailable" + t + "/service1"; + String service1 = "isAvailable" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("960000")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("960000")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test003() throws Exception { - String t = "003"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - PROV check for VPE"); + @Test + public void test003() throws Exception { + String t = "003"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - PROV check for VPE"); - String service1 = "isAvailable" + t + "/service1"; + String service1 = "isAvailable" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "---", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "---", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("0")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("0")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test004() throws Exception { - String t = "004"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - PROV check for VPLSPE"); - - String service1 = "isAvailable" + t + "/service1"; + @Test + public void test004() throws Exception { + String t = "004"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - PROV check for VPLSPE"); + + String service1 = "isAvailable" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "---", null); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("0")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test005() throws Exception { - String t = "005"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - VPE not found in DB"); - - String service1 = "isAvailable" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("0")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test006() throws Exception { - String t = "006"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - VPLSPE not found in DB"); - - String service1 = "isAvailable" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("0")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test007() throws Exception { - String t = "007"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - test max available speed calculation"); - - String service1 = "isAvailable" + t + "/service1"; - String existingService1 = "isAvailable" + t + "/existing-service1"; - String existingService2 = "isAvailable" + t + "/existing-service2"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv127", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(existingService1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", - "MTSNJA4LCP1/Server1"); - dataSetup.setupService(existingService2, "Active", 3, 100000, "mtanjrsv127", "mtsnj303vr1", - "MTSNJA4LCP1/Server1"); - dataSetup.setupService(existingService2, "Pending", 4, 500000, "mtanjrsv127", "mtsnj303vr1", - "MTSNJA4LCP1/Server1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("260000")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test008() throws Exception { - String t = "008"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test capacity not found - test server limit depending on number of connections"); - - String service1 = "isAvailable" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv127", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - for (int i = 1; i <= 13; i++) - dataSetup.setupService("isAvailable" + t + "/existing-service" + i, "Active", 2, 20000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - - String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); - String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); - log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(maxAvailableSpeed.equals("340000")); - Assert.assertTrue(speedUnit.equals("kbps")); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test009() throws Exception { - String t = "009"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test successful response - no service instance id in input - all resources available"); - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - } - - @Test - public void test010() throws Exception { - String t = "010"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test input validations - no aic-site-id in input"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - - try { - resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals( - "tmp.resource-allocator.aic-site-id is required in ResourceAllocator")); - return; - } - Assert.fail("SvcLogicException expected"); - } - - @Test - public void test011() throws Exception { - String t = "011"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test input validations - no speed in input"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - try { - resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals("tmp.resource-allocator.speed is required in ResourceAllocator")); - return; - } - Assert.fail("SvcLogicException expected"); - } - - @Test - public void test012() throws Exception { - String t = "012"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test input validations - speed not a number in input"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.speed", "nnnnn"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - try { - resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals("Invalid tmp.resource-allocator.speed. Must be a number.")); - return; - } - Assert.fail("SvcLogicException expected"); - } - - @Test - public void test013() throws Exception { - String t = "013"; - log.info("============== isAvailable " + t + " ================================"); - log.info("=== Test input validations - speed-unit missing in input"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - try { - resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals( - "tmp.resource-allocator.speed-unit is required in ResourceAllocator")); - return; - } - Assert.fail("SvcLogicException expected"); - } + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "---", null); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("0")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test005() throws Exception { + String t = "005"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - VPE not found in DB"); + + String service1 = "isAvailable" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("0")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test006() throws Exception { + String t = "006"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - VPLSPE not found in DB"); + + String service1 = "isAvailable" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("0")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test007() throws Exception { + String t = "007"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - test max available speed calculation"); + + String service1 = "isAvailable" + t + "/service1"; + String existingService1 = "isAvailable" + t + "/existing-service1"; + String existingService2 = "isAvailable" + t + "/existing-service2"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv127", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(existingService1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", + "MTSNJA4LCP1/Server1"); + dataSetup.setupService(existingService2, "Active", 3, 100000, "mtanjrsv127", "mtsnj303vr1", + "MTSNJA4LCP1/Server1"); + dataSetup.setupService(existingService2, "Pending", 4, 500000, "mtanjrsv127", "mtsnj303vr1", + "MTSNJA4LCP1/Server1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("260000")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test008() throws Exception { + String t = "008"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test capacity not found - test server limit depending on number of connections"); + + String service1 = "isAvailable" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv127", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + for (int i = 1; i <= 13; i++) + dataSetup.setupService("isAvailable" + t + "/existing-service" + i, "Active", 2, 20000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + + String maxAvailableSpeed = ctx.getAttribute("tmp.resource-allocator-output.max-available-speed"); + String speedUnit = ctx.getAttribute("tmp.resource-allocator-output.speed-unit"); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + maxAvailableSpeed); + log.info(" tmp.resource-allocator-output.speed-unit: " + speedUnit); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(maxAvailableSpeed.equals("340000")); + Assert.assertTrue(speedUnit.equals("kbps")); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test009() throws Exception { + String t = "009"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test successful response - no service instance id in input - all resources available"); + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + } + + @Test + public void test010() throws Exception { + String t = "010"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test input validations - no aic-site-id in input"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + + try { + resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals( + "tmp.resource-allocator.aic-site-id is required in ResourceAllocator")); + return; + } + Assert.fail("SvcLogicException expected"); + } + + @Test + public void test011() throws Exception { + String t = "011"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test input validations - no speed in input"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + try { + resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals("tmp.resource-allocator.speed is required in ResourceAllocator")); + return; + } + Assert.fail("SvcLogicException expected"); + } + + @Test + public void test012() throws Exception { + String t = "012"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test input validations - speed not a number in input"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.speed", "nnnnn"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + try { + resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals("Invalid tmp.resource-allocator.speed. Must be a number.")); + return; + } + Assert.fail("SvcLogicException expected"); + } + + @Test + public void test013() throws Exception { + String t = "013"; + log.info("============== isAvailable " + t + " ================================"); + log.info("=== Test input validations - speed-unit missing in input"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + try { + resourceAllocator.isAvailable("NetworkCapacity", null, null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals( + "tmp.resource-allocator.speed-unit is required in ResourceAllocator")); + return; + } + Assert.fail("SvcLogicException expected"); + } } diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestQuery.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestQuery.java index e69003a3..0d287f2b 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestQuery.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestQuery.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,46 +40,46 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestQuery { - private static final Logger log = LoggerFactory.getLogger(TestQuery.class); + private static final Logger log = LoggerFactory.getLogger(TestQuery.class); - @Autowired(required = true) - private ResourceAllocator resourceAllocator; + @Autowired(required = true) + private ResourceAllocator resourceAllocator; - @Autowired(required = true) - private DataSetup dataSetup; + @Autowired(required = true) + private DataSetup dataSetup; - @Test - public void test001() throws Exception { - String t = "001"; - log.info("============== query " + t + " ================================"); - log.info("=== Test reading assigned resources (subinterface-id, vlan-id-inner)"); + @Test + public void test001() throws Exception { + String t = "001"; + log.info("============== query " + t + " ================================"); + log.info("=== Test reading assigned resources (subinterface-id, vlan-id-inner)"); - String service1 = "ICOREPVC" + t + "-1"; + String service1 = "ICOREPVC" + t + "-1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-model", "L3AVPN-EVC"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - ctx.setAttribute("tmp.resource-allocator.vpn-id", "123"); - ctx.setAttribute("tmp.resource-allocator.vrf-required", "false"); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-model", "L3AVPN-EVC"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + ctx.setAttribute("tmp.resource-allocator.vpn-id", "123"); + ctx.setAttribute("tmp.resource-allocator.vrf-required", "false"); - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "VPE-Cust", "Pending", 1, 300000)); + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "VPE-Cust", "Pending", 1, 300000)); - st = resourceAllocator.query("NetworkCapacity", true, null, service1, "end-point", null, ctx); + st = resourceAllocator.query("NetworkCapacity", true, null, service1, "end-point", null, ctx); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertEquals(ctx.getAttribute("end-point.subinterface-id"), "100"); - Assert.assertEquals(ctx.getAttribute("end-point.vlan-id-inner"), "2"); - Assert.assertEquals(ctx.getAttribute("end-point.vpe-name"), "mtanjrsv126"); - Assert.assertEquals(ctx.getAttribute("end-point.affinity-link"), "1"); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertEquals(ctx.getAttribute("end-point.subinterface-id"), "100"); + Assert.assertEquals(ctx.getAttribute("end-point.vlan-id-inner"), "2"); + Assert.assertEquals(ctx.getAttribute("end-point.vpe-name"), "mtanjrsv126"); + Assert.assertEquals(ctx.getAttribute("end-point.affinity-link"), "1"); + } } diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestRelease.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestRelease.java index f2ee50fc..45bd047a 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestRelease.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestRelease.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,390 +41,390 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestRelease { - private static final Logger log = LoggerFactory.getLogger(TestRelease.class); + private static final Logger log = LoggerFactory.getLogger(TestRelease.class); - @Autowired(required = true) - private ResourceAllocator resourceAllocator; + @Autowired(required = true) + private ResourceAllocator resourceAllocator; - @Autowired(required = true) - private DataSetup dataSetup; + @Autowired(required = true) + private DataSetup dataSetup; - @Test - public void test001() throws Exception { - String t = "001"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - cancel - new start"); + @Test + public void test001() throws Exception { + String t = "001"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - cancel - new start"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 2, 200000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test002() throws Exception { - String t = "002"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - cancel - change"); + @Test + public void test002() throws Exception { + String t = "002"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - cancel - change"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 3, 400000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 3, 400000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); + } - @Test - public void test003() throws Exception { - String t = "003"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - cancel - active there, but no pending - should do nothing and return success"); + @Test + public void test003() throws Exception { + String t = "003"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - cancel - active there, but no pending - should do nothing and return success"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + } - @Test - public void test004() throws Exception { - String t = "004"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - cancel - nothing in DB - should return success"); + @Test + public void test004() throws Exception { + String t = "004"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - cancel - nothing in DB - should return success"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); + dataSetup.cleanup(); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test005() throws Exception { - String t = "005"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - activate - new start"); + @Test + public void test005() throws Exception { + String t = "005"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - activate - new start"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 2, 200000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + } - @Test - public void test006() throws Exception { - String t = "006"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - actovate - change"); + @Test + public void test006() throws Exception { + String t = "006"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - actovate - change"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 3, 400000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 3, 400000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 3, 400000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 2)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 3, 400000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 2)); + } - @Test - public void test007() throws Exception { - String t = "007"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - activate - active there, but no pending - should do nothing and return success"); + @Test + public void test007() throws Exception { + String t = "007"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - activate - active there, but no pending - should do nothing and return success"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + } - @Test - public void test008() throws Exception { - String t = "008"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - activate - nothing in DB - should return success"); + @Test + public void test008() throws Exception { + String t = "008"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - activate - nothing in DB - should return success"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); + dataSetup.cleanup(); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Activate"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test009() throws Exception { - String t = "009"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - disconnect - only pending in DB"); + @Test + public void test009() throws Exception { + String t = "009"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - disconnect - only pending in DB"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 2, 200000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test010() throws Exception { - String t = "010"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - disconnect - only active in DB"); + @Test + public void test010() throws Exception { + String t = "010"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - disconnect - only active in DB"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test011() throws Exception { - String t = "011"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - disconnect - both active and pending in DB"); + @Test + public void test011() throws Exception { + String t = "011"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - disconnect - both active and pending in DB"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 3, 400000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "Pending", 3, 400000)); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test012() throws Exception { - String t = "012"; - log.info("============== release " + t + " ================================"); - log.info("=== Test release - disconnect - nothing in DB - should return success"); + @Test + public void test012() throws Exception { + String t = "012"; + log.info("============== release " + t + " ================================"); + log.info("=== Test release - disconnect - nothing in DB - should return success"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - dataSetup.cleanup(); + dataSetup.cleanup(); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Disconnect"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); + QueryStatus st = resourceAllocator.release("NetworkCapacity", null, ctx); - log.info("Result: " + st); + log.info("Result: " + st); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } - @Test - public void test013() throws Exception { - String t = "013"; - log.info("============== release " + t + " ================================"); - log.info("=== Test input validations - request-type missing in input"); + @Test + public void test013() throws Exception { + String t = "013"; + log.info("============== release " + t + " ================================"); + log.info("=== Test input validations - request-type missing in input"); - String service1 = "release" + t + "/service1"; + String service1 = "release" + t + "/service1"; - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - try { - resourceAllocator.release("NetworkCapacity", null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals( - "tmp.resource-allocator.request-type is required in ResourceAllocator")); - return; - } - Assert.fail("SvcLogicException expected"); - } - - @Test - public void test014() throws Exception { - String t = "014"; - log.info("============== release " + t + " ================================"); - log.info("=== Test input validations - invalid request-type in input"); + try { + resourceAllocator.release("NetworkCapacity", null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals( + "tmp.resource-allocator.request-type is required in ResourceAllocator")); + return; + } + Assert.fail("SvcLogicException expected"); + } + + @Test + public void test014() throws Exception { + String t = "014"; + log.info("============== release " + t + " ================================"); + log.info("=== Test input validations - invalid request-type in input"); - String service1 = "release" + t + "/service1"; - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "xxxxx"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - - try { - resourceAllocator.release("NetworkCapacity", null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals( - "Invalid tmp.resource-allocator.request-type: xxxxx. Supported values are Cancel, Activate, Disconnect.")); - return; - } - Assert.fail("SvcLogicException expected"); - } - - @Test - public void test015() throws Exception { - String t = "015"; - log.info("============== release " + t + " ================================"); - log.info("=== Test input validations - missing service-instance-id in input"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); - - try { - resourceAllocator.release("NetworkCapacity", null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals( - "tmp.resource-allocator.service-instance-id is required in ResourceAllocator")); - return; - } - Assert.fail("SvcLogicException expected"); - } + String service1 = "release" + t + "/service1"; + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "xxxxx"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + + try { + resourceAllocator.release("NetworkCapacity", null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals( + "Invalid tmp.resource-allocator.request-type: xxxxx. Supported values are Cancel, Activate, Disconnect.")); + return; + } + Assert.fail("SvcLogicException expected"); + } + + @Test + public void test015() throws Exception { + String t = "015"; + log.info("============== release " + t + " ================================"); + log.info("=== Test input validations - missing service-instance-id in input"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Cancel"); + + try { + resourceAllocator.release("NetworkCapacity", null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals( + "tmp.resource-allocator.service-instance-id is required in ResourceAllocator")); + return; + } + Assert.fail("SvcLogicException expected"); + } } diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve.java index 08c67358..1dff3589 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,641 +41,641 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestReserve { - private static final Logger log = LoggerFactory.getLogger(TestReserve.class); + private static final Logger log = LoggerFactory.getLogger(TestReserve.class); - @Autowired(required = true) - private ResourceAllocator resourceAllocator; + @Autowired(required = true) + private ResourceAllocator resourceAllocator; - @Autowired(required = true) - private DataSetup dataSetup; - - @Test - public void test001() throws Exception { - String t = "001"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test successful response - new start - all resources available"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupPserver("server1", "MTSNJA4LCP1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 300000)); - } - - @Test - public void test002() throws Exception { - String t = "002"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test successful response - new start supp - all resources available"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 200000)); - - SvcLogicContext ctx = new SvcLogicContext(); - // ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - Default is New - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "400"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 2)); - } - - @Test - public void test003() throws Exception { - String t = "003"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test successful response - change - all resources available"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "400"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); - } - - @Test - public void test004() throws Exception { - String t = "004"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test successful response - change supp - all resources available"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "500"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 4, 500000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); - } - - @Test - public void test005() throws Exception { - String t = "005"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test successful response - change - check that hard limits are applied, not soft for change"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "1200000"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "kbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 1200000)); - } - - @Test - public void test006() throws Exception { - String t = "006"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test capacity not found - new start"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test007() throws Exception { - String t = "007"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test capacity not found - new start supp"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 200000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "2000"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 200000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); - } - - @Test - public void test008() throws Exception { - String t = "008"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test capacity not found - change"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "2000"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); - } - - @Test - public void test009() throws Exception { - String t = "009"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test capacity not found - change supp"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "2000"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 4)); - } - - @Test - public void test010() throws Exception { - String t = "010"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test border condition - connection limit - new start - adding connection " + - "when we are on the limit should fail"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - for (int i = 1; i <= 40; i++) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - for (int i = 1; i <= 40; i += 4) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "1"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } - - @Test - public void test011() throws Exception { - String t = "011"; - log.info("============== reserve " + t + " ================================"); - log.info( - "=== Test border condition - connection limit - new start supp should succeed as no new connection being added"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - for (int i = 1; i <= 39; i++) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - for (int i = 1; i <= 39; i += 4) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - dataSetup.setupService(service1, "Pending", 2, 1000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 1000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "5"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 5000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 2)); - } - - @Test - public void test012() throws Exception { - String t = "012"; - log.info("============== reserve " + t + " ================================"); - log.info( - "=== Test border condition - connection limit - change should succeed as no new connection being added"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - for (int i = 1; i <= 39; i++) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - for (int i = 1; i <= 39; i += 4) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - dataSetup.setupService(service1, "Active", 2, 1000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "5"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 5000)); - } - - @Test - public void test013() throws Exception { - String t = "013"; - log.info("============== reserve " + t + " ================================"); - log.info( - "=== Test border condition - connection limit - change supp should succeed as no new connection being added"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - for (int i = 1; i <= 39; i++) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - for (int i = 1; i <= 39; i += 4) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - dataSetup.setupService(service1, "Active", 2, 1000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - dataSetup.setupService(service1, "Pending", 3, 5000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 5000)); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "10"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 4, 10000)); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); - } - - @Test - public void test014() throws Exception { - String t = "014"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test input validations - invalid request-type in input"); - - String service1 = "reserve" + t + "/service1"; - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "xxxxx"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "10"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - try { - resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - } catch (SvcLogicException e) { - Assert.assertTrue(e.getMessage().equals( - "Invalid tmp.resource-allocator.request-type: xxxxx. Supported values are New, Change.")); - return; - } - Assert.fail("SvcLogicException expected"); - } - - @Test - public void test015() throws Exception { - String t = "015"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test server bw limit depends on number of servers - limit is 960Mbps for 1 server, 1920 for 2"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupPserver("server1", "MTSNJA4LCP1"); - dataSetup.setupPserver("server2", "MTSNJA4LCP1"); - dataSetup.setupPserver("server3", "MTSNJA4LCP1"); - dataSetup.setupPserver("server4", "MTSNJA4LCP1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "1200"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 1200000)); - } - - @Test - public void test016() throws Exception { - String t = "016"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test resource threshold output"); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupPserver("server1", "MTSNJA4LCP1"); - dataSetup.setupPserver("server2", "MTSNJA4LCP1"); - dataSetup.setupPserver("server3", "MTSNJA4LCP1"); - dataSetup.setupPserver("server4", "MTSNJA4LCP1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "1605"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - for (String key : ctx.getAttributeKeySet()) - if (key.startsWith("tmp.resource-allocator-output")) - log.info(" " + key + ": " + ctx.getAttribute(key)); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 1605000)); - } - - @Test - public void test017() throws Exception { - String t = "017"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test if evc_count lookup in MAX_SERVER_SPEED depends on the number of primary servers."); - log.info("=== For 10 existing EVC, it should take the first row, not the second (see data.sql)."); - log.info("=== Applied limit should be 1920Mbps, not 1680Mbps."); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupPserver("server1", "MTSNJA4LCP1"); - dataSetup.setupPserver("server2", "MTSNJA4LCP1"); - dataSetup.setupPserver("server3", "MTSNJA4LCP1"); - dataSetup.setupPserver("server4", "MTSNJA4LCP1"); - - for (int i = 1; i <= 10; i++) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 100000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "800"); // 10*100Mbps existing + 800 = 1800 - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 800000)); - } - - @Test - public void test018() throws Exception { - String t = "018"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test if evc_count lookup in MAX_SERVER_SPEED depends on the number of primary servers."); - log.info("=== For 11 existing EVC, it should take the second row (see data.sql)."); - log.info("=== Applied limit should be 1680Mbps. We have 11*100 + 700, so this should fail."); - - String service1 = "reserve" + t + "/service1"; - - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); - dataSetup.setupPserver("server1", "MTSNJA4LCP1"); - dataSetup.setupPserver("server2", "MTSNJA4LCP1"); - dataSetup.setupPserver("server3", "MTSNJA4LCP1"); - dataSetup.setupPserver("server4", "MTSNJA4LCP1"); - - for (int i = 1; i <= 11; i++) - dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 100000, "mtanjrsv126", - "mtsnj303vr1", "MTSNJA4LCP1/Server1"); - - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "700"); // 11*100Mbps existing + 700 = 1800 - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - - log.info("Result: " + st); - log.info(" tmp.resource-allocator-output.max-available-speed: " + - ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); - log.info(" tmp.resource-allocator-output.speed-unit: " + - ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); - - log.info("Result: " + st); - - Assert.assertTrue(st == QueryStatus.NOT_FOUND); - Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); - } + @Autowired(required = true) + private DataSetup dataSetup; + + @Test + public void test001() throws Exception { + String t = "001"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test successful response - new start - all resources available"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupPserver("server1", "MTSNJA4LCP1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 300000)); + } + + @Test + public void test002() throws Exception { + String t = "002"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test successful response - new start supp - all resources available"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 200000)); + + SvcLogicContext ctx = new SvcLogicContext(); + // ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - Default is New + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "400"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 2)); + } + + @Test + public void test003() throws Exception { + String t = "003"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test successful response - change - all resources available"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "400"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); + } + + @Test + public void test004() throws Exception { + String t = "004"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test successful response - change supp - all resources available"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "500"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 4, 500000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); + } + + @Test + public void test005() throws Exception { + String t = "005"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test successful response - change - check that hard limits are applied, not soft for change"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "1200000"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "kbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 1200000)); + } + + @Test + public void test006() throws Exception { + String t = "006"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test capacity not found - new start"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Gbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test007() throws Exception { + String t = "007"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test capacity not found - new start supp"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Pending", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 200000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "2000"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 200000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); + } + + @Test + public void test008() throws Exception { + String t = "008"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test capacity not found - change"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "2000"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); + } + + @Test + public void test009() throws Exception { + String t = "009"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test capacity not found - change supp"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupService(service1, "Active", 2, 200000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.setupService(service1, "Pending", 3, 400000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "2000"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 200000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 400000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 4)); + } + + @Test + public void test010() throws Exception { + String t = "010"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test border condition - connection limit - new start - adding connection " + + "when we are on the limit should fail"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + for (int i = 1; i <= 40; i++) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + for (int i = 1; i <= 40; i += 4) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "1"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } + + @Test + public void test011() throws Exception { + String t = "011"; + log.info("============== reserve " + t + " ================================"); + log.info( + "=== Test border condition - connection limit - new start supp should succeed as no new connection being added"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + for (int i = 1; i <= 39; i++) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + for (int i = 1; i <= 39; i += 4) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + dataSetup.setupService(service1, "Pending", 2, 1000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 2, 1000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "5"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 5000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 2)); + } + + @Test + public void test012() throws Exception { + String t = "012"; + log.info("============== reserve " + t + " ================================"); + log.info( + "=== Test border condition - connection limit - change should succeed as no new connection being added"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + for (int i = 1; i <= 39; i++) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + for (int i = 1; i <= 39; i += 4) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + dataSetup.setupService(service1, "Active", 2, 1000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "5"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 5000)); + } + + @Test + public void test013() throws Exception { + String t = "013"; + log.info("============== reserve " + t + " ================================"); + log.info( + "=== Test border condition - connection limit - change supp should succeed as no new connection being added"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + for (int i = 1; i <= 39; i++) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + for (int i = 1; i <= 39; i += 4) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Pending", 3, 1000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + dataSetup.setupService(service1, "Active", 2, 1000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + dataSetup.setupService(service1, "Pending", 3, 5000, "mtanjrsv126", "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 3, 5000)); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "Change"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "10"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Active", 2, 1000)); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 4, 10000)); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, 3)); + } + + @Test + public void test014() throws Exception { + String t = "014"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test input validations - invalid request-type in input"); + + String service1 = "reserve" + t + "/service1"; + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "xxxxx"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "10"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + try { + resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + } catch (SvcLogicException e) { + Assert.assertTrue(e.getMessage().equals( + "Invalid tmp.resource-allocator.request-type: xxxxx. Supported values are New, Change.")); + return; + } + Assert.fail("SvcLogicException expected"); + } + + @Test + public void test015() throws Exception { + String t = "015"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test server bw limit depends on number of servers - limit is 960Mbps for 1 server, 1920 for 2"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupPserver("server1", "MTSNJA4LCP1"); + dataSetup.setupPserver("server2", "MTSNJA4LCP1"); + dataSetup.setupPserver("server3", "MTSNJA4LCP1"); + dataSetup.setupPserver("server4", "MTSNJA4LCP1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "1200"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 1200000)); + } + + @Test + public void test016() throws Exception { + String t = "016"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test resource threshold output"); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupPserver("server1", "MTSNJA4LCP1"); + dataSetup.setupPserver("server2", "MTSNJA4LCP1"); + dataSetup.setupPserver("server3", "MTSNJA4LCP1"); + dataSetup.setupPserver("server4", "MTSNJA4LCP1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "1605"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + for (String key : ctx.getAttributeKeySet()) + if (key.startsWith("tmp.resource-allocator-output")) + log.info(" " + key + ": " + ctx.getAttribute(key)); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 1605000)); + } + + @Test + public void test017() throws Exception { + String t = "017"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test if evc_count lookup in MAX_SERVER_SPEED depends on the number of primary servers."); + log.info("=== For 10 existing EVC, it should take the first row, not the second (see data.sql)."); + log.info("=== Applied limit should be 1920Mbps, not 1680Mbps."); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupPserver("server1", "MTSNJA4LCP1"); + dataSetup.setupPserver("server2", "MTSNJA4LCP1"); + dataSetup.setupPserver("server3", "MTSNJA4LCP1"); + dataSetup.setupPserver("server4", "MTSNJA4LCP1"); + + for (int i = 1; i <= 10; i++) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 100000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "800"); // 10*100Mbps existing + 800 = 1800 + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb("mtanjrsv126", "MTSNJA4LCP1", service1, "Pending", 1, 800000)); + } + + @Test + public void test018() throws Exception { + String t = "018"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test if evc_count lookup in MAX_SERVER_SPEED depends on the number of primary servers."); + log.info("=== For 11 existing EVC, it should take the second row (see data.sql)."); + log.info("=== Applied limit should be 1680Mbps. We have 11*100 + 700, so this should fail."); + + String service1 = "reserve" + t + "/service1"; + + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.setupVplspePort("MTSNJA4LCP1", "mtsnj303vr1", "xe-0/0/2", "PROV", null); + dataSetup.setupPserver("server1", "MTSNJA4LCP1"); + dataSetup.setupPserver("server2", "MTSNJA4LCP1"); + dataSetup.setupPserver("server3", "MTSNJA4LCP1"); + dataSetup.setupPserver("server4", "MTSNJA4LCP1"); + + for (int i = 1; i <= 11; i++) + dataSetup.setupService("reserve" + t + "/existing-service" + i, "Active", 2, 100000, "mtanjrsv126", + "mtsnj303vr1", "MTSNJA4LCP1/Server1"); + + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "700"); // 11*100Mbps existing + 700 = 1800 + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + + log.info("Result: " + st); + log.info(" tmp.resource-allocator-output.max-available-speed: " + + ctx.getAttribute("tmp.resource-allocator-output.max-available-speed")); + log.info(" tmp.resource-allocator-output.speed-unit: " + + ctx.getAttribute("tmp.resource-allocator-output.speed-unit")); + + log.info("Result: " + st); + + Assert.assertTrue(st == QueryStatus.NOT_FOUND); + Assert.assertTrue(dataSetup.serviceNotInDb(service1, null, null)); + } } diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve2.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve2.java index a92cbc5a..1442f3ca 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve2.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/ra/TestReserve2.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,38 +40,38 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class TestReserve2 { - private static final Logger log = LoggerFactory.getLogger(TestReserve2.class); + private static final Logger log = LoggerFactory.getLogger(TestReserve2.class); - @Autowired(required = true) - private ResourceAllocator resourceAllocator; + @Autowired(required = true) + private ResourceAllocator resourceAllocator; - @Autowired(required = true) - private DataSetup dataSetup; + @Autowired(required = true) + private DataSetup dataSetup; - @Test - public void test001() throws Exception { - String t = "001"; - log.info("============== reserve " + t + " ================================"); - log.info("=== Test successful response - new start - all resources available"); + @Test + public void test001() throws Exception { + String t = "001"; + log.info("============== reserve " + t + " ================================"); + log.info("=== Test successful response - new start - all resources available"); - String service1 = "ICOREPVC" + t + "-1"; + String service1 = "ICOREPVC" + t + "-1"; - dataSetup.cleanup(); - dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); + dataSetup.cleanup(); + dataSetup.setupVpePort("MTSNJA4LCP1", "mtanjrsv126", "ae0", "PROV", "juniper-vpe-image"); - SvcLogicContext ctx = new SvcLogicContext(); - ctx.setAttribute("tmp.resource-allocator.request-type", "New"); - ctx.setAttribute("tmp.resource-allocator.service-model", "L3AVPN-EVC"); - ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); - ctx.setAttribute("tmp.resource-allocator.speed", "300"); - ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); - ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); - ctx.setAttribute("tmp.resource-allocator.vpn-id", "123"); - ctx.setAttribute("tmp.resource-allocator.vrf-required", "false"); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.resource-allocator.request-type", "New"); + ctx.setAttribute("tmp.resource-allocator.service-model", "L3AVPN-EVC"); + ctx.setAttribute("tmp.resource-allocator.service-instance-id", service1); + ctx.setAttribute("tmp.resource-allocator.speed", "300"); + ctx.setAttribute("tmp.resource-allocator.speed-unit", "Mbps"); + ctx.setAttribute("tmp.resource-allocator.aic-site-id", "MTSNJA4LCP1"); + ctx.setAttribute("tmp.resource-allocator.vpn-id", "123"); + ctx.setAttribute("tmp.resource-allocator.vrf-required", "false"); - QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); + QueryStatus st = resourceAllocator.reserve("NetworkCapacity", null, null, null, ctx); - Assert.assertTrue(st == QueryStatus.SUCCESS); - Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "VPE-Cust", "Pending", 1, 300000)); - } + Assert.assertTrue(st == QueryStatus.SUCCESS); + Assert.assertTrue(dataSetup.serviceCorrectInDb(service1, "VPE-Cust", "Pending", 1, 300000)); + } } diff --git a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/rm/DataSetup.java b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/rm/DataSetup.java index 55824b00..4ff5bec7 100644 --- a/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/rm/DataSetup.java +++ b/resource-assignment/provider/src/test/java/jtest/org/openecomp/sdnc/rm/DataSetup.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,79 +28,79 @@ import jtest.util.org.openecomp.sdnc.ra.TestTable; public class DataSetup { - private TestDb testDb; - - private TestTable resource = null; - private TestTable allocationItem = null; - - private static final String[] RESOURCE_COLUMNS = - { "asset_id", "resource_name", "resource_type", "lt_used", "ll_label", "ll_reference_count", "rr_used" }; - - private static final String[] ALLOCATION_ITEM_COLUMNS = { - "resource_id", "application_id", "resource_set_id", "resource_union_id", "resource_share_group_list", - "lt_used", "ll_label", "rr_used", "allocation_time" }; - - private void initTables() { - if (resource == null) - resource = testDb.table("RESOURCE", "resource_id", RESOURCE_COLUMNS); - if (allocationItem == null) - allocationItem = testDb.table("ALLOCATION_ITEM", "allocation_item_id", ALLOCATION_ITEM_COLUMNS); - } - - public void cleanup() { - allocationItem.delete("true"); - resource.delete("true"); - } - - public void setupLimitItem( - String resourceName, - String assetId, - String resourceSetId, - String resourceUnionId, - long used) { - initTables(); - - Long rid = resource.getId("asset_id = '" + assetId + "' AND resource_name = '" + resourceName + "'"); - if (rid == null) { - resource.add(assetId, resourceName, "Limit", 1, null, null, null); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, used, null, null, new Date()); - } - - public void setupRangeItem( - String resourceName, - String assetId, - String resourceSetId, - String resourceUnionId, - String used) { - initTables(); - - Long rid = resource.getId("asset_id = '" + assetId + "' AND resource_name = '" + resourceName + "'"); - if (rid == null) { - resource.add(assetId, resourceName, "Range", null, null, null, used); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, null, null, used, new Date()); - } - - public void setupLabelItem( - String resourceName, - String assetId, - String resourceSetId, - String resourceUnionId, - String label) { - initTables(); - - Long rid = resource.getId("asset_id = '" + assetId + "' AND resource_name = '" + resourceName + "'"); - if (rid == null) { - resource.add(assetId, resourceName, "Label", null, label, 1, null); - rid = resource.getLastId(); - } - allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, null, label, null, new Date()); - } - - public void setTestDb(TestDb testDb) { - this.testDb = testDb; - } + private TestDb testDb; + + private TestTable resource = null; + private TestTable allocationItem = null; + + private static final String[] RESOURCE_COLUMNS = + { "asset_id", "resource_name", "resource_type", "lt_used", "ll_label", "ll_reference_count", "rr_used" }; + + private static final String[] ALLOCATION_ITEM_COLUMNS = { + "resource_id", "application_id", "resource_set_id", "resource_union_id", "resource_share_group_list", + "lt_used", "ll_label", "rr_used", "allocation_time" }; + + private void initTables() { + if (resource == null) + resource = testDb.table("RESOURCE", "resource_id", RESOURCE_COLUMNS); + if (allocationItem == null) + allocationItem = testDb.table("ALLOCATION_ITEM", "allocation_item_id", ALLOCATION_ITEM_COLUMNS); + } + + public void cleanup() { + allocationItem.delete("true"); + resource.delete("true"); + } + + public void setupLimitItem( + String resourceName, + String assetId, + String resourceSetId, + String resourceUnionId, + long used) { + initTables(); + + Long rid = resource.getId("asset_id = '" + assetId + "' AND resource_name = '" + resourceName + "'"); + if (rid == null) { + resource.add(assetId, resourceName, "Limit", 1, null, null, null); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, used, null, null, new Date()); + } + + public void setupRangeItem( + String resourceName, + String assetId, + String resourceSetId, + String resourceUnionId, + String used) { + initTables(); + + Long rid = resource.getId("asset_id = '" + assetId + "' AND resource_name = '" + resourceName + "'"); + if (rid == null) { + resource.add(assetId, resourceName, "Range", null, null, null, used); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, null, null, used, new Date()); + } + + public void setupLabelItem( + String resourceName, + String assetId, + String resourceSetId, + String resourceUnionId, + String label) { + initTables(); + + Long rid = resource.getId("asset_id = '" + assetId + "' AND resource_name = '" + resourceName + "'"); + if (rid == null) { + resource.add(assetId, resourceName, "Label", null, label, 1, null); + rid = resource.getLastId(); + } + allocationItem.add(rid, "SDNC", resourceSetId, resourceUnionId, null, null, label, null, new Date()); + } + + public void setTestDb(TestDb testDb) { + this.testDb = testDb; + } } diff --git a/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestDb.java b/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestDb.java index ec7c2abf..ba890c72 100644 --- a/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestDb.java +++ b/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestDb.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,13 +25,13 @@ import org.springframework.jdbc.core.JdbcTemplate; public class TestDb { - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - public TestTable table(String tableName, String idName, String... columnList) { - return new TestTable(jdbcTemplate, tableName, idName, columnList); - } + public TestTable table(String tableName, String idName, String... columnList) { + return new TestTable(jdbcTemplate, tableName, idName, columnList); + } - public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } } diff --git a/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestTable.java b/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestTable.java index 64288d96..a57ab4fc 100644 --- a/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestTable.java +++ b/resource-assignment/provider/src/test/java/jtest/util/org/openecomp/sdnc/ra/TestTable.java @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 ONAP Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,59 +26,59 @@ import org.springframework.jdbc.support.rowset.SqlRowSet; public class TestTable { - private String tableName; - private String[] columnList; - private String idName; + private String tableName; + private String[] columnList; + private String idName; - private String insertSql; + private String insertSql; - private JdbcTemplate jdbcTemplate; + private JdbcTemplate jdbcTemplate; - public TestTable(JdbcTemplate jdbcTemplate, String tableName, String idName, String... columnList) { - this.jdbcTemplate = jdbcTemplate; - this.tableName = tableName; - this.idName = idName; - this.columnList = columnList; - createInsertSql(); - } + public TestTable(JdbcTemplate jdbcTemplate, String tableName, String idName, String... columnList) { + this.jdbcTemplate = jdbcTemplate; + this.tableName = tableName; + this.idName = idName; + this.columnList = columnList; + createInsertSql(); + } - private void createInsertSql() { - StringBuilder ss = new StringBuilder(); - ss.append("INSERT INTO ").append(tableName).append(" ("); - for (String s : columnList) - ss.append(s).append(", "); - ss.setLength(ss.length() - 2); - ss.append(") VALUES ("); - for (int i = 0; i < columnList.length; i++) - ss.append("?, "); - ss.setLength(ss.length() - 2); - ss.append(")"); - insertSql = ss.toString(); - } + private void createInsertSql() { + StringBuilder ss = new StringBuilder(); + ss.append("INSERT INTO ").append(tableName).append(" ("); + for (String s : columnList) + ss.append(s).append(", "); + ss.setLength(ss.length() - 2); + ss.append(") VALUES ("); + for (int i = 0; i < columnList.length; i++) + ss.append("?, "); + ss.setLength(ss.length() - 2); + ss.append(")"); + insertSql = ss.toString(); + } - public void add(Object... values) { - jdbcTemplate.update(insertSql, values); - } + public void add(Object... values) { + jdbcTemplate.update(insertSql, values); + } - public long getLastId() { - return jdbcTemplate.queryForObject("SELECT max(" + idName + ") FROM " + tableName, Long.class); - } + public long getLastId() { + return jdbcTemplate.queryForObject("SELECT max(" + idName + ") FROM " + tableName, Long.class); + } - public Long getId(String where) { - String selectSql = "SELECT " + idName + " FROM " + tableName + " WHERE " + where; - SqlRowSet rs = jdbcTemplate.queryForRowSet(selectSql); - if (rs.first()) - return rs.getLong(idName); - return null; - } + public Long getId(String where) { + String selectSql = "SELECT " + idName + " FROM " + tableName + " WHERE " + where; + SqlRowSet rs = jdbcTemplate.queryForRowSet(selectSql); + if (rs.first()) + return rs.getLong(idName); + return null; + } - public boolean exists(String where) { - String selectSql = "SELECT * FROM " + tableName + " WHERE " + where; - SqlRowSet rs = jdbcTemplate.queryForRowSet(selectSql); - return rs.first(); - } + public boolean exists(String where) { + String selectSql = "SELECT * FROM " + tableName + " WHERE " + where; + SqlRowSet rs = jdbcTemplate.queryForRowSet(selectSql); + return rs.first(); + } - public void delete(String where) { - jdbcTemplate.update("DELETE FROM " + tableName + " WHERE " + where); - } + public void delete(String where) { + jdbcTemplate.update("DELETE FROM " + tableName + " WHERE " + where); + } } diff --git a/resource-assignment/provider/src/test/resources/homing-req.json b/resource-assignment/provider/src/test/resources/homing-req.json index 48ec701a..1f061eca 100644 --- a/resource-assignment/provider/src/test/resources/homing-req.json +++ b/resource-assignment/provider/src/test/resources/homing-req.json @@ -3,7 +3,7 @@ * openECOMP : SDN-C * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. + * reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,27 +20,27 @@ */ { - "input":{ - "sdnc-homing-header":{ - "svc-request-id":"omx-123", - "svc-action":"homing" - }, - "request-information":{ - "request-id":"mso-1234", - "request-action":"GetAicNodesRequest", - "source":"OMX", - "list-length":1 - }, - "homing-request-information":{ - "service-type":"SDN-ETHERNET-INTERNET", - "global-customer-id":"custid-123", - "customer-location":{ - "lata":332 - } - }, - "homing-other-information":{ - "bandwidth-value":150, - "bandwidth-units":"Mbps" - } - } + "input":{ + "sdnc-homing-header":{ + "svc-request-id":"omx-123", + "svc-action":"homing" + }, + "request-information":{ + "request-id":"mso-1234", + "request-action":"GetAicNodesRequest", + "source":"OMX", + "list-length":1 + }, + "homing-request-information":{ + "service-type":"SDN-ETHERNET-INTERNET", + "global-customer-id":"custid-123", + "customer-location":{ + "lata":332 + } + }, + "homing-other-information":{ + "bandwidth-value":150, + "bandwidth-units":"Mbps" + } + } } diff --git a/resource-assignment/provider/src/test/resources/log4j.properties b/resource-assignment/provider/src/test/resources/log4j.properties index 6d6e30ff..b36b7674 100644 --- a/resource-assignment/provider/src/test/resources/log4j.properties +++ b/resource-assignment/provider/src/test/resources/log4j.properties @@ -3,7 +3,7 @@ # openECOMP : SDN-C # ================================================================================ # Copyright (C) 2017 ONAP Intellectual Property. All rights -# reserved. +# reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/resource-assignment/provider/src/test/resources/sql/data.sql b/resource-assignment/provider/src/test/resources/sql/data.sql index 2214bce7..f840a232 100644 --- a/resource-assignment/provider/src/test/resources/sql/data.sql +++ b/resource-assignment/provider/src/test/resources/sql/data.sql @@ -3,7 +3,7 @@ -- openECOMP : SDN-C -- ================================================================================ -- Copyright (C) 2017 ONAP Intellectual Property. All rights --- reserved. +-- reserved. -- ================================================================================ -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. @@ -34,10 +34,10 @@ VALUES ( 'service-speed-kbps', '0.6 * max-server-speed * number-primary-servers', 'max-server-speed * number-primary-servers'); INSERT INTO RESOURCE_RULE ( - resource_name, service_model, end_point_position, service_expression, equipment_level, + resource_name, service_model, end_point_position, service_expression, equipment_level, equipment_expression, allocation_expression, soft_limit_expression, hard_limit_expression) VALUES ( - 'Connection', 'L3SDN', 'VCE-Cust', 'true', 'Server', + 'Connection', 'L3SDN', 'VCE-Cust', 'true', 'Server', 'true', '1', '40', '40'); INSERT INTO RESOURCE_RULE ( @@ -48,51 +48,51 @@ VALUES ( 'service-speed-kbps', '0.5 * max-port-speed', '0.9 * max-port-speed'); INSERT INTO RESOURCE_RULE ( - resource_name, service_model, end_point_position, service_expression, + resource_name, service_model, end_point_position, service_expression, equipment_level, equipment_expression, allocation_expression, soft_limit_expression, hard_limit_expression) VALUES ( - 'Bandwidth', 'L3AVPN-EVC', 'VPE-Cust', 'true', 'Port', 'true', 'service-speed-kbps', '8000000', '8000000'); + 'Bandwidth', 'L3AVPN-EVC', 'VPE-Cust', 'true', 'Port', 'true', 'service-speed-kbps', '8000000', '8000000'); INSERT INTO RESOURCE_RULE ( - resource_name, service_model, end_point_position, service_expression, + resource_name, service_model, end_point_position, service_expression, equipment_level, equipment_expression, allocation_expression, soft_limit_expression, hard_limit_expression) VALUES ( - 'Connection', 'L3AVPN-EVC', 'VPE-Cust', 'true', 'Port', 'true', '1', '200', '200'); + 'Connection', 'L3AVPN-EVC', 'VPE-Cust', 'true', 'Port', 'true', '1', '200', '200'); INSERT INTO RESOURCE_RULE ( - resource_name, service_model, end_point_position, service_expression, + resource_name, service_model, end_point_position, service_expression, equipment_level, equipment_expression, allocation_expression, soft_limit_expression, hard_limit_expression) VALUES ( - 'Bandwidth', 'L3AVPN-PORT', 'VPE-Cust', 'true', 'Port', 'true', 'service-speed-kbps', '8000000', '8000000'); + 'Bandwidth', 'L3AVPN-PORT', 'VPE-Cust', 'true', 'Port', 'true', 'service-speed-kbps', '8000000', '8000000'); insert into RESOURCE_THRESHOLD ( - resource_rule_id, threshold_expression, threshold_message) + resource_rule_id, threshold_expression, threshold_message) values ( - (select resource_rule_id from RESOURCE_RULE where resource_name = 'Bandwidth' and equipment_level = 'Server'), + (select resource_rule_id from RESOURCE_RULE where resource_name = 'Bandwidth' and equipment_level = 'Server'), '0.5 * max-server-speed * number-primary-servers', 'The provisioned access bandwidth is at or exceeds 50% of the total server capacity.'); insert into RESOURCE_THRESHOLD ( - resource_rule_id, threshold_expression, threshold_message) + resource_rule_id, threshold_expression, threshold_message) values ( - (select resource_rule_id from RESOURCE_RULE where resource_name = 'Bandwidth' and equipment_level = 'Server'), + (select resource_rule_id from RESOURCE_RULE where resource_name = 'Bandwidth' and equipment_level = 'Server'), '0.7 * max-server-speed * number-primary-servers', 'The provisioned access bandwidth is at or exceeds 70% of the total server capacity.'); INSERT INTO RANGE_RULE ( - range_name, service_model, end_point_position, equipment_level, min_value, max_value) + range_name, service_model, end_point_position, equipment_level, min_value, max_value) VALUES ( - 'subinterface-id', 'L3AVPN-EVC', 'VPE-Cust', 'Port', 100, 3999); + 'subinterface-id', 'L3AVPN-EVC', 'VPE-Cust', 'Port', 100, 3999); INSERT INTO RANGE_RULE ( - range_name, service_model, end_point_position, equipment_level, min_value, max_value) + range_name, service_model, end_point_position, equipment_level, min_value, max_value) VALUES ( - 'vlan-id-inner', 'L3AVPN-EVC', 'VPE-Cust', 'Port', 2, 4091); + 'vlan-id-inner', 'L3AVPN-EVC', 'VPE-Cust', 'Port', 2, 4091); INSERT INTO RANGE_RULE ( - range_name, service_model, end_point_position, equipment_level, min_value, max_value) + range_name, service_model, end_point_position, equipment_level, min_value, max_value) VALUES ( - 'bundle-id', 'L3AVPN-PORT', 'VPE-Cust', 'Port', 1, 99999); + 'bundle-id', 'L3AVPN-PORT', 'VPE-Cust', 'Port', 1, 99999); INSERT INTO MAX_PORT_SPEED ( image_file_name, end_point_position, interface_name, max_speed, unit) @@ -116,5 +116,5 @@ VALUES ('ALL', 10000, 500, 'Mbps', 'Max speed, when there are 21 or more EVC on INSERT INTO PARAMETERS (name, value, category, memo) VALUES ('homing.pserver.sparing.ratio', '1:1', 'homing', - 'Ratio of primary to backup servers within any of the AIC sites. Used in RA to calculate the max allowed bw in an AIC site.'); + 'Ratio of primary to backup servers within any of the AIC sites. Used in RA to calculate the max allowed bw in an AIC site.'); diff --git a/resource-assignment/provider/src/test/resources/sql/schema.sql b/resource-assignment/provider/src/test/resources/sql/schema.sql index e650337e..03b5bfa7 100644 --- a/resource-assignment/provider/src/test/resources/sql/schema.sql +++ b/resource-assignment/provider/src/test/resources/sql/schema.sql @@ -3,7 +3,7 @@ -- openECOMP : SDN-C -- ================================================================================ -- Copyright (C) 2017 ONAP Intellectual Property. All rights --- reserved. +-- reserved. -- ================================================================================ -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. @@ -20,12 +20,12 @@ --- CREATE TABLE RESOURCE_LOCK ( - resource_lock_id SERIAL PRIMARY KEY, - resource_name VARCHAR(50) NOT NULL UNIQUE, - lock_holder VARCHAR(100) NOT NULL, - lock_count SMALLINT NOT NULL, - lock_time DATETIME NOT NULL, - expiration_time DATETIME NOT NULL + resource_lock_id SERIAL PRIMARY KEY, + resource_name VARCHAR(50) NOT NULL UNIQUE, + lock_holder VARCHAR(100) NOT NULL, + lock_count SMALLINT NOT NULL, + lock_time DATETIME NOT NULL, + expiration_time DATETIME NOT NULL ); CREATE TABLE RESOURCE ( @@ -70,59 +70,59 @@ CREATE INDEX i1_allocation_item ON allocation_item (resource_id); CREATE UNIQUE INDEX ak1_allocation_item ON allocation_item (resource_id, resource_set_id); CREATE TABLE RESOURCE_RULE ( - resource_rule_id SERIAL PRIMARY KEY, - resource_name VARCHAR(50) NOT NULL, - service_model VARCHAR(50) NOT NULL, - end_point_position VARCHAR(50) NOT NULL, - service_expression VARCHAR(2000) NOT NULL, - equipment_level VARCHAR(50) NOT NULL, - equipment_expression VARCHAR(2000) NOT NULL, - allocation_expression VARCHAR(2000) NOT NULL, - soft_limit_expression VARCHAR(2000) NOT NULL, - hard_limit_expression VARCHAR(2000) NOT NULL + resource_rule_id SERIAL PRIMARY KEY, + resource_name VARCHAR(50) NOT NULL, + service_model VARCHAR(50) NOT NULL, + end_point_position VARCHAR(50) NOT NULL, + service_expression VARCHAR(2000) NOT NULL, + equipment_level VARCHAR(50) NOT NULL, + equipment_expression VARCHAR(2000) NOT NULL, + allocation_expression VARCHAR(2000) NOT NULL, + soft_limit_expression VARCHAR(2000) NOT NULL, + hard_limit_expression VARCHAR(2000) NOT NULL ); CREATE TABLE RESOURCE_THRESHOLD ( - resource_threshold_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, - resource_rule_id bigint(20) NOT NULL, - threshold_expression varchar(2000) NOT NULL, - threshold_message varchar(2000) NOT NULL, - PRIMARY KEY (resource_threshold_id) + resource_threshold_id bigint(20) unsigned NOT NULL AUTO_INCREMENT, + resource_rule_id bigint(20) NOT NULL, + threshold_expression varchar(2000) NOT NULL, + threshold_message varchar(2000) NOT NULL, + PRIMARY KEY (resource_threshold_id) ); CREATE TABLE RANGE_RULE ( - range_rule_id SERIAL PRIMARY KEY, - range_name VARCHAR(50) NOT NULL, - service_model VARCHAR(50) NOT NULL, - end_point_position VARCHAR(50) NOT NULL, - equipment_level VARCHAR(50) NOT NULL, - min_value INT NOT NULL, - max_value INT NOT NULL + range_rule_id SERIAL PRIMARY KEY, + range_name VARCHAR(50) NOT NULL, + service_model VARCHAR(50) NOT NULL, + end_point_position VARCHAR(50) NOT NULL, + equipment_level VARCHAR(50) NOT NULL, + min_value INT NOT NULL, + max_value INT NOT NULL ); CREATE TABLE MAX_PORT_SPEED ( - max_port_speed_id SERIAL PRIMARY KEY, - image_file_name VARCHAR(50) NOT NULL, - end_point_position VARCHAR(50) NOT NULL, - interface_name VARCHAR(100) NOT NULL, - max_speed BIGINT NOT NULL, - unit VARCHAR(10) NOT NULL + max_port_speed_id SERIAL PRIMARY KEY, + image_file_name VARCHAR(50) NOT NULL, + end_point_position VARCHAR(50) NOT NULL, + interface_name VARCHAR(100) NOT NULL, + max_speed BIGINT NOT NULL, + unit VARCHAR(10) NOT NULL ); CREATE TABLE MAX_SERVER_SPEED ( - max_server_speed_id SERIAL PRIMARY KEY, - server_model VARCHAR(50) NOT NULL, - evc_count SMALLINT NOT NULL, - max_speed BIGINT NOT NULL, - unit VARCHAR(10) NOT NULL, - description VARCHAR(500) + max_server_speed_id SERIAL PRIMARY KEY, + server_model VARCHAR(50) NOT NULL, + evc_count SMALLINT NOT NULL, + max_speed BIGINT NOT NULL, + unit VARCHAR(10) NOT NULL, + description VARCHAR(500) ); CREATE TABLE SERVICE_RESOURCE ( - service_resource_id SERIAL PRIMARY KEY, - service_instance_id VARCHAR(80) NOT NULL, - service_status VARCHAR(10) NOT NULL, - service_change_number SMALLINT NOT NULL, + service_resource_id SERIAL PRIMARY KEY, + service_instance_id VARCHAR(80) NOT NULL, + service_status VARCHAR(10) NOT NULL, + service_change_number SMALLINT NOT NULL, resource_set_id VARCHAR(100) NOT NULL, resource_union_id VARCHAR(100) NOT NULL, ); @@ -132,37 +132,37 @@ CREATE INDEX i1_service_resource ON SERVICE_RESOURCE (service_instance_id); CREATE UNIQUE INDEX ak1_service_resource ON SERVICE_RESOURCE (service_instance_id, service_change_number); CREATE TABLE VPE_POOL ( - vpe_name VARCHAR(20) NOT NULL, - ipv4_oam_address VARCHAR(20) NOT NULL, - loopback0_ipv4_address VARCHAR(20) NOT NULL, - provisioning_status VARCHAR(10) NOT NULL, - aic_site_id VARCHAR(100) NOT NULL, - availability_zone VARCHAR(100) NOT NULL, - vlan_id_outer VARCHAR(20) NOT NULL, - vendor VARCHAR(20) NOT NULL, - physical_intf_name VARCHAR(40) NOT NULL, - physical_intf_speed VARCHAR(20) NOT NULL, - physical_intf_units VARCHAR(20) NOT NULL, - vpe_uuid VARCHAR(80) DEFAULT NULL, - vpe_id VARCHAR(80) DEFAULT NULL, - image_filename VARCHAR(100) DEFAULT NULL, - PRIMARY KEY (aic_site_id, vpe_name, availability_zone) + vpe_name VARCHAR(20) NOT NULL, + ipv4_oam_address VARCHAR(20) NOT NULL, + loopback0_ipv4_address VARCHAR(20) NOT NULL, + provisioning_status VARCHAR(10) NOT NULL, + aic_site_id VARCHAR(100) NOT NULL, + availability_zone VARCHAR(100) NOT NULL, + vlan_id_outer VARCHAR(20) NOT NULL, + vendor VARCHAR(20) NOT NULL, + physical_intf_name VARCHAR(40) NOT NULL, + physical_intf_speed VARCHAR(20) NOT NULL, + physical_intf_units VARCHAR(20) NOT NULL, + vpe_uuid VARCHAR(80) DEFAULT NULL, + vpe_id VARCHAR(80) DEFAULT NULL, + image_filename VARCHAR(100) DEFAULT NULL, + PRIMARY KEY (aic_site_id, vpe_name, availability_zone) ); CREATE TABLE VPLSPE_POOL ( - vplspe_name varchar(20) NOT NULL, - aic_site_id varchar(100) NOT NULL, - availability_zone varchar(100) NOT NULL, - physical_intf_name varchar(40) NOT NULL, - physical_intf_speed varchar(20) NOT NULL, - physical_intf_units varchar(20) NOT NULL, - loopback0_ipv4_address varchar(20) NOT NULL, - vlan_id_outer varchar(20) NOT NULL, - vplspe_uuid varchar(80) DEFAULT NULL, - image_filename varchar(100) DEFAULT NULL, - provisioning_status varchar(10) DEFAULT NULL, - vendor varchar(20) DEFAULT NULL, - PRIMARY KEY (vplspe_name, aic_site_id, availability_zone, physical_intf_name) + vplspe_name varchar(20) NOT NULL, + aic_site_id varchar(100) NOT NULL, + availability_zone varchar(100) NOT NULL, + physical_intf_name varchar(40) NOT NULL, + physical_intf_speed varchar(20) NOT NULL, + physical_intf_units varchar(20) NOT NULL, + loopback0_ipv4_address varchar(20) NOT NULL, + vlan_id_outer varchar(20) NOT NULL, + vplspe_uuid varchar(80) DEFAULT NULL, + image_filename varchar(100) DEFAULT NULL, + provisioning_status varchar(10) DEFAULT NULL, + vendor varchar(20) DEFAULT NULL, + PRIMARY KEY (vplspe_name, aic_site_id, availability_zone, physical_intf_name) ); CREATE TABLE VPE_LOCK ( @@ -172,30 +172,30 @@ CREATE TABLE VPE_LOCK ( ); CREATE TABLE PARAMETERS ( - name varchar(100) PRIMARY KEY, - value varchar(24) NOT NULL, - category varchar(24) NOT NULL, - memo varchar(128) + name varchar(100) PRIMARY KEY, + value varchar(24) NOT NULL, + category varchar(24) NOT NULL, + memo varchar(128) ); CREATE TABLE PSERVER ( - hostname varchar(255) NOT NULL, - ptnii_equip_name varchar(255), - number_of_cpus varchar(255), - disk_in_gigabytes varchar(255), - ram_in_megabytes varchar(255), - equip_type varchar(255), - equip_vendor varchar(255), - equip_model varchar(255), - fqdn varchar(255), - pserver_selflink varchar(255), - ipv4_oam_address varchar(15), - serial_number varchar(255), - pserver_id varchar(255), - internet_topology varchar(40), - aic_site_id varchar(100), - in_maint varchar(5), - pserver_name2 varchar(255), - purpose varchar(255), - PRIMARY KEY (hostname) + hostname varchar(255) NOT NULL, + ptnii_equip_name varchar(255), + number_of_cpus varchar(255), + disk_in_gigabytes varchar(255), + ram_in_megabytes varchar(255), + equip_type varchar(255), + equip_vendor varchar(255), + equip_model varchar(255), + fqdn varchar(255), + pserver_selflink varchar(255), + ipv4_oam_address varchar(15), + serial_number varchar(255), + pserver_id varchar(255), + internet_topology varchar(40), + aic_site_id varchar(100), + in_maint varchar(5), + pserver_name2 varchar(255), + purpose varchar(255), + PRIMARY KEY (hostname) ); diff --git a/resource-assignment/provider/src/test/resources/test-context.xml b/resource-assignment/provider/src/test/resources/test-context.xml index 89aea439..1d21fa4f 100644 --- a/resource-assignment/provider/src/test/resources/test-context.xml +++ b/resource-assignment/provider/src/test/resources/test-context.xml @@ -4,7 +4,7 @@ openECOMP : SDN-C ================================================================================ Copyright (C) 2017 ONAP Intellectual Property. All rights - reserved. + reserved. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,277 +21,277 @@ --> <beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc" - xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.1.xsd - http://www.springframework.org/schema/jdbc - http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.1.xsd - "> - - <context:annotation-config /> - - <!-- JDBC setup --> - - <bean id="test.dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="false"> - <property name="driverClassName" value="org.h2.Driver" /> - <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=MySQL" /> - </bean> - - <jdbc:initialize-database data-source="test.dataSource"> - <jdbc:script location="sql/schema.sql" /> - <jdbc:script location="sql/data.sql" /> - </jdbc:initialize-database> - - <bean id="rm.jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> - <property name="dataSource" ref="test.dataSource" /> - </bean> - - <bean id="testDb" class="jtest.util.org.openecomp.sdnc.ra.TestDb"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="dataSetup" class="jtest.org.openecomp.sdnc.ra.DataSetup"> - <property name="testDb" ref="testDb" /> - </bean> - - <!-- Utils Configuration --> - - <bean id="speedUtil" class="org.openecomp.sdnc.util.speed.SpeedUtil"> - <property name="unitFactor" value="1000" /> - </bean> - - <!-- Resource Lock Configuration --> - - <bean id="resourceLockDao" class="org.openecomp.sdnc.lock.dao.ResourceLockDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - <property name="testing" value="true" /> - </bean> - - <bean id="lockHelper" class="org.openecomp.sdnc.lock.comp.LockHelperImpl"> - <property name="resourceLockDao" ref="resourceLockDao" /> - <property name="retryCount" value="10" /> - <property name="lockWait" value="5" /> <!-- Seconds --> - </bean> - - <!-- RM Configuration --> - - <bean id="resourceJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceJdbcDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="allocationItemJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.AllocationItemJdbcDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="resourceLoadJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceLoadJdbcDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="resourceDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceDaoImpl"> - <property name="resourceJdbcDao" ref="resourceJdbcDao" /> - <property name="allocationItemJdbcDao" ref="allocationItemJdbcDao" /> - <property name="resourceLoadJdbcDao" ref="resourceLoadJdbcDao" /> - </bean> - - <bean id="resourceManager" class="org.openecomp.sdnc.rm.comp.ResourceManagerImpl"> - <property name="lockHelper" ref="lockHelper" /> - <property name="resourceDao" ref="resourceDao" /> - <property name="applicationId" value="SDNC" /> - <property name="lockTimeout" value="600" /> <!-- Seconds --> - </bean> - - <!-- Equipment DAO Configuration --> - - <bean id="serverDao" class="org.openecomp.sdnc.ra.equip.dao.ServerDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="vpePortDao" class="org.openecomp.sdnc.ra.equip.dao.VpePortDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="vplspePortDao" class="org.openecomp.sdnc.ra.equip.dao.VplspePortDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <!-- Rule DAO Configuration --> - - <bean id="maxPortSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxPortSpeedDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - <property name="speedUtil" ref="speedUtil" /> - </bean> - - <bean id="maxServerSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxServerSpeedDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - <property name="speedUtil" ref="speedUtil" /> - </bean> - - <bean id="resourceRuleDao" class="org.openecomp.sdnc.ra.rule.dao.ResourceRuleDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="rangeRuleDao" class="org.openecomp.sdnc.ra.rule.dao.RangeRuleDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="vpeLockDao" class="org.openecomp.sdnc.ra.rule.dao.VpeLockDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <bean id="parameterDao" class="org.openecomp.sdnc.ra.rule.dao.ParameterDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <!-- Service DAO Configuration --> - - <bean id="serviceResourceDao" class="org.openecomp.sdnc.ra.service.dao.ServiceResourceDaoImpl"> - <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> - </bean> - - <!-- ResourceAllocator Configuration --> - - <bean id="allocationRequestBuilder" class="org.openecomp.sdnc.ra.rule.comp.AllocationRequestBuilderImpl"> - <property name="resourceRuleDao" ref="resourceRuleDao" /> - <property name="rangeRuleDao" ref="rangeRuleDao" /> - </bean> - - <bean id="resourceAllocator" class="org.openecomp.sdnc.ra.ResourceAllocator"> - <property name="speedUtil" ref="speedUtil" /> - <property name="parameterDao" ref="parameterDao" /> - <property name="serverDao" ref="serverDao" /> - <property name="vpePortDao" ref="vpePortDao" /> - <property name="vplspePortDao" ref="vplspePortDao" /> - <property name="maxPortSpeedDao" ref="maxPortSpeedDao" /> - <property name="maxServerSpeedDao" ref="maxServerSpeedDao" /> - <property name="serviceResourceDao" ref="serviceResourceDao" /> - <property name="allocationRequestBuilder" ref="allocationRequestBuilder" /> - <property name="resourceManager" ref="resourceManager" /> - <property name="endPointAllocator" ref="endPointAllocator" /> - </bean> - - <!-- EndPointAllocator Configuration --> - - <bean id="endPointAllocator" class="org.openecomp.sdnc.ra.comp.EndPointAllocatorImpl"> - <property name="resourceManager" ref="resourceManager" /> - <property name="endPointAllocationDefinitionMap"> - <map> - <entry key="L3AVPN-PORT"> - <list> - <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> - <property name="serviceModel" value="L3AVPN-PORT" /> - <property name="endPointPosition" value="VPE-Cust" /> - <property name="equipmentReader" ref="vpePortReader" /> - <property name="equipmentCheckList"> - <list> - <ref bean="provStatusCheck" /> - <ref bean="excludeVpeCheck" /> - <ref bean="anyVrfPresentCheck" /> - </list> - </property> - <property name="preferenceRuleList"> - <list> - <ref bean="affinityLinkPref" /> - </list> - </property> - <property name="allocationRuleList"> - <list> - <ref bean="dbAllocationRule" /> - <ref bean="affinityAllocationRule" /> - </list> - </property> - </bean> - </list> - </entry> - <entry key="L3AVPN-EVC"> - <list> - <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> - <property name="serviceModel" value="L3AVPN-EVC" /> - <property name="endPointPosition" value="VPE-Cust" /> - <property name="equipmentReader" ref="vpePortReader" /> - <property name="equipmentCheckList"> - <list> - <ref bean="provStatusCheck" /> - <ref bean="excludeVpeCheck" /> - <ref bean="vpeLockCheck" /> - <ref bean="anyVrfPresentCheck" /> - <ref bean="oneMVrfCheck" /> - <ref bean="hubWithRgCheck" /> - </list> - </property> - <property name="preferenceRuleList"> - <list> - <ref bean="affinityLinkPref" /> - </list> - </property> - <property name="allocationRuleList"> - <list> - <ref bean="dbAllocationRule" /> - <ref bean="vrfAllocationRule" /> - <ref bean="servingSiteAllocationRule" /> - <ref bean="affinityAllocationRule" /> - </list> - </property> - </bean> - </list> - </entry> - </map> - </property> - </bean> - - <!-- Equipment Readers Configuration --> - - <bean id="vpePortReader" class="org.openecomp.sdnc.ra.reader.VpePortReader"> - <property name="vpePortDao" ref="vpePortDao" /> - </bean> - - <!-- Equipment Checks Configuration --> - - <bean id="provStatusCheck" class="org.openecomp.sdnc.ra.check.ProvStatusCheck"> - </bean> - - <bean id="excludeVpeCheck" class="org.openecomp.sdnc.ra.check.ExcludeVpeCheck"> - </bean> - - <bean id="vpeLockCheck" class="org.openecomp.sdnc.ra.check.VpeLockCheck"> - <property name="vpeLockDao" ref="vpeLockDao" /> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <bean id="anyVrfPresentCheck" class="org.openecomp.sdnc.ra.check.AnyVrfPresentCheck"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <bean id="oneMVrfCheck" class="org.openecomp.sdnc.ra.check.OneMVrfCheck"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <bean id="hubWithRgCheck" class="org.openecomp.sdnc.ra.check.HubWithRgCheck"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <!-- Preference Rule Configuration --> - - <bean id="affinityLinkPref" class="org.openecomp.sdnc.ra.pref.AffinityLinkPref"> - <property name="resourceManager" ref="resourceManager" /> - </bean> - - <!-- Resource Allocation Rule Configuration --> - - <bean id="dbAllocationRule" class="org.openecomp.sdnc.ra.alloc.DbAllocationRule"> - <property name="resourceRuleDao" ref="resourceRuleDao" /> - <property name="rangeRuleDao" ref="rangeRuleDao" /> - </bean> - - <bean id="vrfAllocationRule" class="org.openecomp.sdnc.ra.alloc.VrfAllocationRule"> - </bean> - - <bean id="servingSiteAllocationRule" class="org.openecomp.sdnc.ra.alloc.ServingSiteAllocationRule"> - </bean> - - <bean id="affinityAllocationRule" class="org.openecomp.sdnc.ra.alloc.AffinityAllocationRule"> - </bean> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc" + xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans-3.1.xsd + http://www.springframework.org/schema/jdbc + http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context-3.1.xsd + "> + + <context:annotation-config /> + + <!-- JDBC setup --> + + <bean id="test.dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="false"> + <property name="driverClassName" value="org.h2.Driver" /> + <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=MySQL" /> + </bean> + + <jdbc:initialize-database data-source="test.dataSource"> + <jdbc:script location="sql/schema.sql" /> + <jdbc:script location="sql/data.sql" /> + </jdbc:initialize-database> + + <bean id="rm.jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> + <property name="dataSource" ref="test.dataSource" /> + </bean> + + <bean id="testDb" class="jtest.util.org.openecomp.sdnc.ra.TestDb"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="dataSetup" class="jtest.org.openecomp.sdnc.ra.DataSetup"> + <property name="testDb" ref="testDb" /> + </bean> + + <!-- Utils Configuration --> + + <bean id="speedUtil" class="org.openecomp.sdnc.util.speed.SpeedUtil"> + <property name="unitFactor" value="1000" /> + </bean> + + <!-- Resource Lock Configuration --> + + <bean id="resourceLockDao" class="org.openecomp.sdnc.lock.dao.ResourceLockDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + <property name="testing" value="true" /> + </bean> + + <bean id="lockHelper" class="org.openecomp.sdnc.lock.comp.LockHelperImpl"> + <property name="resourceLockDao" ref="resourceLockDao" /> + <property name="retryCount" value="10" /> + <property name="lockWait" value="5" /> <!-- Seconds --> + </bean> + + <!-- RM Configuration --> + + <bean id="resourceJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceJdbcDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="allocationItemJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.AllocationItemJdbcDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="resourceLoadJdbcDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceLoadJdbcDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="resourceDao" class="org.openecomp.sdnc.rm.dao.jdbc.ResourceDaoImpl"> + <property name="resourceJdbcDao" ref="resourceJdbcDao" /> + <property name="allocationItemJdbcDao" ref="allocationItemJdbcDao" /> + <property name="resourceLoadJdbcDao" ref="resourceLoadJdbcDao" /> + </bean> + + <bean id="resourceManager" class="org.openecomp.sdnc.rm.comp.ResourceManagerImpl"> + <property name="lockHelper" ref="lockHelper" /> + <property name="resourceDao" ref="resourceDao" /> + <property name="applicationId" value="SDNC" /> + <property name="lockTimeout" value="600" /> <!-- Seconds --> + </bean> + + <!-- Equipment DAO Configuration --> + + <bean id="serverDao" class="org.openecomp.sdnc.ra.equip.dao.ServerDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="vpePortDao" class="org.openecomp.sdnc.ra.equip.dao.VpePortDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="vplspePortDao" class="org.openecomp.sdnc.ra.equip.dao.VplspePortDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <!-- Rule DAO Configuration --> + + <bean id="maxPortSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxPortSpeedDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + <property name="speedUtil" ref="speedUtil" /> + </bean> + + <bean id="maxServerSpeedDao" class="org.openecomp.sdnc.ra.rule.dao.MaxServerSpeedDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + <property name="speedUtil" ref="speedUtil" /> + </bean> + + <bean id="resourceRuleDao" class="org.openecomp.sdnc.ra.rule.dao.ResourceRuleDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="rangeRuleDao" class="org.openecomp.sdnc.ra.rule.dao.RangeRuleDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="vpeLockDao" class="org.openecomp.sdnc.ra.rule.dao.VpeLockDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <bean id="parameterDao" class="org.openecomp.sdnc.ra.rule.dao.ParameterDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <!-- Service DAO Configuration --> + + <bean id="serviceResourceDao" class="org.openecomp.sdnc.ra.service.dao.ServiceResourceDaoImpl"> + <property name="jdbcTemplate" ref="rm.jdbcTemplate" /> + </bean> + + <!-- ResourceAllocator Configuration --> + + <bean id="allocationRequestBuilder" class="org.openecomp.sdnc.ra.rule.comp.AllocationRequestBuilderImpl"> + <property name="resourceRuleDao" ref="resourceRuleDao" /> + <property name="rangeRuleDao" ref="rangeRuleDao" /> + </bean> + + <bean id="resourceAllocator" class="org.openecomp.sdnc.ra.ResourceAllocator"> + <property name="speedUtil" ref="speedUtil" /> + <property name="parameterDao" ref="parameterDao" /> + <property name="serverDao" ref="serverDao" /> + <property name="vpePortDao" ref="vpePortDao" /> + <property name="vplspePortDao" ref="vplspePortDao" /> + <property name="maxPortSpeedDao" ref="maxPortSpeedDao" /> + <property name="maxServerSpeedDao" ref="maxServerSpeedDao" /> + <property name="serviceResourceDao" ref="serviceResourceDao" /> + <property name="allocationRequestBuilder" ref="allocationRequestBuilder" /> + <property name="resourceManager" ref="resourceManager" /> + <property name="endPointAllocator" ref="endPointAllocator" /> + </bean> + + <!-- EndPointAllocator Configuration --> + + <bean id="endPointAllocator" class="org.openecomp.sdnc.ra.comp.EndPointAllocatorImpl"> + <property name="resourceManager" ref="resourceManager" /> + <property name="endPointAllocationDefinitionMap"> + <map> + <entry key="L3AVPN-PORT"> + <list> + <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> + <property name="serviceModel" value="L3AVPN-PORT" /> + <property name="endPointPosition" value="VPE-Cust" /> + <property name="equipmentReader" ref="vpePortReader" /> + <property name="equipmentCheckList"> + <list> + <ref bean="provStatusCheck" /> + <ref bean="excludeVpeCheck" /> + <ref bean="anyVrfPresentCheck" /> + </list> + </property> + <property name="preferenceRuleList"> + <list> + <ref bean="affinityLinkPref" /> + </list> + </property> + <property name="allocationRuleList"> + <list> + <ref bean="dbAllocationRule" /> + <ref bean="affinityAllocationRule" /> + </list> + </property> + </bean> + </list> + </entry> + <entry key="L3AVPN-EVC"> + <list> + <bean class="org.openecomp.sdnc.ra.comp.EndPointAllocationDefinition"> + <property name="serviceModel" value="L3AVPN-EVC" /> + <property name="endPointPosition" value="VPE-Cust" /> + <property name="equipmentReader" ref="vpePortReader" /> + <property name="equipmentCheckList"> + <list> + <ref bean="provStatusCheck" /> + <ref bean="excludeVpeCheck" /> + <ref bean="vpeLockCheck" /> + <ref bean="anyVrfPresentCheck" /> + <ref bean="oneMVrfCheck" /> + <ref bean="hubWithRgCheck" /> + </list> + </property> + <property name="preferenceRuleList"> + <list> + <ref bean="affinityLinkPref" /> + </list> + </property> + <property name="allocationRuleList"> + <list> + <ref bean="dbAllocationRule" /> + <ref bean="vrfAllocationRule" /> + <ref bean="servingSiteAllocationRule" /> + <ref bean="affinityAllocationRule" /> + </list> + </property> + </bean> + </list> + </entry> + </map> + </property> + </bean> + + <!-- Equipment Readers Configuration --> + + <bean id="vpePortReader" class="org.openecomp.sdnc.ra.reader.VpePortReader"> + <property name="vpePortDao" ref="vpePortDao" /> + </bean> + + <!-- Equipment Checks Configuration --> + + <bean id="provStatusCheck" class="org.openecomp.sdnc.ra.check.ProvStatusCheck"> + </bean> + + <bean id="excludeVpeCheck" class="org.openecomp.sdnc.ra.check.ExcludeVpeCheck"> + </bean> + + <bean id="vpeLockCheck" class="org.openecomp.sdnc.ra.check.VpeLockCheck"> + <property name="vpeLockDao" ref="vpeLockDao" /> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <bean id="anyVrfPresentCheck" class="org.openecomp.sdnc.ra.check.AnyVrfPresentCheck"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <bean id="oneMVrfCheck" class="org.openecomp.sdnc.ra.check.OneMVrfCheck"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <bean id="hubWithRgCheck" class="org.openecomp.sdnc.ra.check.HubWithRgCheck"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <!-- Preference Rule Configuration --> + + <bean id="affinityLinkPref" class="org.openecomp.sdnc.ra.pref.AffinityLinkPref"> + <property name="resourceManager" ref="resourceManager" /> + </bean> + + <!-- Resource Allocation Rule Configuration --> + + <bean id="dbAllocationRule" class="org.openecomp.sdnc.ra.alloc.DbAllocationRule"> + <property name="resourceRuleDao" ref="resourceRuleDao" /> + <property name="rangeRuleDao" ref="rangeRuleDao" /> + </bean> + + <bean id="vrfAllocationRule" class="org.openecomp.sdnc.ra.alloc.VrfAllocationRule"> + </bean> + + <bean id="servingSiteAllocationRule" class="org.openecomp.sdnc.ra.alloc.ServingSiteAllocationRule"> + </bean> + + <bean id="affinityAllocationRule" class="org.openecomp.sdnc.ra.alloc.AffinityAllocationRule"> + </bean> </beans> |