Skip to content
Draft
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
30 changes: 24 additions & 6 deletions pkg/controllers/nodeclass/status/subnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"time"

"github.com/samber/lo"
"gorm.io/gorm/logger"

Check failure on line 26 in pkg/controllers/nodeclass/status/subnet.go

View workflow job for this annotation

GitHub Actions / Analyze Go

could not import gorm.io/gorm/logger (invalid package name: "")

Check failure on line 26 in pkg/controllers/nodeclass/status/subnet.go

View workflow job for this annotation

GitHub Actions / Analyze Go

no required module provides package gorm.io/gorm/logger; to add it:
"sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/reconcile"

Expand All @@ -47,6 +48,8 @@
SubnetUnreadyReasonNotFound = "SubnetNotFound"

SubnetUnreadyReasonIDInvalid = "SubnetIDInvalid"

SubnetUnreadyReasonNotAllowed = "OperationNotPermitted"
)

const (
Expand All @@ -64,6 +67,17 @@

func (r *SubnetReconciler) validateVNETSubnetID(ctx context.Context, nodeClass *v1beta1.AKSNodeClass) (reconcile.Result, error) {
clusterSubnetID := options.FromContext(ctx).SubnetID
clusterSubnetComponents, err := utils.GetVnetSubnetIDComponents(clusterSubnetID)
if err != nil {
logger.Error(err, "failed to parse cluster vnetSubnetID", "subnetID", clusterSubnetID)

Check failure on line 72 in pkg/controllers/nodeclass/status/subnet.go

View workflow job for this annotation

GitHub Actions / ci

invalid operation: cannot call non-function logger.Error (constant 2 of int type "gorm.io/gorm/logger".LogLevel)) (typecheck)

Check failure on line 72 in pkg/controllers/nodeclass/status/subnet.go

View workflow job for this annotation

GitHub Actions / ci

invalid operation: cannot call non-function logger.Error (constant 2 of int type "gorm.io/gorm/logger".LogLevel)) (typecheck)

Check failure on line 72 in pkg/controllers/nodeclass/status/subnet.go

View workflow job for this annotation

GitHub Actions / ci

invalid operation: cannot call non-function logger.Error (constant 2 of int type "gorm.io/gorm/logger".LogLevel)) (typecheck)

Check failure on line 72 in pkg/controllers/nodeclass/status/subnet.go

View workflow job for this annotation

GitHub Actions / ci

invalid operation: cannot call non-function logger.Error (constant 2 of int type "gorm.io/gorm/logger".LogLevel) (typecheck)
nodeClass.StatusConditions().SetFalse(
v1beta1.ConditionTypeSubnetsReady,
SubnetUnreadyReasonIDInvalid,
fmt.Sprintf("Failed to parse vnetSubnetID %s", clusterSubnetID),
)
return reconcile.Result{}, nil
}

subnetID := lo.Ternary(nodeClass.Spec.VNETSubnetID != nil, lo.FromPtr(nodeClass.Spec.VNETSubnetID), options.FromContext(ctx).SubnetID)
logger := log.FromContext(ctx).WithName(subnetReconcilerName).WithValues("subnetID", subnetID)

Expand All @@ -77,13 +91,17 @@
)
return reconcile.Result{}, nil
}
if clusterSubnetComponents.ResourceGroupName == options.FromContext(ctx).NodeResourceGroup && nodeClass.Spec.VNETSubnetID != nil {
logger.Error(nil, "when using the aks managed vnet you may not specify an additional subnetID in the AKSNodeClass")
nodeClass.StatusConditions().SetFalse(
v1beta1.ConditionTypeSubnetsReady,
SubnetUnreadyReasonNotAllowed,
fmt.Sprint("When using the aks managed vnet you may not specify an additional subnetID in the AKSNodeClass"),
)
return reconcile.Result{}, nil
}
if subnetID != clusterSubnetID {
clusterSubnetIDParts, err := utils.GetVnetSubnetIDComponents(clusterSubnetID) // Assume valid cluster subnet id
if err != nil { // Highly unlikely case but putting it in nonetheless
logger.Error(err, "failed to parse cluster subnet ID", "clusterSubnetID", clusterSubnetID)
return reconcile.Result{}, nil
}
if !clusterSubnetIDParts.IsSameVNET(nodeClassSubnetComponents) {
if !clusterSubnetComponents.IsSameVNET(nodeClassSubnetComponents) {
logger.Error(nil, "subnet does not match cluster subscription, resource group, or virtual network", "subnetID", subnetID)
nodeClass.StatusConditions().SetFalse(
v1beta1.ConditionTypeSubnetsReady,
Expand Down
Loading