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