Bladeren bron

regenerate for eci

Jackson Tian 7 jaren geleden
bovenliggende
commit
1ff542e2fe

+ 32 - 0
sdk/requests/acs_request.go

@@ -282,6 +282,38 @@ func flatRepeatedList(dataValue reflect.Value, request AcsRequest, position, pre
 						}
 					}
 				}
+			} else if typeTag == "Struct" {
+				valueField := dataValue.Field(i)
+				if valueField.Kind() == reflect.Struct {
+					if valueField.IsValid() && valueField.String() != "" {
+						valueFieldType := valueField.Type()
+						for m := 0; m < valueFieldType.NumField(); m++ {
+							fieldName := valueFieldType.Field(m).Name
+							elementValue := valueField.FieldByName(fieldName)
+							key := prefix + name + "." + fieldName
+							if elementValue.Type().String() == "[]string" {
+								for j := 0; j < elementValue.Len(); j++ {
+									err = addParam(request, fieldPosition, key+"."+strconv.Itoa(j+1), elementValue.Index(j).String())
+									if err != nil {
+										return
+									}
+								}
+							} else {
+								// 	value := elementValue.String()
+								// 	err = addParam(request, fieldPosition, key, value)
+								// 	if err != nil {
+								// 		return
+								// 	}
+								// } else {
+								// err = flatRepeatedList(elementValue, request, fieldPosition, key+".")
+								// if err != nil {
+								// 	return
+								// }
+								// }
+							}
+						}
+					}
+				}
 			}
 		}
 	}

+ 235 - 5
sdk/requests/acs_request_test.go

@@ -3,6 +3,7 @@ package requests
 import (
 	"bytes"
 	"io"
+	"sort"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -97,11 +98,11 @@ func Test_AcsRequest(t *testing.T) {
 type AcsRequestTest struct {
 	*baseRequest
 	Ontology AcsRequest
-	Query    string      `position:"Query" name:"Query"`
-	Header   string      `position:"Header" name:"Header"`
-	Path     string      `position:"Path" name:"Path"`
-	Body     string      `position:"Body" name:"Body"`
-	TypeAcs  *[]string   `position:"type" name:"type" type:"Repeated"`
+	Query    string    `position:"Query" name:"Query"`
+	Header   string    `position:"Header" name:"Header"`
+	Path     string    `position:"Path" name:"Path"`
+	Body     string    `position:"Body" name:"Body"`
+	TypeAcs  *[]string `position:"type" name:"type" type:"Repeated"`
 }
 
 func (r AcsRequestTest) BuildQueries() string {
@@ -143,3 +144,232 @@ func Test_AcsRequest_InitParams(t *testing.T) {
 	assert.Equal(t, "header value", headers["Header"])
 	// TODO: check the body & path
 }
+
+// CreateContainerGroupRequest is the request struct for api CreateContainerGroup
+type CreateContainerGroupRequest struct {
+	*RpcRequest
+	OwnerId                 Integer                                         `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount    string                                          `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId         Integer                                         `position:"Query" name:"ResourceOwnerId"`
+	OwnerAccount            string                                          `position:"Query" name:"OwnerAccount"`
+	RegionId                string                                          `position:"Query" name:"RegionId"`
+	ZoneId                  string                                          `position:"Query" name:"ZoneId"`
+	SecurityGroupId         string                                          `position:"Query" name:"SecurityGroupId"`
+	VSwitchId               string                                          `position:"Query" name:"VSwitchId"`
+	ContainerGroupName      string                                          `position:"Query" name:"ContainerGroupName"`
+	RestartPolicy           string                                          `position:"Query" name:"RestartPolicy"`
+	Tag                     *[]CreateContainerGroup_Tag                     `position:"Query" name:"Tag" type:"Repeated"`
+	ImageRegistryCredential *[]CreateContainerGroup_ImageRegistryCredential `position:"Query" name:"ImageRegistryCredential" type:"Repeated"`
+	Container               *[]CreateContainerGroup_Container               `position:"Query" name:"Container" type:"Repeated"`
+	Volume                  *[]CreateContainerGroup_Volume                  `position:"Query" name:"Volume" type:"Repeated"`
+	EipInstanceId           string                                          `position:"Query" name:"EipInstanceId"`
+	InitContainer           *[]CreateContainerGroup_InitContainer           `position:"Query" name:"InitContainer" type:"Repeated"`
+	Cpu                     Float                                           `position:"Query" name:"Cpu"`
+	Memory                  Float                                           `position:"Query" name:"Memory"`
+	DnsConfig               CreateContainerGroup_DnsConfig                  `position:"Query" name:"DnsConfig" type:"Struct"`
+}
+
+type CreateContainerGroup_Tag struct {
+	Key   string `name:"Key"`
+	Value string `name:"Value"`
+}
+
+type CreateContainerGroup_ImageRegistryCredential struct {
+	Server   string `name:"Server"`
+	UserName string `name:"UserName"`
+	Password string `name:"Password"`
+}
+
+type CreateContainerGroup_Container struct {
+	Image           string                                 `name:"Image"`
+	Name            string                                 `name:"Name"`
+	Cpu             Float                                  `name:"Cpu"`
+	Memory          Float                                  `name:"Memory"`
+	WorkingDir      string                                 `name:"WorkingDir"`
+	ImagePullPolicy string                                 `name:"ImagePullPolicy"`
+	Command         []string                               `name:"Command" type:"Repeated"`
+	Arg             []string                               `name:"Arg" type:"Repeated"`
+	VolumeMount     *[]CreateContainerGroup_VolumeMount    `name:"VolumeMount" type:"Repeated"`
+	Port            *[]CreateContainerGroup_Port           `name:"Port" type:"Repeated"`
+	EnvironmentVar  *[]CreateContainerGroup_EnvironmentVar `name:"EnvironmentVar" type:"Repeated"`
+	ReadinessProbe  CreateContainerGroup_ReadinessProbe    `name:"ReadinessProbe" type:"Struct"`
+	LivenessProbe   CreateContainerGroup_LivenessProbe     `name:"LivenessProbe" type:"Struct"`
+	SecurityContext CreateContainerGroup_SecurityContext   `name:"SecurityContext" type:"Struct"`
+}
+
+type CreateContainerGroup_Volume struct {
+	Name             string                                `name:"Name"`
+	Type             string                                `name:"Type"`
+	NFSVolume        CreateContainerGroup_NFSVolume        `name:"NFSVolume"`
+	ConfigFileVolume CreateContainerGroup_ConfigFileVolume `name:"ConfigFileVolume"`
+}
+
+type CreateContainerGroup_InitContainer struct {
+	Name            string                                 `name:"Name"`
+	Image           string                                 `name:"Image"`
+	Cpu             Float                                  `name:"Cpu"`
+	Memory          Float                                  `name:"Memory"`
+	WorkingDir      string                                 `name:"WorkingDir"`
+	ImagePullPolicy string                                 `name:"ImagePullPolicy"`
+	Command         []string                               `name:"Command"`
+	Arg             []string                               `name:"Arg"`
+	VolumeMount     *[]CreateContainerGroup_VolumeMount    `name:"VolumeMount"`
+	Port            *[]CreateContainerGroup_Port           `name:"Port"`
+	EnvironmentVar  *[]CreateContainerGroup_EnvironmentVar `name:"EnvironmentVar"`
+	SecurityContext CreateContainerGroup_SecurityContext   `name:"SecurityContext"`
+}
+
+type CreateContainerGroup_DnsConfig struct {
+	NameServer []string                       `name:"NameServer"`
+	Search     []string                       `name:"Search"`
+	Option     *[]CreateContainerGroup_Option `name:"Option"`
+}
+
+type CreateContainerGroup_VolumeMount struct {
+	MountPath string  `name:"MountPath"`
+	ReadOnly  Boolean `name:"ReadOnly"`
+	Name      string  `name:"Name"`
+}
+
+type CreateContainerGroup_Port struct {
+	Protocol string  `name:"Protocol"`
+	Port     Integer `name:"Port"`
+}
+
+type CreateContainerGroup_EnvironmentVar struct {
+	Key   string `name:"Key"`
+	Value string `name:"Value"`
+}
+
+type CreateContainerGroup_ReadinessProbe struct {
+	InitialDelaySeconds Integer                        `name:"InitialDelaySeconds"`
+	PeriodSeconds       Integer                        `name:"PeriodSeconds"`
+	SuccessThreshold    Integer                        `name:"SuccessThreshold"`
+	FailureThreshold    Integer                        `name:"FailureThreshold"`
+	TimeoutSeconds      Integer                        `name:"TimeoutSeconds"`
+	HttpGet             CreateContainerGroup_HttpGet   `name:"HttpGet"`
+	Exec                CreateContainerGroup_Exec      `name:"Exec"`
+	TcpSocket           CreateContainerGroup_TcpSocket `name:"TcpSocket"`
+}
+
+type CreateContainerGroup_HttpGet struct {
+	Path   string  `name:"Path"`
+	Port   Integer `name:"Port"`
+	Scheme string  `name:"Scheme"`
+}
+
+type CreateContainerGroup_Exec struct {
+	Command []string `name:"Command"`
+}
+
+type CreateContainerGroup_TcpSocket struct {
+	Port Integer `name:"Port"`
+}
+
+type CreateContainerGroup_LivenessProbe struct {
+	InitialDelaySeconds Integer                        `name:"InitialDelaySeconds"`
+	PeriodSeconds       Integer                        `name:"PeriodSeconds"`
+	SuccessThreshold    Integer                        `name:"SuccessThreshold"`
+	FailureThreshold    Integer                        `name:"FailureThreshold"`
+	TimeoutSeconds      Integer                        `name:"TimeoutSeconds"`
+	HttpGet             CreateContainerGroup_HttpGet   `name:"HttpGet"`
+	Exec                CreateContainerGroup_Exec      `name:"Exec"`
+	TcpSocket           CreateContainerGroup_TcpSocket `name:"TcpSocket"`
+}
+
+type CreateContainerGroup_SecurityContext struct {
+	ReadOnlyRootFilesystem Boolean                         `name:"ReadOnlyRootFilesystem"`
+	RunAsUser              Integer                         `name:"RunAsUser"`
+	Capability             CreateContainerGroup_Capability `name:"Capability"`
+}
+
+type CreateContainerGroup_Capability struct {
+	Add []string `name:"Add"`
+}
+
+type CreateContainerGroup_NFSVolume struct {
+	Server   string  `name:"Server"`
+	Path     string  `name:"Path"`
+	ReadOnly Boolean `name:"ReadOnly"`
+}
+
+type CreateContainerGroup_ConfigFileVolume struct {
+	ConfigFileToPath *[]CreateContainerGroup_ConfigFileToPath `name:"ConfigFileToPath"`
+}
+
+type CreateContainerGroup_ConfigFileToPath struct {
+	Content string `name:"Content"`
+	Path    string `name:"Path"`
+}
+
+type CreateContainerGroup_Option struct {
+	Name  string `name:"Name"`
+	Value string `name:"Value"`
+}
+
+func GetQueryString(r *CreateContainerGroupRequest) string {
+	queries := r.GetQueryParams()
+	// To store the keys in slice in sorted order
+	sortedKeys := make([]string, 0)
+	for k := range queries {
+		sortedKeys = append(sortedKeys, k)
+	}
+	sort.Strings(sortedKeys)
+
+	// To perform the opertion you want
+	resultBuilder := bytes.Buffer{}
+	for _, key := range sortedKeys {
+		resultBuilder.WriteString(key + "=" + queries[key] + "&")
+	}
+	return resultBuilder.String()
+}
+
+func InitRequest() (r *CreateContainerGroupRequest) {
+	r = &CreateContainerGroupRequest{
+		RpcRequest: &RpcRequest{},
+	}
+	r.InitWithApiInfo("Eci", "2018-08-08", "CreateContainerGroup", "eci", "openAPI")
+	return
+}
+
+func Test_AcsRequest_InitParams2(t *testing.T) {
+	r := InitRequest()
+	InitParams(r)
+	assert.Equal(t, "", GetQueryString(r))
+}
+
+func Test_AcsRequest_InitParams3(t *testing.T) {
+	r := InitRequest()
+	r.RegionId = "regionid"
+	InitParams(r)
+	assert.Equal(t, "RegionId=regionid&", GetQueryString(r))
+}
+
+func Test_AcsRequest_InitParams4(t *testing.T) {
+	r := InitRequest()
+	r.RegionId = "regionid"
+	r.DnsConfig = CreateContainerGroup_DnsConfig{
+		NameServer: []string{"nameserver1", "nameserver2"},
+	}
+	InitParams(r)
+	assert.Equal(t, "DnsConfig.NameServer.1=nameserver1&DnsConfig.NameServer.2=nameserver2&RegionId=regionid&",
+		GetQueryString(r))
+}
+
+func Test_AcsRequest_InitParams5(t *testing.T) {
+	r := InitRequest()
+	r.Container = &[]CreateContainerGroup_Container{
+		{
+			Image:      "nginx",
+			Name:       "nginx",
+			Cpu:        "1",
+			Memory:     "2",
+			WorkingDir: "ddd",
+		},
+	}
+	InitParams(r)
+	assert.Equal(t, "Container.1.Cpu=1&Container.1.Image=nginx&Container.1.Memory=2&Container.1.Name=nginx&Container.1.WorkingDir=ddd&",
+		GetQueryString(r))
+}
+
+// > POST /?AccessKeyId=LTAIgTHQxl9boZTV&Action=CreateContainerGroup&Container.1.Arg=%3C%5B%5Dstring+Value%3E&Container.1.Command=%3C%5B%5Dstring+Value%3E&Container.1.Cpu=1&Container.1.EnvironmentVar=%3C%2A%5B%5Deci.CreateContainerGroup_EnvironmentVar+Value%3E&Container.1.Image=nginx&Container.1.LivenessProbe=%3Ceci.CreateContainerGroup_LivenessProbe+Value%3E&Container.1.Memory=2&Container.1.Name=nginx&Container.1.Port=%3C%2A%5B%5Deci.CreateContainerGroup_Port+Value%3E&Container.1.ReadinessProbe=%3Ceci.CreateContainerGroup_ReadinessProbe+Value%3E&Container.1.SecurityContext=%3Ceci.CreateContainerGroup_SecurityContext+Value%3E&Container.1.VolumeMount=%3C%2A%5B%5Deci.CreateContainerGroup_VolumeMount+Value%3E&Container.1.WorkingDir=ddd&ContainerGroupName=123&Format=JSON&RegionId=cn-shanghai&SecurityGroupId=sg-uf63nb42ltsf0gyadb8s&Signature=wH8RagWmLuOZfQ94khrEZ5yYA9M%3D&SignatureMethod=HMAC-SHA1&SignatureNonce=ec3eca4382884dbbb98c3bd7277e25c5&SignatureType=&SignatureVersion=1.0&Timestamp=2019-01-28T08%3A00%3A04Z&VSwitchId=vsw-uf6ck0dbgl3rg6i0xq8i0&Version=2018-08-08 HTTP/1.1

+ 161 - 122
services/eci/create_container_group.go

@@ -76,128 +76,167 @@ func (client *Client) CreateContainerGroupWithCallback(request *CreateContainerG
 // CreateContainerGroupRequest is the request struct for api CreateContainerGroup
 type CreateContainerGroupRequest struct {
 	*requests.RpcRequest
-	Action                  string                                          `position:"Query" name:"Action"`
-	OwnerId                 requests.Integer                                `position:"Query" name:"OwnerId"`
-	ResourceOwnerAccount    string                                          `position:"Query" name:"ResourceOwnerAccount"`
-	ResourceOwnerId         requests.Integer                                `position:"Query" name:"ResourceOwnerId"`
-	OwnerAccount            string                                          `position:"Query" name:"OwnerAccount"`
-	RegionId                string                                          `position:"Query" name:"RegionId"`
-	ZoneId                  string                                          `position:"Query" name:"ZoneId"`
-	SecurityGroupId         string                                          `position:"Query" name:"SecurityGroupId"`
-	VSwitchId               string                                          `position:"Query" name:"VSwitchId"`
-	ContainerGroupName      string                                          `position:"Query" name:"ContainerGroupName"`
-	RestartPolicy           string                                          `position:"Query" name:"RestartPolicy"`
-	Tag                     *[]CreateContainerGroup_Tag                     `position:"Query" name:"Tag"`
-	ImageRegistryCredential *[]CreateContainerGroup_ImageRegistryCredential `position:"Query" name:"ImageRegistryCredential"`
-	Container               *[]CreateContainerGroup_Container               `position:"Query" name:"Container"`
-	Volume                  *[]CreateContainerGroup_Volume                  `position:"Query" name:"Volume"`
-	EipInstanceId           string                                          `position:"Query" name:"EipInstanceId"`
-	InitContainer           *[]CreateContainerGroup_InitContainer           `position:"Query" name:"InitContainer"`
-	DnsConfig_NameServer    []string                                        `position:"Query" name:"DnsConfig.NameServer"`
-	DnsConfig_Search        []string                                        `position:"Query" name:"DnsConfig.Search"`
-	DnsConfig_Option        *[]CreateContainerGroup_DnsConfig_Option        `position:"Query" name:"DnsConfig.Option"`
-	Cpu                     requests.Float                                  `position:"Query" name:"Cpu"`
-	Memory                  requests.Float                                  `position:"Query" name:"Memory"`
-}
-
-type CreateContainerGroup_Tag struct {
-	Key   string `json:"Key" xml:"Key"`
-	Value string `json:"Value" xml:"Value"`
-}
-
-type CreateContainerGroup_ImageRegistryCredential struct {
-	Server   string `json:"Server" xml:"Server"`
-	UserName string `json:"UserName" xml:"UserName"`
-	Password string `json:"Password" xml:"Password"`
-}
-
-type CreateContainerGroup_Container struct {
-	Image                                  string                                 `json:"Image" xml:"Image"`
-	Name                                   string                                 `json:"Name" xml:"Name"`
-	Cpu                                    requests.Float                         `json:"Cpu" xml:"Cpu"`
-	Memory                                 requests.Float                         `json:"Memory" xml:"Memory"`
-	WorkingDir                             string                                 `json:"WorkingDir" xml:"WorkingDir"`
-	ImagePullPolicy                        string                                 `json:"ImagePullPolicy" xml:"ImagePullPolicy"`
-	Command                                []string                               `json:"Command" xml:"Command"`
-	Arg                                    []string                               `json:"Arg" xml:"Arg"`
-	VolumeMount                            *[]CreateContainerGroup_VolumeMount    `json:"VolumeMount" xml:"VolumeMount"`
-	Port                                   *[]CreateContainerGroup_Port           `json:"Port" xml:"Port"`
-	EnvironmentVar                         *[]CreateContainerGroup_EnvironmentVar `json:"EnvironmentVar" xml:"EnvironmentVar"`
-	ReadinessProbe_HttpGet_Path            string                                 `json:"ReadinessProbe.HttpGet.Path" xml:"ReadinessProbe.HttpGet.Path"`
-	ReadinessProbe_HttpGet_Port            requests.Integer                       `json:"ReadinessProbe.HttpGet.Port" xml:"ReadinessProbe.HttpGet.Port"`
-	ReadinessProbe_HttpGet_Scheme          string                                 `json:"ReadinessProbe.HttpGet.Scheme" xml:"ReadinessProbe.HttpGet.Scheme"`
-	ReadinessProbe_InitialDelaySeconds     requests.Integer                       `json:"ReadinessProbe.InitialDelaySeconds" xml:"ReadinessProbe.InitialDelaySeconds"`
-	ReadinessProbe_PeriodSeconds           requests.Integer                       `json:"ReadinessProbe.PeriodSeconds" xml:"ReadinessProbe.PeriodSeconds"`
-	ReadinessProbe_SuccessThreshold        requests.Integer                       `json:"ReadinessProbe.SuccessThreshold" xml:"ReadinessProbe.SuccessThreshold"`
-	ReadinessProbe_FailureThreshold        requests.Integer                       `json:"ReadinessProbe.FailureThreshold" xml:"ReadinessProbe.FailureThreshold"`
-	ReadinessProbe_TimeoutSeconds          requests.Integer                       `json:"ReadinessProbe.TimeoutSeconds" xml:"ReadinessProbe.TimeoutSeconds"`
-	ReadinessProbe_Exec_Command            []string                               `json:"ReadinessProbe.Exec.Command" xml:"ReadinessProbe.Exec.Command"`
-	LivenessProbe_HttpGet_Path             string                                 `json:"LivenessProbe.HttpGet.Path" xml:"LivenessProbe.HttpGet.Path"`
-	LivenessProbe_HttpGet_Port             requests.Integer                       `json:"LivenessProbe.HttpGet.Port" xml:"LivenessProbe.HttpGet.Port"`
-	LivenessProbe_HttpGet_Scheme           string                                 `json:"LivenessProbe.HttpGet.Scheme" xml:"LivenessProbe.HttpGet.Scheme"`
-	LivenessProbe_InitialDelaySeconds      requests.Integer                       `json:"LivenessProbe.InitialDelaySeconds" xml:"LivenessProbe.InitialDelaySeconds"`
-	LivenessProbe_PeriodSeconds            requests.Integer                       `json:"LivenessProbe.PeriodSeconds" xml:"LivenessProbe.PeriodSeconds"`
-	LivenessProbe_SuccessThreshold         requests.Integer                       `json:"LivenessProbe.SuccessThreshold" xml:"LivenessProbe.SuccessThreshold"`
-	LivenessProbe_FailureThreshold         requests.Integer                       `json:"LivenessProbe.FailureThreshold" xml:"LivenessProbe.FailureThreshold"`
-	LivenessProbe_TimeoutSeconds           requests.Integer                       `json:"LivenessProbe.TimeoutSeconds" xml:"LivenessProbe.TimeoutSeconds"`
-	LivenessProbe_Exec_Command             []string                               `json:"LivenessProbe.Exec.Command" xml:"LivenessProbe.Exec.Command"`
-	SecurityContext_Capability_Add         []string                               `json:"SecurityContext.Capability.Add" xml:"SecurityContext.Capability.Add"`
-	SecurityContext_ReadOnlyRootFilesystem requests.Boolean                       `json:"SecurityContext.ReadOnlyRootFilesystem" xml:"SecurityContext.ReadOnlyRootFilesystem"`
-	SecurityContext_RunAsUser              requests.Integer                       `json:"SecurityContext.RunAsUser" xml:"SecurityContext.RunAsUser"`
-	ReadinessProbe_TcpSocket_Port          requests.Integer                       `json:"ReadinessProbe.TcpSocket.Port" xml:"ReadinessProbe.TcpSocket.Port"`
-	LivenessProbe_TcpSocket_Port           requests.Integer                       `json:"LivenessProbe.TcpSocket.Port" xml:"LivenessProbe.TcpSocket.Port"`
-}
-
-type CreateContainerGroup_Volume struct {
-	Name                              string                                                    `json:"Name" xml:"Name"`
-	NFSVolume_Server                  string                                                    `json:"NFSVolume.Server" xml:"NFSVolume.Server"`
-	NFSVolume_Path                    string                                                    `json:"NFSVolume.Path" xml:"NFSVolume.Path"`
-	NFSVolume_ReadOnly                requests.Boolean                                          `json:"NFSVolume.ReadOnly" xml:"NFSVolume.ReadOnly"`
-	ConfigFileVolume_ConfigFileToPath *[]CreateContainerGroup_ConfigFileVolume_ConfigFileToPath `json:"ConfigFileVolume.ConfigFileToPath" xml:"ConfigFileVolume.ConfigFileToPath"`
-	Type                              string                                                    `json:"Type" xml:"Type"`
-}
-
-type CreateContainerGroup_InitContainer struct {
-	Name                                   string                                 `json:"Name" xml:"Name"`
-	Image                                  string                                 `json:"Image" xml:"Image"`
-	Cpu                                    requests.Float                         `json:"Cpu" xml:"Cpu"`
-	Memory                                 requests.Float                         `json:"Memory" xml:"Memory"`
-	WorkingDir                             string                                 `json:"WorkingDir" xml:"WorkingDir"`
-	ImagePullPolicy                        string                                 `json:"ImagePullPolicy" xml:"ImagePullPolicy"`
-	Command                                []string                               `json:"Command" xml:"Command"`
-	Arg                                    []string                               `json:"Arg" xml:"Arg"`
-	VolumeMount                            *[]CreateContainerGroup_VolumeMount    `json:"VolumeMount" xml:"VolumeMount"`
-	Port                                   *[]CreateContainerGroup_Port           `json:"Port" xml:"Port"`
-	EnvironmentVar                         *[]CreateContainerGroup_EnvironmentVar `json:"EnvironmentVar" xml:"EnvironmentVar"`
-	SecurityContext_Capability_Add         []string                               `json:"SecurityContext.Capability.Add" xml:"SecurityContext.Capability.Add"`
-	SecurityContext_ReadOnlyRootFilesystem requests.Boolean                       `json:"SecurityContext.ReadOnlyRootFilesystem" xml:"SecurityContext.ReadOnlyRootFilesystem"`
-	SecurityContext_RunAsUser              requests.Integer                       `json:"SecurityContext.RunAsUser" xml:"SecurityContext.RunAsUser"`
-}
-
-type CreateContainerGroup_DnsConfig_Option struct {
-	Name  string `json:"Name" xml:"Name"`
-	Value string `json:"Value" xml:"Value"`
-}
-
-type CreateContainerGroup_VolumeMount struct {
-	MountPath string           `json:"MountPath" xml:"MountPath"`
-	ReadOnly  requests.Boolean `json:"ReadOnly" xml:"ReadOnly"`
-	Name      string           `json:"Name" xml:"Name"`
-}
-
-type CreateContainerGroup_Port struct {
-	Protocol string           `json:"Protocol" xml:"Protocol"`
-	Port     requests.Integer `json:"Port" xml:"Port"`
-}
-
-type CreateContainerGroup_EnvironmentVar struct {
-	Key   string `json:"Key" xml:"Key"`
-	Value string `json:"Value" xml:"Value"`
-}
-
-type CreateContainerGroup_ConfigFileVolume_ConfigFileToPath struct {
-	Content string `json:"Content" xml:"Content"`
-	Path    string `json:"Path" xml:"Path"`
+	OwnerId                 requests.Integer                               `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount    string                                         `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId         requests.Integer                               `position:"Query" name:"ResourceOwnerId"`
+	OwnerAccount            string                                         `position:"Query" name:"OwnerAccount"`
+	RegionId                string                                         `position:"Query" name:"RegionId"`
+	ZoneId                  string                                         `position:"Query" name:"ZoneId"`
+	SecurityGroupId         string                                         `position:"Query" name:"SecurityGroupId"`
+	VSwitchId               string                                         `position:"Query" name:"VSwitchId"`
+	ContainerGroupName      string                                         `position:"Query" name:"ContainerGroupName"`
+	RestartPolicy           string                                         `position:"Query" name:"RestartPolicy"`
+	Tag                     *[]CreateContainerGroupTag                     `position:"Query" name:"Tag" type:"Repeated"`
+	ImageRegistryCredential *[]CreateContainerGroupImageRegistryCredential `position:"Query" name:"ImageRegistryCredential" type:"Repeated"`
+	Container               *[]CreateContainerGroupContainer               `position:"Query" name:"Container" type:"Repeated"`
+	Volume                  *[]CreateContainerGroupVolume                  `position:"Query" name:"Volume" type:"Repeated"`
+	EipInstanceId           string                                         `position:"Query" name:"EipInstanceId"`
+	InitContainer           *[]CreateContainerGroupInitContainer           `position:"Query" name:"InitContainer" type:"Repeated"`
+	Cpu                     requests.Float                                 `position:"Query" name:"Cpu"`
+	Memory                  requests.Float                                 `position:"Query" name:"Memory"`
+	ResourceGroupId         string                                         `position:"Query" name:"ResourceGroupId"`
+	DnsConfig               CreateContainerGroupDnsConfig                  `position:"Query" name:"DnsConfig" type:"Struct"`
+}
+
+type CreateContainerGroupTag struct {
+	Key   string `name:"Key"`
+	Value string `name:"Value"`
+}
+
+type CreateContainerGroupImageRegistryCredential struct {
+	Server   string `name:"Server"`
+	UserName string `name:"UserName"`
+	Password string `name:"Password"`
+}
+
+type CreateContainerGroupContainer struct {
+	Image           string                                `name:"Image"`
+	Name            string                                `name:"Name"`
+	Cpu             requests.Float                        `name:"Cpu"`
+	Memory          requests.Float                        `name:"Memory"`
+	WorkingDir      string                                `name:"WorkingDir"`
+	ImagePullPolicy string                                `name:"ImagePullPolicy"`
+	Command         []string                              `name:"Command" type:"Repeated"`
+	Arg             []string                              `name:"Arg" type:"Repeated"`
+	VolumeMount     *[]CreateContainerGroupVolumeMount    `name:"VolumeMount" type:"Repeated"`
+	Port            *[]CreateContainerGroupPort           `name:"Port" type:"Repeated"`
+	EnvironmentVar  *[]CreateContainerGroupEnvironmentVar `name:"EnvironmentVar" type:"Repeated"`
+	Stdin           requests.Boolean                      `name:"Stdin"`
+	StdinOnce       requests.Boolean                      `name:"StdinOnce"`
+	Tty             requests.Boolean                      `name:"Tty"`
+	ReadinessProbe  CreateContainerGroupReadinessProbe    `name:"ReadinessProbe" type:"Struct"`
+	LivenessProbe   CreateContainerGroupLivenessProbe     `name:"LivenessProbe" type:"Struct"`
+	SecurityContext CreateContainerGroupSecurityContext   `name:"SecurityContext" type:"Struct"`
+}
+
+type CreateContainerGroupVolume struct {
+	Name             string                               `name:"Name"`
+	Type             string                               `name:"Type"`
+	NFSVolume        CreateContainerGroupNFSVolume        `name:"NFSVolume" type:"Struct"`
+	ConfigFileVolume CreateContainerGroupConfigFileVolume `name:"ConfigFileVolume" type:"Struct"`
+}
+
+type CreateContainerGroupInitContainer struct {
+	Name            string                                `name:"Name"`
+	Image           string                                `name:"Image"`
+	Cpu             requests.Float                        `name:"Cpu"`
+	Memory          requests.Float                        `name:"Memory"`
+	WorkingDir      string                                `name:"WorkingDir"`
+	ImagePullPolicy string                                `name:"ImagePullPolicy"`
+	Command         []string                              `name:"Command" type:"Repeated"`
+	Arg             []string                              `name:"Arg" type:"Repeated"`
+	VolumeMount     *[]CreateContainerGroupVolumeMount    `name:"VolumeMount" type:"Repeated"`
+	Port            *[]CreateContainerGroupPort           `name:"Port" type:"Repeated"`
+	EnvironmentVar  *[]CreateContainerGroupEnvironmentVar `name:"EnvironmentVar" type:"Repeated"`
+	SecurityContext CreateContainerGroupSecurityContext   `name:"SecurityContext" type:"Struct"`
+}
+
+type CreateContainerGroupDnsConfig struct {
+	NameServer []string                      `name:"NameServer"`
+	Search     []string                      `name:"Search"`
+	Option     *[]CreateContainerGroupOption `name:"Option"`
+}
+
+type CreateContainerGroupVolumeMount struct {
+	MountPath string           `name:"MountPath"`
+	ReadOnly  requests.Boolean `name:"ReadOnly"`
+	Name      string           `name:"Name"`
+}
+
+type CreateContainerGroupPort struct {
+	Protocol string           `name:"Protocol"`
+	Port     requests.Integer `name:"Port"`
+}
+
+type CreateContainerGroupEnvironmentVar struct {
+	Key   string `name:"Key"`
+	Value string `name:"Value"`
+}
+
+type CreateContainerGroupReadinessProbe struct {
+	InitialDelaySeconds requests.Integer              `name:"InitialDelaySeconds"`
+	PeriodSeconds       requests.Integer              `name:"PeriodSeconds"`
+	SuccessThreshold    requests.Integer              `name:"SuccessThreshold"`
+	FailureThreshold    requests.Integer              `name:"FailureThreshold"`
+	TimeoutSeconds      requests.Integer              `name:"TimeoutSeconds"`
+	HttpGet             CreateContainerGroupHttpGet   `name:"HttpGet"`
+	Exec                CreateContainerGroupExec      `name:"Exec"`
+	TcpSocket           CreateContainerGroupTcpSocket `name:"TcpSocket"`
+}
+
+type CreateContainerGroupHttpGet struct {
+	Path   string           `name:"Path"`
+	Port   requests.Integer `name:"Port"`
+	Scheme string           `name:"Scheme"`
+}
+
+type CreateContainerGroupExec struct {
+	Command []string `name:"Command"`
+}
+
+type CreateContainerGroupTcpSocket struct {
+	Port requests.Integer `name:"Port"`
+}
+
+type CreateContainerGroupLivenessProbe struct {
+	InitialDelaySeconds requests.Integer              `name:"InitialDelaySeconds"`
+	PeriodSeconds       requests.Integer              `name:"PeriodSeconds"`
+	SuccessThreshold    requests.Integer              `name:"SuccessThreshold"`
+	FailureThreshold    requests.Integer              `name:"FailureThreshold"`
+	TimeoutSeconds      requests.Integer              `name:"TimeoutSeconds"`
+	HttpGet             CreateContainerGroupHttpGet   `name:"HttpGet"`
+	Exec                CreateContainerGroupExec      `name:"Exec"`
+	TcpSocket           CreateContainerGroupTcpSocket `name:"TcpSocket"`
+}
+
+type CreateContainerGroupSecurityContext struct {
+	ReadOnlyRootFilesystem requests.Boolean               `name:"ReadOnlyRootFilesystem"`
+	RunAsUser              requests.Integer               `name:"RunAsUser"`
+	Capability             CreateContainerGroupCapability `name:"Capability"`
+}
+
+type CreateContainerGroupCapability struct {
+	Add []string `name:"Add"`
+}
+
+type CreateContainerGroupNFSVolume struct {
+	Server   string           `name:"Server"`
+	Path     string           `name:"Path"`
+	ReadOnly requests.Boolean `name:"ReadOnly"`
+}
+
+type CreateContainerGroupConfigFileVolume struct {
+	ConfigFileToPath *[]CreateContainerGroupConfigFileToPath `name:"ConfigFileToPath"`
+}
+
+type CreateContainerGroupConfigFileToPath struct {
+	Content string `name:"Content"`
+	Path    string `name:"Path"`
+}
+
+type CreateContainerGroupOption struct {
+	Name  string `name:"Name"`
+	Value string `name:"Value"`
 }
 
 // CreateContainerGroupResponse is the response struct for api CreateContainerGroup

+ 0 - 1
services/eci/delete_container_group.go

@@ -76,7 +76,6 @@ func (client *Client) DeleteContainerGroupWithCallback(request *DeleteContainerG
 // DeleteContainerGroupRequest is the request struct for api DeleteContainerGroup
 type DeleteContainerGroupRequest struct {
 	*requests.RpcRequest
-	Action               string           `position:"Query" name:"Action"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`

+ 109 - 0
services/eci/describe_container_group_price.go

@@ -0,0 +1,109 @@
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License 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.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+package eci
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeContainerGroupPrice invokes the eci.DescribeContainerGroupPrice API synchronously
+// api document: https://help.aliyun.com/api/eci/describecontainergroupprice.html
+func (client *Client) DescribeContainerGroupPrice(request *DescribeContainerGroupPriceRequest) (response *DescribeContainerGroupPriceResponse, err error) {
+	response = CreateDescribeContainerGroupPriceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeContainerGroupPriceWithChan invokes the eci.DescribeContainerGroupPrice API asynchronously
+// api document: https://help.aliyun.com/api/eci/describecontainergroupprice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeContainerGroupPriceWithChan(request *DescribeContainerGroupPriceRequest) (<-chan *DescribeContainerGroupPriceResponse, <-chan error) {
+	responseChan := make(chan *DescribeContainerGroupPriceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeContainerGroupPrice(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeContainerGroupPriceWithCallback invokes the eci.DescribeContainerGroupPrice API asynchronously
+// api document: https://help.aliyun.com/api/eci/describecontainergroupprice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeContainerGroupPriceWithCallback(request *DescribeContainerGroupPriceRequest, callback func(response *DescribeContainerGroupPriceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeContainerGroupPriceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeContainerGroupPrice(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeContainerGroupPriceRequest is the request struct for api DescribeContainerGroupPrice
+type DescribeContainerGroupPriceRequest struct {
+	*requests.RpcRequest
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	RegionId             string           `position:"Query" name:"RegionId"`
+	Cpu                  requests.Float   `position:"Query" name:"Cpu"`
+	Memory               requests.Float   `position:"Query" name:"Memory"`
+}
+
+// DescribeContainerGroupPriceResponse is the response struct for api DescribeContainerGroupPrice
+type DescribeContainerGroupPriceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDescribeContainerGroupPriceRequest creates a request to invoke DescribeContainerGroupPrice API
+func CreateDescribeContainerGroupPriceRequest() (request *DescribeContainerGroupPriceRequest) {
+	request = &DescribeContainerGroupPriceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Eci", "2018-08-08", "DescribeContainerGroupPrice", "eci", "openAPI")
+	return
+}
+
+// CreateDescribeContainerGroupPriceResponse creates a response to parse from DescribeContainerGroupPrice response
+func CreateDescribeContainerGroupPriceResponse() (response *DescribeContainerGroupPriceResponse) {
+	response = &DescribeContainerGroupPriceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 95 - 96
services/eci/describe_container_groups.go

@@ -76,77 +76,76 @@ func (client *Client) DescribeContainerGroupsWithCallback(request *DescribeConta
 // DescribeContainerGroupsRequest is the request struct for api DescribeContainerGroups
 type DescribeContainerGroupsRequest struct {
 	*requests.RpcRequest
-	Action               string                         `position:"Query" name:"Action"`
-	OwnerId              requests.Integer               `position:"Query" name:"OwnerId"`
-	ResourceOwnerAccount string                         `position:"Query" name:"ResourceOwnerAccount"`
-	ResourceOwnerId      requests.Integer               `position:"Query" name:"ResourceOwnerId"`
-	OwnerAccount         string                         `position:"Query" name:"OwnerAccount"`
-	RegionId             string                         `position:"Query" name:"RegionId"`
-	ZoneId               string                         `position:"Query" name:"ZoneId"`
-	VSwitchId            string                         `position:"Query" name:"VSwitchId"`
-	NextToken            string                         `position:"Query" name:"NextToken"`
-	Limit                requests.Integer               `position:"Query" name:"Limit"`
-	Tag                  *[]DescribeContainerGroups_Tag `position:"Query" name:"Tag"`
-	ContainerGroupIds    string                         `position:"Query" name:"ContainerGroupIds"`
-	ContainerGroupName   string                         `position:"Query" name:"ContainerGroupName"`
-	Status               string                         `position:"Query" name:"Status"`
-}
-
-type DescribeContainerGroups_Tag struct {
-	Key   string `json:"Key" xml:"Key"`
-	Value string `json:"Value" xml:"Value"`
+	OwnerId              requests.Integer              `position:"Query" name:"OwnerId"`
+	ResourceOwnerAccount string                        `position:"Query" name:"ResourceOwnerAccount"`
+	ResourceOwnerId      requests.Integer              `position:"Query" name:"ResourceOwnerId"`
+	OwnerAccount         string                        `position:"Query" name:"OwnerAccount"`
+	RegionId             string                        `position:"Query" name:"RegionId"`
+	ZoneId               string                        `position:"Query" name:"ZoneId"`
+	VSwitchId            string                        `position:"Query" name:"VSwitchId"`
+	NextToken            string                        `position:"Query" name:"NextToken"`
+	Limit                requests.Integer              `position:"Query" name:"Limit"`
+	Tag                  *[]DescribeContainerGroupsTag `position:"Query" name:"Tag" type:"Repeated"`
+	ContainerGroupIds    string                        `position:"Query" name:"ContainerGroupIds"`
+	ContainerGroupName   string                        `position:"Query" name:"ContainerGroupName"`
+	Status               string                        `position:"Query" name:"Status"`
+}
+
+type DescribeContainerGroupsTag struct {
+	Key   string `name:"Key"`
+	Value string `name:"Value"`
 }
 
 // DescribeContainerGroupsResponse is the response struct for api DescribeContainerGroups
 type DescribeContainerGroupsResponse struct {
 	*responses.BaseResponse
-	RequestId       string                                  `json:"RequestId" xml:"RequestId"`
-	NextToken       string                                  `json:"NextToken" xml:"NextToken"`
-	TotalCount      int                                     `json:"TotalCount" xml:"TotalCount"`
-	ContainerGroups DescribeContainerGroups_ContainerGroups `json:"ContainerGroups" xml:"ContainerGroups"`
-}
-
-type DescribeContainerGroups_ContainerGroups struct {
-	ContainerGroup []DescribeContainerGroups_ContainerGroup `json:"ContainerGroup" xml:"ContainerGroup"`
-}
-
-type DescribeContainerGroups_ContainerGroup struct {
-	ContainerGroupId   string                                   `json:"ContainerGroupId" xml:"ContainerGroupId"`
-	ContainerGroupName string                                   `json:"ContainerGroupName" xml:"ContainerGroupName"`
-	RegionId           string                                   `json:"RegionId" xml:"RegionId"`
-	ZoneId             string                                   `json:"ZoneId" xml:"ZoneId"`
-	Memory             float32                                  `json:"Memory" xml:"Memory"`
-	Cpu                float32                                  `json:"Cpu" xml:"Cpu"`
-	VSwitchId          string                                   `json:"VSwitchId" xml:"VSwitchId"`
-	SecurityGroupId    string                                   `json:"SecurityGroupId" xml:"SecurityGroupId"`
-	RestartPolicy      string                                   `json:"RestartPolicy" xml:"RestartPolicy"`
-	IntranetIp         string                                   `json:"IntranetIp" xml:"IntranetIp"`
-	Status             string                                   `json:"Status" xml:"Status"`
-	InternetIp         string                                   `json:"InternetIp" xml:"InternetIp"`
-	CreationTime       string                                   `json:"CreationTime" xml:"CreationTime"`
-	SucceededTime      string                                   `json:"SucceededTime" xml:"SucceededTime"`
-	EniInstanceId      string                                   `json:"EniInstanceId" xml:"EniInstanceId"`
-	Tags               []DescribeContainerGroups_Tags           `json:"Tags" xml:"Tags"`
-	Events             []DescribeContainerGroups_Events         `json:"Events" xml:"Events"`
-	Containers         []DescribeContainerGroups_Containers     `json:"Containers" xml:"Containers"`
-	Volumes            []DescribeContainerGroups_Volumes        `json:"Volumes" xml:"Volumes"`
-	InitContainers     []DescribeContainerGroups_InitContainers `json:"InitContainers" xml:"InitContainers"`
-}
-
-type DescribeContainerGroups_Tags struct {
-	Label []DescribeContainerGroups_Label `json:"Label" xml:"Label"`
-}
-
-type DescribeContainerGroups_Label struct {
+	RequestId       string                                 `json:"RequestId" xml:"RequestId"`
+	NextToken       string                                 `json:"NextToken" xml:"NextToken"`
+	TotalCount      int                                    `json:"TotalCount" xml:"TotalCount"`
+	ContainerGroups DescribeContainerGroupsContainerGroups `json:"ContainerGroups" xml:"ContainerGroups"`
+}
+
+type DescribeContainerGroupsContainerGroups struct {
+	ContainerGroup []DescribeContainerGroupsContainerGroup `json:"ContainerGroup" xml:"ContainerGroup"`
+}
+
+type DescribeContainerGroupsContainerGroup struct {
+	ContainerGroupId   string                                  `json:"ContainerGroupId" xml:"ContainerGroupId"`
+	ContainerGroupName string                                  `json:"ContainerGroupName" xml:"ContainerGroupName"`
+	RegionId           string                                  `json:"RegionId" xml:"RegionId"`
+	ZoneId             string                                  `json:"ZoneId" xml:"ZoneId"`
+	Memory             float32                                 `json:"Memory" xml:"Memory"`
+	Cpu                float32                                 `json:"Cpu" xml:"Cpu"`
+	VSwitchId          string                                  `json:"VSwitchId" xml:"VSwitchId"`
+	SecurityGroupId    string                                  `json:"SecurityGroupId" xml:"SecurityGroupId"`
+	RestartPolicy      string                                  `json:"RestartPolicy" xml:"RestartPolicy"`
+	IntranetIp         string                                  `json:"IntranetIp" xml:"IntranetIp"`
+	Status             string                                  `json:"Status" xml:"Status"`
+	InternetIp         string                                  `json:"InternetIp" xml:"InternetIp"`
+	CreationTime       string                                  `json:"CreationTime" xml:"CreationTime"`
+	SucceededTime      string                                  `json:"SucceededTime" xml:"SucceededTime"`
+	EniInstanceId      string                                  `json:"EniInstanceId" xml:"EniInstanceId"`
+	Tags               []DescribeContainerGroupsTags           `json:"Tags" xml:"Tags"`
+	Events             []DescribeContainerGroupsEvents         `json:"Events" xml:"Events"`
+	Containers         []DescribeContainerGroupsContainers     `json:"Containers" xml:"Containers"`
+	Volumes            []DescribeContainerGroupsVolumes        `json:"Volumes" xml:"Volumes"`
+	InitContainers     []DescribeContainerGroupsInitContainers `json:"InitContainers" xml:"InitContainers"`
+}
+
+type DescribeContainerGroupsTags struct {
+	Label []DescribeContainerGroupsLabel `json:"Label" xml:"Label"`
+}
+
+type DescribeContainerGroupsLabel struct {
 	Key   string `json:"Key" xml:"Key"`
 	Value string `json:"Value" xml:"Value"`
 }
 
-type DescribeContainerGroups_Events struct {
-	Event []DescribeContainerGroups_Event `json:"Event" xml:"Event"`
+type DescribeContainerGroupsEvents struct {
+	Event []DescribeContainerGroupsEvent `json:"Event" xml:"Event"`
 }
 
-type DescribeContainerGroups_Event struct {
+type DescribeContainerGroupsEvent struct {
 	Count          int    `json:"Count" xml:"Count"`
 	Type           string `json:"Type" xml:"Type"`
 	Name           string `json:"Name" xml:"Name"`
@@ -156,75 +155,75 @@ type DescribeContainerGroups_Event struct {
 	Reason         string `json:"Reason" xml:"Reason"`
 }
 
-type DescribeContainerGroups_Containers struct {
-	Container []DescribeContainerGroups_Container `json:"Container" xml:"Container"`
+type DescribeContainerGroupsContainers struct {
+	Container []DescribeContainerGroupsContainer `json:"Container" xml:"Container"`
 }
 
-type DescribeContainerGroups_Container struct {
-	Name            string                                    `json:"Name" xml:"Name"`
-	Image           string                                    `json:"Image" xml:"Image"`
-	Memory          float32                                   `json:"Memory" xml:"Memory"`
-	Cpu             float32                                   `json:"Cpu" xml:"Cpu"`
-	RestartCount    int                                       `json:"RestartCount" xml:"RestartCount"`
-	WorkingDir      string                                    `json:"WorkingDir" xml:"WorkingDir"`
-	ImagePullPolicy string                                    `json:"ImagePullPolicy" xml:"ImagePullPolicy"`
-	VolumeMounts    []DescribeContainerGroups_VolumeMounts    `json:"VolumeMounts" xml:"VolumeMounts"`
-	Ports           []DescribeContainerGroups_Ports           `json:"Ports" xml:"Ports"`
-	EnvironmentVars []DescribeContainerGroups_EnvironmentVars `json:"EnvironmentVars" xml:"EnvironmentVars"`
+type DescribeContainerGroupsContainer struct {
+	Name            string                                   `json:"Name" xml:"Name"`
+	Image           string                                   `json:"Image" xml:"Image"`
+	Memory          float32                                  `json:"Memory" xml:"Memory"`
+	Cpu             float32                                  `json:"Cpu" xml:"Cpu"`
+	RestartCount    int                                      `json:"RestartCount" xml:"RestartCount"`
+	WorkingDir      string                                   `json:"WorkingDir" xml:"WorkingDir"`
+	ImagePullPolicy string                                   `json:"ImagePullPolicy" xml:"ImagePullPolicy"`
+	VolumeMounts    []DescribeContainerGroupsVolumeMounts    `json:"VolumeMounts" xml:"VolumeMounts"`
+	Ports           []DescribeContainerGroupsPorts           `json:"Ports" xml:"Ports"`
+	EnvironmentVars []DescribeContainerGroupsEnvironmentVars `json:"EnvironmentVars" xml:"EnvironmentVars"`
 }
 
-type DescribeContainerGroups_VolumeMounts struct {
-	VolumeMount []DescribeContainerGroups_VolumeMount `json:"VolumeMount" xml:"VolumeMount"`
+type DescribeContainerGroupsVolumeMounts struct {
+	VolumeMount []DescribeContainerGroupsVolumeMount `json:"VolumeMount" xml:"VolumeMount"`
 }
 
-type DescribeContainerGroups_VolumeMount struct {
+type DescribeContainerGroupsVolumeMount struct {
 	Name      string `json:"Name" xml:"Name"`
 	MountPath string `json:"MountPath" xml:"MountPath"`
 	ReadOnly  bool   `json:"ReadOnly" xml:"ReadOnly"`
 }
 
-type DescribeContainerGroups_Ports struct {
-	Port []DescribeContainerGroups_Port `json:"Port" xml:"Port"`
+type DescribeContainerGroupsPorts struct {
+	Port []DescribeContainerGroupsPort `json:"Port" xml:"Port"`
 }
 
-type DescribeContainerGroups_Port struct {
+type DescribeContainerGroupsPort struct {
 	Port     int    `json:"Port" xml:"Port"`
 	Protocol string `json:"Protocol" xml:"Protocol"`
 }
 
-type DescribeContainerGroups_EnvironmentVars struct {
-	EnvironmentVar []DescribeContainerGroups_EnvironmentVar `json:"EnvironmentVar" xml:"EnvironmentVar"`
+type DescribeContainerGroupsEnvironmentVars struct {
+	EnvironmentVar []DescribeContainerGroupsEnvironmentVar `json:"EnvironmentVar" xml:"EnvironmentVar"`
 }
 
-type DescribeContainerGroups_EnvironmentVar struct {
+type DescribeContainerGroupsEnvironmentVar struct {
 	Key   string `json:"Key" xml:"Key"`
 	Value string `json:"Value" xml:"Value"`
 }
 
-type DescribeContainerGroups_Volumes struct {
-	Volume []DescribeContainerGroups_Volume `json:"Volume" xml:"Volume"`
+type DescribeContainerGroupsVolumes struct {
+	Volume []DescribeContainerGroupsVolume `json:"Volume" xml:"Volume"`
 }
 
-type DescribeContainerGroups_Volume struct {
-	Type                              string                                                      `json:"Type" xml:"Type"`
-	Name                              string                                                      `json:"Name" xml:"Name"`
-	NFSVolumePath                     string                                                      `json:"NFSVolumePath" xml:"NFSVolumePath"`
-	NFSVolumeServer                   string                                                      `json:"NFSVolumeServer" xml:"NFSVolumeServer"`
-	NFSVolumeReadOnly                 bool                                                        `json:"NFSVolumeReadOnly" xml:"NFSVolumeReadOnly"`
-	ConfigFileVolumeConfigFileToPaths []DescribeContainerGroups_ConfigFileVolumeConfigFileToPaths `json:"ConfigFileVolumeConfigFileToPaths" xml:"ConfigFileVolumeConfigFileToPaths"`
+type DescribeContainerGroupsVolume struct {
+	Type                              string                                                     `json:"Type" xml:"Type"`
+	Name                              string                                                     `json:"Name" xml:"Name"`
+	NFSVolumePath                     string                                                     `json:"NFSVolumePath" xml:"NFSVolumePath"`
+	NFSVolumeServer                   string                                                     `json:"NFSVolumeServer" xml:"NFSVolumeServer"`
+	NFSVolumeReadOnly                 bool                                                       `json:"NFSVolumeReadOnly" xml:"NFSVolumeReadOnly"`
+	ConfigFileVolumeConfigFileToPaths []DescribeContainerGroupsConfigFileVolumeConfigFileToPaths `json:"ConfigFileVolumeConfigFileToPaths" xml:"ConfigFileVolumeConfigFileToPaths"`
 }
 
-type DescribeContainerGroups_ConfigFileVolumeConfigFileToPaths struct {
-	ConfigFileVolumeConfigFileToPath []DescribeContainerGroups_ConfigFileVolumeConfigFileToPath `json:"ConfigFileVolumeConfigFileToPath" xml:"ConfigFileVolumeConfigFileToPath"`
+type DescribeContainerGroupsConfigFileVolumeConfigFileToPaths struct {
+	ConfigFileVolumeConfigFileToPath []DescribeContainerGroupsConfigFileVolumeConfigFileToPath `json:"ConfigFileVolumeConfigFileToPath" xml:"ConfigFileVolumeConfigFileToPath"`
 }
 
-type DescribeContainerGroups_ConfigFileVolumeConfigFileToPath struct {
+type DescribeContainerGroupsConfigFileVolumeConfigFileToPath struct {
 	Content string `json:"Content" xml:"Content"`
 	Path    string `json:"Path" xml:"Path"`
 }
 
-type DescribeContainerGroups_InitContainers struct {
-	Container []DescribeContainerGroups_Container `json:"Container" xml:"Container"`
+type DescribeContainerGroupsInitContainers struct {
+	Container []DescribeContainerGroupsContainer `json:"Container" xml:"Container"`
 }
 
 // CreateDescribeContainerGroupsRequest creates a request to invoke DescribeContainerGroups API

+ 0 - 1
services/eci/describe_container_log.go

@@ -76,7 +76,6 @@ func (client *Client) DescribeContainerLogWithCallback(request *DescribeContaine
 // DescribeContainerLogRequest is the request struct for api DescribeContainerLog
 type DescribeContainerLogRequest struct {
 	*requests.RpcRequest
-	Action               string           `position:"Query" name:"Action"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`

+ 0 - 1
services/eci/exec_container_command.go

@@ -76,7 +76,6 @@ func (client *Client) ExecContainerCommandWithCallback(request *ExecContainerCom
 // ExecContainerCommandRequest is the request struct for api ExecContainerCommand
 type ExecContainerCommandRequest struct {
 	*requests.RpcRequest
-	Action               string           `position:"Query" name:"Action"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`