Skip to content

Commit f23fcc2

Browse files
committed
Fix SecurityGroupInUse error
This commit deletes port when an instance can not be created due to cpu cores quota error.
1 parent d8cfc76 commit f23fcc2

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

pkg/cloud/services/compute/instance.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ func (s *Service) createInstance(clusterName string, i *infrav1.Instance) (*infr
244244
KeyName: i.SSHKeyName,
245245
}).Extract()
246246
if err != nil {
247+
if errd := deletePorts(s, portsList); errd != nil {
248+
return nil, fmt.Errorf("error recover creating Openstack instance: %v", errd)
249+
}
247250
return nil, fmt.Errorf("error creating Openstack instance: %v", err)
248251
}
249252
instanceCreateTimeout := getTimeout("CLUSTER_API_OPENSTACK_INSTANCE_CREATE_TIMEOUT", TimeoutInstanceCreate)
@@ -481,6 +484,22 @@ func createPort(is *Service, clusterName string, name string, net *infrav1.Netwo
481484
return *newPort, nil
482485
}
483486

487+
func deletePorts(s *Service, nets []servers.Network) error {
488+
489+
for _, n := range nets {
490+
_, err := ports.Get(s.networkClient, n.Port).Extract()
491+
if err != nil {
492+
if capoerrors.IsNotFound(err) {
493+
return nil
494+
}
495+
}
496+
if err := ports.Delete(s.networkClient, n.Port).ExtractErr(); err != nil {
497+
return err
498+
}
499+
}
500+
return nil
501+
}
502+
484503
// Helper function for getting image ID from name
485504
func getImageID(is *Service, imageName string) (string, error) {
486505
if imageName == "" {

0 commit comments

Comments
 (0)