-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add events API endpoint interaction (#54)
- Loading branch information
Showing
6 changed files
with
95 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package api | ||
|
||
import "github.com/maas/gomaasclient/entity" | ||
|
||
// Events is an interface for node events | ||
type Events interface { | ||
Get(params *entity.EventParams) (*entity.EventsResp, error) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package client | ||
|
||
import ( | ||
"encoding/json" | ||
|
||
"github.com/google/go-querystring/query" | ||
"github.com/maas/gomaasclient/entity" | ||
) | ||
|
||
// Events implements api.Events | ||
type Events struct { | ||
APIClient APIClient | ||
} | ||
|
||
func (e *Events) client() APIClient { | ||
return e.APIClient.GetSubObject("events") | ||
} | ||
|
||
// Get events for nodes | ||
func (e *Events) Get(params *entity.EventParams) (*entity.EventsResp, error) { | ||
qsp, err := query.Values(params) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
events := &entity.EventsResp{} | ||
err = e.client().Get("query", qsp, func(data []byte) error { | ||
return json.Unmarshal(data, events) | ||
}) | ||
|
||
return events, err | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
// Package event contains entities related to events. | ||
package event |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package event | ||
|
||
// LogLevel correlates to a log level for MAAS events. | ||
type LogLevel string | ||
|
||
// Log levels referring from MAAS server https://github.com/maas/maas/blob/master/src/maasserver/models/eventtype.py#L25 | ||
const ( | ||
AUDIT LogLevel = "AUDIT" | ||
CRITICAL LogLevel = "CRITICAL" | ||
DEBUG LogLevel = "DEBUG" | ||
ERROR LogLevel = "ERROR" | ||
WARNING LogLevel = "WARNING" | ||
INFO LogLevel = "INFO" | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package entity | ||
|
||
import "github.com/maas/gomaasclient/entity/event" | ||
|
||
// Event represents an event for MAAS node | ||
type Event struct { | ||
UserName string `json:"username,omitempty"` | ||
Node string `json:"node,omitempty"` | ||
Hostname string `json:"hostname,omitempty"` | ||
Created string `json:"created,omitempty"` | ||
Type string `json:"type,omitempty"` | ||
Description string `json:"description,omitempty"` | ||
Level event.LogLevel `json:"level,omitempty"` | ||
ID int `json:"id,omitempty"` | ||
} | ||
|
||
// EventsResp represents the MAAS Events endpoint | ||
type EventsResp struct { | ||
NextURI string `json:"next_uri,omitempty"` | ||
PrevURI string `json:"prev_uri,omitempty"` | ||
Events []Event `json:"events,omitempty"` | ||
Count int `json:"count,omitempty"` | ||
} | ||
|
||
// EventParams enumerates the parameters for the event get operation | ||
type EventParams struct { | ||
Hostname string `url:"hostname,omitempty"` | ||
MACAddress string `url:"mac_address,omitempty"` | ||
ID string `url:"id,omitempty"` | ||
Zone string `url:"zone,omitempty"` | ||
AgentName string `url:"agent_name,omitempty"` | ||
Limit string `url:"limit,omitempty"` | ||
Before string `url:"before,omitempty"` | ||
After string `url:"after,omitempty"` | ||
Owner string `url:"owner,omitempty"` | ||
Level event.LogLevel `url:"level,omitempty"` | ||
} |