306 lines
9.3 KiB
Go
306 lines
9.3 KiB
Go
package oneandone
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
type MonitoringPolicy struct {
|
|
ApiPtr
|
|
idField
|
|
Name string `json:"name,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
State string `json:"state,omitempty"`
|
|
Default *int `json:"default,omitempty"`
|
|
CreationDate string `json:"creation_date,omitempty"`
|
|
Email string `json:"email,omitempty"`
|
|
Agent bool `json:"agent"`
|
|
Servers []Identity `json:"servers,omitempty"`
|
|
Thresholds *MonitoringThreshold `json:"thresholds,omitempty"`
|
|
Ports []MonitoringPort `json:"ports,omitempty"`
|
|
Processes []MonitoringProcess `json:"processes,omitempty"`
|
|
CloudPanelId string `json:"cloudpanel_id,omitempty"`
|
|
}
|
|
|
|
type MonitoringThreshold struct {
|
|
Cpu *MonitoringLevel `json:"cpu,omitempty"`
|
|
Ram *MonitoringLevel `json:"ram,omitempty"`
|
|
Disk *MonitoringLevel `json:"disk,omitempty"`
|
|
Transfer *MonitoringLevel `json:"transfer,omitempty"`
|
|
InternalPing *MonitoringLevel `json:"internal_ping,omitempty"`
|
|
}
|
|
|
|
type MonitoringLevel struct {
|
|
Warning *MonitoringValue `json:"warning,omitempty"`
|
|
Critical *MonitoringValue `json:"critical,omitempty"`
|
|
}
|
|
|
|
type MonitoringValue struct {
|
|
Value int `json:"value"`
|
|
Alert bool `json:"alert"`
|
|
}
|
|
|
|
type MonitoringPort struct {
|
|
idField
|
|
Protocol string `json:"protocol,omitempty"`
|
|
Port int `json:"port"`
|
|
AlertIf string `json:"alert_if,omitempty"`
|
|
EmailNotification bool `json:"email_notification"`
|
|
}
|
|
|
|
type MonitoringProcess struct {
|
|
idField
|
|
Process string `json:"process,omitempty"`
|
|
AlertIf string `json:"alert_if,omitempty"`
|
|
EmailNotification bool `json:"email_notification"`
|
|
}
|
|
|
|
// GET /monitoring_policies
|
|
func (api *API) ListMonitoringPolicies(args ...interface{}) ([]MonitoringPolicy, error) {
|
|
url, err := processQueryParams(createUrl(api, monitorPolicyPathSegment), args...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := []MonitoringPolicy{}
|
|
err = api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for index, _ := range result {
|
|
result[index].api = api
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// POST /monitoring_policies
|
|
func (api *API) CreateMonitoringPolicy(mp *MonitoringPolicy) (string, *MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
url := createUrl(api, monitorPolicyPathSegment)
|
|
err := api.Client.Post(url, &mp, &result, http.StatusCreated)
|
|
if err != nil {
|
|
return "", nil, err
|
|
}
|
|
result.api = api
|
|
return result.Id, result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}
|
|
func (api *API) GetMonitoringPolicy(mp_id string) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id)
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// DELETE /monitoring_policies/{id}
|
|
func (api *API) DeleteMonitoringPolicy(mp_id string) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id)
|
|
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// PUT /monitoring_policies/{id}
|
|
func (api *API) UpdateMonitoringPolicy(mp_id string, mp *MonitoringPolicy) (*MonitoringPolicy, error) {
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id)
|
|
result := new(MonitoringPolicy)
|
|
err := api.Client.Put(url, &mp, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}/ports
|
|
func (api *API) ListMonitoringPolicyPorts(mp_id string) ([]MonitoringPort, error) {
|
|
result := []MonitoringPort{}
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "ports")
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// POST /monitoring_policies/{id}/ports
|
|
func (api *API) AddMonitoringPolicyPorts(mp_id string, mp_ports []MonitoringPort) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
data := struct {
|
|
Ports []MonitoringPort `json:"ports"`
|
|
}{mp_ports}
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "ports")
|
|
err := api.Client.Post(url, &data, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}/ports/{id}
|
|
func (api *API) GetMonitoringPolicyPort(mp_id string, port_id string) (*MonitoringPort, error) {
|
|
result := new(MonitoringPort)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "ports", port_id)
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// DELETE /monitoring_policies/{id}/ports/{id}
|
|
func (api *API) DeleteMonitoringPolicyPort(mp_id string, port_id string) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "ports", port_id)
|
|
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// PUT /monitoring_policies/{id}/ports/{id}
|
|
func (api *API) ModifyMonitoringPolicyPort(mp_id string, port_id string, mp_port *MonitoringPort) (*MonitoringPolicy, error) {
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "ports", port_id)
|
|
result := new(MonitoringPolicy)
|
|
req := struct {
|
|
Ports *MonitoringPort `json:"ports"`
|
|
}{mp_port}
|
|
err := api.Client.Put(url, &req, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}/processes
|
|
func (api *API) ListMonitoringPolicyProcesses(mp_id string) ([]MonitoringProcess, error) {
|
|
result := []MonitoringProcess{}
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "processes")
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// POST /monitoring_policies/{id}/processes
|
|
func (api *API) AddMonitoringPolicyProcesses(mp_id string, mp_procs []MonitoringProcess) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
request := struct {
|
|
Processes []MonitoringProcess `json:"processes"`
|
|
}{mp_procs}
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "processes")
|
|
err := api.Client.Post(url, &request, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}/processes/{id}
|
|
func (api *API) GetMonitoringPolicyProcess(mp_id string, proc_id string) (*MonitoringProcess, error) {
|
|
result := new(MonitoringProcess)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "processes", proc_id)
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// DELETE /monitoring_policies/{id}/processes/{id}
|
|
func (api *API) DeleteMonitoringPolicyProcess(mp_id string, proc_id string) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "processes", proc_id)
|
|
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// PUT /monitoring_policies/{id}/processes/{id}
|
|
func (api *API) ModifyMonitoringPolicyProcess(mp_id string, proc_id string, mp_proc *MonitoringProcess) (*MonitoringPolicy, error) {
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "processes", proc_id)
|
|
result := new(MonitoringPolicy)
|
|
req := struct {
|
|
Processes *MonitoringProcess `json:"processes"`
|
|
}{mp_proc}
|
|
err := api.Client.Put(url, &req, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}/servers
|
|
func (api *API) ListMonitoringPolicyServers(mp_id string) ([]Identity, error) {
|
|
result := []Identity{}
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "servers")
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// POST /monitoring_policies/{id}/servers
|
|
func (api *API) AttachMonitoringPolicyServers(mp_id string, sids []string) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
request := servers{
|
|
Servers: sids,
|
|
}
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "servers")
|
|
err := api.Client.Post(url, &request, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /monitoring_policies/{id}/servers/{id}
|
|
func (api *API) GetMonitoringPolicyServer(mp_id string, ser_id string) (*Identity, error) {
|
|
result := new(Identity)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "servers", ser_id)
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// DELETE /monitoring_policies/{id}/servers/{id}
|
|
func (api *API) RemoveMonitoringPolicyServer(mp_id string, ser_id string) (*MonitoringPolicy, error) {
|
|
result := new(MonitoringPolicy)
|
|
url := createUrl(api, monitorPolicyPathSegment, mp_id, "servers", ser_id)
|
|
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
func (mp *MonitoringPolicy) GetState() (string, error) {
|
|
in, err := mp.api.GetMonitoringPolicy(mp.Id)
|
|
if in == nil {
|
|
return "", err
|
|
}
|
|
return in.State, err
|
|
}
|