token_auto_update_client.go (1,924 lines of code) (raw):

package sls import ( "errors" "net/http" "sync" "time" "github.com/go-kit/kit/log/level" ) type TokenAutoUpdateClient struct { logClient ClientInterface shutdown <-chan struct{} closeFlag bool tokenUpdateFunc UpdateTokenFunction maxTryTimes int waitIntervalMin time.Duration waitIntervalMax time.Duration updateTokenIntervalMin time.Duration nextExpire time.Time lock sync.Mutex lastFetch time.Time lastRetryFailCount int lastRetryInterval time.Duration } var errSTSFetchHighFrequency = errors.New("sts token fetch frequency is too high") func (c *TokenAutoUpdateClient) flushSTSToken() { for { nowTime := time.Now() c.lock.Lock() sleepTime := c.nextExpire.Sub(nowTime) if sleepTime < time.Duration(time.Minute) { sleepTime = time.Duration(time.Second * 30) } else if sleepTime < time.Duration(time.Minute*10) { sleepTime = sleepTime / 10 * 7 } else if sleepTime < time.Duration(time.Hour) { sleepTime = sleepTime / 10 * 6 } else { sleepTime = sleepTime / 10 * 5 } c.lock.Unlock() if IsDebugLevelMatched(1) { level.Info(Logger).Log("msg", "next fetch sleep interval : ", sleepTime.String()) } trigger := time.After(sleepTime) select { case <-trigger: err := c.fetchSTSToken() if IsDebugLevelMatched(1) { level.Info(Logger).Log("msg", "fetch sts token done, error : ", err) } case <-c.shutdown: if IsDebugLevelMatched(1) { level.Info(Logger).Log("msg", "receive shutdown signal, exit flushSTSToken") } return } if c.closeFlag { if IsDebugLevelMatched(1) { level.Info(Logger).Log("msg", "close flag is true, exit flushSTSToken") } return } } } func (c *TokenAutoUpdateClient) fetchSTSToken() error { nowTime := time.Now() skip := false sleepTime := time.Duration(0) c.lock.Lock() if nowTime.Sub(c.lastFetch) < c.updateTokenIntervalMin { skip = true } else { c.lastFetch = nowTime if c.lastRetryFailCount == 0 { sleepTime = 0 } else { c.lastRetryInterval *= 2 if c.lastRetryInterval < c.waitIntervalMin { c.lastRetryInterval = c.waitIntervalMin } if c.lastRetryInterval >= c.waitIntervalMax { c.lastRetryInterval = c.waitIntervalMax } sleepTime = c.lastRetryInterval } } c.lock.Unlock() if skip { return errSTSFetchHighFrequency } if sleepTime > time.Duration(0) { time.Sleep(sleepTime) } accessKeyID, accessKeySecret, securityToken, expireTime, err := c.tokenUpdateFunc() if err == nil { c.lock.Lock() c.lastRetryFailCount = 0 c.lastRetryInterval = time.Duration(0) c.nextExpire = expireTime c.lock.Unlock() c.logClient.ResetAccessKeyToken(accessKeyID, accessKeySecret, securityToken) if IsDebugLevelMatched(1) { level.Info(Logger).Log("msg", "fetch sts token success id : ", accessKeyID) } } else { c.lock.Lock() c.lastRetryFailCount++ c.lock.Unlock() level.Warn(Logger).Log("msg", "fetch sts token error : ", err.Error()) } return err } func (c *TokenAutoUpdateClient) processError(err error) (retry bool) { if err == nil { return false } if IsTokenError(err) { if fetchErr := c.fetchSTSToken(); fetchErr != nil { level.Warn(Logger).Log("msg", "operation error : ", err.Error(), "fetch sts token error : ", fetchErr.Error()) // if fetch error, return false return false } return true } return false } func (c *TokenAutoUpdateClient) SetUserAgent(userAgent string) { c.logClient.SetUserAgent(userAgent) } // SetHTTPClient set a custom http client, all request will send to sls by this client func (c *TokenAutoUpdateClient) SetHTTPClient(client *http.Client) { c.logClient.SetHTTPClient(client) } // SetRetryTimeout set retry timeout func (c *TokenAutoUpdateClient) SetRetryTimeout(timeout time.Duration) { c.logClient.SetRetryTimeout(timeout) } // SetAuthVersion set auth version that the client used func (c *TokenAutoUpdateClient) SetAuthVersion(version AuthVersionType) { c.logClient.SetAuthVersion(version) } // SetRegion set a region, must be set if using signature version v4 func (c *TokenAutoUpdateClient) SetRegion(region string) { c.logClient.SetRegion(region) } func (c *TokenAutoUpdateClient) Close() error { c.closeFlag = true return nil } func (c *TokenAutoUpdateClient) ResetAccessKeyToken(accessKeyID, accessKeySecret, securityToken string) { c.logClient.ResetAccessKeyToken(accessKeyID, accessKeySecret, securityToken) } func (c *TokenAutoUpdateClient) CreateProject(name, description string) (prj *LogProject, err error) { for i := 0; i < c.maxTryTimes; i++ { prj, err = c.logClient.CreateProject(name, description) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateProjectV2(name, description, dataRedundancyType string) (prj *LogProject, err error) { for i := 0; i < c.maxTryTimes; i++ { prj, err = c.logClient.CreateProjectV2(name, description, dataRedundancyType) if !c.processError(err) { return } } return } // UpdateProject create a new loghub project. func (c *TokenAutoUpdateClient) UpdateProject(name, description string) (prj *LogProject, err error) { for i := 0; i < c.maxTryTimes; i++ { prj, err = c.logClient.UpdateProject(name, description) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetProject(name string) (prj *LogProject, err error) { for i := 0; i < c.maxTryTimes; i++ { prj, err = c.logClient.GetProject(name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListProject() (projectNames []string, err error) { for i := 0; i < c.maxTryTimes; i++ { projectNames, err = c.logClient.ListProject() if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListProjectV2(offset, size int) (projects []LogProject, count, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { projects, count, total, err = c.logClient.ListProjectV2(offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CheckProjectExist(name string) (ok bool, err error) { for i := 0; i < c.maxTryTimes; i++ { ok, err = c.logClient.CheckProjectExist(name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteProject(name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteProject(name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListLogStore(project string) (logstoreList []string, err error) { for i := 0; i < c.maxTryTimes; i++ { logstoreList, err = c.logClient.ListLogStore(project) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListLogStoreV2(project string, offset, size int, telemetryType string) (logstoreList []string, err error) { for i := 0; i < c.maxTryTimes; i++ { logstoreList, err = c.logClient.ListLogStoreV2(project, offset, size, telemetryType) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogStore(project string, logstore string) (logstoreRst *LogStore, err error) { for i := 0; i < c.maxTryTimes; i++ { logstoreRst, err = c.logClient.GetLogStore(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateLogStore(project string, logstore string, ttl, shardCnt int, autoSplit bool, maxSplitShard int) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateLogStore(project, logstore, ttl, shardCnt, autoSplit, maxSplitShard) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateLogStoreV2(project string, logstore *LogStore) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateLogStoreV2(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteLogStore(project string, logstore string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteLogStore(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateLogStore(project string, logstore string, ttl, shardCnt int) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateLogStore(project, logstore, ttl, shardCnt) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateLogStoreV2(project string, logstore *LogStore) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateLogStoreV2(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListMachineGroup(project string, offset, size int) (m []string, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { m, total, err = c.logClient.ListMachineGroup(project, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogStoreMeteringMode(project string, logstore string) (res *GetMeteringModeResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { res, err = c.logClient.GetLogStoreMeteringMode(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateLogStoreMeteringMode(project string, logstore string, meteringMode string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateLogStoreMeteringMode(project, logstore, meteringMode) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListMachines(project, machineGroupName string) (ms []*Machine, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { ms, total, err = c.logClient.ListMachines(project, machineGroupName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListMachinesV2(project, machineGroupName string, offset, size int) (ms []*Machine, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { ms, total, err = c.logClient.ListMachinesV2(project, machineGroupName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CheckLogstoreExist(project string, logstore string) (ok bool, err error) { for i := 0; i < c.maxTryTimes; i++ { ok, err = c.logClient.CheckLogstoreExist(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CheckMachineGroupExist(project string, machineGroup string) (ok bool, err error) { for i := 0; i < c.maxTryTimes; i++ { ok, err = c.logClient.CheckMachineGroupExist(project, machineGroup) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetMachineGroup(project string, machineGroup string) (m *MachineGroup, err error) { for i := 0; i < c.maxTryTimes; i++ { m, err = c.logClient.GetMachineGroup(project, machineGroup) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateMachineGroup(project string, m *MachineGroup) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateMachineGroup(project, m) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateMachineGroup(project string, m *MachineGroup) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateMachineGroup(project, m) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteMachineGroup(project string, machineGroup string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteMachineGroup(project, machineGroup) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateMetricConfig(project string, metricStore string, metricConfig *MetricsConfig) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateMetricConfig(project, metricStore, metricConfig) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteMetricConfig(project string, metricStore string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteMetricConfig(project, metricStore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetMetricConfig(project string, metricStore string) (metricConfig *MetricsConfig, err error) { for i := 0; i < c.maxTryTimes; i++ { metricConfig, err = c.logClient.GetMetricConfig(project, metricStore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateMetricConfig(project string, metricStore string, metricConfig *MetricsConfig) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateMetricConfig(project, metricStore, metricConfig) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListConfig(project string, offset, size int) (cfgNames []string, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { cfgNames, total, err = c.logClient.ListConfig(project, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CheckConfigExist(project string, config string) (ok bool, err error) { for i := 0; i < c.maxTryTimes; i++ { ok, err = c.logClient.CheckConfigExist(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetConfig(project string, config string) (logConfig *LogConfig, err error) { for i := 0; i < c.maxTryTimes; i++ { logConfig, err = c.logClient.GetConfig(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateConfig(project string, config *LogConfig) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateConfig(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateConfig(project string, config *LogConfig) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateConfig(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteConfig(project string, config string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteConfig(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetAppliedMachineGroups(project string, confName string) (groupNames []string, err error) { for i := 0; i < c.maxTryTimes; i++ { groupNames, err = c.logClient.GetAppliedMachineGroups(project, confName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetAppliedConfigs(project string, groupName string) (confNames []string, err error) { for i := 0; i < c.maxTryTimes; i++ { confNames, err = c.logClient.GetAppliedConfigs(project, groupName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ApplyConfigToMachineGroup(project string, confName, groupName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.ApplyConfigToMachineGroup(project, confName, groupName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) RemoveConfigFromMachineGroup(project string, confName, groupName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.RemoveConfigFromMachineGroup(project, confName, groupName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateETL(project string, etljob ETL) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateETL(project, etljob) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateETL(project string, etljob ETL) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateETL(project, etljob) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetETL(project string, etlName string) (ETLJob *ETL, err error) { for i := 0; i < c.maxTryTimes; i++ { ETLJob, err = c.logClient.GetETL(project, etlName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListETL(project string, offset int, size int) (ETLResponse *ListETLResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { ETLResponse, err = c.logClient.ListETL(project, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteETL(project string, etlName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteETL(project, etlName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) StartETL(project string, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.StartETL(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) StopETL(project string, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.StopETL(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) RestartETL(project string, etljob ETL) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.RestartETL(project, etljob) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateEtlMeta(project string, etlMeta *EtlMeta) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateEtlMeta(project, etlMeta) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateEtlMeta(project string, etlMeta *EtlMeta) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateEtlMeta(project, etlMeta) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteEtlMeta(project string, etlMetaName, etlMetaKey string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteEtlMeta(project, etlMetaName, etlMetaKey) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetEtlMeta(project string, etlMetaName, etlMetaKey string) (etlMeta *EtlMeta, err error) { for i := 0; i < c.maxTryTimes; i++ { etlMeta, err = c.logClient.GetEtlMeta(project, etlMetaName, etlMetaKey) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListEtlMeta(project string, etlMetaName string, offset, size int) (total int, count int, etlMetaList []*EtlMeta, err error) { for i := 0; i < c.maxTryTimes; i++ { total, count, etlMetaList, err = c.logClient.ListEtlMeta(project, etlMetaName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListEtlMetaWithTag(project string, etlMetaName, etlMetaTag string, offset, size int) (total int, count int, etlMetaList []*EtlMeta, err error) { for i := 0; i < c.maxTryTimes; i++ { total, count, etlMetaList, err = c.logClient.ListEtlMetaWithTag(project, etlMetaName, etlMetaTag, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListEtlMetaName(project string, offset, size int) (total int, count int, etlMetaNameList []string, err error) { for i := 0; i < c.maxTryTimes; i++ { total, count, etlMetaNameList, err = c.logClient.ListEtlMetaName(project, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListShards(project, logstore string) (shardIDs []*Shard, err error) { for i := 0; i < c.maxTryTimes; i++ { shardIDs, err = c.logClient.ListShards(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) SplitShard(project, logstore string, shardID int, splitKey string) (shards []*Shard, err error) { for i := 0; i < c.maxTryTimes; i++ { shards, err = c.logClient.SplitShard(project, logstore, shardID, splitKey) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) SplitNumShard(project, logstore string, shardID, shardNum int) (shards []*Shard, err error) { for i := 0; i < c.maxTryTimes; i++ { shards, err = c.logClient.SplitNumShard(project, logstore, shardID, shardNum) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) MergeShards(project, logstore string, shardID int) (shards []*Shard, err error) { for i := 0; i < c.maxTryTimes; i++ { shards, err = c.logClient.MergeShards(project, logstore, shardID) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PutLogs(project, logstore string, lg *LogGroup) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PutLogs(project, logstore, lg) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PutLogsWithMetricStoreURL(project, logstore string, lg *LogGroup) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PutLogsWithMetricStoreURL(project, logstore, lg) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PostLogStoreLogs(project, logstore string, lg *LogGroup, hashKey *string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PostLogStoreLogs(project, logstore, lg, hashKey) if !c.processError(err) { return } } return } // PostRawLogWithCompressType put raw log data to log service, no marshal func (c *TokenAutoUpdateClient) PostRawLogWithCompressType(project, logstore string, rawLogData []byte, compressType int, hashKey *string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PostRawLogWithCompressType(project, logstore, rawLogData, compressType, hashKey) if !c.processError(err) { return } } return } // PutRawLogWithCompressType put raw log data to log service, no marshal func (c *TokenAutoUpdateClient) PutRawLogWithCompressType(project, logstore string, rawLogData []byte, compressType int) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PutRawLogWithCompressType(project, logstore, rawLogData, compressType) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PutLogsWithCompressType(project, logstore string, lg *LogGroup, compressType int) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PutLogsWithCompressType(project, logstore, lg, compressType) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetCursor(project, logstore string, shardID int, from string) (cursor string, err error) { for i := 0; i < c.maxTryTimes; i++ { cursor, err = c.logClient.GetCursor(project, logstore, shardID, from) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetCursorTime(project, logstore string, shardID int, cursor string) (cursorTime time.Time, err error) { for i := 0; i < c.maxTryTimes; i++ { cursorTime, err = c.logClient.GetCursorTime(project, logstore, shardID, cursor) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsBytes(project, logstore string, shardID int, cursor, endCursor string, logGroupMaxCount int) (out []byte, nextCursor string, err error) { plr := &PullLogRequest{ Project: project, Logstore: logstore, ShardID: shardID, Cursor: cursor, EndCursor: endCursor, LogGroupMaxCount: logGroupMaxCount, } return c.GetLogsBytesV2(plr) } // Deprecated: use GetLogsBytesWithQuery instead func (c *TokenAutoUpdateClient) GetLogsBytesV2(plr *PullLogRequest) (out []byte, nextCursor string, err error) { for i := 0; i < c.maxTryTimes; i++ { out, nextCursor, err = c.logClient.GetLogsBytesV2(plr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsBytesWithQuery(plr *PullLogRequest) (out []byte, plm *PullLogMeta, err error) { for i := 0; i < c.maxTryTimes; i++ { out, plm, err = c.logClient.GetLogsBytesWithQuery(plr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PullLogs(project, logstore string, shardID int, cursor, endCursor string, logGroupMaxCount int) (gl *LogGroupList, nextCursor string, err error) { plr := &PullLogRequest{ Project: project, Logstore: logstore, ShardID: shardID, Cursor: cursor, EndCursor: endCursor, LogGroupMaxCount: logGroupMaxCount, } return c.PullLogsV2(plr) } // Deprecated: use PullLogsWithQuery instead func (c *TokenAutoUpdateClient) PullLogsV2(plr *PullLogRequest) (gl *LogGroupList, nextCursor string, err error) { for i := 0; i < c.maxTryTimes; i++ { gl, nextCursor, err = c.logClient.PullLogsV2(plr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PullLogsWithQuery(plr *PullLogRequest) (gl *LogGroupList, plm *PullLogMeta, err error) { for i := 0; i < c.maxTryTimes; i++ { gl, plm, err = c.logClient.PullLogsWithQuery(plr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetHistograms(project, logstore string, topic string, from int64, to int64, queryExp string) (h *GetHistogramsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { h, err = c.logClient.GetHistograms(project, logstore, topic, from, to, queryExp) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetHistogramsV2(project, logstore string, ghr *GetHistogramRequest) (h *GetHistogramsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { h, err = c.logClient.GetHistogramsV2(project, logstore, ghr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetHistogramsToCompleted(project, logstore string, topic string, from int64, to int64, queryExp string) (h *GetHistogramsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { h, err = c.logClient.GetHistogramsToCompleted(project, logstore, topic, from, to, queryExp) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetHistogramsToCompletedV2(project, logstore string, ghr *GetHistogramRequest) (h *GetHistogramsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { h, err = c.logClient.GetHistogramsToCompletedV2(project, logstore, ghr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsV2(project, logstore string, req *GetLogRequest) (r *GetLogsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogsV2(project, logstore, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsV3(project, logstore string, req *GetLogRequest) (r *GetLogsV3Response, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogsV3(project, logstore, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsToCompletedV2(project, logstore string, req *GetLogRequest) (r *GetLogsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogsToCompletedV2(project, logstore, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsToCompletedV3(project, logstore string, req *GetLogRequest) (r *GetLogsV3Response, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogsToCompletedV3(project, logstore, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogLinesV2(project, logstore string, req *GetLogRequest) (r *GetLogLinesResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogLinesV2(project, logstore, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogs(project, logstore string, topic string, from int64, to int64, queryExp string, maxLineNum int64, offset int64, reverse bool) (r *GetLogsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogs(project, logstore, topic, from, to, queryExp, maxLineNum, offset, reverse) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsByNano(project, logstore string, topic string, fromInNs int64, toInNs int64, queryExp string, maxLineNum int64, offset int64, reverse bool) (r *GetLogsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogsByNano(project, logstore, topic, fromInNs, toInNs, queryExp, maxLineNum, offset, reverse) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogsToCompleted(project, logstore string, topic string, from int64, to int64, queryExp string, maxLineNum int64, offset int64, reverse bool) (r *GetLogsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogsToCompleted(project, logstore, topic, from, to, queryExp, maxLineNum, offset, reverse) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogLines(project, logstore string, topic string, from int64, to int64, queryExp string, maxLineNum int64, offset int64, reverse bool) (r *GetLogLinesResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogLines(project, logstore, topic, from, to, queryExp, maxLineNum, offset, reverse) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetLogLinesByNano(project, logstore string, topic string, fromInNs int64, toInNS int64, queryExp string, maxLineNum int64, offset int64, reverse bool) (r *GetLogLinesResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { r, err = c.logClient.GetLogLinesByNano(project, logstore, topic, fromInNs, toInNS, queryExp, maxLineNum, offset, reverse) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateIndex(project, logstore string, index Index) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateIndex(project, logstore, index) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateIndex(project, logstore string, index Index) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateIndex(project, logstore, index) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteIndex(project, logstore string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteIndex(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetIndex(project, logstore string) (index *Index, err error) { for i := 0; i < c.maxTryTimes; i++ { index, err = c.logClient.GetIndex(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListDashboard(project string, dashboardName string, offset, size int) (dashboardList []string, count, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { dashboardList, count, total, err = c.logClient.ListDashboard(project, dashboardName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListDashboardV2(project string, dashboardName string, offset, size int) (dashboardList []string, dashboardItems []ResponseDashboardItem, count, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { dashboardList, dashboardItems, count, total, err = c.logClient.ListDashboardV2(project, dashboardName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetDashboard(project, name string) (dashboard *Dashboard, err error) { for i := 0; i < c.maxTryTimes; i++ { dashboard, err = c.logClient.GetDashboard(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteDashboard(project, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteDashboard(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateDashboard(project string, dashboard Dashboard) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateDashboard(project, dashboard) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateDashboard(project string, dashboard Dashboard) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateDashboard(project, dashboard) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetChart(project, dashboardName, chartName string) (chart *Chart, err error) { for i := 0; i < c.maxTryTimes; i++ { chart, err = c.logClient.GetChart(project, dashboardName, chartName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteChart(project, dashboardName, chartName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteChart(project, dashboardName, chartName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateChart(project, dashboardName string, chart Chart) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateChart(project, dashboardName, chart) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateChart(project, dashboardName string, chart Chart) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateChart(project, dashboardName, chart) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateSavedSearch(project string, savedSearch *SavedSearch) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateSavedSearch(project, savedSearch) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateSavedSearch(project string, savedSearch *SavedSearch) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateSavedSearch(project, savedSearch) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteSavedSearch(project string, savedSearchName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteSavedSearch(project, savedSearchName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetSavedSearch(project string, savedSearchName string) (savedSearch *SavedSearch, err error) { for i := 0; i < c.maxTryTimes; i++ { savedSearch, err = c.logClient.GetSavedSearch(project, savedSearchName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListSavedSearch(project string, savedSearchName string, offset, size int) (savedSearches []string, total int, count int, err error) { for i := 0; i < c.maxTryTimes; i++ { savedSearches, total, count, err = c.logClient.ListSavedSearch(project, savedSearchName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListSavedSearchV2(project string, savedSearchName string, offset, size int) (savedSearches []string, savedsearchItems []ResponseSavedSearchItem, total int, count int, err error) { for i := 0; i < c.maxTryTimes; i++ { savedSearches, savedsearchItems, total, count, err = c.logClient.ListSavedSearchV2(project, savedSearchName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateAlert(project string, alert *Alert) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateAlert(project, alert) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateAlert(project string, alert *Alert) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateAlert(project, alert) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteAlert(project string, alertName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteAlert(project, alertName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetAlert(project string, alertName string) (alert *Alert, err error) { for i := 0; i < c.maxTryTimes; i++ { alert, err = c.logClient.GetAlert(project, alertName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DisableAlert(project string, alertName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DisableAlert(project, alertName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) EnableAlert(project string, alertName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.EnableAlert(project, alertName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListAlert(project string, alertName string, dashboard string, offset, size int) (alerts []*Alert, total int, count int, err error) { for i := 0; i < c.maxTryTimes; i++ { alerts, total, count, err = c.logClient.ListAlert(project, alertName, dashboard, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateAlertString(project string, alert string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateAlertString(project, alert) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateAlertString(project string, alertName, alert string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateAlertString(project, alertName, alert) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetAlertString(project string, alertName string) (alert string, err error) { for i := 0; i < c.maxTryTimes; i++ { alert, err = c.logClient.GetAlertString(project, alertName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateDashboardString(project string, dashboardStr string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateDashboardString(project, dashboardStr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateDashboardString(project string, dashboardName, dashboardStr string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateDashboardString(project, dashboardName, dashboardStr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetDashboardString(project, name string) (dashboard string, err error) { for i := 0; i < c.maxTryTimes; i++ { dashboard, err = c.logClient.GetDashboardString(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetConfigString(project string, config string) (logConfig string, err error) { for i := 0; i < c.maxTryTimes; i++ { logConfig, err = c.logClient.GetConfigString(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateConfigString(project string, config string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateConfigString(project, config) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateConfigString(project string, configName, configDetail string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateConfigString(project, configName, configDetail) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateIndexString(project, logstore string, index string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateIndexString(project, logstore, index) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateIndexString(project, logstore string, index string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateIndexString(project, logstore, index) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetIndexString(project, logstore string) (index string, err error) { for i := 0; i < c.maxTryTimes; i++ { index, err = c.logClient.GetIndexString(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateConsumerGroup(project, logstore string, cg ConsumerGroup) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateConsumerGroup(project, logstore, cg) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateConsumerGroup(project, logstore string, cg ConsumerGroup) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateConsumerGroup(project, logstore, cg) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteConsumerGroup(project, logstore string, cgName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteConsumerGroup(project, logstore, cgName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListConsumerGroup(project, logstore string) (cgList []*ConsumerGroup, err error) { for i := 0; i < c.maxTryTimes; i++ { cgList, err = c.logClient.ListConsumerGroup(project, logstore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) HeartBeat(project, logstore string, cgName, consumer string, heartBeatShardIDs []int) (shardIDs []int, err error) { for i := 0; i < c.maxTryTimes; i++ { shardIDs, err = c.logClient.HeartBeat(project, logstore, cgName, consumer, heartBeatShardIDs) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateCheckpoint(project, logstore string, cgName string, consumer string, shardID int, checkpoint string, forceSuccess bool) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateCheckpoint(project, logstore, cgName, consumer, shardID, checkpoint, forceSuccess) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetCheckpoint(project, logstore string, cgName string) (checkPointList []*ConsumerGroupCheckPoint, err error) { for i := 0; i < c.maxTryTimes; i++ { checkPointList, err = c.logClient.GetCheckpoint(project, logstore, cgName) if !c.processError(err) { return } } return } // ####################### Resource Tags API ###################### // TagResources tag specific resource func (c *TokenAutoUpdateClient) TagResources(project string, tags *ResourceTags) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.TagResources(project, tags) if !c.processError(err) { return } } return } // TagResourcesSystemTags tag specific resource func (c *TokenAutoUpdateClient) TagResourcesSystemTags(project string, tags *ResourceSystemTags) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.TagResourcesSystemTags(project, tags) if !c.processError(err) { return } } return } // UnTagResources untag specific resource func (c *TokenAutoUpdateClient) UnTagResources(project string, tags *ResourceUnTags) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UnTagResources(project, tags) if !c.processError(err) { return } } return } // UnTagResourcesSystemTags untag specific resource func (c *TokenAutoUpdateClient) UnTagResourcesSystemTags(project string, tags *ResourceUnSystemTags) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UnTagResourcesSystemTags(project, tags) if !c.processError(err) { return } } return } // ListTagResources list tag resources func (c *TokenAutoUpdateClient) ListTagResources(project string, resourceType string, resourceIDs []string, tags []ResourceFilterTag, nextToken string) (respTags []*ResourceTagResponse, respNextToken string, err error) { for i := 0; i < c.maxTryTimes; i++ { respTags, respNextToken, err = c.logClient.ListTagResources(project, resourceType, resourceIDs, tags, nextToken) if !c.processError(err) { return } } return } // ListSystemTagResources list system tag resources func (c *TokenAutoUpdateClient) ListSystemTagResources(project string, resourceType string, resourceIDs []string, tags []ResourceFilterTag, tagOwnerUid string, category string, scope string, nextToken string) (respTags []*ResourceTagResponse, respNextToken string, err error) { for i := 0; i < c.maxTryTimes; i++ { respTags, respNextToken, err = c.logClient.ListSystemTagResources(project, resourceType, resourceIDs, tags, tagOwnerUid, category, scope, nextToken) if !c.processError(err) { return } } return } // ####################### Scheduled SQL API ###################### func (c *TokenAutoUpdateClient) CreateScheduledSQL(project string, scheduledsql *ScheduledSQL) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateScheduledSQL(project, scheduledsql) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteScheduledSQL(project string, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteScheduledSQL(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateScheduledSQL(project string, scheduledsql *ScheduledSQL) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateScheduledSQL(project, scheduledsql) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetScheduledSQL(project string, name string) (s *ScheduledSQL, err error) { for i := 0; i < c.maxTryTimes; i++ { s, err = c.logClient.GetScheduledSQL(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListScheduledSQL(project, name, displayName string, offset, size int) (scheduledsqls []*ScheduledSQL, total, count int, err error) { for i := 0; i < c.maxTryTimes; i++ { scheduledsqls, total, count, err = c.logClient.ListScheduledSQL(project, name, displayName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetScheduledSQLJobInstance(projectName, jobName, instanceId string, result bool) (instance *ScheduledSQLJobInstance, err error) { for i := 0; i < c.maxTryTimes; i++ { instance, err = c.logClient.GetScheduledSQLJobInstance(projectName, jobName, instanceId, result) if !c.processError(err) { return } } return instance, err } func (c *TokenAutoUpdateClient) ModifyScheduledSQLJobInstanceState(projectName, jobName, instanceId string, state ScheduledSQLState) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.ModifyScheduledSQLJobInstanceState(projectName, jobName, instanceId, state) if !c.processError(err) { return } } return err } func (c *TokenAutoUpdateClient) ListScheduledSQLJobInstances(projectName, jobName string, status *InstanceStatus) (instances []*ScheduledSQLJobInstance, total, count int64, err error) { for i := 0; i < c.maxTryTimes; i++ { instances, total, count, err = c.logClient.ListScheduledSQLJobInstances(projectName, jobName, status) if !c.processError(err) { return } } return instances, total, count, err } // ####################### Resource API ###################### func (c *TokenAutoUpdateClient) ListResource(resourceType string, resourceName string, offset, size int) (resourceList []*Resource, count, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { resourceList, count, total, err = c.logClient.ListResource(resourceType, resourceName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetResource(name string) (resource *Resource, err error) { for i := 0; i < c.maxTryTimes; i++ { resource, err = c.logClient.GetResource(name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetResourceString(name string) (resource string, err error) { for i := 0; i < c.maxTryTimes; i++ { resource, err = c.logClient.GetResourceString(name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteResource(name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteResource(name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateResource(resource *Resource) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateResource(resource) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateResourceString(resourceName, resourceStr string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateResourceString(resourceName, resourceStr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateResource(resource *Resource) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateResource(resource) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateResourceString(resourceStr string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateResourceString(resourceStr) if !c.processError(err) { return } } return } // ####################### Resource Record API ###################### func (c *TokenAutoUpdateClient) ListResourceRecord(resourceName string, offset, size int) (recordList []*ResourceRecord, count, total int, err error) { for i := 0; i < c.maxTryTimes; i++ { recordList, count, total, err = c.logClient.ListResourceRecord(resourceName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetResourceRecord(resourceName, recordId string) (record *ResourceRecord, err error) { for i := 0; i < c.maxTryTimes; i++ { record, err = c.logClient.GetResourceRecord(resourceName, recordId) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetResourceRecordString(resourceName, name string) (record string, err error) { for i := 0; i < c.maxTryTimes; i++ { record, err = c.logClient.GetResourceRecordString(resourceName, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteResourceRecord(resourceName, recordId string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteResourceRecord(resourceName, recordId) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateResourceRecord(resourceName string, record *ResourceRecord) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateResourceRecord(resourceName, record) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateResourceRecordString(resourceName, recordStr string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateResourceString(resourceName, recordStr) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateResourceRecord(resourceName string, record *ResourceRecord) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateResourceRecord(resourceName, record) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateResourceRecordString(resourceName, recordStr string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateResourceRecordString(resourceName, recordStr) if !c.processError(err) { return } } return } // ####################### Ingestion API ###################### func (c *TokenAutoUpdateClient) CreateIngestion(project string, ingestion *Ingestion) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateIngestion(project, ingestion) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateIngestion(project string, ingestion *Ingestion) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateIngestion(project, ingestion) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetIngestion(project string, name string) (ingestion *Ingestion, err error) { for i := 0; i < c.maxTryTimes; i++ { ingestion, err = c.logClient.GetIngestion(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListIngestion(project, logstore, name, displayName string, offset, size int) (ingestions []*Ingestion, total, count int, err error) { for i := 0; i < c.maxTryTimes; i++ { ingestions, total, count, err = c.logClient.ListIngestion(project, logstore, name, displayName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteIngestion(project string, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteIngestion(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateExport(project string, export *Export) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateExport(project, export) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateExport(project string, export *Export) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateExport(project, export) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetExport(project, name string) (export *Export, err error) { for i := 0; i < c.maxTryTimes; i++ { export, err = c.logClient.GetExport(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListExport(project, logstore, name, displayName string, offset, size int) (exports []*Export, total, count int, err error) { for i := 0; i < c.maxTryTimes; i++ { exports, total, count, err = c.logClient.ListExport(project, logstore, name, displayName, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteExport(project string, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteExport(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) RestartExport(project string, export *Export) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.RestartExport(project, export) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateMetricStore(project string, metricStore *LogStore) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateMetricStore(project, metricStore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateMetricStore(project string, metricStore *LogStore) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateMetricStore(project, metricStore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteMetricStore(project, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteMetricStore(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetMetricStore(project, name string) (metricStore *LogStore, err error) { for i := 0; i < c.maxTryTimes; i++ { metricStore, err = c.logClient.GetMetricStore(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateProjectPolicy(project, policy string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateProjectPolicy(project, policy) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteProjectPolicy(project string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteProjectPolicy(project) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetProjectPolicy(project string) (policy string, err error) { for i := 0; i < c.maxTryTimes; i++ { policy, err = c.logClient.GetProjectPolicy(project) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PublishAlertEvent(project string, alertResult []byte) error { var err error = nil for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PublishAlertEvent(project, alertResult) if err == nil { break } } return err } func (c *TokenAutoUpdateClient) CreateEventStore(project string, eventStore *LogStore) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateEventStore(project, eventStore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateEventStore(project string, eventStore *LogStore) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateEventStore(project, eventStore) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteEventStore(project, name string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteEventStore(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetEventStore(project, name string) (eventStore *LogStore, err error) { for i := 0; i < c.maxTryTimes; i++ { eventStore, err = c.logClient.GetEventStore(project, name) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListEventStore(project string, offset, size int) (eventStores []string, err error) { for i := 0; i < c.maxTryTimes; i++ { eventStores, err = c.logClient.ListEventStore(project, offset, size) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) PostLogStoreLogsV2(project, logstore string, req *PostLogStoreLogsRequest) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.PostLogStoreLogsV2(project, logstore, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) CreateStoreView(project string, storeView *StoreView) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.CreateStoreView(project, storeView) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) UpdateStoreView(project string, storeView *StoreView) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.UpdateStoreView(project, storeView) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) DeleteStoreView(project string, storeViewName string) (err error) { for i := 0; i < c.maxTryTimes; i++ { err = c.logClient.DeleteStoreView(project, storeViewName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetStoreView(project string, storeViewName string) (storeView *StoreView, err error) { for i := 0; i < c.maxTryTimes; i++ { storeView, err = c.logClient.GetStoreView(project, storeViewName) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) ListStoreViews(project string, req *ListStoreViewsRequest) (resp *ListStoreViewsResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { resp, err = c.logClient.ListStoreViews(project, req) if !c.processError(err) { return } } return } func (c *TokenAutoUpdateClient) GetStoreViewIndex(project string, storeViewName string) (resp *GetStoreViewIndexResponse, err error) { for i := 0; i < c.maxTryTimes; i++ { resp, err = c.logClient.GetStoreViewIndex(project, storeViewName) if !c.processError(err) { return } } return }