diff --git a/pkg/grctl/cmd/cmd.go b/pkg/grctl/cmd/cmd.go index a39900106..0163257b4 100644 --- a/pkg/grctl/cmd/cmd.go +++ b/pkg/grctl/cmd/cmd.go @@ -17,27 +17,31 @@ // along with this program. If not, see . package cmd + import ( - "github.com/urfave/cli" - "github.com/Sirupsen/logrus" "os" + + "github.com/Sirupsen/logrus" conf "github.com/goodrain/rainbond/cmd/grctl/option" "github.com/goodrain/rainbond/pkg/grctl/clients" + "github.com/urfave/cli" ) +//GetCmds GetCmds func GetCmds() []cli.Command { - cmds:=[]cli.Command{} - cmds=append(cmds,NewCmdBatchStop()) - cmds=append(cmds,NewCmdStartService()) - cmds=append(cmds,NewCmdStopService()) - cmds=append(cmds,NewCmdTenant()) - cmds=append(cmds,NewCmdTenantRes()) - cmds=append(cmds,NewCmdNode()) - cmds=append(cmds,NewCmdNodeRes()) - cmds=append(cmds,NewCmdExec()) - cmds=append(cmds,NewCmdLog()) - cmds=append(cmds,NewCmdEvent()) - cmds=append(cmds,NewCmdGet()) + cmds := []cli.Command{} + cmds = append(cmds, NewCmdBatchStop()) + cmds = append(cmds, NewCmdStartService()) + cmds = append(cmds, NewCmdStopService()) + cmds = append(cmds, NewCmdTenant()) + cmds = append(cmds, NewCmdTenantRes()) + cmds = append(cmds, NewCmdNode()) + cmds = append(cmds, NewCmdNodeRes()) + cmds = append(cmds, NewCmdExec()) + cmds = append(cmds, NewCmdLog()) + cmds = append(cmds, NewCmdEvent()) + cmds = append(cmds, NewCmdGet()) + //cmds = append(cmds, NewCmdPlugin()) //todo return cmds } @@ -57,4 +61,4 @@ func Common(c *cli.Context) { //clients.SetInfo(config.RegionAPI.URL, config.RegionAPI.Token) clients.InitRegionClient(*config.RegionAPI) -} \ No newline at end of file +} diff --git a/pkg/grctl/cmd/plugin.go b/pkg/grctl/cmd/plugin.go new file mode 100644 index 000000000..0017fa315 --- /dev/null +++ b/pkg/grctl/cmd/plugin.go @@ -0,0 +1,99 @@ +// RAINBOND, Application Management Platform +// Copyright (C) 2014-2017 Goodrain Co., Ltd. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. For any non-GPL usage of Rainbond, +// one or multiple Commercial Licenses authorized by Goodrain Co., Ltd. +// must be obtained first. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package cmd + +import ( + "fmt" + + "github.com/pquerna/ffjson/ffjson" + + api_model "github.com/goodrain/rainbond/pkg/api/model" + "github.com/urfave/cli" +) + +//NewCmdPlugin 插件相关操作 +func NewCmdPlugin() cli.Command { + c := cli.Command{ + Name: "plugin", + Flags: []cli.Flag{ + cli.BoolFlag{ + Name: "create, c", + Usage: "创建插件。 grctl plugin -c NAMESPACE PLUGIN_ID -i INFOS", + }, + cli.BoolFlag{ + Name: "update, u", + Usage: "更新插件。 grctl plugin -u NAMESPACE PLUGIN_ID -i INFOS", + }, + cli.BoolFlag{ + Name: "delete, d", + Usage: "删除插件。 grctl plugin -d NAMESPACE PLUGIN_ID", + }, + }, + Usage: "插件相关操作。grctl plugin [create/delete/update] NAMESPACE PLUGIN_ID [commands] [sources]", + Action: func(c *cli.Context) error { + Common(c) + return pluginAction(c) + }, + } + return c +} +func pluginAction(c *cli.Context) error { + action := c.Args().First() + switch action { + case "create", "-c": + return createPlugin(c) + case "update", "-u": + return updatePlugin(c) + case "delete", "-d": + return deletePlugin(c) + } + return fmt.Errorf("Commands wrong, first args must in [create/update/delete] or their simplified form") +} + +func getItems(c *cli.Context, lens int) (string, string, *api_model.CreatePluginStruct, error) { + if len(c.Args()) != lens { + return "", "", nil, fmt.Errorf("Commands nums wrong, need %d args", lens) + } + var cps api_model.CreatePluginStruct + tenantName := c.Args().Get(1) + pluginID := c.Args().Get(2) + if len(c.Args()) > 3 { + infos := c.Args().Get(4) + if err := ffjson.Unmarshal([]byte(infos), &cps.Body); err != nil { + return "", "", nil, err + } + return tenantName, pluginID, &cps, nil + } + return tenantName, pluginID, nil, nil +} + +func createPlugin(c *cli.Context) error { + //args 5 + return nil +} + +func updatePlugin(c *cli.Context) error { + //args 5 + return nil +} + +func deletePlugin(c *cli.Context) error { + //args 3 + return nil +}