feat: migrate all remaining modules from rainyun-go-sdk
- domain(24), product(8), rbm(10), rca(21), rgs(38), ros(19), ssl(5), user(10), workorder(11), public remaining 5 - split nested response structs into reusable named types - rgs reuses rcs request/response types - fix source bugs: malformed paths, resp vs &resp, missing bodies - register all 11 services in sdk.New
This commit is contained in:
@@ -0,0 +1,254 @@
|
||||
package rca
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/XingfenD/rainyun_api_go_sdk/apis/common"
|
||||
"github.com/XingfenD/rainyun_api_go_sdk/constant"
|
||||
)
|
||||
|
||||
// 云应用区域信息
|
||||
type PriceInfo struct {
|
||||
Cpu float64 `json:"cpu"`
|
||||
Memory float64 `json:"memory"`
|
||||
Ipv4 float64 `json:"ipv4"`
|
||||
Traffic float64 `json:"traffic"`
|
||||
Disk float64 `json:"disk"`
|
||||
}
|
||||
|
||||
type RcaRegion struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
ChineseName string `json:"chinese_name"`
|
||||
WebsiteServiceDomain string `json:"website_service_domain"`
|
||||
SftpServiceDomain string `json:"sftp_service_domain"`
|
||||
PublicServiceDomain string `json:"public_service_domain"`
|
||||
PriceInfo PriceInfo `json:"price_info"`
|
||||
}
|
||||
|
||||
type GetRcaRegionInfoResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data []RcaRegion `json:"data"`
|
||||
}
|
||||
|
||||
// 开通云应用产品请求
|
||||
type ActivateRcaRequest struct {
|
||||
RegionID int `json:"region_id"`
|
||||
}
|
||||
|
||||
// 创建云应用项目请求
|
||||
type CreateRcaProjectRequest struct {
|
||||
ChargeType string `json:"charge_type"` // 计费类型: 动态计费: elastic
|
||||
CPULimit int `json:"cpu_limit"` // (仅限package模式)CPU限制(毫核),1核心=1000,0.1核=100
|
||||
DiskSize int `json:"disk_size"` // 磁盘大小(GiB)
|
||||
Ipv4Count int `json:"ipv4_count"` // 要添加的IPv4地址数量
|
||||
Ipv6Count int `json:"ipv6_count"` // 要添加的IPv6地址数量
|
||||
MemoryLimit int `json:"memory_limit"` // (仅限package模式)内存限制(MiB)
|
||||
Name string `json:"name"` // 名称
|
||||
RegionID int `json:"region_id"` // 部署区域
|
||||
}
|
||||
|
||||
// 云应用节点信息
|
||||
type RcaNode struct {
|
||||
UUID string `json:"UUID"`
|
||||
AuthKey string `json:"AuthKey"`
|
||||
Region string `json:"Region"`
|
||||
IPRegion string `json:"IpRegion"`
|
||||
Machine string `json:"Machine"`
|
||||
Product string `json:"Product"`
|
||||
Subtype string `json:"Subtype"`
|
||||
ChineseName string `json:"ChineseName"`
|
||||
PhysicalNode string `json:"PhysicalNode"`
|
||||
Config string `json:"Config"`
|
||||
Stock any `json:"Stock"`
|
||||
StatusData string `json:"StatusData"`
|
||||
ShowMonitorData string `json:"ShowMonitorData"`
|
||||
UpdateTime string `json:"UpdateTime"`
|
||||
GitRepositoryName string `json:"GitRepositoryName"`
|
||||
CertifyRequired bool `json:"CertifyRequired"`
|
||||
IsDisableBackup bool `json:"IsDisableBackup"`
|
||||
IsHidden bool `json:"IsHidden"`
|
||||
NodeName string `json:"NodeName"`
|
||||
}
|
||||
|
||||
type RcaResourceLimits struct {
|
||||
MaxCPU int `json:"max_cpu"`
|
||||
MaxMemory int `json:"max_memory"`
|
||||
}
|
||||
|
||||
// 云应用项目资源使用情况
|
||||
type RcaProjectUsageData struct {
|
||||
CPU int `json:"cpu"`
|
||||
Memory int `json:"memory"`
|
||||
NetOut int `json:"net_out"`
|
||||
NetIn int `json:"net_in"`
|
||||
DiskUsage int `json:"disk_usage"`
|
||||
TrafficToday int `json:"traffic_today"`
|
||||
Status string `json:"status"`
|
||||
StatusReason string `json:"status_reason"`
|
||||
AllocatedCPU int `json:"allocated_cpu"`
|
||||
AllocatedMemory int `json:"allocated_memory"`
|
||||
AppCount int `json:"app_count"`
|
||||
WebsiteCount int `json:"website_count"`
|
||||
DatabaseCount int `json:"database_count"`
|
||||
Ipv4Count int `json:"ipv4_count"`
|
||||
HealthyPods int `json:"healthy_pods"`
|
||||
UnhealthyPods int `json:"unhealthy_pods"`
|
||||
}
|
||||
|
||||
// 备份目标
|
||||
type RcaBackupTarget struct {
|
||||
Type string `json:"type"` // 目标类型,支持项目本地备份或者远程S3存储(local/s3)
|
||||
S3Endpoint string `json:"s3_endpoint"` // S3的端点(仅支持Virtual Host,不支持Path-Style模式)
|
||||
S3Bucket string `json:"s3_bucket"` // S3存储桶名
|
||||
S3AccessKey string `json:"s3_access_key"` // S3的AK
|
||||
S3SecretKey string `json:"s3_secret_key"` // S3的SK
|
||||
S3BackupDirectory string `json:"s3_backup_directory"` // s3备份存储的目录
|
||||
}
|
||||
|
||||
// 云应用项目
|
||||
type RcaProject struct {
|
||||
ID int `json:"ID"`
|
||||
UID int `json:"UID"`
|
||||
PlanID int `json:"PlanID"`
|
||||
CreateDate int `json:"CreateDate"` // 创建时间
|
||||
NodeUUID string `json:"NodeUUID"`
|
||||
Node RcaNode `json:"Node"`
|
||||
Status string `json:"Status"`
|
||||
StopReason string `json:"StopReason"`
|
||||
RewardPointsToBeCollect int `json:"RewardPointsToBeCollect"`
|
||||
Tag string `json:"Tag"`
|
||||
ExpDate int `json:"ExpDate"`
|
||||
ExpireNotice int `json:"ExpireNotice"`
|
||||
AutoRenew bool `json:"AutoRenew"`
|
||||
UnsubscribeAble bool `json:"UnsubscribeAble"`
|
||||
Try bool `json:"Try"`
|
||||
Name string `json:"name"`
|
||||
RegionID int `json:"region_id"`
|
||||
Region *RcaRegion `json:"region"`
|
||||
Namespace string `json:"namespace"`
|
||||
APIToken string `json:"APIToken"`
|
||||
ResourceLimits RcaResourceLimits `json:"resource_limits"`
|
||||
UsageData RcaProjectUsageData `json:"usage_data"`
|
||||
VolumeSize int `json:"volume_size"`
|
||||
ChargeType string `json:"charge_type"` // 计费类型: elastic
|
||||
HourlyPrice float64 `json:"hourly_price"` // 小时价格
|
||||
NextChargeTime int `json:"next_charge_time"`
|
||||
BackupTarget RcaBackupTarget `json:"backup_target"` // 备份目标
|
||||
SftpSetting any `json:"sftp_setting"`
|
||||
IdleAlarmFlag bool `json:"idle_alarm_flag"`
|
||||
PaymentDueEnd int `json:"payment_due_end"`
|
||||
}
|
||||
|
||||
type CreateRcaProjectResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data RcaProject `json:"data"`
|
||||
}
|
||||
|
||||
type RcaProjectListData struct {
|
||||
TotalRecords int `json:"TotalRecords"`
|
||||
Records []RcaProject `json:"Records"`
|
||||
}
|
||||
|
||||
type GetRcaProjectListResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data RcaProjectListData `json:"data"`
|
||||
}
|
||||
|
||||
// 云应用项目的指标信息,示例如下:
|
||||
type RcaProjectMetricsData struct {
|
||||
Columns []string `json:"Columns"`
|
||||
Values [][]float64 `json:"Values"`
|
||||
}
|
||||
|
||||
type GetRcaProjectMetricsResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data RcaProjectMetricsData `json:"data"`
|
||||
}
|
||||
|
||||
type RcaProjectDetailData struct {
|
||||
Data RcaProject `json:"Data"`
|
||||
}
|
||||
|
||||
type GetRcaProjectDetailResponse struct {
|
||||
Code int `json:"code"`
|
||||
Data RcaProjectDetailData `json:"data"`
|
||||
}
|
||||
|
||||
// 云应用获取区域信息
|
||||
func (s *RcaService) GetRcaRegionInfo() (*GetRcaRegionInfoResponse, error) {
|
||||
path := "/product/rca/region"
|
||||
|
||||
var resp GetRcaRegionInfoResponse
|
||||
err := s.client.Do(constant.HTTPMethod_GET, path, nil, nil, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
|
||||
// 开通云应用产品
|
||||
//
|
||||
// regionID: 地域ID
|
||||
func (s *RcaService) ActivateRca(regionID int) (*common.BasicOperationResponse, error) {
|
||||
path := "/product/rca/activate"
|
||||
|
||||
var resp common.BasicOperationResponse
|
||||
err := s.client.Do(constant.HTTPMethod_POST, path, nil, ActivateRcaRequest{RegionID: regionID}, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
|
||||
// 创建云应用项目
|
||||
func (s *RcaService) CreateRcaProject(req *CreateRcaProjectRequest) (*CreateRcaProjectResponse, error) {
|
||||
path := "/product/rca/project/"
|
||||
|
||||
var resp CreateRcaProjectResponse
|
||||
err := s.client.Do(constant.HTTPMethod_POST, path, nil, req, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
|
||||
// 云应用列出项目
|
||||
//
|
||||
// options: 查询参数 可以用 EncodingStandardQueryParameters 获取.
|
||||
func (s *RcaService) ListRcaProjects(options string) (*GetRcaProjectListResponse, error) {
|
||||
path := "/product/rca/project/"
|
||||
querys := map[string]string{"no_metrics": "false", "options": options} // no_metrics 含义不明
|
||||
|
||||
var resp GetRcaProjectListResponse
|
||||
err := s.client.Do(constant.HTTPMethod_GET, path, querys, nil, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
|
||||
// 销毁云应用项目
|
||||
//
|
||||
// id: RCA项目ID
|
||||
func (s *RcaService) DestroyRcaProject(id int) (*common.BasicOperationResponse, error) {
|
||||
path := fmt.Sprintf("/product/rca/project/%d/", id)
|
||||
|
||||
var resp common.BasicOperationResponse
|
||||
err := s.client.Do(constant.HTTPMethod_DELETE, path, nil, nil, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
|
||||
// 获取Rca项目的指标信息
|
||||
//
|
||||
// id: RCA项目ID
|
||||
//
|
||||
// starttime: 开始时间(timestamp)
|
||||
//
|
||||
// endtime: 结束时间(timestamp)
|
||||
func (s *RcaService) GetRcaProjectMetrics(id int, startTime int, endTime int) (*GetRcaProjectMetricsResponse, error) {
|
||||
path := fmt.Sprintf("/product/rca/project/%d/metrics?start_time=%d&end_time=%d", id, startTime, endTime)
|
||||
|
||||
var resp GetRcaProjectMetricsResponse
|
||||
err := s.client.Do(constant.HTTPMethod_GET, path, nil, nil, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
|
||||
// 获取云应用项目详情
|
||||
//
|
||||
// id: RCA项目ID
|
||||
func (s *RcaService) GetRcaProjectDetail(id int) (*GetRcaProjectDetailResponse, error) {
|
||||
path := fmt.Sprintf("/product/rca/project/%d/", id)
|
||||
|
||||
var resp GetRcaProjectDetailResponse
|
||||
err := s.client.Do(constant.HTTPMethod_GET, path, nil, nil, &resp)
|
||||
return &resp, err
|
||||
}
|
||||
Reference in New Issue
Block a user