v2.0.0-beta.4 Breaking Changes
In the beta.4
release of Azure Service Operator (ASO) we are pivoting to using Azure Swagger API Specifications as the sole source of truth for our code generator. This change brings with it a significant improvement in fidelity - the code we generate is now much closer to what the Azure Swagger API Specifications describe.
Unfortunately, this change also brings with it a number of breaking changes.
We expect that most users will find their resources are unaffected by these changes. However, if you are using a resource that is affected, you will need to take action to migrate your resources to the new format.
The impact of these breaking changes falls into two categories, immediate migration required and upgrade when modified, distinguished by when you need to take remedial action.
As a part of upgrading ASO in your cluster, you will need to modify these resources as described. In all cases, the changes are straightforward and can be done with a simple text editor.
The process to follow is as follows:
- Annotate the resource with
serviceoperator.azure.com/reconcile-policy: skip
to prevent ASO from trying to reconcile the resource while you are upgrading.
- Download the current YAML for the resource using
kubectl
if you don’t have it elsewhere.
- Delete the resource from your cluster using
kubectl delete
. Your Azure resource will be left untouched because of the reconcile-policy
annotation you added above.
- Upgrade ASO in your cluster.
- Modify the YAML for your resource to address the breaking changes noted below.
- Apply the updated YAML to your cluster using
kubectl apply
. If any errors occur, address them.
- If the
reconcile-policy
annotation is still present, remove the it from the resource.
If you are updating multiple resources, you may want to apply the reconcile-policy: skip
annotation to all the resources up front, and then remove it only once you’ve successfully applied all the changes to all the resources.
Upgrade when modified
You can upgrade ASO in your cluster and the resource will continue to operate normally. If you modify the resource in the future you will need to make the indicated changes at that point.
Types of breaking changes
We’ve identified a number of different cases where breaking changes have occurred. The following table describes the different types of breaking changes and how they affect you.
Type |
Description |
Impact |
Discriminator |
The discriminator value for polymorphic types has been changed to match the name of the property used to specify that option. Previously we were synthesizing a name based on other factors, resulting in longer property names that did not appear in the ARM/Bicep documentation.
Example:
DeliveryRuleCacheExpiration renamed to CacheExpiration |
Immediate migration |
Enumeration |
Properties that previously had a base type but no enumeration values have been updated to include the enumeration values.
Example:
KubernetesCluster.KubernetesVersion . |
Immediate migration for malformed resources only |
Inlined |
Objects that were incorrectly generated as nested properties have been inlined.
Example: Properties found in DeadLetterDestination.Properties have been promoted to DeadLetterDestination . |
Immediate migration |
Reference Detection |
Id fields now correctly identified as references which now allow for linking to a resource in Kubernetes instead of only in Azure.
Example: Property VirtualMachineProfile.NetworkProfile.Id has been changed to VirtualMachineProfile.NetworkProfile.Reference . |
Immediate migration |
Status Only |
Status properties that cannot be set by the end user on a Spec that were included in the Spec in error.
Example:
Identity.UserAssignedIdentities |
Upgrade when modified |
Subresource |
Sub-resources that were incorrectly inlined into the parent resource have been moved to a separate resource.
Example:
VirtualNetworkGateway.VirtualNetworkExtendedLocation |
Immediate migration |
Unused |
Properties that previously included on Spec but actually had no function have been removed.
Examples:
Location on child resources that inherit their actual location from their parent resource.
Tags on resources that don’t support tags. |
Upgrade when modified |
Validation |
Validation rules have been tightened, or added to properties that previously had no validation rules.
Example: The property BatchAccount.AzureName now has a more restrictive regular expression. |
Upgrade when modified |
Authorization
RoleAssignment
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
Batch
BatchAccount
Property |
Change |
Reason |
AzureName |
Restricted |
Validation |
Cache v2020-12-01
RedisFirewallRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
RedisLinkedServer
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
RedisPatchSchedule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
Cache v2021-03-01
RedisEnterpriseDatabase
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
CDN v2021-06-01
ProfilesEndpoint
Property Path |
Change |
Reason |
DeliveryPolicy.Rules.Actions.DeliveryRuleCacheExpiration |
Renamed to CacheExpiration |
Discriminator |
DeliveryPolicy.Rules.Actions.DeliveryRuleCacheKeyQueryString |
Renamed to CacheKeyQueryString |
Discriminator |
DeliveryPolicy.Rules.Actions.DeliveryRuleRequestHeader |
Renamed to ModifyRequestHeader |
Discriminator |
DeliveryPolicy.Rules.Actions.DeliveryRuleResponseHeader |
Renamed to ModifyResponseHeader |
Discriminator |
DeliveryPolicy.Rules.Actions.DeliveryRuleRouteConfigurationOverride |
Renamed to RouteConfigurationOverride |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleClientPort |
Renamed to ClientPort |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleCookies |
Renamed to Cookies |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleHostName |
Renamed to HostName |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleHttpVersion |
Renamed to HttpVersion |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleIsDevice |
Renamed to IsDevice |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRulePostArgs |
Renamed to PostArgs |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleQueryString |
Renamed to QueryString |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleRemoteAddress |
Renamed to RemoteAddress |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleRequestBody |
Renamed to RequestBody |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleRequestHeader |
Renamed to RequestHeader |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleRequestMethod |
Renamed to RequestMethod |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleRequestScheme |
Renamed to RequestScheme |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleRequestUri |
Renamed to RequestUri |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleServerPort |
Renamed to ServerPort |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleSslProtocol |
Renamed to SslProtocol |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleUrlFileExtension |
Renamed to UrlFileExtension |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleUrlFileName |
Renamed to UrlFileName |
Discriminator |
DeliveryPolicy.Rules.Conditions.DeliveryRuleUrlPath |
Renamed to UrlPath |
Discriminator |
Compute v2020-12-01
VirtualMachineScaleSet
Property Path |
Change |
Reason |
VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations.Id |
Renamed to Reference |
Reference Detection |
VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations.IpConfigurations.Id |
Renamed to Reference |
Reference Detection |
Compute v2022-03-01
VirtualMachineScaleSet
Property Path |
Change |
Reason |
VirtualMachineProfile.NetworkProfile.Id |
Renamed to Reference |
Reference Detection |
VirtualMachineProfile.NetworkProfile.IpConfigurations.Id |
Renamed to Reference |
Reference Detection |
Container Service
ManagedCluster
Property Path |
Change |
Reason |
Identity.UserAssignedIdentities |
Removed |
Status Only |
ManagedClustersAgentPool
Property |
Change |
Reason |
Location |
Removed |
Unused |
Configuration
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
Database
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
Server
Property Path |
Change |
Reason |
Properties.ServerPropertiesForDefaultCreate |
Renamed to Default |
Discriminator |
Properties.ServerPropertiesForGeoRestore |
Renamed to GeoRestore |
Discriminator |
Properties.ServerPropertiesForReplica |
Renamed to Replica |
Discriminator |
Properties.ServerPropertiesForRestore |
Renamed to PointInTimeRestore |
Discriminator |
FlexibleServersDatabase
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
FlexibleServersFirewallRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
DbForPostgreSQL v2021-06-01
FlexibleServersConfiguration
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
FlexibleServersDatabase
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
FlexibleServersFirewallRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
EventGrid v2020-06-01
Domain
Property Path |
Change |
Reason |
InputSchemaMapping.InputSchemaMappingType |
Removed |
Discriminator |
InputSchemaMapping.Properties |
Renamed to Json |
Discriminator |
DomainsTopic
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
EventSubscription
Property Path |
Change |
Reason |
DeadLetterDestination.Properties |
Promoted to parent |
Inlined |
Destination.AzureFunction.Properties |
Promoted to parent |
Inlined |
Destination.EventHub.Properties |
Promoted to parent |
Inlined |
Destination.HybridConnection.Properties |
Promoted to parent |
Inlined |
Destination.ServiceBusQueue.Properties |
Promoted to parent |
Inlined |
Destination.ServiceBusTopic.Properties |
Promoted to parent |
Inlined |
Destination.StorageQueue.Properties |
Promoted to parent |
Inlined |
Destination.WebHook.Properties |
Promoted to parent |
Inlined |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
EventHub v2021-11-01
Namespace
Property |
Change |
Reason |
PrivateEndpointConnections |
Removed |
Status Only |
NamespacesAuthorizationRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
NamespacesEventhub
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
NamespacesEventhubsAuthorizationRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
NamespacesEventhubsConsumerGroup
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
MachineLearningServices v2021-07-01
Workspace
Property Path |
Change |
Reason |
Identity.UserAssignedIdentities |
Removed |
Status Only |
WorkspacesCompute
Property Path |
Change |
Reason |
Identity.UserAssignedIdentities |
Removed |
Status Only |
WorkspacesConnection
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
Network v2020-11-01
LoadBalancer
Property Path |
Change |
Reason |
BackendAddressPools.Location |
Removed |
Unused |
NetworkSecurityGroupsSecurityRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
VirtualNetworkGateway
Property |
Change |
Reason |
VirtualNetworkExtendedLocation |
Renamed to ExtendedLocation |
Discriminator |
Operational Insights v2021-06-01
Workspace
Property Path |
Change |
Reason |
Sku.CapacityReservationLevel |
Restricted |
Validation |
ServiceBus v2021-10-01
NamespacesQueue
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
NamespacesTopic
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
NamespacesTopicsSubscription
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
NamespacesTopicsSubscriptionsRule
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
SignalRService v2021-11-01
Property Path |
Change |
Reason |
Identity.UserAssignedIdentities |
Removed |
Status Only |
Storage v2021-04-01
StorageAccountsBlobService
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
StorageAccountsBlobServicesContainer
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
StorageAccountsManagementPolicy
Property |
Change |
Reason |
Tags |
Removed |
Unused |
StorageAccountsQueueService
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
StorageAccountsQueueServicesQueue
Property |
Change |
Reason |
Location |
Removed |
Unused |
Tags |
Removed |
Unused |
Web v2022-03-1
Site
Property Path |
Change |
Reason Only |
Identity.UserAssignedIdentities |
Removed |
Status Only |