Files
aiops/backend/cloud/provider.go
T
Logan.Li 0b785da8ae feat: 完善多云资产与腾讯云账单同步
- 接入 AWS、腾讯云、华为云和 Azure 区域及主机发现
- 接入腾讯云账单分页、限流与组件费用汇总
- 批量账单仅同步已支持厂商并优化云账号操作
2026-07-25 14:45:19 +08:00

57 lines
1.9 KiB
Go

package cloud
// CloudInstance 云主机实例(跨平台统一结构)
type CloudInstance struct {
InstanceID string `json:"instance_id"`
InstanceName string `json:"instance_name"`
Hostname string `json:"hostname"`
OSType string `json:"os_type"`
Status string `json:"status"`
RegionID string `json:"region_id"`
ZoneID string `json:"zone_id"`
PrivateIP string `json:"private_ip"`
PublicIP string `json:"public_ip"`
InstanceType string `json:"instance_type"` // 规格如 ecs.g6.large
CPU int `json:"cpu"`
Memory int `json:"memory"` // MB
CreationTime string `json:"creation_time"`
}
// CloudRegion 云平台区域(跨平台统一结构)
type CloudRegion struct {
RegionID string `json:"region_id"`
LocalName string `json:"local_name"`
Endpoint string `json:"endpoint"`
Status string `json:"status"`
}
// Provider 云平台 Provider 接口
type Provider interface {
// ListRegions 获取该云平台所有区域列表
ListRegions() ([]CloudRegion, error)
// ListInstances 获取指定区域的云主机实例
ListInstances(regionID string) ([]CloudInstance, error)
// Name 返回 provider 标识
Name() string
}
// NewProvider 根据 provider 字符串创建对应实例
func NewProvider(provider, accessKey, secretKey string) Provider {
switch provider {
case "aliyun":
return NewAliyunProvider(accessKey, secretKey)
case "aws":
return NewAWSProvider(accessKey, secretKey) // 启用 AWS EC2 区域与实例同步。 // Logan.Li
case "tencent":
return NewTencentProvider(accessKey, secretKey) // 启用腾讯云 CVM 区域与实例同步。 // Logan.Li
case "huawei":
return NewHuaweiProvider(accessKey, secretKey) // 启用华为云 ECS 区域与实例同步。 // Logan.Li
case "azure":
return NewAzureProvider(accessKey, secretKey) // 启用 Azure VM 区域与实例同步。 // Logan.Li
default:
return nil
}
}