lib: Patch out the mess when using our magic option

This commit is contained in:
James Shubin
2025-03-11 04:40:03 -04:00
parent dce83efa96
commit 87d8533bd0

View File

@@ -50,7 +50,9 @@ import (
_ "github.com/purpleidea/mgmt/engine/resources" // let register's run _ "github.com/purpleidea/mgmt/engine/resources" // let register's run
"github.com/purpleidea/mgmt/etcd" "github.com/purpleidea/mgmt/etcd"
"github.com/purpleidea/mgmt/etcd/chooser" "github.com/purpleidea/mgmt/etcd/chooser"
etcdClient "github.com/purpleidea/mgmt/etcd/client"
"github.com/purpleidea/mgmt/etcd/deployer" "github.com/purpleidea/mgmt/etcd/deployer"
etcdInterfaces "github.com/purpleidea/mgmt/etcd/interfaces"
"github.com/purpleidea/mgmt/gapi" "github.com/purpleidea/mgmt/gapi"
"github.com/purpleidea/mgmt/gapi/empty" "github.com/purpleidea/mgmt/gapi/empty"
"github.com/purpleidea/mgmt/pgp" "github.com/purpleidea/mgmt/pgp"
@@ -504,6 +506,8 @@ func (obj *Main) Run() error {
} else { } else {
Logf("seeds(%d): %+v", len(obj.seeds), obj.seeds) Logf("seeds(%d): %+v", len(obj.seeds), obj.seeds)
} }
var client etcdInterfaces.Client
if !obj.NoMagic {
obj.embdEtcd = &etcd.EmbdEtcd{ obj.embdEtcd = &etcd.EmbdEtcd{
Hostname: hostname, Hostname: hostname,
Seeds: obj.seeds, Seeds: obj.seeds,
@@ -569,12 +573,30 @@ func (obj *Main) Run() error {
return err return err
} }
// TODO: should getting a client from EmbdEtcd already come with the NS? // TODO: should getting a client from EmbdEtcd already come with the NS?
etcdClient, err := obj.embdEtcd.MakeClientFromNamespace(NS) client, err = obj.embdEtcd.MakeClientFromNamespace(NS)
if err != nil { if err != nil {
return errwrap.Wrapf(err, "make Client failed") return errwrap.Wrapf(err, "make Client failed")
} }
} else {
c := etcdClient.NewClientFromSeedsNamespace(
obj.Seeds, // endpoints
NS,
)
if err := c.Init(); err != nil {
return errwrap.Wrapf(err, "client Init failed")
}
defer func() {
err := errwrap.Wrapf(c.Close(), "client Close failed")
if err != nil {
// TODO: cause the final exit code to be non-zero
Logf("client cleanup error: %+v", err)
}
}()
client = c
}
simpleDeploy := &deployer.SimpleDeploy{ simpleDeploy := &deployer.SimpleDeploy{
Client: etcdClient, Client: client,
Debug: obj.Debug, Debug: obj.Debug,
Logf: func(format string, v ...interface{}) { Logf: func(format string, v ...interface{}) {
obj.Logf("deploy: "+format, v...) obj.Logf("deploy: "+format, v...)
@@ -608,7 +630,7 @@ func (obj *Main) Run() error {
// an etcd component from the etcd package added in. // an etcd component from the etcd package added in.
world := &etcd.World{ world := &etcd.World{
Hostname: hostname, Hostname: hostname,
Client: etcdClient, Client: client,
MetadataPrefix: MetadataPrefix, MetadataPrefix: MetadataPrefix,
StoragePrefix: StoragePrefix, StoragePrefix: StoragePrefix,
StandaloneFs: obj.DeployFs, // used for static deploys StandaloneFs: obj.DeployFs, // used for static deploys