github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/containerv2/ob_logging.go (about) 1 package containerv2 2 3 import ( 4 "fmt" 5 6 "github.com/IBM-Cloud/bluemix-go/client" 7 ) 8 9 const ( 10 authResourceAccount = "X-Auth-Resource-Account" 11 ) 12 13 //LoggingTargetHeader ... 14 type LoggingTargetHeader struct { 15 AccountID string 16 } 17 18 //ToMap ... 19 func (c LoggingTargetHeader) ToMap() map[string]string { 20 m := make(map[string]string, 2) 21 m[authResourceAccount] = c.AccountID 22 return m 23 } 24 25 //LoggingCreateRequest ... 26 type LoggingCreateRequest struct { 27 Cluster string `json:"cluster"` 28 IngestionKey string `json:"ingestionKey,omitempty"` 29 LoggingInstance string `json:"instance"` 30 PrivateEndpoint bool `json:"privateEndpoint,omitempty"` 31 } 32 33 //LoggingCreateResponse ... 34 type LoggingCreateResponse 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 //LoggingUpdateRequest ... 43 type LoggingUpdateRequest 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 //LoggingUpdateResponse ... 52 type LoggingUpdateResponse 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 //LoggingInfo ... 65 type LoggingInfo 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 //LoggingDeleteRequest ... 78 type LoggingDeleteRequest struct { 79 Cluster string `json:"cluster"` 80 Instance string `json:"instance"` 81 } 82 83 //Logging interface 84 type Logging interface { 85 CreateLoggingConfig(params LoggingCreateRequest, target LoggingTargetHeader) (LoggingCreateResponse, error) 86 GetLoggingConfig(clusterName string, LoggingInstance string, target LoggingTargetHeader) (*LoggingInfo, error) 87 ListLoggingInstances(clusterName string, target LoggingTargetHeader) ([]LoggingInfo, error) 88 UpdateLoggingConfig(params LoggingUpdateRequest, target LoggingTargetHeader) (LoggingUpdateResponse, error) 89 DeleteLoggingConfig(params LoggingDeleteRequest, target LoggingTargetHeader) (interface{}, error) 90 } 91 type logging struct { 92 client *client.Client 93 } 94 95 func newLoggingAPI(c *client.Client) Logging { 96 return &logging{ 97 client: c, 98 } 99 } 100 101 //CreateLoggingConfig ... 102 //Create a Logging configuration for a cluster. 103 func (r *logging) CreateLoggingConfig(params LoggingCreateRequest, target LoggingTargetHeader) (LoggingCreateResponse, error) { 104 var resp LoggingCreateResponse 105 _, err := r.client.Post("/v2/observe/logging/createConfig", params, &resp, target.ToMap()) 106 return resp, err 107 } 108 109 //GetLoggingConfig ... 110 //Show the details of an existing Logging configuration. 111 func (r *logging) GetLoggingConfig(clusterName, loggingInstance string, target LoggingTargetHeader) (*LoggingInfo, error) { 112 loggingInfo := &LoggingInfo{} 113 rawURL := fmt.Sprintf("/v2/observe/logging/getConfig?cluster=%s&instance=%s", clusterName, loggingInstance) 114 _, err := r.client.Get(rawURL, &loggingInfo, target.ToMap()) 115 if err != nil { 116 return nil, err 117 } 118 return loggingInfo, err 119 } 120 121 //ListLoggingInstances... 122 //List all logging configurations for a cluster. 123 func (r *logging) ListLoggingInstances(clusterName string, target LoggingTargetHeader) ([]LoggingInfo, error) { 124 logging := []LoggingInfo{} 125 rawURL := fmt.Sprintf("/v2/observe/logging/getConfigs?cluster=%s", clusterName) 126 _, err := r.client.Get(rawURL, &logging, target.ToMap()) 127 if err != nil { 128 return nil, err 129 } 130 return logging, nil 131 } 132 133 //UpdateLoggingConfig ... 134 //Update a Logging configuration in the cluster. 135 func (r *logging) UpdateLoggingConfig(params LoggingUpdateRequest, target LoggingTargetHeader) (LoggingUpdateResponse, error) { 136 var logging LoggingUpdateResponse 137 _, err := r.client.Post("/v2/observe/logging/modifyConfig", params, &logging, target.ToMap()) 138 return logging, err 139 } 140 141 //DeleteLoggingConfig ... 142 //Remove a Logging configuration from a cluster. 143 func (r *logging) DeleteLoggingConfig(params LoggingDeleteRequest, target LoggingTargetHeader) (interface{}, error) { 144 var response interface{} 145 _, err := r.client.Post("/v2/observe/logging/removeConfig", params, &response, target.ToMap()) 146 if err != nil { 147 return response, err 148 } 149 return response, err 150 }