diff options
| author | Jeff Carr <[email protected]> | 2024-10-31 06:50:17 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-10-31 06:50:17 -0500 |
| commit | a345a813d887b02d9c6eaea9d4645cf5c30f0573 (patch) | |
| tree | b10b29c7d9d42673a126b62892f8b56df7aac87f /http.go | |
| parent | cc092bd8955ce7589fb2d92c091a5da3f8f714e5 (diff) | |
rename to virtigolib
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'http.go')
| -rw-r--r-- | http.go | 50 |
1 files changed, 49 insertions, 1 deletions
@@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "io/ioutil" "net/http" @@ -8,8 +9,10 @@ import ( "strings" "go.wit.com/lib/gui/shell" + "go.wit.com/lib/virtigolib" pb "go.wit.com/lib/protobuf/virtbuf" "go.wit.com/log" + "libvirt.org/go/libvirtxml" ) // remove '?' part and trailing '/' @@ -53,11 +56,37 @@ func okHandler(w http.ResponseWriter, r *http.Request) { } if tmp == "/vms" { - s := pollHypervisor(hv) + s := pollHypervisor(me.hv) fmt.Fprint(w, s) return } + if tmp == "/import" { + domname := r.URL.Query().Get("import") + fmt.Fprint(w, "import domain:", domname) + + xmldoc, err := virshDumpXML(w, r, domname) + + domcfg := &libvirtxml.Domain{} + err = domcfg.Unmarshal(xmldoc) + if err != nil { + fmt.Fprintln(w, "domain.Unmarshal XML failed") + fmt.Fprintln(w, "error =", err) + return + } + // importDomain(w, r, domcfg) + // importDomain(w http.ResponseWriter, r *http.Request, dom *libvirtxml.Domain) { + d, _, err := virtigolib.ImportXML(domcfg) + if err != nil { + fmt.Fprintln(w, "ImportXML failed for", domname, err) + return + } + fmt.Fprintln(w, "ImportXML worked for", domname) + fmt.Fprintln(w, "should send the protobuf to virtigo here", domname) + d.Current.FullXml = xmldoc + return + } + if tmp == "/cluster" { log.Info("/cluster jcarr actually doing START") fmt.Fprintln(w, "/cluster jcarr actually doing START") @@ -201,3 +230,22 @@ func startHTTP() { log.Println("Error starting server:", err) } } + +func virshDumpXML(w http.ResponseWriter, r *http.Request, name string) (string, error) { + cmd := []string{"virsh", "dumpxml", "--security-info", name} + + fmt.Fprintln(w, "virsh dumpxml", name) + log.Warn("cmd :", cmd) + fmt.Fprintln(w, "cmd: ", cmd) + err, ok, output := shell.RunCmd("/home/", cmd) + shell.Run(cmd) + if !ok { + fmt.Fprintln(w, "START FAILED", me.Hostname) + fmt.Fprintln(w, "error =", err) + result := fmt.Sprintln("virsh dumpxml failed:", err) + return output, errors.New(result) + } + fmt.Fprintln(w, "START OK", me.Hostname) + fmt.Fprintln(w, output) + return output, nil +} |
