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 }