Make storageClass for runner data configurable.

This commit is contained in:
Michael Lipp 2023-08-13 15:17:58 +02:00
parent 9745e854f7
commit d2eea50093
4 changed files with 36 additions and 1 deletions

View file

@ -3,3 +3,5 @@
"/Manager": "/Manager":
"/Controller": "/Controller":
namespace: vmop-dev namespace: vmop-dev
runnerData:
storageClassName: null

View file

@ -0,0 +1,10 @@
# The values in comments are the defaults.
"/Manager":
"/Controller":
# Values used when creating the PVC for the runner's data
runnerData:
storageClassName: null
# Only for development:
# namespace: vmop-dev

View file

@ -30,7 +30,7 @@ spec:
- name: ${ cr.metadata.name.asString } - name: ${ cr.metadata.name.asString }
<#assign image = cr.spec.image> <#assign image = cr.spec.image>
<#if image.source??> <#if image.source??>
image: ${ source.asString } image: ${ image.source.asString }
<#else> <#else>
image: ${ image.repository.asString }/${ image.path.asString }<#if image.version??>:${ image.version.asString }</#if> image: ${ image.repository.asString }/${ image.path.asString }<#if image.version??>:${ image.version.asString }</#if>
</#if> </#if>
@ -101,6 +101,9 @@ spec:
spec: spec:
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
<#if config.runnerData?? && config.runnerData.storageClassName??>
storageClassName: ${ config.runnerData.storageClassName }
</#if>
resources: resources:
requests: requests:
storage: 1Mi storage: 1Mi

View file

@ -40,7 +40,9 @@ import org.jdrupes.vmoperator.manager.VmDefChanged.Type;
import org.jdrupes.vmoperator.util.ExtendedObjectWrapper; import org.jdrupes.vmoperator.util.ExtendedObjectWrapper;
import org.jgrapes.core.Channel; import org.jgrapes.core.Channel;
import org.jgrapes.core.Component; import org.jgrapes.core.Component;
import org.jgrapes.core.Components;
import org.jgrapes.core.annotation.Handler; import org.jgrapes.core.annotation.Handler;
import org.jgrapes.util.events.ConfigurationUpdate;
/** /**
* Adapts Kubenetes resources to changes in VM definitions (CRs). * Adapts Kubenetes resources to changes in VM definitions (CRs).
@ -54,6 +56,8 @@ public class Reconciler extends Component {
private final CmReconciler cmReconciler; private final CmReconciler cmReconciler;
private final StsReconciler stsReconciler; private final StsReconciler stsReconciler;
private final ServiceReconciler serviceReconciler; private final ServiceReconciler serviceReconciler;
@SuppressWarnings("PMD.UseConcurrentHashMap")
private final Map<String, Object> config = new HashMap<>();
/** /**
* Instantiates a new reconciler. * Instantiates a new reconciler.
@ -78,6 +82,21 @@ public class Reconciler extends Component {
serviceReconciler = new ServiceReconciler(fmConfig); serviceReconciler = new ServiceReconciler(fmConfig);
} }
/**
* Configure the component.
*
* @param event the event
*/
@Handler
public void onConfigurationUpdate(ConfigurationUpdate event) {
event.structured(Components.manager(parent()).componentPath())
.ifPresent(c -> {
if (c.containsKey("runnerData")) {
config.put("runnerData", c.get("runnerData"));
}
});
}
/** /**
* Handles the change event. * Handles the change event.
* *
@ -117,6 +136,7 @@ public class Reconciler extends Component {
Configuration.VERSION_2_3_32) Configuration.VERSION_2_3_32)
.build().getStaticModels() .build().getStaticModels()
.get(Constants.class.getName())); .get(Constants.class.getName()));
model.put("config", config);
// Reconcile // Reconcile
if (event.type() != Type.DELETED) { if (event.type() != Type.DELETED) {