Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support for adding, removing, updating machines/devices Workload Annotations #45

Merged
merged 3 commits into from
Jan 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 {
skatsaounis marked this conversation as resolved.
Show resolved Hide resolved
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