@@ -12,6 +12,7 @@ import (
1212 "github.com/covexo/devspace/pkg/devspace/config/configutil"
1313
1414 "github.com/spf13/cobra"
15+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1516 "k8s.io/client-go/kubernetes"
1617)
1718
@@ -25,12 +26,13 @@ type ResetCmd struct {
2526
2627// ResetCmdFlags holds the command flags
2728type ResetCmdFlags struct {
28- deleteDockerfile bool
29- deleteChart bool
30- deleteRegistry bool
31- deleteTiller bool
32- deleteDevspaceFolder bool
33- deleteRelease bool
29+ deleteDockerfile bool
30+ deleteChart bool
31+ deleteRegistry bool
32+ deleteTiller bool
33+ deleteDevspaceFolder bool
34+ deleteRelease bool
35+ deleteClusterRoleBinding bool
3436}
3537
3638func init () {
@@ -67,6 +69,13 @@ command: devspace down
6769// Run executes the reset command logic
6870func (cmd * ResetCmd ) Run (cobraCmd * cobra.Command , args []string ) {
6971 var err error
72+
73+ if cmd .kubectl == nil || cmd .helm == nil {
74+ cmd .kubectl , err = kubectl .NewClient ()
75+ if err != nil {
76+ log .Failf ("Failed to initialize kubectl client: " , err .Error ())
77+ }
78+ }
7079 cmd .determineResetExtent ()
7180
7281 if cmd .flags .deleteRelease {
@@ -148,39 +157,63 @@ func (cmd *ResetCmd) Run(cobraCmd *cobra.Command, args []string) {
148157 log .Done ("Successfully deleted .devspace folder" )
149158 }
150159 }
160+
161+ if cmd .flags .deleteClusterRoleBinding {
162+ err = cmd .kubectl .RbacV1beta1 ().ClusterRoleBindings ().Delete (clusterRoleBindingName , & metav1.DeleteOptions {})
163+ if err != nil {
164+ log .Failf ("Failed to remove ClusterRoleBinding: " , err .Error ())
165+ } else {
166+ log .Done ("Successfully deleted ClusterRoleBinding '" + clusterRoleBindingName + "'" )
167+ }
168+ }
151169}
152170
153171func (cmd * ResetCmd ) determineResetExtent () {
154172 config := configutil .GetConfig (false )
155173
156- cmd .flags .deleteDevspaceFolder = true
157174 cmd .flags .deleteRelease = true
158175
176+ cmd .flags .deleteDevspaceFolder = * stdinutil .GetFromStdin (& stdinutil.GetFromStdinParams {
177+ Question : "Should the .devspace folder be removed? (y/n)" ,
178+ DefaultValue : "y" ,
179+ ValidationRegexPattern : "^(y|n)$" ,
180+ }) == "y"
181+
159182 cmd .flags .deleteDockerfile = * stdinutil .GetFromStdin (& stdinutil.GetFromStdinParams {
160183 Question : "Should the Dockerfile be removed? (y/n)" ,
161184 DefaultValue : "y" ,
162185 ValidationRegexPattern : "^(y|n)$" ,
163186 }) == "y"
164187
165188 cmd .flags .deleteChart = * stdinutil .GetFromStdin (& stdinutil.GetFromStdinParams {
166- Question : "Should the Chart (chart/*) be removed ? (y/n)" ,
189+ Question : "Should the Chart (chart/*) be removed? (y/n)" ,
167190 DefaultValue : "y" ,
168191 ValidationRegexPattern : "^(y|n)$" ,
169192 }) == "y"
170193
171194 if config .Services .InternalRegistry != nil {
172195 cmd .flags .deleteRegistry = * stdinutil .GetFromStdin (& stdinutil.GetFromStdinParams {
173- Question : "Should the internal registry be removed ? (y/n)" ,
196+ Question : "Should the internal registry be removed? (y/n)" ,
174197 DefaultValue : "y" ,
175198 ValidationRegexPattern : "^(y|n)$" ,
176199 }) == "y"
177200 }
178201
179202 cmd .flags .deleteTiller = * stdinutil .GetFromStdin (& stdinutil.GetFromStdinParams {
180- Question : "Should the tiller server be removed ? (y/n)" ,
203+ Question : "Should the tiller server be removed? (y/n)" ,
181204 DefaultValue : "y" ,
182205 ValidationRegexPattern : "^(y|n)$" ,
183206 }) == "y"
207+
208+ _ , err := cmd .kubectl .RbacV1beta1 ().ClusterRoleBindings ().Get (clusterRoleBindingName , metav1.GetOptions {})
209+
210+ if err == nil {
211+ cmd .flags .deleteClusterRoleBinding = * stdinutil .GetFromStdin (& stdinutil.GetFromStdinParams {
212+ Question : "Should the ClusterRoleBinding '" + clusterRoleBindingName + "' be removed? (y/n)" ,
213+ DefaultValue : "y" ,
214+ ValidationRegexPattern : "^(y|n)$" ,
215+ }) == "y"
216+ }
184217}
185218
186219func (cmd * ResetCmd ) shouldContinue () bool {
@@ -198,12 +231,6 @@ func (cmd *ResetCmd) deleteRelease() error {
198231 releaseName := * config .DevSpace .Release .Name
199232
200233 if cmd .kubectl == nil || cmd .helm == nil {
201- cmd .kubectl , err = kubectl .NewClient ()
202-
203- if err != nil {
204- return err
205- }
206-
207234 isDeployed := helmClient .IsTillerDeployed (cmd .kubectl , config .Services .Tiller )
208235
209236 if isDeployed == false {
@@ -229,12 +256,6 @@ func (cmd *ResetCmd) deleteRegistry() error {
229256 registryReleaseName := * config .Services .InternalRegistry .Release .Name
230257
231258 if cmd .kubectl == nil || cmd .helm == nil {
232- cmd .kubectl , err = kubectl .NewClient ()
233-
234- if err != nil {
235- return err
236- }
237-
238259 isDeployed := helmClient .IsTillerDeployed (cmd .kubectl , config .Services .Tiller )
239260
240261 if isDeployed == false {
@@ -254,17 +275,8 @@ func (cmd *ResetCmd) deleteRegistry() error {
254275}
255276
256277func (cmd * ResetCmd ) deleteTiller () error {
257- var err error
258278 config := configutil .GetConfig (false )
259279
260- if cmd .kubectl == nil {
261- cmd .kubectl , err = kubectl .NewClient ()
262-
263- if err != nil {
264- return err
265- }
266- }
267-
268280 return helmClient .DeleteTiller (cmd .kubectl , config .Services .Tiller )
269281}
270282
0 commit comments