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 "tencent": // return NewTencentProvider(accessKey, secretKey) // case "huawei": // return NewHuaweiProvider(accessKey, secretKey) // case "aws": // return NewAWSProvider(accessKey, secretKey) default: return nil } }