48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"oci-portal/internal/oci"
|
|
)
|
|
|
|
// Subscriptions 列出租户全部订阅摘要。
|
|
func (s *OciConfigService) Subscriptions(ctx context.Context, id uint) ([]oci.SubscriptionInfo, error) {
|
|
cred, err := s.credentialsByID(ctx, id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return s.client.ListSubscriptions(ctx, cred)
|
|
}
|
|
|
|
// SubscriptionDetail 查询租户单个订阅的完整信息。
|
|
func (s *OciConfigService) SubscriptionDetail(ctx context.Context, id uint, subscriptionID string) (oci.SubscriptionDetail, error) {
|
|
if subscriptionID == "" {
|
|
return oci.SubscriptionDetail{}, fmt.Errorf("subscription detail: subscription id is empty")
|
|
}
|
|
cred, err := s.credentialsByID(ctx, id)
|
|
if err != nil {
|
|
return oci.SubscriptionDetail{}, err
|
|
}
|
|
return s.client.GetSubscription(ctx, cred, subscriptionID)
|
|
}
|
|
|
|
// LimitServices 列出配额体系支持的全部服务。
|
|
func (s *OciConfigService) LimitServices(ctx context.Context, id uint, region string) ([]oci.LimitService, error) {
|
|
cred, err := s.credentialsByID(ctx, id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return s.client.ListLimitServices(ctx, cred, region)
|
|
}
|
|
|
|
// credentialsByID 加载配置快照并解密出完整凭据。
|
|
func (s *OciConfigService) credentialsByID(ctx context.Context, id uint) (oci.Credentials, error) {
|
|
cfg, err := s.Get(ctx, id)
|
|
if err != nil {
|
|
return oci.Credentials{}, err
|
|
}
|
|
return s.credentialsOf(cfg)
|
|
}
|