github.com/IBM-Cloud/bluemix-go@v0.0.0-20240314082800-4e02a69b84b2/api/cis/cisv1/monitors.go (about) 1 package cisv1 2 3 import ( 4 "fmt" 5 6 "github.com/IBM-Cloud/bluemix-go/client" 7 ) 8 9 type Monitor struct { 10 Id string `json:"id"` 11 Path string `json:"path,omitempty"` 12 Description string `json:"description"` 13 ExpBody string `json:"expected_body,omitempty"` 14 ExpCodes string `json:"expected_codes,omitempty"` 15 MonType string `json:"type,omitempty"` 16 Method string `json:"method,omitempty"` 17 Timeout int `json:"timeout,omitempty"` 18 Retries int `json:"retries,omitempty"` 19 Interval int `json:"interval,omitempty"` 20 FollowRedirects bool `json:"follow_redirects,omitempty"` 21 AllowInsecure bool `json:"allow_insecure,omitempty"` 22 Port int `json:"port,omitempty"` 23 } 24 25 type MonitorResults struct { 26 MonitorList []Monitor `json:"result"` 27 ResultsInfo ResultsCount `json:"result_info"` 28 Success bool `json:"success"` 29 Errors []Error `json:"errors"` 30 } 31 32 type MonitorResult struct { 33 Monitor Monitor `json:"result"` 34 Success bool `json:"success"` 35 Errors []Error `json:"errors"` 36 Messages []string `json:"messages"` 37 } 38 39 type MonitorBody struct { 40 Description string `json:"description"` 41 ExpCodes string `json:"expected_codes,omitempty"` 42 ExpBody string `json:"expected_body,omitempty"` 43 Path string `json:"path,omitempty"` 44 MonType string `json:"type,omitempty"` 45 Method string `json:"method,omitempty"` 46 Timeout int `json:"timeout,omitempty"` 47 Retries int `json:"retries,omitempty"` 48 Interval int `json:"interval,omitempty"` 49 FollowRedirects bool `json:"follow_redirects,omitempty"` 50 AllowInsecure bool `json:"allow_insecure,omitempty"` 51 Port int `json:"port,omitempty"` 52 } 53 54 type MonitorDelete struct { 55 Result struct { 56 MonitorId string 57 } `json:"result"` 58 Success bool `json:"success"` 59 Errors []Error `json:"errors"` 60 Messages []string `json:"messages"` 61 } 62 63 type Monitors interface { 64 ListMonitors(cisId string) ([]Monitor, error) 65 GetMonitor(cisId string, monitorId string) (*Monitor, error) 66 CreateMonitor(cisId string, monitorBody MonitorBody) (*Monitor, error) 67 DeleteMonitor(cisId string, monitorId string) error 68 UpdateMonitor(cisId string, monitorId string, monitorBody MonitorBody) (*Monitor, error) 69 } 70 71 type monitors struct { 72 client *client.Client 73 } 74 75 func newMonitorAPI(c *client.Client) Monitors { 76 return &monitors{ 77 client: c, 78 } 79 } 80 81 func (r *monitors) ListMonitors(cisId string) ([]Monitor, error) { 82 monitorResults := MonitorResults{} 83 rawURL := fmt.Sprintf("/v1/%s/load_balancers/monitors/", cisId) 84 _, err := r.client.Get(rawURL, &monitorResults) 85 if err != nil { 86 return nil, err 87 } 88 return monitorResults.MonitorList, err 89 } 90 91 func (r *monitors) GetMonitor(cisId string, monitorId string) (*Monitor, error) { 92 monitorResult := MonitorResult{} 93 rawURL := fmt.Sprintf("/v1/%s/load_balancers/monitors/%s", cisId, monitorId) 94 _, err := r.client.Get(rawURL, &monitorResult, nil) 95 if err != nil { 96 return nil, err 97 } 98 return &monitorResult.Monitor, nil 99 } 100 101 func (r *monitors) DeleteMonitor(cisId string, monitorId string) error { 102 rawURL := fmt.Sprintf("/v1/%s/load_balancers/monitors/%s", cisId, monitorId) 103 _, err := r.client.Delete(rawURL) 104 if err != nil { 105 return err 106 } 107 return nil 108 } 109 110 func (r *monitors) CreateMonitor(cisId string, monitorBody MonitorBody) (*Monitor, error) { 111 monitorResult := MonitorResult{} 112 rawURL := fmt.Sprintf("/v1/%s/load_balancers/monitors/", cisId) 113 _, err := r.client.Post(rawURL, &monitorBody, &monitorResult) 114 if err != nil { 115 return nil, err 116 } 117 return &monitorResult.Monitor, nil 118 } 119 120 func (r *monitors) UpdateMonitor(cisId string, monitorId string, monitorBody MonitorBody) (*Monitor, error) { 121 monitorResult := MonitorResult{} 122 rawURL := fmt.Sprintf("/v1/%s/load_balancers/monitors/%s", cisId, monitorId) 123 _, err := r.client.Put(rawURL, &monitorBody, &monitorResult) 124 if err != nil { 125 return nil, err 126 } 127 return &monitorResult.Monitor, nil 128 }