Merge remote-tracking branch 'origin/release/v3.2.x' into release/v3.x
This commit is contained in:
commit
bdcf6a60b3
29 changed files with 7568 additions and 121 deletions
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
# Run Qemu in Kubernetes Pods
|
# Run Qemu in Kubernetes Pods
|
||||||
|
|
||||||
The goal of this project is to provide the means for running Qemu
|
The goal of this project is to provide easy to use and flexible components
|
||||||
based VMs in Kubernetes pods.
|
for running Qemu based VMs in Kubernetes pods.
|
||||||
|
|
||||||
See the [project's home page](https://jdrupes.org/vm-operator/)
|
See the [project's home page](https://jdrupes.org/vm-operator/)
|
||||||
for details.
|
for details.
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ buildscript {
|
||||||
plugins {
|
plugins {
|
||||||
id 'org.ajoberstar.grgit' version '5.2.0' apply false
|
id 'org.ajoberstar.grgit' version '5.2.0' apply false
|
||||||
id 'org.ajoberstar.git-publish' version '4.2.0' apply false
|
id 'org.ajoberstar.git-publish' version '4.2.0' apply false
|
||||||
id 'pl.allegro.tech.build.axion-release' version '1.15.0' apply false
|
id 'pl.allegro.tech.build.axion-release' version '1.17.2' apply false
|
||||||
|
id 'org.jdrupes.vmoperator.versioning-conventions'
|
||||||
id 'org.jdrupes.vmoperator.java-doc-conventions'
|
id 'org.jdrupes.vmoperator.java-doc-conventions'
|
||||||
id 'eclipse'
|
id 'eclipse'
|
||||||
id "com.github.node-gradle.node" version "7.0.1"
|
id "com.github.node-gradle.node" version "7.0.1"
|
||||||
|
|
|
||||||
|
|
@ -1410,6 +1410,9 @@ spec:
|
||||||
display:
|
display:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
outputs:
|
||||||
|
type: integer
|
||||||
|
default: 1
|
||||||
spice:
|
spice:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ public class K8sObserver<O extends KubernetesObject,
|
||||||
api = new GenericKubernetesApi<>(objectClass, objectListClass,
|
api = new GenericKubernetesApi<>(objectClass, objectListClass,
|
||||||
context.getGroup(), context.getPreferredVersion(),
|
context.getGroup(), context.getPreferredVersion(),
|
||||||
context.getResourcePlural(), client);
|
context.getResourcePlural(), client);
|
||||||
thread = new Thread(() -> {
|
thread = Thread.ofVirtual().unstarted(() -> {
|
||||||
try {
|
try {
|
||||||
logger.config(() -> "Watching " + context.getResourcePlural()
|
logger.config(() -> "Watching " + context.getResourcePlural()
|
||||||
+ " (" + context.getPreferredVersion() + ")"
|
+ " (" + context.getPreferredVersion() + ")"
|
||||||
|
|
@ -100,7 +100,7 @@ public class K8sObserver<O extends KubernetesObject,
|
||||||
while (changed.hasNext()) {
|
while (changed.hasNext()) {
|
||||||
handler.accept(client, changed.next());
|
handler.accept(client, changed.next());
|
||||||
}
|
}
|
||||||
} catch (ApiException e) {
|
} catch (ApiException | RuntimeException e) {
|
||||||
logger.log(Level.FINE, e, () -> "Problem watching"
|
logger.log(Level.FINE, e, () -> "Problem watching"
|
||||||
+ " (will retry): " + e.getMessage());
|
+ " (will retry): " + e.getMessage());
|
||||||
delayRestart(startedAt);
|
delayRestart(startedAt);
|
||||||
|
|
@ -117,7 +117,6 @@ public class K8sObserver<O extends KubernetesObject,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
thread.setDaemon(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("PMD.AvoidLiteralsInIfCondition")
|
@SuppressWarnings("PMD.AvoidLiteralsInIfCondition")
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api 'org.jgrapes:org.jgrapes.core:[1.19.0,2)'
|
api 'org.jgrapes:org.jgrapes.core:[1.21.0,2)'
|
||||||
api project(':org.jdrupes.vmoperator.common')
|
api project(':org.jdrupes.vmoperator.common')
|
||||||
api 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.16.1,3]'
|
api 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.16.1,3]'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,14 @@ dependencies {
|
||||||
|
|
||||||
implementation 'commons-cli:commons-cli:1.5.0'
|
implementation 'commons-cli:commons-cli:1.5.0'
|
||||||
|
|
||||||
implementation 'org.jgrapes:org.jgrapes.core:[1.19.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.util:[1.36.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.io:[2.7.0,3)'
|
implementation 'org.jgrapes:org.jgrapes.io:[2.11.0,3)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.http:[3.1.0,4)'
|
implementation 'org.jgrapes:org.jgrapes.http:[3.5.0,4)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.util:[1.34.0,2)'
|
|
||||||
|
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.base:[1.7.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.base:[1.8.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.vuejs:[1.5.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.vuejs:[1.5.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.rbac:[1.3.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.rbac:[1.4.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconlet.oidclogin:[1.6.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconlet.oidclogin:[1.7.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconlet.markdowndisplay:[1.2.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconlet.markdowndisplay:[1.2.0,2)'
|
||||||
|
|
||||||
runtimeOnly 'org.jgrapes:org.jgrapes.webconlet.sysinfo:[1.4.0,2)'
|
runtimeOnly 'org.jgrapes:org.jgrapes.webconlet.sysinfo:[1.4.0,2)'
|
||||||
|
|
@ -47,6 +46,7 @@ application {
|
||||||
|
|
||||||
project.ext.gitBranch = grgit.branch.current.name.replace('/', '-')
|
project.ext.gitBranch = grgit.branch.current.name.replace('/', '-')
|
||||||
def registry = "${project.rootProject.properties['docker.registry']}"
|
def registry = "${project.rootProject.properties['docker.registry']}"
|
||||||
|
def rootVersion = rootProject.version
|
||||||
|
|
||||||
task buildImage(type: Exec) {
|
task buildImage(type: Exec) {
|
||||||
dependsOn installDist
|
dependsOn installDist
|
||||||
|
|
@ -70,7 +70,7 @@ task pushImage(type: Exec) {
|
||||||
task tagWithVersion(type: Exec) {
|
task tagWithVersion(type: Exec) {
|
||||||
dependsOn pushImage
|
dependsOn pushImage
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
|
|
||||||
commandLine 'podman', 'push', \
|
commandLine 'podman', 'push', \
|
||||||
"${project.name}:${project.gitBranch}",\
|
"${project.name}:${project.gitBranch}",\
|
||||||
|
|
@ -80,9 +80,9 @@ task tagWithVersion(type: Exec) {
|
||||||
task tagAsLatest(type: Exec) {
|
task tagAsLatest(type: Exec) {
|
||||||
dependsOn tagWithVersion
|
dependsOn tagWithVersion
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
&& !project.version.contains("alpha") \
|
&& !rootVersion.contains("alpha") \
|
||||||
&& !project.version.contains("beta") \
|
&& !rootVersion.contains("beta") \
|
||||||
|| project.rootProject.properties['docker.testRegistry'] \
|
|| project.rootProject.properties['docker.testRegistry'] \
|
||||||
&& project.rootProject.properties['docker.registry'] \
|
&& project.rootProject.properties['docker.registry'] \
|
||||||
== project.rootProject.properties['docker.testRegistry']
|
== project.rootProject.properties['docker.testRegistry']
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,9 @@ data:
|
||||||
</#list>
|
</#list>
|
||||||
|
|
||||||
display:
|
display:
|
||||||
|
<#if cr.spec.vm.display.outputs?? >
|
||||||
|
outputs: ${ cr.spec.vm.display.outputs.asInt?c }
|
||||||
|
</#if>
|
||||||
<#if cr.spec.vm.display.spice??>
|
<#if cr.spec.vm.display.spice??>
|
||||||
spice:
|
spice:
|
||||||
port: ${ cr.spec.vm.display.spice.port.asInt?c }
|
port: ${ cr.spec.vm.display.spice.port.asInt?c }
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,10 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'org.jgrapes:org.jgrapes.core:[1.19.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.core:[1.21.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.io:[2.7.0,3)'
|
implementation 'org.jgrapes:org.jgrapes.util:[1.36.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.http:[3.1.0,4)'
|
implementation 'org.jgrapes:org.jgrapes.io:[2.11.0,3)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.util:[1.31.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.http:[3.5.0,4)'
|
||||||
implementation project(':org.jdrupes.vmoperator.common')
|
implementation project(':org.jdrupes.vmoperator.common')
|
||||||
|
|
||||||
implementation 'commons-cli:commons-cli:1.5.0'
|
implementation 'commons-cli:commons-cli:1.5.0'
|
||||||
|
|
@ -33,6 +33,7 @@ application {
|
||||||
|
|
||||||
project.ext.gitBranch = grgit.branch.current.name.replace('/', '-')
|
project.ext.gitBranch = grgit.branch.current.name.replace('/', '-')
|
||||||
def registry = "${project.rootProject.properties['docker.registry']}"
|
def registry = "${project.rootProject.properties['docker.registry']}"
|
||||||
|
def rootVersion = rootProject.version
|
||||||
|
|
||||||
task buildImageArch(type: Exec) {
|
task buildImageArch(type: Exec) {
|
||||||
dependsOn installDist
|
dependsOn installDist
|
||||||
|
|
@ -54,7 +55,7 @@ task pushImageArch(type: Exec) {
|
||||||
task tagWithVersionArch(type: Exec) {
|
task tagWithVersionArch(type: Exec) {
|
||||||
dependsOn pushImageArch
|
dependsOn pushImageArch
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
|
|
||||||
commandLine 'podman', 'push', \
|
commandLine 'podman', 'push', \
|
||||||
"${project.name}-arch:${project.gitBranch}",\
|
"${project.name}-arch:${project.gitBranch}",\
|
||||||
|
|
@ -64,9 +65,9 @@ task tagWithVersionArch(type: Exec) {
|
||||||
task tagAsLatestArch(type: Exec) {
|
task tagAsLatestArch(type: Exec) {
|
||||||
dependsOn tagWithVersionArch
|
dependsOn tagWithVersionArch
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
&& !project.version.contains("alpha") \
|
&& !rootVersion.contains("alpha") \
|
||||||
&& !project.version.contains("beta") \
|
&& !rootVersion.contains("beta") \
|
||||||
|| project.rootProject.properties['docker.testRegistry'] \
|
|| project.rootProject.properties['docker.testRegistry'] \
|
||||||
&& project.rootProject.properties['docker.registry'] \
|
&& project.rootProject.properties['docker.registry'] \
|
||||||
== project.rootProject.properties['docker.testRegistry']
|
== project.rootProject.properties['docker.testRegistry']
|
||||||
|
|
@ -96,7 +97,7 @@ task pushImageAlpine(type: Exec) {
|
||||||
task tagWithVersionAlpine(type: Exec) {
|
task tagWithVersionAlpine(type: Exec) {
|
||||||
dependsOn pushImageAlpine
|
dependsOn pushImageAlpine
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
|
|
||||||
commandLine 'podman', 'push', \
|
commandLine 'podman', 'push', \
|
||||||
"${project.name}-alpine:${project.gitBranch}",\
|
"${project.name}-alpine:${project.gitBranch}",\
|
||||||
|
|
@ -106,9 +107,9 @@ task tagWithVersionAlpine(type: Exec) {
|
||||||
task tagAsLatestAlpine(type: Exec) {
|
task tagAsLatestAlpine(type: Exec) {
|
||||||
dependsOn tagWithVersionAlpine
|
dependsOn tagWithVersionAlpine
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
&& !project.version.contains("alpha") \
|
&& !rootVersion.contains("alpha") \
|
||||||
&& !project.version.contains("beta") \
|
&& !rootVersion.contains("beta") \
|
||||||
|| project.rootProject.properties['docker.testRegistry'] \
|
|| project.rootProject.properties['docker.testRegistry'] \
|
||||||
&& project.rootProject.properties['docker.registry'] \
|
&& project.rootProject.properties['docker.registry'] \
|
||||||
== project.rootProject.properties['docker.testRegistry']
|
== project.rootProject.properties['docker.testRegistry']
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
+30
|
+1800
|
||||||
|
|
@ -245,6 +245,9 @@ public class Configuration implements Dto {
|
||||||
*/
|
*/
|
||||||
public static class Display implements Dto {
|
public static class Display implements Dto {
|
||||||
|
|
||||||
|
/** The number of outputs. */
|
||||||
|
public int outputs = 1;
|
||||||
|
|
||||||
/** The spice. */
|
/** The spice. */
|
||||||
public Spice spice;
|
public Spice spice;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,8 @@
|
||||||
- [ "-device", "virtio-rng-pci,rng=objrng0,id=rng0" ]
|
- [ "-device", "virtio-rng-pci,rng=objrng0,id=rng0" ]
|
||||||
# * Graphics and Audio Card
|
# * Graphics and Audio Card
|
||||||
# This is the only video "card" without a flickering cursor.
|
# This is the only video "card" without a flickering cursor.
|
||||||
- [ "-device", "virtio-vga,id=video0,max_outputs=1" ]
|
- [ "-device", "virtio-vga,id=video0,max_outputs=${ vm.display.outputs },\
|
||||||
|
max_hostmem=${ (vm.display.outputs * 256 * 1024 * 1024)?c }" ]
|
||||||
- [ "-device", "ich9-intel-hda,id=sound0" ]
|
- [ "-device", "ich9-intel-hda,id=sound0" ]
|
||||||
# Network
|
# Network
|
||||||
<#assign nwCounter = 0/>
|
<#assign nwCounter = 0/>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ plugins {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':org.jdrupes.vmoperator.manager.events')
|
implementation project(':org.jdrupes.vmoperator.manager.events')
|
||||||
|
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.base:[1.3.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.base:[1.8.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.vue:[1,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.vue:[1,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.jgwcvuecomponents:[1.2,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.jgwcvuecomponents:[1.2,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.chartjs:[1.2,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.chartjs:[1.2,2)'
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ plugins {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation project(':org.jdrupes.vmoperator.manager.events')
|
implementation project(':org.jdrupes.vmoperator.manager.events')
|
||||||
|
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.base:[1.7.0,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.base:[1.8.0,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.vue:[1,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.vue:[1,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.jgwcvuecomponents:[1.2,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.jgwcvuecomponents:[1.2,2)'
|
||||||
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.chartjs:[1.2,2)'
|
implementation 'org.jgrapes:org.jgrapes.webconsole.provider.chartjs:[1.2,2)'
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
animation: spin 2s linear infinite;
|
animation: spin 2s linear infinite;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,8 @@ A Kubernetes operator for running VMs as pods.
|
||||||
VM-Operator
|
VM-Operator
|
||||||
===========
|
===========
|
||||||
|
|
||||||
The VM-operator is built on the [JGrapes](https://mnlipp.github.io/jgrapes/)
|
The VM-operator enables you to easily run Qemu based VMs as pods
|
||||||
event driven framework.
|
in Kubernetes. It is built on the
|
||||||
|
[JGrapes](https://mnlipp.github.io/jgrapes/) event driven framework.
|
||||||
|
|
||||||
|
See the project's [home page](https://jdrupes.org/vm-operator/) for details.
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ dependencies {
|
||||||
|
|
||||||
project.ext.gitBranch = grgit.branch.current.name.replace('/', '-')
|
project.ext.gitBranch = grgit.branch.current.name.replace('/', '-')
|
||||||
def registry = "${project.rootProject.properties['docker.registry']}"
|
def registry = "${project.rootProject.properties['docker.registry']}"
|
||||||
|
def rootVersion = rootProject.version
|
||||||
|
|
||||||
task buildImage(type: Exec) {
|
task buildImage(type: Exec) {
|
||||||
inputs.files 'Containerfile'
|
inputs.files 'Containerfile'
|
||||||
|
|
@ -26,7 +27,7 @@ task pushImage(type: Exec) {
|
||||||
task tagWithVersion(type: Exec) {
|
task tagWithVersion(type: Exec) {
|
||||||
dependsOn pushImage
|
dependsOn pushImage
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
|
|
||||||
commandLine 'podman', 'push', \
|
commandLine 'podman', 'push', \
|
||||||
"${project.name}:${project.gitBranch}",\
|
"${project.name}:${project.gitBranch}",\
|
||||||
|
|
@ -36,9 +37,9 @@ task tagWithVersion(type: Exec) {
|
||||||
task tagAsLatest(type: Exec) {
|
task tagAsLatest(type: Exec) {
|
||||||
dependsOn tagWithVersion
|
dependsOn tagWithVersion
|
||||||
|
|
||||||
enabled = !project.version.contains("SNAPSHOT")
|
enabled = !rootVersion.contains("SNAPSHOT")
|
||||||
&& !project.version.contains("alpha") \
|
&& !rootVersion.contains("alpha") \
|
||||||
&& !project.version.contains("beta") \
|
&& !rootVersion.contains("beta") \
|
||||||
|| project.rootProject.properties['docker.testRegistry'] \
|
|| project.rootProject.properties['docker.testRegistry'] \
|
||||||
&& project.rootProject.properties['docker.registry'] \
|
&& project.rootProject.properties['docker.registry'] \
|
||||||
== project.rootProject.properties['docker.testRegistry']
|
== project.rootProject.properties['docker.testRegistry']
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@
|
||||||
<header>
|
<header>
|
||||||
<div>
|
<div>
|
||||||
<div style="float: left;">
|
<div style="float: left;">
|
||||||
<h1><a style="color: #222;" href="http://vm-operator.jdrupes.org">VM-Operator</a></h1>
|
<div class="index-title"><a style="color: #222;" href="https://jdrupes.org/vm-operator/">VM-Operator</a></div>
|
||||||
<h3>By <a href="https://github.com/mnlipp">Michael N. Lipp</a></h3>
|
<div class="index-subtitle">By <a href="https://github.com/mnlipp/">Michael N. Lipp</a></div>
|
||||||
<p><a rel="me" href="https://fosstodon.org/@mnl"><img alt="Mastodon Follow"
|
<p><a rel="me" href="https://fosstodon.org/@mnl"><img alt="Mastodon Follow"
|
||||||
src="https://img.shields.io/mastodon/follow/108843609567976408?domain=https%3A%2F%2Ffosstodon.org&style=social"></a></p>
|
src="https://img.shields.io/mastodon/follow/108843609567976408?domain=https%3A%2F%2Ffosstodon.org&style=social"></a></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -40,11 +40,11 @@
|
||||||
<ul style="margin-bottom: 0;" class="no-bullets">
|
<ul style="margin-bottom: 0;" class="no-bullets">
|
||||||
<li><p class="part-entry"><a href="controller.html">The Controller</a></p></li>
|
<li><p class="part-entry"><a href="controller.html">The Controller</a></p></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p class="part-list-title"><a href="webgui.html">The Web-GUI</a></p>
|
<p class="part-list-title"><a href="webgui.html">Web interface</a></p>
|
||||||
<ul style="margin-bottom: 0;" class="no-bullets">
|
<ul style="margin-bottom: 0;" class="no-bullets">
|
||||||
<li><p class="part-entry"><a href="admin-gui.html">For Admins</a></p></li>
|
<li><p class="part-entry"><a href="admin-gui.html">For Admins</a></p></li>
|
||||||
<li><p class="part-entry"><a href="user-gui.html">For Users</a></p></li>
|
<li><p class="part-entry"><a href="user-gui.html">For Users</a></p></li>
|
||||||
</ulstyle="margin-bottom: 0;">
|
</ul>
|
||||||
<p class="part-list-title"><a href="upgrading.html">Upgrading</a></p>
|
<p class="part-list-title"><a href="upgrading.html">Upgrading</a></p>
|
||||||
<p class="part-list-title"><a href="latest-release/javadoc/index.html">Javadoc</a></p>
|
<p class="part-list-title"><a href="latest-release/javadoc/index.html">Javadoc</a></p>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ body {
|
||||||
color:#595959;
|
color:#595959;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
h1, h2, h3, h4, h5, h6, .index-title, .index-subtitle {
|
||||||
color:#222;
|
color:#222;
|
||||||
margin:0 0 20px;
|
margin:0 0 20px;
|
||||||
}
|
}
|
||||||
|
|
@ -14,11 +14,11 @@ p, ul, ol, table, pre, dl {
|
||||||
margin:0 0 20px;
|
margin:0 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3 {
|
h1, h2, h3, .index-title, .index-subtitle {
|
||||||
line-height:1.1;
|
line-height:1.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1, .index-title {
|
||||||
font-size:28px;
|
font-size:28px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
@ -28,11 +28,15 @@ h2 {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3, h4, h5, h6 {
|
h3, h4, h5, h6, .index-subtitle {
|
||||||
color:#494949;
|
color:#494949;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.index-subtitle {
|
||||||
|
font-size: 1.17em;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color:#39c;
|
color:#39c;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
viewBox="0 0 331.50461 323.22329"
|
viewBox="0 0 331.50461 323.22329"
|
||||||
id="svg2"
|
id="svg2"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||||
sodipodi:docname="VM-Operator.svg"
|
sodipodi:docname="VM-Operator.svg"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
|
@ -25,9 +25,9 @@
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="0.7"
|
inkscape:zoom="1.4"
|
||||||
inkscape:cx="245"
|
inkscape:cx="190.35714"
|
||||||
inkscape:cy="145.71429"
|
inkscape:cy="178.57143"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
|
|
@ -171,12 +171,12 @@
|
||||||
cy="-109.05605"
|
cy="-109.05605"
|
||||||
r="9.2055216" />
|
r="9.2055216" />
|
||||||
<g
|
<g
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:180px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#238220;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:180px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#238220;fill-opacity:1;stroke:#ffffff;stroke-width:5.28893486;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="flowRoot4814"
|
id="flowRoot4814"
|
||||||
transform="matrix(0.25165808,0,0,0.24991064,-709.96916,-218.52595)">
|
transform="matrix(0.32800241,0,0,0.32572486,-723.34527,-233.01684)">
|
||||||
<path
|
<path
|
||||||
d="m 210.10352,57.161102 h 25.92773 V 138.7236 q 0,15.9961 -2.8125,24.60938 -3.7793,11.25 -13.71094,18.10547 -9.93164,6.76757 -26.1914,6.76757 -19.07227,0 -29.35547,-10.63476 -10.28321,-10.72266 -10.3711,-31.37696 l 24.52149,-2.8125 q 0.43945,11.07422 3.25195,15.64454 4.21875,6.94336 12.83203,6.94336 8.70117,0 12.30469,-4.92188 3.60352,-5.00977 3.60352,-20.6543 z"
|
d="m 210.10352,57.161102 h 25.92773 V 138.7236 q 0,15.9961 -2.8125,24.60938 -3.7793,11.25 -13.71094,18.10547 -9.93164,6.76757 -26.1914,6.76757 -19.07227,0 -29.35547,-10.63476 -10.28321,-10.72266 -10.3711,-31.37696 l 24.52149,-2.8125 q 0.43945,11.07422 3.25195,15.64454 4.21875,6.94336 12.83203,6.94336 8.70117,0 12.30469,-4.92188 3.60352,-5.00977 3.60352,-20.6543 z"
|
||||||
style="fill:#238220;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
|
style="fill:#238220;fill-opacity:1;stroke:#ffffff;stroke-width:5.28893486;stroke-dasharray:none;stroke-opacity:1"
|
||||||
id="path4823"
|
id="path4823"
|
||||||
inkscape:connector-curvature="0" />
|
inkscape:connector-curvature="0" />
|
||||||
</g>
|
</g>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator Web-GUI for Admins
|
title: "VM-Operator: Administrator View — Provides an overview of running VMs"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator Controller
|
title: "VM-Operator: Controller — Reconciles the VM CRs"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,20 @@
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
width="93.557968mm"
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
height="91.220795mm"
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
viewBox="0 0 331.50461 323.22329"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="10.64148mm"
|
|
||||||
height="12.555316mm"
|
|
||||||
viewBox="0 0 37.706033 44.487341"
|
|
||||||
id="svg2"
|
id="svg2"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
inkscape:version="0.91 r13725"
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
sodipodi:docname="ML-Logo1.svg"
|
sodipodi:docname="VM-Operator.svg"
|
||||||
inkscape:export-filename="/home/mnl/Dokumente/mnl/ML-Logo1.png"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
inkscape:export-xdpi="299.41104"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
inkscape:export-ydpi="299.41104">
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
<defs
|
<defs
|
||||||
id="defs4" />
|
id="defs4" />
|
||||||
<sodipodi:namedview
|
<sodipodi:namedview
|
||||||
|
|
@ -29,20 +26,23 @@
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="0.7"
|
inkscape:zoom="0.7"
|
||||||
inkscape:cx="132.46074"
|
inkscape:cx="245"
|
||||||
inkscape:cy="-297.07411"
|
inkscape:cy="145.71429"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
fit-margin-top="1"
|
|
||||||
fit-margin-left="1"
|
|
||||||
fit-margin-right="1"
|
|
||||||
fit-margin-bottom="1"
|
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="1016"
|
inkscape:window-height="1011"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="32"
|
||||||
inkscape:window-maximized="1" />
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1" />
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata7">
|
id="metadata7">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
|
|
@ -51,7 +51,6 @@
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|
@ -59,30 +58,127 @@
|
||||||
inkscape:label="Ebene 1"
|
inkscape:label="Ebene 1"
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
transform="translate(-175.34341,-117.71255)">
|
transform="translate(799.83239,410.74206)">
|
||||||
<text
|
<g
|
||||||
xml:space="preserve"
|
id="path300"
|
||||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
inkscape:transform-center-x="-0.49891951"
|
||||||
x="187.14285"
|
inkscape:transform-center-y="-10.814906"
|
||||||
y="150.93362"
|
transform="matrix(0.93749998,0,0,0.93749998,-364.15225,128.12438)">
|
||||||
id="text3370"
|
<path
|
||||||
sodipodi:linespacing="125%"><tspan
|
sodipodi:type="star"
|
||||||
sodipodi:role="line"
|
style="fill:#326de6;fill-opacity:1;stroke:#ffffff;stroke-linecap:square;stroke-miterlimit:0;paint-order:fill markers stroke"
|
||||||
id="tspan3372"
|
id="path1033"
|
||||||
x="187.14285"
|
inkscape:flatsided="false"
|
||||||
y="150.93362"
|
sodipodi:sides="7"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono'">M</tspan></text>
|
sodipodi:cx="-790.008"
|
||||||
<text
|
sodipodi:cy="-357.15076"
|
||||||
xml:space="preserve"
|
sodipodi:r1="221.23064"
|
||||||
style="font-style:normal;font-weight:normal;font-size:51.30387497px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
sodipodi:r2="199.10757"
|
||||||
x="173.50081"
|
sodipodi:arg1="1.1215879"
|
||||||
y="158.65659"
|
sodipodi:arg2="1.5605315"
|
||||||
id="text3370-6"
|
inkscape:rounded="0"
|
||||||
sodipodi:linespacing="125%"><tspan
|
inkscape:randomized="0"
|
||||||
sodipodi:role="line"
|
d="m -693.93801,-157.86816 -94.02622,-0.18551 -97.95052,0.26412 -58.47935,-73.62832 -61.2776,-76.41613 21.10362,-91.6275 21.53854,-95.55347 84.79518,-40.6293 88.13578,-42.7371 84.6342,40.96358 88.36497,42.26117 20.74194,91.71007 22.05354,95.43592 -58.76943,73.39699 z"
|
||||||
id="tspan3372-5"
|
transform="matrix(0.81788201,0,0,0.81788201,358.19384,-101.37507)"
|
||||||
x="173.50081"
|
inkscape:transform-center-x="1.2804791"
|
||||||
y="158.65659"
|
inkscape:transform-center-y="-8.9686433" />
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono'">L</tspan></text>
|
</g>
|
||||||
|
<g
|
||||||
|
aria-label="VM"
|
||||||
|
id="text300"
|
||||||
|
style="font-size:16.6665px;-inkscape-font-specification:'sans-serif, Normal';letter-spacing:0px;word-spacing:0px;fill:none;stroke:#ffffff;stroke-width:1.04165">
|
||||||
|
<g
|
||||||
|
id="path305">
|
||||||
|
<path
|
||||||
|
style="color:#000000;-inkscape-font-specification:'Nimbus Sans Narrow, Bold Semi-Condensed';fill:#ff6600;stroke:none;-inkscape-stroke:none"
|
||||||
|
d="m -698.0792,-217.35754 -25.39961,-109.59835 h -26.39961 l 39.59941,143.59784 h 23.39965 l 39.99939,-143.59784 h -25.59961 z"
|
||||||
|
id="path312" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;-inkscape-font-specification:'Nimbus Sans Narrow, Bold Semi-Condensed';fill:#ffffff;stroke:none;-inkscape-stroke:none"
|
||||||
|
d="m -750.5625,-327.47656 39.88672,144.63867 h 24.19141 l 40.29101,-144.63867 h -26.69922 l -25.18554,107.82226 -24.98633,-107.82226 z m 1.36719,1.04101 h 25.30273 l 25.30664,109.19532 1.01367,0.002 25.50586,-109.19727 h 24.50196 l -39.71094,142.55664 h -22.60742 z"
|
||||||
|
id="path325" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="path307">
|
||||||
|
<path
|
||||||
|
style="color:#000000;-inkscape-font-specification:'Nimbus Sans Narrow, Bold Semi-Condensed';fill:#ff6600;stroke:none;-inkscape-stroke:none"
|
||||||
|
d="m -518.28172,-326.95589 h -35.39947 l -21.19968,113.99829 -21.59968,-113.99829 h -35.79946 v 143.59784 h 22.79966 v -121.79817 l 21.79967,121.79817 h 24.19963 l 22.39967,-121.79817 v 121.79817 h 22.79966 z"
|
||||||
|
id="path318" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;-inkscape-font-specification:'Nimbus Sans Narrow, Bold Semi-Condensed';fill:#ffffff;stroke:none;-inkscape-stroke:none"
|
||||||
|
d="m -632.80078,-327.47656 v 144.63867 h 23.8418 v -116.45313 l 20.84179,116.45313 h 25.07032 l 21.44531,-116.60742 v 116.60742 h 23.83984 v -144.63867 h -0.51953 -35.83203 l -20.77149,111.69726 -21.16406,-111.69726 z m 1.04101,1.04101 h 34.84766 l 21.51953,113.57422 1.02344,-0.002 21.12109,-113.57227 h 34.44532 v 142.55664 h -21.75782 v -121.27734 l -1.0332,-0.0937 -22.32031,121.37109 h -23.33008 l -21.72266,-121.36914 -1.03515,0.0918 v 121.27734 h -21.75782 z"
|
||||||
|
id="path320" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136"
|
||||||
|
cx="-691.58337"
|
||||||
|
cy="-161.52753"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-8"
|
||||||
|
cx="-671.12665"
|
||||||
|
cy="-161.52753"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-1"
|
||||||
|
cx="-650.66992"
|
||||||
|
cy="-161.52753"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-2"
|
||||||
|
cx="-630.2132"
|
||||||
|
cy="-161.52753"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-8-8"
|
||||||
|
cx="-681.66187"
|
||||||
|
cy="-144.03705"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-1-9"
|
||||||
|
cx="-661.20514"
|
||||||
|
cy="-144.03705"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-2-3"
|
||||||
|
cx="-640.74841"
|
||||||
|
cy="-144.03705"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-8-6"
|
||||||
|
cx="-671.53577"
|
||||||
|
cy="-126.23969"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-1-8"
|
||||||
|
cx="-651.07904"
|
||||||
|
cy="-126.23969"
|
||||||
|
r="9.2055216" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6606b5;fill-opacity:1;stroke:#ffffff;stroke-width:1.07634;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4136-2-0"
|
||||||
|
cx="-661.61426"
|
||||||
|
cy="-109.05605"
|
||||||
|
r="9.2055216" />
|
||||||
|
<g
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:180px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#238220;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
id="flowRoot4814"
|
||||||
|
transform="matrix(0.25165808,0,0,0.24991064,-709.96916,-218.52595)">
|
||||||
|
<path
|
||||||
|
d="m 210.10352,57.161102 h 25.92773 V 138.7236 q 0,15.9961 -2.8125,24.60938 -3.7793,11.25 -13.71094,18.10547 -9.93164,6.76757 -26.1914,6.76757 -19.07227,0 -29.35547,-10.63476 -10.28321,-10.72266 -10.3711,-31.37696 l 24.52149,-2.8125 q 0.43945,11.07422 3.25195,15.64454 4.21875,6.94336 12.83203,6.94336 8.70117,0 12.30469,-4.92188 3.60352,-5.00977 3.60352,-20.6543 z"
|
||||||
|
style="fill:#238220;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
|
||||||
|
id="path4823"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 8.5 KiB |
7329
webpages/vm-operator/index-pic.svg
Normal file
7329
webpages/vm-operator/index-pic.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 588 KiB |
|
|
@ -1,13 +1,15 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator by mnlipp
|
title: Run Qemu based VMs on Kubernetes
|
||||||
description: A Kubernetes operator for running virtual machines (notably Qemu VMs) in pods on Kubernetes
|
description: A Kubernetes operator for running virtual machines (notably Qemu VMs) in pods on Kubernetes with a web interface for admins and users.
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
# Welcome to VM-Operator
|
# Welcome to VM-Operator
|
||||||
|
|
||||||
The goal of this project is to provide the means for running Qemu
|

|
||||||
based VMs in Kubernetes pods.
|
|
||||||
|
The goal of this project is to provide easy to use and flexible components
|
||||||
|
for running Qemu based VMs in Kubernetes pods.
|
||||||
|
|
||||||
The image used for the VM pods combines Qemu and a control program
|
The image used for the VM pods combines Qemu and a control program
|
||||||
for starting and managing the Qemu process. This application is called
|
for starting and managing the Qemu process. This application is called
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator Manager
|
title: "VM-Operator: The Manager — Provides the controller and a web user interface"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -7,7 +7,7 @@ layout: vm-operator
|
||||||
|
|
||||||
The Manager is the program that provides the controller from the
|
The Manager is the program that provides the controller from the
|
||||||
[operator pattern](https://github.com/cncf/tag-app-delivery/blob/eece8f7307f2970f46f100f51932db106db46968/operator-wg/whitepaper/Operator-WhitePaper_v1-0.md#operator-components-in-kubernetes)
|
[operator pattern](https://github.com/cncf/tag-app-delivery/blob/eece8f7307f2970f46f100f51932db106db46968/operator-wg/whitepaper/Operator-WhitePaper_v1-0.md#operator-components-in-kubernetes)
|
||||||
together with a Web-GUI. It should be run in a container in the cluster.
|
together with a web user interface. It should be run in a container in the cluster.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator Runner
|
title: "VM-Operator: The Runner — Starts and monitors a VM"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Upgrading
|
title: "VM-Operator: Upgrading — Issues to watch out for"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator Web-GUI for Users
|
title: "VM-Operator: User View — Allows users to manage their own VMs"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -99,7 +99,7 @@ spec:
|
||||||
spice:
|
spice:
|
||||||
port: 5930
|
port: 5930
|
||||||
server: 192.168.19.32
|
server: 192.168.19.32
|
||||||
proxyUrl: http://lgpe-spice.some.host:1234
|
proxyUrl: http://vms-spice.some.host:1234
|
||||||
generateSecret: true
|
generateSecret: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
---
|
---
|
||||||
title: VM-Operator Web-GUI
|
title: "VM-Operator: Web user interface — Provides easy access to VM management"
|
||||||
layout: vm-operator
|
layout: vm-operator
|
||||||
---
|
---
|
||||||
|
|
||||||
# The Web-GUI
|
# Web user interface
|
||||||
|
|
||||||
The manager component provides a GUI via a web server. The web GUI is
|
The manager component provides a GUI via a web server. This web user interface is
|
||||||
implemented using components from the
|
implemented using components from the
|
||||||
[JGrapes WebConsole](https://jgrapes.org/WebConsole.html)
|
[JGrapes WebConsole](https://jgrapes.org/WebConsole.html)
|
||||||
project. Configuration of the GUI therefore follows the conventions
|
project. Configuration of the GUI therefore follows the conventions
|
||||||
|
|
@ -31,7 +31,7 @@ from the
|
||||||
|
|
||||||
## User Access
|
## User Access
|
||||||
|
|
||||||
Access to the web GUI is controlled by the login conlet. The framework
|
Access to the web user interface is controlled by the login conlet. The framework
|
||||||
does not include sophisticated components for user management. Rather,
|
does not include sophisticated components for user management. Rather,
|
||||||
it assumes that an OIDC provider is responsible for user authentication
|
it assumes that an OIDC provider is responsible for user authentication
|
||||||
and role management.
|
and role management.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue