From acac215a9e16d76c84e7cfa0f1d37f58dda60f6b Mon Sep 17 00:00:00 2001 From: Dan Timoney Date: Fri, 9 May 2025 15:31:00 -0400 Subject: [PATCH] Upgrade to OpenDaylight Scandium Update parent versions and base images to build OpenDaylight Scandium base image and ODLSLI image. Issue-ID: CCSDK-4116 Change-Id: I796f270e8c481f39563f5224570bce0aa529b160 Signed-off-by: Dan Timoney --- alpine/pom.xml | 34 ++-- .../main/docker/{Dockerfile => java11.Dockerfile} | 2 +- alpine/src/main/docker/java17.Dockerfile | 47 ++++++ alpine/src/main/docker/java21.Dockerfile | 47 ++++++ dependencies/pom.xml | 26 ++- odlsli/odlsli-alpine/pom.xml | 4 +- opendaylight/pom.xml | 4 +- opendaylight/scandium/pom.xml | 35 ++++ opendaylight/scandium/scandium-alpine/pom.xml | 178 +++++++++++++++++++++ .../scandium-alpine/src/main/docker/Dockerfile | 53 ++++++ 10 files changed, 405 insertions(+), 25 deletions(-) rename alpine/src/main/docker/{Dockerfile => java11.Dockerfile} (96%) create mode 100644 alpine/src/main/docker/java17.Dockerfile create mode 100644 alpine/src/main/docker/java21.Dockerfile create mode 100644 opendaylight/scandium/pom.xml create mode 100644 opendaylight/scandium/scandium-alpine/pom.xml create mode 100644 opendaylight/scandium/scandium-alpine/src/main/docker/Dockerfile diff --git a/alpine/pom.xml b/alpine/pom.xml index 5adc3e37..50160c60 100644 --- a/alpine/pom.xml +++ b/alpine/pom.xml @@ -59,7 +59,7 @@ src/main/docker - Dockerfile + *.Dockerfile true @@ -101,59 +101,65 @@ io.fabric8 docker-maven-plugin - 0.39.0 + 0.46.0 false ${alpinej21.image.name} + + + ${docker.platforms} + + try true ${basedir}/target/docker-stage - Dockerfile + java21.Dockerfile ${project.docker.latestminortag.version} ${project.docker.latestfulltag.version} ${project.docker.latesttagtimestamp.version} - - ${openjdk21.image.version} - ${alpinej17.image.name} + + + ${docker.platforms} + + try true ${basedir}/target/docker-stage - Dockerfile + java17.Dockerfile ${project.docker.latestminortag.version} ${project.docker.latestfulltag.version} ${project.docker.latesttagtimestamp.version} - - ${openjdk17.image.version} - ${alpinej11.image.name} + + + ${docker.platforms} + + try true ${basedir}/target/docker-stage - Dockerfile + java11.Dockerfile ${project.docker.latestminortag.version} ${project.docker.latestfulltag.version} ${project.docker.latesttagtimestamp.version} - - ${openjdk11.image.version} - diff --git a/alpine/src/main/docker/Dockerfile b/alpine/src/main/docker/java11.Dockerfile similarity index 96% rename from alpine/src/main/docker/Dockerfile rename to alpine/src/main/docker/java11.Dockerfile index 7e121926..131aa9e1 100644 --- a/alpine/src/main/docker/Dockerfile +++ b/alpine/src/main/docker/java11.Dockerfile @@ -1,6 +1,6 @@ # Base alpine with added packages needed for open ecomp ARG OPENJDK_IMAGE_VERSION -FROM ${openjdk.image}:${OPENJDK_IMAGE_VERSION} +FROM ${openjdk.image}:${openjdk11.image.version} LABEL maintainer="ONAP CCSDK team" LABEL Description="Reference CCSDK JAVA image based on alpine" diff --git a/alpine/src/main/docker/java17.Dockerfile b/alpine/src/main/docker/java17.Dockerfile new file mode 100644 index 00000000..a43e94ef --- /dev/null +++ b/alpine/src/main/docker/java17.Dockerfile @@ -0,0 +1,47 @@ +# Base alpine with added packages needed for open ecomp +ARG OPENJDK_IMAGE_VERSION +FROM ${openjdk.image}:${openjdk17.image.version} + +LABEL maintainer="ONAP CCSDK team" +LABEL Description="Reference CCSDK JAVA image based on alpine" + +# Explicitly become root during build phase +USER root + +ENV JAVA_OPTS="-Xms256m -Xmx1g" +ENV JAVA_SEC_OPTS="" + +ARG HTTP_PROXY=${HTTP_PROXY} +ARG user=onap +ARG group=onap + +# Install additional tools +RUN apk add --no-cache openssl ca-certificates + +# Copy any certs +COPY *.md *.pem /etc/ssl/certs/ + +# Install certs +RUN update-ca-certificates + +# Add additional packages if defined +RUN test -n "${openjdk.additional.packages}" && \ + export http_proxy=${HTTP_PROXY} && export https_proxy=${HTTP_PROXY} && \ + export HTTP_PROXY=${HTTP_PROXY} && export HTTPS_PROXY=${HTTP_PROXY} && \ + apk update && \ + apk --no-cache add ${openjdk.additional.packages} && \ + unset http_proxy && unset https_proxy && unset HTTP_PROXY && unset HTTPS_PROXY \ + || echo "No additional packages to install" + +# Create a group and user +RUN addgroup -S $group && adduser -G $group -D $user && \ + mkdir /var/log/$user && \ + mkdir /app && \ + chown -R $user:$group /var/log/$user && \ + chown -R $user:$group /app + +# Tell docker that all future commands should be run as the onap user +USER $user +WORKDIR /app + +ENTRYPOINT exec java $JAVA_SEC_OPTS $JAVA_OPTS -jar /app/app.jar diff --git a/alpine/src/main/docker/java21.Dockerfile b/alpine/src/main/docker/java21.Dockerfile new file mode 100644 index 00000000..19928458 --- /dev/null +++ b/alpine/src/main/docker/java21.Dockerfile @@ -0,0 +1,47 @@ +# Base alpine with added packages needed for open ecomp +ARG OPENJDK_IMAGE_VERSION +FROM ${openjdk.image}:${openjdk21.image.version} + +LABEL maintainer="ONAP CCSDK team" +LABEL Description="Reference CCSDK JAVA image based on alpine" + +# Explicitly become root during build phase +USER root + +ENV JAVA_OPTS="-Xms256m -Xmx1g" +ENV JAVA_SEC_OPTS="" + +ARG HTTP_PROXY=${HTTP_PROXY} +ARG user=onap +ARG group=onap + +# Install additional tools +RUN apk add --no-cache openssl ca-certificates + +# Copy any certs +COPY *.md *.pem /etc/ssl/certs/ + +# Install certs +RUN update-ca-certificates + +# Add additional packages if defined +RUN test -n "${openjdk.additional.packages}" && \ + export http_proxy=${HTTP_PROXY} && export https_proxy=${HTTP_PROXY} && \ + export HTTP_PROXY=${HTTP_PROXY} && export HTTPS_PROXY=${HTTP_PROXY} && \ + apk update && \ + apk --no-cache add ${openjdk.additional.packages} && \ + unset http_proxy && unset https_proxy && unset HTTP_PROXY && unset HTTPS_PROXY \ + || echo "No additional packages to install" + +# Create a group and user +RUN addgroup -S $group && adduser -G $group -D $user && \ + mkdir /var/log/$user && \ + mkdir /app && \ + chown -R $user:$group /var/log/$user && \ + chown -R $user:$group /app + +# Tell docker that all future commands should be run as the onap user +USER $user +WORKDIR /app + +ENTRYPOINT exec java $JAVA_SEC_OPTS $JAVA_OPTS -jar /app/app.jar diff --git a/dependencies/pom.xml b/dependencies/pom.xml index 904ae5d5..0f251b89 100755 --- a/dependencies/pom.xml +++ b/dependencies/pom.xml @@ -15,6 +15,7 @@ false + 1.2.11 @@ -22,7 +23,7 @@ org.onap.ccsdk.parent dependencies-odl-bom - 3.1.1 + 3.2.0-SNAPSHOT import pom @@ -85,6 +86,11 @@ jakarta.activation jakarta.activation-api + + jakarta.inject + jakarta.inject-api + + com.sun.xml.ws @@ -98,7 +104,10 @@ javax.annotation javax.annotation-api - 1.3.1 + + + jakarta.inject + jakarta.inject-api org.antlr @@ -212,15 +221,20 @@ com.google.guava listenablefuture + + + org.apache.kafka + kafka-clients + 3.0.0 + com.google.errorprone error_prone_annotations - 2.24.0 + 2.36.0 - - org.apache.kafka - kafka-clients + com.google.j2objc + j2objc-annotations 3.0.0 diff --git a/odlsli/odlsli-alpine/pom.xml b/odlsli/odlsli-alpine/pom.xml index 112016f7..1c659fc1 100644 --- a/odlsli/odlsli-alpine/pom.xml +++ b/odlsli/odlsli-alpine/pom.xml @@ -18,7 +18,7 @@ - onap/ccsdk-odl-potassium-alpine-image + onap/ccsdk-odl-scandium-alpine-image onap/ccsdk-odlsli-alpine-image ${project.version} @@ -225,6 +225,7 @@ zip repo + org.onap.ccsdk.sli.plugins sshapi-call-node-installer diff --git a/opendaylight/pom.xml b/opendaylight/pom.xml index 37f40248..95333306 100644 --- a/opendaylight/pom.xml +++ b/opendaylight/pom.xml @@ -15,8 +15,6 @@ Creates OpenDaylight container - chlorine - argon - potassium + scandium diff --git a/opendaylight/scandium/pom.xml b/opendaylight/scandium/pom.xml new file mode 100644 index 00000000..edbbc816 --- /dev/null +++ b/opendaylight/scandium/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + + org.onap.ccsdk.distribution + distribution-opendaylight + 2.2.0-SNAPSHOT + + + distribution-odl-scandium + pom + + ccsdk-distribution :: opendaylight :: scandium + Creates OpenDaylight container + + + scandium-alpine + + + + 0.21.2 + + + + + + org.opendaylight.integration + onap-karaf + ${ccsdk.opendaylight.version} + tar.gz + + + + diff --git a/opendaylight/scandium/scandium-alpine/pom.xml b/opendaylight/scandium/scandium-alpine/pom.xml new file mode 100644 index 00000000..c5f35026 --- /dev/null +++ b/opendaylight/scandium/scandium-alpine/pom.xml @@ -0,0 +1,178 @@ + + + 4.0.0 + + + org.onap.ccsdk.distribution + distribution-odl-scandium + 2.2.0-SNAPSHOT + + + distribution-odl-scandium-alpine + pom + + ccsdk-distribution :: opendaylight :: scandium :: docker + Creates OpenDaylight container + + ONAP + + + + onap/ccsdk-odl-scandium-alpine-image + onap-karaf + 0.18.4 + + + + + + + org.codehaus.gmaven + groovy-maven-plugin + 2.1.1 + + + validate + + execute + + + ${basedir}/../../../src/main/scripts/TagVersion.groovy + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.0.0 + + + get-odl-distribution + validate + + copy + + + + + org.opendaylight.integration + ${odl.karaf.artifactId} + ${ccsdk.opendaylight.version} + tar.gz + true + ${basedir}/target/docker-stage + + + false + true + true + + + + copy-with-alternalte-repo-2 + generate-sources + + copy + + + + + com.highstreet-technologies.aaa + aaa-authn-api + ${odl.shiro.version} + ${project.build.directory}/docker-stage/system/org/opendaylight/aaa/aaa-authn-api/${odl.shiro.version} + aaa-authn-api-${odl.shiro.version}.jar + * + + + false + true + true + + + + + + + maven-resources-plugin + 2.6 + + + copy-dockerfile + + copy-resources + + validate + + ${basedir}/target/docker-stage + + + src/main/docker + + Dockerfile + + true + + + src/main/odlscripts + + * + + false + + + + + + + + + + + + + docker + + + + io.fabric8 + docker-maven-plugin + 0.39.0 + false + + + + ${image.name} + + try + true + ${basedir}/target/docker-stage + Dockerfile + + ${project.docker.latestminortag.version} + ${project.docker.latestfulltag.version} + ${project.docker.latesttagtimestamp.version} + + + + + ${docker.verbose} + ${docker.skip.push} + + + + build-push-images + + build + push + + + + + + + + + diff --git a/opendaylight/scandium/scandium-alpine/src/main/docker/Dockerfile b/opendaylight/scandium/scandium-alpine/src/main/docker/Dockerfile new file mode 100644 index 00000000..d18ffaa9 --- /dev/null +++ b/opendaylight/scandium/scandium-alpine/src/main/docker/Dockerfile @@ -0,0 +1,53 @@ +# Prepare stage for multistage image build +## START OF STAGE0 ## +FROM onap/ccsdk-alpine-j21-image:${project.docker.latestfulltag.version} AS stage0 +USER root + +ENV ODL_HOME /opt/opendaylight/current + +# copy the opendaylight tar and expand +COPY ${odl.karaf.artifactId}-${ccsdk.opendaylight.version}.tar.gz /tmp/ +RUN mkdir -p /opt/odl \ + && tar xzf /tmp/${odl.karaf.artifactId}-${ccsdk.opendaylight.version}.tar.gz --directory /opt/odl \ + && rm -rf /tmp/${odl.karaf.artifactId}-${ccsdk.opendaylight.version}.tar.gz \ + && mv /opt/odl/${odl.karaf.artifactId}-${ccsdk.opendaylight.version} /opt/opendaylight \ + && ln -s /opt/opendaylight /opt/opendaylight/${odl.karaf.artifactId}-${ccsdk.opendaylight.version} \ + && ln -s /opt/opendaylight /opt/opendaylight/current + +# Enable wheel and create a group and user +RUN sed -i -e 's/# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/g' /etc/sudoers \ + && addgroup -S odl \ + && adduser -S odl -G odl \ + && addgroup odl wheel + +# Patch some opendaylight artifacts +COPY system $ODL_HOME/system + +# Add missing scripts see SDNC-1056 +#COPY configure_cluster.sh configure-cluster-ipdetect.sh custom_shard_config.txt set_persistence.sh $ODL_HOME/bin/ +#RUN chmod 755 $ODL_HOME/bin/configure_cluster.sh $ODL_HOME/bin/configure-cluster-ipdetect.sh $ODL_HOME/bin/set_persistence.sh $ODL_HOME/bin/custom_shard_config.txt + + +# Changing ownership and permission of /opt +RUN chown -R odl:odl /opt && chmod -R 755 /opt + +## END OF STAGE0 ## + +################################################# + +## This will create actual image +FROM scratch +MAINTAINER CCSDK Team (onap-ccsdk@lists.onap.org) +USER root + +ENV JAVA_HOME=/opt/java/openjdk \ + PATH=$PATH:/opt/java/openjdk/bin \ + ODL_HOME=/opt/opendaylight/current + +# Copy Everything from stage0 +COPY --from=stage0 / / + +USER odl +EXPOSE 8181 +WORKDIR $ODL_HOME +# ENTRYPOINT exec /opt/opendaylight/bin/karaf -- 2.16.6