Skip to content

Commit

Permalink
fix: native vlan and delete subnet issues
Browse files Browse the repository at this point in the history
  • Loading branch information
oilbeater committed May 27, 2020
1 parent 44b5a6a commit e13dc5a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 17 deletions.
18 changes: 11 additions & 7 deletions pkg/controller/subnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -302,25 +302,25 @@ func formatSubnet(subnet *kubeovnv1.Subnet, c *Controller) error {
return nil
}

func (c *Controller) handleSubnetFinalizer(subnet *kubeovnv1.Subnet) error {
func (c *Controller) handleSubnetFinalizer(subnet *kubeovnv1.Subnet) (bool, error) {
if subnet.DeletionTimestamp.IsZero() && !util.ContainsString(subnet.Finalizers, util.ControllerName) {
subnet.Finalizers = append(subnet.Finalizers, util.ControllerName)
if _, err := c.config.KubeOvnClient.KubeovnV1().Subnets().Update(subnet); err != nil {
klog.Errorf("failed to add finalizer to subnet %s, %v", subnet.Name, err)
return err
return false, err
}
return nil
return false, nil
}

if !subnet.DeletionTimestamp.IsZero() && subnet.Status.UsingIPs == 0 {
subnet.Finalizers = util.RemoveString(subnet.Finalizers, util.ControllerName)
if _, err := c.config.KubeOvnClient.KubeovnV1().Subnets().Update(subnet); err != nil {
klog.Errorf("failed to remove finalizer from subnet %s, %v", subnet.Name, err)
return err
return false, err
}
return nil
return true, nil
}
return nil
return false, nil
}

func (c Controller) patchSubnetStatus(subnet *kubeovnv1.Subnet, reason string, errStr string) {
Expand Down Expand Up @@ -355,10 +355,14 @@ func (c *Controller) handleAddOrUpdateSubnet(key string) error {
return err
}

if err := c.handleSubnetFinalizer(subnet); err != nil {
deleted, err := c.handleSubnetFinalizer(subnet)
if err != nil {
klog.Errorf("handle subnet finalizer failed %v", err)
return err
}
if deleted {
return nil
}

if err := formatSubnet(subnet, c); err != nil {
return err
Expand Down
11 changes: 1 addition & 10 deletions pkg/controller/vlan.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"github.com/alauda/kube-ovn/pkg/ovs"
"github.com/alauda/kube-ovn/pkg/util"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
Expand Down Expand Up @@ -286,22 +285,14 @@ func (c *Controller) handleUpdateVlan(key string) error {
}

func (c *Controller) handleDelVlan(key string) error {
vlan, err := c.vlansLister.Get(key)

err = c.config.KubeOvnClient.KubeovnV1().Vlans().Delete(key, &metav1.DeleteOptions{})
if err != nil {
klog.Errorf("failed to delete vlan %s, %v", vlan.Name, err)
return err
}

subnet, err := c.subnetsLister.List(labels.Everything())
if err != nil {
klog.Errorf("failed to list subnets %v", err)
return err
}

for _, s := range subnet {
if s.Spec.Vlan == vlan.Name {
if s.Spec.Vlan == key {
c.addOrUpdateSubnetQueue.Add(s.Name)
}
}
Expand Down
4 changes: 4 additions & 0 deletions pkg/util/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ func ValidateVlan(vlan int, vlanRange string) error {
return err
}

if vlan == 0 {
return nil
}

if vlan < min || vlan > max {
return fmt.Errorf("the vlan is not in vlan range %s", vlanRange)
}
Expand Down

0 comments on commit e13dc5a

Please sign in to comment.