diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java
index 340a3cd..754669d 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java
@@ -32,6 +32,9 @@ import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;
import java.util.logging.Logger;
+import static org.jdrupes.vmoperator.manager.Constants.APP_NAME;
+import static org.jdrupes.vmoperator.util.Constants.VM_OP_NAME;
+import org.jdrupes.vmoperator.util.K8s;
import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
@@ -98,8 +101,8 @@ import org.yaml.snakeyaml.constructor.SafeConstructor;
DynamicKubernetesObject newCm) {
ListOptions listOpts = new ListOptions();
listOpts.setLabelSelector(
- "app.kubernetes.io/managed-by=" + Constants.VM_OP_NAME + ","
- + "app.kubernetes.io/name=" + Constants.APP_NAME);
+ "app.kubernetes.io/managed-by=" + VM_OP_NAME + ","
+ + "app.kubernetes.io/name=" + APP_NAME);
// Get pod, selected by label
var podApi = new DynamicKubernetesApi("", "v1", "pods", client);
var pods = podApi
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Constants.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Constants.java
index d1482b6..dd2774e 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Constants.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Constants.java
@@ -23,15 +23,6 @@ package org.jdrupes.vmoperator.manager;
*/
public class Constants {
- /** The Constant VM_OP_NAME. */
- public static final String VM_OP_NAME = "vm-operator";
-
- /** The Constant VM_OP_GROUP. */
- public static final String VM_OP_GROUP = "vmoperator.jdrupes.org";
-
- /** The Constant VM_OP_KIND_VM. */
- public static final String VM_OP_KIND_VM = "VirtualMachine";
-
/** The Constant APP_NAME. */
public static final String APP_NAME = "vm-runner";
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/LoadBalancerReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/LoadBalancerReconciler.java
index a9c0d2b..b8decd8 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/LoadBalancerReconciler.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/LoadBalancerReconciler.java
@@ -33,6 +33,8 @@ import java.util.Collections;
import java.util.Map;
import java.util.Optional;
import java.util.logging.Logger;
+import org.jdrupes.vmoperator.util.GsonPtr;
+import org.jdrupes.vmoperator.util.K8s;
import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Manager.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Manager.java
index 5b55ca8..e26b813 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Manager.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Manager.java
@@ -30,7 +30,7 @@ import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
-import static org.jdrupes.vmoperator.manager.Constants.VM_OP_NAME;
+import static org.jdrupes.vmoperator.util.Constants.VM_OP_NAME;
import org.jdrupes.vmoperator.util.FsdUtils;
import org.jgrapes.core.Component;
import org.jgrapes.core.Components;
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java
index 9777af1..94b79dc 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java
@@ -43,10 +43,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import static org.jdrupes.vmoperator.manager.Constants.VM_OP_GROUP;
import org.jdrupes.vmoperator.manager.VmDefChanged.Type;
+import static org.jdrupes.vmoperator.util.Constants.VM_OP_GROUP;
import org.jdrupes.vmoperator.util.Convertions;
import org.jdrupes.vmoperator.util.ExtendedObjectWrapper;
+import org.jdrupes.vmoperator.util.GsonPtr;
+import org.jdrupes.vmoperator.util.K8s;
import org.jgrapes.core.Channel;
import org.jgrapes.core.Component;
import org.jgrapes.core.annotation.Handler;
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java
index 6f6d09c..94764ad 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java
@@ -29,6 +29,8 @@ import java.io.IOException;
import java.io.StringWriter;
import java.util.Map;
import java.util.logging.Logger;
+import org.jdrupes.vmoperator.util.GsonPtr;
+import org.jdrupes.vmoperator.util.K8s;
import org.yaml.snakeyaml.LoaderOptions;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.SafeConstructor;
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmWatcher.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmWatcher.java
index a304c0b..7ecce4c 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmWatcher.java
+++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmWatcher.java
@@ -44,9 +44,11 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
-import static org.jdrupes.vmoperator.manager.Constants.VM_OP_GROUP;
-import static org.jdrupes.vmoperator.manager.Constants.VM_OP_KIND_VM;
+import static org.jdrupes.vmoperator.manager.Constants.APP_NAME;
import org.jdrupes.vmoperator.manager.VmDefChanged.Type;
+import static org.jdrupes.vmoperator.util.Constants.VM_OP_GROUP;
+import static org.jdrupes.vmoperator.util.Constants.VM_OP_KIND_VM;
+import static org.jdrupes.vmoperator.util.Constants.VM_OP_NAME;
import org.jgrapes.core.Channel;
import org.jgrapes.core.Component;
import org.jgrapes.core.Components;
@@ -132,7 +134,7 @@ public class VmWatcher extends Component {
for (var version : vmOpApiVersions) {
coa.getAPIResources(VM_OP_GROUP, version)
.getResources().stream()
- .filter(r -> Constants.VM_OP_KIND_VM.equals(r.getKind()))
+ .filter(r -> VM_OP_KIND_VM.equals(r.getKind()))
.findFirst()
.ifPresent(crd -> watchVmDefs(crd, version));
}
@@ -148,15 +150,15 @@ public class VmWatcher extends Component {
// Get all known CR instances.
coa.getAPIResources(VM_OP_GROUP, version)
.getResources().stream()
- .filter(r -> Constants.VM_OP_KIND_VM.equals(r.getKind()))
+ .filter(r -> VM_OP_KIND_VM.equals(r.getKind()))
.findFirst()
.ifPresent(crd -> known.addAll(getKnown(client, crd, version)));
}
ListOptions opts = new ListOptions();
opts.setLabelSelector(
- "app.kubernetes.io/managed-by=" + Constants.VM_OP_NAME + ","
- + "app.kubernetes.io/name=" + Constants.APP_NAME);
+ "app.kubernetes.io/managed-by=" + VM_OP_NAME + ","
+ + "app.kubernetes.io/name=" + APP_NAME);
for (String resource : List.of("apps/v1/statefulsets",
"v1/configmaps", "v1/secrets")) {
var resParts = new LinkedList<>(List.of(resource.split("/")));
diff --git a/org.jdrupes.vmoperator.util/.settings/org.eclipse.jdt.core.prefs b/org.jdrupes.vmoperator.util/.settings/org.eclipse.jdt.core.prefs
index 4250f30..17fc9079 100644
--- a/org.jdrupes.vmoperator.util/.settings/org.eclipse.jdt.core.prefs
+++ b/org.jdrupes.vmoperator.util/.settings/org.eclipse.jdt.core.prefs
@@ -1,5 +1,5 @@
#
-#Fri Sep 01 16:56:14 CEST 2023
+#Thu Sep 14 09:53:57 CEST 2023
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
diff --git a/org.jdrupes.vmoperator.util/build.gradle b/org.jdrupes.vmoperator.util/build.gradle
index 0dac0c5..f20afcb 100644
--- a/org.jdrupes.vmoperator.util/build.gradle
+++ b/org.jdrupes.vmoperator.util/build.gradle
@@ -10,4 +10,5 @@ plugins {
dependencies {
implementation 'org.freemarker:freemarker:[2.3.32,2.4)'
+ implementation 'io.kubernetes:client-java:[18.0.0,19)'
}
diff --git a/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/Constants.java b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/Constants.java
new file mode 100644
index 0000000..14fad65
--- /dev/null
+++ b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/Constants.java
@@ -0,0 +1,37 @@
+/*
+ * VM-Operator
+ * Copyright (C) 2023 Michael N. Lipp
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package org.jdrupes.vmoperator.util;
+
+/**
+ * Some constants.
+ */
+public class Constants {
+
+ /** The Constant VM_OP_NAME. */
+ public static final String VM_OP_NAME = "vm-operator";
+
+ /** The Constant VM_OP_GROUP. */
+ public static final String VM_OP_GROUP = "vmoperator.jdrupes.org";
+
+ /** The Constant VM_OP_CRD_NAME. */
+ public static final String VM_OP_CRD_NAME = "vms." + VM_OP_GROUP;
+
+ /** The Constant VM_OP_KIND_VM. */
+ public static final String VM_OP_KIND_VM = "VirtualMachine";
+}
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/GsonPtr.java b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/GsonPtr.java
similarity index 99%
rename from org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/GsonPtr.java
rename to org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/GsonPtr.java
index 7d0f403..22a76f3 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/GsonPtr.java
+++ b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/GsonPtr.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package org.jdrupes.vmoperator.manager;
+package org.jdrupes.vmoperator.util;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/K8s.java b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/K8s.java
similarity index 99%
rename from org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/K8s.java
rename to org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/K8s.java
index efc304e..539a870 100644
--- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/K8s.java
+++ b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/K8s.java
@@ -16,7 +16,7 @@
* along with this program. If not, see .
*/
-package org.jdrupes.vmoperator.manager;
+package org.jdrupes.vmoperator.util;
import io.kubernetes.client.common.KubernetesListObject;
import io.kubernetes.client.common.KubernetesObject;