Skip to content
This repository has been archived by the owner on May 5, 2022. It is now read-only.

Commit

Permalink
Improve security group creation
Browse files Browse the repository at this point in the history
Signed-off-by: Pierre-Emmanuel Jacquier <[email protected]>
  • Loading branch information
pierre-emmanuelJ committed May 17, 2019
1 parent b313cc6 commit 6ed29f9
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 21 deletions.
47 changes: 36 additions & 11 deletions pkg/cloud/exoscale/actuators/cluster/actuator.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,6 @@ func NewActuator(params ActuatorParams) (*Actuator, error) {
func (a *Actuator) Reconcile(cluster *clusterv1.Cluster) error {
klog.Infof("Reconciling cluster %v.", cluster.Name)

exoClient, err := exoclient.Client()
if err != nil {
return err
}

clusterSpec, err := exoscalev1.ClusterSpecFromProviderSpec(cluster.Spec.ProviderSpec)
if err != nil {
return fmt.Errorf("error loading cluster provider config: %v", err)
Expand All @@ -85,20 +80,23 @@ func (a *Actuator) Reconcile(cluster *clusterv1.Cluster) error {
masterSGID := clusterStatus.MasterSecurityGroupID
nodeSGID := clusterStatus.NodeSecurityGroupID
if masterSGID == nil {
resp, err := exoClient.Request(egoscale.CreateSecurityGroup{Name: masterSecurityGroup})
sg, err := getORCreateSecurityGroup(masterSecurityGroup)
if err != nil {
return fmt.Errorf("error creating network security group: %v", err)
return err
}
masterSGID = resp.(*egoscale.SecurityGroup).ID

masterSGID = sg.ID

} else {
klog.Infof("using existing security group id %s", clusterStatus.MasterSecurityGroupID)
}
if nodeSGID == nil {
resp, err := exoClient.Request(egoscale.CreateSecurityGroup{Name: nodeSecurityGroup})
sg, err := getORCreateSecurityGroup(nodeSecurityGroup)
if err != nil {
return fmt.Errorf("error creating network security group: %v", err)
return err
}
nodeSGID = resp.(*egoscale.SecurityGroup).ID

nodeSGID = sg.ID
} else {
klog.Infof("using existing security group id %s", clusterStatus.NodeSecurityGroupID)
}
Expand Down Expand Up @@ -131,6 +129,33 @@ func (a *Actuator) Reconcile(cluster *clusterv1.Cluster) error {
return nil
}

func getORCreateSecurityGroup(sgName string) (*egoscale.SecurityGroup, error) {
exoClient, err := exoclient.Client()
if err != nil {
return nil, err
}

resp, err := exoClient.Get(egoscale.SecurityGroup{Name: sgName})
if err != nil {
if e, ok := err.(*egoscale.ErrorResponse); ok {
if e.ErrorCode != egoscale.ParamError {
return nil, err
}
}
}

if err == nil {
return resp.(*egoscale.SecurityGroup), nil
}

resp, err = exoClient.Request(egoscale.CreateSecurityGroup{Name: sgName})
if err != nil {
return nil, fmt.Errorf("error creating network security group: %v", err)
}

return resp.(*egoscale.SecurityGroup), nil
}

func checkSecurityGroup(sgID *egoscale.UUID, rules []egoscale.AuthorizeSecurityGroupIngress) error {
exoClient, err := exoclient.Client()
if err != nil {
Expand Down
17 changes: 7 additions & 10 deletions pkg/cloud/exoscale/actuators/machine/actuator.go
Original file line number Diff line number Diff line change
Expand Up @@ -482,24 +482,21 @@ func (a *Actuator) Delete(ctx context.Context, cluster *clusterv1.Cluster, machi
}
*/

vmID := machineStatus.ID
if vmID == nil {
resp, err := exoClient.GetWithContext(ctx, egoscale.VirtualMachine{Name: machine.Name})
if err != nil {
return err
}

resp, err := exoClient.GetWithContext(ctx, egoscale.VirtualMachine{Name: machine.Name})
if err != nil {
// It was already deleted externally
if e, ok := err.(*egoscale.ErrorResponse); ok {
if e.ErrorCode == egoscale.ParamError {
return nil
}
}

vm := resp.(*egoscale.VirtualMachine)
vmID = vm.ID
return err
}
}

vm := resp.(*egoscale.VirtualMachine)
vmID := vm.ID

result, err := exoClient.SyncRequestWithContext(ctx, egoscale.DestroyVirtualMachine{
ID: vmID,
})
Expand Down

0 comments on commit 6ed29f9

Please sign in to comment.