Skip to content

Rename IPand Network states to Pending, Allocated #409

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions api/ipam/v1alpha1/ip_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ import (
)

const (
FailedIPState IPState = "Failed"
ProcessingIPState IPState = "Processing"
FinishedIPState IPState = "Finished"
// TODO: Remove failed state
IPStateFailed IPState = "Failed"
IPStatePending IPState = "Pending"
IPStateAllocated IPState = "Allocated"
)

// IPState is a processing state of IP resource
Expand Down
6 changes: 3 additions & 3 deletions api/ipam/v1alpha1/network_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ type NetworkSpec struct {
}

const (
CFailedNetworkState NetworkState = "Failed"
CProcessingNetworkState NetworkState = "Processing"
CFinishedNetworkState NetworkState = "Finished"
NetworkStateFailed NetworkState = "Failed"
NetworkStatePending NetworkState = "Pending"
NetworkStateAllocated NetworkState = "Allocated"
)

type NetworkState string
Expand Down
40 changes: 20 additions & 20 deletions internal/controller/ip_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ import (
)

const (
CIPFinalizer = "ip.ipam.metal.ironcore.dev/finalizer"
IPFinalizer = "ip.ipam.metal.ironcore.dev/finalizer"

CIPReservationFailureReason = "IPReservationFailure"
CIPProposalFailureReason = "IPProposalFailure"
CIPReservationSuccessReason = "IPReservationSuccess"
CIPReleaseSuccessReason = "IPReleaseSuccess"
IPReservationFailure = "IPReservationFailure"
IPProposalFailure = "IPProposalFailure"
IPReservationSuccess = "IPReservationSuccess"
IPReleaseSuccess = "IPReleaseSuccess"

IPFamilyLabelKey = "ip.ipam.metal.ironcore.dev/ip-family"
)
Expand Down Expand Up @@ -64,14 +64,14 @@ func (r *IPReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re
}

if ip.GetDeletionTimestamp() != nil {
if controllerutil.ContainsFinalizer(ip, CIPFinalizer) {
if controllerutil.ContainsFinalizer(ip, IPFinalizer) {
// Free IP on resource deletion
if err := r.finalizeIP(ctx, log, ip); err != nil {
log.Error(err, "unable to finalize ip resource", "name", req.NamespacedName)
return ctrl.Result{}, err
}

controllerutil.RemoveFinalizer(ip, CIPFinalizer)
controllerutil.RemoveFinalizer(ip, IPFinalizer)
err := r.Update(ctx, ip)
if err != nil {
log.Error(err, "unable to update ip resource on finalizer removal", "name", req.NamespacedName)
Expand All @@ -81,8 +81,8 @@ func (r *IPReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re
return ctrl.Result{}, nil
}

if !controllerutil.ContainsFinalizer(ip, CIPFinalizer) {
controllerutil.AddFinalizer(ip, CIPFinalizer)
if !controllerutil.ContainsFinalizer(ip, IPFinalizer) {
controllerutil.AddFinalizer(ip, IPFinalizer)
err = r.Update(ctx, ip)
if err != nil {
log.Error(err, "unable to update ip resource with finalizer", "name", req.NamespacedName)
Expand All @@ -109,16 +109,16 @@ func (r *IPReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re
return ctrl.Result{}, err
}

if ip.Status.State == v1alpha1.FinishedIPState ||
ip.Status.State == v1alpha1.FailedIPState {
if ip.Status.State == v1alpha1.IPStateAllocated ||
ip.Status.State == v1alpha1.IPStateFailed {
return ctrl.Result{}, nil
}

if ip.Status.State == "" {
ip.Status.State = v1alpha1.ProcessingIPState
ip.Status.State = v1alpha1.IPStatePending
ip.Status.Message = ""
if err := r.Status().Update(ctx, ip); err != nil {
log.Error(err, "unable to update ip resource status", "name", req.NamespacedName, "currentStatus", ip.Status.State, "targetStatus", v1alpha1.CProcessingNetworkState)
log.Error(err, "unable to update ip resource status", "name", req.NamespacedName, "currentStatus", ip.Status.State, "targetStatus", v1alpha1.NetworkStatePending)
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
Expand All @@ -140,25 +140,25 @@ func (r *IPReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re
} else {
cidr, err := subnet.ProposeForCapacity(resource.NewScaledQuantity(1, 0))
if err != nil {
ip.Status.State = v1alpha1.FailedIPState
ip.Status.State = v1alpha1.IPStateFailed
ip.Status.Message = err.Error()
if err := r.Status().Update(ctx, ip); err != nil {
log.Error(err, "unable to update ip status", "name", req.NamespacedName)
return ctrl.Result{}, err
}
r.EventRecorder.Eventf(ip, v1.EventTypeWarning, CIPProposalFailureReason, ip.Status.Message)
r.EventRecorder.Eventf(ip, v1.EventTypeWarning, IPProposalFailure, ip.Status.Message)
}
ipCidrToReserve = cidr
}

if err := subnet.Reserve(ipCidrToReserve); err != nil {
ip.Status.State = v1alpha1.FailedIPState
ip.Status.State = v1alpha1.IPStateFailed
ip.Status.Message = err.Error()
if err := r.Status().Update(ctx, ip); err != nil {
log.Error(err, "unable to update ip status", "name", req.NamespacedName)
return ctrl.Result{}, err
}
r.EventRecorder.Eventf(ip, v1.EventTypeWarning, CIPReservationFailureReason, ip.Status.Message)
r.EventRecorder.Eventf(ip, v1.EventTypeWarning, IPReservationFailure, ip.Status.Message)
return ctrl.Result{}, err
}

Expand All @@ -167,14 +167,14 @@ func (r *IPReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Re
return ctrl.Result{}, err
}

ip.Status.State = v1alpha1.FinishedIPState
ip.Status.State = v1alpha1.IPStateAllocated
ip.Status.Message = ""
ip.Status.Reserved = ipCidrToReserve.AsIPAddr()
if err := r.Status().Update(ctx, ip); err != nil {
log.Error(err, "unable to update ip status after ip reservation", "name", req.NamespacedName, "subnet name", subnetNamespacedName)
return ctrl.Result{}, err
}
r.EventRecorder.Eventf(ip, v1.EventTypeNormal, CIPReservationSuccessReason, "IP %s reserved", ipCidrToReserve.String())
r.EventRecorder.Eventf(ip, v1.EventTypeNormal, IPReservationSuccess, "IP %s reserved", ipCidrToReserve.String())

return ctrl.Result{}, nil
}
Expand Down Expand Up @@ -217,7 +217,7 @@ func (r *IPReconciler) finalizeIP(ctx context.Context, log logr.Logger, ip *v1al
return err
}

r.EventRecorder.Eventf(ip, v1.EventTypeNormal, CIPReleaseSuccessReason, "IP %s released", ipCidr.String())
r.EventRecorder.Eventf(ip, v1.EventTypeNormal, IPReleaseSuccess, "IP %s released", ipCidr.String())

return nil
}
Expand Down
8 changes: 4 additions & 4 deletions internal/controller/ip_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ var _ = Describe("IP controller", func() {
if err != nil {
return false
}
if createdNetwork.Status.State != v1alpha1.CFinishedNetworkState {
if createdNetwork.Status.State != v1alpha1.NetworkStateAllocated {
return false
}
return true
Expand Down Expand Up @@ -187,7 +187,7 @@ var _ = Describe("IP controller", func() {
if err != nil {
return false
}
if createdIP.Status.State != v1alpha1.FinishedIPState {
if createdIP.Status.State != v1alpha1.IPStateAllocated {
return false
}
return true
Expand Down Expand Up @@ -224,7 +224,7 @@ var _ = Describe("IP controller", func() {
if err != nil {
return false
}
if ipCopy.Status.State != v1alpha1.FailedIPState {
if ipCopy.Status.State != v1alpha1.IPStateFailed {
return false
}
return true
Expand All @@ -244,7 +244,7 @@ var _ = Describe("IP controller", func() {
if err != nil {
return false
}
if ipCopy.Status.State != v1alpha1.FinishedIPState {
if ipCopy.Status.State != v1alpha1.IPStateAllocated {
return false
}
if !ipCopy.Status.Reserved.Equal(testIP) {
Expand Down
60 changes: 30 additions & 30 deletions internal/controller/network_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ import (
)

const (
CNetworkFinalizer = "network.ipam.metal.ironcore.dev/finalizer"
NetworkFinalizer = "network.ipam.metal.ironcore.dev/finalizer"

CNetworkIDProposalFailureReason = "NetworkIDProposalFailure"
CNetworkIDReservationFailureReason = "NetworkIDReservationFailure"
CNetworkIDReservationSuccessReason = "NetworkIDReservationSuccess"
CNetworkIDReleaseSuccessReason = "NetworkIDReleaseSuccess"
NetworkIDProposalFailure = "NetworkIDProposalFailure"
NetworkIDReservationFailure = "NetworkIDReservationFailure"
NetworkIDReservationSuccess = "NetworkIDReservationSuccess"
NetworkIDReleaseSuccess = "NetworkIDReleaseSuccess"

CFailedTopLevelSubnetIndexKey = "failedTopLevelSubnet"
FailedTopLevelSubnetIndexKey = "failedTopLevelSubnet"
)

// NetworkReconciler reconciles a Network object
Expand Down Expand Up @@ -64,13 +64,13 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
}

if network.GetDeletionTimestamp() != nil {
if controllerutil.ContainsFinalizer(network, CNetworkFinalizer) {
if controllerutil.ContainsFinalizer(network, NetworkFinalizer) {
if err := r.finalizeNetwork(ctx, log, network); err != nil {
log.Error(err, "unable to finalize network resource", "name", req.NamespacedName)
return ctrl.Result{}, err
}

controllerutil.RemoveFinalizer(network, CNetworkFinalizer)
controllerutil.RemoveFinalizer(network, NetworkFinalizer)
err := r.Update(ctx, network)
if err != nil {
log.Error(err, "unable to update network resource on finalizer removal", "name", req.NamespacedName)
Expand All @@ -80,8 +80,8 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
return ctrl.Result{}, nil
}

if !controllerutil.ContainsFinalizer(network, CNetworkFinalizer) {
controllerutil.AddFinalizer(network, CNetworkFinalizer)
if !controllerutil.ContainsFinalizer(network, NetworkFinalizer) {
controllerutil.AddFinalizer(network, NetworkFinalizer)
err = r.Update(ctx, network)
if err != nil {
log.Error(err, "unable to update network resource with finalizer", "name", req.NamespacedName)
Expand All @@ -90,20 +90,20 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
return ctrl.Result{}, nil
}

if network.Status.State == machinev1alpha1.CFinishedNetworkState &&
if network.Status.State == machinev1alpha1.NetworkStateAllocated &&
network.Status.Reserved == nil &&
network.Spec.Type != "" {
network.Status.State = machinev1alpha1.CProcessingNetworkState
network.Status.State = machinev1alpha1.NetworkStatePending
network.Status.Message = ""
if err := r.Status().Update(ctx, network); err != nil {
log.Error(err, "unable to update network resource status", "name", req.NamespacedName, "currentStatus", network.Status.State, "targetStatus", machinev1alpha1.CProcessingNetworkState)
log.Error(err, "unable to update network resource status", "name", req.NamespacedName, "currentStatus", network.Status.State, "targetStatus", machinev1alpha1.NetworkStatePending)
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}

if network.Status.State == machinev1alpha1.CFinishedNetworkState ||
network.Status.State == machinev1alpha1.CFailedNetworkState {
if network.Status.State == machinev1alpha1.NetworkStateAllocated ||
network.Status.State == machinev1alpha1.NetworkStateFailed {
if err := r.requeueFailedSubnets(ctx, log, network); err != nil {
log.Error(err, "unable to requeue top level subnets", "name", req.NamespacedName)
return ctrl.Result{}, err
Expand All @@ -112,18 +112,18 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
}

if network.Status.State == "" {
network.Status.State = machinev1alpha1.CProcessingNetworkState
network.Status.State = machinev1alpha1.NetworkStatePending
network.Status.Message = ""
if err := r.Status().Update(ctx, network); err != nil {
log.Error(err, "unable to update network resource status", "name", req.NamespacedName, "currentStatus", network.Status.State, "targetStatus", machinev1alpha1.CProcessingNetworkState)
log.Error(err, "unable to update network resource status", "name", req.NamespacedName, "currentStatus", network.Status.State, "targetStatus", machinev1alpha1.NetworkStatePending)
return ctrl.Result{}, err
}
return ctrl.Result{}, nil
}

if network.Spec.Type == "" {
log.Info("network does not specify type, nothing to do for now", "name", req.NamespacedName)
network.Status.State = machinev1alpha1.CFinishedNetworkState
network.Status.State = machinev1alpha1.NetworkStateAllocated
network.Status.Message = ""
if err := r.Status().Update(ctx, network); err != nil {
log.Error(err, "unable to update network status", "name", req.NamespacedName)
Expand Down Expand Up @@ -161,27 +161,27 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
if networkIdToReserve == nil {
networkId, err := counter.Spec.Propose()
if err != nil {
network.Status.State = machinev1alpha1.CFailedNetworkState
network.Status.State = machinev1alpha1.NetworkStateFailed
network.Status.Message = err.Error()
if err := r.Status().Update(ctx, network); err != nil {
log.Error(err, "unable to update network status", "name", req.NamespacedName)
return ctrl.Result{}, err
}
r.EventRecorder.Event(network, v1.EventTypeWarning, CNetworkIDProposalFailureReason, network.Status.Message)
r.EventRecorder.Event(network, v1.EventTypeWarning, NetworkIDProposalFailure, network.Status.Message)
log.Error(err, "unable to get network id", "name", req.NamespacedName)
return ctrl.Result{}, err
}
networkIdToReserve = networkId
}

if err := counter.Spec.Reserve(networkIdToReserve); err != nil {
network.Status.State = machinev1alpha1.CFailedNetworkState
network.Status.State = machinev1alpha1.NetworkStateFailed
network.Status.Message = err.Error()
if err := r.Status().Update(ctx, network); err != nil {
log.Error(err, "unable to update network status", "name", req.NamespacedName)
return ctrl.Result{}, err
}
r.EventRecorder.Event(network, v1.EventTypeWarning, CNetworkIDReservationFailureReason, network.Status.Message)
r.EventRecorder.Event(network, v1.EventTypeWarning, NetworkIDReservationFailure, network.Status.Message)
log.Error(err, "unable to reserve network id", "name", req.NamespacedName, "network id", network.Spec.ID)
return ctrl.Result{}, err
}
Expand All @@ -190,9 +190,9 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
log.Error(err, "unable to update counter state", "name", req.NamespacedName, "counter name", counterNamespacedName)
return ctrl.Result{}, err
}
r.EventRecorder.Eventf(network, v1.EventTypeNormal, CNetworkIDReservationSuccessReason, "ID %s for type %s reserved successfully", networkIdToReserve, network.Spec.Type)
r.EventRecorder.Eventf(network, v1.EventTypeNormal, NetworkIDReservationSuccess, "ID %s for type %s reserved successfully", networkIdToReserve, network.Spec.Type)

network.Status.State = machinev1alpha1.CFinishedNetworkState
network.Status.State = machinev1alpha1.NetworkStateAllocated
network.Status.Message = ""
network.Status.Reserved = networkIdToReserve
if err := r.Status().Update(ctx, network); err != nil {
Expand All @@ -205,7 +205,7 @@ func (r *NetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct

func (r *NetworkReconciler) requeueFailedSubnets(ctx context.Context, log logr.Logger, network *machinev1alpha1.Network) error {
matchingFields := client.MatchingFields{
CFailedTopLevelSubnetIndexKey: network.Name,
FailedTopLevelSubnetIndexKey: network.Name,
}

subnets := &machinev1alpha1.SubnetList{}
Expand Down Expand Up @@ -272,7 +272,7 @@ func (r *NetworkReconciler) finalizeNetwork(ctx context.Context, log logr.Logger
log.Error(err, "unexpected error while updating counter", "counter name", counterNamespacedName)
return err
}
r.EventRecorder.Eventf(network, v1.EventTypeNormal, CNetworkIDReleaseSuccessReason, "ID %s for type %s released successfully", network.Status.Reserved, network.Spec.Type)
r.EventRecorder.Eventf(network, v1.EventTypeNormal, NetworkIDReleaseSuccess, "ID %s for type %s released successfully", network.Status.Reserved, network.Spec.Type)

return nil
}
Expand All @@ -281,11 +281,11 @@ func (r *NetworkReconciler) typeToCounterName(networkType machinev1alpha1.Networ
counterName := ""
switch networkType {
case machinev1alpha1.VXLANNetworkType:
counterName = CVXLANCounterName
counterName = VXLANCounterName
case machinev1alpha1.GENEVENetworkType:
counterName = CGENEVECounterName
counterName = GENEVECounterName
case machinev1alpha1.MPLSNetworkType:
counterName = CMPLSCounterName
counterName = MPLSCounterName
default:
return "", errors.Errorf("unsupported network type %s", networkType)
}
Expand Down Expand Up @@ -313,7 +313,7 @@ func (r *NetworkReconciler) SetupWithManager(mgr ctrl.Manager) error {
}

if err := mgr.GetFieldIndexer().IndexField(
context.Background(), &machinev1alpha1.Subnet{}, CFailedTopLevelSubnetIndexKey, createFailedSubnetIndexValue); err != nil {
context.Background(), &machinev1alpha1.Subnet{}, FailedTopLevelSubnetIndexKey, createFailedSubnetIndexValue); err != nil {
return err
}

Expand Down
Loading
Loading