@@ -104,12 +104,33 @@ func (c *clusterClient) Apply(manifest string) error {
104
104
return c .waitForKubectlApply (manifest )
105
105
}
106
106
107
- func (c * clusterClient ) GetClusterObjects () ([]* clusterv1.Cluster , error ) {
107
+ func (c * clusterClient ) GetContextNamespace () string {
108
+ if c .configOverrides .Context .Namespace == "" {
109
+ c .configOverrides .Context .Namespace = apiv1 .NamespaceDefault
110
+ }
111
+ return c .configOverrides .Context .Namespace
112
+ }
113
+
114
+ func (c * clusterClient ) GetClusterObject (name , ns string ) (* clusterv1.Cluster , error ) {
115
+ clustersInNamespace , err := c .GetClusterObjectsInNamespace (ns )
116
+ if err != nil {
117
+ return nil , err
118
+ }
119
+ var cluster * clusterv1.Cluster
120
+ for _ , nc := range clustersInNamespace {
121
+ if nc .Name == name {
122
+ cluster = nc
123
+ break
124
+ }
125
+ }
126
+ return cluster , nil
127
+ }
128
+
129
+ func (c * clusterClient ) GetClusterObjectsInNamespace (namespace string ) ([]* clusterv1.Cluster , error ) {
108
130
clusters := []* clusterv1.Cluster {}
109
- // TODO: Iterate over all namespaces where we could have Cluster API Objects https://github.com/kubernetes-sigs/cluster-api/issues/252
110
- clusterlist , err := c .clientSet .ClusterV1alpha1 ().Clusters (apiv1 .NamespaceDefault ).List (metav1.ListOptions {})
131
+ clusterlist , err := c .clientSet .ClusterV1alpha1 ().Clusters (namespace ).List (metav1.ListOptions {})
111
132
if err != nil {
112
- return nil , fmt .Errorf ("error listing cluster objects: %v" , err )
133
+ return nil , fmt .Errorf ("error listing cluster objects in namespace %q : %v" , namespace , err )
113
134
}
114
135
115
136
for i := 0 ; i < len (clusterlist .Items ); i ++ {
@@ -118,11 +139,15 @@ func (c *clusterClient) GetClusterObjects() ([]*clusterv1.Cluster, error) {
118
139
return clusters , nil
119
140
}
120
141
121
- func (c * clusterClient ) GetMachineDeploymentObjects () ([]* clusterv1.MachineDeployment , error ) {
142
+ func (c * clusterClient ) GetClusterObjects () ([]* clusterv1.Cluster , error ) {
122
143
// TODO: Iterate over all namespaces where we could have Cluster API Objects https://github.com/kubernetes-sigs/cluster-api/issues/252
123
- machineDeploymentList , err := c .clientSet .ClusterV1alpha1 ().MachineDeployments (apiv1 .NamespaceDefault ).List (metav1.ListOptions {})
144
+ return c .GetClusterObjectsInNamespace (apiv1 .NamespaceDefault )
145
+ }
146
+
147
+ func (c * clusterClient ) GetMachineDeploymentObjectsInNamespace (namespace string ) ([]* clusterv1.MachineDeployment , error ) {
148
+ machineDeploymentList , err := c .clientSet .ClusterV1alpha1 ().MachineDeployments (namespace ).List (metav1.ListOptions {})
124
149
if err != nil {
125
- return nil , fmt .Errorf ("error listing machine deployment objects: %v" , err )
150
+ return nil , fmt .Errorf ("error listing machine deployment objects in namespace %q : %v" , namespace , err )
126
151
}
127
152
var machineDeployments []* clusterv1.MachineDeployment
128
153
for i := 0 ; i < len (machineDeploymentList .Items ); i ++ {
@@ -131,11 +156,15 @@ func (c *clusterClient) GetMachineDeploymentObjects() ([]*clusterv1.MachineDeplo
131
156
return machineDeployments , nil
132
157
}
133
158
134
- func (c * clusterClient ) GetMachineSetObjects () ([]* clusterv1.MachineSet , error ) {
159
+ func (c * clusterClient ) GetMachineDeploymentObjects () ([]* clusterv1.MachineDeployment , error ) {
135
160
// TODO: Iterate over all namespaces where we could have Cluster API Objects https://github.com/kubernetes-sigs/cluster-api/issues/252
161
+ return c .GetMachineDeploymentObjectsInNamespace (apiv1 .NamespaceDefault )
162
+ }
163
+
164
+ func (c * clusterClient ) GetMachineSetObjectsInNamespace (namespace string ) ([]* clusterv1.MachineSet , error ) {
136
165
machineSetList , err := c .clientSet .ClusterV1alpha1 ().MachineSets (apiv1 .NamespaceDefault ).List (metav1.ListOptions {})
137
166
if err != nil {
138
- return nil , fmt .Errorf ("error listing machine set objects: %v" , err )
167
+ return nil , fmt .Errorf ("error listing machine set objects in namespace %q : %v" , namespace , err )
139
168
}
140
169
var machineSets []* clusterv1.MachineSet
141
170
for i := 0 ; i < len (machineSetList .Items ); i ++ {
@@ -144,12 +173,16 @@ func (c *clusterClient) GetMachineSetObjects() ([]*clusterv1.MachineSet, error)
144
173
return machineSets , nil
145
174
}
146
175
147
- func (c * clusterClient ) GetMachineObjects () ([]* clusterv1.Machine , error ) {
176
+ func (c * clusterClient ) GetMachineSetObjects () ([]* clusterv1.MachineSet , error ) {
148
177
// TODO: Iterate over all namespaces where we could have Cluster API Objects https://github.com/kubernetes-sigs/cluster-api/issues/252
178
+ return c .GetMachineSetObjectsInNamespace (apiv1 .NamespaceDefault )
179
+ }
180
+
181
+ func (c * clusterClient ) GetMachineObjectsInNamespace (namespace string ) ([]* clusterv1.Machine , error ) {
149
182
machines := []* clusterv1.Machine {}
150
- machineslist , err := c .clientSet .ClusterV1alpha1 ().Machines (apiv1 . NamespaceDefault ).List (metav1.ListOptions {})
183
+ machineslist , err := c .clientSet .ClusterV1alpha1 ().Machines (namespace ).List (metav1.ListOptions {})
151
184
if err != nil {
152
- return nil , fmt .Errorf ("error listing machine objects: %v" , err )
185
+ return nil , fmt .Errorf ("error listing machine objects in namespace %q : %v" , namespace , err )
153
186
}
154
187
155
188
for i := 0 ; i < len (machineslist .Items ); i ++ {
@@ -158,46 +191,52 @@ func (c *clusterClient) GetMachineObjects() ([]*clusterv1.Machine, error) {
158
191
return machines , nil
159
192
}
160
193
194
+ func (c * clusterClient ) GetMachineObjects () ([]* clusterv1.Machine , error ) {
195
+ // TODO: Iterate over all namespaces where we could have Cluster API Objects https://github.com/kubernetes-sigs/cluster-api/issues/252
196
+ return c .GetMachineObjectsInNamespace (apiv1 .NamespaceDefault )
197
+ }
198
+
161
199
func (c * clusterClient ) CreateClusterObject (cluster * clusterv1.Cluster ) error {
162
- // TODO: Support specific namespaces https://github.com/kubernetes-sigs/cluster-api/issues/252
163
- _ , err := c .clientSet .ClusterV1alpha1 ().Clusters (apiv1 .NamespaceDefault ).Create (cluster )
200
+ namespace := c .configOverrides .Context .Namespace
201
+ if cluster .Namespace != "" {
202
+ namespace = cluster .Namespace
203
+ }
204
+
205
+ _ , err := c .clientSet .ClusterV1alpha1 ().Clusters (namespace ).Create (cluster )
164
206
if err != nil {
165
- return fmt .Errorf ("error creating cluster: %v" , err )
207
+ return fmt .Errorf ("error creating cluster in namespace %v : %v" , namespace , err )
166
208
}
167
209
return err
168
210
}
169
211
170
- func (c * clusterClient ) CreateMachineDeploymentObjects (deployments []* clusterv1.MachineDeployment ) error {
171
- // TODO: Support specific namespaces https://github.com/kubernetes-sigs/cluster-api/issues/252
212
+ func (c * clusterClient ) CreateMachineDeploymentObjects (deployments []* clusterv1.MachineDeployment , namespace string ) error {
172
213
for _ , deploy := range deployments {
173
214
// TODO: Run in parallel https://github.com/kubernetes-sigs/cluster-api/issues/258
174
- _ , err := c .clientSet .ClusterV1alpha1 ().MachineDeployments (apiv1 . NamespaceDefault ).Create (deploy )
215
+ _ , err := c .clientSet .ClusterV1alpha1 ().MachineDeployments (namespace ).Create (deploy )
175
216
if err != nil {
176
- return fmt .Errorf ("error creating a machine deployment object: %v" , err )
217
+ return fmt .Errorf ("error creating a machine deployment object in namespace %q : %v" , namespace , err )
177
218
}
178
219
}
179
220
return nil
180
221
}
181
222
182
- func (c * clusterClient ) CreateMachineSetObjects (machineSets []* clusterv1.MachineSet ) error {
183
- // TODO: Support specific namespaces https://github.com/kubernetes-sigs/cluster-api/issues/252
223
+ func (c * clusterClient ) CreateMachineSetObjects (machineSets []* clusterv1.MachineSet , namespace string ) error {
184
224
for _ , ms := range machineSets {
185
225
// TODO: Run in parallel https://github.com/kubernetes-sigs/cluster-api/issues/258
186
- _ , err := c .clientSet .ClusterV1alpha1 ().MachineSets (apiv1 . NamespaceDefault ).Create (ms )
226
+ _ , err := c .clientSet .ClusterV1alpha1 ().MachineSets (namespace ).Create (ms )
187
227
if err != nil {
188
- return fmt .Errorf ("error creating a machine set object: %v" , err )
228
+ return fmt .Errorf ("error creating a machine set object in namespace %q : %v" , namespace , err )
189
229
}
190
230
}
191
231
return nil
192
232
}
193
233
194
- func (c * clusterClient ) CreateMachineObjects (machines []* clusterv1.Machine ) error {
195
- // TODO: Support specific namespaces https://github.com/kubernetes-sigs/cluster-api/issues/252
234
+ func (c * clusterClient ) CreateMachineObjects (machines []* clusterv1.Machine , namespace string ) error {
196
235
for _ , machine := range machines {
197
236
// TODO: Run in parallel https://github.com/kubernetes-sigs/cluster-api/issues/258
198
- createdMachine , err := c .clientSet .ClusterV1alpha1 ().Machines (apiv1 . NamespaceDefault ).Create (machine )
237
+ createdMachine , err := c .clientSet .ClusterV1alpha1 ().Machines (namespace ).Create (machine )
199
238
if err != nil {
200
- return fmt .Errorf ("error creating a machine object: %v" , err )
239
+ return fmt .Errorf ("error creating a machine object in namespace %v : %v" , namespace , err )
201
240
}
202
241
err = waitForMachineReady (c .clientSet , createdMachine )
203
242
if err != nil {
@@ -208,70 +247,81 @@ func (c *clusterClient) CreateMachineObjects(machines []*clusterv1.Machine) erro
208
247
}
209
248
210
249
func (c * clusterClient ) DeleteClusterObjects () error {
211
- err := c .clientSet .ClusterV1alpha1 ().Clusters (apiv1 .NamespaceDefault ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
250
+ return c .DeleteClusterObjectsInNamespace (apiv1 .NamespaceDefault )
251
+ }
252
+
253
+ func (c * clusterClient ) DeleteClusterObjectsInNamespace (namespace string ) error {
254
+ err := c .clientSet .ClusterV1alpha1 ().Clusters (namespace ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
212
255
if err != nil {
213
- return fmt .Errorf ("error deleting cluster objects: %v" , err )
256
+ return fmt .Errorf ("error deleting cluster objects in namespace %q : %v" , namespace , err )
214
257
}
215
258
err = c .waitForClusterDelete ()
216
259
if err != nil {
217
- return fmt .Errorf ("error waiting for cluster(s) deletion to complete: %v" , err )
260
+ return fmt .Errorf ("error waiting for cluster(s) deletion to complete in namespace %q : %v" , namespace , err )
218
261
}
219
262
return nil
220
263
}
221
264
222
265
func (c * clusterClient ) DeleteMachineDeploymentObjects () error {
223
- err := c .clientSet .ClusterV1alpha1 ().MachineDeployments (apiv1 .NamespaceDefault ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
266
+ return c .DeleteMachineDeploymentObjectsInNamespace (apiv1 .NamespaceDefault )
267
+ }
268
+
269
+ func (c * clusterClient ) DeleteMachineDeploymentObjectsInNamespace (namespace string ) error {
270
+ err := c .clientSet .ClusterV1alpha1 ().MachineDeployments (namespace ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
224
271
if err != nil {
225
- return fmt .Errorf ("error deleting machine deployment objects: %v" , err )
272
+ return fmt .Errorf ("error deleting machine deployment objects in namespace %q : %v" , namespace , err )
226
273
}
227
274
err = c .waitForMachineDeploymentsDelete ()
228
275
if err != nil {
229
- return fmt .Errorf ("error waiting for machine deployment(s) deletion to complete: %v" , err )
276
+ return fmt .Errorf ("error waiting for machine deployment(s) deletion to complete in namespace %q : %v" , namespace , err )
230
277
}
231
278
return nil
232
279
}
233
280
234
281
func (c * clusterClient ) DeleteMachineSetObjects () error {
235
- err := c .clientSet .ClusterV1alpha1 ().MachineSets (apiv1 .NamespaceDefault ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
282
+ return c .DeleteMachineSetObjectsInNamespace (apiv1 .NamespaceDefault )
283
+ }
284
+
285
+ func (c * clusterClient ) DeleteMachineSetObjectsInNamespace (namespace string ) error {
286
+ err := c .clientSet .ClusterV1alpha1 ().MachineSets (namespace ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
236
287
if err != nil {
237
- return fmt .Errorf ("error deleting machine set objects: %v" , err )
288
+ return fmt .Errorf ("error deleting machine set objects in namespace %q : %v" , namespace , err )
238
289
}
239
290
err = c .waitForMachineSetsDelete ()
240
291
if err != nil {
241
- return fmt .Errorf ("error waiting for machine set(s) deletion to complete: %v" , err )
292
+ return fmt .Errorf ("error waiting for machine set(s) deletion to complete in namespace %q : %v" , namespace , err )
242
293
}
243
294
return nil
244
295
}
245
296
246
297
func (c * clusterClient ) DeleteMachineObjects () error {
247
- err := c .clientSet .ClusterV1alpha1 ().Machines (apiv1 .NamespaceDefault ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
298
+ return c .DeleteMachineObjectsInNamespace (apiv1 .NamespaceDefault )
299
+ }
300
+
301
+ func (c * clusterClient ) DeleteMachineObjectsInNamespace (namespace string ) error {
302
+ err := c .clientSet .ClusterV1alpha1 ().Machines (namespace ).DeleteCollection (newDeleteOptions (), metav1.ListOptions {})
248
303
if err != nil {
249
- return fmt .Errorf ("error deleting machine objects: %v" , err )
304
+ return fmt .Errorf ("error deleting machine objects in namespace %q : %v" , namespace , err )
250
305
}
251
306
err = c .waitForMachinesDelete ()
252
307
if err != nil {
253
- return fmt .Errorf ("error waiting for machine(s) deletion to complete: %v" , err )
308
+ return fmt .Errorf ("error waiting for machine(s) deletion to complete in namespace %q : %v" , namespace , err )
254
309
}
255
310
return nil
256
311
}
257
312
258
313
func newDeleteOptions () * metav1.DeleteOptions {
259
- propogationPolicy := metav1 .DeletePropagationForeground
314
+ propagationPolicy := metav1 .DeletePropagationForeground
260
315
return & metav1.DeleteOptions {
261
- PropagationPolicy : & propogationPolicy ,
316
+ PropagationPolicy : & propagationPolicy ,
262
317
}
263
318
}
264
319
265
- func (c * clusterClient ) UpdateClusterObjectEndpoint (masterIP string ) error {
266
- clusters , err := c .GetClusterObjects ( )
320
+ func (c * clusterClient ) UpdateClusterObjectEndpoint (masterIP , clusterName , ns string ) error {
321
+ cluster , err := c .GetClusterObject ( clusterName , ns )
267
322
if err != nil {
268
323
return err
269
324
}
270
- if len (clusters ) != 1 {
271
- // TODO: Do not assume default namespace nor single cluster https://github.com/kubernetes-sigs/cluster-api/issues/252
272
- return fmt .Errorf ("More than the one expected cluster found %v" , clusters )
273
- }
274
- cluster := clusters [0 ]
275
325
cluster .Status .APIEndpoints = append (cluster .Status .APIEndpoints ,
276
326
clusterv1.APIEndpoint {
277
327
Host : masterIP ,
0 commit comments