1
1
package cmd
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"github.com/nginxinc/nginx-k8s-supportpkg/pkg/data_collector"
6
7
"github.com/nginxinc/nginx-k8s-supportpkg/pkg/jobs"
7
8
"github.com/spf13/cobra"
9
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8
10
"os"
9
11
)
10
12
@@ -24,32 +26,55 @@ func Execute() {
24
26
os .Exit (1 )
25
27
}
26
28
27
- for _ , job := range jobs .JobList () {
28
- fmt .Printf ("Running job %s..." , job .Name )
29
- err = job .Collect (collector )
29
+ if allNamespacesExist (collector ) == true {
30
+
31
+ for _ , job := range jobs .JobList () {
32
+ fmt .Printf ("Running job %s..." , job .Name )
33
+ err = job .Collect (collector )
34
+ if err != nil {
35
+ fmt .Printf (" Error: %s\n " , err )
36
+ } else {
37
+ fmt .Print (" OK\n " )
38
+ }
39
+ }
40
+
41
+ tarFile , err := collector .WrapUp ()
30
42
if err != nil {
31
- fmt .Printf (" Error: %s\n " , err )
43
+ fmt .Println (fmt .Errorf ("error when wrapping up: %s" , err ))
44
+ os .Exit (1 )
32
45
} else {
33
- fmt .Print ( " OK \n " )
46
+ fmt .Printf ( "Supportpkg successfully generated: %s \n ", tarFile )
34
47
}
35
- }
36
-
37
- tarFile , err := collector .WrapUp ()
38
- if err != nil {
39
- fmt .Println (fmt .Errorf ("error when wrapping up: %s" , err ))
40
- os .Exit (1 )
41
48
} else {
42
- fmt .Printf ( "Supportpkg successfully generated: %s \n " , tarFile )
49
+ fmt .Println ( " Error: all namespaces do not exist" )
43
50
}
44
51
},
45
52
}
46
53
47
54
rootCmd .Flags ().StringSliceVarP (& namespaces , "namespace" , "n" , []string {}, "list of namespaces to collect information from" )
48
- rootCmd .MarkFlagRequired ("namespace" )
55
+ if err := rootCmd .MarkFlagRequired ("namespace" ); err != nil {
56
+ fmt .Println (err )
57
+ os .Exit (1 )
58
+ }
49
59
rootCmd .SetUsageTemplate ("Usage: \n nic supportpkg [-n|--namespace] ns1 [-n|--namespace] ns2 ...\n nic supportpkg [-n|--namespace] ns1,ns2 ...\n " )
50
60
51
61
if err := rootCmd .Execute (); err != nil {
52
62
fmt .Println (err )
53
63
os .Exit (1 )
54
64
}
55
65
}
66
+
67
+ func allNamespacesExist (dc * data_collector.DataCollector ) bool {
68
+
69
+ var allExist bool = true
70
+ for _ , namespace := range dc .Namespaces {
71
+ _ , err := dc .K8sCoreClientSet .CoreV1 ().Namespaces ().Get (context .TODO (), namespace , metav1.GetOptions {})
72
+ if err != nil {
73
+ dc .Logger .Printf ("\t %s: %v\n " , namespace , err )
74
+ fmt .Printf ("\t %s: %v\n " , namespace , err )
75
+ allExist = false
76
+ }
77
+ }
78
+
79
+ return allExist
80
+ }
0 commit comments