发布 0.1.0:通知渠道、告警规则、令牌版本与安全加固
This commit is contained in:
+16
-1
@@ -39,10 +39,18 @@ func ckey(cred Credentials, parts ...string) string {
|
||||
// bust 写操作成功后失效该租户全部读缓存。
|
||||
func (c *CachedClient) bust(err error, cred Credentials) {
|
||||
if err == nil {
|
||||
c.store.DeletePrefix(cred.TenancyOCID + "|")
|
||||
c.InvalidateTenancy(cred.TenancyOCID)
|
||||
}
|
||||
}
|
||||
|
||||
// InvalidateTenancy 主动失效指定 tenancy 的全部 OCI 读缓存。
|
||||
func (c *CachedClient) InvalidateTenancy(tenancyOCID string) {
|
||||
if tenancyOCID == "" {
|
||||
return
|
||||
}
|
||||
c.store.DeletePrefix(tenancyOCID + "|")
|
||||
}
|
||||
|
||||
// cachedList 缓存切片结果;命中返回浅拷贝,防调用方排序共享底层数组。
|
||||
func cachedList[T any](c *CachedClient, key string, ttl time.Duration, fn func() ([]T, error)) ([]T, error) {
|
||||
v, err := cache.Do(c.store, key, ttl, fn)
|
||||
@@ -120,6 +128,13 @@ func (c *CachedClient) ListVolumeAttachments(ctx context.Context, cred Credentia
|
||||
})
|
||||
}
|
||||
|
||||
// ListIdentityDomains 域列表准静态且是所有按域操作的 URL 解析源,长 TTL 缓存。
|
||||
func (c *CachedClient) ListIdentityDomains(ctx context.Context, cred Credentials, region string) ([]IdentityDomain, error) {
|
||||
return cachedList(c, ckey(cred, "iddomains", region), cacheTTLStatic, func() ([]IdentityDomain, error) {
|
||||
return c.Client.ListIdentityDomains(ctx, cred, region)
|
||||
})
|
||||
}
|
||||
|
||||
// ---- 写:直通,成功后按租户失效 ----
|
||||
|
||||
func (c *CachedClient) LaunchInstance(ctx context.Context, cred Credentials, in CreateInstanceInput) (Instance, error) {
|
||||
|
||||
Reference in New Issue
Block a user