@@ -76,6 +76,8 @@ type ClusterClient interface {
76
76
DeleteMachineObjectsInNamespace (string ) error
77
77
DeleteMachineObjects () error
78
78
UpdateClusterObjectEndpoint (string , string , string ) error
79
+ EnsureNamespace (string ) error
80
+ DeleteNamespace (string ) error
79
81
Close () error
80
82
}
81
83
@@ -140,7 +142,11 @@ func (d *ClusterDeployer) Create(cluster *clusterv1.Cluster, machines []*cluster
140
142
if cluster .Namespace == "" {
141
143
cluster .Namespace = bootstrapClient .GetContextNamespace ()
142
144
}
143
- // TODO: @ashisha Create cluster.Namespace in bootstrap and target clusters?
145
+
146
+ err = bootstrapClient .EnsureNamespace (cluster .Namespace )
147
+ if err != nil {
148
+ return fmt .Errorf ("unable to ensure namespace %q in bootstrap cluster: %v" , cluster .Namespace , err )
149
+ }
144
150
145
151
glog .Info ("Applying Cluster API stack to bootstrap cluster" )
146
152
if err := d .applyClusterAPIStack (bootstrapClient , cluster .Namespace ); err != nil {
@@ -165,7 +171,7 @@ func (d *ClusterDeployer) Create(cluster *clusterv1.Cluster, machines []*cluster
165
171
}
166
172
167
173
glog .Info ("Creating target cluster" )
168
- targetClient , err := d .createTargetCluster (bootstrapClient , provider , kubeconfigOutput , cluster .Name , cluster .Namespace )
174
+ targetClient , err := d .createTargetClusterClient (bootstrapClient , provider , kubeconfigOutput , cluster .Name , cluster .Namespace )
169
175
if err != nil {
170
176
return fmt .Errorf ("unable to create target cluster: %v" , err )
171
177
}
@@ -182,6 +188,11 @@ func (d *ClusterDeployer) Create(cluster *clusterv1.Cluster, machines []*cluster
182
188
return fmt .Errorf ("unable to save provider components to target cluster: %v" , err )
183
189
}
184
190
191
+ err = targetClient .EnsureNamespace (cluster .Namespace )
192
+ if err != nil {
193
+ return fmt .Errorf ("unable to ensure namespace %q in targetCluster: %v" , cluster .Namespace , err )
194
+ }
195
+
185
196
// For some reason, endpoint doesn't get updated in bootstrap cluster sometimes. So we
186
197
// update the target cluster endpoint as well to be sure.
187
198
glog .Infof ("Updating target cluster object with master (%s) endpoint" , master .Name )
@@ -235,6 +246,7 @@ func (d *ClusterDeployer) Delete(targetClient ClusterClient, namespace string) e
235
246
if err = deleteObjectsInNamespace (bootstrapClient , namespace ); err != nil {
236
247
return fmt .Errorf ("unable to finish deleting objects in bootstrap cluster, resources may have been leaked: %v" , err )
237
248
}
249
+
238
250
glog .Info ("Deletion of cluster complete" )
239
251
240
252
return nil
@@ -265,7 +277,7 @@ func (d *ClusterDeployer) createBootstrapCluster() (ClusterClient, func(), error
265
277
return bootstrapClient , cleanupFn , nil
266
278
}
267
279
268
- func (d * ClusterDeployer ) createTargetCluster (bootstrapClient ClusterClient , provider ProviderDeployer , kubeconfigOutput , clusterName , namespace string ) (ClusterClient , error ) {
280
+ func (d * ClusterDeployer ) createTargetClusterClient (bootstrapClient ClusterClient , provider ProviderDeployer , kubeconfigOutput , clusterName , namespace string ) (ClusterClient , error ) {
269
281
cluster , master , _ , err := getClusterAPIObject (bootstrapClient , clusterName , namespace )
270
282
if err != nil {
271
283
return nil , err
@@ -470,26 +482,31 @@ func pivotNamespace(from, to ClusterClient, namespace string) error {
470
482
471
483
func deleteObjectsInNamespace (client ClusterClient , namespace string ) error {
472
484
var errors []string
473
- glog .Infof ("Deleting machine deployments" )
485
+ glog .Infof ("Deleting machine deployments in namespace %q" , namespace )
474
486
if err := client .DeleteMachineDeploymentObjectsInNamespace (namespace ); err != nil {
475
487
err = fmt .Errorf ("error deleting machine deployments: %v" , err )
476
488
errors = append (errors , err .Error ())
477
489
}
478
- glog .Infof ("Deleting machine sets" )
490
+ glog .Infof ("Deleting machine sets in namespace %q" , namespace )
479
491
if err := client .DeleteMachineSetObjectsInNamespace (namespace ); err != nil {
480
492
err = fmt .Errorf ("error deleting machine sets: %v" , err )
481
493
errors = append (errors , err .Error ())
482
494
}
483
- glog .Infof ("Deleting machines" )
495
+ glog .Infof ("Deleting machines in namespace %q" , namespace )
484
496
if err := client .DeleteMachineObjectsInNamespace (namespace ); err != nil {
485
497
err = fmt .Errorf ("error deleting machines: %v" , err )
486
498
errors = append (errors , err .Error ())
487
499
}
488
- glog .Infof ("Deleting clusters" )
500
+ glog .Infof ("Deleting clusters in namespace %q" , namespace )
489
501
if err := client .DeleteClusterObjectsInNamespace (namespace ); err != nil {
490
502
err = fmt .Errorf ("error deleting clusters: %v" , err )
491
503
errors = append (errors , err .Error ())
492
504
}
505
+ glog .Infof ("Deleting namespace %q" , namespace )
506
+ if err := client .DeleteNamespace (namespace ); err != nil {
507
+ err = fmt .Errorf ("error deleting namespace: %v" , err )
508
+ errors = append (errors , err .Error ())
509
+ }
493
510
if len (errors ) > 0 {
494
511
return fmt .Errorf ("error(s) encountered deleting objects from bootstrap cluster: [%v]" , strings .Join (errors , ", " ))
495
512
}
0 commit comments