Skip to content

Commit aa99efc

Browse files
author
Lukas Gentele
authored
Merge pull request #235 from covexo/issue-233
Issue 233
2 parents 0fda603 + 24b16c0 commit aa99efc

12 files changed

Lines changed: 332 additions & 172 deletions

File tree

Gopkg.lock

Lines changed: 19 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/init.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"io/ioutil"
55
"os"
66
"path/filepath"
7+
"regexp"
78
"strconv"
89
"strings"
910

@@ -480,6 +481,9 @@ func (cmd *InitCmd) configureRegistry() {
480481
}
481482
}
482483
}
484+
googleRegistryRegex := regexp.MustCompile("^(.+\\.)?gcr.io$")
485+
isGoogleRegistry := googleRegistryRegex.Match([]byte(*registryURL))
486+
isDockerHub := *registryURL == "hub.docker.com"
483487

484488
if dockerUsername == "" {
485489
if cmd.defaultImage.Build.Engine.Docker != nil {
@@ -519,11 +523,10 @@ func (cmd *InitCmd) configureRegistry() {
519523
})
520524
}
521525
}
526+
defaultImageName := *cmd.defaultImage.Name
527+
defaultImageNameParts := strings.Split(defaultImageName, "/")
522528

523-
if *registryURL == "hub.docker.com" {
524-
defaultImageName := *cmd.defaultImage.Name
525-
defaultImageNameParts := strings.Split(defaultImageName, "/")
526-
529+
if isDockerHub {
527530
if len(defaultImageNameParts) < 2 {
528531
defaultImageName = dockerUsername + "/" + strings.TrimPrefix(defaultImageName, dockerUsername)
529532
}
@@ -534,6 +537,17 @@ func (cmd *InitCmd) configureRegistry() {
534537
ValidationRegexPattern: "^[a-zA-Z0-9/]{4,30}$",
535538
})
536539
}
540+
541+
if isGoogleRegistry {
542+
if len(defaultImageNameParts) < 2 {
543+
gcloudProjectName := stdinutil.GetFromStdin(&stdinutil.GetFromStdinParams{
544+
Question: "What is the name of your Google Cloud Project? (run 'gcloud config get-value project' to get the project name)",
545+
DefaultValue: "",
546+
ValidationRegexPattern: "^.*$",
547+
})
548+
cmd.defaultImage.Name = configutil.String(*gcloudProjectName + "/" + strings.TrimPrefix(defaultImageName, *gcloudProjectName))
549+
}
550+
}
537551
} else {
538552
imageMap := *cmd.config.Images
539553
defaultImageConf, defaultImageExists := imageMap["default"]

cmd/reset.go

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2728
type 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

3638
func init() {
@@ -67,6 +69,13 @@ command: devspace down
6769
// Run executes the reset command logic
6870
func (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

153171
func (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

186219
func (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

256277
func (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

Comments
 (0)