Skip to content

Commit

Permalink
feat: support for adding, removing, updating machines/devices Workloa…
Browse files Browse the repository at this point in the history
…d Annotations (#45)
  • Loading branch information
sachin120 committed Jan 6, 2024
1 parent 2d60571 commit a1acb1f
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 17 deletions.
1 change: 1 addition & 0 deletions api/device.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ type Device interface {
Get(systemID string) (*entity.Device, error)
Update(systemID string, deviceParams *entity.DeviceUpdateParams) (*entity.Device, error)
Delete(systemID string) error
SetWorkloadAnnotations(systemID string, params map[string]string) (*entity.Device, error)
}
1 change: 1 addition & 0 deletions api/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ type Machine interface {
PowerOn(systemID string, params *entity.MachinePowerOnParams) (*entity.Machine, error)
PowerOff(systemID string, params *entity.MachinePowerOffParams) (*entity.Machine, error)
GetPowerState(systemID string) (*entity.MachinePowerState, error)
SetWorkloadAnnotations(systemID string, params map[string]string) (*entity.Machine, error)
}
16 changes: 15 additions & 1 deletion client/device.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
//nolint:dupl // disable dupl check on client for now
package client

import (
Expand Down Expand Up @@ -48,3 +47,18 @@ func (d *Device) Update(systemID string, deviceParams *entity.DeviceUpdateParams
func (d *Device) Delete(systemID string) error {
return d.client(systemID).Delete()
}

// SetWorkloadAnnotations add, modify or remove workload annotations for given Device
func (d *Device) SetWorkloadAnnotations(systemID string, params map[string]string) (*entity.Device, error) {
qsp := url.Values{}
for k, v := range params {
qsp.Add(k, v)
}

device := new(entity.Device)
err := d.client(systemID).Post("set_workload_annotations", qsp, func(data []byte) error {
return json.Unmarshal(data, &device)
})

return device, err
}
15 changes: 15 additions & 0 deletions client/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,3 +171,18 @@ func (m *Machine) GetPowerState(systemID string) (*entity.MachinePowerState, err

return ps, err
}

// SetWorkloadAnnotations add, modify or remove workload annotations for given Machine
func (m *Machine) SetWorkloadAnnotations(systemID string, params map[string]string) (*entity.Machine, error) {
qsp := url.Values{}
for k, v := range params {
qsp.Add(k, v)
}

machine := new(entity.Machine)
err := m.client(systemID).Post("set_workload_annotations", qsp, func(data []byte) error {
return json.Unmarshal(data, &machine)
})

return machine, err
}
33 changes: 17 additions & 16 deletions entity/device.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,23 @@ package entity
import "net"

type Device struct {
OwnerData interface{} `json:"owner_data,omitempty"`
Zone Zone `json:"zone,omitempty"`
FQDN string `json:"fqdn,omitempty"`
Hostname string `json:"hostname,omitempty"`
SystemID string `json:"system_id,omitempty"`
Owner string `json:"owner,omitempty"`
Description string `json:"description,omitempty"`
Parent string `json:"parent,omitempty"`
ResourceURI string `json:"resource_uri,omitempty"`
NodeTypeName string `json:"node_type_name,omitempty"`
IPAddresses []net.IP `json:"ip_addresses,omitempty"`
InterfaceSet []NetworkInterface `json:"interface_set,omitempty"`
TagNames []string `json:"tag_names,omitempty"`
Domain Domain `json:"domain,omitempty"`
NodeType int `json:"node_type,omitempty"`
AddressTTL int `json:"address_ttl,omitempty"`
OwnerData interface{} `json:"owner_data,omitempty"`
Zone Zone `json:"zone,omitempty"`
FQDN string `json:"fqdn,omitempty"`
Hostname string `json:"hostname,omitempty"`
SystemID string `json:"system_id,omitempty"`
Owner string `json:"owner,omitempty"`
Description string `json:"description,omitempty"`
Parent string `json:"parent,omitempty"`
ResourceURI string `json:"resource_uri,omitempty"`
NodeTypeName string `json:"node_type_name,omitempty"`
WorkloadAnnotations map[string]string `json:"workload_annotations,omitempty"`
IPAddresses []net.IP `json:"ip_addresses,omitempty"`
InterfaceSet []NetworkInterface `json:"interface_set,omitempty"`
TagNames []string `json:"tag_names,omitempty"`
Domain Domain `json:"domain,omitempty"`
NodeType int `json:"node_type,omitempty"`
AddressTTL int `json:"address_ttl,omitempty"`
}

type DeviceCreateParams struct {
Expand Down
1 change: 1 addition & 0 deletions entity/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ type Machine struct {
HwLastSync MAASTime `json:"last_sync,omitempty"`
OwnerData interface{} `json:"owner_data,omitempty"`
HardwareInfo map[string]string `json:"hardware_info,omitempty"`
WorkloadAnnotations map[string]string `json:"workload_annotations,omitempty"`
OSystem string `json:"osystem,omitempty"`
FQDN string `json:"fqdn,omitempty"`
StatusName string `json:"status_name,omitempty"`
Expand Down

0 comments on commit a1acb1f

Please sign in to comment.