Skip to content

Commit 85cacf6

Browse files
TristanCacqueraymorucci
authored andcommitted
Ensure user provided opendev.org is a valid connection
This change prevents the user from providing an un-expected connection named opendev.org. Change-Id: Ifcb15459ae029cc15c1a6d56f5fd5f650db88b96
1 parent b65a044 commit 85cacf6

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

controllers/softwarefactory_controller.go

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,30 +194,51 @@ func resolveConfigBaseURL(cr sfv1.SoftwareFactory) string {
194194
return ""
195195
}
196196

197-
func GetUserDefinedConnections(cr *sfv1.SoftwareFactory) []string {
197+
func GetUserDefinedConnections(cr *sfv1.SoftwareFactory) ([]string, error) {
198198
var conns []string
199199
for _, conn := range cr.Spec.Zuul.GerritConns {
200+
if conn.Name == "opendev.org" && conn.Hostname != "review.opendev.org" {
201+
return conns, errors.New("opendev.org gerrit connection must be for review.opendev.org")
202+
}
200203
conns = append(conns, conn.Name)
201204
}
202205
for _, conn := range cr.Spec.Zuul.GitHubConns {
206+
if conn.Name == "opendev.org" {
207+
return conns, errors.New("opendev.org must be a gerrit or git connection")
208+
}
203209
conns = append(conns, conn.Name)
204210
}
205211
for _, conn := range cr.Spec.Zuul.GitLabConns {
212+
if conn.Name == "opendev.org" {
213+
return conns, errors.New("opendev.org must be a gerrit or git connection")
214+
}
206215
conns = append(conns, conn.Name)
207216
}
208217
for _, conn := range cr.Spec.Zuul.GitConns {
218+
if conn.Name == "opendev.org" && conn.Baseurl != "https://opendev.org" {
219+
return conns, errors.New("opendev.org git connection must be for https://opendev.org")
220+
}
209221
conns = append(conns, conn.Name)
210222
}
211223
for _, conn := range cr.Spec.Zuul.PagureConns {
224+
if conn.Name == "opendev.org" {
225+
return conns, errors.New("opendev.org must be a gerrit or git connection")
226+
}
212227
conns = append(conns, conn.Name)
213228
}
214229
for _, conn := range cr.Spec.Zuul.ElasticSearchConns {
230+
if conn.Name == "opendev.org" {
231+
return conns, errors.New("opendev.org must be a gerrit or git connection")
232+
}
215233
conns = append(conns, conn.Name)
216234
}
217235
for _, conn := range cr.Spec.Zuul.SMTPConns {
236+
if conn.Name == "opendev.org" {
237+
return conns, errors.New("opendev.org must be a gerrit or git connection")
238+
}
218239
conns = append(conns, conn.Name)
219240
}
220-
return conns
241+
return conns, nil
221242
}
222243

223244
func (r *SFController) IsCodesearchEnabled() bool {
@@ -495,7 +516,11 @@ func HasDuplicate(conns []string) string {
495516
func (r *SoftwareFactoryReconciler) mkSFController(
496517
ctx context.Context, ns string, owner client.Object, cr sfv1.SoftwareFactory,
497518
standalone bool) SFController {
498-
conns := GetUserDefinedConnections(&cr)
519+
conns, err := GetUserDefinedConnections(&cr)
520+
if err != nil {
521+
ctrl.Log.Error(err, "Invalid Zuul connections")
522+
os.Exit(1)
523+
}
499524
if dup := HasDuplicate(conns); dup != "" {
500525
fmt.Fprintf(os.Stderr, "Duplicate zuul connection: %s", dup)
501526
os.Exit(1)

controllers/suite_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,20 @@ func TestAPIs(t *testing.T) {
4848

4949
func TestDuplicateConn(t *testing.T) {
5050
var cr sfv1.SoftwareFactory
51-
if HasDuplicate(GetUserDefinedConnections(&cr)) != "" {
51+
if conns, err := GetUserDefinedConnections(&cr); err != nil || HasDuplicate(conns) != "" {
5252
t.Errorf("CR does not have dup")
5353
}
5454
cr.Spec.Zuul.GitConns = []sfv1.GitConnection{
5555
sfv1.GitConnection{
56-
Name: "opendev.org",
56+
Name: "test",
5757
},
5858
}
5959
cr.Spec.Zuul.GerritConns = []sfv1.GerritConnection{
6060
sfv1.GerritConnection{
61-
Name: "opendev.org",
61+
Name: "test",
6262
},
6363
}
64-
if HasDuplicate(GetUserDefinedConnections(&cr)) != "opendev.org" {
64+
if conns, err := GetUserDefinedConnections(&cr); err != nil || HasDuplicate(conns) != "test" {
6565
t.Errorf("CR have dup")
6666
}
6767
}

0 commit comments

Comments
 (0)