diff options
author | earrage <eddie.arrage@huawei.com> | 2018-11-01 21:04:15 -0700 |
---|---|---|
committer | earrage <eddie.arrage@huawei.com> | 2018-11-06 22:08:18 -0800 |
commit | c2d93ffefcd337c8125d3efb289dd488c9cbbaae (patch) | |
tree | 81d3127dad53f561962244fa465865c70fb250dc /clover/cloverctl/src/cloverctl/cmd/delete_system.go | |
parent | 9bdb6dc9353992219721acba6b9c4576dbb38ece (diff) |
Add create/delete of clover-system services from CLI
- Improve usability when deploying or deleting various
Clover components using cloverctl
- Add yaml for each of the clover-system services
including controller, collector, spark, redis, cassandra,
clovisor and jmeter separated by k8s resource and available
under a single yaml directory
- Deploy/delete yaml for services in various subsets including:
- visibility(controller, collector, spark, redis, cassandra)
- datastore(redis, cassandra)
- validation(jmeter master/slaves(4))
- clovisor (individually)
- collector (individually)
- controller (individually)
Ex. cloverctl create system controller
Ex. cloverctl create system visibility
- Ability to add nodeport for controller separately
(cloverctl create system controller nodeport)
- Use native client-go methods to create/delete all k8s resources
used by Clover including:
- pods, deployments, statefulsets, daemonsets, services
- serviceaccounts, clusterrolebindings
- Above allows yaml override of values such as image value specified
in deployment or daemonset. This is broken down by:
- tag (ex. latest, opnfv-7.0.0) or repo'(ex. opnfv, localhost:5000)
that can be added with CLI flags as shown below:
(cloverctl create system visibility -t latest -r localhost:5000)
- defaults to -r opnfv -t latest
- Creates/deletes clover-system namespace
- Also added ability to create/delete lb service for controller
external access when running on environment such as GKE
(cloverctl <create/delete> system controller lb)
Change-Id: I2a3c6c80035d4663fa38368b3ff13e9a14090a47
Signed-off-by: earrage <eddie.arrage@huawei.com>
Diffstat (limited to 'clover/cloverctl/src/cloverctl/cmd/delete_system.go')
-rw-r--r-- | clover/cloverctl/src/cloverctl/cmd/delete_system.go | 143 |
1 files changed, 138 insertions, 5 deletions
diff --git a/clover/cloverctl/src/cloverctl/cmd/delete_system.go b/clover/cloverctl/src/cloverctl/cmd/delete_system.go index bc3f22b..ded0a68 100644 --- a/clover/cloverctl/src/cloverctl/cmd/delete_system.go +++ b/clover/cloverctl/src/cloverctl/cmd/delete_system.go @@ -13,21 +13,154 @@ import ( "cloverkube" ) - var delsystemCmd = &cobra.Command{ Use: "system", Short: "Delete clover-system in Kubernetes", Long: ``, Run: func(cmd *cobra.Command, args []string) { - delCloverSystem() + delCloverSystem("controller") + }, +} + +var del_controllerCmd = &cobra.Command{ + Use: "controller", + Short: "Delete controller service from clover-system namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting controller service") + delCloverSystem("controller") + }, +} + +var del_controllernodeportCmd = &cobra.Command{ + Use: "nodeport", + Short: "Delete controller nodeport service from clover-system namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting nodeport for controller service") + delCloverSystem("controller_nodeport") + }, +} + +var del_controllerlbCmd = &cobra.Command{ + Use: "lb", + Short: "Delete controller lb service from clover-system namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting lb for controller service") + delCloverSystem("controller_lb") + }, +} + +var del_collectorCmd = &cobra.Command{ + Use: "collector", + Short: "Delete collector service from clover-system namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting collector service") + delCloverSystem("collector") + }, +} + +var del_clovisorCmd = &cobra.Command{ + Use: "clovisor", + Short: "Delete clovisor service from clovisor namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting clovisor service") + delCloverSystem("clovisor") + cloverkube.ConfigNamespace("clovisor", "delete") + }, +} + +var del_visibilityCmd = &cobra.Command{ + Use: "visibility", + Short: "Delete visibility services from clover-system namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting visibility services") + delCloverSystem("spark") + delCloverSystem("controller") + delCloverSystem("collector") + delCloverSystem("cassandra") + delCloverSystem("redis") + cloverkube.ConfigNamespace("clover-system", "delete") + }, +} + +var del_datastoreCmd = &cobra.Command{ + Use: "datastore", + Short: "Delete datastore services from clover-system namespace", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting datatore services") + delCloverSystem("cassandra") + delCloverSystem("redis") + }, +} + +var del_validationCmd = &cobra.Command{ + Use: "validation", + Short: "Delete jmeter master/slave services", + Long: ``, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Deleting validation services") + delCloverSystem("jmeter_master") + delCloverSystem("jmeter_slave") }, } func init() { deleteCmd.AddCommand(delsystemCmd) + delsystemCmd.AddCommand(del_controllerCmd) + del_controllerCmd.AddCommand(del_controllernodeportCmd) + del_controllerCmd.AddCommand(del_controllerlbCmd) + delsystemCmd.AddCommand(del_collectorCmd) + delsystemCmd.AddCommand(del_visibilityCmd) + delsystemCmd.AddCommand(del_validationCmd) + delsystemCmd.AddCommand(del_datastoreCmd) + delsystemCmd.AddCommand(del_clovisorCmd) } -func delCloverSystem() { - cloverkube.DeployCloverSystem("delete", "clover-system") - fmt.Println("Deleted clover-system successfully") +func delCloverSystem(clover_services string) { + ns := "clover-system" + switch clover_services { + case "controller": + cloverkube.DeleteResource("clover-controller", "deployment", ns) + cloverkube.DeleteResource("clover-controller-internal", + "service", ns) + case "controller_nodeport", "controller_lb": + cloverkube.DeleteResource("clover-controller", + "service", ns) + case "collector": + cloverkube.DeleteResource("clover-collector", "deployment", ns) + cloverkube.DeleteResource("clover-collector", "service", ns) + case "spark": + cloverkube.DeleteResource("clover-spark", "serviceaccount", ns) + cloverkube.DeleteResource("clover-spark-default", + "clusterrolebinding", ns) + cloverkube.DeleteResource("clover-spark", "clusterrolebinding", ns) + cloverkube.DeleteResource("clover-spark-submit", "deployment", ns) + case "clovisor": + cloverkube.DeleteResource("clovisor", "serviceaccount", "clovisor") + cloverkube.DeleteResource("serv-account-rbac-clovisor", + "clusterrolebinding", "clovisor") + cloverkube.DeleteResource("clovisor", "daemonset", "clovisor") + case "redis": + cloverkube.DeleteResource("redis", "pod", ns) + cloverkube.DeleteResource("redis", "service", ns) + case "cassandra": + cloverkube.DeleteResource("cassandra", "statefulset", ns) + cloverkube.DeleteResource("cassandra", "service", ns) + case "jmeter_master": + cloverkube.DeleteResource("clover-jmeter-master", "deployment", + "default") + cloverkube.DeleteResource("clover-jmeter-master", + "service", "default") + case "jmeter_slave": + cloverkube.DeleteResource("clover-jmeter-slave", "deployment", + "default") + cloverkube.DeleteResource("clover-jmeter-slave", + "service", "default") + } } |