/* This is a *low level* function that access a MAAS Server and returns a MAASObject referring to a single MAAS managed node. The function takes a pointer to an already active MAASObject as well as a system_id and returns a MAASObject array and an error code. */ func maasGetSingleNode(maas *gomaasapi.MAASObject, system_id string) (gomaasapi.MAASObject, error) { log.Printf("[DEBUG] [maasGetSingleNode] Getting a node (%s) from MAAS\n", system_id) nodeObject, err := maas.GetSubObject("nodes").GetSubObject(system_id).Get() if err != nil { log.Printf("[ERROR] [maasGetSingleNode] Unable to get node (%s) from MAAS\n", system_id) return gomaasapi.MAASObject{}, err } return nodeObject, nil }
func maasReleaseNode(maas *gomaasapi.MAASObject, system_id string) error { log.Printf("[DEBUG] [maasReleaseNode] Releasing node: %s", system_id) _, err := maas.GetSubObject("nodes").GetSubObject(system_id).CallPost("release", url.Values{}) if err != nil { log.Printf("[DEBUG] [maasReleaseNode] Unable to release node (%s)", system_id) return err } return nil }
/* This is a *low level* function that attempts to acquire a MAAS managed node for future deployment. */ func maasAllocateNodes(maas *gomaasapi.MAASObject, params url.Values) (gomaasapi.MAASObject, error) { log.Printf("[DEBUG] [maasAllocateNodes] Allocating one or more nodes with following params: %+v", params) nodeObject, err := maas.GetSubObject("nodes").CallPost("acquire", params) if err != nil { log.Printf("[ERROR] [maasAllocateNodes] Unable to acquire a node ... bailing") return gomaasapi.MAASObject{}, err } return nodeObject.GetMAASObject() }
/* This is a *low level* function that access a MAAS Server and returns an array of MAASObject The function takes a pointer to an already active MAASObject and returns a JSONObject array and an error code. */ func maasListAllNodes(maas *gomaasapi.MAASObject) ([]gomaasapi.JSONObject, error) { nodeListing := maas.GetSubObject("nodes") log.Printf("[DEBUG] [maasListAllNodes] Fetching list of nodes...\n") listNodeObjects, err := nodeListing.CallGet("list", url.Values{}) if err != nil { log.Printf("[ERROR] [maasListAllNodes] Unable to get list of nodes ...\n") return nil, err } listNodes, err := listNodeObjects.GetArray() if err != nil { log.Printf("[ERROR] [maasListAllNodes] Unable to get the node list array ...\n") return nil, err } return listNodes, err }