From 45365e41607352f6f8a2338c4c95b71953a89abf Mon Sep 17 00:00:00 2001 From: Jozsef Csongvai Date: Tue, 2 Feb 2021 08:24:45 -0500 Subject: Initial commit Issue-ID: TEST-296 Signed-off-by: Jozsef Csongvai Change-Id: I0074085fb159fabcbd94aa2282bd1ed3a0ee394e --- docker/Dockerfile | 10 ++++ helm/Chart.yaml | 4 ++ helm/templates/_templates.tpl | 107 +++++++++++++++++++++++++++++++++++++++++ helm/templates/deployment.yaml | 46 ++++++++++++++++++ helm/templates/service.yaml | 39 +++++++++++++++ helm/values.yaml | 30 ++++++++++++ 6 files changed, 236 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 helm/Chart.yaml create mode 100644 helm/templates/_templates.tpl create mode 100644 helm/templates/deployment.yaml create mode 100644 helm/templates/service.yaml create mode 100644 helm/values.yaml diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..187b5cf --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,10 @@ +FROM openjdk:14-alpine +# WIKI https://docs.opendaylight.org/projects/netconf/en/latest/testtool.html + +RUN apk add curl && \ + mkdir -p /opt/app/netconf-testtool && \ + curl https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/netconf/netconf-testtool/1.8.0/netconf-testtool-1.8.0-executable.jar \ + -o /opt/app/netconf-testtool/netconf-testtool-1.8.0-executable.jar + +EXPOSE 17830 +ENTRYPOINT ["java", "-Xmx1G", "-XX:MaxPermSize=256M", "-jar", "/opt/app/netconf-testtool/netconf-testtool-1.8.0-executable.jar"] \ No newline at end of file diff --git a/helm/Chart.yaml b/helm/Chart.yaml new file mode 100644 index 0000000..ac6145f --- /dev/null +++ b/helm/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: ODL Netconf Test Tool +name: cds-mock-odl +version: 1.0.0 diff --git a/helm/templates/_templates.tpl b/helm/templates/_templates.tpl new file mode 100644 index 0000000..3e92baf --- /dev/null +++ b/helm/templates/_templates.tpl @@ -0,0 +1,107 @@ +{{/* +# Copyright (c) 2020 Bell Canada +# +# 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. +*/}} + +{{- define "common.namespace" -}} + {{- default .Release.Namespace .Values.nsPrefix -}} +{{- end -}} + + +{{/* + Expand the name of a chart. + The function takes from one to two arguments (inside a dictionary): + - .dot : environment (.) + - .suffix : add a suffix to the name +*/}} +{{- define "common.name" -}} + {{- $dot := default . .dot -}} + {{- $suffix := .suffix -}} + {{- default $dot.Chart.Name $dot.Values.nameOverride | trunc 63 | trimSuffix "-" -}}{{ if $suffix }}{{ print "-" $suffix }}{{ end }} +{{- end -}} + +{{/* + The same as common.full name but based on passed dictionary instead of trying to figure + out chart name on its own. +*/}} +{{- define "common.fullnameExplicit" -}} + {{- $dot := .dot }} + {{- $name := .chartName }} + {{- $suffix := default "" .suffix -}} + {{- printf "%s-%s-%s" (include "common.release" $dot) $name $suffix | trunc 63 | trimSuffix "-" | trimSuffix "-" -}} +{{- end -}} + +{{/* + Create a default fully qualified application name. + Truncated at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). + Usage: + include "common.fullname" . + include "common.fullname" (dict "suffix" "mySuffix" "dot" .) + The function takes from one to two arguments: + - .dot : environment (.) + - .suffix : add a suffix to the fullname +*/}} +{{- define "common.fullname" -}} +{{- $dot := default . .dot -}} +{{- $suffix := default "" .suffix -}} + {{- $name := default $dot.Chart.Name $dot.Values.nameOverride -}} + {{- include "common.fullnameExplicit" (dict "dot" $dot "chartName" $name "suffix" $suffix) }} +{{- end -}} + +{{/* + Retrieve the "original" release from the component release: + if ONAP is deploy with "helm deploy --name toto", then cassandra components + will have "toto-cassandra" as release name. + this function would answer back "toto". +*/}} +{{- define "common.release" -}} + {{- first (regexSplit "-" .Release.Name -1) }} +{{- end -}} + +{{- define "common.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* + Resolve the name of the common image repository. + The value for .Values.repository is used by default, + unless either override mechanism is used. + + - .Values.global.repository : override default image repository for all images + - .Values.repositoryOverride : override global and default image repository on a per image basis +*/}} +{{- define "common.repository" -}} + {{if .Values.repositoryOverride }} + {{- printf "%s" .Values.repositoryOverride -}} + {{else}} + {{- default .Values.repository .Values.global.repository -}} + {{end}} +{{- end -}} + +{{/* + Resolve the name of a chart's service. + + The default will be the chart name (or .Values.nameOverride if set). + And the use of .Values.service.name overrides all. + + - .Values.service.name: override default service (ie. chart) name +*/}} +{{/* + Expand the service name for a chart. +*/}} +{{- define "common.servicename" -}} + {{- $name := default .Chart.Name .Values.nameOverride -}} + {{- default $name .Values.service.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + diff --git a/helm/templates/deployment.yaml b/helm/templates/deployment.yaml new file mode 100644 index 0000000..20667ab --- /dev/null +++ b/helm/templates/deployment.yaml @@ -0,0 +1,46 @@ +# Copyright (c) 2020 Bell Canada +# +# 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. + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ include "common.release" . }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0 + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ include "common.release" . }} + spec: + {{- if .Values.serviceAccountName }} + serviceAccountName: {{ .Values.serviceAccountName }} + {{- end }} + containers: + - name: {{ include "common.name" . }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds | default 10 }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.odltesttool.internalPort }} diff --git a/helm/templates/service.yaml b/helm/templates/service.yaml new file mode 100644 index 0000000..03c092b --- /dev/null +++ b/helm/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright (c) 2020 Bell Canada +# +# 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. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.odltesttool.portName }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ include "common.release" . }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.odltesttool.type }} + ports: + - port: {{ .Values.service.odltesttool.port }} + protocol: TCP + targetPort: {{ .Values.service.odltesttool.internalPort }} + {{- if eq .Values.service.odltesttool.type "NodePort"}} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- end}} + name: {{ .Values.service.odltesttool.portName | default "odltesttool" }} + selector: + app: {{ include "common.name" . }} + release: {{ include "common.release" . }} + diff --git a/helm/values.yaml b/helm/values.yaml new file mode 100644 index 0000000..45b4be2 --- /dev/null +++ b/helm/values.yaml @@ -0,0 +1,30 @@ +# Copyright (c) 2020 Bell Canada +# +# 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. + + +image: onap/odl-test-tool:latest + +global: + name: odl-netconf-testtool + repository: nexus3.onap.org:10001 + pullPolicy: Always + replicas: 1 + terminationGracePeriodSeconds: 10 + +service: + odltesttool: + type: ClusterIP + portName: odl-netconf-testtool + port: 17830 + internalPort: 17830 -- cgit 1.2.3-korg