diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3787a3a10426e4b68004fc09bc4d40280e81c4f9..95f47740eba56a6bf83255e52883aaa01d477c1a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,11 +3,11 @@ include:
- local: ci-templates/build.yml
rules:
- - if: '$CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_PROTECTED'
+ - if: '$CI_COMMIT_REF_NAME == "main" || $CI_COMMIT_REF_NAME == "develop" || $CI_COMMIT_REF_PROTECTED == "true"'
- local: ci-templates/build_unprotected.yml
rules:
- - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop" && !$CI_COMMIT_REF_PROTECTED'
+ - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_PROTECTED != "true"'
maven_build:
diff --git a/ci-templates/build.yml b/ci-templates/build.yml
index 9a9ba16bba19c339c8a271f13447422c2944d061..79ab2b823b21de625797217f814222b4f1d3f3d6 100644
--- a/ci-templates/build.yml
+++ b/ci-templates/build.yml
@@ -1,7 +1,7 @@
.maven_build:
extends: .default
stage: build
- image: maven:3.9.5-ibm-semeru-17-focal
+ image: maven:3.9.9-ibm-semeru-17-focal
script:
- mvn deploy -s ci_settings.xml -Dversion=$APP_VERSION
artifacts:
@@ -26,7 +26,7 @@
.angular_build:
extends: .default
stage: build
- image: trion/ng-cli:14.2.6
+ image: trion/ng-cli:13.3.7
script:
- |
if [ ! -f "./src/assets/config/theming.scss" ]; then
diff --git a/ci-templates/build_unprotected.yml b/ci-templates/build_unprotected.yml
index a5c86697e727ef62c38b8c1801f0f23ec20c0b4e..bf2678b8b766c2301b1ba1e7905cd2f46f02f3f9 100644
--- a/ci-templates/build_unprotected.yml
+++ b/ci-templates/build_unprotected.yml
@@ -1,7 +1,7 @@
.maven_build:
extends: .default
stage: build
- image: maven:3.9.5-ibm-semeru-17-focal
+ image: maven:3.9.9-ibm-semeru-17-focal
script:
- mvn install -s ci_settings.xml
artifacts:
@@ -20,7 +20,7 @@
.angular_build:
extends: .default
stage: build
- image: trion/ng-cli:14.2.6
+ image: trion/ng-cli:13.3.7
script:
- |
if [ ! -f "./src/assets/config/theming.scss" ]; then
diff --git a/ci-templates/default.yml b/ci-templates/default.yml
index e49b634243ca7c5870671034b0027e80ea233d53..54b1720fd9648e38529b7e55f86ae47540dc6b9a 100644
--- a/ci-templates/default.yml
+++ b/ci-templates/default.yml
@@ -7,11 +7,22 @@ stages:
.default:
before_script:
+ - set -e
- |
if [ "$CI_COMMIT_REF_PROTECTED" = true ] && [ -n "$CI_COMMIT_TAG" ]; then
export APP_VERSION=$CI_COMMIT_TAG
elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then
export APP_VERSION="develop"
else
- export APP_VERSION=$CI_COMMIT_REF_NAME
+ # Replace '/' with '-' and check for any invalid characters
+ APP_VERSION=$(echo "$CI_COMMIT_REF_NAME" | sed 's|/|-|g')
+
+ # Check for invalid characters (only allow lowercase and uppercase letters, digits, '_', '.', '-')
+ if echo "$APP_VERSION" | grep -q '[^a-zA-Z0-9._-]'; then
+ echo "Error: Branch name contains invalid characters for Docker tags. Only a-z, A-Z, 0-9, '_', '.', and '-' are allowed."
+ exit 1
+ fi
+
+ export APP_VERSION
fi
+ - echo "APP_VERSION set to $APP_VERSION"
diff --git a/compose/deploy.sh b/compose/deploy.sh
index 94071cf2f48c5741be21fe658c795d238f8382db..d8ac5383db45435b482eb5355c904f8a5565059c 100644
--- a/compose/deploy.sh
+++ b/compose/deploy.sh
@@ -23,7 +23,7 @@ updaterepo(){
# Build maven project if .pom file is present
if [ -f "./pom.xml" ]; then
- docker run -it --rm -v "/home/ubuntu/.m2":/root/.m2 -v "$(pwd)":/opt/maven -w /opt/maven maven:3.9.5-ibm-semeru-17-focal mvn clean verify -DskipTests
+ docker run -it --rm -v "/home/ubuntu/.m2":/root/.m2 -v "$(pwd)":/opt/maven -w /opt/maven maven:3.9.9-ibm-semeru-17-focal mvn clean verify -DskipTests
fi
}
diff --git a/compose/docker-compose.yaml.configure b/compose/docker-compose.yaml.configure
index 088d9c846e9d854ef362779986d5f6f62ad3899c..ce1ebc0e978326442686c2a93bd11a61b33605ed 100644
--- a/compose/docker-compose.yaml.configure
+++ b/compose/docker-compose.yaml.configure
@@ -3,7 +3,7 @@ services:
artemis:
container_name: anartemis
- image: apache/activemq-artemis:2.30.0
+ image: apache/activemq-artemis:2.31.1
restart: always
profiles: ["dev", "prod"]
ports:
@@ -206,7 +206,8 @@ services:
"spring.activemq.user": "artemis",
"spring.activemq.password": "artemis",
"logging.level.org.springframework" : "INFO",
- "logging.level.org.etsi.osl.tmf.api" : "INFO",
+ "logging.level.org.etsi.osl.tmf.api" : "INFO",
+ "logging.level.org.etsi.osl.tmf.*" : "INFO",
"kroki.serverurl" : "http://localhost/kroki",
"server.forward-headers-strategy":"FRAMEWORK"
}'
@@ -323,6 +324,36 @@ services:
depends_on:
- osscapi
+ metrico:
+ container_name: openslice-metrico
+ restart: always
+ profiles: [ "prod"]
+ build:
+ context: ../../org.etsi.osl.metrico/
+ dockerfile: Dockerfile
+ image: labs.etsi.org:5050/osl/code/org.etsi.osl.metrico:latest
+ environment:
+ SPRING_APPLICATION_JSON: '{
+ "spring.datasource.url": "jdbc:mysql://amysql/metricodb?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC",
+ "spring.datasource.username":"root",
+ "spring.datasource.password":"letmein",
+ "spring.activemq.brokerUrl": "tcp://anartemis:61616?jms.watchTopicAdvisories=false",
+ "spring.activemq.user": "artemis",
+ "spring.activemq.password": "artemis",
+ "logging.level.org.springframework" : "DEBUG",
+ "logging.level.org.etsi.osl.metrico" : "DEBUG"
+ }'
+ logging:
+ driver: "json-file"
+ options:
+ max-size: "800m"
+ max-file: "3"
+ networks:
+ - front
+ - back
+ depends_on:
+ - osscapi
+ - mysql-portal
portainer:
diff --git a/kubernetes/helm/openslice/Chart.yaml b/kubernetes/helm/openslice/Chart.yaml
index 18a24ba8dc405c6e9a6a28de01111afb5cea0697..8a0612ac2f0ea3b8c892ff22bfd446fba9221d44 100644
--- a/kubernetes/helm/openslice/Chart.yaml
+++ b/kubernetes/helm/openslice/Chart.yaml
@@ -15,9 +15,9 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 1.0.0
+version: 2.0.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: 2024Q2
+appVersion: 2024Q4
diff --git a/kubernetes/helm/openslice/templates/cridge-config.yaml b/kubernetes/helm/openslice/templates/cridge-config.yaml
deleted file mode 100644
index 2c62c9a4b728e1fbaef442af56fe08dd6a30d585..0000000000000000000000000000000000000000
--- a/kubernetes/helm/openslice/templates/cridge-config.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-metadata:
- namespace: {{ .Release.Namespace }}
- labels:
- app: {{ include "openslice.fullname" . }}
- org.etsi.osl.service: cridge
- chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
- {{- include "openslice.labels" . | nindent 4 }}
- name: {{ include "openslice.fullname" . }}-cridge-kubeconfig
-data:
- config: |-
- {{- .Files.Get "files/org.etsi.osl.cridge/config" | nindent 4 }}
diff --git a/kubernetes/helm/openslice/templates/cridge-secret.yaml b/kubernetes/helm/openslice/templates/cridge-secret.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4a32bff5cab0c141bfb250f1d8e5f1c9dc802feb
--- /dev/null
+++ b/kubernetes/helm/openslice/templates/cridge-secret.yaml
@@ -0,0 +1,32 @@
+{{ if .Values.cridge.enabled }}
+
+{{- $kubeconfigBase64 := .Values.cridge.kubeconfig.base64 | default "" -}}
+{{- $kubeconfigFile := .Values.cridge.kubeconfig.raw | default (.Files.Get "files/org.etsi.osl.cridge/kubeconfig.yaml") -}}
+{{- $kubeconfig := "" -}}
+
+{{- if $kubeconfigBase64 }}
+ {{- $kubeconfig = $kubeconfigBase64 | b64dec }}
+{{- else if $kubeconfigFile }}
+ {{- $kubeconfig = $kubeconfigFile }}
+{{- end }}
+
+apiVersion: v1
+kind: Secret
+metadata:
+ namespace: {{ .Release.Namespace }}
+ labels:
+ app: {{ include "openslice.fullname" . }}
+ org.etsi.osl.service: cridge
+ chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+ {{- include "openslice.labels" . | nindent 4 }}
+ name: {{ include "openslice.fullname" . }}-kubeconfig
+type: Opaque
+data:
+ config: |-
+ {{- if $kubeconfig }}
+ {{ $kubeconfig | b64enc | nindent 4 }}
+ {{- else }}
+ {{- required "A kubeconfig file is required." ($kubeconfig | b64enc) | nindent 4 }}
+ {{- end }}
+
+{{- end }}
diff --git a/kubernetes/helm/openslice/templates/cridge.yaml b/kubernetes/helm/openslice/templates/cridge.yaml
index 5e558467581532ef544ef89545b3216cc76f99bf..10656390c474046f1bee83e9531b0cf87da57272 100644
--- a/kubernetes/helm/openslice/templates/cridge.yaml
+++ b/kubernetes/helm/openslice/templates/cridge.yaml
@@ -1,3 +1,4 @@
+{{ if .Values.cridge.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -9,9 +10,7 @@ metadata:
{{- include "openslice.labels" . | nindent 4 }}
name: {{ include "openslice.fullname" . }}-cridge
spec:
- {{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
- {{- end }}
selector:
matchLabels:
app: {{ include "openslice.fullname" . }}
@@ -24,10 +23,6 @@ spec:
org.etsi.osl.service: cridge
{{- include "openslice.selectorLabels" . | nindent 8 }}
spec:
- initContainers:
- - name: init-osscapi
- image: busybox:1.28
- command: ['sh', '-c', "until nslookup {{ include "openslice.fullname" . }}-osscapi; do echo waiting for osscapi; sleep 2; done"]
containers:
- image: "{{ .Values.image.cridge.repository }}:{{ .Values.image.cridge.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.cridge.pullPolicy | default "Always" }}
@@ -45,11 +40,12 @@ spec:
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumeMounts:
- - name: cridge-kubeconfig
+ - name: kubeconfig
readOnly: true
mountPath: /root/.kube
restartPolicy: Always
volumes:
- - name: cridge-kubeconfig
- configMap:
- name: {{ include "openslice.fullname" . }}-cridge-kubeconfig
+ - name: kubeconfig
+ secret:
+ secretName: {{ include "openslice.fullname" . }}-kubeconfig
+{{- end }}
diff --git a/kubernetes/helm/openslice/templates/metrico.yaml b/kubernetes/helm/openslice/templates/metrico.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..620ca0aa2146d38585535fbad658d42536ec7a53
--- /dev/null
+++ b/kubernetes/helm/openslice/templates/metrico.yaml
@@ -0,0 +1,46 @@
+{{ if .Values.metrico.enabled }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ namespace: {{ .Release.Namespace }}
+ labels:
+ app: {{ include "openslice.fullname" . }}
+ org.etsi.osl.service: metrico
+ chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+ {{- include "openslice.labels" . | nindent 4 }}
+ name: {{ include "openslice.fullname" . }}-metrico
+spec:
+ {{- if not .Values.autoscaling.enabled }}
+ replicas: {{ .Values.replicaCount }}
+ {{- end }}
+ selector:
+ matchLabels:
+ app: {{ include "openslice.fullname" . }}
+ org.etsi.osl.service: metrico
+ {{- include "openslice.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ labels:
+ app: {{ include "openslice.fullname" . }}
+ org.etsi.osl.service: metrico
+ {{- include "openslice.selectorLabels" . | nindent 8 }}
+ spec:
+ containers:
+ - image: "{{ .Values.image.metrico.repository }}:{{ .Values.image.metrico.tag | default .Chart.AppVersion }}"
+ imagePullPolicy: {{ .Values.image.metrico.pullPolicy | default "Always" }}
+ name: {{ include "openslice.fullname" . }}-metrico
+ env:
+ - name: SPRING_APPLICATION_JSON
+ value: >-
+ {
+ "spring.datasource.url": "jdbc:mysql://{{ include "openslice.fullname" . }}-mysql/metricodb?createDatabaseIfNotExist=true",
+ "spring.datasource.username": "{{ .Values.oscreds.mysql.username }}",
+ "spring.datasource.password": "{{ .Values.oscreds.mysql.password }}",
+ "spring.activemq.brokerUrl": "tcp://{{ include "openslice.fullname" . }}-artemis:61616?jms.watchTopicAdvisories=false",
+ "spring.activemq.user": "{{ .Values.oscreds.activemq.user }}",
+ "spring.activemq.password": "{{ .Values.oscreds.activemq.password }}",
+ "logging.level.org.springframework" : "{{ .Values.metrico.spring.logLevel | default "INFO" }}",
+ "logging.level.org.etsi.osl.cridge" : "{{ .Values.metrico.logLevel | default "INFO" }}"
+ }
+ restartPolicy: Always
+{{- end }}
diff --git a/kubernetes/helm/openslice/templates/oasapi.yaml b/kubernetes/helm/openslice/templates/oasapi.yaml
index ea1ffac809c390158827a126f2b0773981ca252e..bf78b5dd478c19f009fddd599d6537fb7b667c66 100644
--- a/kubernetes/helm/openslice/templates/oasapi.yaml
+++ b/kubernetes/helm/openslice/templates/oasapi.yaml
@@ -39,7 +39,8 @@ spec:
env:
- name: SPRING_APPLICATION_JSON
value: >-
- {
+ {
+ "origins":"{{ .Values.rooturl }}",
"spring.datasource.url": "jdbc:mysql://{{ include "openslice.fullname" . }}-mysql/ostmfdb?createDatabaseIfNotExist=true&useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=utf8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC",
"spring.datasource.username": "{{ .Values.oscreds.mysql.username }}",
"spring.datasource.password": "{{ .Values.oscreds.mysql.password }}",
@@ -55,7 +56,8 @@ spec:
"spring.activemq.brokerUrl": "tcp://{{ include "openslice.fullname" . }}-artemis:61616?jms.watchTopicAdvisories=false",
"spring.activemq.user": "{{ .Values.oscreds.activemq.user }}",
"spring.activemq.password": "{{ .Values.oscreds.activemq.password }}",
- "logging.level.org.springframework" : "{{ .Values.oasapi.spring.logLevel | default "INFO" }}"
+ "logging.level.org.springframework" : "{{ .Values.oasapi.spring.logLevel | default "INFO" }}",
+ "server.forward-headers-strategy":"FRAMEWORK"
}
resources:
{{- toYaml .Values.resources | nindent 12 }}
diff --git a/kubernetes/helm/openslice/templates/osportalapi.yaml b/kubernetes/helm/openslice/templates/osportalapi.yaml
index 8c2927c3116af756659c34645cdcad957b7b0500..6df11d4899aec82bc2f40444c8721ee57e94edce 100644
--- a/kubernetes/helm/openslice/templates/osportalapi.yaml
+++ b/kubernetes/helm/openslice/templates/osportalapi.yaml
@@ -41,6 +41,7 @@ spec:
- name: SPRING_APPLICATION_JSON
value: >-
{
+ "origins":"{{ .Values.rooturl }}",
"spring.datasource.url": "jdbc:mysql://{{ include "openslice.fullname" . }}-mysql/osdb?createDatabaseIfNotExist=true",
"spring.datasource.username": "{{ .Values.oscreds.mysql.username }}",
"spring.datasource.password": "{{ .Values.oscreds.mysql.password }}",
@@ -57,7 +58,8 @@ spec:
"spring.activemq.user": "{{ .Values.oscreds.activemq.user }}",
"spring.activemq.password": "{{ .Values.oscreds.activemq.password }}",
"logging.level.org.springframework" : "{{ .Values.portalapi.spring.logLevel | default "INFO" }}",
- "logging.level.org.etsi.osl.portal.api": "{{ .Values.portalapi.logLevel | default "INFO" }}"
+ "logging.level.org.etsi.osl.portal.api": "{{ .Values.portalapi.logLevel | default "INFO" }}",
+ "server.forward-headers-strategy":"FRAMEWORK"
}
resources:
{{- toYaml .Values.resources | nindent 12 }}
diff --git a/kubernetes/helm/openslice/templates/osscapi.yaml b/kubernetes/helm/openslice/templates/osscapi.yaml
index cf96f7d26268efc80d2d38e727ce98290028802b..758d5194bba9efd07fe9e9b5dcdcb91a17611667 100644
--- a/kubernetes/helm/openslice/templates/osscapi.yaml
+++ b/kubernetes/helm/openslice/templates/osscapi.yaml
@@ -40,6 +40,7 @@ spec:
- name: SPRING_APPLICATION_JSON
value: >-
{
+ "origins":"{{ .Values.rooturl }}",
"spring.datasource.url": "jdbc:mysql://{{ include "openslice.fullname" . }}-mysql/osdb?createDatabaseIfNotExist=true",
"spring.datasource.username": "{{ .Values.oscreds.mysql.username }}",
"spring.datasource.password": "{{ .Values.oscreds.mysql.password }}",
@@ -57,7 +58,8 @@ spec:
"spring.activemq.user": "{{ .Values.oscreds.activemq.user }}",
"spring.activemq.password": "{{ .Values.oscreds.activemq.password }}",
"logging.level.org.springframework": "{{ .Values.osscapi.spring.logLevel | default "INFO" }}",
- "kroki.serverurl":"{{ .Values.rooturl }}/kroki"
+ "kroki.serverurl":"{{ .Values.rooturl }}/kroki",
+ "server.forward-headers-strategy":"FRAMEWORK"
}
resources:
{{- toYaml .Values.resources | nindent 12 }}
diff --git a/kubernetes/helm/openslice/values.yaml b/kubernetes/helm/openslice/values.yaml
index e3b53ec402988330862c7ddcd7e0faeefee8faae..ba45552be15c1de84c7e87548b52b0985b7b0d9a 100644
--- a/kubernetes/helm/openslice/values.yaml
+++ b/kubernetes/helm/openslice/values.yaml
@@ -9,7 +9,7 @@ image:
repository: apache/activemq-artemis
pullPolicy: Always
# Overrides the image tag whose default is the chart appVersion.
- tag: "2.30.0"
+ tag: "2.31.1"
blockdiag:
repository: yuzutech/kroki-blockdiag
pullPolicy: Always
@@ -80,6 +80,11 @@ image:
pullPolicy: Always
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
+ metrico:
+ repository: labs.etsi.org:5050/osl/code/org.etsi.osl.metrico
+ pullPolicy: Always
+ # Overrides the image tag whose default is the chart appVersion.
+ tag: "latest"
bugzillaurl: example.com:443/bugzilla
bugzillakey: VH2Vw0iI5aYgALFFzVDWqhACwt6Hu3bXla9kSC1Z
@@ -110,11 +115,21 @@ spring:
mysql:
storage: 10Gi
+
+metrico:
+ enabled: true
+ logLevel: DEBUG
+ spring:
+ loglevel: DEBUG
cridge:
+ enabled: true
logLevel: INFO
spring:
loglevel: INFO
+ kubeconfig:
+ base64: "" # Provide base64-encoded kubeconfig here if available
+ raw: "" # Provide raw kubeconfig here if available
portalapi:
logLevel: INFO
diff --git a/pom.xml b/pom.xml
index b22ca3a80a9b3bb430d1024fae9c3513dc099d4d..bfa0fc3e38a54253ce40a2a03ce7f78502c673d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,13 +5,13 @@
org.etsi.osl
org.etsi.osl.main
- 1.0.0
+ 2024Q4
pom
org.etsi.osl.main
- openslice.io
- http://openslice.io
+ OpenSlice by ETSI
+ https://osl.etsi.org
2019
@@ -33,24 +33,24 @@
1.7.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
- 1.0.0
+ 1.0.1
+ 1.0.1
+ 1.0.1
+ 1.1.0
+ 2024Q4
+ 1.0.1
+ 1.1.0
+ 1.0.1
+ 1.1.0
+ 1.0.1
+ 1.1.0
+ 1.0.1
+ 1.0.1
+ 1.0.1
+ 1.0.1
+ 1.1.0
+ 1.1.0
+ 0.9