pkg/cloudprovider/drift.go (8 lines): - line 48: // TODO (charliedmcb): Use this const across code and test locations which are signaling/checking for "no drift" - line 105: // TODO (charliedmcb): I'm wondering if we actually want to have these soft-error cases switch to return an error if no-drift condition was found across all of IsDrifted. - line 124: // TODO: re-evaluate ignoring NotFound error, and using core's library for nodeclaims. Similar to usage here: - line 137: // TODO (charliedmcb): remove nolint on gocyclo. Added for now in order to pass "make verify - line 147: // TODO (charliedmcb): Do we need to handle vm not found here before its provisioned? - line 153: // TODO (charliedmcb): Do we need to handle vm not found here before its provisioned? - line 157: // TODO (charliedmcb): Do we need to handle vm not found here before its provisioned? - line 190: // TODO: Refactor all of AzConfig to be part of options pkg/providers/instance/instance.go (8 lines): - line 387: Name: lo.ToPtr(opts.VMName), // TODO: I think it's safe to set this, even though it's read only - line 561: // TODO: Not returning after launching this LRO because - line 562: // TODO: doing so would bypass the capacity and other errors that are currently handled by - line 563: // TODO: core pkg/controllers/nodeclaim/lifecycle/controller.go - in particular, there are metrics/events - line 564: // TODO: emitted in capacity failure cases that we probably want. - line 611: // TODO: if the VM doesn't have extensions this will still happen and we will have to - line 612: // TODO: wait for the TTL for the claim to be deleted and recreated. This will most likely - line 613: // TODO: happen during Karpenter pod restart. pkg/controllers/nodeclaim/inplaceupdate/controller.go (7 lines): - line 75: // TODO: When we have sources of truth coming from NodePool we can do: - line 77: // TODO: To look it up and use that as input to calculate the goal state as well - line 133: // TODO: Can pass and consider NodeClaim and/or NodePool here if we need to in the future - line 171: // TODO: Document why this magic number used. If we want to consistently use it accoss reconcilers, refactor to a reused const. - line 175: // TODO: Can add .Watches(&karpv1.NodePool{}, nodeclaimutil.NodePoolEventHandler(c.kubeClient)) - line 176: // TODO: similar to https://github.com/kubernetes-sigs/karpenter/blob/main/pkg/controllers/nodeclaim/disruption/controller.go#L214C3-L217C5 - line 177: // TODO: if/when we need to monitor provisioner changes and flow updates on the NodePool down to the underlying VMs. pkg/controllers/nodeclass/status/images.go (4 lines): - line 65: // TODO: Document why this magic number used. If we want to consistently use it accoss reconcilers, refactor to a reused const. - line 79: // - 4. TODO: Update Images to latest if in an open maintenance window [retrieved from ConfigMap] - line 151: // TODO: need to add the actual logic for handling maintenance windows once it is in the ConfigMap. - line 165: // TODO: Need longer term design for handling newly supported versions, and other image selectors. pkg/fake/virtualmachinesapi.go (4 lines): - line 76: // TODO: document the implications of embedding vs. not embedding the interface here - line 107: // TODO: may have to clone ... - line 108: // TODO: subscription ID? - line 150: vm.Properties.TimeCreated = lo.ToPtr(time.Now()) // TODO: use simulated time? pkg/providers/instancetype/instancetypes.go (3 lines): - line 91: // TODO: skewer api, subnetprovider, pricing provider, unavailable offerings, ... - line 183: // TODO: review; switch to controller-driven updates - line 425: hasSCSISupport := func(sku *skewer.SKU) bool { // TODO: move capability determination to skewer pkg/providers/instance/azure_client.go (3 lines): - line 59: // TODO: Move this to another package that more correctly reflects its usage across multiple providers - line 157: // TODO: this one is not enabled for rate limiting / throttling ... - line 158: // TODO Move this over to track 2 when skewer is migrated pkg/cloudprovider/cloudprovider.go (3 lines): - line 97: // TODO: Remove this after v1 - line 171: // TODO: This won't clean up leaked NICs if the VM doesn't exist... intentional? - line 325: // TODO: review repair policies pkg/providers/loadbalancer/loadbalancer.go (3 lines): - line 68: IPv6PoolIDs []string // TODO: This is always empty currently - line 105: // TODO: IPv6 deferred for now. When they're used they must be put onto a non-primary NIC. - line 151: return strings.EqualFold(name, SLBName) || strings.EqualFold(name, InternalSLBName) // TODO: Not currently supporting IPv6 pkg/apis/v1alpha2/aksnodeclass.go (2 lines): - line 93: // TODO: validation - line 131: // TODO: validation pkg/providers/imagefamily/image.go (2 lines): - line 36: // TODO: Remove this provider, by refactoring it into the nodeimage.go provider, and resolver.go as needed - line 114: // TODO: refactor this into kubernetesversion.go, and split into a new kubernetes provider pkg/providers/launchtemplate/launchtemplate.go (2 lines): - line 75: // TODO: add caching of launch templates - line 130: // TODO: make conditional on pod subnet pkg/providers/imagefamily/resolver.go (2 lines): - line 157: // TODO: revisit computeResources implementation - line 165: // TODO: Options aren't used within DefaultImages, so safe to be using nil here. Refactor so we don't actually need to pass in Options for getting DefaultImage. pkg/fake/types.go (1 line): - line 157: *result = *h.result // TODO: may need to deep copy pkg/controllers/nodeclass/hash/controller.go (1 line): - line 78: // TODO: Document why this magic number used. If we want to consistently use it accoss reconcilers, refactor to a reused const. charts/karpenter/values.yaml (1 line): - line 168: # TODO: not propagated yet ... pkg/fake/loadbalancerapi.go (1 line): - line 64: return false // TODO: It might be ideal if we had a MockPager which sometimes simulated multiple pages of results to ensure we handle that correctly pkg/providers/instance/skuclient/skuclient.go (1 line): - line 54: // TODO (charliedmcb): need to get track 2 support for the skewer API pkg/apis/v1alpha2/labels.go (1 line): - line 55: // TODO: consider using constants like compute.ArchitectureArm64 pkg/controllers/controllers.go (1 line): - line 60: // TODO: nodeclaim tagging pkg/controllers/nodeclass/status/controller.go (1 line): - line 102: // TODO: Document why this magic number used. If we want to consistently use it accoss reconcilers, refactor to a reused const. pkg/fake/resourceskuapi.go (1 line): - line 27: // TODO: consider using fakes from skewer itself hack/code/prices_gen/main.go (1 line): - line 182: // TODO: look at grouping by families to make the generated output nicer pkg/utils/opts/armopts.go (1 line): - line 53: // TODO: bsoghigian: Investigate if we want to leverage some of the status codes other than the defaults. pkg/controllers/nodeclass/status/kubernetesversion.go (1 line): - line 61: // TODO: Document why this magic number used. If we want to consistently use it accoss reconcilers, refactor to a reused const. pkg/fake/communityimageversionsapi.go (1 line): - line 28: // TODO: no ability to simulate errors on the Pager. pkg/fake/nodeimageversionsapi.go (1 line): - line 25: // TODO: no ability to simulate errors in the List call. pkg/controllers/nodeclass/termination/controller.go (1 line): - line 122: // TODO: Document why this magic number used. If we want to consistently use it accoss reconcilers, refactor to a reused const. pkg/utils/gpu.go (1 line): - line 26: // TODO: Get these from agentbaker pkg/operator/options/options.go (1 line): - line 68: SSHPublicKey string // ssh.publicKeys.keyData => VM SSH public key // TODO: move to v1alpha2.AKSNodeClass? cmd/controller/main.go (1 line): - line 65: // TODO: refactor so we are passing in kubernetesVersionProvider and nodeImageProvider. Currently ImageProvider just implements both. pkg/providers/imagefamily/nodeimage.go (1 line): - line 47: // TODO: refactor to be part of construction, since this is a karpenter setting and won't change across the process.