gowsdl
gowsdl copied to clipboard
using gowdsl with virtualbox web service
FYI: it took me some time to figure out how to do this, so maybe someone will benefit from my experience
after using gowsdl to generate vboxweb.go as part of the vboxweb package I can now do this:
package main
import v "vboxweb"
import "fmt"
func main() {
service:= v.NewVboxPortType("http://localhost:18083/", false, &v.BasicAuth{})
session,err := service.IWebsessionManagerlogon(&v.IWebsessionManagerlogon{})
if err == nil {
sessionID :=session.Returnval
//fmt.Println(sessionID)
version,err := service.IVirtualBoxgetVersion(&v.IVirtualBoxgetVersion{This:sessionID})
if err == nil {
fmt.Println("getVersion",version.Returnval)
}
machine,err := service.IVirtualBoxfindMachine(&v.IVirtualBoxfindMachine{This:sessionID,NameOrId:"myvmname"})
if err == nil {
fmt.Println("Machine object",machine.Returnval)
}
state,err := service.IMachinegetState(&v.IMachinegetState{This:machine.Returnval})
if err == nil {
fmt.Println("Machine state",*state.Returnval)
}
}
}
Virtualbox expects an object identifier in a this parameter to be able to work.
After login you get a session object id, some operations return another object id which you need to pass to get to the attributes.