Automatic merge from release/2.1.0 -> release/2.2.0

* commit '5646b88f78e9fdedbf116d6b2262571902debef6':
  climc: k8s resources cluster in query or data
This commit is contained in:
邱剑
2018-09-04 16:34:49 +08:00
9 changed files with 43 additions and 46 deletions
+2 -1
View File
@@ -17,7 +17,8 @@ func initConfigMap() {
R(&listOpt{}, cmdN("list"), "List k8s configmap", func(s *mcclient.ClientSession, args *listOpt) error {
params := fetchNamespaceParams(args.namespaceListOptions)
params.Update(fetchPagingParams(args.baseListOptions))
ret, err := k8s.ConfigMaps.ListInContexts(s, params, args.ClusterContext())
params.Update(args.ClusterParams())
ret, err := k8s.ConfigMaps.List(s, params)
if err != nil {
return err
}
+6 -5
View File
@@ -25,7 +25,8 @@ func initDeployment() {
R(&listOpt{}, cmdN("list"), "List k8s deployment", func(s *mcclient.ClientSession, args *listOpt) error {
params := fetchNamespaceParams(args.namespaceListOptions)
params.Update(fetchPagingParams(args.baseListOptions))
ret, err := k8s.Deployments.ListInContexts(s, params, args.ClusterContext())
params.Update(args.ClusterParams())
ret, err := k8s.Deployments.List(s, params)
if err != nil {
return err
}
@@ -45,7 +46,7 @@ func initDeployment() {
Net string `help:"Network config, e.g. net1, net1:10.168.222.171"`
}
R(&createOpt{}, cmdN("create"), "Create deployment resource", func(s *mcclient.ClientSession, args *createOpt) error {
params := jsonutils.NewDict()
params := args.ClusterParams()
if len(args.Image) == 0 {
return fmt.Errorf("Image must provided")
}
@@ -74,7 +75,7 @@ func initDeployment() {
}
params.Add(net, "networkConfig")
}
ret, err := k8s.Deployments.CreateInContexts(s, params, args.ClusterContext())
ret, err := k8s.Deployments.Create(s, params)
if err != nil {
return err
}
@@ -87,11 +88,11 @@ func initDeployment() {
}
R(&getOpt{}, cmdN("show"), "Get deployment details", func(s *mcclient.ClientSession, args *getOpt) error {
id := args.NAME
params := jsonutils.NewDict()
params := args.ClusterParams()
if args.Namespace != "" {
params.Add(jsonutils.NewString(args.Namespace), "namespace")
}
ret, err := k8s.Deployments.GetInContexts(s, id, params, args.ClusterContext())
ret, err := k8s.Deployments.Get(s, id, params)
if err != nil {
return err
}
+5 -3
View File
@@ -33,8 +33,10 @@ type clusterBaseOptions struct {
Cluster string `default:"$K8S_CLUSTER|default" help:"Kubernetes cluster name"`
}
func (o clusterBaseOptions) ClusterContext() []modules.ManagerContext {
return []modules.ManagerContext{clusterContext(o.Cluster)}
func (o clusterBaseOptions) ClusterParams() *jsonutils.JSONDict {
ret := jsonutils.NewDict()
ret.Add(jsonutils.NewString(o.Cluster), "cluster")
return ret
}
type baseListOptions struct {
@@ -70,7 +72,7 @@ type resourceGetOptions struct {
}
func (o resourceGetOptions) ToJSON() *jsonutils.JSONDict {
params := jsonutils.NewDict()
params := o.ClusterParams()
if o.Namespace != "" {
params.Add(jsonutils.NewString(o.Namespace), "namespace")
}
+3 -2
View File
@@ -19,7 +19,8 @@ func initPod() {
R(&listOpt{}, cmdN("list"), "List k8s pod", func(s *mcclient.ClientSession, args *listOpt) error {
params := fetchNamespaceParams(args.namespaceListOptions)
params.Update(fetchPagingParams(args.baseListOptions))
ret, err := k8s.Pods.ListInContexts(s, params, args.ClusterContext())
params.Update(args.ClusterParams())
ret, err := k8s.Pods.List(s, params)
if err != nil {
return err
}
@@ -32,7 +33,7 @@ func initPod() {
}
R(&deleteOpt{}, cmdN("delete"), "Delete pod", func(s *mcclient.ClientSession, args *deleteOpt) error {
id := args.NAME
ret, err := k8s.Pods.DeleteInContexts(s, id, args.ToJSON(), args.ClusterContext())
ret, err := k8s.Pods.Delete(s, id, args.ToJSON())
if err != nil {
return err
}
+2 -2
View File
@@ -17,7 +17,7 @@ type rawDeleteOpt struct {
func initRaw() {
R(&rawGetOpt{}, "k8s-get", "Get k8s resource instance raw info", func(s *mcclient.ClientSession, args *rawGetOpt) error {
obj, err := k8s.RawResource.Get(s, args.KIND, args.Namespace, args.NAME, nil, args.ClusterContext())
obj, err := k8s.RawResource.Get(s, args.KIND, args.Namespace, args.NAME, args.ClusterParams())
if err != nil {
return err
}
@@ -26,7 +26,7 @@ func initRaw() {
})
R(&rawDeleteOpt{}, "k8s-delete", "Delete k8s resource instance", func(s *mcclient.ClientSession, args *rawDeleteOpt) error {
err := k8s.RawResource.Delete(s, args.KIND, args.Namespace, args.NAME, nil, args.ClusterContext())
err := k8s.RawResource.Delete(s, args.KIND, args.Namespace, args.NAME, args.ClusterParams())
if err != nil {
return err
}
+8 -5
View File
@@ -29,6 +29,7 @@ func initRelease() {
R(&listOpt{}, cmdN("list"), "List k8s cluster helm releases", func(s *mcclient.ClientSession, args *listOpt) error {
params := fetchNamespaceParams(args.namespaceListOptions)
params.Update(fetchPagingParams(args.baseListOptions))
params.Update(args.ClusterParams())
if args.Filter != "" {
params.Add(json.NewString(args.Filter), "filter")
}
@@ -57,7 +58,7 @@ func initRelease() {
if args.Pending {
params.Add(json.JSONTrue, "pending")
}
ret, err := k8s.Releases.ListInContexts(s, params, args.ClusterContext())
ret, err := k8s.Releases.List(s, params)
if err != nil {
return err
}
@@ -70,7 +71,7 @@ func initRelease() {
NAME string `help:"Release instance name"`
}
R(&showOpt{}, cmdN("show"), "Get helm release details", func(s *mcclient.ClientSession, args *showOpt) error {
ret, err := k8s.Releases.GetInContexts(s, args.NAME, nil, args.ClusterContext())
ret, err := k8s.Releases.Get(s, args.NAME, args.ClusterParams())
if err != nil {
return err
}
@@ -121,6 +122,7 @@ func initRelease() {
if err != nil {
return err
}
params.Update(args.ClusterParams())
params.Add(json.NewString(args.CHARTNAME), "chart_name")
if args.Namespace != "" {
params.Add(json.NewString(args.Namespace), "namespace")
@@ -128,7 +130,7 @@ func initRelease() {
if args.Name != "" {
params.Add(json.NewString(args.Name), "release_name")
}
ret, err := k8s.Releases.CreateInContexts(s, params, args.ClusterContext())
ret, err := k8s.Releases.Create(s, params)
if err != nil {
return err
}
@@ -149,6 +151,7 @@ func initRelease() {
if err != nil {
return err
}
params.Update(args.ClusterParams())
params.Add(json.NewString(args.CHARTNAME), "chart_name")
params.Add(json.NewString(args.NAME), "release_name")
if args.ReuseValues {
@@ -158,7 +161,7 @@ func initRelease() {
params.Add(json.JSONTrue, "reset_values")
}
res, err := k8s.Releases.PutInContexts(s, args.NAME, params, args.ClusterContext())
res, err := k8s.Releases.Put(s, args.NAME, params)
if err != nil {
return err
}
@@ -171,7 +174,7 @@ func initRelease() {
NAME string `help:"Release instance name"`
}
R(&deleteOpt{}, cmdN("delete"), "Delete release", func(s *mcclient.ClientSession, args *deleteOpt) error {
_, err := k8s.Releases.DeleteInContexts(s, args.NAME, nil, args.ClusterContext())
_, err := k8s.Releases.Delete(s, args.NAME, args.ClusterParams())
return err
})
}
+2 -1
View File
@@ -17,7 +17,8 @@ func initService() {
R(&listOpt{}, cmdN("list"), "List k8s service", func(s *mcclient.ClientSession, args *listOpt) error {
params := fetchNamespaceParams(args.namespaceListOptions)
params.Update(fetchPagingParams(args.baseListOptions))
ret, err := k8s.Services.ListInContexts(s, params, args.ClusterContext())
params.Update(args.ClusterParams())
ret, err := k8s.Services.List(s, params)
if err != nil {
return err
}
+2 -2
View File
@@ -28,7 +28,7 @@ func initTiller() {
MaxHistory int `json:"history_max"`
}
R(&createOpt{}, cmdN("create"), "Install helm tiller server to Kubernetes cluster", func(s *mcclient.ClientSession, args *createOpt) error {
params := json.NewDict()
params := args.ClusterParams()
if len(args.KubeContext) > 0 {
params.Add(json.NewString(args.KubeContext), "kube_context")
}
@@ -46,7 +46,7 @@ func initTiller() {
if args.MaxHistory > 0 {
params.Add(json.NewInt(int64(args.MaxHistory)), "history_max")
}
ret, err := k8s.Tiller.CreateInContexts(s, params, args.ClusterContext())
ret, err := k8s.Tiller.Create(s, params)
if err != nil {
return err
}
+13 -25
View File
@@ -2,13 +2,11 @@ package k8s
import (
"fmt"
"net/url"
"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/mcclient/modules"
)
var RawResource *RawResourceManager
@@ -19,33 +17,23 @@ func init() {
}
}
type rawResourceContext struct {
type rawResource struct {
kind string
name string
query jsonutils.JSONObject
ctxs []modules.ManagerContext
}
func newRawResourceContext(kind, namespace, name string, query jsonutils.JSONObject, ctxs []modules.ManagerContext) *rawResourceContext {
func newRawResource(kind, namespace, name string, query jsonutils.JSONObject) *rawResource {
nsQuery := getNamespaceQuery(namespace)
if query != nil {
nsQuery.Update(query)
}
ctx := &rawResourceContext{kind: kind, name: name, query: nsQuery, ctxs: ctxs}
ctx := &rawResource{kind: kind, name: name, query: nsQuery}
return ctx
}
func (ctx rawResourceContext) contextPath() string {
func (ctx rawResource) path() string {
segs := make([]string, 0)
ctxs := ctx.ctxs
if ctxs != nil && len(ctxs) > 0 {
for _, c := range ctxs {
segs = append(segs, c.InstanceManager.KeyString())
if len(c.InstanceId) > 0 {
segs = append(segs, url.PathEscape(c.InstanceId))
}
}
}
segs = append(segs, "_raw", ctx.kind, ctx.name)
path := fmt.Sprintf("/%s", strings.Join(segs, "/"))
if ctx.query != nil {
@@ -74,22 +62,22 @@ func getNamespaceQuery(namespace string) *jsonutils.JSONDict {
return query
}
func (m *RawResourceManager) Get(s *mcclient.ClientSession, kind string, namespace string, name string, query jsonutils.JSONObject, ctxs []modules.ManagerContext) (jsonutils.JSONObject, error) {
ctx := newRawResourceContext(kind, namespace, name, query, ctxs)
return m.request(s, "GET", ctx.contextPath(), nil)
func (m *RawResourceManager) Get(s *mcclient.ClientSession, kind string, namespace string, name string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) {
ctx := newRawResource(kind, namespace, name, query)
return m.request(s, "GET", ctx.path(), nil)
}
func (m *RawResourceManager) Put(s *mcclient.ClientSession, kind string, namespace string, name string, body jsonutils.JSONObject, ctxs []modules.ManagerContext) error {
func (m *RawResourceManager) Put(s *mcclient.ClientSession, kind string, namespace string, name string, body jsonutils.JSONObject) error {
rawBytes := body.String()
newBody := jsonutils.NewDict()
newBody.Add(jsonutils.NewString(rawBytes), "raw")
ctx := newRawResourceContext(kind, namespace, name, nil, ctxs)
_, err := m.request(s, "PUT", ctx.contextPath(), newBody)
ctx := newRawResource(kind, namespace, name, nil)
_, err := m.request(s, "PUT", ctx.path(), newBody)
return err
}
func (m *RawResourceManager) Delete(s *mcclient.ClientSession, kind string, namespace string, name string, query jsonutils.JSONObject, ctxs []modules.ManagerContext) error {
ctx := newRawResourceContext(kind, namespace, name, query, ctxs)
_, err := m.request(s, "DELETE", ctx.contextPath(), nil)
func (m *RawResourceManager) Delete(s *mcclient.ClientSession, kind string, namespace string, name string, query jsonutils.JSONObject) error {
ctx := newRawResource(kind, namespace, name, query)
_, err := m.request(s, "DELETE", ctx.path(), nil)
return err
}