2017-03-24 12:04:56 +01:00
|
|
|
package rds
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/denverdino/aliyungo/common"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
type DBInstanceIPArray struct {
|
|
|
|
SecurityIps string
|
|
|
|
DBInstanceIPArrayName string
|
|
|
|
DBInstanceIPArrayAttribute string
|
|
|
|
}
|
|
|
|
|
|
|
|
// ref: https://help.aliyun.com/document_detail/26242.html
|
|
|
|
type ModifySecurityIpsArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
DBInstanceIPArray
|
|
|
|
}
|
|
|
|
|
|
|
|
func (client *Client) ModifySecurityIps(args *ModifySecurityIpsArgs) (resp common.Response, err error) {
|
|
|
|
response := common.Response{}
|
|
|
|
err = client.Invoke("ModifySecurityIps", args, &response)
|
|
|
|
return response, err
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDBInstanceIPsArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DBInstanceIPList struct {
|
|
|
|
DBInstanceIPArrayName string
|
|
|
|
DBInstanceIPArrayAttribute string
|
|
|
|
SecurityIPList string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDBInstanceIPsResponse struct {
|
|
|
|
common.Response
|
|
|
|
Items struct {
|
|
|
|
DBInstanceIPArray []DBInstanceIPList
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeDBInstanceIPArrayList describe security ips
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26241.html?spm=5176.doc26242.6.715.d9pxvr
|
|
|
|
func (client *Client) DescribeDBInstanceIPs(args *DescribeDBInstanceIPsArgs) (resp *DescribeDBInstanceIPsResponse, err error) {
|
|
|
|
response := DescribeDBInstanceIPsResponse{}
|
|
|
|
err = client.Invoke("DescribeDBInstanceIPArrayList", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// InstanceStatus represents instance status
|
|
|
|
type InstanceStatus string
|
|
|
|
|
|
|
|
// Constants of InstanceStatus
|
|
|
|
const (
|
|
|
|
Creating = InstanceStatus("Creating") // For backward compatability
|
|
|
|
Running = InstanceStatus("Running")
|
|
|
|
Deleting = InstanceStatus("Deleting")
|
|
|
|
Rebooting = InstanceStatus("Rebooting")
|
|
|
|
|
|
|
|
Restoring = InstanceStatus("Restoring")
|
|
|
|
Importing = InstanceStatus("Importing")
|
|
|
|
DBInstanceNetTypeChanging = InstanceStatus("DBInstanceNetTypeChanging")
|
|
|
|
)
|
|
|
|
|
|
|
|
type DBPayType string
|
|
|
|
|
|
|
|
const (
|
|
|
|
Prepaid = DBPayType("Prepaid")
|
|
|
|
Postpaid = DBPayType("Postpaid")
|
|
|
|
)
|
|
|
|
|
|
|
|
type CommodityCode string
|
|
|
|
|
|
|
|
const (
|
|
|
|
Rds = CommodityCode("rds")
|
|
|
|
Bards = CommodityCode("bards")
|
|
|
|
Rords = CommodityCode("rords")
|
|
|
|
)
|
|
|
|
|
|
|
|
type Engine string
|
|
|
|
|
|
|
|
const (
|
|
|
|
MySQL = Engine("MySQL")
|
|
|
|
SQLServer = Engine("SQLServer")
|
|
|
|
PPAS = Engine("PPAS")
|
|
|
|
PG = Engine("PG")
|
|
|
|
)
|
|
|
|
|
|
|
|
type ConnectionMode string
|
|
|
|
|
|
|
|
const (
|
|
|
|
Performance = ConnectionMode("Performance")
|
|
|
|
Safty = ConnectionMode("Safty")
|
|
|
|
)
|
|
|
|
|
|
|
|
// default resource value for create order
|
|
|
|
const DefaultResource = "buy"
|
|
|
|
|
|
|
|
type CreateOrderArgs struct {
|
|
|
|
CommodityCode CommodityCode
|
|
|
|
RegionId common.Region
|
|
|
|
ZoneId string
|
|
|
|
Engine Engine
|
|
|
|
EngineVersion string
|
|
|
|
PayType DBPayType
|
|
|
|
DBInstanceClass string
|
|
|
|
DBInstanceStorage int
|
|
|
|
DBInstanceNetType common.NetType
|
|
|
|
InstanceNetworkType common.NetworkType
|
|
|
|
VPCId string
|
|
|
|
VSwitchId string
|
|
|
|
UsedTime int
|
|
|
|
TimeType common.TimeType
|
|
|
|
Quantity int
|
|
|
|
InstanceUsedType string
|
|
|
|
Resource string
|
|
|
|
AutoPay string
|
|
|
|
AutoRenew string
|
|
|
|
BackupId string
|
|
|
|
RestoreTime string
|
|
|
|
SecurityIPList string
|
|
|
|
BusinessInfo string
|
|
|
|
}
|
|
|
|
|
|
|
|
type CreateOrderResponse struct {
|
|
|
|
common.Response
|
|
|
|
DBInstanceId string
|
|
|
|
OrderId int
|
|
|
|
}
|
|
|
|
|
|
|
|
// CreateOrder create db instance order
|
|
|
|
// you can read doc at http://docs.alibaba-inc.com/pages/viewpage.action?pageId=259349053
|
|
|
|
func (client *Client) CreateOrder(args *CreateOrderArgs) (resp CreateOrderResponse, err error) {
|
|
|
|
response := CreateOrderResponse{}
|
|
|
|
err = client.Invoke("CreateOrder", args, &response)
|
|
|
|
return response, err
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDBInstancesArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDBInstanceAttributeResponse struct {
|
|
|
|
common.Response
|
|
|
|
Items struct {
|
|
|
|
DBInstanceAttribute []DBInstanceAttribute
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type DBInstanceAttribute struct {
|
|
|
|
DBInstanceId string
|
|
|
|
PayType DBPayType
|
|
|
|
DBInstanceType string
|
|
|
|
InstanceNetworkType string
|
|
|
|
ConnectionMode string
|
|
|
|
RegionId string
|
|
|
|
ZoneId string
|
|
|
|
ConnectionString string
|
|
|
|
Port string
|
|
|
|
Engine Engine
|
|
|
|
EngineVersion string
|
|
|
|
DBInstanceClass string
|
|
|
|
DBInstanceMemory int64
|
|
|
|
DBInstanceStorage int
|
|
|
|
DBInstanceNetType string
|
|
|
|
DBInstanceStatus InstanceStatus
|
|
|
|
DBInstanceDescription string
|
|
|
|
LockMode string
|
|
|
|
LockReason string
|
|
|
|
DBMaxQuantity int
|
|
|
|
AccountMaxQuantity int
|
|
|
|
CreationTime string
|
|
|
|
ExpireTime string
|
|
|
|
MaintainTime string
|
|
|
|
AvailabilityValue string
|
|
|
|
MaxIOPS int
|
|
|
|
MaxConnections int
|
|
|
|
MasterInstanceId string
|
|
|
|
IncrementSourceDBInstanceId string
|
|
|
|
GuardDBInstanceId string
|
|
|
|
TempDBInstanceId string
|
|
|
|
ReadOnlyDBInstanceIds ReadOnlyDBInstanceIds
|
|
|
|
SecurityIPList string
|
|
|
|
}
|
|
|
|
|
|
|
|
type ReadOnlyDBInstanceIds struct {
|
|
|
|
ReadOnlyDBInstanceId []string
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeDBInstanceAttribute describes db instance
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26231.html?spm=5176.doc26228.6.702.uhzm31
|
|
|
|
func (client *Client) DescribeDBInstanceAttribute(args *DescribeDBInstancesArgs) (resp *DescribeDBInstanceAttributeResponse, err error) {
|
|
|
|
|
|
|
|
response := DescribeDBInstanceAttributeResponse{}
|
|
|
|
|
|
|
|
err = client.Invoke("DescribeDBInstanceAttribute", args, &response)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDatabasesArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
DBName string
|
|
|
|
DBStatus InstanceStatus
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDatabasesResponse struct {
|
|
|
|
common.Response
|
|
|
|
Databases struct {
|
|
|
|
Database []Database
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type Database struct {
|
|
|
|
DBName string
|
|
|
|
DBInstanceId string
|
|
|
|
Engine string
|
|
|
|
DBStatus InstanceStatus
|
|
|
|
CharacterSetName InstanceStatus
|
|
|
|
DBDescription InstanceStatus
|
|
|
|
Account InstanceStatus
|
|
|
|
AccountPrivilege InstanceStatus
|
|
|
|
Accounts struct {
|
|
|
|
AccountPrivilegeInfo []AccountPrivilegeInfo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type AccountPrivilegeInfo struct {
|
|
|
|
Account string
|
|
|
|
AccountPrivilege string
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeDatabases describes db database
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26260.html?spm=5176.doc26258.6.732.gCx1a3
|
|
|
|
func (client *Client) DescribeDatabases(args *DescribeDatabasesArgs) (resp *DescribeDatabasesResponse, err error) {
|
|
|
|
|
|
|
|
response := DescribeDatabasesResponse{}
|
|
|
|
|
|
|
|
err = client.Invoke("DescribeDatabases", args, &response)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeAccountsArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
AccountName string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeAccountsResponse struct {
|
|
|
|
common.Response
|
|
|
|
Accounts struct {
|
|
|
|
DBInstanceAccount []DBInstanceAccount
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type DBInstanceAccount struct {
|
|
|
|
DBInstanceId string
|
|
|
|
AccountName string
|
|
|
|
AccountStatus AccountStatus
|
|
|
|
AccountDescription string
|
|
|
|
DatabasePrivileges struct {
|
|
|
|
DatabasePrivilege []DatabasePrivilege
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type AccountStatus string
|
|
|
|
|
|
|
|
const (
|
|
|
|
Unavailable = AccountStatus("Unavailable")
|
|
|
|
Available = AccountStatus("Available")
|
|
|
|
)
|
|
|
|
|
|
|
|
type DatabasePrivilege struct {
|
|
|
|
DBName string
|
|
|
|
AccountPrivilege AccountPrivilege
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeAccounts describes db accounts
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26265.html?spm=5176.doc26266.6.739.UjtjaI
|
|
|
|
func (client *Client) DescribeAccounts(args *DescribeAccountsArgs) (resp *DescribeAccountsResponse, err error) {
|
|
|
|
|
|
|
|
response := DescribeAccountsResponse{}
|
|
|
|
|
|
|
|
err = client.Invoke("DescribeAccounts", args, &response)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Default timeout value for WaitForInstance method
|
|
|
|
const InstanceDefaultTimeout = 120
|
|
|
|
const DefaultWaitForInterval = 10
|
|
|
|
|
|
|
|
// WaitForInstance waits for instance to given status
|
|
|
|
func (client *Client) WaitForInstance(instanceId string, status InstanceStatus, timeout int) error {
|
|
|
|
if timeout <= 0 {
|
|
|
|
timeout = InstanceDefaultTimeout
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
args := DescribeDBInstancesArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := client.DescribeDBInstanceAttribute(&args)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if timeout <= 0 {
|
|
|
|
return common.GetClientErrorFromString("Timeout")
|
|
|
|
}
|
|
|
|
|
|
|
|
timeout = timeout - DefaultWaitForInterval
|
|
|
|
time.Sleep(DefaultWaitForInterval * time.Second)
|
|
|
|
|
|
|
|
if len(resp.Items.DBInstanceAttribute) < 1 {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
instance := resp.Items.DBInstanceAttribute[0]
|
|
|
|
if instance.DBInstanceStatus == status {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-06-05 10:27:49 +02:00
|
|
|
// WaitForInstance waits for instance to given status
|
|
|
|
func (client *Client) WaitForInstanceAsyn(instanceId string, status InstanceStatus, timeout int) error {
|
|
|
|
if timeout <= 0 {
|
|
|
|
timeout = InstanceDefaultTimeout
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
args := DescribeDBInstancesArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := client.DescribeDBInstanceAttribute(&args)
|
|
|
|
if err != nil {
|
|
|
|
e, _ := err.(*common.Error)
|
|
|
|
if e.Code != "InvalidInstanceId.NotFound" && e.Code != "Forbidden.InstanceNotFound" {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if timeout <= 0 {
|
|
|
|
return common.GetClientErrorFromString("Timeout")
|
|
|
|
}
|
|
|
|
|
|
|
|
timeout = timeout - DefaultWaitForInterval
|
|
|
|
time.Sleep(DefaultWaitForInterval * time.Second)
|
|
|
|
if resp != nil {
|
|
|
|
|
|
|
|
if len(resp.Items.DBInstanceAttribute) < 1 {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
instance := resp.Items.DBInstanceAttribute[0]
|
|
|
|
if instance.DBInstanceStatus == status {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-03-24 12:04:56 +01:00
|
|
|
func (client *Client) WaitForAllDatabase(instanceId string, databaseNames []string, status InstanceStatus, timeout int) error {
|
|
|
|
if timeout <= 0 {
|
|
|
|
timeout = InstanceDefaultTimeout
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
args := DescribeDatabasesArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := client.DescribeDatabases(&args)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if timeout <= 0 {
|
|
|
|
return common.GetClientErrorFromString("Timeout")
|
|
|
|
}
|
|
|
|
|
|
|
|
timeout = timeout - DefaultWaitForInterval
|
|
|
|
time.Sleep(DefaultWaitForInterval * time.Second)
|
|
|
|
|
|
|
|
ready := 0
|
|
|
|
|
|
|
|
for _, nm := range databaseNames {
|
|
|
|
for _, db := range resp.Databases.Database {
|
|
|
|
if db.DBName == nm {
|
|
|
|
if db.DBStatus == status {
|
|
|
|
ready++
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ready == len(databaseNames) {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (client *Client) WaitForAccount(instanceId string, accountName string, status AccountStatus, timeout int) error {
|
|
|
|
if timeout <= 0 {
|
|
|
|
timeout = InstanceDefaultTimeout
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
args := DescribeAccountsArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
AccountName: accountName,
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := client.DescribeAccounts(&args)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
accs := resp.Accounts.DBInstanceAccount
|
|
|
|
|
|
|
|
if timeout <= 0 {
|
|
|
|
return common.GetClientErrorFromString("Timeout")
|
|
|
|
}
|
|
|
|
|
|
|
|
timeout = timeout - DefaultWaitForInterval
|
|
|
|
time.Sleep(DefaultWaitForInterval * time.Second)
|
|
|
|
|
|
|
|
if len(accs) < 1 {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
acc := accs[0]
|
|
|
|
|
|
|
|
if acc.AccountStatus == status {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (client *Client) WaitForPublicConnection(instanceId string, timeout int) error {
|
|
|
|
if timeout <= 0 {
|
|
|
|
timeout = InstanceDefaultTimeout
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
args := DescribeDBInstanceNetInfoArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := client.DescribeDBInstanceNetInfo(&args)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if timeout <= 0 {
|
|
|
|
return common.GetClientErrorFromString("Timeout")
|
|
|
|
}
|
|
|
|
|
|
|
|
timeout = timeout - DefaultWaitForInterval
|
|
|
|
time.Sleep(DefaultWaitForInterval * time.Second)
|
|
|
|
|
|
|
|
ready := false
|
|
|
|
for _, info := range resp.DBInstanceNetInfos.DBInstanceNetInfo {
|
|
|
|
if info.IPType == Public {
|
|
|
|
ready = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ready {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (client *Client) WaitForAccountPrivilege(instanceId, accountName, dbName string, privilege AccountPrivilege, timeout int) error {
|
|
|
|
if timeout <= 0 {
|
|
|
|
timeout = InstanceDefaultTimeout
|
|
|
|
}
|
|
|
|
for {
|
|
|
|
args := DescribeAccountsArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
AccountName: accountName,
|
|
|
|
}
|
|
|
|
|
|
|
|
resp, err := client.DescribeAccounts(&args)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
accs := resp.Accounts.DBInstanceAccount
|
|
|
|
|
|
|
|
if timeout <= 0 {
|
|
|
|
return common.GetClientErrorFromString("Timeout")
|
|
|
|
}
|
|
|
|
|
|
|
|
timeout = timeout - DefaultWaitForInterval
|
|
|
|
time.Sleep(DefaultWaitForInterval * time.Second)
|
|
|
|
|
|
|
|
if len(accs) < 1 {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
acc := accs[0]
|
|
|
|
|
|
|
|
ready := false
|
|
|
|
for _, dp := range acc.DatabasePrivileges.DatabasePrivilege {
|
|
|
|
if dp.DBName == dbName && dp.AccountPrivilege == privilege {
|
|
|
|
ready = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ready {
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type DeleteDBInstanceArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DeleteDBInstanceResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
// DeleteInstance deletes db instance
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26229.html?spm=5176.doc26315.6.700.7SmyAT
|
|
|
|
func (client *Client) DeleteInstance(instanceId string) error {
|
|
|
|
args := DeleteDBInstanceArgs{DBInstanceId: instanceId}
|
|
|
|
response := DeleteDBInstanceResponse{}
|
|
|
|
err := client.Invoke("DeleteDBInstance", &args, &response)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
type DeleteDatabaseArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
DBName string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DeleteDatabaseResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
// DeleteInstance deletes database
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26259.html?spm=5176.doc26260.6.731.Abjwne
|
|
|
|
func (client *Client) DeleteDatabase(instanceId, dbName string) error {
|
|
|
|
args := DeleteDatabaseArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
DBName: dbName,
|
|
|
|
}
|
|
|
|
response := DeleteDatabaseResponse{}
|
|
|
|
err := client.Invoke("DeleteDatabase", &args, &response)
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeRegionsArgs struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeRegionsResponse struct {
|
|
|
|
Regions struct {
|
|
|
|
RDSRegion []RDSRegion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type RDSRegion struct {
|
|
|
|
RegionId string
|
|
|
|
ZoneId string
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeRegions describe rds regions
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26243.html?spm=5176.doc26244.6.715.OSNUa8
|
|
|
|
func (client *Client) DescribeRegions() (resp *DescribeRegionsResponse, err error) {
|
|
|
|
args := DescribeRegionsArgs{}
|
|
|
|
response := DescribeRegionsResponse{}
|
|
|
|
err = client.Invoke("DescribeRegions", &args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type CreateDatabaseResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
type CreateDatabaseArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
DBName string
|
|
|
|
CharacterSetName string
|
|
|
|
DBDescription string
|
|
|
|
}
|
|
|
|
|
|
|
|
// CreateDatabase create rds database
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26243.html?spm=5176.doc26244.6.715.OSNUa8
|
|
|
|
func (client *Client) CreateDatabase(args *CreateDatabaseArgs) (resp *CreateDatabaseResponse, err error) {
|
|
|
|
response := CreateDatabaseResponse{}
|
|
|
|
err = client.Invoke("CreateDatabase", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type CreateAccountResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
type AccountType struct {
|
|
|
|
Normal string
|
|
|
|
Super string
|
|
|
|
}
|
|
|
|
|
|
|
|
type CreateAccountArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
AccountName string
|
|
|
|
AccountPassword string
|
|
|
|
AccountType AccountType
|
|
|
|
AccountDescription string
|
|
|
|
}
|
|
|
|
|
|
|
|
// CreateAccount create rds account
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26263.html?spm=5176.doc26240.6.736.ZDihok
|
|
|
|
func (client *Client) CreateAccount(args *CreateAccountArgs) (resp *CreateAccountResponse, err error) {
|
|
|
|
response := CreateAccountResponse{}
|
|
|
|
err = client.Invoke("CreateAccount", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type DeleteAccountResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
type DeleteAccountArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
AccountName string
|
|
|
|
}
|
|
|
|
|
|
|
|
// DeleteAccount delete account
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26264.html?spm=5176.doc26269.6.737.CvlZp6
|
|
|
|
func (client *Client) DeleteAccount(instanceId, accountName string) (resp *DeleteAccountResponse, err error) {
|
|
|
|
args := DeleteAccountArgs{
|
|
|
|
DBInstanceId: instanceId,
|
|
|
|
AccountName: accountName,
|
|
|
|
}
|
|
|
|
|
|
|
|
response := DeleteAccountResponse{}
|
|
|
|
err = client.Invoke("DeleteAccount", &args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type GrantAccountPrivilegeResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
type GrantAccountPrivilegeArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
AccountName string
|
|
|
|
DBName string
|
|
|
|
AccountPrivilege AccountPrivilege
|
|
|
|
}
|
|
|
|
|
|
|
|
type AccountPrivilege string
|
|
|
|
|
|
|
|
const (
|
|
|
|
ReadOnly = AccountPrivilege("ReadOnly")
|
|
|
|
ReadWrite = AccountPrivilege("ReadWrite")
|
|
|
|
)
|
|
|
|
|
|
|
|
// GrantAccountPrivilege grant database privilege to account
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26266.html?spm=5176.doc26264.6.739.o2y01n
|
|
|
|
func (client *Client) GrantAccountPrivilege(args *GrantAccountPrivilegeArgs) (resp *GrantAccountPrivilegeResponse, err error) {
|
|
|
|
response := GrantAccountPrivilegeResponse{}
|
|
|
|
err = client.Invoke("GrantAccountPrivilege", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type AllocateInstancePublicConnectionResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
type AllocateInstancePublicConnectionArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
ConnectionStringPrefix string
|
|
|
|
Port string
|
|
|
|
}
|
|
|
|
|
|
|
|
// AllocateInstancePublicConnection allocate public connection
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26234.html?spm=5176.doc26265.6.708.PdsJnL
|
|
|
|
func (client *Client) AllocateInstancePublicConnection(args *AllocateInstancePublicConnectionArgs) (resp *AllocateInstancePublicConnectionResponse, err error) {
|
|
|
|
response := AllocateInstancePublicConnectionResponse{}
|
|
|
|
err = client.Invoke("AllocateInstancePublicConnection", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDBInstanceNetInfoArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeDBInstanceNetInfoResponse struct {
|
|
|
|
common.Response
|
|
|
|
InstanceNetworkType string
|
|
|
|
DBInstanceNetInfos struct {
|
|
|
|
DBInstanceNetInfo []DBInstanceNetInfo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type DBInstanceNetInfo struct {
|
|
|
|
ConnectionString string
|
|
|
|
IPAddress string
|
|
|
|
Port string
|
|
|
|
VPCId string
|
|
|
|
VSwitchId string
|
|
|
|
IPType IPType
|
|
|
|
}
|
|
|
|
|
|
|
|
type IPType string
|
|
|
|
|
|
|
|
const (
|
|
|
|
Inner = IPType("Inner")
|
|
|
|
Private = IPType("Private")
|
|
|
|
Public = IPType("Public")
|
|
|
|
)
|
|
|
|
|
|
|
|
// DescribeDBInstanceNetInfo describe rds net info
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26237.html?spm=5176.doc26234.6.711.vHOktx
|
|
|
|
func (client *Client) DescribeDBInstanceNetInfo(args *DescribeDBInstanceNetInfoArgs) (resp *DescribeDBInstanceNetInfoResponse, err error) {
|
|
|
|
response := DescribeDBInstanceNetInfoResponse{}
|
|
|
|
err = client.Invoke("DescribeDBInstanceNetInfo", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type BackupPolicy struct {
|
|
|
|
PreferredBackupTime string // HH:mmZ - HH:mm Z
|
|
|
|
PreferredBackupPeriod string // Monday - Sunday
|
|
|
|
BackupRetentionPeriod int // 7 - 730
|
|
|
|
BackupLog string // enum Enable | Disabled
|
|
|
|
LogBackupRetentionPeriod string
|
|
|
|
}
|
|
|
|
|
|
|
|
type ModifyBackupPolicyArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
BackupPolicy
|
|
|
|
}
|
|
|
|
|
|
|
|
type ModifyBackupPolicyResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
// ModifyBackupPolicy modify backup policy
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26276.html?spm=5176.doc26250.6.751.KOew21
|
|
|
|
func (client *Client) ModifyBackupPolicy(args *ModifyBackupPolicyArgs) (resp *ModifyBackupPolicyResponse, err error) {
|
|
|
|
response := ModifyBackupPolicyResponse{}
|
|
|
|
err = client.Invoke("ModifyBackupPolicy", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeBackupPolicyArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
}
|
|
|
|
|
|
|
|
type DescribeBackupPolicyResponse struct {
|
|
|
|
common.Response
|
|
|
|
BackupPolicy
|
|
|
|
}
|
|
|
|
|
|
|
|
// DescribeBackupPolicy describe backup policy
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26275.html?spm=5176.doc26276.6.750.CUqjDn
|
|
|
|
func (client *Client) DescribeBackupPolicy(args *DescribeBackupPolicyArgs) (resp *DescribeBackupPolicyResponse, err error) {
|
|
|
|
response := DescribeBackupPolicyResponse{}
|
|
|
|
err = client.Invoke("DescribeBackupPolicy", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type ModifyDBInstanceSpecArgs struct {
|
|
|
|
DBInstanceId string
|
|
|
|
PayType DBPayType
|
|
|
|
DBInstanceClass string
|
|
|
|
DBInstanceStorage string
|
|
|
|
}
|
|
|
|
|
|
|
|
type ModifyDBInstanceSpecResponse struct {
|
|
|
|
common.Response
|
|
|
|
}
|
|
|
|
|
|
|
|
// ModifyDBInstanceSpec modify db instance spec
|
|
|
|
//
|
|
|
|
// You can read doc at https://help.aliyun.com/document_detail/26233.html?spm=5176.doc26258.6.707.2QOLrM
|
|
|
|
func (client *Client) ModifyDBInstanceSpec(args *ModifyDBInstanceSpecArgs) (resp *ModifyDBInstanceSpecResponse, err error) {
|
|
|
|
response := ModifyDBInstanceSpecResponse{}
|
|
|
|
err = client.Invoke("ModifyDBInstanceSpec", args, &response)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
return &response, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
var WEEK_ENUM = []string{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}
|
|
|
|
|
|
|
|
var BACKUP_TIME = []string{
|
|
|
|
"00:00Z-01:00Z", "01:00Z-02:00Z", "02:00Z-03:00Z", "03:00Z-04:00Z", "04:00Z-05:00Z",
|
|
|
|
"05:00Z-06:00Z", "06:00Z-07:00Z", "07:00Z-08:00Z", "08:00Z-09:00Z", "09:00Z-10:00Z",
|
|
|
|
"10:00Z-11:00Z", "11:00Z-12:00Z", "12:00Z-13:00Z", "13:00Z-14:00Z", "14:00Z-15:00Z",
|
|
|
|
"15:00Z-16:00Z", "16:00Z-17:00Z", "17:00Z-18:00Z", "18:00Z-19:00Z", "19:00Z-20:00Z",
|
|
|
|
"20:00Z-21:00Z", "21:00Z-22:00Z", "22:00Z-23:00Z", "23:00Z-24:00Z",
|
|
|
|
}
|
|
|
|
|
|
|
|
var CHARACTER_SET_NAME = []string{
|
|
|
|
"utf8", "gbk", "latin1", "utf8mb4",
|
|
|
|
"Chinese_PRC_CI_AS", "Chinese_PRC_CS_AS", "SQL_Latin1_General_CP1_CI_AS", "SQL_Latin1_General_CP1_CS_AS", "Chinese_PRC_BIN",
|
|
|
|
}
|