1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-30 22:50:10 +03:00

M #-: Adjust docker binding to new GOCA (#3505)

This commit is contained in:
Christian González 2019-07-12 15:10:56 +02:00 committed by Tino Vázquez
parent 3a60e67657
commit d6237309ba
3 changed files with 152 additions and 43 deletions

View File

@ -3,67 +3,163 @@
[[projects]]
branch = "master"
digest = "1:6da51e5ec493ad2b44cb04129e2d0a068c8fb9bd6cb5739d199573558696bb94"
name = "github.com/Azure/go-ansiterm"
packages = [".","winterm"]
packages = [
".",
"winterm",
]
pruneopts = "UT"
revision = "d6e3b3328b783f23731bc4d058875b0371ff8109"
[[projects]]
branch = "master"
digest = "1:c3bbfd49386bd298f3467474e44469163c9cf6900b037a203b0388634ab1bf41"
name = "github.com/OpenNebula/one"
packages = ["src/oca/go/src/goca"]
packages = [
"src/oca/go/src/goca",
"src/oca/go/src/goca/dynamic",
"src/oca/go/src/goca/errors",
"src/oca/go/src/goca/parameters",
"src/oca/go/src/goca/schemas/acl",
"src/oca/go/src/goca/schemas/cluster",
"src/oca/go/src/goca/schemas/datastore",
"src/oca/go/src/goca/schemas/document",
"src/oca/go/src/goca/schemas/group",
"src/oca/go/src/goca/schemas/host",
"src/oca/go/src/goca/schemas/image",
"src/oca/go/src/goca/schemas/marketplace",
"src/oca/go/src/goca/schemas/marketplaceapp",
"src/oca/go/src/goca/schemas/securitygroup",
"src/oca/go/src/goca/schemas/shared",
"src/oca/go/src/goca/schemas/template",
"src/oca/go/src/goca/schemas/user",
"src/oca/go/src/goca/schemas/vdc",
"src/oca/go/src/goca/schemas/virtualnetwork",
"src/oca/go/src/goca/schemas/virtualrouter",
"src/oca/go/src/goca/schemas/vm",
"src/oca/go/src/goca/schemas/vmgroup",
"src/oca/go/src/goca/schemas/vntemplate",
"src/oca/go/src/goca/schemas/zone",
]
pruneopts = "UT"
revision = "master"
[[projects]]
branch = "master"
digest = "1:5a9464d972454e9bb1ed81f6742dfdb3ad834ba816c4783fd4e5c975b669f01c"
name = "github.com/docker/docker"
packages = ["pkg/term","pkg/term/windows"]
packages = [
"pkg/term",
"pkg/term/windows",
]
pruneopts = "UT"
revision = "0c1006f1abc1af7aa6b9847754370d054dfa6c68"
[[projects]]
digest = "1:6dc4a88e0b8ecdff1d25e37fbc680f467261c18469be8a5559a5754fb895c5c0"
name = "github.com/docker/machine"
packages = ["libmachine/drivers","libmachine/drivers/plugin","libmachine/drivers/plugin/localbinary","libmachine/drivers/rpc","libmachine/log","libmachine/mcnflag","libmachine/mcnutils","libmachine/ssh","libmachine/state","libmachine/version","version"]
packages = [
"libmachine/drivers",
"libmachine/drivers/plugin",
"libmachine/drivers/plugin/localbinary",
"libmachine/drivers/rpc",
"libmachine/log",
"libmachine/mcnflag",
"libmachine/mcnutils",
"libmachine/ssh",
"libmachine/state",
"libmachine/version",
"version",
]
pruneopts = "UT"
revision = "89b833253d9412716a0291cbdccc94454c33d1b5"
version = "v0.14.0"
[[projects]]
digest = "1:af105c7c5dc0b4ae41991f122cae860b9600f7d226072c2a83127048c991660c"
name = "github.com/hashicorp/go-cleanhttp"
packages = ["."]
pruneopts = "UT"
revision = "eda1e5db218aad1db63ca4642c8906b26bcf2744"
version = "v0.5.1"
[[projects]]
branch = "master"
digest = "1:82993553515c494e149cbbb73a63899e8f1c6a5b4c456e60baf170ad6c347033"
name = "github.com/kolo/xmlrpc"
packages = ["."]
pruneopts = "UT"
revision = "0826b98aaa29c0766956cb40d45cf7482a597671"
[[projects]]
digest = "1:9e9193aa51197513b3abcb108970d831fbcf40ef96aa845c4f03276e1fa316d2"
name = "github.com/sirupsen/logrus"
packages = ["."]
pruneopts = "UT"
revision = "c155da19408a8799da419ed3eeb0cb5db0ad5dbc"
version = "v1.0.5"
[[projects]]
branch = "master"
digest = "1:ae38a56e386a576a45ca89870c379224062f1cc9a9763f7b165567f3f317f4a1"
name = "golang.org/x/crypto"
packages = ["curve25519","ed25519","ed25519/internal/edwards25519","internal/chacha20","poly1305","ssh","ssh/terminal"]
packages = [
"curve25519",
"ed25519",
"ed25519/internal/edwards25519",
"internal/chacha20",
"poly1305",
"ssh",
"ssh/terminal",
]
pruneopts = "UT"
revision = "c3a3ad6d03f7a915c0f7e194b7152974bb73d287"
[[projects]]
branch = "master"
digest = "1:d610e483f9d284959f3bb01d8917ad0e4efd393a8587123b1e3406fdf37199f0"
name = "golang.org/x/net"
packages = ["html","html/atom"]
packages = [
"html",
"html/atom",
]
pruneopts = "UT"
revision = "6078986fec03a1dcc236c34816c71b0e05018fda"
[[projects]]
branch = "master"
digest = "1:1edb3ae84490dc42a1ca99adbb957b2f66a3b79fa23ddc9e53b1f9b2a872601f"
name = "golang.org/x/sys"
packages = ["unix","windows"]
packages = [
"unix",
"windows",
]
pruneopts = "UT"
revision = "7ceb54c8418b8f9cdf0177b511d5cbb06e9fae39"
[[projects]]
branch = "v2"
digest = "1:c78e25c1cf10b1d9d1dd866f3f246f239b66d4648a16e3da1c098444e288c0e9"
name = "gopkg.in/xmlpath.v2"
packages = ["."]
pruneopts = "UT"
revision = "860cbeca3ebcc600db0b213c0e83ad6ce91f5739"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "6ef5dc5036a75692652fb575393bee64c35bf61c3c8362fa2817dffa01b46173"
input-imports = [
"github.com/OpenNebula/one/src/oca/go/src/goca",
"github.com/OpenNebula/one/src/oca/go/src/goca/dynamic",
"github.com/docker/machine/libmachine/drivers",
"github.com/docker/machine/libmachine/drivers/plugin",
"github.com/docker/machine/libmachine/log",
"github.com/docker/machine/libmachine/mcnflag",
"github.com/docker/machine/libmachine/ssh",
"github.com/docker/machine/libmachine/state",
"github.com/kolo/xmlrpc",
"gopkg.in/xmlpath.v2",
]
solver-name = "gps-cdcl"
solver-version = 1

View File

@ -9,6 +9,7 @@ import (
"time"
"github.com/OpenNebula/one/src/oca/go/src/goca"
dyn "github.com/OpenNebula/one/src/oca/go/src/goca/dynamic"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/log"
@ -36,7 +37,7 @@ type Driver struct {
User string
Password string
Xmlrpcurl string
Config goca.OneConfig
Controller *goca.Controller
DisableVNC bool
StartRetries string
}
@ -100,13 +101,11 @@ func NewDriver(hostName, storePath string) *Driver {
}
}
func (d *Driver) buildConfig() {
d.Config = goca.NewConfig(d.User, d.Password, d.Xmlrpcurl)
}
func (d *Driver) setClient() {
d.buildConfig()
goca.SetClient(d.Config)
func (d *Driver) setController() {
client := goca.NewClient(
goca.NewConfig(d.User, d.Password, d.Xmlrpcurl),
)
d.Controller = goca.NewController(client)
}
// GetCreateFlags registers the flags this driver adds to
@ -360,14 +359,12 @@ func (d *Driver) PreCreateCheck() error {
func (d *Driver) Create() error {
var (
vector *goca.TemplateBuilderVector
vmtemplate *goca.Template
vector *dyn.TemplateBuilderVector
err error
)
// build config and set the xmlrpc client
d.setClient()
d.setController()
log.Infof("Creating SSH key..")
if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil {
@ -380,7 +377,7 @@ func (d *Driver) Create() error {
}
// Create template
template := goca.NewTemplateBuilder()
template := dyn.NewTemplateBuilder()
if d.TemplateName != "" || d.TemplateID != "" {
// Template has been specified
@ -469,25 +466,28 @@ func (d *Driver) Create() error {
// Instantiate
log.Infof("Starting VM..")
// Template has been specified
if d.TemplateName != "" || d.TemplateID != "" {
var templateID int
if d.TemplateName != "" {
vmtemplate, err = goca.NewTemplateFromName(d.TemplateName)
templateID, err = d.Controller.Templates().ByName(d.TemplateName)
if err != nil {
return err
}
} else {
templateID, err := strconv.Atoi(d.TemplateID)
templateID, err = strconv.Atoi(d.TemplateID)
if err != nil {
return err
}
vmtemplate = goca.NewTemplate(uint(templateID))
}
vmtemplate := d.Controller.Template(templateID)
_, err = vmtemplate.Instantiate(d.MachineName, false, template.String(), false)
} else {
_, err = goca.CreateVM(template.String(), false)
_, err = d.Controller.VMs().Create(template.String(), false)
}
if err != nil {
@ -510,13 +510,14 @@ func (d *Driver) GetURL() (string, error) {
}
func (d *Driver) GetIP() (string, error) {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return "", err
}
err = vm.Info()
vm, err := d.Controller.VM(vm_id).Info()
if err != nil {
return "", err
}
@ -535,13 +536,14 @@ func (d *Driver) GetIP() (string, error) {
}
func (d *Driver) GetState() (state.State, error) {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return state.None, err
}
err = vm.Info()
vm, err := d.Controller.VM(vm_id).Info()
if err != nil {
return state.None, err
}
@ -649,12 +651,14 @@ func (d *Driver) GetState() (state.State, error) {
}
func (d *Driver) Start() error {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return err
}
vm := d.Controller.VM(vm_id)
vm.Resume()
s := state.None
@ -667,7 +671,7 @@ func (d *Driver) Start() error {
switch s {
case state.Error:
return errors.New("vM in error state")
return errors.New("VM in error state")
default:
time.Sleep(2 * time.Second)
}
@ -686,12 +690,14 @@ func (d *Driver) Start() error {
}
func (d *Driver) Stop() error {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return err
}
vm := d.Controller.VM(vm_id)
err = vm.Poweroff()
if err != nil {
return err
@ -701,12 +707,14 @@ func (d *Driver) Stop() error {
}
func (d *Driver) Remove() error {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return err
}
vm := d.Controller.VM(vm_id)
err = vm.TerminateHard()
if err != nil {
return err
@ -716,12 +724,14 @@ func (d *Driver) Remove() error {
}
func (d *Driver) Restart() error {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return err
}
vm := d.Controller.VM(vm_id)
err = vm.Reboot()
if err != nil {
return err
@ -731,12 +741,15 @@ func (d *Driver) Restart() error {
}
func (d *Driver) Kill() error {
d.setClient()
vm, err := goca.NewVMFromName(d.MachineName)
d.setController()
vm_id, err := d.Controller.VMs().ByName(d.MachineName)
if err != nil {
return err
}
vm := d.Controller.VM(vm_id)
return vm.PoweroffHard()
}

View File

@ -5,7 +5,7 @@ import (
"log"
"github.com/OpenNebula/one/src/oca/go/src/goca"
dyn "github.com/OpenNebula/one/src/oca/go/src/goca/dyntemplate"
dyn "github.com/OpenNebula/one/src/oca/go/src/goca/dynamic"
)
func main() {