packer-cn/vendor/github.com/1and1/oneandone-cloudserver-sdk-go/monitoringpolicies.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
}