gowsdl icon indicating copy to clipboard operation
gowsdl copied to clipboard

using gowdsl with virtualbox web service

Open seriousme opened this issue 8 years ago • 0 comments

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.

seriousme avatar Apr 22 '17 11:04 seriousme