Skip to content

Commit 23b0d45

Browse files
Adds conditions for clusters that do not have Sourcegraph installed. (#951)
- Before, clusters/namespaces would pass all validations even if no Sourcegraph instance was installed. - Now: pods, services, connections and PVC validations fail with a warning if none exist.
1 parent 3b6f074 commit 23b0d45

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

internal/validate/kube/kube.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,18 @@ func Pods(ctx context.Context, config *Config) ([]validate.Result, error) {
211211

212212
var results []validate.Result
213213

214+
if len(pods.Items) == 0 {
215+
results = append(results, validate.Result{
216+
Status: validate.Warning,
217+
Message: fmt.Sprintf(
218+
"No pods exist on namespace '%s'. check namespace/cluster",
219+
config.namespace,
220+
),
221+
})
222+
223+
return results, nil
224+
}
225+
214226
for _, pod := range pods.Items {
215227
r := validatePod(&pod)
216228
results = append(results, r...)
@@ -291,6 +303,18 @@ func Services(ctx context.Context, config *Config) ([]validate.Result, error) {
291303

292304
var results []validate.Result
293305

306+
if len(services.Items) <= 1 {
307+
results = append(results, validate.Result{
308+
Status: validate.Warning,
309+
Message: fmt.Sprintf(
310+
"unexpected number of services on namespace '%s'; check namespace/cluster",
311+
config.namespace,
312+
),
313+
})
314+
315+
return results, nil
316+
}
317+
294318
for _, service := range services.Items {
295319
r := validateService(&service)
296320
results = append(results, r...)
@@ -326,6 +350,18 @@ func PVCs(ctx context.Context, config *Config) ([]validate.Result, error) {
326350

327351
var results []validate.Result
328352

353+
if len(pvcs.Items) == 0 {
354+
results = append(results, validate.Result{
355+
Status: validate.Warning,
356+
Message: fmt.Sprintf(
357+
"no PVCs exist in namespace '%s'; check namespace/cluster",
358+
config.namespace,
359+
),
360+
})
361+
362+
return results, nil
363+
}
364+
329365
for _, pvc := range pvcs.Items {
330366
r := validatePVC(&pvc)
331367
results = append(results, r...)
@@ -368,6 +404,18 @@ func Connections(ctx context.Context, config *Config) ([]validate.Result, error)
368404
return nil, err
369405
}
370406

407+
if len(pods.Items) == 0 {
408+
results = append(results, validate.Result{
409+
Status: validate.Warning,
410+
Message: fmt.Sprintf(
411+
"cannot check connections: zero pods exist in namespace '%s'",
412+
config.namespace,
413+
),
414+
})
415+
416+
return results, nil
417+
}
418+
371419
// iterate through pods looking for specific pod name prefixes, then construct
372420
// a relationship map between pods that should have connectivity with each other
373421
for _, pod := range pods.Items {

0 commit comments

Comments
 (0)