diff --git a/dev-example/config.yaml b/dev-example/config.yaml index cafac06..6b1e824 100644 --- a/dev-example/config.yaml +++ b/dev-example/config.yaml @@ -3,9 +3,10 @@ "/Manager": "/Controller": namespace: vmop-dev - runnerData: - storageClassName: null - loadBalancerService: | - labels: - test1: info - test2: toBeDeleted + "/Reconciler": + runnerData: + storageClassName: null + loadBalancerService: | + labels: + test1: info + test2: toBeDeleted diff --git a/example/local-path/kustomization.yaml b/example/local-path/kustomization.yaml index 799712a..84324c8 100644 --- a/example/local-path/kustomization.yaml +++ b/example/local-path/kustomization.yaml @@ -32,6 +32,7 @@ patches: config.yaml: | "/Manager": "/Controller": - runnerData: - # Default is to use the default storage class - storageClassName: local-path + "/Reconciler" + runnerDataPvc: + # Default is to use the default storage class + storageClassName: local-path diff --git a/example/rook-ceph/kustomization.yaml b/example/rook-ceph/kustomization.yaml index 495fe3c..0d8477f 100644 --- a/example/rook-ceph/kustomization.yaml +++ b/example/rook-ceph/kustomization.yaml @@ -26,5 +26,6 @@ patches: config.yaml: | "/Manager": "/Controller": - runnerData: - storageClassName: rook-cephfs + "/Reconciler": + runnerData: + storageClassName: rook-cephfs diff --git a/org.jdrupes.vmoperator.manager/config-sample.yaml b/org.jdrupes.vmoperator.manager/config-sample.yaml index 68f28f5..56cfefc 100644 --- a/org.jdrupes.vmoperator.manager/config-sample.yaml +++ b/org.jdrupes.vmoperator.manager/config-sample.yaml @@ -2,25 +2,27 @@ "/Manager": "/Controller": - # Values used when creating the PVC for the runner's data - runnerData: - storageClassName: null - - # Amount by which the current cpu count is devided when generating - # the resource properties. - cpuOvercommit: 2 - - # Amount by which the current ram size is devided when generating - # the resource properties. - ramOvercommit: 1.5 - - # If defined, causes a load balancer service to be created. - # May be a boolean or a string with nested yaml that - # defines additional labels or annotations to be merged - # into the service. - # loadBalancerService: | - # labels: {} - # annotations: {} - # Explicitly specify the namespace to be managed (only for development). # namespace: vmop-dev + + "/Reconciler": + # Amount by which the current cpu count is devided when generating + # the resource properties. + cpuOvercommit: 2 + + # Amount by which the current ram size is devided when generating + # the resource properties. + ramOvercommit: 1.5 + + # Values used when creating the PVC for the runner's data + runnerDataPvc: + storageClassName: null + + # If defined, causes a load balancer service to be created. + # May be a boolean or a string with nested yaml that + # defines additional labels or annotations to be merged + # into the service. + # loadBalancerService: | + # labels: {} + # annotations: {} + diff --git a/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerSts.ftl.yaml b/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerSts.ftl.yaml index 8bfdfb5..f870ae7 100644 --- a/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerSts.ftl.yaml +++ b/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerSts.ftl.yaml @@ -96,15 +96,15 @@ spec: requests: <#if cr.spec.vm.currentCpus?? > <#assign factor = 2.0 /> - <#if config.cpuOvercommit??> - <#assign factor = config.cpuOvercommit * 1.0 /> + <#if reconciler.cpuOvercommit??> + <#assign factor = reconciler.cpuOvercommit * 1.0 /> cpu: ${ (cr.spec.vm.currentCpus.asInt / factor)?floor?c } <#if cr.spec.vm.currentRam?? > <#assign factor = 1.25 /> - <#if config.ramOvercommit??> - <#assign factor = config.ramOvercommit * 1.0 /> + <#if reconciler.ramOvercommit??> + <#assign factor = reconciler.ramOvercommit * 1.0 /> memory: ${ (parseMemory(cr.spec.vm.currentRam.asString) / factor)?floor?c } @@ -151,8 +151,8 @@ spec: spec: accessModes: - ReadWriteOnce - <#if config.runnerData?? && config.runnerData.storageClassName??> - storageClassName: ${ config.runnerData.storageClassName } + <#if reconciler.runnerDataPvc?? && reconciler.runnerDataPvc.storageClassName??> + storageClassName: ${ reconciler.runnerDataPvc.storageClassName } resources: requests: diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/CmReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java similarity index 98% rename from org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/CmReconciler.java rename to org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java index 5475ed3..340a3cd 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/CmReconciler.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/ConfigMapReconciler.java @@ -40,7 +40,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; * Delegee for reconciling the config map */ @SuppressWarnings("PMD.DataflowAnomalyAnalysis") -/* default */ class CmReconciler { +/* default */ class ConfigMapReconciler { protected final Logger logger = Logger.getLogger(getClass().getName()); private final Configuration fmConfig; @@ -50,7 +50,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; * * @param fmConfig the fm config */ - public CmReconciler(Configuration fmConfig) { + public ConfigMapReconciler(Configuration fmConfig) { this.fmConfig = fmConfig; } 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 f0dd304..8cf8f63 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 @@ -77,7 +77,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; // Check if to be generated @SuppressWarnings("unchecked") var lbs = Optional.of(model) - .map(m -> (Map) m.get("config")) + .map(m -> (Map) m.get("reconciler")) .map(c -> c.get(LOAD_BALANCER_SERVICE)).orElse(Boolean.FALSE); if (lbs instanceof Boolean isOn && !isOn) { return; 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 def68f6..eb91e2f 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 @@ -45,7 +45,6 @@ import org.jdrupes.vmoperator.util.ExtendedObjectWrapper; import org.jdrupes.vmoperator.util.ParseUtils; import org.jgrapes.core.Channel; import org.jgrapes.core.Component; -import org.jgrapes.core.Components; import org.jgrapes.core.annotation.Handler; import org.jgrapes.util.events.ConfigurationUpdate; @@ -58,8 +57,8 @@ public class Reconciler extends Component { @SuppressWarnings("PMD.SingularField") private final Configuration fmConfig; - private final CmReconciler cmReconciler; - private final StsReconciler stsReconciler; + private final ConfigMapReconciler cmReconciler; + private final StatefuleSetReconciler stsReconciler; private final LoadBalancerReconciler lbReconciler; @SuppressWarnings("PMD.UseConcurrentHashMap") private final Map config = new HashMap<>(); @@ -82,8 +81,8 @@ public class Reconciler extends Component { fmConfig.setLogTemplateExceptions(false); fmConfig.setClassForTemplateLoading(Reconciler.class, ""); - cmReconciler = new CmReconciler(fmConfig); - stsReconciler = new StsReconciler(fmConfig); + cmReconciler = new ConfigMapReconciler(fmConfig); + stsReconciler = new StatefuleSetReconciler(fmConfig); lbReconciler = new LoadBalancerReconciler(fmConfig); } @@ -94,10 +93,9 @@ public class Reconciler extends Component { */ @Handler public void onConfigurationUpdate(ConfigurationUpdate event) { - event.structured(Components.manager(parent()).componentPath()) - .ifPresent(c -> { - config.putAll(c); - }); + event.structured(componentPath()).ifPresent(c -> { + config.putAll(c); + }); } /** @@ -153,7 +151,7 @@ public class Reconciler extends Component { Configuration.VERSION_2_3_32) .build().getStaticModels() .get(Constants.class.getName())); - model.put("config", config); + model.put("reconciler", config); // Methods model.put("parseMemory", new TemplateMethodModelEx() { diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StsReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java similarity index 97% rename from org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StsReconciler.java rename to org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java index 42fcb23..6f6d09c 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StsReconciler.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/StatefuleSetReconciler.java @@ -37,7 +37,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; * Delegee for reconciling the stateful set (effectively the pod). */ @SuppressWarnings("PMD.DataflowAnomalyAnalysis") -/* default */ class StsReconciler { +/* default */ class StatefuleSetReconciler { protected final Logger logger = Logger.getLogger(getClass().getName()); private final Configuration fmConfig; @@ -47,7 +47,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; * * @param fmConfig the fm config */ - public StsReconciler(Configuration fmConfig) { + public StatefuleSetReconciler(Configuration fmConfig) { this.fmConfig = fmConfig; }