qingcloud-sdk-go/service/instance.go

1000 lines
28 KiB
Go

// +-------------------------------------------------------------------------
// | Copyright (C) 2016 Yunify, Inc.
// +-------------------------------------------------------------------------
// | Licensed under the Apache License, Version 2.0 (the "License");
// | you may not use this work except in compliance with the License.
// | You may obtain a copy of the License in the LICENSE file, or at:
// |
// | http://www.apache.org/licenses/LICENSE-2.0
// |
// | Unless required by applicable law or agreed to in writing, software
// | distributed under the License is distributed on an "AS IS" BASIS,
// | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// | See the License for the specific language governing permissions and
// | limitations under the License.
// +-------------------------------------------------------------------------
package service
import (
"fmt"
"time"
"github.com/yunify/qingcloud-sdk-go/config"
"github.com/yunify/qingcloud-sdk-go/request"
"github.com/yunify/qingcloud-sdk-go/request/data"
"github.com/yunify/qingcloud-sdk-go/request/errors"
)
var _ fmt.State
var _ time.Time
type InstanceService struct {
Config *config.Config
Properties *InstanceServiceProperties
}
type InstanceServiceProperties struct {
// QingCloud Zone ID
Zone *string `json:"zone" name:"zone"` // Required
}
func (s *QingCloudService) Instance(zone string) (*InstanceService, error) {
properties := &InstanceServiceProperties{
Zone: &zone,
}
return &InstanceService{Config: s.Config, Properties: properties}, nil
}
// Documentation URL: https://docs.qingcloud.com/api/instance/cease_instances.html
func (s *InstanceService) CeaseInstances(i *CeaseInstancesInput) (*CeaseInstancesOutput, error) {
if i == nil {
i = &CeaseInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "CeaseInstances",
RequestMethod: "GET",
}
x := &CeaseInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type CeaseInstancesInput struct {
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
}
func (v *CeaseInstancesInput) Validate() error {
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "CeaseInstancesInput",
}
}
return nil
}
type CeaseInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/describe_instance_types.html
func (s *InstanceService) DescribeInstanceTypes(i *DescribeInstanceTypesInput) (*DescribeInstanceTypesOutput, error) {
if i == nil {
i = &DescribeInstanceTypesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "DescribeInstanceTypes",
RequestMethod: "GET",
}
x := &DescribeInstanceTypesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type DescribeInstanceTypesInput struct {
InstanceTypes []*string `json:"instance_types" name:"instance_types" location:"params"`
}
func (v *DescribeInstanceTypesInput) Validate() error {
return nil
}
type DescribeInstanceTypesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
InstanceTypeSet []*InstanceType `json:"instance_type_set" name:"instance_type_set" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
TotalCount *int `json:"total_count" name:"total_count" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/describe_instances.html
func (s *InstanceService) DescribeInstances(i *DescribeInstancesInput) (*DescribeInstancesOutput, error) {
if i == nil {
i = &DescribeInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "DescribeInstances",
RequestMethod: "GET",
}
x := &DescribeInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type DescribeInstancesInput struct {
ImageID []*string `json:"image_id" name:"image_id" location:"params"`
// InstanceClass's available values: 0, 1
InstanceClass *int `json:"instance_class" name:"instance_class" location:"params"`
InstanceType []*string `json:"instance_type" name:"instance_type" location:"params"`
Instances []*string `json:"instances" name:"instances" location:"params"`
IsClusterNode *int `json:"is_cluster_node" name:"is_cluster_node" default:"0" location:"params"`
Limit *int `json:"limit" name:"limit" default:"20" location:"params"`
Offset *int `json:"offset" name:"offset" default:"0" location:"params"`
Owner *string `json:"owner" name:"owner" location:"params"`
ProjectID *string `json:"project_id" name:"project_id" location:"params"`
SearchWord *string `json:"search_word" name:"search_word" location:"params"`
Status []*string `json:"status" name:"status" location:"params"`
Tags []*string `json:"tags" name:"tags" location:"params"`
// Verbose's available values: 0, 1
Verbose *int `json:"verbose" name:"verbose" location:"params"`
}
func (v *DescribeInstancesInput) Validate() error {
if v.InstanceClass != nil {
instanceClassValidValues := []string{"0", "1"}
instanceClassParameterValue := fmt.Sprint(*v.InstanceClass)
instanceClassIsValid := false
for _, value := range instanceClassValidValues {
if value == instanceClassParameterValue {
instanceClassIsValid = true
}
}
if !instanceClassIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "InstanceClass",
ParameterValue: instanceClassParameterValue,
AllowedValues: instanceClassValidValues,
}
}
}
if v.Verbose != nil {
verboseValidValues := []string{"0", "1"}
verboseParameterValue := fmt.Sprint(*v.Verbose)
verboseIsValid := false
for _, value := range verboseValidValues {
if value == verboseParameterValue {
verboseIsValid = true
}
}
if !verboseIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "Verbose",
ParameterValue: verboseParameterValue,
AllowedValues: verboseValidValues,
}
}
}
return nil
}
type DescribeInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
InstanceSet []*Instance `json:"instance_set" name:"instance_set" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
TotalCount *int `json:"total_count" name:"total_count" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/modify_instance_attributes.html
func (s *InstanceService) ModifyInstanceAttributes(i *ModifyInstanceAttributesInput) (*ModifyInstanceAttributesOutput, error) {
if i == nil {
i = &ModifyInstanceAttributesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "ModifyInstanceAttributes",
RequestMethod: "GET",
}
x := &ModifyInstanceAttributesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type ModifyInstanceAttributesInput struct {
Description *string `json:"description" name:"description" location:"params"`
Instance *string `json:"instance" name:"instance" location:"params"` // Required
InstanceName *string `json:"instance_name" name:"instance_name" location:"params"`
}
func (v *ModifyInstanceAttributesInput) Validate() error {
if v.Instance == nil {
return errors.ParameterRequiredError{
ParameterName: "Instance",
ParentName: "ModifyInstanceAttributesInput",
}
}
return nil
}
type ModifyInstanceAttributesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/reset_instances.html
func (s *InstanceService) ResetInstances(i *ResetInstancesInput) (*ResetInstancesOutput, error) {
if i == nil {
i = &ResetInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "ResetInstances",
RequestMethod: "GET",
}
x := &ResetInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type ResetInstancesInput struct {
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
LoginKeyPair *string `json:"login_keypair" name:"login_keypair" location:"params"`
// LoginMode's available values: keypair, passwd
LoginMode *string `json:"login_mode" name:"login_mode" location:"params"` // Required
LoginPasswd *string `json:"login_passwd" name:"login_passwd" location:"params"`
// NeedNewSID's available values: 0, 1
NeedNewSID *int `json:"need_newsid" name:"need_newsid" default:"0" location:"params"`
}
func (v *ResetInstancesInput) Validate() error {
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "ResetInstancesInput",
}
}
if v.LoginMode == nil {
return errors.ParameterRequiredError{
ParameterName: "LoginMode",
ParentName: "ResetInstancesInput",
}
}
if v.LoginMode != nil {
loginModeValidValues := []string{"keypair", "passwd"}
loginModeParameterValue := fmt.Sprint(*v.LoginMode)
loginModeIsValid := false
for _, value := range loginModeValidValues {
if value == loginModeParameterValue {
loginModeIsValid = true
}
}
if !loginModeIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "LoginMode",
ParameterValue: loginModeParameterValue,
AllowedValues: loginModeValidValues,
}
}
}
if v.NeedNewSID != nil {
needNewSIDValidValues := []string{"0", "1"}
needNewSIDParameterValue := fmt.Sprint(*v.NeedNewSID)
needNewSIDIsValid := false
for _, value := range needNewSIDValidValues {
if value == needNewSIDParameterValue {
needNewSIDIsValid = true
}
}
if !needNewSIDIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "NeedNewSID",
ParameterValue: needNewSIDParameterValue,
AllowedValues: needNewSIDValidValues,
}
}
}
return nil
}
type ResetInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/resize_instances.html
func (s *InstanceService) ResizeInstances(i *ResizeInstancesInput) (*ResizeInstancesOutput, error) {
if i == nil {
i = &ResizeInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "ResizeInstances",
RequestMethod: "GET",
}
x := &ResizeInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type ResizeInstancesInput struct {
// CPU's available values: 1, 2, 4, 8, 16
CPU *int `json:"cpu" name:"cpu" location:"params"`
CPUModel *string `json:"cpu_model" name:"cpu_model" location:"params"`
Gpu *int `json:"gpu" name:"gpu" location:"params"`
InstanceType *string `json:"instance_type" name:"instance_type" location:"params"`
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
// Memory's available values: 1024, 2048, 4096, 6144, 8192, 12288, 16384, 24576, 32768
Memory *int `json:"memory" name:"memory" location:"params"`
OSDiskSize *int `json:"os_disk_size" name:"os_disk_size" location:"params"`
}
func (v *ResizeInstancesInput) Validate() error {
if v.CPU != nil {
cpuValidValues := []string{"1", "2", "4", "8", "16"}
cpuParameterValue := fmt.Sprint(*v.CPU)
cpuIsValid := false
for _, value := range cpuValidValues {
if value == cpuParameterValue {
cpuIsValid = true
}
}
if !cpuIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "CPU",
ParameterValue: cpuParameterValue,
AllowedValues: cpuValidValues,
}
}
}
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "ResizeInstancesInput",
}
}
if v.Memory != nil {
memoryValidValues := []string{"1024", "2048", "4096", "6144", "8192", "12288", "16384", "24576", "32768"}
memoryParameterValue := fmt.Sprint(*v.Memory)
memoryIsValid := false
for _, value := range memoryValidValues {
if value == memoryParameterValue {
memoryIsValid = true
}
}
if !memoryIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "Memory",
ParameterValue: memoryParameterValue,
AllowedValues: memoryValidValues,
}
}
}
return nil
}
type ResizeInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/restart_instances.html
func (s *InstanceService) RestartInstances(i *RestartInstancesInput) (*RestartInstancesOutput, error) {
if i == nil {
i = &RestartInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "RestartInstances",
RequestMethod: "GET",
}
x := &RestartInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type RestartInstancesInput struct {
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
}
func (v *RestartInstancesInput) Validate() error {
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "RestartInstancesInput",
}
}
return nil
}
type RestartInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/run_instances.html
func (s *InstanceService) RunInstances(i *RunInstancesInput) (*RunInstancesOutput, error) {
if i == nil {
i = &RunInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "RunInstances",
RequestMethod: "GET",
}
x := &RunInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type RunInstancesInput struct {
BillingID *string `json:"billing_id" name:"billing_id" location:"params"`
Count *int `json:"count" name:"count" default:"1" location:"params"`
// CPU's available values: 1, 2, 4, 8, 16
CPU *int `json:"cpu" name:"cpu" default:"1" location:"params"`
// CPUMax's available values: 1, 2, 4, 8, 16
CPUMax *int `json:"cpu_max" name:"cpu_max" location:"params"`
// CPUModel's available values: Westmere, SandyBridge, IvyBridge, Haswell, Broadwell
CPUModel *string `json:"cpu_model" name:"cpu_model" default:"Westmere" location:"params"`
Gpu *int `json:"gpu" name:"gpu" default:"0" location:"params"`
Hostname *string `json:"hostname" name:"hostname" location:"params"`
ImageID *string `json:"image_id" name:"image_id" location:"params"` // Required
// InstanceClass's available values: 0, 1, 2, 3, 4, 5, 6, 100, 101, 200, 201, 300, 301
InstanceClass *int `json:"instance_class" name:"instance_class" location:"params"`
InstanceName *string `json:"instance_name" name:"instance_name" location:"params"`
InstanceType *string `json:"instance_type" name:"instance_type" location:"params"`
LoginKeyPair *string `json:"login_keypair" name:"login_keypair" location:"params"`
// LoginMode's available values: keypair, passwd
LoginMode *string `json:"login_mode" name:"login_mode" location:"params"` // Required
LoginPasswd *string `json:"login_passwd" name:"login_passwd" location:"params"`
// MemMax's available values: 1024, 2048, 4096, 6144, 8192, 12288, 16384, 24576, 32768
MemMax *int `json:"mem_max" name:"mem_max" location:"params"`
// Memory's available values: 1024, 2048, 4096, 6144, 8192, 12288, 16384, 24576, 32768
Memory *int `json:"memory" name:"memory" default:"1024" location:"params"`
// NeedNewSID's available values: 0, 1
NeedNewSID *int `json:"need_newsid" name:"need_newsid" default:"0" location:"params"`
// NeedUserdata's available values: 0, 1
NeedUserdata *int `json:"need_userdata" name:"need_userdata" default:"0" location:"params"`
OSDiskSize *int `json:"os_disk_size" name:"os_disk_size" location:"params"`
SecurityGroup *string `json:"security_group" name:"security_group" location:"params"`
UIType *string `json:"ui_type" name:"ui_type" location:"params"`
UserdataFile *string `json:"userdata_file" name:"userdata_file" default:"/etc/rc.local" location:"params"`
UserdataPath *string `json:"userdata_path" name:"userdata_path" default:"/etc/qingcloud/userdata" location:"params"`
// UserdataType's available values: plain, exec, tar
UserdataType *string `json:"userdata_type" name:"userdata_type" location:"params"`
UserdataValue *string `json:"userdata_value" name:"userdata_value" location:"params"`
Volumes []*string `json:"volumes" name:"volumes" location:"params"`
VxNets []*string `json:"vxnets" name:"vxnets" location:"params"`
}
func (v *RunInstancesInput) Validate() error {
if v.CPU != nil {
cpuValidValues := []string{"1", "2", "4", "8", "16"}
cpuParameterValue := fmt.Sprint(*v.CPU)
cpuIsValid := false
for _, value := range cpuValidValues {
if value == cpuParameterValue {
cpuIsValid = true
}
}
if !cpuIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "CPU",
ParameterValue: cpuParameterValue,
AllowedValues: cpuValidValues,
}
}
}
if v.CPUMax != nil {
cpuMaxValidValues := []string{"1", "2", "4", "8", "16"}
cpuMaxParameterValue := fmt.Sprint(*v.CPUMax)
cpuMaxIsValid := false
for _, value := range cpuMaxValidValues {
if value == cpuMaxParameterValue {
cpuMaxIsValid = true
}
}
if !cpuMaxIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "CPUMax",
ParameterValue: cpuMaxParameterValue,
AllowedValues: cpuMaxValidValues,
}
}
}
if v.CPUModel != nil {
cpuModelValidValues := []string{"Westmere", "SandyBridge", "IvyBridge", "Haswell", "Broadwell"}
cpuModelParameterValue := fmt.Sprint(*v.CPUModel)
cpuModelIsValid := false
for _, value := range cpuModelValidValues {
if value == cpuModelParameterValue {
cpuModelIsValid = true
}
}
if !cpuModelIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "CPUModel",
ParameterValue: cpuModelParameterValue,
AllowedValues: cpuModelValidValues,
}
}
}
if v.ImageID == nil {
return errors.ParameterRequiredError{
ParameterName: "ImageID",
ParentName: "RunInstancesInput",
}
}
if v.InstanceClass != nil {
instanceClassValidValues := []string{"0", "1", "2", "3", "4", "5", "6", "100", "101", "200", "201", "300", "301"}
instanceClassParameterValue := fmt.Sprint(*v.InstanceClass)
instanceClassIsValid := false
for _, value := range instanceClassValidValues {
if value == instanceClassParameterValue {
instanceClassIsValid = true
}
}
if !instanceClassIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "InstanceClass",
ParameterValue: instanceClassParameterValue,
AllowedValues: instanceClassValidValues,
}
}
}
if v.LoginMode == nil {
return errors.ParameterRequiredError{
ParameterName: "LoginMode",
ParentName: "RunInstancesInput",
}
}
if v.LoginMode != nil {
loginModeValidValues := []string{"keypair", "passwd"}
loginModeParameterValue := fmt.Sprint(*v.LoginMode)
loginModeIsValid := false
for _, value := range loginModeValidValues {
if value == loginModeParameterValue {
loginModeIsValid = true
}
}
if !loginModeIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "LoginMode",
ParameterValue: loginModeParameterValue,
AllowedValues: loginModeValidValues,
}
}
}
if v.MemMax != nil {
memMaxValidValues := []string{"1024", "2048", "4096", "6144", "8192", "12288", "16384", "24576", "32768"}
memMaxParameterValue := fmt.Sprint(*v.MemMax)
memMaxIsValid := false
for _, value := range memMaxValidValues {
if value == memMaxParameterValue {
memMaxIsValid = true
}
}
if !memMaxIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "MemMax",
ParameterValue: memMaxParameterValue,
AllowedValues: memMaxValidValues,
}
}
}
if v.Memory != nil {
memoryValidValues := []string{"1024", "2048", "4096", "6144", "8192", "12288", "16384", "24576", "32768"}
memoryParameterValue := fmt.Sprint(*v.Memory)
memoryIsValid := false
for _, value := range memoryValidValues {
if value == memoryParameterValue {
memoryIsValid = true
}
}
if !memoryIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "Memory",
ParameterValue: memoryParameterValue,
AllowedValues: memoryValidValues,
}
}
}
if v.NeedNewSID != nil {
needNewSIDValidValues := []string{"0", "1"}
needNewSIDParameterValue := fmt.Sprint(*v.NeedNewSID)
needNewSIDIsValid := false
for _, value := range needNewSIDValidValues {
if value == needNewSIDParameterValue {
needNewSIDIsValid = true
}
}
if !needNewSIDIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "NeedNewSID",
ParameterValue: needNewSIDParameterValue,
AllowedValues: needNewSIDValidValues,
}
}
}
if v.NeedUserdata != nil {
needUserdataValidValues := []string{"0", "1"}
needUserdataParameterValue := fmt.Sprint(*v.NeedUserdata)
needUserdataIsValid := false
for _, value := range needUserdataValidValues {
if value == needUserdataParameterValue {
needUserdataIsValid = true
}
}
if !needUserdataIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "NeedUserdata",
ParameterValue: needUserdataParameterValue,
AllowedValues: needUserdataValidValues,
}
}
}
if v.UserdataType != nil {
userdataTypeValidValues := []string{"plain", "exec", "tar"}
userdataTypeParameterValue := fmt.Sprint(*v.UserdataType)
userdataTypeIsValid := false
for _, value := range userdataTypeValidValues {
if value == userdataTypeParameterValue {
userdataTypeIsValid = true
}
}
if !userdataTypeIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "UserdataType",
ParameterValue: userdataTypeParameterValue,
AllowedValues: userdataTypeValidValues,
}
}
}
return nil
}
type RunInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
Instances []*string `json:"instances" name:"instances" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/start_instances.html
func (s *InstanceService) StartInstances(i *StartInstancesInput) (*StartInstancesOutput, error) {
if i == nil {
i = &StartInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "StartInstances",
RequestMethod: "GET",
}
x := &StartInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type StartInstancesInput struct {
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
}
func (v *StartInstancesInput) Validate() error {
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "StartInstancesInput",
}
}
return nil
}
type StartInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/stop_instances.html
func (s *InstanceService) StopInstances(i *StopInstancesInput) (*StopInstancesOutput, error) {
if i == nil {
i = &StopInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "StopInstances",
RequestMethod: "GET",
}
x := &StopInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type StopInstancesInput struct {
// Force's available values: 0, 1
Force *int `json:"force" name:"force" default:"0" location:"params"`
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
}
func (v *StopInstancesInput) Validate() error {
if v.Force != nil {
forceValidValues := []string{"0", "1"}
forceParameterValue := fmt.Sprint(*v.Force)
forceIsValid := false
for _, value := range forceValidValues {
if value == forceParameterValue {
forceIsValid = true
}
}
if !forceIsValid {
return errors.ParameterValueNotAllowedError{
ParameterName: "Force",
ParameterValue: forceParameterValue,
AllowedValues: forceValidValues,
}
}
}
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "StopInstancesInput",
}
}
return nil
}
type StopInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}
// Documentation URL: https://docs.qingcloud.com/api/instance/terminate_instances.html
func (s *InstanceService) TerminateInstances(i *TerminateInstancesInput) (*TerminateInstancesOutput, error) {
if i == nil {
i = &TerminateInstancesInput{}
}
o := &data.Operation{
Config: s.Config,
Properties: s.Properties,
APIName: "TerminateInstances",
RequestMethod: "GET",
}
x := &TerminateInstancesOutput{}
r, err := request.New(o, i, x)
if err != nil {
return nil, err
}
err = r.Send()
if err != nil {
return nil, err
}
return x, err
}
type TerminateInstancesInput struct {
Instances []*string `json:"instances" name:"instances" location:"params"` // Required
}
func (v *TerminateInstancesInput) Validate() error {
if len(v.Instances) == 0 {
return errors.ParameterRequiredError{
ParameterName: "Instances",
ParentName: "TerminateInstancesInput",
}
}
return nil
}
type TerminateInstancesOutput struct {
Message *string `json:"message" name:"message"`
Action *string `json:"action" name:"action" location:"elements"`
JobID *string `json:"job_id" name:"job_id" location:"elements"`
RetCode *int `json:"ret_code" name:"ret_code" location:"elements"`
}