mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
climc: refactor k8s sub command
This commit is contained in:
@@ -20,7 +20,6 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
)
|
||||
|
||||
type BaseEventListOptions struct {
|
||||
@@ -54,23 +53,19 @@ type TypeEventListOptions struct {
|
||||
ID string `help:"" metavar:"OBJ_ID"`
|
||||
}
|
||||
|
||||
func doK8sEventList(s *mcclient.ClientSession, args *EventListOptions) error {
|
||||
return doEventList(*k8s.Logs.ResourceManager, s, args)
|
||||
}
|
||||
|
||||
func doComputeEventList(s *mcclient.ClientSession, args *EventListOptions) error {
|
||||
return doEventList(modules.Logs, s, args)
|
||||
return DoEventList(modules.Logs, s, args)
|
||||
}
|
||||
|
||||
func doImageEventList(s *mcclient.ClientSession, args *EventListOptions) error {
|
||||
return doEventList(modules.ImageLogs, s, args)
|
||||
return DoEventList(modules.ImageLogs, s, args)
|
||||
}
|
||||
|
||||
func doIdentityEventList(s *mcclient.ClientSession, args *EventListOptions) error {
|
||||
return doEventList(modules.IdentityLogs, s, args)
|
||||
return DoEventList(modules.IdentityLogs, s, args)
|
||||
}
|
||||
|
||||
func doEventList(man modulebase.ResourceManager, s *mcclient.ClientSession, args *EventListOptions) error {
|
||||
func DoEventList(man modulebase.ResourceManager, s *mcclient.ClientSession, args *EventListOptions) error {
|
||||
params := jsonutils.NewDict()
|
||||
if len(args.Type) > 0 {
|
||||
params.Add(jsonutils.NewStringArray(args.Type), "obj_type")
|
||||
@@ -190,16 +185,6 @@ func init() {
|
||||
return doComputeEventList(s, &nargs)
|
||||
})
|
||||
|
||||
R(&TypeEventListOptions{}, "kubecluster-event", "Show operation event logs of kubernetes cluster", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
|
||||
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"kubecluster"}}
|
||||
return doK8sEventList(s, &nargs)
|
||||
})
|
||||
|
||||
R(&TypeEventListOptions{}, "kubemachine-event", "Show operation event logs of kubernetes machine", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
|
||||
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"kubemachine"}}
|
||||
return doK8sEventList(s, &nargs)
|
||||
})
|
||||
|
||||
R(&TypeEventListOptions{}, "image-event", "Show operation event logs of glance images", func(s *mcclient.ClientSession, args *TypeEventListOptions) error {
|
||||
nargs := EventListOptions{BaseEventListOptions: args.BaseEventListOptions, Id: args.ID, Type: []string{"image"}}
|
||||
return doImageEventList(s, &nargs)
|
||||
|
||||
+20
-20
@@ -78,7 +78,7 @@ type ICreateOpt interface {
|
||||
IOpt
|
||||
}
|
||||
|
||||
func (cmd ResourceCmd) runWithDesc(action, desc string, args interface{}, callback interface{}) {
|
||||
func (cmd ResourceCmd) RunWithDesc(action, desc string, args interface{}, callback interface{}) {
|
||||
man := cmd.manager
|
||||
prefix := cmd.prefix
|
||||
if prefix != "" {
|
||||
@@ -98,8 +98,8 @@ func (cmd ResourceCmd) runWithDesc(action, desc string, args interface{}, callba
|
||||
R(args, fmt.Sprintf("%s%s-%s", prefix, cmd.keyword, action), desc, callback)
|
||||
}
|
||||
|
||||
func (cmd ResourceCmd) run(action string, args interface{}, callback interface{}) {
|
||||
cmd.runWithDesc(action, "", args, callback)
|
||||
func (cmd ResourceCmd) Run(action string, args interface{}, callback interface{}) {
|
||||
cmd.RunWithDesc(action, "", args, callback)
|
||||
}
|
||||
|
||||
func (cmd ResourceCmd) List(args IListOpt) {
|
||||
@@ -130,7 +130,7 @@ func (cmd ResourceCmd) List(args IListOpt) {
|
||||
printList(result, man.GetColumns(s))
|
||||
return nil
|
||||
}
|
||||
cmd.run("list", args, callback)
|
||||
cmd.Run("list", args, callback)
|
||||
}
|
||||
|
||||
func (cmd ResourceCmd) Create(args ICreateOpt) {
|
||||
@@ -147,7 +147,7 @@ func (cmd ResourceCmd) Create(args ICreateOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.run("create", args, callback)
|
||||
cmd.Run("create", args, callback)
|
||||
}
|
||||
|
||||
type IIdOpt interface {
|
||||
@@ -177,7 +177,7 @@ func (cmd ResourceCmd) Show(args IShowOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc("show", fmt.Sprintf("Show details of a %s", man.GetKeyword()), args, callback)
|
||||
cmd.RunWithDesc("show", fmt.Sprintf("Show details of a %s", man.GetKeyword()), args, callback)
|
||||
}
|
||||
|
||||
func (cmd ResourceCmd) ClassShow(args IShowOpt) {
|
||||
@@ -194,7 +194,7 @@ func (cmd ResourceCmd) ClassShow(args IShowOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc(args.GetId(), fmt.Sprintf("Show %s of a %s", args.GetId(), man.GetKeyword()), args, callback)
|
||||
cmd.RunWithDesc(args.GetId(), fmt.Sprintf("Show %s of a %s", args.GetId(), man.GetKeyword()), args, callback)
|
||||
}
|
||||
|
||||
type IGetActionOpt interface {
|
||||
@@ -247,7 +247,7 @@ func (cmd ResourceCmd) Custom(action TCustomAction, funcname string, args IGetAc
|
||||
}
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc(funcname, fmt.Sprintf("Get %s of a %s", funcname, man.GetKeyword()), args, callback)
|
||||
cmd.RunWithDesc(funcname, fmt.Sprintf("Get %s of a %s", funcname, man.GetKeyword()), args, callback)
|
||||
}
|
||||
|
||||
type IDeleteOpt interface {
|
||||
@@ -269,7 +269,7 @@ func (cmd ResourceCmd) Delete(args IDeleteOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc("delete", fmt.Sprintf("Delete %s", man.GetKeyword()), args, callback)
|
||||
cmd.RunWithDesc("delete", fmt.Sprintf("Delete %s", man.GetKeyword()), args, callback)
|
||||
}
|
||||
|
||||
type IWithDescOpt interface {
|
||||
@@ -295,7 +295,7 @@ func (cmd ResourceCmd) Perform(action string, args IPerformOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.run(action, args, callback)
|
||||
cmd.Run(action, args, callback)
|
||||
}
|
||||
|
||||
func (cmd ResourceCmd) PerformClass(action string, args IOpt) {
|
||||
@@ -312,7 +312,7 @@ func (cmd ResourceCmd) PerformClass(action string, args IOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.run(action, args, callback)
|
||||
cmd.Run(action, args, callback)
|
||||
}
|
||||
|
||||
type IBatchPerformOpt interface {
|
||||
@@ -331,7 +331,7 @@ func (cmd ResourceCmd) BatchPerform(action string, args IBatchPerformOpt) {
|
||||
printBatchResults(ret, man.GetColumns(s))
|
||||
return nil
|
||||
}
|
||||
cmd.run(action, args, callback)
|
||||
cmd.Run(action, args, callback)
|
||||
}
|
||||
|
||||
type IGetOpt interface {
|
||||
@@ -353,7 +353,7 @@ func (cmd ResourceCmd) Get(specific string, args IGetOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc(specific, fmt.Sprintf("Get %s of a %s", specific, man.GetKeyword()), args, callback)
|
||||
cmd.RunWithDesc(specific, fmt.Sprintf("Get %s of a %s", specific, man.GetKeyword()), args, callback)
|
||||
}
|
||||
|
||||
type IUpdateOpt interface {
|
||||
@@ -375,7 +375,7 @@ func (cmd ResourceCmd) Update(args IUpdateOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.run("update", args, callback)
|
||||
cmd.Run("update", args, callback)
|
||||
}
|
||||
|
||||
type IMetadataOpt interface {
|
||||
@@ -397,7 +397,7 @@ func (cmd ResourceCmd) GetMetadata(args IMetadataOpt) {
|
||||
printObject(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc("metadata", fmt.Sprintf("Show metadata of a %s", man.GetKeyword()), args, callback)
|
||||
cmd.RunWithDesc("metadata", fmt.Sprintf("Show metadata of a %s", man.GetKeyword()), args, callback)
|
||||
}
|
||||
|
||||
type IBatchDeleteOpt interface {
|
||||
@@ -416,7 +416,7 @@ func (cmd ResourceCmd) BatchDelete(args IBatchDeleteOpt) {
|
||||
printBatchResults(ret, man.GetColumns(s))
|
||||
return nil
|
||||
}
|
||||
cmd.run("delete", args, callback)
|
||||
cmd.Run("delete", args, callback)
|
||||
}
|
||||
|
||||
type IBatchDeleteWithParamOpt interface {
|
||||
@@ -439,7 +439,7 @@ func (cmd ResourceCmd) BatchDeleteWithParam(args IBatchDeleteWithParamOpt) {
|
||||
printBatchResults(ret, man.GetColumns(s))
|
||||
return nil
|
||||
}
|
||||
cmd.run("delete", args, callback)
|
||||
cmd.Run("delete", args, callback)
|
||||
}
|
||||
|
||||
type IBatchPutOpt interface {
|
||||
@@ -458,7 +458,7 @@ func (cmd ResourceCmd) BatchPut(args IBatchPutOpt) {
|
||||
printBatchResults(ret, man.GetColumns(s))
|
||||
return nil
|
||||
}
|
||||
cmd.run("update", args, callback)
|
||||
cmd.Run("update", args, callback)
|
||||
}
|
||||
|
||||
type JointCmd struct {
|
||||
@@ -498,7 +498,7 @@ func (cmd JointCmd) List(args IJointListOpt) {
|
||||
printList(result, man.GetColumns(s))
|
||||
return nil
|
||||
}
|
||||
cmd.runWithDesc("list", fmt.Sprintf("list %s %s pairs", man.MasterManager().KeyString(), man.SlaveManager().KeyString()), args, callback)
|
||||
cmd.RunWithDesc("list", fmt.Sprintf("list %s %s pairs", man.MasterManager().KeyString(), man.SlaveManager().KeyString()), args, callback)
|
||||
}
|
||||
|
||||
type IJointShowOpt interface {
|
||||
@@ -521,5 +521,5 @@ func (cmd JointCmd) Show(args IJointShowOpt) {
|
||||
printObject(result)
|
||||
return nil
|
||||
}
|
||||
cmd.run("show", args, callback)
|
||||
cmd.Run("show", args, callback)
|
||||
}
|
||||
|
||||
@@ -15,27 +15,11 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initKubeCerts() {
|
||||
cmdN := func(action string) string {
|
||||
return fmt.Sprintf("kubecert-%s", action)
|
||||
}
|
||||
R(&o.CertListOptions{}, cmdN("list"), "List k8s cluster certificates key pairs", func(s *mcclient.ClientSession, args *o.CertListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeCerts.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(ret, k8s.KubeCerts.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
cmd := NewK8sResourceCmd(k8s.KubeCerts)
|
||||
cmd.List(new(o.CertListOptions))
|
||||
}
|
||||
|
||||
@@ -28,13 +28,22 @@ func initKubeCluster() {
|
||||
cmdN := func(action string) string {
|
||||
return fmt.Sprintf("k8s-cluster-%s", action)
|
||||
}
|
||||
cmd := NewK8sResourceCmd(k8s.KubeClusters).SetKeyword("cluster")
|
||||
cmd := NewK8sResourceCmd(k8s.KubeClusters)
|
||||
cmd.SetKeyword("cluster")
|
||||
cmd.ShowEvent()
|
||||
cmd.List(new(o.ClusterListOptions))
|
||||
cmd.Show(new(o.IdentOptions))
|
||||
cmd.Create(new(o.KubeClusterCreateOptions))
|
||||
cmd.Perform("sync", new(o.ClusterSyncOptions))
|
||||
cmd.Perform("syncstatus", new(o.IdentOptions))
|
||||
cmd.Get("components-status", new(o.IdentOptions))
|
||||
cmd.Get("api-resources", new(o.IdentOptions))
|
||||
cmd.Get("cluster-users", new(o.IdentOptions))
|
||||
cmd.Get("cluster-user-groups", new(o.IdentOptions))
|
||||
cmd.Perform("purge", new(o.ClusterPurgeOptions))
|
||||
cmd.Perform("delete-machines", new(o.KubeClusterDeleteMachinesOptions))
|
||||
cmd.Perform("add-machines", new(o.KubeClusterAddMachinesOptions))
|
||||
cmd.PerformClass("gc", new(o.ClusterGCOpts))
|
||||
|
||||
R(&o.KubeClusterImportOptions{}, cmdN("import"), "Import k8s cluster", func(s *mcclient.ClientSession, args *o.KubeClusterImportOptions) error {
|
||||
params, err := args.Params()
|
||||
@@ -55,41 +64,6 @@ func initKubeCluster() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterAddMachinesOptions{}, cmdN("add-machines"), "Add machines to cluster", func(s *mcclient.ClientSession, args *o.KubeClusterAddMachinesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "add-machines", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterDeleteMachinesOptions{}, cmdN("delete-machines"), "Delete machines in cluster", func(s *mcclient.ClientSession, args *o.KubeClusterDeleteMachinesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "delete-machines", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("terminate"), "Terminate cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "terminate", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("kubeconfig"), "Generate kubeconfig of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "kubeconfig", nil)
|
||||
if err != nil {
|
||||
@@ -156,37 +130,6 @@ func initKubeCluster() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("syncstatus"), "Sync cluster status", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "syncstatus", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterSyncOptions{}, cmdN("sync"), "Sync cluster k8s resources", func(s *mcclient.ClientSession, args *o.ClusterSyncOptions) error {
|
||||
param, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "sync", param)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("components-status"), "Get cluster component status", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "components-status", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterComponentTypeOptions{}, cmdN("component-setting"), "Get cluster component setting", func(s *mcclient.ClientSession, args *o.ClusterComponentTypeOptions) error {
|
||||
q := jsonutils.NewDict()
|
||||
q.Add(jsonutils.NewString(args.TYPE), "type")
|
||||
|
||||
@@ -15,30 +15,11 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initCronJob() {
|
||||
cmd := initK8sNamespaceResource("cronjob", k8s.CronJobs)
|
||||
cmdN := cmd.CommandNameFactory
|
||||
createCmd := NewCommand(
|
||||
&o.CronJobCreateOptions{},
|
||||
cmdN("create"),
|
||||
"Create cronjob resource",
|
||||
func(s *mcclient.ClientSession, args *o.CronJobCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.CronJobs.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
cmd.AddR(createCmd)
|
||||
cmd.Create(new(o.CronJobCreateOptions))
|
||||
}
|
||||
|
||||
@@ -15,48 +15,12 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initDeployment() {
|
||||
cmd := initK8sNamespaceResource("deployment", k8s.Deployments)
|
||||
cmdN := cmd.CommandNameFactory
|
||||
|
||||
createCmd := NewCommand(
|
||||
&o.DeploymentCreateOptions{},
|
||||
cmdN("create"),
|
||||
"Create deployment resource",
|
||||
func(s *mcclient.ClientSession, args *o.DeploymentCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Deployments.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
updateCmd := NewCommand(
|
||||
&o.DeploymentUpdateOptions{},
|
||||
cmdN("update"),
|
||||
"Update deployment resource",
|
||||
func(s *mcclient.ClientSession, args *o.DeploymentUpdateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Deployments.Update(s, args.NAME, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObjectYAML(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
cmd.AddR(createCmd, updateCmd)
|
||||
cmd.Create(new(o.DeploymentCreateOptions))
|
||||
cmd.Update(new(o.DeploymentUpdateOptions))
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ func init() {
|
||||
Delete(new(options.IdentOptions)).
|
||||
AttachCluster(new(options.FedResourceJointClusterAttachOptions)).
|
||||
DetachCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions))
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
ShowEvent()
|
||||
|
||||
cmd.ClassShow(new(options.FedApiResourecesOptions))
|
||||
cmd.ClassShow(new(options.FedClusterUsersOptions))
|
||||
|
||||
@@ -20,47 +20,47 @@ import (
|
||||
)
|
||||
|
||||
type fedResourceCmd struct {
|
||||
*shell.ResourceCmd
|
||||
*K8sResourceCmd
|
||||
}
|
||||
|
||||
func newFedResourceCmd(manager modulebase.IBaseManager) *fedResourceCmd {
|
||||
cmd := NewK8sResourceCmd(manager)
|
||||
return &fedResourceCmd{
|
||||
ResourceCmd: cmd,
|
||||
K8sResourceCmd: cmd,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) List(args shell.IListOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.List(args)
|
||||
c.K8sResourceCmd.List(args)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) Show(args shell.IShowOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.Show(args)
|
||||
c.K8sResourceCmd.Show(args)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) Create(args shell.ICreateOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.Create(args)
|
||||
c.K8sResourceCmd.Create(args)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) Delete(args shell.IDeleteOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.Delete(args)
|
||||
c.K8sResourceCmd.Delete(args)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) AttachCluster(args shell.IPerformOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.Perform("attach-cluster", args)
|
||||
c.K8sResourceCmd.Perform("attach-cluster", args)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) DetachCluster(args shell.IPerformOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.Perform("detach-cluster", args)
|
||||
c.K8sResourceCmd.Perform("detach-cluster", args)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *fedResourceCmd) SyncCluster(args shell.IPerformOpt) *fedResourceCmd {
|
||||
c.ResourceCmd.Perform("sync-cluster", args)
|
||||
c.K8sResourceCmd.Perform("sync-cluster", args)
|
||||
return c
|
||||
}
|
||||
|
||||
@@ -28,5 +28,6 @@ func init() {
|
||||
Delete(new(options.IdentOptions)).
|
||||
AttachCluster(new(options.FedResourceJointClusterAttachOptions)).
|
||||
DetachCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions))
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
ShowEvent()
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ func init() {
|
||||
Delete(new(options.IdentOptions)).
|
||||
AttachCluster(new(options.FedResourceJointClusterAttachOptions)).
|
||||
DetachCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions))
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
ShowEvent()
|
||||
|
||||
cmd.ClassShow(new(options.FedApiResourecesOptions))
|
||||
cmd.ClassShow(new(options.FedClusterUsersOptions))
|
||||
|
||||
@@ -28,5 +28,6 @@ func init() {
|
||||
Delete(new(options.IdentOptions)).
|
||||
AttachCluster(new(options.FedResourceJointClusterAttachOptions)).
|
||||
DetachCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions))
|
||||
SyncCluster(new(options.FedResourceJointClusterDetachOptions)).
|
||||
ShowEvent()
|
||||
}
|
||||
|
||||
@@ -15,12 +15,118 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
"yunion.io/x/onecloud/cmd/climc/shell"
|
||||
"yunion.io/x/onecloud/cmd/climc/shell/events"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
)
|
||||
|
||||
func NewK8sResourceCmd(manager modulebase.IBaseManager) *shell.ResourceCmd {
|
||||
return shell.NewResourceCmd(manager).SetPrefix("k8s")
|
||||
type K8sResourceCmd struct {
|
||||
*shell.ResourceCmd
|
||||
manager modulebase.IBaseManager
|
||||
}
|
||||
|
||||
func NewK8sResourceCmd(manager modulebase.IBaseManager) *K8sResourceCmd {
|
||||
cmd := new(K8sResourceCmd)
|
||||
cmd.ResourceCmd = shell.NewResourceCmd(manager).SetPrefix("k8s")
|
||||
cmd.manager = manager
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (cmd *K8sResourceCmd) GetClusterResManager() k8s.IClusterResourceManager {
|
||||
return cmd.manager.(k8s.IClusterResourceManager)
|
||||
}
|
||||
|
||||
func (cmd *K8sResourceCmd) ShowEvent() *K8sResourceCmd {
|
||||
callback := func(s *mcclient.ClientSession, opt *events.TypeEventListOptions) error {
|
||||
args := &events.EventListOptions{BaseEventListOptions: opt.BaseEventListOptions, Id: opt.ID, Type: []string{cmd.manager.GetKeyword()}}
|
||||
return events.DoEventList(*k8s.Logs.ResourceManager, s, args)
|
||||
}
|
||||
cmd.RunWithDesc("event", fmt.Sprintf("Show operation event logs of k8s %s", cmd.manager.GetKeyword()), new(events.TypeEventListOptions), callback)
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (cmd *K8sResourceCmd) EditRaw(opt shell.IGetOpt) *K8sResourceCmd {
|
||||
man := cmd.GetClusterResManager()
|
||||
callback := func(s *mcclient.ClientSession, args shell.IGetOpt) error {
|
||||
params, err := opt.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
rawData, err := man.GetRaw(s, args.GetId(), params.(*jsonutils.JSONDict))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
yamlBytes := rawData.YAMLString()
|
||||
tempfile, err := ioutil.TempFile("", fmt.Sprintf("k8s-%s*.yaml", args.GetId()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.Remove(tempfile.Name())
|
||||
if _, err := tempfile.Write([]byte(yamlBytes)); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tempfile.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd := exec.Command("vim", tempfile.Name())
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
content, err := ioutil.ReadFile(tempfile.Name())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jsonBytes, err := yaml.YAMLToJSON(content)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
body, err := jsonutils.Parse(jsonBytes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
params, err = args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := man.UpdateRaw(s, args.GetId(), params.(*jsonutils.JSONDict), body.(*jsonutils.JSONDict)); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
cmd.RunWithDesc("edit-raw", fmt.Sprintf("Edit and update k8s %s by raw data", man.GetKeyword()), opt, callback)
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (cmd *K8sResourceCmd) ShowRaw(args shell.IGetOpt) *K8sResourceCmd {
|
||||
man := cmd.GetClusterResManager()
|
||||
callback := func(s *mcclient.ClientSession, args shell.IGetOpt) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := man.GetRaw(s, args.GetId(), params.(*jsonutils.JSONDict))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObjectYAML(ret)
|
||||
return nil
|
||||
}
|
||||
cmd.RunWithDesc("show-raw", fmt.Sprintf("Show k8s %s raw data", man.GetKeyword()), args, callback)
|
||||
return cmd
|
||||
}
|
||||
|
||||
func NewK8sJointCmd(manager modulebase.JointManager) *shell.JointCmd {
|
||||
|
||||
@@ -15,25 +15,11 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initIngress() {
|
||||
cmdN := initK8sNamespaceResource("ingress", k8s.Ingresses)
|
||||
createCmd := NewCommand(
|
||||
&o.IngressCreateOptions{},
|
||||
cmdN.CommandNameFactory("create"),
|
||||
"Create ingress rules to service",
|
||||
func(s *mcclient.ClientSession, args *o.IngressCreateOptions) error {
|
||||
spec := args.Params()
|
||||
ret, err := k8s.Ingresses.Create(s, spec)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
cmdN.AddR(createCmd)
|
||||
cmd := initK8sNamespaceResource("ingress", k8s.Ingresses)
|
||||
cmd.Create(new(o.IngressCreateOptions))
|
||||
}
|
||||
|
||||
@@ -15,31 +15,12 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initJob() {
|
||||
cmd := initK8sNamespaceResource("job", k8s.Jobs)
|
||||
cmdN := cmd.CommandNameFactory
|
||||
|
||||
createCmd := NewCommand(
|
||||
&o.JobCreateOptions{},
|
||||
cmdN("create"),
|
||||
"Create job resource",
|
||||
func(s *mcclient.ClientSession, args *o.JobCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Jobs.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
cmd.AddR(createCmd)
|
||||
cmd.Create(new(o.JobCreateOptions))
|
||||
}
|
||||
|
||||
+18
-265
@@ -16,16 +16,10 @@ package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
"yunion.io/x/onecloud/cmd/climc/shell"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modulebase"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
@@ -78,10 +72,6 @@ func resourceCmdN(prefix, suffix string) string {
|
||||
return fmt.Sprintf("k8s-%s-%s", prefix, suffix)
|
||||
}
|
||||
|
||||
func kubeResourceCmdN(prefix, suffix string) string {
|
||||
return fmt.Sprintf("kube-%s-%s", prefix, suffix)
|
||||
}
|
||||
|
||||
func clusterContext(clusterId string) modulebase.ManagerContext {
|
||||
return modulebase.ManagerContext{
|
||||
InstanceManager: k8s.KubeClusters,
|
||||
@@ -93,261 +83,24 @@ func printObjectYAML(obj jsonutils.JSONObject) {
|
||||
fmt.Println(obj.YAMLString())
|
||||
}
|
||||
|
||||
type Cmd struct {
|
||||
Options interface{}
|
||||
Command string
|
||||
Desc string
|
||||
Callback interface{}
|
||||
func initK8sClusterResource(kind string, manager modulebase.Manager) *K8sResourceCmd {
|
||||
cmd := NewK8sResourceCmd(manager)
|
||||
cmd.SetKeyword(kind)
|
||||
cmd.List(new(o.ResourceListOptions))
|
||||
cmd.Show(new(o.ResourceGetOptions))
|
||||
cmd.BatchDeleteWithParam(new(o.ResourceDeleteOptions))
|
||||
cmd.ShowEvent()
|
||||
return cmd
|
||||
}
|
||||
|
||||
func NewCommand(options interface{}, command string, desc string, callback interface{}) *Cmd {
|
||||
return &Cmd{
|
||||
Options: options,
|
||||
Command: command,
|
||||
Desc: desc,
|
||||
Callback: callback,
|
||||
}
|
||||
}
|
||||
|
||||
func (c Cmd) R() {
|
||||
R(c.Options, c.Command, c.Desc, c.Callback)
|
||||
}
|
||||
|
||||
type ShellCommands struct {
|
||||
Commands []*Cmd
|
||||
CommandNameFactory func(suffix string) string
|
||||
}
|
||||
|
||||
func NewShellCommands(cmdN func(suffix string) string) *ShellCommands {
|
||||
c := &ShellCommands{
|
||||
CommandNameFactory: cmdN,
|
||||
}
|
||||
c.Commands = make([]*Cmd, 0)
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *ShellCommands) AddR(rs ...*Cmd) *ShellCommands {
|
||||
for _, r := range rs {
|
||||
r.R()
|
||||
c.Commands = append(c.Commands, r)
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
func initK8sClusterResource(kind string, manager modulebase.Manager) *ShellCommands {
|
||||
cmdN := NewCmdNameFactory(kind)
|
||||
return NewShellCommands(cmdN.Do).AddR(
|
||||
NewK8sResourceListCmd(cmdN, manager),
|
||||
NewK8sResourceGetCmd(cmdN, manager),
|
||||
NewK8sResourceDeleteCmd(cmdN, manager),
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sResourceListCmd(cmdN CmdNameFactory, manager modulebase.Manager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.ResourceListOptions{},
|
||||
cmdN.Do("list"),
|
||||
fmt.Sprintf("List k8s %s", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.ResourceListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := manager.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
PrintListResultTable(ret, manager.(k8s.ListPrinter), s)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
type CmdNameFactory struct {
|
||||
Kind string
|
||||
Do func(string) string
|
||||
}
|
||||
|
||||
func NewCmdNameFactory(kind string) CmdNameFactory {
|
||||
return CmdNameFactory{
|
||||
Kind: kind,
|
||||
Do: func(suffix string) string {
|
||||
return resourceCmdN(kind, suffix)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func NewK8sNsResourceListCmd(cmdN CmdNameFactory, manager modulebase.Manager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.NamespaceResourceListOptions{},
|
||||
cmdN.Do("list"),
|
||||
fmt.Sprintf("List k8s %s", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.NamespaceResourceListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := manager.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
PrintListResultTable(ret, manager.(k8s.ListPrinter), s)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sResourceGetCmd(cmdN CmdNameFactory, manager modulebase.Manager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.ResourceGetOptions{},
|
||||
cmdN.Do("show"),
|
||||
fmt.Sprintf("Show k8s %s", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.ResourceGetOptions) error {
|
||||
ret, err := manager.Get(s, args.NAME, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObjectYAML(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sNsResourceGetCmd(cmdN CmdNameFactory, manager modulebase.Manager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.NamespaceResourceGetOptions{},
|
||||
cmdN.Do("show"),
|
||||
fmt.Sprintf("Show k8s %s", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.NamespaceResourceGetOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := manager.Get(s, args.NAME, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObjectYAML(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sNsResourceGetRawCmd(cmdN CmdNameFactory, manager k8s.IClusterResourceManager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.NamespaceResourceGetOptions{},
|
||||
cmdN.Do("show-raw"),
|
||||
fmt.Sprintf("Show k8s %s raw data", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.NamespaceResourceGetOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := manager.GetRaw(s, args.NAME, params.(*jsonutils.JSONDict))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObjectYAML(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sResourceEditRawCmd(cmdN CmdNameFactory, manager k8s.IClusterResourceManager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.NamespaceResourceGetOptions{},
|
||||
cmdN.Do("edit-raw"),
|
||||
fmt.Sprintf("Edit and update k8s %s raw data", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.NamespaceResourceGetOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
rawData, err := manager.GetRaw(s, args.NAME, params.(*jsonutils.JSONDict))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
yamlBytes := rawData.YAMLString()
|
||||
tempfile, err := ioutil.TempFile("", fmt.Sprintf("k8s-%s-%s*.yaml", cmdN.Kind, args.NAME))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.Remove(tempfile.Name())
|
||||
if _, err := tempfile.Write([]byte(yamlBytes)); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tempfile.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd := exec.Command("vim", tempfile.Name())
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
content, err := ioutil.ReadFile(tempfile.Name())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jsonBytes, err := yaml.YAMLToJSON(content)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
body, err := jsonutils.Parse(jsonBytes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
params, err = args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := manager.UpdateRaw(s, args.NAME, params.(*jsonutils.JSONDict), body.(*jsonutils.JSONDict)); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sResourceDeleteCmd(cmdN CmdNameFactory, manager modulebase.Manager) *Cmd {
|
||||
return NewCommand(
|
||||
&o.ResourceDeleteOptions{},
|
||||
cmdN.Do("delete"),
|
||||
fmt.Sprintf("Delete k8s %s", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.ResourceDeleteOptions) error {
|
||||
ret := manager.BatchDelete(s, args.NAME, args.Params())
|
||||
printBatchResults(ret, manager.GetColumns(s))
|
||||
return nil
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func NewK8sNsResourceDeleteCmd(cmdN CmdNameFactory, manager modulebase.Manager) *Cmd {
|
||||
deleteCmd := NewCommand(
|
||||
&o.NamespaceResourceDeleteOptions{},
|
||||
cmdN.Do("delete"),
|
||||
fmt.Sprintf("Delete k8s %s", cmdN.Kind),
|
||||
func(s *mcclient.ClientSession, args *o.NamespaceResourceDeleteOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret := manager.BatchDelete(s, args.NAME, params)
|
||||
printBatchResults(ret, manager.GetColumns(s))
|
||||
return nil
|
||||
},
|
||||
)
|
||||
return deleteCmd
|
||||
}
|
||||
|
||||
func initK8sNamespaceResource(kind string, manager k8s.IClusterResourceManager) *ShellCommands {
|
||||
cmdN := NewCmdNameFactory(kind)
|
||||
return NewShellCommands(cmdN.Do).AddR(
|
||||
NewK8sNsResourceListCmd(cmdN, manager),
|
||||
NewK8sNsResourceGetCmd(cmdN, manager),
|
||||
NewK8sNsResourceDeleteCmd(cmdN, manager),
|
||||
NewK8sNsResourceGetRawCmd(cmdN, manager),
|
||||
NewK8sResourceEditRawCmd(cmdN, manager),
|
||||
)
|
||||
func initK8sNamespaceResource(kind string, manager k8s.IClusterResourceManager) *K8sResourceCmd {
|
||||
cmd := NewK8sResourceCmd(manager)
|
||||
cmd.SetKeyword(kind)
|
||||
cmd.List(new(o.NamespaceResourceListOptions))
|
||||
cmd.Show(new(o.NamespaceResourceGetOptions))
|
||||
cmd.BatchDeleteWithParam(new(o.NamespaceResourceDeleteOptions))
|
||||
cmd.ShowRaw(new(o.NamespaceResourceGetOptions))
|
||||
cmd.EditRaw(new(o.NamespaceResourceGetOptions))
|
||||
cmd.ShowEvent()
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -15,73 +15,18 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initKubeMachine() {
|
||||
cmdN := func(action string) string {
|
||||
return fmt.Sprintf("kubemachine-%s", action)
|
||||
}
|
||||
R(&o.MachineListOptions{}, cmdN("list"), "List k8s node machines", func(s *mcclient.ClientSession, args *o.MachineListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := k8s.KubeMachines.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, k8s.KubeMachines.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.MachineCreateOptions{}, cmdN("create"), "Create k8s machine", func(s *mcclient.ClientSession, args *o.MachineCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
node, err := k8s.KubeMachines.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(node)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("show"), "Show details of a machine", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
result, err := k8s.KubeMachines.Get(s, args.ID, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(result)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentsOptions{}, cmdN("delete"), "Delete machine", func(s *mcclient.ClientSession, args *o.IdentsOptions) error {
|
||||
ret := k8s.KubeMachines.BatchDelete(s, args.ID, nil)
|
||||
printBatchResults(ret, k8s.KubeMachines.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("recreate"), "Re-Create machine when create fail", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeMachines.PerformAction(s, args.ID, "recreate", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("terminate"), "Terminate a machine", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeMachines.PerformAction(s, args.ID, "terminate", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
cmd := NewK8sResourceCmd(k8s.KubeMachines)
|
||||
cmd.SetKeyword("machine")
|
||||
cmd.ShowEvent()
|
||||
cmd.List(new(o.MachineListOptions))
|
||||
cmd.Create(new(o.MachineCreateOptions))
|
||||
cmd.Show(new(o.IdentOptions))
|
||||
cmd.BatchDelete(new(o.IdentsOptions))
|
||||
cmd.Perform("recreate", new(o.IdentOptions))
|
||||
cmd.Perform("terminate", new(o.IdentOptions))
|
||||
}
|
||||
|
||||
@@ -16,8 +16,12 @@ package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initPod() {
|
||||
initK8sNamespaceResource("pod", k8s.Pods)
|
||||
cmd := NewK8sResourceCmd(k8s.Pods)
|
||||
cmd.List(new(o.NamespaceResourceListOptions))
|
||||
cmd.Show(new(o.NamespaceResourceGetOptions))
|
||||
}
|
||||
|
||||
@@ -15,46 +15,14 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initPVC() {
|
||||
cmdN := NewCmdNameFactory("pvc")
|
||||
pvcCmd := NewShellCommands(cmdN.Do).AddR(
|
||||
NewK8sNsResourceGetCmd(cmdN, k8s.PersistentVolumeClaims),
|
||||
NewK8sNsResourceDeleteCmd(cmdN, k8s.PersistentVolumeClaims),
|
||||
)
|
||||
listCmd := NewCommand(
|
||||
&o.PVCListOptions{},
|
||||
cmdN.Do("list"),
|
||||
"List PersistentVolumeClaims resource",
|
||||
func(s *mcclient.ClientSession, args *o.PVCListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.PersistentVolumeClaims.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
PrintListResultTable(ret, k8s.PersistentVolumeClaims, s)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
createCmd := NewCommand(
|
||||
&o.PVCCreateOptions{},
|
||||
cmdN.Do("create"),
|
||||
"Create PersistentVolumeClaims resource",
|
||||
func(s *mcclient.ClientSession, args *o.PVCCreateOptions) error {
|
||||
ret, err := k8s.PersistentVolumeClaims.Create(s, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
pvcCmd.AddR(listCmd, createCmd)
|
||||
cmd := NewK8sResourceCmd(k8s.PersistentVolumeClaims)
|
||||
cmd.Create(new(o.PVCCreateOptions))
|
||||
cmd.Show(new(o.NamespaceResourceGetOptions))
|
||||
cmd.BatchDeleteWithParam(new(o.NamespaceResourceDeleteOptions))
|
||||
cmd.List(new(o.PVCListOptions))
|
||||
}
|
||||
|
||||
@@ -21,22 +21,15 @@ import (
|
||||
)
|
||||
|
||||
func initRelease() {
|
||||
cmd := NewK8sResourceCmd(k8s.Releases)
|
||||
cmd.List(new(o.ReleaseListOptions))
|
||||
cmd.Create(new(o.ReleaseCreateOptions))
|
||||
cmd.Delete(new(o.ReleaseDeleteOptions))
|
||||
cmd.ShowEvent()
|
||||
|
||||
cmdN := func(suffix string) string {
|
||||
return resourceCmdN("release", suffix)
|
||||
}
|
||||
R(&o.ReleaseListOptions{}, cmdN("list"), "List k8s cluster helm releases", func(s *mcclient.ClientSession, args *o.ReleaseListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Releases.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(ret, k8s.Releases.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.NamespaceResourceGetOptions{}, cmdN("show"), "Get helm release details", func(s *mcclient.ClientSession, args *o.NamespaceResourceGetOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
@@ -54,19 +47,6 @@ func initRelease() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ReleaseCreateOptions{}, cmdN("create"), "Create release with specified helm chart", func(s *mcclient.ClientSession, args *o.ReleaseCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Releases.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ReleaseUpgradeOptions{}, cmdN("upgrade"), "Upgrade release", func(s *mcclient.ClientSession, args *o.ReleaseUpgradeOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
@@ -81,11 +61,6 @@ func initRelease() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ReleaseDeleteOptions{}, cmdN("delete"), "Delete release", func(s *mcclient.ClientSession, args *o.ReleaseDeleteOptions) error {
|
||||
_, err := k8s.Releases.Delete(s, args.NAME, args.Params())
|
||||
return err
|
||||
})
|
||||
|
||||
R(&o.ReleaseHistoryOptions{}, cmdN("history"), "Get release history", func(s *mcclient.ClientSession, args *o.ReleaseHistoryOptions) error {
|
||||
ret, err := k8s.Releases.GetSpecific(s, args.NAME, "history", args.Params())
|
||||
if err != nil {
|
||||
|
||||
@@ -15,88 +15,18 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initRepo() {
|
||||
cmdN := func(suffix string) string {
|
||||
return resourceCmdN("repo", suffix)
|
||||
}
|
||||
R(&o.RepoListOptions{}, cmdN("list"), "List k8s global helm repos", func(s *mcclient.ClientSession, args *o.RepoListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := k8s.Repos.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, k8s.Repos.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoGetOptions{}, cmdN("show"), "Show details of a repo", func(s *mcclient.ClientSession, args *o.RepoGetOptions) error {
|
||||
repo, err := k8s.Repos.Get(s, args.NAME, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoCreateOptions{}, cmdN("create"), "Add repository", func(s *mcclient.ClientSession, args *o.RepoCreateOptions) error {
|
||||
repo, err := k8s.Repos.Create(s, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoUpdateOptions{}, cmdN("update"), "Update helm repository", func(s *mcclient.ClientSession, args *o.RepoUpdateOptions) error {
|
||||
repo, err := k8s.Repos.Update(s, args.NAME, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoGetOptions{}, cmdN("delete"), "Delete a repository", func(s *mcclient.ClientSession, args *o.RepoGetOptions) error {
|
||||
repo, err := k8s.Repos.Delete(s, args.NAME, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoGetOptions{}, cmdN("sync"), "Sync a repository", func(s *mcclient.ClientSession, args *o.RepoGetOptions) error {
|
||||
repo, err := k8s.Repos.PerformAction(s, args.NAME, "sync", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoGetOptions{}, cmdN("public"), "Make repository public", func(s *mcclient.ClientSession, args *o.RepoGetOptions) error {
|
||||
repo, err := k8s.Repos.PerformAction(s, args.NAME, "public", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.RepoGetOptions{}, cmdN("private"), "Make repository private", func(s *mcclient.ClientSession, args *o.RepoGetOptions) error {
|
||||
repo, err := k8s.Repos.PerformAction(s, args.NAME, "private", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(repo)
|
||||
return nil
|
||||
})
|
||||
cmd := NewK8sResourceCmd(k8s.Repos)
|
||||
cmd.List(new(o.RepoListOptions))
|
||||
cmd.Show(new(o.RepoGetOptions))
|
||||
cmd.Create(new(o.RepoCreateOptions))
|
||||
cmd.Update(new(o.RepoUpdateOptions))
|
||||
cmd.Delete(new(o.RepoGetOptions))
|
||||
cmd.Perform("sync", new(o.RepoGetOptions))
|
||||
cmd.Perform("public", new(o.RepoPublicOptions))
|
||||
cmd.Perform("private", new(o.RepoGetOptions))
|
||||
}
|
||||
|
||||
@@ -15,69 +15,20 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initSecret() {
|
||||
cmdN := NewCmdNameFactory("secret")
|
||||
secretCmd := NewShellCommands(cmdN.Do).AddR(
|
||||
NewK8sNsResourceGetCmd(cmdN, k8s.Secrets),
|
||||
NewK8sNsResourceDeleteCmd(cmdN, k8s.Secrets),
|
||||
)
|
||||
listCmd := NewCommand(
|
||||
&o.SecretListOptions{},
|
||||
cmdN.Do("list"),
|
||||
"List secret resource",
|
||||
func(s *mcclient.ClientSession, args *o.SecretListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Secrets.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
PrintListResultTable(ret, k8s.Secrets, s)
|
||||
return nil
|
||||
})
|
||||
secretCmd.AddR(listCmd)
|
||||
cmd := NewK8sResourceCmd(k8s.Secrets)
|
||||
cmd.Show(new(o.NamespaceResourceGetOptions))
|
||||
cmd.BatchDeleteWithParam(new(o.NamespaceResourceDeleteOptions))
|
||||
cmd.List(new(o.SecretListOptions))
|
||||
cmd.ShowEvent()
|
||||
|
||||
registryCmd := NewCmdNameFactory("secret-registry")
|
||||
registryCreateCmd := NewCommand(
|
||||
&o.RegistrySecretCreateOptions{},
|
||||
registryCmd.Do("create"),
|
||||
"Create docker registry secret secret",
|
||||
func(s *mcclient.ClientSession, args *o.RegistrySecretCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Secrets.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
registryCmd := NewK8sResourceCmd(k8s.Secrets).WithKeyword("secret-registry")
|
||||
registryCmd.Create(new(o.RegistrySecretCreateOptions))
|
||||
|
||||
cephCSICmd := NewCmdNameFactory("secret-ceph-csi")
|
||||
cephCSICreateCmd := NewCommand(
|
||||
&o.CephCSISecretCreateOptions{},
|
||||
cephCSICmd.Do("create"),
|
||||
"Create ceph csi user secret",
|
||||
func(s *mcclient.ClientSession, args *o.CephCSISecretCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Secrets.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
secretCmd.AddR(cephCSICreateCmd, registryCreateCmd)
|
||||
cephCSICmd := NewK8sResourceCmd(k8s.Secrets).WithKeyword("secret-ceph-csi")
|
||||
cephCSICmd.Create(new(o.CephCSISecretCreateOptions))
|
||||
}
|
||||
|
||||
@@ -15,51 +15,16 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initService() {
|
||||
cmdN := NewCmdNameFactory("service")
|
||||
svcCmd := NewShellCommands(cmdN.Do).AddR(
|
||||
NewK8sNsResourceGetCmd(cmdN, k8s.Services),
|
||||
NewK8sNsResourceDeleteCmd(cmdN, k8s.Services),
|
||||
)
|
||||
|
||||
listCmd := NewCommand(
|
||||
&o.ServiceListOptions{},
|
||||
cmdN.Do("list"),
|
||||
"List Services resource",
|
||||
func(s *mcclient.ClientSession, args *o.ServiceListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Services.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
PrintListResultTable(ret, k8s.Services, s)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
|
||||
createCmd := NewCommand(
|
||||
&o.ServiceCreateOptions{},
|
||||
cmdN.Do("create"),
|
||||
"Create service resource",
|
||||
func(s *mcclient.ClientSession, args *o.ServiceCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Services.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
svcCmd.AddR(listCmd, createCmd)
|
||||
cmd := NewK8sResourceCmd(k8s.Services)
|
||||
cmd.SetKeyword("service")
|
||||
cmd.Show(new(o.NamespaceResourceGetOptions))
|
||||
cmd.BatchDeleteWithParam(new(o.NamespaceResourceDeleteOptions))
|
||||
cmd.List(new(o.ServiceListOptions))
|
||||
cmd.Create(new(o.ServiceCreateOptions))
|
||||
cmd.ShowEvent()
|
||||
}
|
||||
|
||||
@@ -15,31 +15,11 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initStatefulset() {
|
||||
cmd := initK8sNamespaceResource("statefulset", k8s.StatefulSets)
|
||||
cmdN := cmd.CommandNameFactory
|
||||
|
||||
createCmd := NewCommand(
|
||||
&o.StatefulSetCreateOptions{},
|
||||
cmdN("create"),
|
||||
"Create statefulset resource",
|
||||
func(s *mcclient.ClientSession, args *o.StatefulSetCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.StatefulSets.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
cmd.AddR(createCmd)
|
||||
cmd.Create(new(o.StatefulSetCreateOptions))
|
||||
}
|
||||
|
||||
@@ -15,70 +15,15 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initStorageClass() {
|
||||
cmdN := NewCmdNameFactory("storageclass")
|
||||
scCmd := initK8sClusterResource("storageclass", k8s.Storageclass)
|
||||
scCmd.Perform("set-default", new(o.ClusterResourceBaseOptions))
|
||||
|
||||
setDefaultCmd := NewCommand(
|
||||
&o.ClusterResourceBaseOptions{},
|
||||
cmdN.Do("set-default"),
|
||||
"Set storageclass as default",
|
||||
func(s *mcclient.ClientSession, args *o.ClusterResourceBaseOptions) error {
|
||||
ret, err := k8s.Storageclass.PerformAction(s, args.NAME, "set-default", args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
|
||||
scCmd.AddR(setDefaultCmd)
|
||||
|
||||
addStorageClassCephCSI(scCmd)
|
||||
}
|
||||
|
||||
func addStorageClassCephCSI(cmd *ShellCommands) {
|
||||
rbdN := NewCmdNameFactory("storageclass-ceph-csi-rbd")
|
||||
rbdCreateCmd := NewCommand(
|
||||
&o.StorageClassCephCSIRBDCreateOptions{},
|
||||
rbdN.Do("create"),
|
||||
"Create ceph csi rbd",
|
||||
func(s *mcclient.ClientSession, args *o.StorageClassCephCSIRBDCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Storageclass.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
testConnCmd := NewCommand(
|
||||
&o.StorageClassCephCSIRBDTestOptions{},
|
||||
rbdN.Do("connection-test"),
|
||||
"Test storageclass connection",
|
||||
func(s *mcclient.ClientSession, args *o.StorageClassCephCSIRBDTestOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Storageclass.PerformClassAction(s, "connection-test", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
},
|
||||
)
|
||||
|
||||
cmd.AddR(rbdCreateCmd, testConnCmd)
|
||||
rbdCmd := NewK8sResourceCmd(k8s.Storageclass).SetKeyword("storageclass-ceph-csi-rbd")
|
||||
rbdCmd.Create(new(o.StorageClassCephCSIRBDCreateOptions))
|
||||
rbdCmd.PerformClass("connection-test", new(o.StorageClassCephCSIRBDTestOptions))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user