Merge pull request #204 in YUNIONIO/onecloud from ~LIZEXI/onecloud:feature/lzx-k8s-deployment-label to release/2.1.0

* commit 'a70fee75301c9c71cc4aed7db1faa3e42f9cf183':
  climc: add name filter to k8s list resource
  climc: k8s-deployment-create support labels
This commit is contained in:
邱剑
2018-09-14 13:45:15 +08:00
2 changed files with 27 additions and 3 deletions
+6 -2
View File
@@ -15,8 +15,9 @@ func (o ClusterBaseOptions) Params() *jsonutils.JSONDict {
}
type BaseListOptions struct {
Limit int `default:"20" help:"Page limit"`
Offset int `default:"0" help:"page offset"`
Limit int `default:"20" help:"Page limit"`
Offset int `default:"0" help:"Page offset"`
Name string `help:"Search by name"`
}
func (o BaseListOptions) Params() *jsonutils.JSONDict {
@@ -27,6 +28,9 @@ func (o BaseListOptions) Params() *jsonutils.JSONDict {
if o.Offset > 0 {
params.Add(jsonutils.NewInt(int64(o.Offset)), "offset")
}
if o.Name != "" {
params.Add(jsonutils.NewString(o.Name), "name")
}
return params
}
+21 -1
View File
@@ -17,7 +17,7 @@ type DeploymentCreateOptions struct {
Image string `help:"The image for the container to run"`
Replicas int64 `help:"Number of replicas for pods in this deployment"`
RunAsPrivileged bool `help:"Whether to run the container as privileged user"`
Labels string `help:"Comma separated labels to apply to the pod(s)"`
Label []string `help:"Labels to apply to the pod(s), e.g. 'env=prod'"`
Env []string `help:"Environment variables to set in container"`
Port []string `help:"Port for the service that is created, format is <protocol>:<service_port>:<container_port> e.g. tcp:80:3000"`
Net string `help:"Network config, e.g. net1, net1:10.168.222.171"`
@@ -62,6 +62,15 @@ func (o DeploymentCreateOptions) Params() (*jsonutils.JSONDict, error) {
}
params.Add(net, "networkConfig")
}
labels := jsonutils.NewArray()
for _, label := range o.Label {
label, err := parseLabel(label)
if err != nil {
return nil, err
}
labels.Add(label)
}
params.Add(labels, "labels")
return params, nil
}
@@ -145,3 +154,14 @@ func (o DeploymentCreateFromFileOptions) Params() (*jsonutils.JSONDict, error) {
params.Add(jsonutils.NewString(string(content)), "content")
return params, nil
}
func parseLabel(str string) (jsonutils.JSONObject, error) {
parts := strings.Split(str, "=")
if len(parts) != 2 {
return nil, fmt.Errorf("Invalid label string: %s", str)
}
label := jsonutils.NewDict()
label.Add(jsonutils.NewString(parts[0]), "key")
label.Add(jsonutils.NewString(parts[1]), "value")
return label, nil
}