mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user