Get machine state from go impl
This commit is contained in:
parent
b4fbf76a33
commit
6dfca17d54
@ -187,8 +187,11 @@ func (m *Machine) ConnectionInfo() (info *core.ConnectionInfo, err error) {
|
||||
|
||||
// MachineState implements core.Machine
|
||||
func (m *Machine) MachineState() (state *core.MachineState, err error) {
|
||||
var result core.MachineState
|
||||
return &result, mapstructure.Decode(m.machine.State, &result)
|
||||
p, err := m.Provider()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return p.State()
|
||||
}
|
||||
|
||||
// SetMachineState implements core.Machine
|
||||
|
||||
@ -79,6 +79,14 @@ func (t *Target) SetName(value string) (err error) {
|
||||
|
||||
// Provider implements core.Target
|
||||
func (t *Target) Provider() (p core.Provider, err error) {
|
||||
defer func() {
|
||||
if p != nil {
|
||||
err = seedPlugin(p, t)
|
||||
if err == nil {
|
||||
t.cache.Register("provider", p)
|
||||
}
|
||||
}
|
||||
}()
|
||||
i := t.cache.Get("provider")
|
||||
if i != nil {
|
||||
p = i.(core.Provider)
|
||||
@ -95,15 +103,6 @@ func (t *Target) Provider() (p core.Provider, err error) {
|
||||
}
|
||||
p = provider.Value.(core.Provider)
|
||||
|
||||
if err = seedPlugin(p, t); err != nil {
|
||||
t.logger.Error("failed to seed provider plugin",
|
||||
"error", err,
|
||||
)
|
||||
|
||||
return
|
||||
}
|
||||
t.cache.Register("provider", p)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -136,14 +136,7 @@ module Vagrant
|
||||
end
|
||||
|
||||
def state
|
||||
# TODO: this should be using the vagrant go core (client.machine_state).
|
||||
# Since there is currently no way to access providers in the go machine
|
||||
# leave this here for now. Once the provider has been ported, this should
|
||||
# be updated.
|
||||
s = @provider.state
|
||||
raise Errors::MachineStateInvalid if !s.is_a?(MachineState)
|
||||
client.set_machine_state(s) unless s.nil?
|
||||
return s
|
||||
client.machine_state
|
||||
end
|
||||
|
||||
def ssh_info
|
||||
|
||||
@ -110,7 +110,7 @@ module VagrantPlugins
|
||||
def state_spec(*_)
|
||||
funcspec(
|
||||
args: [
|
||||
SDK::Args::Target::Machine,
|
||||
SDK::Args::Target
|
||||
],
|
||||
result: SDK::Args::Target::Machine::State,
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user