Skip to content

Commit a26dc55

Browse files
authored
Merge pull request #129 from kndpio/127-make-credentials-parameters-optional-in-case-of-local-registry-creation
made optional credential parameters for local registry creation
2 parents 3446463 + 98eb8a2 commit a26dc55

File tree

2 files changed

+43
-56
lines changed

2 files changed

+43
-56
lines changed

cmd/kndp/registry/create.go

+8-19
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55

66
"github.com/charmbracelet/log"
7-
"github.com/go-playground/validator/v10"
87

98
"github.com/kndpio/kndp/internal/registry"
109

@@ -17,38 +16,28 @@ const (
1716
)
1817

1918
type createCmd struct {
20-
RegistryServer string `required:"" help:"is your Private Registry FQDN."`
21-
Username string `required:"" help:"is your Username."`
22-
Password string `required:"" help:"is your Password."`
23-
Email string `required:"" help:"is your Email."`
19+
RegistryServer string `help:"is your Private Registry FQDN."`
20+
Username string `help:"is your Username."`
21+
Password string `help:"is your Password."`
22+
Email string `help:"is your Email."`
2423
Default bool `help:"Set registry as default."`
2524
Local bool `help:"Create local registry."`
2625
}
2726

2827
func (c *createCmd) Run(ctx context.Context, client *kubernetes.Clientset, config *rest.Config, logger *log.Logger) error {
29-
3028
reg := registry.New(c.RegistryServer, c.Username, c.Password, c.Email)
3129
reg.SetDefault(c.Default)
3230
reg.SetLocal(c.Local)
33-
verr := reg.Validate(logger)
34-
if verr != nil {
35-
errs := verr.(validator.ValidationErrors)
36-
for _, err := range errs {
37-
logger.Errorf(fieldErrMsg, err.Field(), err.Tag())
38-
}
39-
return nil
31+
err := reg.Validate(ctx, client, logger)
32+
if err != nil {
33+
return err
4034
}
4135

42-
if reg.Exists(ctx, client) {
43-
logger.Info("Secret for this registry server already exists.")
44-
return nil
45-
}
46-
err := reg.Create(ctx, config, logger)
36+
err = reg.Create(ctx, config, logger)
4737
if err != nil {
4838
logger.Error(err)
4939
} else {
5040
logger.Info("Registry created successfully.")
5141
}
52-
5342
return nil
5443
}

internal/registry/registry.go

+35-37
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
b64 "encoding/base64"
66
"encoding/json"
7+
"fmt"
78
"strings"
89

910
"github.com/charmbracelet/log"
@@ -30,6 +31,7 @@ type RegistryAuth struct {
3031
Password string `json:"password" validate:"required"`
3132
Email string `json:"email" validate:"required,email"`
3233
Auth string `json:"auth"`
34+
Server string `json:"server" validate:"required,http_url"`
3335
}
3436

3537
type RegistryConfig struct {
@@ -69,6 +71,7 @@ func New(server string, username string, password string, email string) Registry
6971
Password: password,
7072
Email: email,
7173
Auth: b64.StdEncoding.EncodeToString([]byte(username + ":" + password)),
74+
Server: server,
7275
},
7376
},
7477
},
@@ -80,24 +83,20 @@ func New(server string, username string, password string, email string) Registry
8083
}
8184

8285
// Validate data in Registry object
83-
func (r *Registry) Validate(logger *log.Logger) error {
86+
func (r *Registry) Validate(ctx context.Context, client *kubernetes.Clientset, logger *log.Logger) error {
87+
if r.Local {
88+
return nil
89+
}
8490
validate := validator.New(validator.WithRequiredStructEnabled())
85-
for serverUrl, auth := range r.Config.Auths {
86-
87-
if !r.Local {
88-
err := validate.Var(serverUrl, "required,http_url")
89-
if err != nil {
90-
return err
91-
}
92-
} else {
93-
logger.Warn("Custom domains for local repositories do not supported yet, set default: " + DefaultLocalDomain)
94-
}
95-
91+
for _, auth := range r.Config.Auths {
9692
err := validate.Struct(auth)
9793
if err != nil {
98-
return err
94+
return fmt.Errorf(err.Error())
9995
}
10096
}
97+
if r.Exists(ctx, client) {
98+
return fmt.Errorf("secret for this registry server already exists")
99+
}
101100
return nil
102101
}
103102

@@ -142,39 +141,38 @@ func (r *Registry) Create(ctx context.Context, config *rest.Config, logger *log.
142141
if err != nil {
143142
return err
144143
}
145-
146-
if r.Local {
147-
err := r.CreateLocal(ctx, client)
148-
if err != nil {
149-
return err
150-
}
151-
}
152-
153-
secretSpec := r.SecretSpec()
154-
secret, err := secretClient(client).Create(ctx, &secretSpec, metav1.CreateOptions{})
155-
if err != nil {
156-
return err
157-
}
158-
159144
installer, err := engine.GetEngine(config)
160145
if err != nil {
161146
return err
162147
}
163148

164149
release, _ := installer.GetRelease()
165150

166-
if release.Config == nil {
167-
release.Config = map[string]interface{}{
168-
"imagePullSecrets": []interface{}{},
151+
if r.Local {
152+
err := r.CreateLocal(ctx, client)
153+
if err != nil {
154+
return err
169155
}
156+
} else {
157+
secretSpec := r.SecretSpec()
158+
secret, err := secretClient(client).Create(ctx, &secretSpec, metav1.CreateOptions{})
159+
if err != nil {
160+
return err
161+
}
162+
163+
if release.Config == nil {
164+
release.Config = map[string]interface{}{
165+
"imagePullSecrets": []interface{}{},
166+
}
167+
}
168+
if release.Config["imagePullSecrets"] == nil {
169+
release.Config["imagePullSecrets"] = []interface{}{}
170+
}
171+
release.Config["imagePullSecrets"] = append(
172+
release.Config["imagePullSecrets"].([]interface{}),
173+
secret.ObjectMeta.Name,
174+
)
170175
}
171-
if release.Config["imagePullSecrets"] == nil {
172-
release.Config["imagePullSecrets"] = []interface{}{}
173-
}
174-
release.Config["imagePullSecrets"] = append(
175-
release.Config["imagePullSecrets"].([]interface{}),
176-
secret.ObjectMeta.Name,
177-
)
178176

179177
if r.Default {
180178
if release.Config["args"] == nil {

0 commit comments

Comments
 (0)