From e8265db633a084645b7a1ada63bb6d4a73ae99e3 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 11 Jul 2020 17:54:44 +0000 Subject: [PATCH 1/4] Begin next development iteration --- com.io7m.waxmill.boot/pom.xml | 2 +- com.io7m.waxmill.client.api/pom.xml | 2 +- com.io7m.waxmill.client.vanilla/pom.xml | 2 +- com.io7m.waxmill.cmdline/pom.xml | 2 +- com.io7m.waxmill.database.api/pom.xml | 2 +- com.io7m.waxmill.database.vanilla/pom.xml | 2 +- com.io7m.waxmill.documentation/pom.xml | 2 +- com.io7m.waxmill.exceptions/pom.xml | 2 +- com.io7m.waxmill.locks/pom.xml | 2 +- com.io7m.waxmill.machines/pom.xml | 2 +- com.io7m.waxmill.parser.api/pom.xml | 2 +- com.io7m.waxmill.process.api/pom.xml | 2 +- com.io7m.waxmill.process.posix/pom.xml | 2 +- com.io7m.waxmill.realize/pom.xml | 2 +- com.io7m.waxmill.serializer.api/pom.xml | 2 +- com.io7m.waxmill.strings.api/pom.xml | 2 +- com.io7m.waxmill.tests/pom.xml | 2 +- com.io7m.waxmill.xml/pom.xml | 2 +- pom.xml | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/com.io7m.waxmill.boot/pom.xml b/com.io7m.waxmill.boot/pom.xml index d3fd246..06fc75b 100644 --- a/com.io7m.waxmill.boot/pom.xml +++ b/com.io7m.waxmill.boot/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.boot diff --git a/com.io7m.waxmill.client.api/pom.xml b/com.io7m.waxmill.client.api/pom.xml index 4070440..61ac3ad 100644 --- a/com.io7m.waxmill.client.api/pom.xml +++ b/com.io7m.waxmill.client.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.client.api diff --git a/com.io7m.waxmill.client.vanilla/pom.xml b/com.io7m.waxmill.client.vanilla/pom.xml index cbcc996..9a07f01 100644 --- a/com.io7m.waxmill.client.vanilla/pom.xml +++ b/com.io7m.waxmill.client.vanilla/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.client.vanilla diff --git a/com.io7m.waxmill.cmdline/pom.xml b/com.io7m.waxmill.cmdline/pom.xml index c42d3c7..e107ed6 100644 --- a/com.io7m.waxmill.cmdline/pom.xml +++ b/com.io7m.waxmill.cmdline/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.cmdline diff --git a/com.io7m.waxmill.database.api/pom.xml b/com.io7m.waxmill.database.api/pom.xml index 8cc4f19..351181c 100644 --- a/com.io7m.waxmill.database.api/pom.xml +++ b/com.io7m.waxmill.database.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.database.api diff --git a/com.io7m.waxmill.database.vanilla/pom.xml b/com.io7m.waxmill.database.vanilla/pom.xml index 70d440f..e0cb554 100644 --- a/com.io7m.waxmill.database.vanilla/pom.xml +++ b/com.io7m.waxmill.database.vanilla/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.database.vanilla diff --git a/com.io7m.waxmill.documentation/pom.xml b/com.io7m.waxmill.documentation/pom.xml index 7625aea..0929b4e 100644 --- a/com.io7m.waxmill.documentation/pom.xml +++ b/com.io7m.waxmill.documentation/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.documentation diff --git a/com.io7m.waxmill.exceptions/pom.xml b/com.io7m.waxmill.exceptions/pom.xml index ec91e24..5a48c29 100644 --- a/com.io7m.waxmill.exceptions/pom.xml +++ b/com.io7m.waxmill.exceptions/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.exceptions diff --git a/com.io7m.waxmill.locks/pom.xml b/com.io7m.waxmill.locks/pom.xml index 914d017..d285cc9 100644 --- a/com.io7m.waxmill.locks/pom.xml +++ b/com.io7m.waxmill.locks/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.locks diff --git a/com.io7m.waxmill.machines/pom.xml b/com.io7m.waxmill.machines/pom.xml index e0767ee..99359cf 100644 --- a/com.io7m.waxmill.machines/pom.xml +++ b/com.io7m.waxmill.machines/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.machines diff --git a/com.io7m.waxmill.parser.api/pom.xml b/com.io7m.waxmill.parser.api/pom.xml index 9bcc2a2..758afd5 100644 --- a/com.io7m.waxmill.parser.api/pom.xml +++ b/com.io7m.waxmill.parser.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.parser.api diff --git a/com.io7m.waxmill.process.api/pom.xml b/com.io7m.waxmill.process.api/pom.xml index a49e791..55b24d0 100644 --- a/com.io7m.waxmill.process.api/pom.xml +++ b/com.io7m.waxmill.process.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.process.api diff --git a/com.io7m.waxmill.process.posix/pom.xml b/com.io7m.waxmill.process.posix/pom.xml index e7ded57..1d17383 100644 --- a/com.io7m.waxmill.process.posix/pom.xml +++ b/com.io7m.waxmill.process.posix/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.process.posix diff --git a/com.io7m.waxmill.realize/pom.xml b/com.io7m.waxmill.realize/pom.xml index ab48161..a870256 100644 --- a/com.io7m.waxmill.realize/pom.xml +++ b/com.io7m.waxmill.realize/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.realize diff --git a/com.io7m.waxmill.serializer.api/pom.xml b/com.io7m.waxmill.serializer.api/pom.xml index 8d10ed4..a675089 100644 --- a/com.io7m.waxmill.serializer.api/pom.xml +++ b/com.io7m.waxmill.serializer.api/pom.xml @@ -8,7 +8,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.serializer.api diff --git a/com.io7m.waxmill.strings.api/pom.xml b/com.io7m.waxmill.strings.api/pom.xml index 8a2f2a6..d6520f6 100644 --- a/com.io7m.waxmill.strings.api/pom.xml +++ b/com.io7m.waxmill.strings.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.strings.api diff --git a/com.io7m.waxmill.tests/pom.xml b/com.io7m.waxmill.tests/pom.xml index 4fd63da..ca0e798 100644 --- a/com.io7m.waxmill.tests/pom.xml +++ b/com.io7m.waxmill.tests/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.tests diff --git a/com.io7m.waxmill.xml/pom.xml b/com.io7m.waxmill.xml/pom.xml index 61873f5..23aad8f 100644 --- a/com.io7m.waxmill.xml/pom.xml +++ b/com.io7m.waxmill.xml/pom.xml @@ -8,7 +8,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT com.io7m.waxmill.xml diff --git a/pom.xml b/pom.xml index a41767d..1ce3606 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.1 + 0.0.2-SNAPSHOT pom FreeBSD BHyve Manager From 4d9fcf04f99c7ea71aff4c0b7e8756c33002cf48 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 11 Jul 2020 17:58:51 +0000 Subject: [PATCH 2/4] Marketing increases --- src/site/resources/features.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/site/resources/features.xml b/src/site/resources/features.xml index 6e09c09..70cf8ff 100644 --- a/src/site/resources/features.xml +++ b/src/site/resources/features.xml @@ -2,6 +2,11 @@
    +
  • Create, configure, run, and destroy virtual machines.
  • +
  • Written in pure Java 11 for safety and portability.
  • +
  • Designed to run virtual machines under process supervision.
  • +
  • Rich command-line interface with extensive correctness checking and detailed usage and error messages.
  • +
  • Extensive documentation.
  • OSGi-ready.
  • JPMS-ready
  • High coverage automated test suite
  • From c76db80fdfed3af39c8208f5e3da81f9a9adf46e Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 11 Jul 2020 18:38:05 +0000 Subject: [PATCH 3/4] Add a vm-kill command Affects: https://github.com/io7m/waxmill/issues/22 --- README-CHANGES.xml | 9 +- .../api/WXMClientConfigurationType.java | 12 ++ .../waxmill/client/api/WXMClientType.java | 12 ++ .../client/vanilla/internal/WXMClient.java | 33 ++++ .../java/com/io7m/waxmill/cmdline/Main.java | 2 + .../cmdline/internal/WXMCommandVMKill.java | 92 ++++++++++ .../waxmill/cmdline/internal/Messages.xml | 4 + .../documentation/cmdline-vm-kill-output.txt | 9 + .../waxmill/documentation/cmdline-vm-kill.xml | 90 ++++++++++ .../waxmill/documentation/cmdline-vm-run.xml | 12 -- .../io7m/waxmill/documentation/cmdline.xml | 1 + .../waxmill/documentation/config-example.xml | 2 + .../documentation/usage-runit-finish.txt | 3 + .../waxmill/documentation/usage-runit-run.txt | 4 + .../com/io7m/waxmill/documentation/usage.txt | 1 + .../com/io7m/waxmill/documentation/usage.xml | 32 ++++ .../cmdline/WXMCommandVMAddAHCIDiskTest.java | 1 - .../WXMCommandVMAddAHCIOpticalTest.java | 5 - .../cmdline/WXMCommandVMAddPassthruTest.java | 4 - ...CommandVMDeleteBootConfigurationsTest.java | 1 - .../tests/cmdline/WXMCommandVMKillTest.java | 167 ++++++++++++++++++ .../tests/cmdline/WXMCommandVMRunTest.java | 161 +++++++++++++++++ .../tests/cmdline/WXMCommandVMSetTest.java | 2 - .../v1/WXM1ClientConfigurationParser.java | 4 + .../v1/WXM1ClientConfigurationSerializer.java | 4 + .../io7m/waxmill/xml/config/v1/config-1.0.xsd | 7 + 26 files changed, 647 insertions(+), 27 deletions(-) create mode 100644 com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/internal/WXMCommandVMKill.java create mode 100644 com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill-output.txt create mode 100644 com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill.xml create mode 100644 com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/usage-runit-finish.txt create mode 100644 com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/usage-runit-run.txt create mode 100644 com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMKillTest.java diff --git a/README-CHANGES.xml b/README-CHANGES.xml index 2e3fc76..d1f9e76 100644 --- a/README-CHANGES.xml +++ b/README-CHANGES.xml @@ -1,9 +1,14 @@ - + - + + + + + + diff --git a/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientConfigurationType.java b/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientConfigurationType.java index 29de9a2..7f8cb04 100644 --- a/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientConfigurationType.java +++ b/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientConfigurationType.java @@ -61,6 +61,18 @@ default Path bhyveExecutable() .getPath("/usr/sbin/bhyve"); } + /** + * @return The "bhyvectl" executable path, such as {@code /usr/sbin/bhyvectl} + */ + + @Value.Default + default Path bhyveCtlExecutable() + { + return this.virtualMachineConfigurationDirectory() + .getFileSystem() + .getPath("/usr/sbin/bhyvectl"); + } + /** * @return The "grub-bhyve" executable path, such as {@code /usr/local/sbin/grub-bhyve} */ diff --git a/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientType.java b/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientType.java index 6a08ff9..bdd78c7 100644 --- a/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientType.java +++ b/com.io7m.waxmill.client.api/src/main/java/com/io7m/waxmill/client/api/WXMClientType.java @@ -192,4 +192,16 @@ void vmRealize( WXMVirtualMachine machine, WXMDryRun dryRun) throws WXMException; + + /** + * Kill a running virtual machine. + * + * @param dryRun Whether or not the operation is a dry run + * @param machine The virtual machine + */ + + void vmKill( + WXMVirtualMachine machine, + WXMDryRun dryRun) + throws WXMException; } diff --git a/com.io7m.waxmill.client.vanilla/src/main/java/com/io7m/waxmill/client/vanilla/internal/WXMClient.java b/com.io7m.waxmill.client.vanilla/src/main/java/com/io7m/waxmill/client/vanilla/internal/WXMClient.java index e8d1a85..d01e616 100644 --- a/com.io7m.waxmill.client.vanilla/src/main/java/com/io7m/waxmill/client/vanilla/internal/WXMClient.java +++ b/com.io7m.waxmill.client.vanilla/src/main/java/com/io7m/waxmill/client/vanilla/internal/WXMClient.java @@ -37,6 +37,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.util.Objects; import java.util.Optional; import java.util.UUID; @@ -150,6 +151,38 @@ public void vmRun( } } + + @Override + public void vmKill( + final WXMVirtualMachine machine, + final WXMDryRun dryRun) + throws WXMException + { + final var processDescription = + WXMProcessDescription.builder() + .setExecutable(this.configuration.bhyveCtlExecutable()) + .addArguments(String.format("--vm=%s", machine.id())) + .addArguments("--destroy") + .build(); + + switch (dryRun) { + case DRY_RUN: + System.out.printf( + "%s %s%n", + processDescription.executable(), + String.join(" ", processDescription.arguments()) + ); + break; + case EXECUTE: + try { + this.processes.processReplaceCurrent(processDescription); + } catch (final IOException e) { + throw new WXMException(e); + } + break; + } + } + @Override public void vmDelete(final UUID id) throws WXMException diff --git a/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/Main.java b/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/Main.java index ccd28c1..f558fa1 100644 --- a/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/Main.java +++ b/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/Main.java @@ -37,6 +37,7 @@ import com.io7m.waxmill.cmdline.internal.WXMCommandVMDeleteDevice; import com.io7m.waxmill.cmdline.internal.WXMCommandVMExport; import com.io7m.waxmill.cmdline.internal.WXMCommandVMImport; +import com.io7m.waxmill.cmdline.internal.WXMCommandVMKill; import com.io7m.waxmill.cmdline.internal.WXMCommandVMList; import com.io7m.waxmill.cmdline.internal.WXMCommandVMListWithName; import com.io7m.waxmill.cmdline.internal.WXMCommandVMRealize; @@ -88,6 +89,7 @@ public Main( WXMCommandVMDeleteDevice::new, WXMCommandVMExport::new, WXMCommandVMImport::new, + WXMCommandVMKill::new, WXMCommandVMList::new, WXMCommandVMListWithName::new, WXMCommandVMRealize::new, diff --git a/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/internal/WXMCommandVMKill.java b/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/internal/WXMCommandVMKill.java new file mode 100644 index 0000000..5a90d1f --- /dev/null +++ b/com.io7m.waxmill.cmdline/src/main/java/com/io7m/waxmill/cmdline/internal/WXMCommandVMKill.java @@ -0,0 +1,92 @@ +/* + * Copyright © 2020 Mark Raynsford http://io7m.com + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package com.io7m.waxmill.cmdline.internal; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; +import com.io7m.claypot.core.CLPCommandContextType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.file.Path; +import java.util.UUID; + +import static com.io7m.claypot.core.CLPCommandType.Status.SUCCESS; +import static com.io7m.waxmill.machines.WXMDryRun.DRY_RUN; +import static com.io7m.waxmill.machines.WXMDryRun.EXECUTE; + +@Parameters(commandDescription = "Kill a virtual machine.") +public final class WXMCommandVMKill extends WXMAbstractCommandWithConfiguration +{ + private static final Logger LOG = + LoggerFactory.getLogger(WXMCommandVMKill.class); + + @Parameter( + names = "--machine", + description = "The ID of the virtual machine", + required = true, + converter = WXMUUIDConverter.class + ) + private UUID id; + + @Parameter( + names = "--dry-run", + description = "Show the commands that would be executed, but do not execute them.", + required = false, + arity = 1 + ) + private boolean dryRun; + + /** + * Construct a command. + * + * @param inContext The command context + */ + + public WXMCommandVMKill( + final CLPCommandContextType inContext) + { + super(LOG, inContext); + } + + @Override + public String extendedHelp() + { + return this.messages().format("vmKillHelp"); + } + + @Override + public String name() + { + return "vm-kill"; + } + + @Override + protected Status executeActualWithConfiguration( + final Path configurationPath) + throws Exception + { + try (var client = WXMServices.clients().open(configurationPath)) { + final var machine = client.vmFind(this.id); + client.vmKill( + machine, + this.dryRun ? DRY_RUN : EXECUTE + ); + } + return SUCCESS; + } +} diff --git a/com.io7m.waxmill.cmdline/src/main/resources/com/io7m/waxmill/cmdline/internal/Messages.xml b/com.io7m.waxmill.cmdline/src/main/resources/com/io7m/waxmill/cmdline/internal/Messages.xml index 2e4d9e8..5efd040 100644 --- a/com.io7m.waxmill.cmdline/src/main/resources/com/io7m/waxmill/cmdline/internal/Messages.xml +++ b/com.io7m.waxmill.cmdline/src/main/resources/com/io7m/waxmill/cmdline/internal/Messages.xml @@ -261,5 +261,9 @@ supporting it. + + diff --git a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill-output.txt b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill-output.txt new file mode 100644 index 0000000..1afb912 --- /dev/null +++ b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill-output.txt @@ -0,0 +1,9 @@ +(Formatted for legibility) + +$ waxmill vm-kill \ + --machine 538a90e4-d50d-4511-8643-ae418279bac4 \ + --dry-run true + +/usr/sbin/bhyvectl \ + --vm=538a90e4-d50d-4511-8643-ae418279bac4 \ + --destroy diff --git a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill.xml b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill.xml new file mode 100644 index 0000000..d51b7a3 --- /dev/null +++ b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-kill.xml @@ -0,0 +1,90 @@ + + +
    + + + + vm-kill + - Kill a running virtual machine + + + + + + The vm-kill command kills a running virtual machine. + + + + + + Parameter + Type + Required + Description + + + + --configuration + + + Path + + + false + + The path to the configuration file (environment variable: $WAXMILL_CONFIGURATION_FILE) + + + + --dry-run + + + Boolean + + + false + + Show the commands that would be executed, but do not execute them. + + + + --machine + + + UUID + + + true + + The ID of the virtual machine + + + + --verbose + + + Log Level + + + false + + Set the minimum logging verbosity level. + +
    +
    +
    + + + + + + + + + +
    diff --git a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-run.xml b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-run.xml index 9f1ed4c..9f388a7 100644 --- a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-run.xml +++ b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline-vm-run.xml @@ -47,18 +47,6 @@ Required Description - - - --comment - - - String - - - false - - A comment describing the new disk - --boot-configuration diff --git a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline.xml b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline.xml index a7990f3..b886124 100644 --- a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline.xml +++ b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/cmdline.xml @@ -66,6 +66,7 @@ + diff --git a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/config-example.xml b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/config-example.xml index 4033d39..15ed56f 100644 --- a/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/config-example.xml +++ b/com.io7m.waxmill.documentation/src/main/resources/com/io7m/waxmill/documentation/config-example.xml @@ -8,6 +8,8 @@ value="/usr/local/sbin/grub-bhyve"/> + + + + The Waxmill package is designed to be usable in environments that use + a process supervision system. For example, assuming a virtual machine + 3bab9914-dfe2-4a37-9c19-c7e9b06c854b has already been configured, it's possible + to create runit + run and + finish scripts such as the following: + + + + + + + + + + + + + + + + These scripts will cause 3bab9914-dfe2-4a37-9c19-c7e9b06c854b to be started + and supervised, and the kernel resources associated with the virtual machine will be properly cleaned up + when the service is shut down or restarted. + + + The Waxmill package always prefers to rely on explicit configuration data rather than reading untrusted data from the environment (such as the PATH environment variable). diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIDiskTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIDiskTest.java index b93b334..6572efd 100644 --- a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIDiskTest.java +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIDiskTest.java @@ -19,7 +19,6 @@ import com.io7m.waxmill.client.api.WXMClientConfiguration; import com.io7m.waxmill.cmdline.MainExitless; import com.io7m.waxmill.machines.WXMDeviceAHCIDisk; -import com.io7m.waxmill.machines.WXMDeviceAHCIOpticalDisk; import com.io7m.waxmill.machines.WXMStorageBackendFile; import com.io7m.waxmill.machines.WXMStorageBackendZFSVolume; import com.io7m.waxmill.machines.WXMStorageBackends; diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIOpticalTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIOpticalTest.java index 6620662..4a79a2c 100644 --- a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIOpticalTest.java +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddAHCIOpticalTest.java @@ -18,11 +18,7 @@ import com.io7m.waxmill.client.api.WXMClientConfiguration; import com.io7m.waxmill.cmdline.MainExitless; -import com.io7m.waxmill.machines.WXMDeviceAHCIDisk; import com.io7m.waxmill.machines.WXMDeviceAHCIOpticalDisk; -import com.io7m.waxmill.machines.WXMStorageBackendFile; -import com.io7m.waxmill.machines.WXMStorageBackendZFSVolume; -import com.io7m.waxmill.machines.WXMStorageBackends; import com.io7m.waxmill.tests.WXMTestDirectories; import com.io7m.waxmill.xml.WXMClientConfigurationSerializers; import org.junit.jupiter.api.BeforeEach; @@ -34,7 +30,6 @@ import java.util.UUID; import static com.io7m.waxmill.tests.cmdline.WXMParsing.parseFirst; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; public final class WXMCommandVMAddAHCIOpticalTest diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddPassthruTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddPassthruTest.java index 18612a2..3d5bc62 100644 --- a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddPassthruTest.java +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMAddPassthruTest.java @@ -19,10 +19,6 @@ import com.io7m.waxmill.client.api.WXMClientConfiguration; import com.io7m.waxmill.cmdline.MainExitless; import com.io7m.waxmill.machines.WXMDevicePassthru; -import com.io7m.waxmill.machines.WXMDeviceVirtioBlockStorage; -import com.io7m.waxmill.machines.WXMStorageBackendFile; -import com.io7m.waxmill.machines.WXMStorageBackendZFSVolume; -import com.io7m.waxmill.machines.WXMStorageBackends; import com.io7m.waxmill.tests.WXMTestDirectories; import com.io7m.waxmill.xml.WXMClientConfigurationSerializers; import org.junit.jupiter.api.BeforeEach; diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMDeleteBootConfigurationsTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMDeleteBootConfigurationsTest.java index db4df6e..7fc10ea 100644 --- a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMDeleteBootConfigurationsTest.java +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMDeleteBootConfigurationsTest.java @@ -38,7 +38,6 @@ import static com.io7m.waxmill.tests.cmdline.WXMParsing.parseFirst; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertThrows; public final class WXMCommandVMDeleteBootConfigurationsTest diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMKillTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMKillTest.java new file mode 100644 index 0000000..941f62c --- /dev/null +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMKillTest.java @@ -0,0 +1,167 @@ +/* + * Copyright © 2020 Mark Raynsford http://io7m.com + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package com.io7m.waxmill.tests.cmdline; + +import com.io7m.waxmill.client.api.WXMClientConfiguration; +import com.io7m.waxmill.cmdline.MainExitless; +import com.io7m.waxmill.tests.WXMTestDirectories; +import com.io7m.waxmill.xml.WXMClientConfigurationSerializers; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +public final class WXMCommandVMKillTest +{ + private Path directory; + private Path configFile; + private Path configFileTmp; + private Path vmDirectory; + private Path zfsDirectory; + private WXMClientConfiguration configuration; + + @BeforeEach + public void setup() + throws Exception + { + this.directory = WXMTestDirectories.createTempDirectory(); + this.configFile = this.directory.resolve("config.xml"); + this.configFileTmp = this.directory.resolve("config.xml.tmp"); + this.vmDirectory = this.directory.resolve("vmDirectory"); + this.zfsDirectory = this.directory.resolve("zfsDirectory"); + Files.createDirectories(this.vmDirectory); + + this.configuration = + WXMClientConfiguration.builder() + .setVirtualMachineConfigurationDirectory(this.vmDirectory) + .setVirtualMachineRuntimeDirectory(this.zfsDirectory) + .setZfsExecutable(Paths.get("/bin/echo")) + .setGrubBhyveExecutable(Paths.get("/bin/echo")) + .setBhyveExecutable(Paths.get("/bin/echo")) + .build(); + + new WXMClientConfigurationSerializers() + .serialize( + this.configFile, + this.configFileTmp, + this.configuration + ); + } + + @Test + public void killTooFewArguments() + { + assertThrows(IOException.class, () -> { + MainExitless.main( + new String[]{ + "vm-kill" + } + ); + }); + } + + @Test + public void killDryRun() + throws Exception + { + final var id = UUID.randomUUID(); + MainExitless.main( + new String[]{ + "vm-define", + "--verbose", + "trace", + "--configuration", + this.configFile.toString(), + "--machine", + id.toString(), + "--name", + "com.io7m.example", + "--memory-gigabytes", + "1", + "--memory-megabytes", + "128", + "--cpu-count", + "2" + } + ); + + MainExitless.main( + new String[]{ + "vm-kill", + "--verbose", + "trace", + "--machine", + id.toString(), + "--configuration", + this.configFile.toString(), + "--dry-run", + "true" + } + ); + } + + @Test + public void killMissingMachine() + { + final var id = UUID.randomUUID(); + + assertThrows(IOException.class, () -> { + MainExitless.main( + new String[]{ + "vm-kill", + "--verbose", + "trace", + "--machine", + id.toString(), + "--configuration", + this.configFile.toString(), + "--dry-run", + "true" + } + ); + }); + } + + @Test + public void killConfigurationFileMissing() + throws IOException + { + Files.deleteIfExists(this.configFile); + + assertThrows(IOException.class, () -> { + MainExitless.main( + new String[]{ + "vm-kill", + "--verbose", + "trace", + "--boot-configuration", + "run", + "--machine", + UUID.randomUUID().toString(), + "--configuration", + this.configFile.toString() + } + ); + }); + } +} diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMRunTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMRunTest.java index 9d33cad..fbe8f5c 100644 --- a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMRunTest.java +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMRunTest.java @@ -18,7 +18,11 @@ import com.io7m.waxmill.client.api.WXMClientConfiguration; import com.io7m.waxmill.cmdline.MainExitless; +import com.io7m.waxmill.machines.WXMBootConfigurationName; +import com.io7m.waxmill.machines.WXMBootConfigurationType; +import com.io7m.waxmill.machines.WXMBootConfigurationUEFI; import com.io7m.waxmill.tests.WXMTestDirectories; +import com.io7m.waxmill.xml.WXMBootConfigurationsSerializers; import com.io7m.waxmill.xml.WXMClientConfigurationSerializers; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -27,8 +31,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; import java.util.UUID; +import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.jupiter.api.Assertions.assertThrows; public final class WXMCommandVMRunTest @@ -102,4 +108,159 @@ public void runConfigurationFileMissing() ); }); } + + @Test + public void runDryRun() + throws Exception + { + final var id = UUID.randomUUID(); + MainExitless.main( + new String[]{ + "vm-define", + "--verbose", + "trace", + "--configuration", + this.configFile.toString(), + "--machine", + id.toString(), + "--name", + "com.io7m.example", + "--memory-gigabytes", + "1", + "--memory-megabytes", + "128", + "--cpu-count", + "2" + } + ); + + MainExitless.main( + new String[]{ + "vm-add-lpc-device", + "--configuration", + this.configFile.toString(), + "--machine", + id.toString(), + "--device-slot", + "0:2:0", + "--add-backend", + "stdio;com1" + } + ); + + Files.write(this.directory.resolve("firmware"), "FIRMWARE".getBytes(UTF_8)); + + final var bootConf = + WXMBootConfigurationUEFI.builder() + .setComment("A configuration") + .setName(WXMBootConfigurationName.of("run")) + .setFirmware(this.directory.resolve("firmware")) + .build(); + + final List bootConfs = + List.of(bootConf); + + new WXMBootConfigurationsSerializers() + .serialize( + this.directory.resolve("boot.xml"), + this.directory.resolve("boot.xml.tmp"), + bootConfs + ); + + MainExitless.main( + new String[]{ + "vm-update-boot-configurations", + "--verbose", + "trace", + "--configuration", + this.configFile.toString(), + "--machine", + id.toString(), + "--file", + this.directory.resolve("boot.xml").toString() + } + ); + + MainExitless.main( + new String[]{ + "vm-run", + "--verbose", + "trace", + "--machine", + id.toString(), + "--configuration", + this.configFile.toString(), + "--dry-run", + "true", + "--boot-configuration", + "run" + } + ); + } + + @Test + public void runMissingBoot() + throws Exception + { + final var id = UUID.randomUUID(); + MainExitless.main( + new String[]{ + "vm-define", + "--verbose", + "trace", + "--configuration", + this.configFile.toString(), + "--machine", + id.toString(), + "--name", + "com.io7m.example", + "--memory-gigabytes", + "1", + "--memory-megabytes", + "128", + "--cpu-count", + "2" + } + ); + + assertThrows(IOException.class, () -> { + MainExitless.main( + new String[]{ + "vm-run", + "--verbose", + "trace", + "--machine", + id.toString(), + "--configuration", + this.configFile.toString(), + "--dry-run", + "true", + "--boot-configuration", + "run" + } + ); + }); + } + + @Test + public void runMissingMachine() + { + final var id = UUID.randomUUID(); + + assertThrows(IOException.class, () -> { + MainExitless.main( + new String[]{ + "vm-kill", + "--verbose", + "trace", + "--machine", + id.toString(), + "--configuration", + this.configFile.toString(), + "--dry-run", + "true" + } + ); + }); + } } diff --git a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMSetTest.java b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMSetTest.java index 1b459e9..b3c298a 100644 --- a/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMSetTest.java +++ b/com.io7m.waxmill.tests/src/test/java/com/io7m/waxmill/tests/cmdline/WXMCommandVMSetTest.java @@ -19,7 +19,6 @@ import com.io7m.waxmill.client.api.WXMClientConfiguration; import com.io7m.waxmill.cmdline.MainExitless; import com.io7m.waxmill.exceptions.WXMException; -import com.io7m.waxmill.machines.WXMDevicePassthru; import com.io7m.waxmill.machines.WXMFlags; import com.io7m.waxmill.tests.WXMTestDirectories; import com.io7m.waxmill.xml.WXMClientConfigurationSerializers; @@ -33,7 +32,6 @@ import static com.io7m.waxmill.tests.cmdline.WXMParsing.parseFirst; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationParser.java b/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationParser.java index 50966ab..3646eab 100644 --- a/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationParser.java +++ b/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationParser.java @@ -96,6 +96,10 @@ private void onPathsReceived( this.builder.setBhyveExecutable(path.path()); break; } + case "BhyveCtlExecutable": { + this.builder.setBhyveCtlExecutable(path.path()); + break; + } case "ZFSExecutable": { this.builder.setZfsExecutable(path.path()); break; diff --git a/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationSerializer.java b/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationSerializer.java index 6b50006..6878f95 100644 --- a/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationSerializer.java +++ b/com.io7m.waxmill.xml/src/main/java/com/io7m/waxmill/xml/config/v1/WXM1ClientConfigurationSerializer.java @@ -96,6 +96,10 @@ private void serializePaths() "BhyveExecutable", this.clientConfiguration.bhyveExecutable() ); + this.serializePath( + "BhyveCtlExecutable", + this.clientConfiguration.bhyveCtlExecutable() + ); this.serializePath( "GRUBBhyveExecutable", this.clientConfiguration.grubBhyveExecutable() diff --git a/com.io7m.waxmill.xml/src/main/resources/com/io7m/waxmill/xml/config/v1/config-1.0.xsd b/com.io7m.waxmill.xml/src/main/resources/com/io7m/waxmill/xml/config/v1/config-1.0.xsd index de38738..179bf7e 100644 --- a/com.io7m.waxmill.xml/src/main/resources/com/io7m/waxmill/xml/config/v1/config-1.0.xsd +++ b/com.io7m.waxmill.xml/src/main/resources/com/io7m/waxmill/xml/config/v1/config-1.0.xsd @@ -25,6 +25,13 @@ + + + + The path to the bhyvectl executable. On FreeBSD, this is /usr/sbin/bhyvectl by default. + + + From e4ab0facf925938d71663819714f7a6be99554e8 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 11 Jul 2020 18:39:45 +0000 Subject: [PATCH 4/4] Mark 0.0.2 --- com.io7m.waxmill.boot/pom.xml | 2 +- com.io7m.waxmill.client.api/pom.xml | 2 +- com.io7m.waxmill.client.vanilla/pom.xml | 2 +- com.io7m.waxmill.cmdline/pom.xml | 2 +- com.io7m.waxmill.database.api/pom.xml | 2 +- com.io7m.waxmill.database.vanilla/pom.xml | 2 +- com.io7m.waxmill.documentation/pom.xml | 2 +- com.io7m.waxmill.exceptions/pom.xml | 2 +- com.io7m.waxmill.locks/pom.xml | 2 +- com.io7m.waxmill.machines/pom.xml | 2 +- com.io7m.waxmill.parser.api/pom.xml | 2 +- com.io7m.waxmill.process.api/pom.xml | 2 +- com.io7m.waxmill.process.posix/pom.xml | 2 +- com.io7m.waxmill.realize/pom.xml | 2 +- com.io7m.waxmill.serializer.api/pom.xml | 2 +- com.io7m.waxmill.strings.api/pom.xml | 2 +- com.io7m.waxmill.tests/pom.xml | 2 +- com.io7m.waxmill.xml/pom.xml | 2 +- pom.xml | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/com.io7m.waxmill.boot/pom.xml b/com.io7m.waxmill.boot/pom.xml index 06fc75b..e6e712d 100644 --- a/com.io7m.waxmill.boot/pom.xml +++ b/com.io7m.waxmill.boot/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.boot diff --git a/com.io7m.waxmill.client.api/pom.xml b/com.io7m.waxmill.client.api/pom.xml index 61ac3ad..21f8867 100644 --- a/com.io7m.waxmill.client.api/pom.xml +++ b/com.io7m.waxmill.client.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.client.api diff --git a/com.io7m.waxmill.client.vanilla/pom.xml b/com.io7m.waxmill.client.vanilla/pom.xml index 9a07f01..cfae9ac 100644 --- a/com.io7m.waxmill.client.vanilla/pom.xml +++ b/com.io7m.waxmill.client.vanilla/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.client.vanilla diff --git a/com.io7m.waxmill.cmdline/pom.xml b/com.io7m.waxmill.cmdline/pom.xml index e107ed6..0740045 100644 --- a/com.io7m.waxmill.cmdline/pom.xml +++ b/com.io7m.waxmill.cmdline/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.cmdline diff --git a/com.io7m.waxmill.database.api/pom.xml b/com.io7m.waxmill.database.api/pom.xml index 351181c..10405d7 100644 --- a/com.io7m.waxmill.database.api/pom.xml +++ b/com.io7m.waxmill.database.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.database.api diff --git a/com.io7m.waxmill.database.vanilla/pom.xml b/com.io7m.waxmill.database.vanilla/pom.xml index e0cb554..8e4c2e7 100644 --- a/com.io7m.waxmill.database.vanilla/pom.xml +++ b/com.io7m.waxmill.database.vanilla/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.database.vanilla diff --git a/com.io7m.waxmill.documentation/pom.xml b/com.io7m.waxmill.documentation/pom.xml index 0929b4e..092f615 100644 --- a/com.io7m.waxmill.documentation/pom.xml +++ b/com.io7m.waxmill.documentation/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.documentation diff --git a/com.io7m.waxmill.exceptions/pom.xml b/com.io7m.waxmill.exceptions/pom.xml index 5a48c29..ebbd3bd 100644 --- a/com.io7m.waxmill.exceptions/pom.xml +++ b/com.io7m.waxmill.exceptions/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.exceptions diff --git a/com.io7m.waxmill.locks/pom.xml b/com.io7m.waxmill.locks/pom.xml index d285cc9..076be6c 100644 --- a/com.io7m.waxmill.locks/pom.xml +++ b/com.io7m.waxmill.locks/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.locks diff --git a/com.io7m.waxmill.machines/pom.xml b/com.io7m.waxmill.machines/pom.xml index 99359cf..93a1de6 100644 --- a/com.io7m.waxmill.machines/pom.xml +++ b/com.io7m.waxmill.machines/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.machines diff --git a/com.io7m.waxmill.parser.api/pom.xml b/com.io7m.waxmill.parser.api/pom.xml index 758afd5..4c2f280 100644 --- a/com.io7m.waxmill.parser.api/pom.xml +++ b/com.io7m.waxmill.parser.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.parser.api diff --git a/com.io7m.waxmill.process.api/pom.xml b/com.io7m.waxmill.process.api/pom.xml index 55b24d0..d5c74e1 100644 --- a/com.io7m.waxmill.process.api/pom.xml +++ b/com.io7m.waxmill.process.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.process.api diff --git a/com.io7m.waxmill.process.posix/pom.xml b/com.io7m.waxmill.process.posix/pom.xml index 1d17383..e58efd5 100644 --- a/com.io7m.waxmill.process.posix/pom.xml +++ b/com.io7m.waxmill.process.posix/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.process.posix diff --git a/com.io7m.waxmill.realize/pom.xml b/com.io7m.waxmill.realize/pom.xml index a870256..986a2d2 100644 --- a/com.io7m.waxmill.realize/pom.xml +++ b/com.io7m.waxmill.realize/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.realize diff --git a/com.io7m.waxmill.serializer.api/pom.xml b/com.io7m.waxmill.serializer.api/pom.xml index a675089..d22520b 100644 --- a/com.io7m.waxmill.serializer.api/pom.xml +++ b/com.io7m.waxmill.serializer.api/pom.xml @@ -8,7 +8,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.serializer.api diff --git a/com.io7m.waxmill.strings.api/pom.xml b/com.io7m.waxmill.strings.api/pom.xml index d6520f6..3a6d452 100644 --- a/com.io7m.waxmill.strings.api/pom.xml +++ b/com.io7m.waxmill.strings.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.strings.api diff --git a/com.io7m.waxmill.tests/pom.xml b/com.io7m.waxmill.tests/pom.xml index ca0e798..61b86fb 100644 --- a/com.io7m.waxmill.tests/pom.xml +++ b/com.io7m.waxmill.tests/pom.xml @@ -9,7 +9,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.tests diff --git a/com.io7m.waxmill.xml/pom.xml b/com.io7m.waxmill.xml/pom.xml index 23aad8f..e58ec06 100644 --- a/com.io7m.waxmill.xml/pom.xml +++ b/com.io7m.waxmill.xml/pom.xml @@ -8,7 +8,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 com.io7m.waxmill.xml diff --git a/pom.xml b/pom.xml index 1ce3606..dd67124 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ com.io7m.waxmill com.io7m.waxmill - 0.0.2-SNAPSHOT + 0.0.2 pom FreeBSD BHyve Manager