@@ -16,7 +16,7 @@ import (
16
16
type (
17
17
API interface {
18
18
GoOverAllContexts ()
19
- GoOverContextByName (string )
19
+ GoOverContextByName (string , string , string )
20
20
GoOverCurrentContext ()
21
21
}
22
22
@@ -35,56 +35,66 @@ func getDefaultOverride() clientcmd.ConfigOverrides {
35
35
}
36
36
}
37
37
38
- func goOverContext (contextName string , config clientcmd.ClientConfig , logger * log.Entry , codefresh codefresh.API , r reporter.Reporter ) error {
39
- clientCnf , e := config .ClientConfig ()
38
+ type getOverContextOptions struct {
39
+ name string
40
+ namespace string
41
+ serviceaccount string
42
+ config clientcmd.ClientConfig
43
+ logger * log.Entry
44
+ codefresh codefresh.API
45
+ reporter reporter.Reporter
46
+ }
47
+
48
+ func goOverContext (options * getOverContextOptions ) error {
49
+ clientCnf , e := options .config .ClientConfig ()
40
50
if e != nil {
41
51
message := fmt .Sprintf ("Failed to create config with error:\n %s" , e )
42
- logger .Warn (message )
52
+ options . logger .Warn (message )
43
53
return e
44
54
}
45
- logger .Info ("Created config for context" )
55
+ options . logger .Info ("Created config for context" )
46
56
47
- logger .Info ("Creating rest client" )
57
+ options . logger .Info ("Creating rest client" )
48
58
clientset , e := kubeConfig .NewForConfig (clientCnf )
49
59
if e != nil {
50
60
message := fmt .Sprintf ("Failed to create kubernetes client with error:\n %s" , e )
51
- logger .Warn (message )
61
+ options . logger .Warn (message )
52
62
return e
53
63
}
54
- logger .Info ("Created client set for context" )
64
+ options . logger .Info ("Created client set for context" )
55
65
56
- logger .Info ("Fetching service account from cluster" )
57
- sa , e := clientset .CoreV1 ().ServiceAccounts ("default" ).Get ("default" , metav1.GetOptions {})
66
+ options . logger .Info ("Fetching service account from cluster" )
67
+ sa , e := clientset .CoreV1 ().ServiceAccounts (options . namespace ).Get (options . serviceaccount , metav1.GetOptions {})
58
68
if e != nil {
59
69
message := fmt .Sprintf ("Failed to get service account token with error:\n %s" , e )
60
- logger .Warn (message )
70
+ options . logger .Warn (message )
61
71
return e
62
72
}
63
73
secretName := string (sa .Secrets [0 ].Name )
64
74
namespace := sa .Namespace
65
- logger .WithFields (log.Fields {
75
+ options . logger .WithFields (log.Fields {
66
76
"secret_name" : secretName ,
67
77
"namespace" : namespace ,
68
78
}).Info (fmt .Sprint ("Found service account accisiated with secret" ))
69
79
70
- logger .Info ("Fetching secret from cluster" )
80
+ options . logger .Info ("Fetching secret from cluster" )
71
81
secret , e := clientset .CoreV1 ().Secrets (namespace ).Get (secretName , metav1.GetOptions {})
72
82
if e != nil {
73
83
message := fmt .Sprintf ("Failed to get secrets with error:\n %s" , e )
74
- logger .Warn (message )
84
+ options . logger .Warn (message )
75
85
return e
76
86
}
77
- logger .Info (fmt .Sprint ("Found secret" ))
87
+ options . logger .Info (fmt .Sprint ("Found secret" ))
78
88
79
- logger .Info (fmt .Sprint ("Creating cluster in Codefresh" ))
80
- result , e := codefresh .Create (clientCnf .Host , contextName , secret .Data ["token" ], secret .Data ["ca.crt" ])
89
+ options . logger .Info (fmt .Sprint ("Creating cluster in Codefresh" ))
90
+ result , e := options . codefresh .Create (clientCnf .Host , options . name , secret .Data ["token" ], secret .Data ["ca.crt" ])
81
91
if e != nil {
82
92
message := fmt .Sprintf ("Failed to add cluster with error:\n %s" , e )
83
- logger .Error (message )
93
+ options . logger .Error (message )
84
94
return e
85
95
}
86
- r . AddToReport (contextName , reporter .SUCCESS , string (result ))
87
- logger .Info (fmt .Sprint ("Cluster added!" ))
96
+ options . reporter . AddToReport (options . name , reporter .SUCCESS , string (result ))
97
+ options . logger .Info (fmt .Sprint ("Cluster added!" ))
88
98
return nil
89
99
}
90
100
@@ -98,21 +108,39 @@ func (kube *kubernetes) GoOverAllContexts() {
98
108
logger .Info ("Creating config" )
99
109
override := getDefaultOverride ()
100
110
config := clientcmd .NewNonInteractiveClientConfig (* kube .config , contextName , & override , nil )
101
- err := goOverContext (contextName , config , logger , kube .codefresh , kube .reporter )
111
+ options := & getOverContextOptions {
112
+ name : contextName ,
113
+ config : config ,
114
+ logger : logger ,
115
+ codefresh : kube .codefresh ,
116
+ reporter : kube .reporter ,
117
+ }
118
+ err := goOverContext (options )
102
119
if err != nil {
103
120
kube .reporter .AddToReport (contextName , reporter .FAILED , err .Error ())
104
121
continue
105
122
}
106
123
}
107
124
}
108
125
109
- func (kube * kubernetes ) GoOverContextByName (contextName string ) {
126
+ func (kube * kubernetes ) GoOverContextByName (contextName string , namespace string , serviceaccount string ) {
110
127
override := getDefaultOverride ()
111
128
config := clientcmd .NewNonInteractiveClientConfig (* kube .config , contextName , & override , nil )
112
129
logger := log .WithFields (log.Fields {
113
- "context_name" : contextName ,
130
+ "context_name" : contextName ,
131
+ "namespace" : namespace ,
132
+ "serviceaccount" : serviceaccount ,
114
133
})
115
- err := goOverContext (contextName , config , logger , kube .codefresh , kube .reporter )
134
+ options := & getOverContextOptions {
135
+ name : contextName ,
136
+ config : config ,
137
+ logger : logger ,
138
+ codefresh : kube .codefresh ,
139
+ reporter : kube .reporter ,
140
+ namespace : namespace ,
141
+ serviceaccount : serviceaccount ,
142
+ }
143
+ err := goOverContext (options )
116
144
if err != nil {
117
145
kube .reporter .AddToReport (contextName , reporter .FAILED , err .Error ())
118
146
}
@@ -129,8 +157,14 @@ func (kube *kubernetes) GoOverCurrentContext() {
129
157
logger := log .WithFields (log.Fields {
130
158
"context_name" : contextName ,
131
159
})
132
-
133
- err = goOverContext (contextName , config , logger , kube .codefresh , kube .reporter )
160
+ options := & getOverContextOptions {
161
+ name : contextName ,
162
+ config : config ,
163
+ logger : logger ,
164
+ codefresh : kube .codefresh ,
165
+ reporter : kube .reporter ,
166
+ }
167
+ err = goOverContext (options )
134
168
if err != nil {
135
169
kube .reporter .AddToReport (contextName , reporter .FAILED , err .Error ())
136
170
}
0 commit comments