in controllers/manager/gatewayvmconfiguration_controller.go [325:358]
func (r *GatewayVMConfigurationReconciler) getGatewayVMSS(
ctx context.Context,
vmConfig *egressgatewayv1alpha1.GatewayVMConfiguration,
) (*compute.VirtualMachineScaleSet, int32, error) {
if vmConfig.Spec.GatewayNodepoolName != "" {
vmssList, err := r.ListVMSS(ctx)
if err != nil {
return nil, 0, err
}
for i := range vmssList {
vmss := vmssList[i]
if v, ok := vmss.Tags[consts.AKSNodepoolTagKey]; ok {
if strings.EqualFold(to.Val(v), vmConfig.Spec.GatewayNodepoolName) {
if prefixLenStr, ok := vmss.Tags[consts.AKSNodepoolIPPrefixSizeTagKey]; ok {
if prefixLen, err := strconv.Atoi(to.Val(prefixLenStr)); err == nil && prefixLen > 0 && prefixLen <= math.MaxInt32 {
return vmss, int32(prefixLen), nil
} else {
return nil, 0, fmt.Errorf("failed to parse nodepool IP prefix size: %s", to.Val(prefixLenStr))
}
} else {
return nil, 0, fmt.Errorf("nodepool does not have IP prefix size")
}
}
}
}
} else {
vmss, err := r.GetVMSS(ctx, vmConfig.Spec.VmssResourceGroup, vmConfig.Spec.VmssName)
if err != nil {
return nil, 0, err
}
return vmss, vmConfig.Spec.PublicIpPrefixSize, nil
}
return nil, 0, fmt.Errorf("gateway VMSS not found")
}