Skip to content

Commit b285799

Browse files
authored
feat: support metricStore meteringMode (#363)
1 parent 249c6f7 commit b285799

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed

client_interface.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,12 @@ type ClientInterface interface {
160160
DeleteMetricStore(project, name string) error
161161
// GetMetricStore return a metric store.
162162
GetMetricStore(project, name string) (*LogStore, error)
163+
// GetMetricStoreMeteringMode get the metering mode of metric store, eg. ChargeByFunction / ChargeByDataIngest
164+
GetMetricStoreMeteringMode(project string, metricStore string) (*GetMeteringModeResponse, error)
165+
// UpdateMetricStoreMeteringMode update the metering mode of metric store, eg. ChargeByFunction / ChargeByDataIngest
166+
//
167+
// Warning: this method may affect your billings, for more details ref: https://www.aliyun.com/price/detail/sls
168+
UpdateMetricStoreMeteringMode(project string, metricStore string, meteringMode string) error
163169

164170
// #################### EventStore Operations #####################
165171
// CreateEventStore creates a new event store in SLS.

client_metric_store.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,16 @@ func (c *Client) DeleteMetricStore(project, name string) error {
5353
func (c *Client) GetMetricStore(project, name string) (*LogStore, error) {
5454
return c.GetLogStore(project, name)
5555
}
56+
57+
// GetMetricStoreMeteringMode get the metering mode of metric store, eg. ChargeByFunction / ChargeByDataIngest
58+
func (c *Client) GetMetricStoreMeteringMode(project string, metricStore string) (*GetMeteringModeResponse, error) {
59+
ms := convertLogstore(c, project, metricStore)
60+
return ms.GetMetricStoreMeteringMode()
61+
}
62+
63+
// UpdateMetricStoreMeteringMode update the metering mode of metric store, eg. ChargeByFunction / ChargeByDataIngest
64+
// Warning: this method may affect your billings, for more details ref: https://www.aliyun.com/price/detail/sls
65+
func (c *Client) UpdateMetricStoreMeteringMode(project string, metricStore string, meteringMode string) error {
66+
ms := convertLogstore(c, project, metricStore)
67+
return ms.UpdateMetricStoreMeteringMode(meteringMode)
68+
}

log_store.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,3 +1283,53 @@ func (s *LogStore) UpdateMeteringMode(meteringMode string) error {
12831283
defer r.Body.Close()
12841284
return nil
12851285
}
1286+
1287+
func (s *LogStore) GetMetricStoreMeteringMode() (*GetMeteringModeResponse, error) {
1288+
h := map[string]string{
1289+
"x-log-bodyrawsize": "0",
1290+
"Content-Type": "application/json",
1291+
}
1292+
uri := fmt.Sprintf("/metricstores/%s/meteringmode", s.Name)
1293+
r, err := request(s.project, "GET", uri, h, nil)
1294+
if err != nil {
1295+
return nil, err
1296+
}
1297+
defer r.Body.Close()
1298+
data, err := ioutil.ReadAll(r.Body)
1299+
if err != nil {
1300+
return nil, NewBadResponseError("", r.Header, r.StatusCode)
1301+
}
1302+
res := GetMeteringModeResponse{}
1303+
err = json.Unmarshal(data, &res)
1304+
if err != nil {
1305+
return nil, NewBadResponseError(string(data), r.Header, r.StatusCode)
1306+
1307+
}
1308+
return &res, nil
1309+
1310+
}
1311+
1312+
func (s *LogStore) UpdateMetricStoreMeteringMode(meteringMode string) error {
1313+
1314+
body := map[string]string{
1315+
"meteringMode": meteringMode,
1316+
}
1317+
uri := fmt.Sprintf("/metricstores/%s/meteringmode", s.Name)
1318+
requestBody, err := json.Marshal(body)
1319+
if err != nil {
1320+
return fmt.Errorf("cant marshal body:%w", err)
1321+
}
1322+
1323+
h := map[string]string{
1324+
"Content-Type": "application/json",
1325+
"x-log-bodyrawsize": strconv.Itoa(len(requestBody)),
1326+
}
1327+
1328+
r, err := request(s.project, "PUT", uri, h, requestBody)
1329+
1330+
if err != nil {
1331+
return err
1332+
}
1333+
defer r.Body.Close()
1334+
return nil
1335+
}

token_auto_update_client.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,26 @@ func (c *TokenAutoUpdateClient) UpdateLogStoreMeteringMode(project string, logst
361361
return
362362
}
363363

364+
func (c *TokenAutoUpdateClient) GetMetricStoreMeteringMode(project string, metricStore string) (res *GetMeteringModeResponse, err error) {
365+
for i := 0; i < c.maxTryTimes; i++ {
366+
res, err = c.logClient.GetMetricStoreMeteringMode(project, metricStore)
367+
if !c.processError(err) {
368+
return
369+
}
370+
}
371+
return
372+
}
373+
374+
func (c *TokenAutoUpdateClient) UpdateMetricStoreMeteringMode(project string, metricStore string, meteringMode string) (err error) {
375+
for i := 0; i < c.maxTryTimes; i++ {
376+
err = c.logClient.UpdateMetricStoreMeteringMode(project, metricStore, meteringMode)
377+
if !c.processError(err) {
378+
return
379+
}
380+
}
381+
return
382+
}
383+
364384
func (c *TokenAutoUpdateClient) ListMachines(project, machineGroupName string) (ms []*Machine, total int, err error) {
365385
for i := 0; i < c.maxTryTimes; i++ {
366386
ms, total, err = c.logClient.ListMachines(project, machineGroupName)

0 commit comments

Comments
 (0)