From b1ac7253c276b1848a37f8e16d8aab93e643a97e Mon Sep 17 00:00:00 2001 From: "Timoney, Dan (dt5972)" Date: Fri, 14 Dec 2018 13:00:43 -0500 Subject: [PATCH] Port ODL Oxygen to alpine Add new alpine-based images for OpenDaylight Oxygen container. Change-Id: I49eb198e39a4dd71736175876e2e1af0a85d5228 Issue-ID: CCSDK-841 Signed-off-by: Timoney, Dan (dt5972) --- alpine/pom.xml | 141 ++ alpine/src/main/docker/Dockerfile | 14 + odlsli/odlsli-alpine/pom.xml | 531 ++++++++ odlsli/odlsli-alpine/src/main/docker/Dockerfile | 53 + .../src/main/properties/aaiclient.properties | 82 ++ .../src/main/properties/admportal.json | 68 + .../src/main/properties/admportal.log4js.json | 169 +++ .../src/main/properties/dblib.properties | 38 + .../src/main/properties/mdsal-resource.properties | 27 + .../src/main/properties/sql-resource.properties | 23 + .../src/main/properties/svclogic.properties | 29 + .../main/properties/svclogic.properties.sdnctldb01 | 29 + .../src/main/resources/ansible-sources.list | 2 + .../src/main/resources/idmlight.db.mv.db | Bin 0 -> 45056 bytes .../src/main/resources/install_ccsdk.yml | 15 + .../odlsli-alpine/src/main/resources/odlsli.dump | 1416 ++++++++++++++++++++ .../src/main/resources/org.ops4j.pax.logging.cfg | 92 ++ .../src/main/scripts/installOdlHostKey.sh | 29 + .../src/main/scripts/installSdncDb.sh | 45 + odlsli/odlsli-alpine/src/main/scripts/startODL.sh | 65 + .../src/main/stores/truststore.onap.client.jks | Bin 0 -> 117990 bytes odlsli/odlsli-ubuntu/pom.xml | 531 ++++++++ .../{ => odlsli-ubuntu}/src/main/docker/Dockerfile | 2 +- odlsli/pom.xml | 549 +------- odlsli/src/main/resources/odlsli.dump | 2 + opendaylight/oxygen/oxygen-alpine/pom.xml | 221 +++ .../oxygen-alpine/src/main/docker/Dockerfile | 22 + opendaylight/oxygen/oxygen-ubuntu/pom.xml | 221 +++ .../{ => oxygen-ubuntu}/src/main/docker/Dockerfile | 0 opendaylight/oxygen/pom.xml | 209 +-- pom.xml | 93 +- ubuntu/pom.xml | 4 +- 32 files changed, 3941 insertions(+), 781 deletions(-) create mode 100644 alpine/pom.xml create mode 100644 alpine/src/main/docker/Dockerfile create mode 100644 odlsli/odlsli-alpine/pom.xml create mode 100644 odlsli/odlsli-alpine/src/main/docker/Dockerfile create mode 100755 odlsli/odlsli-alpine/src/main/properties/aaiclient.properties create mode 100755 odlsli/odlsli-alpine/src/main/properties/admportal.json create mode 100755 odlsli/odlsli-alpine/src/main/properties/admportal.log4js.json create mode 100644 odlsli/odlsli-alpine/src/main/properties/dblib.properties create mode 100644 odlsli/odlsli-alpine/src/main/properties/mdsal-resource.properties create mode 100644 odlsli/odlsli-alpine/src/main/properties/sql-resource.properties create mode 100644 odlsli/odlsli-alpine/src/main/properties/svclogic.properties create mode 100755 odlsli/odlsli-alpine/src/main/properties/svclogic.properties.sdnctldb01 create mode 100644 odlsli/odlsli-alpine/src/main/resources/ansible-sources.list create mode 100644 odlsli/odlsli-alpine/src/main/resources/idmlight.db.mv.db create mode 100644 odlsli/odlsli-alpine/src/main/resources/install_ccsdk.yml create mode 100644 odlsli/odlsli-alpine/src/main/resources/odlsli.dump create mode 100644 odlsli/odlsli-alpine/src/main/resources/org.ops4j.pax.logging.cfg create mode 100644 odlsli/odlsli-alpine/src/main/scripts/installOdlHostKey.sh create mode 100644 odlsli/odlsli-alpine/src/main/scripts/installSdncDb.sh create mode 100644 odlsli/odlsli-alpine/src/main/scripts/startODL.sh create mode 100755 odlsli/odlsli-alpine/src/main/stores/truststore.onap.client.jks create mode 100644 odlsli/odlsli-ubuntu/pom.xml rename odlsli/{ => odlsli-ubuntu}/src/main/docker/Dockerfile (97%) create mode 100644 opendaylight/oxygen/oxygen-alpine/pom.xml create mode 100644 opendaylight/oxygen/oxygen-alpine/src/main/docker/Dockerfile create mode 100644 opendaylight/oxygen/oxygen-ubuntu/pom.xml rename opendaylight/oxygen/{ => oxygen-ubuntu}/src/main/docker/Dockerfile (100%) diff --git a/alpine/pom.xml b/alpine/pom.xml new file mode 100644 index 00000000..a60dd1a2 --- /dev/null +++ b/alpine/pom.xml @@ -0,0 +1,141 @@ + + + 4.0.0 + + + org.onap.ccsdk.distribution + distribution-root + 0.4.0-SNAPSHOT + + + distribution-alpine + 0.4.0-SNAPSHOT + pom + + ccsdk-distribution :: alpine + Creates base alpine Docker container + + openECOMP + + + + onap/ccsdk-alpine-image + ${project.version} + + + + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + println project.properties['ccsdk.project.version']; + def versionArray; + if ( project.properties['ccsdk.project.version'] != null ) { + versionArray = project.properties['ccsdk.project.version'].split('\\.'); + } + + if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) + { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } + + println 'New Tag for docker:' + + project.properties['project.docker.latesttag.version']; + + + + + + + + maven-resources-plugin + 2.6 + + + copy-dockerfile + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + src/main/docker + + Dockerfile + + true + + + + + + + + + + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.26.0 + false + + + + + ${image.name} + + try + ${basedir}/target/docker-stage + Dockerfile + + ${project.version} + ${project.version}-STAGING-${maven.build.timestamp} + ${project.docker.latesttag.version} + + + + + + + + generate-images + generate-sources + + build + + + + + push-images + deploy + + build + push + + + + + + + + + + diff --git a/alpine/src/main/docker/Dockerfile b/alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..4bd4d476 --- /dev/null +++ b/alpine/src/main/docker/Dockerfile @@ -0,0 +1,14 @@ +# Base ubuntu with added packages needed for open ecomp +FROM alpine:3.7 +MAINTAINER CCSDK Team (onap-ccsdk@lists.onap.org) + +ARG HTTP_PROXY +ARG HTTPS_PROXY + +ENV HTTP_PROXY ${HTTP_PROXY} +ENV http_proxy ${HTTP_PROXY} +ENV HTTPS_PROXY ${HTTPS_PROXY} +ENV https_proxy ${HTTPS_PROXY} + +# Add tools needed for OpenDaylight +RUN apk update && apk add bash git openjdk8 maven mysql-client nodejs py-pip graphviz unzip rsync diff --git a/odlsli/odlsli-alpine/pom.xml b/odlsli/odlsli-alpine/pom.xml new file mode 100644 index 00000000..c971da23 --- /dev/null +++ b/odlsli/odlsli-alpine/pom.xml @@ -0,0 +1,531 @@ + + + 4.0.0 + + + org.onap.ccsdk.parent + odlparent-lite + 1.2.0-SNAPSHOT + + + + org.onap.ccsdk.distribution + distribution-odlsli-alpine + 0.4.0-SNAPSHOT + pom + + ccsdk-distribution :: odlsli-alpine + Creates SDN Controller Docker container + + openECOMP + + + + onap/ccsdk-odlsli-alpine-image + ${project.version} + ${project.version} + ${https_proxy} + yyyyMMdd'T'HHmmss'Z' + opt/opendaylight + deploy + true + 93C4A3FD7BB9C367 + + + + + ${project.groupId} + dependencies + ${project.version} + repo + zip + + + + org.onap.ccsdk.sli.core + dblib-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + filters-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + sli-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + sliapi-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + sliPluginUtils-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + utils-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + slicore-features-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + aai-service-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + ansible-adapter-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + mdsal-resource-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + resource-assignment-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + netbox-client-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + sql-resource-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + sliadaptors-features-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + asdcApi-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + dataChange-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + lcm-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + slinorthbound-features-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + properties-node-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + restapi-call-node-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + restconf-client-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + sshapi-call-node-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + sliplugins-features-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.features + features-installer + ${ccsdk.features.version} + repo + zip + + + org.onap.ccsdk.features + blueprints-processor-installer + ${ccsdk.features.version} + repo + zip + + + + + + + + org.apache.maven.wagon + wagon-http-lightweight + 2.2 + + + + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + println project.properties['ccsdk.project.version']; + def versionArray; + if (project.properties['ccsdk.project.version'] != null ) { + versionArray = project.properties['ccsdk.project.version'].split('\\.'); + } + + if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) + { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } + + println 'New Tag for docker:' + project.properties['project.docker.latesttag.version']; + + + + + + + + + + maven-resources-plugin + 2.6 + + + copy-dockerfile + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + src/main/docker + + Dockerfile + + true + + + + + + + copy-scripts + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/bin + + + ../src/main/scripts + + *.sh + + false + + + + + + + copy-odl-resources + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + ../src/main/resources + + idmlight.db.mv.db + org.ops4j.pax.logging.cfg + install_ccsdk.yml + ansible-sources.list + + false + + + + + + copy-config + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + ../src/main/resources + + org.ops4j.pax.logging.cfg + + false + + + + + + copy-data + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/data + + + ../src/main/resources + + *.dump + + false + + + + + + copy-properties + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/data/properties + + + ../src/main/properties + + *.properties + + false + + + + + + copy-keystores + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/data/stores + + + ../src/main/stores + + *.jks + + false + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.2 + + + unpack features + generate-sources + + unpack-dependencies + + + ${basedir}/target/docker-stage + true + + + + unpack dgs + generate-sources + + unpack + + + ${basedir}/target/docker-stage/opt/onap/ccsdk + + + ${project.groupId} + platform-logic-installer + ${project.version} + zip + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.5.0 + + + + change shell permissions + process-sources + + exec + + + /usr/bin/find + + ${basedir}/target/docker-stage/opt/onap/ccsdk + -name + *.sh + -exec + chmod + +x + {} + ; + + + + + + + + + + + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.16.5 + false + + + + ${image.name} + + try + ${basedir}/target/docker-stage + ${basedir}/target/docker-stage/Dockerfile + + ${project.version} + ${project.version}-STAGING-${maven.build.timestamp} + ${project.docker.latesttag.version} + + + + + + + + generate-images + package + + build + + + + + push-images + ${docker.push.phase} + + build + push + + + + + + + + + diff --git a/odlsli/odlsli-alpine/src/main/docker/Dockerfile b/odlsli/odlsli-alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..edd1f0f2 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/docker/Dockerfile @@ -0,0 +1,53 @@ +# Base ubuntu with added packages needed for open ecomp +FROM onap/ccsdk-odl-oxygen-alpine-image:${project.version} +MAINTAINER CCSDK Team (onap-ccsdk@lists.onap.org) +ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk +ENV ODL_HOME /opt/opendaylight +ENV SDNC_CONFIG_DIR /opt/onap/ccsdk/data/properties +ENV CCSDK_SLI_CORE_REPO mvn:org.onap.ccsdk.sli.core/ccsdk-sli-core-all/${ccsdk.sli.core.version}/xml/features +ENV CCSDK_SLI_ADAPTORS_REPO mvn:org.onap.ccsdk.sli.adaptors/ccsdk-sli-adaptors-all/${ccsdk.sli.adaptors.version}/xml/features +ENV CCSDK_FEATURES_REPO mvn:org.onap.ccsdk.features/ccsdk-features-all/${ccsdk.features.version}/xml/features +ENV CCSDK_SLI_NORTHBOUND_REPO mvn:org.onap.ccsdk.sli.northbound/ccsdk-sli-northbound-all/${ccsdk.sli.northbound.version}/xml/features +ENV CCSDK_SLI_PLUGINS_REPO mvn:org.onap.ccsdk.sli.plugins/ccsdk-sli-plugins-all/${ccsdk.sli.plugins.version}/xml/features +ENV ANSIBLE_GPG_KEY ${ansible.gpg.key} + +# copy the opendaylight credentials +COPY idmlight.db.mv.db $ODL_HOME/data + + +# copy CCSDK mvn artifacts to ODL repository +COPY system /tmp/system +RUN rsync -a /tmp/system $ODL_HOME && rm -rf /tmp/system + +# Add CCSDK repositories to boot repositories +RUN cp $ODL_HOME/etc/org.apache.karaf.features.cfg $ODL_HOME/etc/org.apache.karaf.features.cfg.orig +RUN cat $ODL_HOME/etc/org.apache.karaf.features.cfg.orig | sed -e "\|featuresRepositories|s|$|, ${CCSDK_SLI_CORE_REPO}, ${CCSDK_SLI_ADAPTORS_REPO}, ${CCSDK_SLI_NORTHBOUND_REPO}, ${CCSDK_SLI_PLUGINS_REPO}, ${CCSDK_FEATURES_REPO}|" > $ODL_HOME/etc/org.apache.karaf.features.cfg +RUN echo featuresBoot=config,standard,region,package,kar,ssh,management,odl-restconf-all,odl-mdsal-all,odl-mdsal-apidocs,odl-daexim-all,ccsdk-sli-core-all,ccsdk-sli-adaptors-all,ccsdk-sli-northbound-all,ccsdk-sli-plugins-all,ccsdk-features-all >> $ODL_HOME/etc/org.apache.karaf.features.cfg + +# Create odl user +RUN adduser -S odl + +# Install ansible +#COPY ansible-sources.list /etc/apt/sources.list.d +#RUN gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv ${ANSIBLE_GPG_KEY} && \ +# gpg --export --armor ${ANSIBLE_GPG_KEY} | apt-key add - && \ +# apk update && \ +# apk add -y ansible + +# Install ansible-opendaylight +#RUN ansible-galaxy install git+https://git.opendaylight.org/gerrit/integration/packaging/ansible-opendaylight + +# Copy ccsdk install playbook +#COPY install_ccsdk.yml /tmp + +# Install features in ODL +#RUN ansible-playbook -i "localhost," -c local /tmp/install_ccsdk.yml + + +# copy deliverables to opt +COPY opt /opt +COPY org.ops4j.pax.logging.cfg /opt/opendaylight/etc/org.ops4j.pax.logging.cfg + + +ENTRYPOINT /opt/onap/ccsdk/bin/startODL.sh +EXPOSE 8181 diff --git a/odlsli/odlsli-alpine/src/main/properties/aaiclient.properties b/odlsli/odlsli-alpine/src/main/properties/aaiclient.properties new file mode 100755 index 00000000..4f27206f --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/aaiclient.properties @@ -0,0 +1,82 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +# +# Configuration file for A&AI Client +# + +# +# Certificate keystore and truststore +# +org.onap.ccsdk.sli.adaptors.aai.ssl.trust=/opt/onap/ccsdk/data/stores/truststore.onap.client.jks +org.onap.ccsdk.sli.adaptors.aai.ssl.trust.psswd=adminadmin +org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore=true + +org.onap.ccsdk.sli.adaptors.aai.client.name=SDNC +org.onap.ccsdk.sli.adaptors.aai.client.psswd=SDNC + +org.onap.ccsdk.sli.adaptors.aai.application=openECOMP +# +# Configuration file for A&AI Client +# +org.onap.ccsdk.sli.adaptors.aai.uri=https://aai.api.simpledemo.onap.org:8443 +connection.timeout=60000 +read.timeout=60000 + +# query +org.onap.ccsdk.sli.adaptors.aai.path.query=/aai/v14/search/sdn-zone-query +org.onap.ccsdk.sli.adaptors.aai.query.nodes=/aai/v14/search/nodes-query?search-node-type={node-type}&filter={entity-identifier}:EQUALS:{entity-name} +org.onap.ccsdk.sli.adaptors.aai.query.generic=/aai/v14/search/generic-query?key={identifier}:{value}&start-node-type={start-node-type}&include=complex&depth=3 + +# named query +org.onap.ccsdk.sli.adaptors.aai.query.named=/aai/search/named-query + +#update +org.onap.ccsdk.sli.adaptors.aai.update=/aai/v14/actions/update + +# UBB Notify +org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v14/actions/notify +org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id} +org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information + +# P-Interfaces +org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterfaces=/aai/v14/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces +org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterface=/aai/v14/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name} + +# VNF IMAGES +org.onap.ccsdk.sli.adaptors.aai.path.vnf.images=/aai/v14/service-design-and-creation/vnf-images +org.onap.ccsdk.sli.adaptors.aai.path.vnf.image=/aai/v14/service-design-and-creation/vnf-images/vnf-image/{att-uuid} +org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v14/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor} + +# service instance +org.onap.ccsdk.sli.adaptors.aai.path.svcinst.query=/aai/v14/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance +org.onap.ccsdk.sli.adaptors.aai.path.service.instance=/aai/v14/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id} + +# VNF IMAGES QUERY +org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v14/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor} + +# +# Formatting +# +org.onap.ccsdk.sli.adaptors.aai.param.format=filter=%s:%s +org.onap.ccsdk.sli.adaptors.aai.param.vnf_type=vnf-type +org.onap.ccsdk.sli.adaptors.aai.param.physical.location.id=physical-location-id +org.onap.ccsdk.sli.adaptors.aai.param.service.type=service-type diff --git a/odlsli/odlsli-alpine/src/main/properties/admportal.json b/odlsli/odlsli-alpine/src/main/properties/admportal.json new file mode 100755 index 00000000..8d567d0c --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/admportal.json @@ -0,0 +1,68 @@ +{ + "MainMenu": "gamma", + "dbConnLimit": "100", + "home": "/opt/admportal", + "sslEnabled": "false", + "nonSslPort": "8843", + "ConexusNetworkPort": "8443", + "AppNetworkPort": "8543", + "clusterPort": "8443", + "serviceHomingServiceType": "SDN-ETHERNET-INTERNET", + "passwordKey": "QtfJMKggVk", + "preloadImportDirectory": "C:/data/csv", + "clusterPrefixURL": "/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-", + "clusterMidURL": "-shard-", + "clusterSuffixURL": "-config,type=DistributedConfigDatastore", + "shards": [ + "default", + "inventory", + "topology" + ], + "dbFabric": "false", + "ip-addresses": { + "lo": "127.0.0.1", + "eth0": "127.0.0.1", + "docker0": "172.17.0.1", + "virbr0": "192.168.122.1" + }, + "svclogicPropertiesDb01": "/opt/onap/sdnc/data/properties/svclogic.properties.sdnctldb01", + "databases": [ + "dbhost|sdnctldb01" + ], + "dbFabricServer": "localhost", + "dbFabricPort": "32275", + "dbFabricGroupId": "hagroup1", + "dbFabricUser": "admin", + "dbFabricPassword": "admin", + "dbFabricDB": "mysql", + "dbUser": "sdnctl", + "dbPassword": "gamma", + "dbName": "sdnctl", + "odlProtocol": "http", + "odlHost": "sdnhost", + "odlConexusHost": "sdnhost", + "odlPort": "8181", + "odlConexusPort": "8181", + "odlUser": "admin", + "odlPasswd": "admin", + "ConexusNetwork_sslCert": "", + "ConexusNetwork_sslKey": "", + "AppNetwork_sslCert": "", + "AppNetwork_sslKey": "", + "hostnameList": [ + { + "hname": "localhost" + } + ], + "shard_list": [ + { + "shard_name": "default" + }, + { + "shard_name": "inventory" + }, + { + "shard_name": "topology" + } + ] +} diff --git a/odlsli/odlsli-alpine/src/main/properties/admportal.log4js.json b/odlsli/odlsli-alpine/src/main/properties/admportal.log4js.json new file mode 100755 index 00000000..0f41e564 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/admportal.log4js.json @@ -0,0 +1,169 @@ +{ + "appenders": [ + { + "category": "accesslog", + "type" : "file", + "absolute": true, + "filename": "/opt/admportal/logs/accesslog.log" + }, + { + "category" : "usertrace", + "type" : "file", + "absolute" : true, + "filename" : "/opt/admportal/logs/usertrace.log" + }, + { + "category": "tracelog", + "type" : "dateFile", + "absolute": true, + "filename": "/opt/admportal/logs/tracelog.log", + "pattern": "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "tunnel", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/tunnel.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "preload", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/preload.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "eipam", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/eipam.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "instar", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/instar.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "app", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/app.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "csp", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/csp.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "db", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/db.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "admin", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/admin.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "resalloc", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/resalloc.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "logs", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/applogs.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "sla", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/sla.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "gamma", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/gamma.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "odl", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/odl.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "mobility", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/mobility.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "ucpe", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/ucpe.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + }, + { + "category" : "user", + "type" : "dateFile", + "absolute" : true, + "filename" : "/opt/admportal/logs/user.log", + "pattern" : "-yyyy-MM-dd", + "alwaysIncludePattern": true, + "backups" : 14 + } + ] +} diff --git a/odlsli/odlsli-alpine/src/main/properties/dblib.properties b/odlsli/odlsli-alpine/src/main/properties/dblib.properties new file mode 100644 index 00000000..9506ac8d --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/dblib.properties @@ -0,0 +1,38 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +# dblib.properrties +org.onap.ccsdk.sli.dbtype=jdbc + +org.onap.ccsdk.sli.jdbc.hosts=sdnctldb01 +org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl +org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver +org.onap.ccsdk.sli.jdbc.database=sdnctl +org.onap.ccsdk.sli.jdbc.user=sdnctl +org.onap.ccsdk.sli.jdbc.password=gamma +org.onap.ccsdk.sli.jdbc.connection.name=sdnctldb01 +org.onap.ccsdk.sli.jdbc.connection.timeout=50 +org.onap.ccsdk.sli.jdbc.request.timeout=100 +org.onap.ccsdk.sli.jdbc.limit.init=10 +org.onap.ccsdk.sli.jdbc.limit.min=10 +org.onap.ccsdk.sli.jdbc.limit.max=20 +org.onap.dblib.connection.recovery=false + diff --git a/odlsli/odlsli-alpine/src/main/properties/mdsal-resource.properties b/odlsli/odlsli-alpine/src/main/properties/mdsal-resource.properties new file mode 100644 index 00000000..d8537471 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/mdsal-resource.properties @@ -0,0 +1,27 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-user=admin +org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-passwd=admin +org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-host=localhost +org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-protocol=http +org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-port=8181 + diff --git a/odlsli/odlsli-alpine/src/main/properties/sql-resource.properties b/odlsli/odlsli-alpine/src/main/properties/sql-resource.properties new file mode 100644 index 00000000..ac32f773 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/sql-resource.properties @@ -0,0 +1,23 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +org.openecomp.sdnc.resource.sql.cryptkey=QtfJMKggVk + diff --git a/odlsli/odlsli-alpine/src/main/properties/svclogic.properties b/odlsli/odlsli-alpine/src/main/properties/svclogic.properties new file mode 100644 index 00000000..54d667cf --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/svclogic.properties @@ -0,0 +1,29 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +org.onap.ccsdk.sli.dbtype = dblib +#Note : the next 4 fields are only used if org.onap.ccsdk.sli.dbtype = jdbc +org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl +org.onap.ccsdk.sli.jdbc.database=sdnctl +org.onap.ccsdk.sli.jdbc.user=sdnctl +org.onap.ccsdk.sli.jdbc.password=gamma + +org.xml.sax.driver=org.apache.xerces.parsers.SAXParser diff --git a/odlsli/odlsli-alpine/src/main/properties/svclogic.properties.sdnctldb01 b/odlsli/odlsli-alpine/src/main/properties/svclogic.properties.sdnctldb01 new file mode 100755 index 00000000..54d667cf --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/properties/svclogic.properties.sdnctldb01 @@ -0,0 +1,29 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +org.onap.ccsdk.sli.dbtype = dblib +#Note : the next 4 fields are only used if org.onap.ccsdk.sli.dbtype = jdbc +org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl +org.onap.ccsdk.sli.jdbc.database=sdnctl +org.onap.ccsdk.sli.jdbc.user=sdnctl +org.onap.ccsdk.sli.jdbc.password=gamma + +org.xml.sax.driver=org.apache.xerces.parsers.SAXParser diff --git a/odlsli/odlsli-alpine/src/main/resources/ansible-sources.list b/odlsli/odlsli-alpine/src/main/resources/ansible-sources.list new file mode 100644 index 00000000..7e166f23 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/resources/ansible-sources.list @@ -0,0 +1,2 @@ +deb http://ppa.launchpad.net/ansible/ansible/ubuntu xenial main +deb-src http://ppa.launchpad.net/ansible/ansible/ubuntu xenial main \ No newline at end of file diff --git a/odlsli/odlsli-alpine/src/main/resources/idmlight.db.mv.db b/odlsli/odlsli-alpine/src/main/resources/idmlight.db.mv.db new file mode 100644 index 0000000000000000000000000000000000000000..c6b359d8181513db0b28bd28f0f7b7fca8af8ed0 GIT binary patch literal 45056 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 JDhCw*|9`Pj((C{L literal 0 HcmV?d00001 diff --git a/odlsli/odlsli-alpine/src/main/resources/install_ccsdk.yml b/odlsli/odlsli-alpine/src/main/resources/install_ccsdk.yml new file mode 100644 index 00000000..c478bfea --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/resources/install_ccsdk.yml @@ -0,0 +1,15 @@ +--- +- hosts: all + become: yes + roles: + - role: ansible-opendaylight + # ODL is already installed, so no need to specify installation method. Specify extra features to install + extra_features: + - odl-restconf-all + - odl-mdsal-all + - odl-mdsal-apidocs + - odl-daexim-all + - ccsdk-sli-core-all + - ccsdk-sli-adaptors-all + - ccsdk-sli-northbound-all + - ccsdk-sli-plugins-all \ No newline at end of file diff --git a/odlsli/odlsli-alpine/src/main/resources/odlsli.dump b/odlsli/odlsli-alpine/src/main/resources/odlsli.dump new file mode 100644 index 00000000..6f8217c4 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/resources/odlsli.dump @@ -0,0 +1,1416 @@ +-- MySQL dump 10.13 Distrib 5.6.22, for Linux (x86_64) +-- +-- Host: sdnctldb01 Database: sdnctl +-- ------------------------------------------------------ +-- Server version 5.6.27-enterprise-commercial-advanced-log + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN; +SET @@SESSION.SQL_LOG_BIN= 0; + +-- +-- Table structure for table `ALLOCATION_ITEM` +-- + +DROP TABLE IF EXISTS `ALLOCATION_ITEM`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `ALLOCATION_ITEM` ( + `allocation_item_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `resource_id` bigint(20) NOT NULL, + `application_id` varchar(50) NOT NULL, + `resource_set_id` varchar(200) NOT NULL, + `resource_union_id` varchar(200) NOT NULL, + `resource_share_group_list` varchar(200) DEFAULT NULL, + `lt_used` bigint(20) DEFAULT NULL, + `ll_label` varchar(50) DEFAULT NULL, + `rr_used` varchar(200) DEFAULT NULL, + `allocation_time` datetime NOT NULL, + PRIMARY KEY (`allocation_item_id`), + UNIQUE KEY `allocation_item_id` (`allocation_item_id`), + UNIQUE KEY `IX2_ALLOCATION_ITEM` (`resource_id`,`resource_set_id`), + KEY `IX1_ALLOCATION_ITEM` (`resource_id`) +) ENGINE=InnoDB AUTO_INCREMENT=10104 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + + +-- +-- Table structure for table `DATA_OBJECT_MAPPING` +-- + +DROP TABLE IF EXISTS `DATA_OBJECT_MAPPING`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `DATA_OBJECT_MAPPING` ( + `serial_key` int(11) NOT NULL AUTO_INCREMENT, + `data_object_key` varchar(100) NOT NULL, + `data_object_type` varchar(50) NOT NULL, + `service_type` varchar(50) NOT NULL, + `data_object_key2` varchar(100) NOT NULL, + `data_object_key2_type` varchar(50) NOT NULL, + PRIMARY KEY (`serial_key`), + KEY `IX1_DATA_OBJECT_MAPPING` (`data_object_key`,`data_object_type`,`service_type`), + KEY `IX2_DATA_OBJECT_MAPPING` (`service_type`,`data_object_key2`,`data_object_key2_type`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `DEVICE2CONNECTION_MAPPING` +-- + +DROP TABLE IF EXISTS `DEVICE2CONNECTION_MAPPING`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `DEVICE2CONNECTION_MAPPING` ( + `vnf_host_name` varchar(100) NOT NULL, + `e2e_vpn_key` varchar(30) NOT NULL, + `service_type` varchar(30) NOT NULL, + `connection_id` bigint(20) NOT NULL, + PRIMARY KEY (`vnf_host_name`,`e2e_vpn_key`,`service_type`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `DEVICE2IPADDRESS_CONSUMPTION` +-- + +DROP TABLE IF EXISTS `DEVICE2IPADDRESS_CONSUMPTION`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `DEVICE2IPADDRESS_CONSUMPTION` ( + `serial_key` int(11) NOT NULL AUTO_INCREMENT, + `device_id` varchar(100) NOT NULL, + `device_type` varchar(30) NOT NULL, + `ip_version` varchar(10) NOT NULL, + `consumption_key` varchar(100) NOT NULL, + `logical_interface_service_id` varchar(100) NOT NULL, + `address_type` varchar(30) NOT NULL, + `ip_consumed` varchar(50) NOT NULL, + `vnf_type` varchar(30) NOT NULL, + PRIMARY KEY (`serial_key`), + KEY `IX1_DEVICEIPADDRESS_CONSUMPTION` (`device_id`,`device_type`,`ip_version`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `DEVICE2IPADDRESS_MAPPING` +-- + +DROP TABLE IF EXISTS `DEVICE2IPADDRESS_MAPPING`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `DEVICE2IPADDRESS_MAPPING` ( + `serial_key` int(11) NOT NULL AUTO_INCREMENT, + `device_id` varchar(100) NOT NULL, + `device_type` varchar(30) NOT NULL, + `secondary_key` varchar(100) NOT NULL, + `secondary_key_type` varchar(30) NOT NULL, + `address` varchar(50) NOT NULL, + `address_type` varchar(30) NOT NULL, + `ip_version` varchar(10) NOT NULL, + `length` int(11) NOT NULL, + `status` varchar(30) NOT NULL, + PRIMARY KEY (`serial_key`), + KEY `IX1_DEVICE2IPADDRESS_MAPPING` (`device_id`,`device_type`,`secondary_key`,`secondary_key_type`,`address`,`address_type`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `EIPAM_IP_ASSIGNMENTS` +-- + +DROP TABLE IF EXISTS `EIPAM_IP_ASSIGNMENTS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `EIPAM_IP_ASSIGNMENTS` ( + `plan_name` varchar(40) NOT NULL, + `client_key` varchar(100) NOT NULL, + `service_type` varchar(40) NOT NULL, + `ip_address` varchar(40) DEFAULT NULL, + `prefix_length` int(2) DEFAULT NULL, + `status` varchar(20) DEFAULT NULL, + `service_instance_id` varchar(80) DEFAULT NULL, + `last_modified_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `prev_status` varchar(20) DEFAULT NULL, + PRIMARY KEY (`plan_name`,`client_key`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `EIPAM_IP_SUBNETS` +-- + +DROP TABLE IF EXISTS `EIPAM_IP_SUBNETS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `EIPAM_IP_SUBNETS` ( + `entity_id` int(6) NOT NULL, + `service_type` varchar(40) NOT NULL, + `plan_name` varchar(40) NOT NULL, + `address_family` varchar(10) NOT NULL, + `ip_address` varchar(40) NOT NULL, + `prefix_length` int(3) NOT NULL, + `status` varchar(20) NOT NULL, + `last_modified_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`entity_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `EIPAM_IP_SUBNET_KEYS` +-- + +DROP TABLE IF EXISTS `EIPAM_IP_SUBNET_KEYS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `EIPAM_IP_SUBNET_KEYS` ( + `entity_id` int(6) NOT NULL, + `key_name` varchar(255) NOT NULL, + `key_value` varchar(50) NOT NULL, + `level` int(2) NOT NULL, + PRIMARY KEY (`entity_id`,`key_name`,`key_value`,`level`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `EIPAM_REQUEST_KEY` +-- + +DROP TABLE IF EXISTS `EIPAM_REQUEST_KEY`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `EIPAM_REQUEST_KEY` ( + `key_name_1` varchar(50) NOT NULL, + `address_family` varchar(4) NOT NULL, + `serial_key` int(2) NOT NULL AUTO_INCREMENT, + `plan_name` varchar(50) NOT NULL, + `request_length` int(2) NOT NULL, + `pools_length` int(2) NOT NULL, + `plan_length` int(2) NOT NULL, + `key_name_0` varchar(50) NOT NULL, + `key_name_type_0` varchar(255) NOT NULL, + `key_name_type_1` varchar(255) NOT NULL, + `prefix_length` int(2) NOT NULL, + `group_flag` char(1) NOT NULL, + `address_type` varchar(20) DEFAULT NULL, + PRIMARY KEY (`key_name_1`,`address_family`), + UNIQUE KEY `IX1_EIPAM_REQUEST_KEY` (`serial_key`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_L3_NETWORK` +-- + +DROP TABLE IF EXISTS `GENERIC_L3_NETWORK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_L3_NETWORK` ( + `network_id` varchar(80) NOT NULL, + `network_name` varchar(80) DEFAULT NULL, + `network_type` varchar(80) DEFAULT NULL, + `network_role` varchar(80) DEFAULT NULL, + `network_technology` varchar(80) DEFAULT NULL, + `neutron_network_id` varchar(80) DEFAULT NULL, + `is_bound_to_vpn` tinyint(1) DEFAULT NULL, + `orchestration_status` varchar(20) DEFAULT NULL, + `heat_stack_id` varchar(80) DEFAULT NULL, + `mso_catalog_key` varchar(80) DEFAULT NULL, + `service_id` varchar(80) NOT NULL, + `tenant_id` varchar(80) NOT NULL, + `physical_location_id` varchar(20) DEFAULT NULL, + `network_role_instance` varchar(80) NOT NULL, + PRIMARY KEY (`network_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_L3_NETWORK_SUBNET` +-- + +DROP TABLE IF EXISTS `GENERIC_L3_NETWORK_SUBNET`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_L3_NETWORK_SUBNET` ( + `network_id` varchar(80) NOT NULL, + `subnet_id` varchar(80) NOT NULL, + `neutron_subnet_id` varchar(80) DEFAULT NULL, + `gateway_address` varchar(45) NOT NULL, + `network_start_address` varchar(45) NOT NULL, + `cidr_mask` varchar(20) NOT NULL, + `ip_version` char(1) NOT NULL, + `orchestration_status` varchar(64) NOT NULL, + `dhcp_enabled` tinyint(1) NOT NULL, + `dhcp_start` varchar(45) DEFAULT NULL, + `dhcp_end` varchar(45) DEFAULT NULL, + PRIMARY KEY (`network_id`,`subnet_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_L3_NETWORK_VPN_BINDING` +-- + +DROP TABLE IF EXISTS `GENERIC_L3_NETWORK_VPN_BINDING`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_L3_NETWORK_VPN_BINDING` ( + `network_id` varchar(80) NOT NULL, + `vpn_id` varchar(80) NOT NULL, + PRIMARY KEY (`network_id`,`vpn_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF` ( + `vnf_id` varchar(80) NOT NULL, + `vnf_name` varchar(80) NOT NULL, + `vnf_type` varchar(200) NOT NULL, + `vnf_name2` varchar(80) DEFAULT NULL, + `service_id` varchar(80) NOT NULL, + `equipment_role` varchar(80) NOT NULL, + `orchestration_status` varchar(20) DEFAULT NULL, + `prov_status` varchar(20) DEFAULT NULL, + `heat_stack_id` varchar(80) DEFAULT NULL, + `mso_catalog_key` varchar(80) DEFAULT NULL, + `regional_resource_zone` varchar(80) DEFAULT NULL, + `operational_state` varchar(80) DEFAULT NULL, + `license_key` varchar(80) DEFAULT NULL, + `ipv4_oam_address` varchar(20) DEFAULT NULL, + `ipv4_loopback0_address` varchar(20) DEFAULT NULL, + `nm_lan_v6_address` varchar(40) DEFAULT NULL, + `management_v6_address` varchar(40) DEFAULT NULL, + `management_option` varchar(45) DEFAULT NULL, + `vcpu` varchar(45) DEFAULT NULL, + `vmemory` varchar(45) DEFAULT NULL, + `vdisk` varchar(45) DEFAULT NULL, + `vcpu_units` varchar(45) DEFAULT NULL, + `vmemory_units` varchar(45) DEFAULT NULL, + `vdisk_units` varchar(45) DEFAULT NULL, + PRIMARY KEY (`vnf_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_L3_NETWORK` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_L3_NETWORK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_L3_NETWORK` ( + `vnf_id` varchar(80) NOT NULL, + `network_id` varchar(80) NOT NULL, + PRIMARY KEY (`vnf_id`,`network_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_LICENSE_MANAGEMENT` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_LICENSE_MANAGEMENT`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_LICENSE_MANAGEMENT` ( + `vnf_id` varchar(80) NOT NULL, + `att_uuid` varchar(80) NOT NULL, + PRIMARY KEY (`vnf_id`,`att_uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_LINTERFACE` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_LINTERFACE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_LINTERFACE` ( + `vnf_id` varchar(80) NOT NULL, + `interface_name` varchar(255) NOT NULL, + `interface_role` varchar(45) DEFAULT NULL, + `v6_wan_link_ip` varchar(45) DEFAULT NULL, + `selflink` varchar(128) DEFAULT NULL, + `interface_id` varchar(45) DEFAULT NULL, + `macaddr` varchar(64) DEFAULT NULL, + `network_name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`vnf_id`,`interface_name`), + KEY `FK_GENERIC_VNF_LINTERFACE_GENERIC_VNF_IDX` (`vnf_id`), + CONSTRAINT `FK_GENERIC_VNF_LINTERFACE_GENERIC_VNF` FOREIGN KEY (`vnf_id`) REFERENCES `GENERIC_VNF` (`vnf_id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_PSERVER` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_PSERVER`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_PSERVER` ( + `vnf_id` varchar(64) NOT NULL, + `hostname` varchar(255) NOT NULL, + PRIMARY KEY (`vnf_id`,`hostname`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_SERVICE_INSTANCE` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_SERVICE_INSTANCE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_SERVICE_INSTANCE` ( + `vnf_id` varchar(64) NOT NULL, + `service_instance_id` varchar(255) NOT NULL, + `relationship_key` varchar(64) NOT NULL, + `relationship_value` varchar(64) DEFAULT NULL, + `global_customer_id` varchar(255) DEFAULT NULL, + `service_type` varchar(255) DEFAULT NULL, + PRIMARY KEY (`vnf_id`,`service_instance_id`,`relationship_key`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_VNF_IMAGE` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_VNF_IMAGE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_VNF_IMAGE` ( + `vnf_id` varchar(64) NOT NULL, + `att_uuid` varchar(255) NOT NULL, + PRIMARY KEY (`vnf_id`,`att_uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VNF_VSERVER` +-- + +DROP TABLE IF EXISTS `GENERIC_VNF_VSERVER`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VNF_VSERVER` ( + `vnf_id` varchar(80) NOT NULL, + `vserver_id` varchar(128) NOT NULL, + `tenant_id` varchar(128) DEFAULT NULL, + PRIMARY KEY (`vnf_id`,`vserver_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `GENERIC_VPN_BINDING` +-- + +DROP TABLE IF EXISTS `GENERIC_VPN_BINDING`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `GENERIC_VPN_BINDING` ( + `vpn_id` varchar(80) NOT NULL, + `vpn_name` varchar(80) NOT NULL, + `global_route_target` varchar(80) NOT NULL, + PRIMARY KEY (`vpn_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `HOSTNAME` +-- + +DROP TABLE IF EXISTS `HOSTNAME`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `HOSTNAME` ( + `hostname` varchar(21) NOT NULL, + `parent_hostname` varchar(21) DEFAULT NULL, + `cust_id` int(11) NOT NULL, + `loc_id` int(11) NOT NULL, + `site_sequence` varchar(2) NOT NULL, + `server_sequence` varchar(2) NOT NULL, + `activation_code` varchar(11) DEFAULT NULL, + `vnf_sequence` varchar(2) DEFAULT NULL, + `vendor_code` varchar(1) NOT NULL, + `virtual_device_type` varchar(2) DEFAULT NULL, + `device_sequence` varchar(3) DEFAULT NULL, + `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`hostname`), + KEY `IN1_HOSTNAME` (`cust_id`), + KEY `IN2_HOSTNAME` (`loc_id`), + KEY `IN3_HOSTNAME` (`vendor_code`), + KEY `IN4_HOSTNAME` (`parent_hostname`), + CONSTRAINT `FK1_HOSTNAME` FOREIGN KEY (`cust_id`) REFERENCES `CUSTOMER` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `FK2_HOSTNAME` FOREIGN KEY (`loc_id`) REFERENCES `LOCATION` (`loc_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `FK3_HOSTNAME` FOREIGN KEY (`vendor_code`) REFERENCES `VENDOR_CODE` (`vendor_code`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `FK4_HOSTNAME` FOREIGN KEY (`parent_hostname`) REFERENCES `HOSTNAME` (`hostname`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `IPV4_ADDRESS_POOL` +-- + +DROP TABLE IF EXISTS `IPV4_ADDRESS_POOL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `IPV4_ADDRESS_POOL` ( + `aic_site_id` varchar(100) NOT NULL, + `universe` varchar(40) NOT NULL, + `status` varchar(40) NOT NULL, + `ipv4_addr` varchar(20) NOT NULL, + PRIMARY KEY (`ipv4_addr`,`universe`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `LINTERFACE_VLAN` +-- + +DROP TABLE IF EXISTS `LINTERFACE_VLAN`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `LINTERFACE_VLAN` ( + `vnf_id` varchar(80) NOT NULL, + `interface_name` varchar(255) NOT NULL, + `vlan_interface` varchar(255) NOT NULL, + `vlan_id_inner` varchar(64) DEFAULT NULL, + `vlan_id_outer` varchar(64) DEFAULT NULL, + PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`), + KEY `FK_LINTERFACE_VLAN_GENERIC_VNF_LINTERFACE_IDX` (`vnf_id`,`interface_name`), + CONSTRAINT `FK_LINTERFACE_VLAN_GENERIC_VNF_LINTERFACE` FOREIGN KEY (`vnf_id`, `interface_name`) REFERENCES `GENERIC_VNF_LINTERFACE` (`vnf_id`, `interface_name`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `LOCATION` +-- + +DROP TABLE IF EXISTS `LOCATION`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `LOCATION` ( + `loc_id` int(11) NOT NULL AUTO_INCREMENT, + `address` varchar(150) NOT NULL, + `city_code_id` int(11) NOT NULL, + `create_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`loc_id`), + KEY `IN1_LOCATION_IDX` (`city_code_id`), + CONSTRAINT `FK1_LOCATION` FOREIGN KEY (`city_code_id`) REFERENCES `CITY_CODE` (`city_code_id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `MAX_PORT_SPEED` +-- + +DROP TABLE IF EXISTS `MAX_PORT_SPEED`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `MAX_PORT_SPEED` ( + `max_port_speed_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `image_file_name` varchar(50) NOT NULL, + `end_point_position` varchar(50) NOT NULL, + `interface_name` varchar(100) NOT NULL, + `max_speed` bigint(20) NOT NULL, + `unit` varchar(10) NOT NULL, + PRIMARY KEY (`max_port_speed_id`), + UNIQUE KEY `max_port_speed_id` (`max_port_speed_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `MAX_SERVER_SPEED` +-- + +DROP TABLE IF EXISTS `MAX_SERVER_SPEED`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `MAX_SERVER_SPEED` ( + `max_server_speed_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `server_model` varchar(50) NOT NULL, + `evc_count` smallint(6) NOT NULL, + `max_speed` bigint(20) NOT NULL, + `unit` varchar(10) NOT NULL, + `description` varchar(500) DEFAULT NULL, + PRIMARY KEY (`max_server_speed_id`), + UNIQUE KEY `max_server_speed_id` (`max_server_speed_id`) +) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +-- +-- Table structure for table `NETWORK_PROFILE` +-- + +DROP TABLE IF EXISTS `NETWORK_PROFILE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `NETWORK_PROFILE` ( + `network_type` varchar(100) NOT NULL, + `technology` varchar(100) NOT NULL, + PRIMARY KEY (`network_type`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `NETWORK_ROLE_VPN_BINDING` +-- + +DROP TABLE IF EXISTS `NETWORK_ROLE_VPN_BINDING`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `NETWORK_ROLE_VPN_BINDING` ( + `network_role` varchar(80) NOT NULL, + `vpn_id` varchar(80) NOT NULL, + PRIMARY KEY (`network_role`,`vpn_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `NODE_TYPES` +-- + +DROP TABLE IF EXISTS `NODE_TYPES`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `NODE_TYPES` ( + `nodetype` varchar(80) NOT NULL, + PRIMARY KEY (`nodetype`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `PARAMETERS` +-- + +DROP TABLE IF EXISTS `PARAMETERS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PARAMETERS` ( + `name` varchar(100) NOT NULL, + `value` varchar(24) NOT NULL, + `category` varchar(24) DEFAULT NULL, + `memo` varchar(128) DEFAULT NULL, + PRIMARY KEY (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `PHYSICAL_LINK` +-- + +DROP TABLE IF EXISTS `PHYSICAL_LINK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PHYSICAL_LINK` ( + `link_name` varchar(255) NOT NULL, + `speed_value` varchar(64) DEFAULT NULL, + `speed_units` varchar(64) DEFAULT NULL, + `circuit_id` varchar(255) NOT NULL, + `dual_mode` varchar(64) NOT NULL, + PRIMARY KEY (`link_name`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `PHYSICAL_LINK_PINTERFACE` +-- + +DROP TABLE IF EXISTS `PHYSICAL_LINK_PINTERFACE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PHYSICAL_LINK_PINTERFACE` ( + `link_name` varchar(255) NOT NULL, + `hostname` varchar(255) NOT NULL, + `port_name_ft` varchar(255) NOT NULL, + PRIMARY KEY (`link_name`,`hostname`,`port_name_ft`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `PINTERFACE` +-- + +DROP TABLE IF EXISTS `PINTERFACE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PINTERFACE` ( + `hostname` varchar(255) NOT NULL, + `port_name_ft` varchar(255) NOT NULL, + `interface_name` varchar(255) DEFAULT '', + `physical_speed` varchar(255) DEFAULT '', + `physical_units` varchar(255) DEFAULT '', + `port_description` varchar(255) DEFAULT '', + PRIMARY KEY (`hostname`,`port_name_ft`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `PORTAL_USERS` +-- + +DROP TABLE IF EXISTS `PORTAL_USERS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PORTAL_USERS` ( + `email` varchar(64) NOT NULL, + `password` varbinary(255) NOT NULL, + `privilege` char(1) NOT NULL, + PRIMARY KEY (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + + +-- +-- Table structure for table `PSERVER` +-- + +DROP TABLE IF EXISTS `PSERVER`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `PSERVER` ( + `hostname` varchar(255) NOT NULL, + `ptnii_equip_name` varchar(255) DEFAULT '', + `number_of_cpus` varchar(255) DEFAULT '', + `disk_in_gigabytes` varchar(255) DEFAULT '', + `ram_in_megabytes` varchar(255) DEFAULT '', + `equip_type` varchar(255) DEFAULT '', + `equip_vendor` varchar(255) DEFAULT '', + `equip_model` varchar(255) DEFAULT '', + `fqdn` varchar(255) DEFAULT '', + `pserver_selflink` varchar(255) DEFAULT '', + `ipv4_oam_address` varchar(40) DEFAULT NULL, + `serial_number` varchar(255) DEFAULT '', + `pserver_id` varchar(255) DEFAULT '', + `internet_topology` varchar(40) DEFAULT '', + `aic_site_id` varchar(100) DEFAULT '', + `in_maint` varchar(5) DEFAULT '', + `pserver_name2` varchar(255) DEFAULT '', + `purpose` varchar(255) DEFAULT '', + PRIMARY KEY (`hostname`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `RANGE_RULE` +-- + +DROP TABLE IF EXISTS `RANGE_RULE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RANGE_RULE` ( + `range_rule_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `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, + `equipment_expression` varchar(2000) NOT NULL, + `ranges` varchar(100) NOT NULL, + PRIMARY KEY (`range_rule_id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `RESOURCE` +-- + +DROP TABLE IF EXISTS `RESOURCE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RESOURCE` ( + `resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `asset_id` varchar(100) NOT NULL, + `resource_name` varchar(50) NOT NULL, + `resource_type` enum('Limit','Label','Range') NOT NULL, + `lt_used` bigint(20) DEFAULT NULL, + `ll_label` varchar(50) DEFAULT NULL, + `ll_reference_count` smallint(6) DEFAULT NULL, + `rr_used` varchar(4000) DEFAULT NULL, + PRIMARY KEY (`resource_id`), + UNIQUE KEY `resource_id` (`resource_id`), + UNIQUE KEY `IX1_RESOURCE` (`asset_id`,`resource_name`) +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `RESOURCE_LOAD` +-- + +DROP TABLE IF EXISTS `RESOURCE_LOAD`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RESOURCE_LOAD` ( + `resource_load_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `resource_id` bigint(20) NOT NULL, + `application_id` varchar(20) NOT NULL, + `resource_load_time` datetime NOT NULL, + `resource_expiration_time` datetime DEFAULT NULL, + PRIMARY KEY (`resource_load_id`), + UNIQUE KEY `resource_load_id` (`resource_load_id`), + UNIQUE KEY `IX2_RESOURCE_LOAD` (`resource_id`,`application_id`), + KEY `IX1_RESOURCE_LOAD` (`resource_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `RESOURCE_LOCK` +-- + +DROP TABLE IF EXISTS `RESOURCE_LOCK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RESOURCE_LOCK` ( + `resource_lock_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `resource_name` varchar(50) NOT NULL, + `lock_holder` varchar(100) NOT NULL, + `lock_count` smallint(6) NOT NULL, + `lock_time` datetime NOT NULL, + `expiration_time` datetime NOT NULL, + PRIMARY KEY (`resource_lock_id`), + UNIQUE KEY `resource_lock_id` (`resource_lock_id`), + UNIQUE KEY `IX1_RESOURCE_LOCK` (`resource_name`) +) ENGINE=InnoDB AUTO_INCREMENT=2951 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `RESOURCE_RULE` +-- + +DROP TABLE IF EXISTS `RESOURCE_RULE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `RESOURCE_RULE` ( + `resource_rule_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `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, + PRIMARY KEY (`resource_rule_id`), + UNIQUE KEY `resource_rule_id` (`resource_rule_id`) +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `RESOURCE_THRESHOLD` +-- + +DROP TABLE IF EXISTS `RESOURCE_THRESHOLD`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +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`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + + +-- +-- Table structure for table `SERVICE_RESOURCE` +-- + +DROP TABLE IF EXISTS `SERVICE_RESOURCE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SERVICE_RESOURCE` ( + `service_resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `service_instance_id` varchar(80) NOT NULL, + `service_status` enum('Active','Pending') NOT NULL, + `service_change_number` smallint(6) NOT NULL, + `resource_set_id` varchar(100) NOT NULL, + `resource_union_id` varchar(100) NOT NULL, + PRIMARY KEY (`service_instance_id`,`service_change_number`), + UNIQUE KEY `service_resource_id` (`service_resource_id`), + KEY `IX1_SERVICE_RESOURCE` (`service_instance_id`) +) ENGINE=InnoDB AUTO_INCREMENT=2203 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `SVC_LOGIC` +-- + +DROP TABLE IF EXISTS `SVC_LOGIC`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `SVC_LOGIC` ( + `module` varchar(80) NOT NULL, + `rpc` varchar(80) NOT NULL, + `version` varchar(40) NOT NULL, + `mode` varchar(5) NOT NULL, + `active` varchar(1) NOT NULL, + `graph` longblob, + PRIMARY KEY (`module`,`rpc`,`version`,`mode`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `TENANT` +-- + +DROP TABLE IF EXISTS `TENANT`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `TENANT` ( + `tenant_id` varchar(255) NOT NULL, + `tenant_name` varchar(255) NOT NULL, + `service_instance_id` varchar(255) NOT NULL, + PRIMARY KEY (`tenant_id`,`tenant_name`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `THRESHOLD_NOTIFICATION` +-- + +DROP TABLE IF EXISTS `THRESHOLD_NOTIFICATION`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `THRESHOLD_NOTIFICATION` ( + `resource_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `threshold_expression` varchar(2000) DEFAULT NULL, + `threshold_message` varchar(500) DEFAULT NULL, + PRIMARY KEY (`resource_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + + +-- +-- Table structure for table `VENDOR_CODE` +-- + +DROP TABLE IF EXISTS `VENDOR_CODE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VENDOR_CODE` ( + `vendor_code` varchar(1) NOT NULL, + `vendor` varchar(45) DEFAULT NULL, + PRIMARY KEY (`vendor_code`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VLAN_ID_POOL` +-- + +DROP TABLE IF EXISTS `VLAN_ID_POOL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VLAN_ID_POOL` ( + `aic_site_id` varchar(100) NOT NULL, + `purpose` varchar(40) NOT NULL, + `status` varchar(40) NOT NULL, + `vlan_id` int(4) NOT NULL, + `svc_instance_id` varchar(80) DEFAULT NULL, + `availability_zone` varchar(100) DEFAULT NULL, + `vplspe_name` varchar(80) DEFAULT NULL, + PRIMARY KEY (`vlan_id`,`aic_site_id`,`purpose`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VLAN_L3INTERFACE_IPV4_ADDRESS` +-- + +DROP TABLE IF EXISTS `VLAN_L3INTERFACE_IPV4_ADDRESS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VLAN_L3INTERFACE_IPV4_ADDRESS` ( + `vnf_id` varchar(80) NOT NULL, + `interface_name` varchar(255) NOT NULL, + `vlan_interface` varchar(255) NOT NULL, + `l3_interface_ipv4_address` varchar(64) NOT NULL, + `l3_interface_ipv4_prefix_length` varchar(45) DEFAULT NULL, + `vlan_id_inner` varchar(45) DEFAULT NULL, + `vlan_id_outer` varchar(45) DEFAULT NULL, + `is_floating` varchar(1) DEFAULT NULL, + PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`,`l3_interface_ipv4_address`), + KEY `FK_VLAN_L3INTERFACE_IPV4_ADDRESS_LINTERFACE_VLAN_IDX` (`vnf_id`,`interface_name`), + CONSTRAINT `FK_VLAN_L3INTERFACE_IPV4_ADDRESS_LINTERFACE_VLAN` FOREIGN KEY (`vnf_id`, `interface_name`, `vlan_interface`) REFERENCES `LINTERFACE_VLAN` (`vnf_id`, `interface_name`, `vlan_interface`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VLAN_L3INTERFACE_IPV6_ADDRESS` +-- + +DROP TABLE IF EXISTS `VLAN_L3INTERFACE_IPV6_ADDRESS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VLAN_L3INTERFACE_IPV6_ADDRESS` ( + `vnf_id` varchar(80) NOT NULL, + `interface_name` varchar(255) NOT NULL, + `vlan_interface` varchar(255) NOT NULL, + `l3_interface_ipv6_address` varchar(64) NOT NULL, + `l3_interface_ipv6_prefix_length` varchar(45) DEFAULT NULL, + `vlan_id_inner` varchar(45) DEFAULT NULL, + `vlan_id_outer` varchar(45) DEFAULT NULL, + `is_floating` varchar(1) DEFAULT NULL, + PRIMARY KEY (`vnf_id`,`interface_name`,`vlan_interface`,`l3_interface_ipv6_address`), + KEY `FK_VLAN_L3INTERFACE_IPV6_ADDRESS_LINTERFACE_VLAN_IDX` (`vnf_id`,`interface_name`,`vlan_interface`), + CONSTRAINT `FK_VLAN_L3INTERFACE_IPV6_ADDRESS_LINTERFACE_VLAN` FOREIGN KEY (`vnf_id`, `interface_name`, `vlan_interface`) REFERENCES `LINTERFACE_VLAN` (`vnf_id`, `interface_name`, `vlan_interface`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VLAN_PLAN_ID` +-- + +DROP TABLE IF EXISTS `VLAN_PLAN_ID`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VLAN_PLAN_ID` ( + `plan_type` varchar(40) NOT NULL, + `purpose` varchar(40) NOT NULL, + `vlan_plan_id_count` int(4) NOT NULL, + PRIMARY KEY (`vlan_plan_id_count`,`plan_type`,`purpose`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VLAN_POOL` +-- + +DROP TABLE IF EXISTS `VLAN_POOL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VLAN_POOL` ( + `aic_site_id` varchar(100) NOT NULL, + `availability_zone` varchar(100) NOT NULL, + `vlan_plan_id` varchar(100) NOT NULL, + `plan_type` varchar(40) NOT NULL, + `purpose` varchar(40) NOT NULL, + `vlan_id` int(4) NOT NULL, + `status` varchar(40) NOT NULL, + `reserved_id` varchar(80) DEFAULT NULL, + PRIMARY KEY (`aic_site_id`,`availability_zone`,`vlan_plan_id`,`plan_type`,`purpose`,`vlan_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VLAN_RANGES` +-- + +DROP TABLE IF EXISTS `VLAN_RANGES`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VLAN_RANGES` ( + `vlan_plan_id` varchar(100) NOT NULL, + `plan_type` varchar(40) NOT NULL, + `purpose` varchar(40) NOT NULL, + `range_start` int(4) NOT NULL, + `range_end` int(4) NOT NULL, + `generated` char(1) DEFAULT NULL, + PRIMARY KEY (`vlan_plan_id`,`plan_type`,`purpose`,`range_start`,`range_end`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VM_NETWORKS` +-- + +DROP TABLE IF EXISTS `VM_NETWORKS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VM_NETWORKS` ( + `vnf_type` varchar(200) NOT NULL, + `vm_type` varchar(45) NOT NULL, + `network_role` varchar(45) NOT NULL, + `assign_ips` tinyint(1) NOT NULL, + `assign_macs` tinyint(1) NOT NULL, + `assign_floating_ip` tinyint(1) NOT NULL, + `ip_count` int(11) DEFAULT NULL, + PRIMARY KEY (`vnf_type`,`vm_type`,`network_role`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VM_PROFILE` +-- + +DROP TABLE IF EXISTS `VM_PROFILE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VM_PROFILE` ( + `vnf_type` varchar(200) NOT NULL, + `vm_type` varchar(45) NOT NULL, + `vm_count` int(11) NOT NULL, + PRIMARY KEY (`vnf_type`,`vm_type`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF` +-- + +DROP TABLE IF EXISTS `VNF`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF` ( + `vnf_id` varchar(80) NOT NULL, + `vnf_name` varchar(80) NOT NULL, + `vnf_type` varchar(10) NOT NULL, + `orchestration_status` varchar(20) DEFAULT NULL, + `heat_stack_id` varchar(80) DEFAULT NULL, + `mso_catalog_key` varchar(80) DEFAULT NULL, + `availability_zone` varchar(80) DEFAULT NULL, + `aic_site_id` varchar(80) DEFAULT NULL, + `oam_ipv4_address` varchar(20) DEFAULT NULL, + `vnf_name2` varchar(80) DEFAULT NULL, + `vpe_id` varchar(80) NOT NULL, + `ipv4_loopback0_address` varchar(80) DEFAULT NULL, + `license_key` varchar(256) DEFAULT NULL, + `entitlement_resource_uuid` varchar(256) DEFAULT NULL, + PRIMARY KEY (`vnf_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_IMAGE` +-- + +DROP TABLE IF EXISTS `VNF_IMAGE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_IMAGE` ( + `application_vendor` varchar(255) NOT NULL, + `application_version` varchar(255) NOT NULL, + `att_uuid` varchar(255) NOT NULL, + `application` varchar(255) DEFAULT NULL, + `selflink` varchar(255) DEFAULT NULL, + PRIMARY KEY (`application_vendor`,`application_version`,`att_uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_MODEL_LICENSES` +-- + +DROP TABLE IF EXISTS `VNF_MODEL_LICENSES`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_MODEL_LICENSES` ( + `att_part_number` varchar(255) NOT NULL, + `license_assignment_group` varchar(255) NOT NULL, + `license_required` tinyint(1) DEFAULT NULL, + `entitlement_assignment_group` varchar(255) DEFAULT NULL, + `entitlement_required` tinyint(1) DEFAULT NULL, + `feature_group_uuid` varchar(255) DEFAULT NULL, + PRIMARY KEY (`att_part_number`,`license_assignment_group`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_MODEL_LICENSE_FEATURES` +-- + +DROP TABLE IF EXISTS `VNF_MODEL_LICENSE_FEATURES`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_MODEL_LICENSE_FEATURES` ( + `att_part_number` varchar(255) NOT NULL, + `license_assignment_group` varchar(255) NOT NULL, + `feature` varchar(255) NOT NULL, + PRIMARY KEY (`att_part_number`,`license_assignment_group`,`feature`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_NETWORKS` +-- + +DROP TABLE IF EXISTS `VNF_NETWORKS`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_NETWORKS` ( + `vnf_type` varchar(200) NOT NULL, + `network_role` varchar(45) NOT NULL, + PRIMARY KEY (`vnf_type`,`network_role`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_NETWORK_CONNECTION` +-- + +DROP TABLE IF EXISTS `VNF_NETWORK_CONNECTION`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_NETWORK_CONNECTION` ( + `connection_uuid` varchar(80) NOT NULL, + `vnf_id` varchar(80) NOT NULL, + `connection_id` varchar(80) DEFAULT NULL, + `connection_type` varchar(20) DEFAULT NULL, + `neutron_network_id` varchar(80) DEFAULT NULL, + `neutron_network_name` varchar(80) DEFAULT NULL, + `orchestration_status` varchar(20) DEFAULT NULL, + `switch_id` varchar(40) DEFAULT NULL, + `heat_stack_id` varchar(80) DEFAULT NULL, + `mso_catalog_key` varchar(80) DEFAULT NULL, + `provider_network` varchar(80) DEFAULT NULL, + `port_group_id` varchar(80) DEFAULT NULL, + `port_group_name` varchar(80) DEFAULT NULL, + PRIMARY KEY (`connection_uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_NETWORK_CONNECTION_VLAN` +-- + +DROP TABLE IF EXISTS `VNF_NETWORK_CONNECTION_VLAN`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_NETWORK_CONNECTION_VLAN` ( + `vlan_uuid` varchar(80) NOT NULL, + `vlan_id` int(4) NOT NULL, + `vlan_type` varchar(5) NOT NULL, + `connection_uuid` varchar(80) DEFAULT NULL, + PRIMARY KEY (`vlan_uuid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VNF_PROFILE` +-- + +DROP TABLE IF EXISTS `VNF_PROFILE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VNF_PROFILE` ( + `vnf_type` varchar(200) NOT NULL, + `availability_zone_count` int(11) NOT NULL, + `equipment_role` varchar(80) NOT NULL, + PRIMARY KEY (`vnf_type`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VPE_LOCK` +-- + +DROP TABLE IF EXISTS `VPE_LOCK`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VPE_LOCK` ( + `vpe_name` varchar(20) NOT NULL, + `vpn_lock` varchar(20) NOT NULL, + PRIMARY KEY (`vpe_name`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VPE_POOL` +-- + +DROP TABLE IF EXISTS `VPE_POOL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +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) NOT NULL, + `image_filename` varchar(100) DEFAULT NULL, + `as_number` varchar(20) NOT NULL, + `loopback5000` varchar(16) DEFAULT NULL, + `loopback10` varchar(16) DEFAULT NULL, + PRIMARY KEY (`aic_site_id`,`vpe_name`,`availability_zone`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VPLSPE_POOL` +-- + +DROP TABLE IF EXISTS `VPLSPE_POOL`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +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`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VSERVER` +-- + +DROP TABLE IF EXISTS `VSERVER`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VSERVER` ( + `tenant_id` varchar(40) NOT NULL, + `vserver_id` varchar(40) NOT NULL, + `aic_site_id` varchar(100) NOT NULL, + `vendor` varchar(20) NOT NULL, + `image_name` varchar(100) NOT NULL, + `vnf_type` varchar(10) NOT NULL, + `vnf_id` varchar(80) NOT NULL, + PRIMARY KEY (`tenant_id`,`vserver_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VSERVER2` +-- + +DROP TABLE IF EXISTS `VSERVER2`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VSERVER2` ( + `tenant_id` varchar(255) NOT NULL, + `vserver_id` varchar(128) NOT NULL, + `vserver_name` varchar(255) NOT NULL, + `vserver_name2` varchar(255) DEFAULT NULL, + `prov_status` varchar(20) DEFAULT NULL, + `selflink` varchar(255) DEFAULT NULL, + PRIMARY KEY (`tenant_id`,`vserver_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `VSERVER_PSERVER` +-- + +DROP TABLE IF EXISTS `VSERVER_PSERVER`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `VSERVER_PSERVER` ( + `vserver_id` varchar(128) NOT NULL, + `pserver_hostname` varchar(255) DEFAULT NULL, + PRIMARY KEY (`vserver_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `WAN_COMBO_ALLOWABLE` +-- + +DROP TABLE IF EXISTS `WAN_COMBO_ALLOWABLE`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `WAN_COMBO_ALLOWABLE` ( + `combo_sequence` int(11) NOT NULL AUTO_INCREMENT, + `internet_topology` varchar(20) DEFAULT NULL, + `wan1` varchar(40) DEFAULT NULL, + `wan2` varchar(40) DEFAULT NULL, + `new_start_release` char(5) DEFAULT NULL, + `description` varchar(128) NOT NULL, + PRIMARY KEY (`combo_sequence`), + UNIQUE KEY `IX1_WAN_COMBO_ALLOWABLE` (`internet_topology`,`wan1`,`wan2`) +) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `emp1000` +-- + +DROP TABLE IF EXISTS `emp1000`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `emp1000` ( + `firstName` varchar(20) DEFAULT NULL, + `lastName` varchar(20) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `linda` +-- + +DROP TABLE IF EXISTS `linda`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `linda` ( + `c1` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `testit` +-- + +DROP TABLE IF EXISTS `testit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `testit` ( + `c1` varchar(12) DEFAULT NULL, + `c2` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Table structure for table `testtable` +-- + +DROP TABLE IF EXISTS `testtable`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `testtable` ( + `city_code_id` int(11) NOT NULL AUTO_INCREMENT, + `city_code` varchar(3) NOT NULL, + `city` varchar(150) NOT NULL, + `state` varchar(10) NOT NULL, + `country_code` varchar(10) NOT NULL, + PRIMARY KEY (`city_code_id`), + KEY `IN1_testtable` (`city`,`state`,`country_code`) +) ENGINE=InnoDB AUTO_INCREMENT=37756 DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; +SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2016-11-23 16:01:55 diff --git a/odlsli/odlsli-alpine/src/main/resources/org.ops4j.pax.logging.cfg b/odlsli/odlsli-alpine/src/main/resources/org.ops4j.pax.logging.cfg new file mode 100644 index 00000000..ee35ef70 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/resources/org.ops4j.pax.logging.cfg @@ -0,0 +1,92 @@ +################################################################################ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +# Common pattern layout for appenders +log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %X{currentGraph} - %X{nodeId} | %m%n + +# Root logger +log4j2.rootLogger.level = INFO +# uncomment to use asynchronous loggers, which require mvn:com.lmax/disruptor/3.3.2 library +#log4j2.rootLogger.type = asyncRoot +#log4j2.rootLogger.includeLocation = false +log4j2.rootLogger.appenderRef.RollingFile.ref = RollingFile +log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi +log4j2.rootLogger.appenderRef.Console.ref = Console +log4j2.rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter +log4j2.rootLogger.appenderRef.Console.filter.threshold.level = ${karaf.log.console:-OFF} + +# Loggers configuration + +# Spifly logger +log4j2.logger.spifly.name = org.apache.aries.spifly +log4j2.logger.spifly.level = WARN + +# Security audit logger +log4j2.logger.audit.name = org.apache.karaf.jaas.modules.audit +log4j2.logger.audit.level = INFO +log4j2.logger.audit.additivity = false +log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile + +# Appenders configuration + +# Console appender not used by default (see log4j2.rootLogger.appenderRefs) +log4j2.appender.console.type = Console +log4j2.appender.console.name = Console +log4j2.appender.console.layout.type = PatternLayout +log4j2.appender.console.layout.pattern = ${log4j2.pattern} + +# Rolling file appender +log4j2.appender.rolling.type = RollingRandomAccessFile +log4j2.appender.rolling.name = RollingFile +log4j2.appender.rolling.fileName = ${karaf.data}/log/karaf.log +log4j2.appender.rolling.filePattern = ${karaf.data}/log/karaf.log.%i +# uncomment to not force a disk flush +#log4j2.appender.rolling.immediateFlush = false +log4j2.appender.rolling.append = true +log4j2.appender.rolling.layout.type = PatternLayout +log4j2.appender.rolling.layout.pattern = ${log4j2.pattern} +log4j2.appender.rolling.policies.type = Policies +log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy +log4j2.appender.rolling.policies.size.size = 16MB + +# Audit file appender +log4j2.appender.audit.type = RollingRandomAccessFile +log4j2.appender.audit.name = AuditRollingFile +log4j2.appender.audit.fileName = ${karaf.data}/security/audit.log +log4j2.appender.audit.filePattern = ${karaf.data}/security/audit.log.%i +log4j2.appender.audit.append = true +log4j2.appender.audit.layout.type = PatternLayout +log4j2.appender.audit.layout.pattern = ${log4j2.pattern} +log4j2.appender.audit.policies.type = Policies +log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy +log4j2.appender.audit.policies.size.size = 8MB + +# OSGi appender +log4j2.appender.osgi.type = PaxOsgi +log4j2.appender.osgi.name = PaxOsgi +log4j2.appender.osgi.filter = * + + +# help with identification of maven-related problems with pax-url-aether +#log4j2.logger.aether.name = shaded.org.eclipse.aether +#log4j2.logger.aether.level = TRACE +#log4j2.logger.http-headers.name = shaded.org.apache.http.headers +#log4j2.logger.http-headers.level = DEBUG +#log4j2.logger.maven.name = org.ops4j.pax.url.mvn +#log4j2.logger.maven.level = TRACE diff --git a/odlsli/odlsli-alpine/src/main/scripts/installOdlHostKey.sh b/odlsli/odlsli-alpine/src/main/scripts/installOdlHostKey.sh new file mode 100644 index 00000000..603a3b4a --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/scripts/installOdlHostKey.sh @@ -0,0 +1,29 @@ +### +# ============LICENSE_START======================================================= +# ONAP : CCSDK +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### +ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} +if [ ! -f ${ODL_HOME}/etc/host.key ] +then + echo "Installing karaf host key" + umask 022 + mv ${ODL_HOME}/etc/org.apache.karaf.shell.cfg ${ODL_HOME}/etc/org.apache.karaf.shell.cfg.sav + cat ${ODL_HOME}/etc/org.apache.karaf.shell.cfg.sav | sed -e "s/hostKeyFormat = simple/hostKeyFormat = PEM/" > ${ODL_HOME}/etc/org.apache.karaf.shell.cfg + openssl genrsa -out /opt/opendaylight/current/etc/host.key 4096 +fi \ No newline at end of file diff --git a/odlsli/odlsli-alpine/src/main/scripts/installSdncDb.sh b/odlsli/odlsli-alpine/src/main/scripts/installSdncDb.sh new file mode 100644 index 00000000..efd7fe02 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/scripts/installSdncDb.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +CCSDK_HOME=${CCSDK_HOME:-/opt/onap/ccsdk} +MYSQL_PASSWD=${MYSQL_PASSWD:-openECOMP1.0} + +SDNC_DB_USER=${SDNC_DB_USER:-sdnctl} +SDNC_DB_PASSWD=${SDNC_DB_PASSWD:-gamma} +SDNC_DB_DATABASE=${SDN_DB_DATABASE:-sdnctl} + + +# Create tablespace and user account +mysql -h dbhost -u root -p${MYSQL_PASSWD} mysql <<-END +CREATE DATABASE ${SDNC_DB_DATABASE}; +CREATE USER '${SDNC_DB_USER}'@'localhost' IDENTIFIED BY '${SDNC_DB_PASSWD}'; +CREATE USER '${SDNC_DB_USER}'@'%' IDENTIFIED BY '${SDNC_DB_PASSWD}'; +GRANT ALL PRIVILEGES ON ${SDNC_DB_DATABASE}.* TO '${SDNC_DB_USER}'@'localhost' WITH GRANT OPTION; +GRANT ALL PRIVILEGES ON ${SDNC_DB_DATABASE}.* TO '${SDNC_DB_USER}'@'%' WITH GRANT OPTION; +commit; +END + +if [ -f ${CCSDK_HOME}/data/odlsli.dump ] +then +mysql -h dbhost -u root -p${MYSQL_PASSWD} sdnctl < ${CCSDK_HOME}/data/odlsli.dump +fi diff --git a/odlsli/odlsli-alpine/src/main/scripts/startODL.sh b/odlsli/odlsli-alpine/src/main/scripts/startODL.sh new file mode 100644 index 00000000..4d608577 --- /dev/null +++ b/odlsli/odlsli-alpine/src/main/scripts/startODL.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + + +# Install SDN-C platform components if not already installed and start container + +ODL_HOME=${ODL_HOME:-/opt/opendaylight} +ODL_ADMIN_PASSWORD=${ODL_ADMIN_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U} +CCSDK_HOME=${CCSDK_HOME:-/opt/onap/ccsdk} +SLEEP_TIME=${SLEEP_TIME:-120} +MYSQL_PASSWD=${MYSQL_PASSWD:-openECOMP1.0} +INSTALLED_DIR=${INSTALLED_FILE:-/opt/opendaylight/current/daexim} + + +# +# Wait for database +# +echo "Waiting for mysql" +until mysql -h dbhost -u root -p${MYSQL_PASSWD} mysql &> /dev/null +do + printf "." + sleep 1 +done +echo -e "\nmysql ready" + +if [ ! -d ${INSTALLED_DIR} ] +then + mkdir -p ${INSTALLED_DIR} +fi + +if [ ! -f ${INSTALLED_DIR}/.installed ] +then + echo "Installing SDN-C database" + ${CCSDK_HOME}/bin/installSdncDb.sh + # echo "Installing OpenDaylight host key" + # ${CCSDK_HOME}/bin/installOdlHostKey.sh + if [ -x ${CCSDK_HOME}/svclogic/bin/install.sh ] + then + echo "Installing directed graphs" + ${CCSDK_HOME}/svclogic/bin/install.sh + fi + echo "Installed at `date`" > ${INSTALLED_DIR}/.installed +fi + +exec ${ODL_HOME}/bin/karaf server diff --git a/odlsli/odlsli-alpine/src/main/stores/truststore.onap.client.jks b/odlsli/odlsli-alpine/src/main/stores/truststore.onap.client.jks new file mode 100755 index 0000000000000000000000000000000000000000..28afd8fa74c18826ecf9555db1c5a52c250ba6d6 GIT binary patch literal 117990 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 + + 4.0.0 + + + org.onap.ccsdk.parent + odlparent-lite + 1.2.0-SNAPSHOT + + + + org.onap.ccsdk.distribution + distribution-odlsli-ubuntu + 0.4.0-SNAPSHOT + pom + + ccsdk-distribution :: odlsli + Creates SDN Controller Docker container + + openECOMP + + + + onap/ccsdk-odlsli-image + ${project.version} + ${project.version} + ${https_proxy} + yyyyMMdd'T'HHmmss'Z' + opt/opendaylight + deploy + true + 93C4A3FD7BB9C367 + + + + + ${project.groupId} + dependencies + ${project.version} + repo + zip + + + + org.onap.ccsdk.sli.core + dblib-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + filters-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + sli-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + sliapi-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + sliPluginUtils-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + utils-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.core + slicore-features-installer + ${ccsdk.sli.core.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + aai-service-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + ansible-adapter-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + mdsal-resource-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + resource-assignment-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + netbox-client-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + sql-resource-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.adaptors + sliadaptors-features-installer + ${ccsdk.sli.adaptors.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + asdcApi-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + dataChange-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + lcm-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.northbound + slinorthbound-features-installer + ${ccsdk.sli.northbound.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + properties-node-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + restapi-call-node-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + restconf-client-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + sshapi-call-node-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.sli.plugins + sliplugins-features-installer + ${ccsdk.sli.plugins.version} + repo + zip + + + org.onap.ccsdk.features + features-installer + ${ccsdk.features.version} + repo + zip + + + org.onap.ccsdk.features + blueprints-processor-installer + ${ccsdk.features.version} + repo + zip + + + + + + + + org.apache.maven.wagon + wagon-http-lightweight + 2.2 + + + + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + println project.properties['ccsdk.project.version']; + def versionArray; + if (project.properties['ccsdk.project.version'] != null ) { + versionArray = project.properties['ccsdk.project.version'].split('\\.'); + } + + if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) + { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } + + println 'New Tag for docker:' + project.properties['project.docker.latesttag.version']; + + + + + + + + + + maven-resources-plugin + 2.6 + + + copy-dockerfile + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + src/main/docker + + Dockerfile + + true + + + + + + + copy-scripts + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/bin + + + ../src/main/scripts + + *.sh + + false + + + + + + + copy-odl-resources + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + ../src/main/resources + + idmlight.db.mv.db + org.ops4j.pax.logging.cfg + install_ccsdk.yml + ansible-sources.list + + false + + + + + + copy-config + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + ../src/main/resources + + org.ops4j.pax.logging.cfg + + false + + + + + + copy-data + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/data + + + ../src/main/resources + + *.dump + + false + + + + + + copy-properties + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/data/properties + + + ../src/main/properties + + *.properties + + false + + + + + + copy-keystores + + copy-resources + + validate + + ${basedir}/target/docker-stage/opt/onap/ccsdk/data/stores + + + ../src/main/stores + + *.jks + + false + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.2 + + + unpack features + generate-sources + + unpack-dependencies + + + ${basedir}/target/docker-stage + true + + + + unpack dgs + generate-sources + + unpack + + + ${basedir}/target/docker-stage/opt/onap/ccsdk + + + ${project.groupId} + platform-logic-installer + ${project.version} + zip + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.5.0 + + + + change shell permissions + process-sources + + exec + + + /usr/bin/find + + ${basedir}/target/docker-stage/opt/onap/ccsdk + -name + *.sh + -exec + chmod + +x + {} + ; + + + + + + + + + + + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.16.5 + false + + + + ${image.name} + + try + ${basedir}/target/docker-stage + ${basedir}/target/docker-stage/Dockerfile + + ${project.version} + ${project.version}-STAGING-${maven.build.timestamp} + ${project.docker.latesttag.version} + + + + + + + + generate-images + package + + build + + + + + push-images + ${docker.push.phase} + + build + push + + + + + + + + + diff --git a/odlsli/src/main/docker/Dockerfile b/odlsli/odlsli-ubuntu/src/main/docker/Dockerfile similarity index 97% rename from odlsli/src/main/docker/Dockerfile rename to odlsli/odlsli-ubuntu/src/main/docker/Dockerfile index 8ba16f01..80cd95b2 100644 --- a/odlsli/src/main/docker/Dockerfile +++ b/odlsli/odlsli-ubuntu/src/main/docker/Dockerfile @@ -1,5 +1,5 @@ # Base ubuntu with added packages needed for open ecomp -FROM onap/ccsdk-odl-oxygen-image:${project.version} +FROM onap/ccsdk-odl-oxygen-ubuntu-image:${project.version} MAINTAINER CCSDK Team (onap-ccsdk@lists.onap.org) ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV ODL_HOME /opt/opendaylight diff --git a/odlsli/pom.xml b/odlsli/pom.xml index 815d1b7c..b4ebe1fe 100644 --- a/odlsli/pom.xml +++ b/odlsli/pom.xml @@ -1,531 +1,22 @@ - - 4.0.0 - - - org.onap.ccsdk.parent - odlparent-lite - 1.2.0-SNAPSHOT - - - - org.onap.ccsdk.distribution - distribution-odlsli - 0.4.0-SNAPSHOT - pom - - ccsdk-distribution :: odlsli - Creates SDN Controller Docker container - - openECOMP - - - - onap/ccsdk-odlsli-image - ${project.version} - ${project.version} - ${https_proxy} - yyyyMMdd'T'HHmmss'Z' - opt/opendaylight - deploy - true - 93C4A3FD7BB9C367 - - - - - ${project.groupId} - dependencies - ${project.version} - repo - zip - - - - org.onap.ccsdk.sli.core - dblib-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.core - filters-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.core - sli-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.core - sliapi-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.core - sliPluginUtils-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.core - utils-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.core - slicore-features-installer - ${ccsdk.sli.core.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - aai-service-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - ansible-adapter-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - mdsal-resource-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - resource-assignment-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - netbox-client-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - sql-resource-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.adaptors - sliadaptors-features-installer - ${ccsdk.sli.adaptors.version} - repo - zip - - - org.onap.ccsdk.sli.northbound - asdcApi-installer - ${ccsdk.sli.northbound.version} - repo - zip - - - org.onap.ccsdk.sli.northbound - dataChange-installer - ${ccsdk.sli.northbound.version} - repo - zip - - - org.onap.ccsdk.sli.northbound - lcm-installer - ${ccsdk.sli.northbound.version} - repo - zip - - - org.onap.ccsdk.sli.northbound - slinorthbound-features-installer - ${ccsdk.sli.northbound.version} - repo - zip - - - org.onap.ccsdk.sli.plugins - properties-node-installer - ${ccsdk.sli.plugins.version} - repo - zip - - - org.onap.ccsdk.sli.plugins - restapi-call-node-installer - ${ccsdk.sli.plugins.version} - repo - zip - - - org.onap.ccsdk.sli.plugins - restconf-client-installer - ${ccsdk.sli.plugins.version} - repo - zip - - - org.onap.ccsdk.sli.plugins - sshapi-call-node-installer - ${ccsdk.sli.plugins.version} - repo - zip - - - org.onap.ccsdk.sli.plugins - sliplugins-features-installer - ${ccsdk.sli.plugins.version} - repo - zip - - - org.onap.ccsdk.features - features-installer - ${ccsdk.features.version} - repo - zip - - - org.onap.ccsdk.features - blueprints-processor-installer - ${ccsdk.features.version} - repo - zip - - - - - - - - org.apache.maven.wagon - wagon-http-lightweight - 2.2 - - - - - - - org.codehaus.groovy.maven - gmaven-plugin - - - validate - - execute - - - - println project.properties['ccsdk.project.version']; - def versionArray; - if (project.properties['ccsdk.project.version'] != null ) { - versionArray = project.properties['ccsdk.project.version'].split('\\.'); - } - - if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) - { - project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; - } else { - project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; - } - - println 'New Tag for docker:' + project.properties['project.docker.latesttag.version']; - - - - - - - - - - maven-resources-plugin - 2.6 - - - copy-dockerfile - - copy-resources - - validate - - ${basedir}/target/docker-stage - - - src/main/docker - - Dockerfile - - true - - - - - - - copy-scripts - - copy-resources - - validate - - ${basedir}/target/docker-stage/opt/onap/ccsdk/bin - - - src/main/scripts - - *.sh - - false - - - - - - - copy-odl-resources - - copy-resources - - validate - - ${basedir}/target/docker-stage - - - src/main/resources - - idmlight.db.mv.db - org.ops4j.pax.logging.cfg - install_ccsdk.yml - ansible-sources.list - - false - - - - - - copy-config - - copy-resources - - validate - - ${basedir}/target/docker-stage - - - src/main/resources - - org.ops4j.pax.logging.cfg - - false - - - - - - copy-data - - copy-resources - - validate - - ${basedir}/target/docker-stage/opt/onap/ccsdk/data - - - src/main/resources - - *.dump - - false - - - - - - copy-properties - - copy-resources - - validate - - ${basedir}/target/docker-stage/opt/onap/ccsdk/data/properties - - - src/main/properties - - *.properties - - false - - - - - - copy-keystores - - copy-resources - - validate - - ${basedir}/target/docker-stage/opt/onap/ccsdk/data/stores - - - src/main/stores - - *.jks - - false - - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.0.2 - - - unpack features - generate-sources - - unpack-dependencies - - - ${basedir}/target/docker-stage - true - - - - unpack dgs - generate-sources - - unpack - - - ${basedir}/target/docker-stage/opt/onap/ccsdk - - - ${project.groupId} - platform-logic-installer - ${project.version} - zip - - - - - - - - org.codehaus.mojo - exec-maven-plugin - 1.5.0 - - - - change shell permissions - process-sources - - exec - - - /usr/bin/find - - ${basedir}/target/docker-stage/opt/onap/ccsdk - -name - *.sh - -exec - chmod - +x - {} - ; - - - - - - - - - - - - - docker - - - - io.fabric8 - docker-maven-plugin - 0.16.5 - false - - - - ${image.name} - - try - ${basedir}/target/docker-stage - ${basedir}/target/docker-stage/Dockerfile - - ${project.version} - ${project.version}-STAGING-${maven.build.timestamp} - ${project.docker.latesttag.version} - - - - - - - - generate-images - package - - build - - - - - push-images - ${docker.push.phase} - - build - push - - - - - - - - + + 4.0.0 + + + org.onap.ccsdk.distribution + distribution-root + 0.4.0-SNAPSHOT + + + distribution-odlsli + 0.4.0-SNAPSHOT + pom + + ccsdk-distribution :: opendaylight + Creates OpenDaylight container + + + odlsli-ubuntu + odlsli-alpine + diff --git a/odlsli/src/main/resources/odlsli.dump b/odlsli/src/main/resources/odlsli.dump index 6f8217c4..e6b6222a 100644 --- a/odlsli/src/main/resources/odlsli.dump +++ b/odlsli/src/main/resources/odlsli.dump @@ -865,6 +865,8 @@ CREATE TABLE `SVC_LOGIC` ( `mode` varchar(5) NOT NULL, `active` varchar(1) NOT NULL, `graph` longblob, + `modified_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `md5sum` varchar(128) DEFAULT NULL, PRIMARY KEY (`module`,`rpc`,`version`,`mode`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/opendaylight/oxygen/oxygen-alpine/pom.xml b/opendaylight/oxygen/oxygen-alpine/pom.xml new file mode 100644 index 00000000..8746f892 --- /dev/null +++ b/opendaylight/oxygen/oxygen-alpine/pom.xml @@ -0,0 +1,221 @@ + + + 4.0.0 + + + org.onap.ccsdk.distribution + distribution-opendaylight + 0.4.0-SNAPSHOT + + + distribution-odl-oxygen-alpine + 0.4.0-SNAPSHOT + pom + + ccsdk-distribution :: opendaylight :: ${project.artifactId} + Creates OpenDaylight container + + ONAP + + + + onap/ccsdk-odl-oxygen-alpine-image + ${project.version} + 0.8.3 + 2.1.1 + ${https_proxy} + deploy + + + + + + org.opendaylight.integration + karaf + ${ccsdk.opendaylight.version} + tar.gz + + + org.mariadb.jdbc + mariadb-java-client + ${ccsdk.mariadb-connector-java.version} + jar + + + + + + + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + println project.properties['ccsdk.project.version']; + def versionArray; + if (project.properties['ccsdk.project.version'] != null ) { + versionArray = project.properties['ccsdk.project.version'].split('\\.'); + } + + if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) + { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0]+'.' + versionArray[1]+"-STAGING-latest"; + } + + println 'New Tag for docker:' + project.properties['project.docker.latesttag.version']; + + + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.0 + + + get-odl-distribution + validate + + copy + + + + + org.opendaylight.integration + karaf + ${ccsdk.opendaylight.version} + tar.gz + + true + ${basedir}/target/docker-stage + + + false + true + true + + + + + get-mariadb-connector-jar + validate + + copy + + + + + org.mariadb.jdbc + mariadb-java-client + ${ccsdk.mariadb-connector-java.version} + jar + true + ${basedir}/target/docker-stage + + + false + true + true + + + + + + + maven-resources-plugin + 2.6 + + + copy-dockerfile + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + src/main/docker + + Dockerfile + + true + + + + + + + + + + + + + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.16.5 + false + + + + ${image.name} + + try + ${basedir}/target/docker-stage + ${basedir}/target/docker-stage/Dockerfile + + ${project.version} + ${project.version}-STAGING-${maven.build.timestamp} + ${project.docker.latesttag.version} + + + + + + + + generate-images + package + + build + + + + + push-images + ${docker.push.phase} + + build + push + + + + + + + + + + + diff --git a/opendaylight/oxygen/oxygen-alpine/src/main/docker/Dockerfile b/opendaylight/oxygen/oxygen-alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..dc7736dd --- /dev/null +++ b/opendaylight/oxygen/oxygen-alpine/src/main/docker/Dockerfile @@ -0,0 +1,22 @@ +# Base ubuntu with added packages needed for open ecomp +FROM onap/ccsdk-alpine-image:${project.version} +MAINTAINER CCSDK Team (onap-ccsdk@lists.onap.org) +ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk +ENV ODL_HOME /opt/opendaylight/current + +# copy the opendaylight tar and expand +COPY karaf-${ccsdk.opendaylight.version}.tar.gz /tmp/ +RUN mkdir -p /opt/odl \ + && tar zxvf /tmp/karaf-${ccsdk.opendaylight.version}.tar.gz --directory /opt/odl \ + && rm -rf /tmp/karaf-${ccsdk.opendaylight.version}.tar.gz \ + && mv /opt/odl/karaf-${ccsdk.opendaylight.version} /opt/opendaylight \ + && ln -s /opt/opendaylight /opt/opendaylight/karaf-${ccsdk.opendaylight.version} \ + && ln -s /opt/opendaylight /opt/opendaylight/current + + +# workaround till we get proxy working +RUN mkdir -p /opt/opendaylight/system/org/mariadb/jdbc/mariadb-java-client/${ccsdk.mariadb-connector-java.version} +COPY mariadb-java-client-${ccsdk.mariadb-connector-java.version}.jar /opt/opendaylight/system/org/mariadb/jdbc/mariadb-java-client/${ccsdk.mariadb-connector-java.version} + +# ENTRYPOINT exec /opt/opendaylight/bin/karaf +EXPOSE 8181 diff --git a/opendaylight/oxygen/oxygen-ubuntu/pom.xml b/opendaylight/oxygen/oxygen-ubuntu/pom.xml new file mode 100644 index 00000000..f0b7a004 --- /dev/null +++ b/opendaylight/oxygen/oxygen-ubuntu/pom.xml @@ -0,0 +1,221 @@ + + + 4.0.0 + + + org.onap.ccsdk.distribution + distribution-opendaylight + 0.4.0-SNAPSHOT + + + distribution-odl-oxygen-ubuntu + 0.4.0-SNAPSHOT + pom + + ccsdk-distribution :: opendaylight :: ${project.artifactId} + Creates OpenDaylight container + + ONAP + + + + onap/ccsdk-odl-oxygen-ubuntu-image + ${project.version} + 0.8.3 + 2.1.1 + ${https_proxy} + deploy + + + + + + org.opendaylight.integration + karaf + ${ccsdk.opendaylight.version} + tar.gz + + + org.mariadb.jdbc + mariadb-java-client + ${ccsdk.mariadb-connector-java.version} + jar + + + + + + + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + println project.properties['ccsdk.project.version']; + def versionArray; + if (project.properties['ccsdk.project.version'] != null ) { + versionArray = project.properties['ccsdk.project.version'].split('\\.'); + } + + if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) + { + project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; + } else { + project.properties['project.docker.latesttag.version']=versionArray[0]+'.' + versionArray[1]+"-STAGING-latest"; + } + + println 'New Tag for docker:' + project.properties['project.docker.latesttag.version']; + + + + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.0 + + + get-odl-distribution + validate + + copy + + + + + org.opendaylight.integration + karaf + ${ccsdk.opendaylight.version} + tar.gz + + true + ${basedir}/target/docker-stage + + + false + true + true + + + + + get-mariadb-connector-jar + validate + + copy + + + + + org.mariadb.jdbc + mariadb-java-client + ${ccsdk.mariadb-connector-java.version} + jar + true + ${basedir}/target/docker-stage + + + false + true + true + + + + + + + maven-resources-plugin + 2.6 + + + copy-dockerfile + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + src/main/docker + + Dockerfile + + true + + + + + + + + + + + + + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.16.5 + false + + + + ${image.name} + + try + ${basedir}/target/docker-stage + ${basedir}/target/docker-stage/Dockerfile + + ${project.version} + ${project.version}-STAGING-${maven.build.timestamp} + ${project.docker.latesttag.version} + + + + + + + + generate-images + package + + build + + + + + push-images + ${docker.push.phase} + + build + push + + + + + + + + + + + diff --git a/opendaylight/oxygen/src/main/docker/Dockerfile b/opendaylight/oxygen/oxygen-ubuntu/src/main/docker/Dockerfile similarity index 100% rename from opendaylight/oxygen/src/main/docker/Dockerfile rename to opendaylight/oxygen/oxygen-ubuntu/src/main/docker/Dockerfile diff --git a/opendaylight/oxygen/pom.xml b/opendaylight/oxygen/pom.xml index 10d06f4c..4f057a92 100644 --- a/opendaylight/oxygen/pom.xml +++ b/opendaylight/oxygen/pom.xml @@ -12,210 +12,11 @@ 0.4.0-SNAPSHOT pom - ccsdk-distribution :: opendaylight :: ${project.artifactId} + ccsdk-distribution :: opendaylight Creates OpenDaylight container - - ONAP - - - onap/ccsdk-odl-oxygen-image - ${project.version} - 0.8.3 - 2.1.1 - ${https_proxy} - deploy - - - - - - org.opendaylight.integration - karaf - ${ccsdk.opendaylight.version} - tar.gz - - - org.mariadb.jdbc - mariadb-java-client - ${ccsdk.mariadb-connector-java.version} - jar - - - - - - - - - - org.codehaus.groovy.maven - gmaven-plugin - - - validate - - execute - - - - println project.properties['ccsdk.project.version']; - def versionArray; - if (project.properties['ccsdk.project.version'] != null ) { - versionArray = project.properties['ccsdk.project.version'].split('\\.'); - } - - if (project.properties['ccsdk.project.version'].endsWith("-SNAPSHOT")) - { - project.properties['project.docker.latesttag.version']=versionArray[0] + '.' + versionArray[1] + "-STAGING-latest"; - } else { - project.properties['project.docker.latesttag.version']=versionArray[0]+'.' + versionArray[1]+"-STAGING-latest"; - } - - println 'New Tag for docker:' + project.properties['project.docker.latesttag.version']; - - - - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.0.0 - - - get-odl-distribution - validate - - copy - - - - - org.opendaylight.integration - karaf - ${ccsdk.opendaylight.version} - tar.gz - - true - ${basedir}/target/docker-stage - - - false - true - true - - - - - get-mariadb-connector-jar - validate - - copy - - - - - org.mariadb.jdbc - mariadb-java-client - ${ccsdk.mariadb-connector-java.version} - jar - true - ${basedir}/target/docker-stage - - - false - true - true - - - - - - - maven-resources-plugin - 2.6 - - - copy-dockerfile - - copy-resources - - validate - - ${basedir}/target/docker-stage - - - src/main/docker - - Dockerfile - - true - - - - - - - - - - - - - - - docker - - - - io.fabric8 - docker-maven-plugin - 0.16.5 - false - - - - ${image.name} - - try - ${basedir}/target/docker-stage - ${basedir}/target/docker-stage/Dockerfile - - ${project.version} - ${project.version}-STAGING-${maven.build.timestamp} - ${project.docker.latesttag.version} - - - - - - - - generate-images - package - - build - - - - - push-images - ${docker.push.phase} - - build - push - - - - - - - - - - + + oxygen-ubuntu + oxygen-alpine + diff --git a/pom.xml b/pom.xml index c45251b9..812dc72f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,54 +1,57 @@ - - 4.0.0 + + 4.0.0 - - org.onap.ccsdk.parent - odlparent-lite - 1.2.0-SNAPSHOT - + + org.onap.ccsdk.parent + odlparent-lite + 1.2.0-SNAPSHOT + - org.onap.ccsdk.distribution - distribution-root - 0.4.0-SNAPSHOT - pom + org.onap.ccsdk.distribution + distribution-root + 0.4.0-SNAPSHOT + pom - ccsdk-distribution - Creates distributuon bundles for CCSDK + ccsdk-distribution + Creates distributuon bundles for CCSDK - - platform-logic - dependencies - ubuntu - opendaylight - odlsli - dgbuilder - dgbuilder-docker - ansible-server - + + platform-logic + dependencies + alpine + ubuntu + opendaylight + odlsli + dgbuilder + dgbuilder-docker + ansible-server + - - distribution + + distribution - yyyyMMdd'T'HHmmss'Z' - ${maven.build.timestamp} - UTF-8 - UTF-8 - + yyyyMMdd'T'HHmmss'Z' + ${maven.build.timestamp} + UTF-8 + UTF-8 + - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true - - https://${onap.nexus.host} - ${onap.nexus.staging.profile-id} - ${onap.nexus.staging.server-id} - - - - + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.7 + true + + https://${onap.nexus.host} + ${onap.nexus.staging.profile-id} + ${onap.nexus.staging.server-id} + + + + diff --git a/ubuntu/pom.xml b/ubuntu/pom.xml index 9ebc3f12..fb655b01 100644 --- a/ubuntu/pom.xml +++ b/ubuntu/pom.xml @@ -94,7 +94,7 @@ io.fabric8 docker-maven-plugin - 0.16.5 + 0.26.0 false @@ -104,7 +104,7 @@ try ${basedir}/target/docker-stage - ${basedir}/target/docker-stage/Dockerfile + Dockerfile ${project.version} ${project.version}-STAGING-${maven.build.timestamp} -- 2.16.6