4
4
"context"
5
5
b64 "encoding/base64"
6
6
"encoding/json"
7
+ "fmt"
7
8
"strings"
8
9
9
10
"github.com/charmbracelet/log"
@@ -30,6 +31,7 @@ type RegistryAuth struct {
30
31
Password string `json:"password" validate:"required"`
31
32
Email string `json:"email" validate:"required,email"`
32
33
Auth string `json:"auth"`
34
+ Server string `json:"server" validate:"required,http_url"`
33
35
}
34
36
35
37
type RegistryConfig struct {
@@ -69,6 +71,7 @@ func New(server string, username string, password string, email string) Registry
69
71
Password : password ,
70
72
Email : email ,
71
73
Auth : b64 .StdEncoding .EncodeToString ([]byte (username + ":" + password )),
74
+ Server : server ,
72
75
},
73
76
},
74
77
},
@@ -80,24 +83,20 @@ func New(server string, username string, password string, email string) Registry
80
83
}
81
84
82
85
// 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
+ }
84
90
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 {
96
92
err := validate .Struct (auth )
97
93
if err != nil {
98
- return err
94
+ return fmt . Errorf ( err . Error ())
99
95
}
100
96
}
97
+ if r .Exists (ctx , client ) {
98
+ return fmt .Errorf ("secret for this registry server already exists" )
99
+ }
101
100
return nil
102
101
}
103
102
@@ -142,39 +141,38 @@ func (r *Registry) Create(ctx context.Context, config *rest.Config, logger *log.
142
141
if err != nil {
143
142
return err
144
143
}
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
-
159
144
installer , err := engine .GetEngine (config )
160
145
if err != nil {
161
146
return err
162
147
}
163
148
164
149
release , _ := installer .GetRelease ()
165
150
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
169
155
}
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
+ )
170
175
}
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
- )
178
176
179
177
if r .Default {
180
178
if release .Config ["args" ] == nil {
0 commit comments