From 9948340a0bd7f1c549d8bb0d6b3b894eac61c8cf Mon Sep 17 00:00:00 2001 From: Sachin Shingare Date: Thu, 21 Dec 2023 08:22:29 +0000 Subject: [PATCH] Add mahine Power On/Off Operations --- api/machine.go | 3 +++ client/machine.go | 27 +++++++++++++++++++++++++++ entity/machine.go | 5 +++++ 3 files changed, 35 insertions(+) diff --git a/api/machine.go b/api/machine.go index 62952f8..6eb8c56 100644 --- a/api/machine.go +++ b/api/machine.go @@ -15,4 +15,7 @@ type Machine interface { Lock(systemID string, comment string) (*entity.Machine, error) ClearDefaultGateways(systemID string) (*entity.Machine, error) GetPowerParameters(systemID string) (map[string]interface{}, error) + PowerOn(systemID string) (*entity.Machine, error) + PowerOff(systemID string) (*entity.Machine, error) + GetPowerState(systemID string) (*entity.MachinePowerState, error) } diff --git a/client/machine.go b/client/machine.go index 13fe63a..aef40c6 100644 --- a/client/machine.go +++ b/client/machine.go @@ -131,3 +131,30 @@ func (m *Machine) GetPowerParameters(systemID string) (map[string]interface{}, e return params, err } + +// PowerOn machine +func (m *Machine) PowerOn(systemID string) (*entity.Machine, error) { + machine := new(entity.Machine) + err := m.client(systemID).Post("power_on", url.Values{}, func(data []byte) error { + return json.Unmarshal(data, machine) + }) + return machine, err +} + +// PowerOff machine +func (m *Machine) PowerOff(systemID string) (*entity.Machine, error) { + machine := new(entity.Machine) + err := m.client(systemID).Post("power_off", url.Values{}, func(data []byte) error { + return json.Unmarshal(data, machine) + }) + return machine, err +} + +// GetPowerState of the machine +func (m *Machine) GetPowerState(systemID string) (*entity.MachinePowerState, error) { + ps := new(entity.MachinePowerState) + err := m.client(systemID).Get("query_power_state", url.Values{}, func(data []byte) error { + return json.Unmarshal(data, ps) + }) + return ps, err +} diff --git a/entity/machine.go b/entity/machine.go index ea0f59a..1eb35f4 100644 --- a/entity/machine.go +++ b/entity/machine.go @@ -191,6 +191,11 @@ type MachineServiceSet struct { StatusInfo string `json:"status_info,omitempty"` } +// MachinePowerState represent current machines power state +type MachinePowerState struct { + State string `json:"state,omitempty"` +} + // MachineParams enumerates the parameters for the machine update operation type MachineParams struct { PowerType string `url:"power_type,omitempty"`