diff --git a/Dockerfile b/Dockerfile
index 6cffc0c75263b23bd4d27764c7e734427d0e5622..d6ec77822674f0b858111ac447b398bee88b9489 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,5 +2,5 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk
MAINTAINER openslice.io
RUN mkdir /opt/shareclasses
RUN mkdir -p /opt/openslice/lib/
-COPY target/org.etsi.osl.cridge-1.1.0-exec.jar /opt/openslice/lib/
-CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.cridge-1.1.0-exec.jar"]
+COPY target/org.etsi.osl.cridge-1.2.0-exec.jar /opt/openslice/lib/
+CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.cridge-1.2.0-exec.jar"]
diff --git a/pom.xml b/pom.xml
index 56b90c4d44fdfe6acb67c0a631de937ac5db8493..7e9b63354ba79efd9cd007b5a43a1f8e5c56b1ff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.etsi.osl
org.etsi.osl.main
- 2024Q4
+ 2025Q2
../org.etsi.osl.main
diff --git a/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java b/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java
index 83237090c17a55f30ffd5864ea6db9c126dbabbd..b6a920b651f70da476f130aac4c2b15f7ceaa3e3 100644
--- a/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java
+++ b/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java
@@ -57,8 +57,8 @@ public class CRRouteBuilder extends RouteBuilder{
.bean( kubernetesClientResource, "patchCR(${headers}, ${body})")
.convertBodyTo( String.class );
- // every 120000 ms (2 minutes)
- from( "timer://processUpdateResources?period=120000" )
+ // every 300000 ms (5 minutes)
+ from( "timer://processUpdateResources?period=300000" )
.log(LoggingLevel.INFO, log, " process nameSpacesTobeDeleted!")
.to("log:DEBUG?showBody=true&showHeaders=true")
.bean( CRRouteBuilder.class , "processNameSpacesTobeDeleted()");
@@ -73,9 +73,9 @@ public class CRRouteBuilder extends RouteBuilder{
long diffInMillies = Math.abs(currentTime .getTime() - datetime.getTime());
long diff = TimeUnit.MINUTES.convert(diffInMillies, TimeUnit.MILLISECONDS);
- if (diff<=2) { //after 2 minutes this namespace will be deleted
+ if (diff<=10) { //after 10 minutes this namespace will be deleted
return;
- }
+ }
try (final KubernetesClient k8s = new KubernetesClientBuilder().build()) {
logger.info("Trying to delete namespace {}", nameSpaceName);
@@ -85,6 +85,11 @@ public class CRRouteBuilder extends RouteBuilder{
.endMetadata().build();
k8s.namespaces().resource(ns).delete();
+ NamespaceWatcher watchersForNamespace = kubernetesClientResource.getWatchersForNamespaces().get( nameSpaceName );
+ if ( watchersForNamespace!= null) {
+ watchersForNamespace.disableNamespace( nameSpaceName );
+ }
+ kubernetesClientResource.getWatchersForNamespaces().remove(nameSpaceName);
kubernetesClientResource.getNameSpacesTobeDeleted().remove(nameSpaceName);
}catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java b/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
index 4546d74a4d2dff2708f3f5c3c8c9d193bb9e4631..6763c70a391ec0b5a4b221e4d65d2c8b20cafb6b 100644
--- a/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
+++ b/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
@@ -419,7 +419,7 @@ public class KubernetesClientResource {
if ( this.watchersForNamespaces.get(nameSpacename) == null ) {
//SharedIndexInformer result = createWatchersFornamespace( nameSpacename, headers );
- NamespaceWatcher result = NamespaceWatcher.getNew( kubernetesClient, catalogClient, nameSpacename, headers);
+ NamespaceWatcher result = NamespaceWatcher.getNew( kubernetesClient, catalogClient, nameSpacename, headers, this);
this.watchersForNamespaces.put(nameSpacename, result);
}
@@ -467,7 +467,12 @@ public class KubernetesClientResource {
}
}));
- gkr.getMetadata().setName( (String) headers.get("org.etsi.osl.prefixName")) ;
+
+ String crName = (String) headers.get("org.etsi.osl.prefixName");
+ if ( crName == null || crName.isBlank() || crName.isEmpty() ) {
+ return "ERROR Custom Resource Name is empty";
+ }
+ gkr.getMetadata().setName( crName ) ;
String nameSpacename = (String) headers.get("org.etsi.osl.namespace");
if ( gkr.getMetadata().getNamespace() == null ) {
gkr.getMetadata().setNamespace(nameSpacename);
@@ -475,19 +480,13 @@ public class KubernetesClientResource {
logger.debug("Object to delete:{}", Serialization.asYaml( gkr ) );
Resource dummyObject = kubernetesClient.resource( gkr );
-
+
+ logger.debug("============ DELETE crspec: dummyObject {} =============", dummyObject.toString() );
List result = dummyObject.delete();
logger.debug("============ DELETE crspec: result {} =============", result.toString() );
this.nameSpacesTobeDeleted.put(nameSpacename, new Date() );
- NamespaceWatcher watchersForNamespace = this.watchersForNamespaces.get(nameSpacename);
- if ( watchersForNamespace!= null) {
- watchersForNamespace.disableNamespace( nameSpacename );
- }
-
- this.watchersForNamespaces.remove(nameSpacename);
-
}catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java b/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java
index 1e1ea08a88eb30f3d6704479fb774adfaa44cc4b..7088c2255ec0dbc358e69227493981fcd9ecb596 100644
--- a/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java
+++ b/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java
@@ -14,6 +14,7 @@ import org.etsi.osl.tmf.ri639.model.ResourceCreate;
import org.etsi.osl.tmf.ri639.model.ResourceStatusType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.yaml.snakeyaml.Yaml;
import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ObjectMeta;
@@ -45,13 +46,16 @@ public class NamespaceWatcher {
List< SharedIndexInformer>> informers = new ArrayList<>();
+ private KubernetesClientResource kubernetesClientResource;
- public NamespaceWatcher(KubernetesClient kubernetesClient, CatalogClient catalogClient, String anameSpacename, Map aheaders) {
+
+ public NamespaceWatcher(KubernetesClient kubernetesClient, CatalogClient catalogClient, String anameSpacename, Map aheaders, KubernetesClientResource akubernetesClientResource) {
super();
this.kubernetesClient = kubernetesClient;
this.catalogClient = catalogClient;
this.nameSpacename = anameSpacename;
this.headers = aheaders;
+ this.kubernetesClientResource = akubernetesClientResource;
kubernetesSecretResourceSpec = catalogClient.retrieveResourceSpecByNameCategoryVersion(
KubernetesSecret.OSL_KUBSECRET_RSPEC_NAME,
@@ -70,9 +74,9 @@ public class NamespaceWatcher {
KubernetesConfigMap.OSL_KUBCMAP_RSPEC_VERSION);
}
- public static NamespaceWatcher getNew(KubernetesClient kubernetesClient2, CatalogClient catalogClient2, String anameSpacename, Map aheaders) {
+ public static NamespaceWatcher getNew(KubernetesClient kubernetesClient2, CatalogClient catalogClient2, String anameSpacename, Map aheaders, KubernetesClientResource akubernetesClientResource) {
- NamespaceWatcher aNamespaceWatchers = new NamespaceWatcher(kubernetesClient2, catalogClient2, anameSpacename, aheaders);
+ NamespaceWatcher aNamespaceWatchers = new NamespaceWatcher(kubernetesClient2, catalogClient2, anameSpacename, aheaders, akubernetesClientResource);
SharedIndexInformer rSecret = aNamespaceWatchers.createSecretWatchersFornamespace(anameSpacename, aheaders);
aNamespaceWatchers.informers.add( rSecret );
@@ -140,7 +144,11 @@ public class NamespaceWatcher {
newObj.getMetadata().getName(),
newObj.getMetadata().getUid(),
newObj.getMetadata().getNamespace());
- updateKubernetesSecretResourceInOSLCatalog( newObj, false );
+ if ( kubernetesClientResource.getNameSpacesTobeDeleted().get( newObj.getMetadata().getNamespace())==null ) {
+ updateKubernetesSecretResourceInOSLCatalog( newObj, false );
+ } else {
+ updateKubernetesSecretResourceInOSLCatalog( newObj, true );
+ }
}
@@ -283,7 +291,12 @@ public class NamespaceWatcher {
newObj.getMetadata().getName(),
newObj.getMetadata().getUid(),
newObj.getMetadata().getNamespace());
- updateKubernetesServiceResourceInOSLCatalog( newObj, false );
+ //check if namespace is under deletion so to ignore any changes
+ if ( kubernetesClientResource.getNameSpacesTobeDeleted().get( newObj.getMetadata().getNamespace()) == null ) {
+ updateKubernetesServiceResourceInOSLCatalog( newObj, false );
+ } else {
+ updateKubernetesServiceResourceInOSLCatalog( newObj, true );
+ }
}
@@ -449,7 +462,13 @@ public class NamespaceWatcher {
newObj.getMetadata().getName(),
newObj.getMetadata().getUid(),
newObj.getMetadata().getNamespace());
- updateKubernetesConfigMapResourceInOSLCatalog( newObj, false );
+ //check if namespace is under deletion so to ignore any changes
+ if ( kubernetesClientResource.getNameSpacesTobeDeleted().get( newObj.getMetadata().getNamespace()) == null ) {
+ updateKubernetesConfigMapResourceInOSLCatalog( newObj, false );
+ } else {
+ updateKubernetesConfigMapResourceInOSLCatalog( newObj, true );
+ }
+
}