github.com/IBM-Cloud/bluemix-go@v0.0.0-20240314082800-4e02a69b84b2/api/container/containerv2/ob_monitoring.go (about)

     1  package containerv2
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/IBM-Cloud/bluemix-go/client"
     7  )
     8  
     9  const (
    10  	resourceAccount = "X-Auth-Resource-Account"
    11  )
    12  
    13  //MonitoringTargetHeader ...
    14  type MonitoringTargetHeader struct {
    15  	AccountID string
    16  }
    17  
    18  //ToMap ...
    19  func (c MonitoringTargetHeader) ToMap() map[string]string {
    20  	m := make(map[string]string, 2)
    21  	m[resourceAccount] = c.AccountID
    22  	return m
    23  }
    24  
    25  //MonitoringCreateRequest ...
    26  type MonitoringCreateRequest struct {
    27  	Cluster         string `json:"cluster"`
    28  	IngestionKey    string `json:"ingestionKey,omitempty"`
    29  	SysidigInstance string `json:"instance"`
    30  	PrivateEndpoint bool   `json:"privateEndpoint,omitempty"`
    31  }
    32  
    33  //MonitoringCreateResponse ...
    34  type MonitoringCreateResponse struct {
    35  	DaemonsetName   string `json:"daemonsetName"`
    36  	IngestionKey    string `json:"ingestionKey"`
    37  	InstanceID      string `json:"instanceId"`
    38  	InstanceName    string `json:"instanceName"`
    39  	PrivateEndpoint bool   `json:"privateEndpoint"`
    40  }
    41  
    42  //MonitoringUpdateRequest ...
    43  type MonitoringUpdateRequest struct {
    44  	Cluster         string `json:"cluster"`
    45  	IngestionKey    string `json:"ingestionKey"`
    46  	Instance        string `json:"instance"`
    47  	NewInstance     string `json:"newInstance"`
    48  	PrivateEndpoint bool   `json:"privateEndpoint"`
    49  }
    50  
    51  //MonitoringUpdateResponse ...
    52  type MonitoringUpdateResponse struct {
    53  	AgentKey        string `json:"agentKey"`
    54  	AgentNamespace  string `json:"agentNamespace"`
    55  	CRN             string `json:"crn"`
    56  	DaemonsetName   string `json:"daemonsetName"`
    57  	DiscoveredAgent bool   `json:"discoveredAgent"`
    58  	InstanceID      string `json:"instanceId"`
    59  	InstanceName    string `json:"instanceName"`
    60  	Namespace       string `json:"namespace"`
    61  	PrivateEndpoint bool   `json:"privateEndpoint"`
    62  }
    63  
    64  //MonitoringInfo ...
    65  type MonitoringInfo struct {
    66  	AgentKey        string `json:"agentKey"`
    67  	AgentNamespace  string `json:"agentNamespace"`
    68  	CRN             string `json:"crn"`
    69  	DaemonsetName   string `json:"daemonsetName"`
    70  	DiscoveredAgent bool   `json:"discoveredAgent"`
    71  	InstanceID      string `json:"instanceId"`
    72  	InstanceName    string `json:"instanceName"`
    73  	Namespace       string `json:"namespace"`
    74  	PrivateEndpoint bool   `json:"privateEndpoint"`
    75  }
    76  
    77  //MonitoringDeleteRequest ...
    78  type MonitoringDeleteRequest struct {
    79  	Cluster  string `json:"cluster"`
    80  	Instance string `json:"instance"`
    81  }
    82  
    83  //Monitoring interface
    84  type Monitoring interface {
    85  	CreateMonitoringConfig(params MonitoringCreateRequest, target MonitoringTargetHeader) (MonitoringCreateResponse, error)
    86  	GetMonitoringConfig(clusterName string, monitoringInstance string, target MonitoringTargetHeader) (*MonitoringInfo, error)
    87  	ListAllMonitors(clusterName string, target MonitoringTargetHeader) ([]MonitoringInfo, error)
    88  	UpdateMonitoringConfig(params MonitoringUpdateRequest, target MonitoringTargetHeader) (MonitoringUpdateResponse, error)
    89  	DeleteMonitoringConfig(params MonitoringDeleteRequest, target MonitoringTargetHeader) (interface{}, error)
    90  }
    91  type monitoring struct {
    92  	client *client.Client
    93  }
    94  
    95  func newMonitoringAPI(c *client.Client) Monitoring {
    96  	return &monitoring{
    97  		client: c,
    98  	}
    99  }
   100  
   101  //CreateMonitoringConfig ...
   102  //Create a Sysdig monitoring configuration for a cluster.
   103  func (r *monitoring) CreateMonitoringConfig(params MonitoringCreateRequest, target MonitoringTargetHeader) (MonitoringCreateResponse, error) {
   104  	var monitoring MonitoringCreateResponse
   105  	_, err := r.client.Post("/v2/observe/monitoring/createConfig", params, &monitoring, target.ToMap())
   106  	return monitoring, err
   107  }
   108  
   109  //GetMonitoringConfig ...
   110  //Show the details of an existing Sysdig monitoring configuration.
   111  func (r *monitoring) GetMonitoringConfig(clusterName, monitoringInstance string, target MonitoringTargetHeader) (*MonitoringInfo, error) {
   112  	monitoringInfo := &MonitoringInfo{}
   113  	rawURL := fmt.Sprintf("/v2/observe/monitoring/getConfig?cluster=%s&instance=%s", clusterName, monitoringInstance)
   114  	_, err := r.client.Get(rawURL, &monitoringInfo, target.ToMap())
   115  	if err != nil {
   116  		return nil, err
   117  	}
   118  	return monitoringInfo, err
   119  }
   120  
   121  //ListAllMonitors ...
   122  //List all Sysdig monitoring configurations for a cluster.
   123  func (r *monitoring) ListAllMonitors(clusterName string, target MonitoringTargetHeader) ([]MonitoringInfo, error) {
   124  	monitors := []MonitoringInfo{}
   125  	rawURL := fmt.Sprintf("v2/observe/monitoring/getConfigs?cluster=%s", clusterName)
   126  	_, err := r.client.Get(rawURL, &monitors, target.ToMap())
   127  	if err != nil {
   128  		return nil, err
   129  	}
   130  	return monitors, nil
   131  }
   132  
   133  //UpdateMonitoringConfig ...
   134  //Update a Sysdig monitoring configuration in the cluster.
   135  func (r *monitoring) UpdateMonitoringConfig(params MonitoringUpdateRequest, target MonitoringTargetHeader) (MonitoringUpdateResponse, error) {
   136  	var monitoring MonitoringUpdateResponse
   137  	_, err := r.client.Post("/v2/observe/monitoring/modifyConfig", params, &monitoring, target.ToMap())
   138  	return monitoring, err
   139  }
   140  
   141  //DeleteMonitoringConfig ...
   142  //Remove a Sysdig monitoring configuration from a cluster.
   143  func (r *monitoring) DeleteMonitoringConfig(params MonitoringDeleteRequest, target MonitoringTargetHeader) (interface{}, error) {
   144  	var response interface{}
   145  	_, err := r.client.Post("/v2/observe/monitoring/removeConfig", params, &response, target.ToMap())
   146  	if err != nil {
   147  		return response, err
   148  	}
   149  	return response, err
   150  
   151  }