From dfc740fa81a3df1caadbdc7671c13d6bee948f21 Mon Sep 17 00:00:00 2001
From: Dimitrios Giannopoulos <dimit.giannopoulos@upnet.gr>
Date: Fri, 30 Aug 2024 13:54:24 +0000
Subject: [PATCH 1/8] fix: strictly compare between strings

---
 .gitlab-ci.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3d872f6..3f669e2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,7 @@ include:
       - ci-templates/default.yml
       - ci-templates/build.yml
     rules:
-      - if: '$CI_COMMIT_REF_PROTECTED && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
+      - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
 
   - project: osl/code/org.etsi.osl.main
     ref: develop
@@ -29,7 +29,7 @@ include:
       - ci-templates/default.yml
       - 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 == "false"'
 
 maven_build:
   extends: .maven_build
-- 
GitLab


From d347147dce589cf3fb9f6d402e33db8a80143bc5 Mon Sep 17 00:00:00 2001
From: trantzas <ktrantzas@ece.upatras.gr>
Date: Tue, 17 Sep 2024 18:49:38 +0000
Subject: [PATCH 2/8] Development preparation for release 2024Q4

---
 pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 6e5f80a..72bcddc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,12 +5,13 @@
 	<parent>
 		<groupId>org.etsi.osl</groupId>
 		<artifactId>org.etsi.osl.main</artifactId>
-		<version>1.0.0</version>
+		<version>2024Q4-SNAPSHOT</version>
 		<relativePath>../org.etsi.osl.main</relativePath>
 	</parent>
 
 
 	<artifactId>org.etsi.osl.model.k8s</artifactId>
+	<version>${org.etsi.osl.model.k8s.version}</version>
 	
 
 	<properties>
-- 
GitLab


From 4de0554ca72e243d2c8d5a355935a442867ffef0 Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Thu, 24 Oct 2024 15:14:05 +0300
Subject: [PATCH 3/8] fix for #8

---
 .../model/kubernetes/KubernetesConfigMap.java | 212 ++++++++++++++++
 .../model/kubernetes/KubernetesSecret.java    |   7 +-
 .../model/kubernetes/KubernetesService.java   | 236 ++++++++++++++++++
 3 files changed, 451 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
 create mode 100644 src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java

diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
new file mode 100644
index 0000000..f5127f7
--- /dev/null
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
@@ -0,0 +1,212 @@
+package org.etsi.osl.domain.model.kubernetes;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import org.etsi.osl.domain.model.DomainModelDefinition;
+import org.etsi.osl.domain.model.ITMFRCM634_ModelTransformer;
+import org.etsi.osl.domain.model.ITMFRI639_ModelTransformer;
+import org.etsi.osl.tmf.common.model.ELifecycle;
+import org.etsi.osl.tmf.common.model.EValueType;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecification;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationCreate;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationRef;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationUpdate;
+import org.etsi.osl.tmf.ri639.model.ResourceCreate;
+import org.etsi.osl.tmf.ri639.model.ResourceOperationalStateType;
+import org.etsi.osl.tmf.ri639.model.ResourceStatusType;
+import org.etsi.osl.tmf.ri639.model.ResourceUpdate;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author ctranoris
+ */
+@Getter
+@Setter
+public class KubernetesConfigMap extends DomainModelDefinition
+		implements ITMFRCM634_ModelTransformer, ITMFRI639_ModelTransformer {
+
+	public static final String OSL_KUBCMAP_RSPEC_NAME = "kubernetes-configmap.openslice.io";
+	public static final String OSL_KUBCMAP_RSPEC_VERSION = "0.0.1";
+	public static final String OSL_KUBCMAP_RSPEC_CATEGORY = "ConfigMap/Kubernetes/v1";
+	public static final String OSL_KUBCMAP_RESOURCE_CATEGORY = "ConfigMap/Kubernetes/v1";
+	public static final String OSL_KUBCMAP_RSPEC_TYPE = "LogicalResourceSpecification";
+	public static final String OSL_KUBCMAP_RSPEC_DESCRIPTION = "This Specification is used to describe a generic Kubernetes Service";
+
+	private String osl_KUBCRD_RSPEC_UUID = null; //this is assigned by the system through the DB for a specific instance
+	
+	private String clusterMasterURL;
+	private String currentContextCluster;
+	private String fullResourceName;
+	private String kind;
+	private String apiGroup;
+	private String UID;
+	private String metadata;
+	private String yaml;
+	private String json;
+    private String namespace;
+	
+
+    private Map<String, String> data;
+    private String dataObj;
+	private Map<String, String> properties;
+
+
+	@Builder
+	public KubernetesConfigMap(String osl_KUBCRD_RSPEC_UUID, String uuid, String name, String version, String description, String category,
+			String clusterMasterURL, String currentContextCluster, String fullResourceName, String namespace,
+			String kind, String apiGroup, String uID,
+			String metadata,
+			String yaml,
+			String json) {
+		super(uuid, name, version, description, category);
+		this.osl_KUBCRD_RSPEC_UUID = osl_KUBCRD_RSPEC_UUID;
+		this.clusterMasterURL = clusterMasterURL;
+		this.currentContextCluster = currentContextCluster;
+		this.fullResourceName = fullResourceName;
+		this.kind = kind;
+		this.apiGroup = apiGroup;
+        this.namespace = namespace;
+		this.UID = uID;
+		this.metadata = metadata;
+		this.yaml = yaml;
+		this.json = json;
+        this.properties = new HashMap<>();
+        this.data = new HashMap<>();
+		this.category = OSL_KUBCMAP_RSPEC_CATEGORY;
+	}
+	
+	
+
+	@Override
+	public ResourceSpecificationCreate toRSpecCreate_InitRepo() {
+
+		ResourceSpecificationCreate rsc = this.toRSpecCreate();
+		rsc.setName( OSL_KUBCMAP_RSPEC_NAME );
+		rsc.setCategory( OSL_KUBCMAP_RSPEC_CATEGORY );
+		rsc.setVersion(OSL_KUBCMAP_RSPEC_VERSION);
+		rsc.setDescription( OSL_KUBCMAP_RSPEC_DESCRIPTION );
+		rsc.setType( OSL_KUBCMAP_RSPEC_TYPE );
+		
+		
+
+		return rsc;
+	}
+	
+	@Override
+	public ResourceSpecificationCreate toRSpecCreate() {
+
+		ResourceSpecificationCreate rsc = new ResourceSpecificationCreate();
+		rsc.setName( this.name );
+		rsc.setCategory( OSL_KUBCMAP_RSPEC_CATEGORY );
+		rsc.setVersion( this.version );
+		rsc.setDescription( this.version );
+		rsc.setType( OSL_KUBCMAP_RSPEC_TYPE );
+		
+		rsc.setLifecycleStatus( ELifecycle.ACTIVE.getValue() );
+		rsc.addResourceSpecificationCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue(), "URL of cluster",  false);
+		rsc.addResourceSpecificationCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("Kind", this.kind, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue(), "", false);
+        rsc.addResourceSpecificationCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue(), "", false);
+        
+		if (this.properties != null)
+		  this.properties.forEach((kPropName, vProVal) -> {
+		    EValueType etype;		 
+		    etype = EValueType.TEXT;
+		    rsc.addResourceSpecificationCharacteristicItemShort(kPropName , vProVal, etype.getValue(), "", false);
+
+		  });
+		if (this.data != null)
+		  this.data.forEach((kPropName, vProVal) -> {
+		    EValueType etype;        
+		    etype = EValueType.TEXT;
+		    rsc.addResourceSpecificationCharacteristicItemShort(kPropName , vProVal, etype.getValue(), "", false);
+
+		  });
+		
+
+
+		return rsc;
+	}
+	
+	@Override
+	public ResourceSpecificationUpdate toRSpecUpdate() {
+		return this.toRSpecCreate();
+	}
+
+	@Override
+	public KubernetesConfigMap fromRSpec(ResourceSpecification rSpec) {
+		this.osl_KUBCRD_RSPEC_UUID = rSpec.getUuid();
+		return this;
+	}
+	
+	@Override
+	public ResourceCreate toResourceCreate() {
+
+		if (osl_KUBCRD_RSPEC_UUID == null) {
+			return null;
+		}
+
+		ResourceSpecificationRef rSpecRef = new ResourceSpecificationRef();
+		rSpecRef.setId( osl_KUBCRD_RSPEC_UUID  );
+		rSpecRef.setName( OSL_KUBCMAP_RSPEC_NAME );
+		rSpecRef.setVersion( OSL_KUBCMAP_RSPEC_VERSION );
+		
+		ResourceCreate rs = new ResourceCreate();
+		rs.name( this.name )
+		.category( OSL_KUBCMAP_RESOURCE_CATEGORY )
+		.description( this.description )
+		.resourceStatus( ResourceStatusType.AVAILABLE )
+		.operationalState( ResourceOperationalStateType.ENABLE )
+		.resourceSpecification( rSpecRef )
+		.resourceVersion( this.version);
+		
+		rs.addResourceCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("Kind", this.kind, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
+		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
+        rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
+		
+
+		if (this.properties != null)
+		  this.properties.forEach((kPropName, vProVal) -> {
+		    EValueType etype;
+		    etype = EValueType.TEXT;
+
+		    rs.addResourceCharacteristicItemShort( kPropName , vProVal, etype.getValue());
+
+		  });
+        if (this.data != null)
+          this.data.forEach((kPropName, vProVal) -> {
+            EValueType etype;        
+            etype = EValueType.TEXT;
+            rs.addResourceCharacteristicItemShort( kPropName , vProVal, etype.getValue());
+
+          });
+
+
+
+
+		return rs;
+	}
+	
+	@Override
+	public ResourceUpdate toResourceUpdate() {
+	
+		return this.toResourceCreate();
+	}
+
+}
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
index 820c777..011790d 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
@@ -2,6 +2,7 @@ package org.etsi.osl.domain.model.kubernetes;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
 import org.etsi.osl.domain.model.DomainModelDefinition;
 import org.etsi.osl.domain.model.ITMFRCM634_ModelTransformer;
 import org.etsi.osl.domain.model.ITMFRI639_ModelTransformer;
@@ -180,21 +181,19 @@ public class KubernetesSecret extends DomainModelDefinition
         rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
 		
 
-
-        
 		if (this.properties != null)
 		  this.properties.forEach((kPropName, vProVal) -> {
 		    EValueType etype;
 		    etype = EValueType.TEXT;
 
-		    rs.addResourceCharacteristicItemShort(kPropName , vProVal, etype.getValue());
+		    rs.addResourceCharacteristicItemShort(  kPropName , vProVal, etype.getValue());
 
 		  });
         if (this.data != null)
           this.data.forEach((kPropName, vProVal) -> {
             EValueType etype;        
             etype = EValueType.TEXT;
-            rs.addResourceCharacteristicItemShort(kPropName , vProVal, etype.getValue());
+            rs.addResourceCharacteristicItemShort( kPropName , vProVal, etype.getValue());
 
           });
 
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
new file mode 100644
index 0000000..bd380db
--- /dev/null
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
@@ -0,0 +1,236 @@
+package org.etsi.osl.domain.model.kubernetes;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import org.etsi.osl.domain.model.DomainModelDefinition;
+import org.etsi.osl.domain.model.ITMFRCM634_ModelTransformer;
+import org.etsi.osl.domain.model.ITMFRI639_ModelTransformer;
+import org.etsi.osl.tmf.common.model.ELifecycle;
+import org.etsi.osl.tmf.common.model.EValueType;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecification;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationCreate;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationRef;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationUpdate;
+import org.etsi.osl.tmf.ri639.model.ResourceCreate;
+import org.etsi.osl.tmf.ri639.model.ResourceOperationalStateType;
+import org.etsi.osl.tmf.ri639.model.ResourceStatusType;
+import org.etsi.osl.tmf.ri639.model.ResourceUpdate;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author ctranoris
+ */
+@Getter
+@Setter
+public class KubernetesService extends DomainModelDefinition
+		implements ITMFRCM634_ModelTransformer, ITMFRI639_ModelTransformer {
+
+	public static final String OSL_KUBSERVICE_RSPEC_NAME = "kubernetes-service.openslice.io";
+	public static final String OSL_KUBSERVICE_RSPEC_VERSION = "0.0.1";
+	public static final String OSL_KUBSERVICE_RSPEC_CATEGORY = "Service/Kubernetes/v1";
+	public static final String OSL_KUBSERVICE_RESOURCE_CATEGORY = "Service/Kubernetes/v1";
+	public static final String OSL_KUBSERVICE_RSPEC_TYPE = "LogicalResourceSpecification";
+	public static final String OSL_KUBSERVICE_RSPEC_DESCRIPTION = "This Specification is used to describe a generic Kubernetes Service";
+
+	private String osl_KUBCRD_RSPEC_UUID = null; //this is assigned by the system through the DB for a specific instance
+	
+	private String clusterMasterURL;
+	private String currentContextCluster;
+	private String fullResourceName;
+	private String kind;
+	private String apiGroup;
+	private String UID;
+	private String metadata;
+	private String yaml;
+	private String json;
+    private String namespace;
+	
+
+    private Map<String, String> spec;
+    private String specObj;
+    private Map<String, String> status;
+    private String statusObj;
+    private Map<String, String> properties;
+
+
+	@Builder
+	public KubernetesService(String osl_KUBCRD_RSPEC_UUID, String uuid, String name, String version, String description, String category,
+			String clusterMasterURL, String currentContextCluster, String fullResourceName, String namespace,
+			String kind, String apiGroup, String uID,
+			String metadata,
+			String yaml,
+			String json) {
+		super(uuid, name, version, description, category);
+		this.osl_KUBCRD_RSPEC_UUID = osl_KUBCRD_RSPEC_UUID;
+		this.clusterMasterURL = clusterMasterURL;
+		this.currentContextCluster = currentContextCluster;
+		this.fullResourceName = fullResourceName;
+		this.kind = kind;
+		this.apiGroup = apiGroup;
+        this.namespace = namespace;
+		this.UID = uID;
+		this.metadata = metadata;
+		this.yaml = yaml;
+		this.json = json;
+        this.spec = new HashMap<>();
+        this.status = new HashMap<>();
+        this.properties = new HashMap<>();
+		this.category = OSL_KUBSERVICE_RSPEC_CATEGORY;
+	}
+	
+	
+
+	@Override
+	public ResourceSpecificationCreate toRSpecCreate_InitRepo() {
+
+		ResourceSpecificationCreate rsc = this.toRSpecCreate();
+		rsc.setName( OSL_KUBSERVICE_RSPEC_NAME );
+		rsc.setCategory( OSL_KUBSERVICE_RSPEC_CATEGORY );
+		rsc.setVersion(OSL_KUBSERVICE_RSPEC_VERSION);
+		rsc.setDescription( OSL_KUBSERVICE_RSPEC_DESCRIPTION );
+		rsc.setType( OSL_KUBSERVICE_RSPEC_TYPE );
+		
+		
+
+		return rsc;
+	}
+	
+	@Override
+	public ResourceSpecificationCreate toRSpecCreate() {
+
+		ResourceSpecificationCreate rsc = new ResourceSpecificationCreate();
+		rsc.setName( this.name );
+		rsc.setCategory( OSL_KUBSERVICE_RSPEC_CATEGORY );
+		rsc.setVersion( this.version );
+		rsc.setDescription( this.version );
+		rsc.setType( OSL_KUBSERVICE_RSPEC_TYPE );
+		
+		rsc.setLifecycleStatus( ELifecycle.ACTIVE.getValue() );
+		rsc.addResourceSpecificationCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue(), "URL of cluster",  false);
+		rsc.addResourceSpecificationCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("Kind", this.kind, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
+		rsc.addResourceSpecificationCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue(), "", false);
+        rsc.addResourceSpecificationCharacteristicItemShort("spec", this.specObj, EValueType.OBJECT.getValue(), "", false);
+        rsc.addResourceSpecificationCharacteristicItemShort("status", this.statusObj, EValueType.OBJECT.getValue(), "", false);
+        
+        
+        
+        
+        
+		if (this.status != null)
+		  this.status.forEach((kPropName, vProVal) -> {
+		    EValueType etype;		 
+		    etype = EValueType.TEXT;
+		    rsc.addResourceSpecificationCharacteristicItemShort( kPropName , vProVal, etype.getValue(), "", false);
+
+		  });
+		if (this.spec != null)
+		  this.spec.forEach((kPropName, vProVal) -> {
+		    EValueType etype;        
+		    etype = EValueType.TEXT;
+		    rsc.addResourceSpecificationCharacteristicItemShort( kPropName , vProVal, etype.getValue(), "", false);
+
+		  });
+	      if (this.properties != null)
+	          this.properties.forEach((kPropName, vProVal) -> {
+	            EValueType etype;        
+	            etype = EValueType.TEXT;
+	            rsc.addResourceSpecificationCharacteristicItemShort( kPropName , vProVal, etype.getValue(), "", false);
+
+	          });
+		
+
+
+		return rsc;
+	}
+	
+	@Override
+	public ResourceSpecificationUpdate toRSpecUpdate() {
+		return this.toRSpecCreate();
+	}
+
+	@Override
+	public KubernetesService fromRSpec(ResourceSpecification rSpec) {
+		this.osl_KUBCRD_RSPEC_UUID = rSpec.getUuid();
+		return this;
+	}
+	
+	@Override
+	public ResourceCreate toResourceCreate() {
+
+		if (osl_KUBCRD_RSPEC_UUID == null) {
+			return null;
+		}
+
+		ResourceSpecificationRef rSpecRef = new ResourceSpecificationRef();
+		rSpecRef.setId( osl_KUBCRD_RSPEC_UUID  );
+		rSpecRef.setName( OSL_KUBSERVICE_RSPEC_NAME );
+		rSpecRef.setVersion( OSL_KUBSERVICE_RSPEC_VERSION );
+		
+		ResourceCreate rs = new ResourceCreate();
+		rs.name( this.name )
+		.category( OSL_KUBSERVICE_RESOURCE_CATEGORY )
+		.description( this.description )
+		.resourceStatus( ResourceStatusType.AVAILABLE )
+		.operationalState( ResourceOperationalStateType.ENABLE )
+		.resourceSpecification( rSpecRef )
+		.resourceVersion( this.version);
+		
+		rs.addResourceCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("Kind", this.kind, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
+		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
+        rs.addResourceCharacteristicItemShort("spec", this.specObj, EValueType.OBJECT.getValue());
+        rs.addResourceCharacteristicItemShort("status", this.statusObj, EValueType.OBJECT.getValue());
+		
+
+        
+		if (this.status != null)
+		  this.status.forEach((kPropName, vProVal) -> {
+		    EValueType etype;
+		    etype = EValueType.TEXT;
+
+		    rs.addResourceCharacteristicItemShort( kPropName , vProVal, etype.getValue());
+
+		  });
+        if (this.spec != null)
+          this.spec.forEach((kPropName, vProVal) -> {
+            EValueType etype;        
+            etype = EValueType.TEXT;
+            rs.addResourceCharacteristicItemShort(  kPropName , vProVal, etype.getValue());
+
+          });
+        if (this.properties != null)
+          this.properties.forEach((kPropName, vProVal) -> {
+            EValueType etype;
+            etype = EValueType.TEXT;
+
+            rs.addResourceCharacteristicItemShort( kPropName , vProVal, etype.getValue());
+
+          });
+
+
+
+		return rs;
+	}
+	
+	@Override
+	public ResourceUpdate toResourceUpdate() {
+	
+		return this.toResourceCreate();
+	}
+
+}
-- 
GitLab


From 4e8b2397a3ba9ee8fc454c9e94633d8f441416a1 Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Mon, 4 Nov 2024 13:00:04 +0200
Subject: [PATCH 4/8] fix for prefix json

---
 .../etsi/osl/domain/model/kubernetes/KubernetesService.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
index bd380db..421e4f3 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
@@ -184,6 +184,10 @@ public class KubernetesService extends DomainModelDefinition
 		.resourceSpecification( rSpecRef )
 		.resourceVersion( this.version);
 		
+		
+		String firstToken = this.fullResourceName.substring(  0, this.fullResourceName.indexOf('@') );
+		String cprefix = this.kind + "." + firstToken + ".";
+		
 		rs.addResourceCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue());
@@ -192,7 +196,7 @@ public class KubernetesService extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
 		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
-		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
+        rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("spec", this.specObj, EValueType.OBJECT.getValue());
         rs.addResourceCharacteristicItemShort("status", this.statusObj, EValueType.OBJECT.getValue());
 		
-- 
GitLab


From bdec583f6b1e07d7ae43e91d686fd39dc9ef2f90 Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Mon, 4 Nov 2024 19:38:14 +0200
Subject: [PATCH 5/8] fix for #9

---
 .../osl/domain/model/kubernetes/KubernetesService.java    | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
index 421e4f3..9b40f88 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
@@ -184,9 +184,11 @@ public class KubernetesService extends DomainModelDefinition
 		.resourceSpecification( rSpecRef )
 		.resourceVersion( this.version);
 		
-		
-		String firstToken = this.fullResourceName.substring(  0, this.fullResourceName.indexOf('@') );
-		String cprefix = this.kind + "." + firstToken + ".";
+		String cprefix = "";
+		if ( this.name.indexOf('@')>0) {
+	        String firstToken = this.name.substring(  0, this.name.indexOf('@') );
+	        cprefix = this.kind + "." + firstToken + ".";		  
+		}
 		
 		rs.addResourceCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue());
-- 
GitLab


From 158443b3109bfba87e63e5e5005a7f24c8cdc9ad Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Tue, 5 Nov 2024 00:19:13 +0200
Subject: [PATCH 6/8] fix for #9

---
 .../domain/model/kubernetes/KubernetesConfigMap.java  | 11 +++++++++--
 .../osl/domain/model/kubernetes/KubernetesSecret.java | 11 +++++++++--
 .../domain/model/kubernetes/KubernetesService.java    |  2 +-
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
index f5127f7..a604507 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
@@ -169,6 +169,13 @@ public class KubernetesConfigMap extends DomainModelDefinition
 		.resourceSpecification( rSpecRef )
 		.resourceVersion( this.version);
 		
+	      String cprefix = "";
+	        if ( this.name.indexOf('@')>0) {
+	            String firstToken = this.name.substring(  0, this.name.indexOf('@') );
+	            cprefix = this.kind + "." + firstToken + ".";         
+	        }
+	        
+	        
 		rs.addResourceCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue());
@@ -176,8 +183,8 @@ public class KubernetesConfigMap extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
-		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
-		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
+		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
 		
 
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
index 011790d..8a0903b 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
@@ -169,6 +169,13 @@ public class KubernetesSecret extends DomainModelDefinition
 		.resourceSpecification( rSpecRef )
 		.resourceVersion( this.version);
 		
+        String cprefix = "";
+        if ( this.name.indexOf('@')>0) {
+            String firstToken = this.name.substring(  0, this.name.indexOf('@') );
+            cprefix = this.kind + "." + firstToken + ".";         
+        }
+        
+        
 		rs.addResourceCharacteristicItemShort("clusterMasterURL", this.clusterMasterURL, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("currentContextCluster", this.currentContextCluster, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("fullResourceName", this.fullResourceName, EValueType.TEXT.getValue());
@@ -176,8 +183,8 @@ public class KubernetesSecret extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
-		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
-		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
+		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
 		
 
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
index 9b40f88..38b0b33 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
@@ -197,7 +197,7 @@ public class KubernetesService extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
-		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("spec", this.specObj, EValueType.OBJECT.getValue());
         rs.addResourceCharacteristicItemShort("status", this.statusObj, EValueType.OBJECT.getValue());
-- 
GitLab


From 7260fe59246d3d5f30468f34a39616a3be41b605 Mon Sep 17 00:00:00 2001
From: Christos Tranoris <tranoris@ece.upatras.gr>
Date: Wed, 18 Dec 2024 09:18:15 +0200
Subject: [PATCH 7/8] fix for #10

---
 .../etsi/osl/domain/model/kubernetes/KubernetesCRV1.java  | 4 ++--
 .../osl/domain/model/kubernetes/KubernetesConfigMap.java  | 8 ++++----
 .../osl/domain/model/kubernetes/KubernetesSecret.java     | 6 +++---
 .../osl/domain/model/kubernetes/KubernetesService.java    | 6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesCRV1.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesCRV1.java
index c550be8..d634df0 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesCRV1.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesCRV1.java
@@ -115,7 +115,7 @@ public class KubernetesCRV1 extends DomainModelDefinition
 		rsc.addResourceSpecificationCharacteristicItemShort( "UID", "", EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort( "namespace", "", EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort( "metadata", "", EValueType.TEXT.getValue(), "", false);
-		rsc.addResourceSpecificationCharacteristicItemShort( "yaml", "", EValueType.TEXT.getValue(), "", false);
+//		rsc.addResourceSpecificationCharacteristicItemShort( "yaml", "", EValueType.TEXT.getValue(), "", false);
         rsc.addResourceSpecificationCharacteristicItemShort( "json", "", EValueType.TEXT.getValue(), "", false);
 
         rsc.addResourceSpecificationCharacteristicItemShort( "_CR_SPEC", "", EValueType.TEXT.getValue(), "Used for providing the json Custom Resource description to apply", false);
@@ -179,7 +179,7 @@ public class KubernetesCRV1 extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("namespace", this.namespace, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.TEXT.getValue());
-		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+//		rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
         
 
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
index a604507..2e4457a 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesConfigMap.java
@@ -113,7 +113,7 @@ public class KubernetesConfigMap extends DomainModelDefinition
 		rsc.addResourceSpecificationCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue(), "", false);
-		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
+//		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue(), "", false);
         rsc.addResourceSpecificationCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue(), "", false);
         
@@ -183,9 +183,9 @@ public class KubernetesConfigMap extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
-		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
-		rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
-        rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
+//		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
 		
 
 		if (this.properties != null)
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
index 8a0903b..275dceb 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesSecret.java
@@ -113,7 +113,7 @@ public class KubernetesSecret extends DomainModelDefinition
 		rsc.addResourceSpecificationCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue(), "", false);
-		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
+//		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue(), "", false);
         rsc.addResourceSpecificationCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue(), "", false);
         
@@ -183,8 +183,8 @@ public class KubernetesSecret extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
-		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
-		rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
+//		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+		rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("data", this.dataObj, EValueType.OBJECT.getValue());
 		
 
diff --git a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
index 38b0b33..38fa5ce 100644
--- a/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
+++ b/src/main/java/org/etsi/osl/domain/model/kubernetes/KubernetesService.java
@@ -116,7 +116,7 @@ public class KubernetesService extends DomainModelDefinition
 		rsc.addResourceSpecificationCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue(), "", false);
-		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
+//		rsc.addResourceSpecificationCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue(), "", false);
 		rsc.addResourceSpecificationCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue(), "", false);
         rsc.addResourceSpecificationCharacteristicItemShort("spec", this.specObj, EValueType.OBJECT.getValue(), "", false);
         rsc.addResourceSpecificationCharacteristicItemShort("status", this.statusObj, EValueType.OBJECT.getValue(), "", false);
@@ -197,8 +197,8 @@ public class KubernetesService extends DomainModelDefinition
 		rs.addResourceCharacteristicItemShort("apiGroup", this.apiGroup, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("UID", this.UID, EValueType.TEXT.getValue());
 		rs.addResourceCharacteristicItemShort("metadata", this.metadata, EValueType.OBJECT.getValue());
-		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
-        rs.addResourceCharacteristicItemShort(cprefix + "json", this.json, EValueType.TEXT.getValue());
+//		//rs.addResourceCharacteristicItemShort("yaml", this.yaml, EValueType.TEXT.getValue());
+        rs.addResourceCharacteristicItemShort("json", this.json, EValueType.TEXT.getValue());
         rs.addResourceCharacteristicItemShort("spec", this.specObj, EValueType.OBJECT.getValue());
         rs.addResourceCharacteristicItemShort("status", this.statusObj, EValueType.OBJECT.getValue());
 		
-- 
GitLab


From 6cb8f2de2ae84bb1fa506567d284e2d1d45e6282 Mon Sep 17 00:00:00 2001
From: trantzas <ktrantzas@ece.upatras.gr>
Date: Tue, 14 Jan 2025 12:36:00 +0000
Subject: [PATCH 8/8] Preparing the 2024Q4_RC:

- Remove -SNAPSHOT from parent's version at pom.xml
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 72bcddc..3be3531 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>org.etsi.osl</groupId>
 		<artifactId>org.etsi.osl.main</artifactId>
-		<version>2024Q4-SNAPSHOT</version>
+		<version>2024Q4</version>
 		<relativePath>../org.etsi.osl.main</relativePath>
 	</parent>
 
-- 
GitLab