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  }