v2/azure-arm.yaml (30 lines): - line 113: # TODO: I believe this type exists at - line 114: # TODO : https://github.com/Azure/azure-rest-api-specs/blob/88e7838a09868a51de3894114355c75929847a46/specification/azsadmin/resource-manager/compute/Microsoft.Compute.Admin/stable/2021-04-01/Disks.json#L224 - line 115: # TODO: If we ever want access to the assadmin Microsoft.Compute.Admin RP we'll need to bring this back - line 160: # TODO: get rid of these, either by chasing the teams generating - line 493: because: We don't handle this very well right now, manually remove until TODO above has been done - line 534: # TODO: Unused or renamed? - line 1337: # TODO: Does this need to be uncommented - line 1367: # TODO: Does this need to be uncommented - line 1731: # TODO: Reorganize this section - line 1732: # TODO: Confirm that these guys are really ARM IDs - line 2172: $referenceType: arm # TODO: Upstream to Swagger - line 2199: $referenceType: arm # TODO: Upstream to Swagger - line 2240: $referenceType: arm # TODO: Upstream to Swagger - line 2396: FlexibleServers_Backup: # TODO: net new - line 2399: FlexibleServers_AdvancedThreatProtectionSetting: # TODO: net new - line 2402: FlexibleServers_VirtualEndpoint: # TODO: net new - line 2738: # TODO: I think this has been (correctly) pruned now - line 3410: LoadBalancers_InboundNatRule: # TODO: There must always be a parent and child in the same API version. See https://github.com/Azure/azure-service-operator/issues/3002 - line 3463: RouteTables_Route: # TODO: There must always be a parent and child in the same API version. See https://github.com/Azure/azure-service-operator/issues/3002 - line 3485: $nameInNextVersion: VirtualNetworkGateway_STATUS_VirtualNetworkGateway_SubResourceEmbedded # TODO: See if we can get rid of this - line 3505: VirtualNetworks_Subnet: # TODO: There must always be a parent and child in the same API version. See https://github.com/Azure/azure-service-operator/issues/3002 - line 3718: LoadBalancers_InboundNatRule: # TODO: There must always be a parent and child in the same API version. See https://github.com/Azure/azure-service-operator/issues/3002 - line 3774: RouteTables_Route: # TODO: There must always be a parent and child in the same API version. See https://github.com/Azure/azure-service-operator/issues/3002 - line 3798: VirtualNetworkGatewayNatRule: # TODO: New resource, should add? - line 3802: VirtualNetworkGatewayPolicyGroup: # TODO: New resource, should add? - line 3813: VirtualNetworks_Subnet: # TODO: There must always be a parent and child in the same API version. See https://github.com/Azure/azure-service-operator/issues/3002 - line 4146: # Servers_DnsAliase: # TODO: Not sure how this works - it has no properties but name? - line 4197: # Servers_Databases_ExtendedAuditingSetting: # TODO: Not sure what the difference is between this and the normal auditing setting - line 4200: # Servers_Databases_GeoBackupPolicy: # TODO: Not actually supported in ARM at the moment - line 4203: # Servers_Databases_MaintenanceWindow: # TODO: Seems to have name Servers_Databases_MaintenanceWindows_Current, not sure why v2/tools/generator/internal/jsonast/jsonast.go (15 lines): - line 275: // TODO: don’t bother validating for now - line 404: // TODO: This is a bit of a hack as we don't have a way to handle this generically right now - line 405: // TODO: for an arbitrary non-renderable character - line 506: // TODO: This log shouldn't happen in cases where the type in question is later excluded, see: - line 507: // TODO: https://github.com/Azure/azure-service-operator/issues/1517 - line 561: // (TODO: tell all Azure teams this fact and get them to update their API definitions!) - line 569: // TODO: for JSON serialization this needs to be unpacked into "parent" - line 579: // TODO: for JSON serialization this needs to be unpacked into "parent" - line 596: // TODO: Currently setting this to anyType as that's easiest to deal with and will generate - line 597: // TODO: a warning during controller-gen - line 621: // TODO: How hacky is this? - line 671: // TODO: This code and below does nothing in the Swagger path as schema.url() is always empty. - line 672: // TODO: It's still used in the JSON schema path for golden tests and should be removed once those - line 673: // TODO: are retired. - line 893: // TODO: this whole switch is a bit wrong because type: 'object' can v2/tools/generator/internal/armconversion/arm_conversion_function.go (14 lines): - line 129: // TODO: Equality on functions is currently awkward because we can't easily pass - line 130: // TODO: a reference to the object the function is on to the function (since both - line 131: // TODO: are immutable and it's impossible to have two immutable objects with - line 132: // TODO: references to each other). Really this equality is always in the context - line 133: // TODO: of comparing objects (since you can't have a free-floating function - line 134: // TODO: with a receiver), and as such we just need to compare things that aren't - line 135: // TODO: the receiver type. - line 147: // TODO: Equality on functions is currently awkward because we can't easily pass - line 148: // TODO: a reference to the object the function is on to the function (since both - line 149: // TODO: are immutable and it's impossible to have two immutable objects with - line 150: // TODO: references to each other). Really this equality is always in the context - line 151: // TODO: of comparing objects (since you can't have a free-floating function - line 152: // TODO: with a receiver), and as such we just need to compare things that aren't - line 153: // TODO: the receiver type. v2/tools/generator/internal/armconversion/convert_from_arm_function_builder.go (13 lines): - line 270: // TODO: For now we are not assigning these, as we don't know how to rebuild the reference - line 282: // TODO: For now, we are NOT assigning to these. _Status types don't have them, and it's unclear what - line 283: // TODO: the fromARM functions do for us on Spec types. We may need them for diffing though. If so we will - line 284: // TODO: need to revisit this and actually assign something - line 296: // TODO: For now, we are NOT assigning to these. _Status types don't have them, and it's unclear what - line 297: // TODO: the fromARM functions do for us on Spec types. We may need them for diffing though. If so we will - line 298: // TODO: need to revisit this and actually assign something - line 313: // TODO: For now, we are NOT assigning to these. _Status types don't have them, and it's unclear what - line 314: // TODO: the fromARM functions do for us on Spec types. We may need them for diffing though. If so we will - line 315: // TODO: need to revisit this and actually assign something - line 392: // TODO: This property should be copied from the "previous" spec, it can't be sourced from ARM. We'll need to come up - line 393: // TODO: with some paradigm for that if/when we start doing diffing, but for now we don't actually use FromARM with Spec types - line 394: // TODO: so just skip this v2/tools/generator/internal/codegen/pipeline/convert_allof_and_oneof_to_objects.go (11 lines): - line 44: // TODO: we need flags - line 328: isGoodName: false, // TODO: This name sucks but what alternative do we have? - line 336: isGoodName: false, // TODO: This name sucks but what alternative do we have? - line 344: isGoodName: false, // TODO: This name sucks but what alternative do we have? - line 363: isGoodName: false, // TODO: This name sucks but what alternative do we have? - line 371: isGoodName: false, // TODO: This name sucks but what alternative do we have? - line 632: // TODO: need to handle merging requiredness and tags and... - line 638: // TODO: Is there a better heuristic? See https://github.com/Azure/azure-service-operator/issues/1768 - line 652: // TODO: need to handle merging other bits of objects - line 772: // TODO: can we somehow process these pointed-to types first, - line 888: // TODO: there could be other things in the object to check? v2/internal/testcommon/kube_per_test_context.go (8 lines): - line 258: result.NoSpaceNamer = result.Namer.WithSeparator("") // TODO: better way to avoid this mistake in the future - line 284: // TODO: Setting this really low sometimes seems to cause - line 285: // TODO: updating resource: Operation cannot be fulfilled: the object has been modified; please apply your changes to the latest version and try again. - line 286: // TODO: This happens when the test sees a Status update and makes an update to the resource while racing with the Spec update - line 287: // TODO: in azure_deployment_reconciler CommitUpdate. If we fix https://github.com/Azure/azure-service-operator/issues/1744 we can - line 288: // TODO: shorten this interval. - line 397: // TODO: Consider making tc.Match.BeProvisioned(0) work for non-ASO objects with a Ready condition too? - line 438: // TODO: Consider making tc.Match.BeProvisioned(0) work for non-ASO objects with a Ready condition too? v2/tools/generator/internal/armconversion/convert_to_arm_function_builder.go (8 lines): - line 247: // TODO: Do we support slices or maps? Skipped for now - line 477: // TODO: If this property is an ARM reference we need a bit of special handling. - line 478: // TODO: See https://github.com/Azure/azure-service-operator/issues/1651 for possible improvements to this. - line 947: // TODO: This results in code that isn't very "human-like". Today the contract of most handlers is that they - line 948: // TODO: result in a type which is not a ptr. This is a useful contract as then the caller always knows if they need - line 949: // TODO: to take the address of the inner result (&result) to assign to a ptr field, or not (to assign to a non-ptr field). - line 950: // TODO: Unfortunately, we can't fix this issue by inverting things and making the contract that the type is a ptr type, as - line 951: // TODO: in many cases (primitive types, strings, etc) that doesn't make sense and also results in awkward to read code. v2/pkg/genruntime/base_types.go (8 lines): - line 47: // TODO: It's weird that this is isn't with the other annotations - line 48: // TODO: Should we move them all here (so they're exported?) Or shold we move them - line 49: // TODO: to serviceoperator-internal.azure.com to signify they are internal? - line 58: // TODO: Currently this annotation can only be used on the root resource in a resource hierarchy. - line 59: // TODO: For example if A owns B owns C, this annotation can be used on A but not on B or C. - line 135: type ARMResourceStatus interface { // TODO: Unsure what the actual content of this interface needs to be. - line 136: // TODO: We need to define it and generate the code for it - line 144: GetID() string // TODO: Should this be on Status instead? v2/internal/util/cel/cel.go (8 lines): - line 40: // TODO: We could put this instead in genruntime if we thought it made more sense to keep the "static value for use by webhooks" - line 41: // TODO: there. - line 165: // TODO: We could consider adding support for the Kubernetes List Library - line 166: // TODO: https://kubernetes.io/docs/reference/using-api/cel/#kubernetes-list-library - line 167: // TODO: and the Kubernetes Regex Library - line 168: // TODO: https://kubernetes.io/docs/reference/using-api/cel/#kubernetes-regex-library - line 169: // TODO: if there is user need. Adding them should be non-breaking. - line 203: // TODO: We may want to use ContextEval here, alongside prgm, err := env.cel.Program(ast, cel.InterruptCheckFrequency(10)) v2/internal/util/cel/json_type_provider.go (8 lines): - line 73: // TODO: NO idea - line 170: // TODO: If we want to support construction of map[string]dyn -> map[string]v1.JSON, we need a mapping of - line 171: // TODO: structs that contain map[string]v1.JSON, so that we can perform special handling for those. - line 172: // TODO: See for example the commented out "construct simple resource with map[string]v1.JSON" test - line 173: // TODO: in cel_test.go. This would boil down to performing our own conversion for that single field - line 174: // TODO: that just serializes the map to a JSON string. - line 175: // TODO: This isn't currently implemented because it doesn't seem likely to ever come up for our use-case (where - line 176: // TODO: return types must be string or map[string]string v2/internal/reconcilers/generic/generic_reconciler.go (7 lines): - line 193: // TODO: This means that if a user messes with some reconciler-specific registration stuff (like owner), - line 194: // TODO: but doesn't remove the finalizer, we won't re-add the reconciler specific stuff. Possibly we should - line 195: // TODO: always re-add that stuff too (it's idempotent)... but then ideally we would avoid a call to Commit - line 196: // TODO: unless it was actually needed? - line 273: // TODO: can't set this before the delete call right now due to how ARM resources determine if they need to issue a first delete. - line 274: // TODO: Once I merge a fix to use the async operation for delete polling this can move up to above the Delete call in theory - line 354: reconcilePolicy := reconcilers.GetReconcilePolicy(obj, log, gr.Config.DefaultReconcilePolicy) // TODO: Pull this whole method up here v2/tools/generator/internal/codegen/pipeline/create_arm_types.go (6 lines): - line 434: // TODO: Currently the shape of the this type is always empty. This is safe now because the expected value type - line 435: // TODO: of the map for all RPs is entirely readonly. If at some point in the future ARM allows users to pass - line 436: // TODO: values to the RP in the value of this map, we will need to be more intelligent about how we construct - line 437: // TODO: the map value type. - line 438: // TODO: Given that evolution of the UserAssignedIdentities API is infrequent and may never happen, we don't currently - line 439: // TODO: support that. v2/cmd/controller/app/setup.go (6 lines): - line 185: // TODO: This is not quite true as if we wanted we could still read the CRDs from the filesystem and - line 186: // TODO: just exit if what we see remotely doesn't match what we have locally, the downside of this is we pay - line 187: // TODO: the nontrivial startup cost of reading the local copy of CRDs into memory. Since "none" is - line 188: // TODO: us approximating the standard operator experience we don't perform this assertion currently as most - line 189: // TODO: operators don't. - line 496: // TODO: do we need GVK here too? v2/tools/generator/internal/codegen/pipeline/load_types.go (5 lines): - line 230: // TODO: I think this should be renamed to "_Spec" for consistency, but will do in a separate PR for cleanliness #Naming - line 239: // TODO: remove once preceding TODO is resolved and everything is consistently named _Spec #Naming - line 420: // TODO: This is very hacky - line 645: // TODO: this might result in non-determinism depending on iteration order - line 753: // TODO: is there, perhaps, a way to detect these without hardcoding these paths? v2/internal/reconcilers/postgresql/postgresql_user_reconciler.go (5 lines): - line 114: // TODO integrate in create and update user? - line 169: // TODO: There's still probably some ways that this user can be deleted but that we don't detect (and - line 170: // TODO: so might cause an error triggering the resource to get stuck). - line 171: // TODO: We check for owner not existing above, but cases where the server is in the process of being - line 172: // TODO: deleted (or all system tables have been wiped?) might also exist... v2/tools/generator/internal/jsonast/swagger_type_extractor.go (5 lines): - line 74: // TODO: use ARMURI for generating Resource URIs (only used for documentation & ownership at the moment) - line 264: // TODO: check status types as well - line 356: // TODO: we should really check that the results are the same in each status result - line 943: // TODO: Possibly need to consume CollectionFormat here - line 995: // TODO: Not currently possible to generate a resource with scope Location, we should fix that v2/internal/reconcilers/azuresql/connector.go (5 lines): - line 73: // TODO: Possibly we want to source this from a configmap rather than reading it directly off of our parent? - line 74: // TODO: That would work better with https://github.com/Azure/azure-service-operator/issues/2357 as well probably? - line 75: // TODO: Not doing this now as the other SQL users use the parent reference directly and we want to be consistent with them. - line 76: // TODO: If we do support this we can do it in a non-breaking way where we add support for users and move to allow ARM-ID based - line 77: // TODO: owners. v2/internal/resolver/resource_hierarchy.go (5 lines): - line 94: // TODO: It's a bit awkward that this takes a subscriptionID parameter but does nothing with it in the tenant scope case - line 139: // TODO: This is currently a special case as the only resource like this is ResourceGroup and ResourceGroup itself - line 140: // TODO: is a bit funky because it doesn't have a /providers like everything else does... - line 206: // TODO: Possibly refactor this huge method into sub-functions? - line 269: // TODO: if we actually need to support this for hierarchies, we could do something like the below v2/tools/generator/internal/codegen/pipeline/prune_resources_with_lifecycle_owned_by_parent.go (5 lines): - line 35: // TODO: This is a hack placed here to protect future releases from include VNET but not - line 36: // TODO: the corresponding Subnet. Each networking APIVersion that supports VNET must also - line 37: // TODO: support subnet or the code in virtual_network_extensions.go will not function properly. - line 38: // TODO: It's likely that failure to function would be caught by tests, but blocking it here - line 39: // TODO: as an extra precaution. v2/internal/testcommon/samples_tester.go (5 lines): - line 55: // TODO: Unable to test diskencryptionsets sample since it requires keyvault/key URI. - line 56: // TODO: we don't support Keyvault/Keys to automate the process - line 440: // TODO: We're making the assumption that every reference of type ResourceGroup is by definition referring - line 441: // TODO: to the randomly generated RG name, but it's possible at some future date we have multiple resourceGroups - line 442: // TODO: floating around. If that happens we may need to update this logic to be a bit more discerning. v2/tools/generator/internal/astmodel/conversion_function_builder.go (4 lines): - line 125: // TODO: There feels like overlap between this and the Storage Conversion Factories? Need further thinking to combine them? - line 130: // TODO: Better way to let you fuss with this? How can you pick out what I've already put in here to overwrite it? - line 154: // TODO: a flip function of some kind would be kinda nice (for source vs dest) - line 298: // TODO: The suffix here should maybe be configurable on the function builder? v2/tools/generator/internal/codegen/pipeline/determine_resource_ownership.go (4 lines): - line 95: // TODO: Can delete this once we drop JSON schema golden files - line 169: // TODO: If it ever arises that we have a resource whose owner doesn't exist in the same API - line 170: // TODO: version this might be an issue. - line 232: updatedType := resourceType.WithOwner(ownerTypeName) // TODO: Note that right now... this type doesn't actually exist... v2/internal/util/mysql/privilege.go (4 lines): - line 25: // TODO: ALL is actually not supported in FlexibleServer so there's not a lot of need for this. It doesn't hurt though and makes - line 26: // TODO: us more robust if we want to expand to support MySQL users on other server types (standalone server, etc). - line 223: // TODO: Is there a way to just disable G201, which this violates? - line 239: // TODO: Is there a way to just disable G201, which this violates? v2/internal/reconcilers/azuresql/local_user.go (4 lines): - line 84: // TODO: There's still probably some ways that this user can be deleted but that we don't detect (and - line 85: // TODO: so might cause an error triggering the resource to get stuck). - line 86: // TODO: Cases where the server is in the process of being - line 87: // TODO: deleted (or all system tables have been wiped?) might also exist... v2/internal/reconcilers/mysql/local_user.go (4 lines): - line 89: // TODO: There's still probably some ways that this user can be deleted but that we don't detect (and - line 90: // TODO: so might cause an error triggering the resource to get stuck). - line 91: // TODO: Cases where the server is in the process of being - line 92: // TODO: deleted (or all system tables have been wiped?) might also exist... v2/internal/reconcilers/mysql/aad_user.go (4 lines): - line 72: // TODO: There's still probably some ways that this user can be deleted but that we don't detect (and - line 73: // TODO: so might cause an error triggering the resource to get stuck). - line 74: // TODO: Cases where the server is in the process of being - line 75: // TODO: deleted (or all system tables have been wiped?) might also exist... v2/pkg/genruntime/arm_transformer.go (4 lines): - line 16: // TODO: We might be able to remove this in favor of using AzureName() everywhere in the future - line 19: // TODO: We could collapse all of these Resolved[X, string] into a single Resolved[any, string], if we wanted to... - line 46: // TODO: Consider ArmSpecTransformer and ARMTransformer, so we don't have to pass owningName/name through all the calls - line 62: // TODO: Possibly need to worry about preserving case here, although ARM should be already v2/tools/generator/internal/codegen/pipeline/add_arm_conversion_interface.go (4 lines): - line 100: // TODO: We need labels - line 195: // TODO: Right now the Kubernetes type has all of its standard requiredness (validations). If we want to allow - line 196: // TODO: users to submit "just a name and owner" types we will have to strip some validation until - line 197: // TODO: https://github.com/kubernetes-sigs/controller-tools/issues/461 is fixed v2/tools/generator/internal/testcases/json_serialization_test_case.go (4 lines): - line 98: // TODO: Add generators for these properties - line 855: // TODO: we should restrict the values of generated types - line 888: // TODO: Should we invoke a generator for stuff from our runtime package? - line 941: // TODO: we should restrict the values of generated types v2/pkg/genruntime/resource_reference.go (4 lines): - line 26: // TODO: In practice this type is used only for Owner fields and so might more appropriately have been called OwnerReference - line 27: // TODO: but changing to that would be a breaking change so avoiding it. - line 74: // TODO: This type and ResourceReference are almost exactly the same now... - line 158: // TODO: We wouldn't need this if controller-gen supported DUs or OneOf better, see: https://github.com/kubernetes-sigs/controller-tools/issues/461 v2/tools/generator/gen_types.go (3 lines): - line 24: // TODO: there's not great support for required - line 25: // TODO: arguments in cobra so this is the best we get... see: - line 26: // TODO: https://github.com/spf13/cobra/issues/395 v2/internal/reconcilers/arm/azure_generic_arm_reconciler_instance.go (3 lines): - line 384: // TODO: we need a better way? - line 620: // TODO: The owner parameter here should be optional - line 622: err = s.PopulateFromARM(knownOwner, reflecthelpers.ValueOfPtr(armStatus)) // TODO: PopulateFromArm expects a value... ick v2/tools/generator/gen_kustomize.go (3 lines): - line 22: // TODO: there's not great support for required - line 23: // TODO: arguments in cobra so this is the best we get... see: - line 24: // TODO: https://github.com/spf13/cobra/issues/395 v2/tools/generator/internal/config/configuration.go (3 lines): - line 161: // TODO: split Configuration struct so that domain model is not used for serialization! - line 347: // TODO: Not sure that this datatype should be string, but we don't use it right now so keeping it as - line 348: // TODO: string for simplicity v2/internal/reflecthelpers/reflect_helpers.go (3 lines): - line 23: // TODO: Can we delete this helper later when we have some better code generated functions? - line 152: untypedResult, err := FindPropertiesWithTag(obj, "optionalConfigMapPair") // TODO: This is astmodel.OptionalConfigMapPairTag - line 158: suffix := "FromConfig" // TODO This is astmodel.OptionalConfigMapReferenceSuffix v2/pkg/genruntime/secrets.go (3 lines): - line 79: // TODO: If we wanted to do this, probably the secret would need to be JSON-formatted, as unlike - line 80: // TODO: Kubernetes secrets there's no map[string]string structure inside of the secret. I think - line 81: // TODO: that's still probably preferable to having a map[string]SecretReference from a UX perspective. v2/internal/genericarmclient/poller.go (3 lines): - line 52: // TODO: In some cases this actually ends up issuing a GET on the resource, which we ignore the response of. - line 53: // TODO: Ideally we would have a way to use the response here to fill out the status without needing to issue - line 54: // TODO: a separate request, but for now not worrying about that v2/tools/generator/internal/codegen/pipeline/resource_registration_file.go (3 lines): - line 73: astmodel.MakeLocalPackageReference("", "controllers", "", ""), // TODO: This should come from a config - line 132: // TODO: Common func? - line 146: Name: dst.NewIdent("controllers"), // TODO: This probably needs to come from config v2/internal/util/azuresql/azuresql.go (3 lines): - line 60: // TODO: Does this work for any form of user? Don't need a username at all? - line 128: //"CREATE USER [appName] FROM EXTERNAL PROVIDER;" -- TODO: This seems to work for UMI... how can I test logging in? - line 134: // TODO: There doesn't seem to be a need to update (and the FROM EXTERNAL PROVIDER syntax isn't valid for ALTER anyway). v2/internal/reconcilers/arm/azure_generic_arm_reconciler.go (3 lines): - line 27: // TODO: I think we will want to pull some of this back into the Generic Controller so that it happens - line 28: // TODO: for all resources - line 118: // TODO: The line between AzureDeploymentReconciler and azureDeploymentReconcilerInstance is still pretty blurry v2/tools/generator/internal/astmodel/kubebuilder_validations.go (3 lines): - line 156: // TODO (@bearps) Restore this check when we modify AsDeclarations() to allow error returns - line 170: // TODO (@bearps) Restore this check when we modify AsDeclarations() to allow error returns - line 192: // TODO (@bearps) Restore this check when we modify AsDeclarations() to allow error returns v2/tools/generator/internal/codegen/pipeline/apply_cross_resource_references_from_config.go (3 lines): - line 93: // TODO: we need flags - line 106: // TODO: Remove types that have only a single field ID and pull things up a level? Will need to wait for George's - line 107: // TODO: Properties collapsing work for this. v2/internal/controllers/controller_resources.go (3 lines): - line 349: // TODO: It may be possible where we construct the ctrl.Manager to limit what secrets we watch with - line 350: // TODO: this feature: https://github.com/kubernetes-sigs/controller-runtime/blob/master/designs/use-selectors-at-cache.md, - line 351: // TODO: likely scoped by a label selector? v2/internal/reconcilers/generic/register.go (2 lines): - line 97: // TODO: Consider pulling some of the construction of things out of register (gvk, etc), so that we can pass in just - line 98: // TODO: the applicable extensions rather than a map of all of them v2/api/compute/customizations/vmss_extensions.go (2 lines): - line 267: // TODO: Can't do a trivial fuzzyEqualityComparison here because we don't know which fields are readonly - line 268: // TODO: and which are not. This results in mismatches like dropping etag and other fields. v2/internal/testcommon/kube_matcher.go (2 lines): - line 17: // TODO: Put this into a subpackage - line 18: // TODO: Would we rather these just be on testcontext? Might read better v2/internal/reconcilers/arm/error_classifier.go (2 lines): - line 77: "PublicIpForGatewayIsRequired", // TODO: There's not a great way to look at an arbitrary error returned by this API and determine if it's a 4xx or 5xx level... ugh - line 95: "RequestDisallowedByPolicy", // TODO: Technically could probably retry through this? v2/api/network/customizations/virtual_network_extensions.go (2 lines): - line 191: // TODO: Can't do a trivial fuzzyEqualityComparison here because we don't know which fields are readonly - line 192: // TODO: and which are not. This results in mismatches like dropping etag and other fields. v2/api/containerservice/customizations/managed_cluster_extensions.go (2 lines): - line 78: // TODO: In the future we may need variants of these secret properties that configure usage of the public FQDN rather than the private one, see: - line 79: // TODO: https://docs.microsoft.com/en-us/answers/questions/670332/azure-aks-get-credentials-using-wrong-hostname-for.html v2/tools/generator/internal/codegen/pipeline/add_cross_resource_references.go (2 lines): - line 36: // TODO: we need flags - line 226: // TODO: We could pass this information forward some other way? v2/internal/testcommon/azure_be_deleted_matcher.go (2 lines): - line 84: // TODO: Good way to generically check state of resource, look for deleting or something - line 85: // TODO: which is common across all Azure resources? v2/api/documentdb/customizations/database_account_extensions.go (2 lines): - line 82: // TODO: There is a ListReadOnlyKeys API that requires less permissions. We should consider determining - line 83: // TODO: that we don't need to call the ListKeys API and install call the listReadOnlyKeys API. hack/crossplane/azure-crossplane.yaml (2 lines): - line 163: # TODO: get rid of these, either by chasing the teams generating - line 174: matchRequired: false # TODO: Remove this if/when we actually require it v2/internal/util/postgresql/postgresql.go (2 lines): - line 46: // TODO find better solution to check user and password for SQL Injection - line 62: // TODO find better solution to check password for SQL Injection v2/tools/generator/internal/codegen/embeddedresources/renamer.go (2 lines): - line 164: // TODO: If we don't remove this, something is causing these definitions to not be emitted. - line 165: // TODO: Unsure what that is... should track it down v2/tools/generator/internal/codegen/pipeline/recursivetypefixer/simple_recursive_type_fixer.go (2 lines): - line 17: // TODO: If we end up needing more complex cycle detection we can rework TypeWalker to do it, but for now this - line 18: // TODO: is simpler and seems to cover all the cases we need. v2/tools/generator/internal/astmodel/file_definition.go (2 lines): - line 58: // TODO: check that all definitions are from same package - line 156: // TODO: Make this configurable v2/internal/identity/credential_provider.go (2 lines): - line 277: // TODO: We could read AzureAuthorityHost and other "cloud-defining" - line 278: // TODO: variables here to allow per-cloud credentials. v2/tools/generator/internal/astmodel/property_definition.go (2 lines): - line 105: // TODO post-alpha: replace result.tags with structured types - line 221: // TODO: Do we want a generic helper that does this? v2/tools/generator/internal/codegen/code_generator.go (2 lines): - line 188: pipeline.ReportOnTypesAndVersions(configuration).UsedFor(pipeline.ARMTarget), // TODO: For now only used for ARM - line 221: // TODO: For now only used for ARM v2/pkg/genruntime/conditions/conditions.go (2 lines): - line 29: // TODO: Hah, name... - line 275: // TODO: do we sort conditions here? CAPI does. v2/internal/testcommon/matchers/azure.go (2 lines): - line 14: // TODO: Put this into a subpackage - line 15: // TODO: Would we rather these just be on testcontext? Might read better v2/internal/resolver/config_map_resolver.go (1 line): - line 68: value, ok := configMap.Data[ref.Key] // TODO: Do we need to also check the binaryData field? v2/tools/generator/internal/codegen/pipeline/ensure_type_has_arm_type.go (1 line): - line 17: // TODO: Wondering if we should have an even stronger version of this that asserts it for all types rather than just the top level? v2/tools/generator/internal/astmodel/known_locals_set.go (1 line): - line 65: // TODO: I think this isn't right -- we need to trim all the suffixes from the end first v2/tools/generator/internal/astmodel/validated_type.go (1 line): - line 80: // TODO: update to use doubles once newer version of controller-gen is released v2/internal/reconcilers/action.go (1 line): - line 14: // TODO: It's not clear to me that this file holds any value... v2/internal/testcommon/wait.go (1 line): - line 17: // TODO: it's unfortunate we can't just use g.Eventually all the time v2/internal/testcommon/kube_test_context_envtest.go (1 line): - line 97: // TODO: Uncomment the below if we want controller-runtime logs in the tests. v2/tools/generator/internal/jsonast/schema_abstraction_openapi.go (1 line): - line 397: //!! TODO Maybe we need to detect these (like the 'v1' and such) and make them a special case too v2/tools/generator/internal/astmodel/resource_type.go (1 line): - line 56: annotations []string // TODO: Consider ensuring that these are actually kubebuilder annotations. v2/api/keyvault/customizations/vault_extensions.go (1 line): - line 181: // TODO: This polling speed is not configurable for our tests v2/internal/genericarmclient/default_http_client.go (1 line): - line 20: // TODO: Use https://github.com/Azure/go-armbalancer here once its prod ready. v2/api/containerservice/v1api20210501/storage/managed_cluster_conversion_overrides.go (1 line): - line 105: // TODO: We can remove this interface implementation if we get config-based property rename handling v2/tools/generator/internal/codegen/storage/conversion_graph.go (1 line): - line 197: // TODO: property renaming support goes here (when implemented) v2/tools/generator/internal/functions/kubernetes_admissions_defaulter.go (1 line): - line 267: // TODO: This part should maybe be conditional if there are no defaults to define? v2/internal/testcommon/resource_namer.go (1 line): - line 123: // TODO: Do we need a check here for if both result and prefix are empty? v2/tools/generator/internal/codegen/pipeline/crossplane_add_at_provider.go (1 line): - line 64: return nil, nil // TODO: Some definitions don't have status yet v2/pkg/genruntime/secrets/collector.go (1 line): - line 21: // TODO: This is similar to configmaps.Collector. If this is updated, that should likely be as well v2/internal/resolver/secret_map_resolver.go (1 line): - line 77: // TODO: Do we want to confirm that the type is Opaque? v2/api/dbformysql/v1/webhook/user_webhook_types.go (1 line): - line 140: // TODO: Note this should be kept in sync with admissions.ValidateWriteOnceProperties v2/tools/generator/internal/astmodel/type_definition_set.go (1 line): - line 584: // TODO: This is very similar to ReferenceGraph.Connected. v2/cmd/asoctl/pkg/importresources/importable_arm_resource.go (1 line): - line 479: err = s.PopulateFromARM(o, reflecthelpers.ValueOfPtr(armStatus)) // TODO: PopulateFromArm expects a value... ick v2/cmd/asoctl/internal/template/template.go (1 line): - line 49: // TODO: Maybe fix the YAML to be an actual envsubst template? v2/tools/generator/internal/codegen/pipeline/replace_anytype_with_json.go (1 line): - line 22: // TODO: remove this when it can handle them correctly. v2/pkg/genruntime/kubernetes_resource.go (1 line): - line 32: // TODO: I think we need this? v2/api/sql/v1/webhook/user_webhook_types.go (1 line): - line 135: // TODO: Note this should be kept in sync with admissions.ValidateWriteOnceProperties v2/api/subscription/customizations/alias_extensions.go (1 line): - line 60: // TODO: May need to set condition error here v2/tools/generator/internal/functions/data_function.go (1 line): - line 95: // TODO: We're not actually checking function structure here v2/tools/generator/internal/astmodel/renaming_visitor.go (1 line): - line 55: // TODO: Should this actually happen in TypeVisitor itself? v2/tools/generator/internal/functions/pure_function.go (1 line): - line 79: // TODO: We're not actually checking function structure here v2/tools/generator/internal/functions/index_registration_function.go (1 line): - line 40: // TODO: Technically you can derive the key from the chain so maybe should just pass one v2/tools/generator/internal/codegen/pipeline/delete_generated_code.go (1 line): - line 161: // TODO: There has to be a better way to do this? v2/tools/generator/internal/codegen/pipeline/crossplane_add_owner_properties.go (1 line): - line 32: // TODO: Do we need to rewrite this to deal with wrapping? v2/tools/generator/internal/astmodel/type_walker.go (1 line): - line 14: // TODO: This is conceptually kinda close to ReferenceGraph except more powerful. We may be able to refactor ReferenceGraph to use this v2/tools/generator/internal/functions/property_assignment_function_builder.go (1 line): - line 683: // TODO: Arrays, Maps, and look-through of InternalTypeName for aliases v2/internal/genericarmclient/generic_client.go (1 line): - line 42: // TODO: Need to do retryAfter detection in each call? v2/internal/annotations/parse.go (1 line): - line 58: // TODO: Could enforce character restrictions too but not bothering for now scripts/v2/make-mi-fic.py (1 line): - line 95: # TODO: Might almost be easier to use the Azure SDK here... v2/tools/generator/internal/functions/resource_function.go (1 line): - line 94: // TODO: We're not actually checking function structure here v2/tools/generator/internal/functions/chained_conversion_function.go (1 line): - line 192: // TODO: Modify bodyForConvert to return an error v2/api/resources/v1api20200601/permissions.go (1 line): - line 8: // TODO: it doesn't really matter where these are (as long as they're in 'apis', where is where we run controller-gen). v2/tools/generator/internal/codegen/pipeline/add_operator_spec.go (1 line): - line 258: // TODO: Consider actually using a real JSONPath library here...? v2/pkg/genruntime/convertible_spec.go (1 line): - line 49: // TODO: This is currently unused v2/internal/resolver/secret_resolver.go (1 line): - line 63: // TODO: Do we want to confirm that the type is Opaque? v2/api/dbformysql/v1/user_types.go (1 line): - line 180: // TODO: Where are these (and the spec flavors) called? Or are these just placehodlers for if/when there's a newer version? v2/pkg/genruntime/conditions/positive_condition_builder.go (1 line): - line 17: // TODO: name? v2/pkg/genruntime/arm_id.go (1 line): - line 25: // TODO: We really want these methods to be on ARMMetaObject itself -- should update code generator to make them at some point v2/internal/duration/duration.go (1 line): - line 29: TODO: remove after go v2: https://github.com/golang/go/issues/10275 v2/tools/generator/internal/config/type_configuration.go (1 line): - line 199: // TODO: Check we had an even number of nodes v2/internal/testcommon/kube_client_no_cache.go (1 line): - line 118: // TODO: This isn't doing the namespace-aware thing the client does. I don't think it matters for our case though v2/api/sql/v1/user_types.go (1 line): - line 151: // TODO: Where are these (and the spec flavors) called? Or are these just placehodlers for if/when there's a newer version? v2/internal/util/mysql/mysql.go (1 line): - line 100: row := db.QueryRowContext(ctx, "SELECT User FROM mysql.user WHERE User = ?", username) // TODO: Username here has to be Alias in AAD case, if there is one v2/cmd/asoctl/internal/crd/cleaner.go (1 line): - line 103: // TODO: test? v2/pkg/genruntime/configmaps/collector.go (1 line): - line 20: // TODO: This is similar to secrets.Collector. If this is updated, that should likely be as well v2/pkg/genruntime/group_version_kind_aware.go (1 line): - line 37: // TODO: Delete this function and its usages once we've reached a release sufficiently far from 2.4.0 (when beta versions were deprecated) v2/tools/generator/internal/codegen/pipeline/strip_descriptions.go (1 line): - line 34: // TODO: This should be used sparingly as a stop-gap if a CRD gets too large. v2/internal/util/cel/env_cache.go (1 line): - line 43: ttlcache.WithTTL[string, envCacheItem](24 * time.Hour), // TODO: Configurable? v2/tools/generator/internal/codegen/pipeline/add_api_version_enums.go (1 line): - line 59: name := astmodel.MakeInternalTypeName(pr, "APIVersion") // TODO: constant? v2/tools/generator/internal/functions/object_function.go (1 line): - line 88: // TODO: We're not actually checking function structure here