diff --git a/appvm.go b/appvm.go
index 9fc628c..8184d12 100644
--- a/appvm.go
+++ b/appvm.go
@@ -165,7 +165,9 @@ func isRunning(l *libvirt.Libvirt, name string) bool {
return err == nil
}
-func generateAppVM(l *libvirt.Libvirt, appvmPath, name string, verbose bool) (err error) {
+func generateAppVM(l *libvirt.Libvirt, appvmPath, name string, verbose,
+ online bool) (err error) {
+
err = os.Chdir(appvmPath)
if err != nil {
return
@@ -179,7 +181,7 @@ func generateAppVM(l *libvirt.Libvirt, appvmPath, name string, verbose bool) (er
sharedDir := fmt.Sprintf(os.Getenv("HOME") + "/appvm/" + name)
os.MkdirAll(sharedDir, 0700)
- xml := generateXML(name, realpath, reginfo, qcow2, sharedDir)
+ xml := generateXML(name, online, realpath, reginfo, qcow2, sharedDir)
_, err = l.DomainCreateXML(xml, libvirt.DomainStartValidate)
return
}
@@ -208,7 +210,9 @@ func isAppvmConfigurationExists(appvmPath, name string) bool {
return fileExists(appvmPath + "/nix/" + name + ".nix")
}
-func start(l *libvirt.Libvirt, name string, verbose bool, args, open string) {
+func start(l *libvirt.Libvirt, name string, verbose, online bool,
+ args, open string) {
+
appvmPath := configDir
vmHomePath := os.Getenv("HOME") + "/appvm/" + name + "/"
@@ -251,7 +255,7 @@ func start(l *libvirt.Libvirt, name string, verbose bool, args, open string) {
if !verbose {
go stupidProgressBar()
}
- err = generateAppVM(l, appvmPath, name, verbose)
+ err = generateAppVM(l, appvmPath, name, verbose, online)
if err != nil {
log.Fatal(err)
}
@@ -399,6 +403,7 @@ func main() {
startQuiet := startCommand.Flag("quiet", "Less verbosity").Bool()
startArgs := startCommand.Flag("args", "Command line arguments").String()
startOpen := startCommand.Flag("open", "Pass file to application").String()
+ startOffline := startCommand.Flag("offline", "Disconnect").Bool()
stopName := kingpin.Command("stop", "Stop application").Arg("name", "Application name").Required().String()
dropName := kingpin.Command("drop", "Remove application data").Arg("name", "Application name").Required().String()
@@ -421,7 +426,8 @@ func main() {
case "generate":
generate(l, *generateName, *generateBin, *generateVMName)
case "start":
- start(l, *startName, !*startQuiet, *startArgs, *startOpen)
+ start(l, *startName, !*startQuiet, !*startOffline,
+ *startArgs, *startOpen)
case "stop":
stop(l, *stopName)
case "drop":
diff --git a/xml.go b/xml.go
index b2d93e5..675f34c 100644
--- a/xml.go
+++ b/xml.go
@@ -5,9 +5,27 @@ import "fmt"
// You may think that you want to rewrite to proper golang structures.
// Believe me, you shouldn't.
-func generateXML(name, vmNixPath, reginfo, img, sharedDir string) string {
+func generateXML(name string, online bool, vmNixPath, reginfo, img, sharedDir string) string {
+ qemuParams := `
+
+
+
+
+
+
+
+ `
+
+ if !online {
+ qemuParams = `
+
+
+
+ `
+ }
+
return fmt.Sprintf(xmlTmpl, "appvm_"+name, vmNixPath, vmNixPath, vmNixPath,
- reginfo, img, sharedDir, sharedDir, sharedDir)
+ reginfo, img, sharedDir, sharedDir, sharedDir, qemuParams)
}
var xmlTmpl = `
@@ -68,12 +86,6 @@ var xmlTmpl = `
-
-
-
-
-
-
-
+ %s
`