Skip to content
Merged
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,51 @@
# Release History

## 1.1.0b3 (2026-07-08)

### Features Added

- Client `MySQLManagementClient` added method `send_request`
- Client `MySQLManagementClient` added operation group `fabric_mirroring_settings`
- Enum `CreateMode` added member `RENAME`
- Added enum `FabricMirroringProvisioningState`
- Added model `FabricMirroringSetting`
- Added model `FabricMirroringSettingListResult`
- Added enum `FabricMirroringSettingsName`
- Added model `FabricMirroringSettingsProperties`
- Added enum `FabricMirroringState`
- Added operation group `FabricMirroringSettingsOperations`

### Breaking Changes

- This version introduces new hybrid models which have dual dictionary and model nature. Please follow https://aka.ms/azsdk/python/migrate/hybrid-models for migration.
- For the method breakings, please refer to https://aka.ms/azsdk/python/migrate/operations for migration.
- Model `AdvancedThreatProtection` moved instance variable `creation_time`, `state` and `provisioning_state` under property `properties` whose type is `AdvancedThreatProtectionProperties`
- Model `AdvancedThreatProtectionForUpdate` moved instance variable `state` under property `properties` whose type is `AdvancedThreatProtectionUpdateProperties`
- Model `AzureADAdministrator` moved instance variable `administrator_type`, `login`, `sid`, `tenant_id` and `identity_resource_id` under property `properties` whose type is `AdministratorProperties`
- Model `BackupAndExportResponse` moved instance variable `datasource_size_in_bytes`, `data_transferred_in_bytes` and `backup_metadata` under property `properties` whose type is `BackupAndExportResponseProperties`
- Model `Capability` moved instance variable `supported_geo_backup_regions`, `supported_flexible_server_editions`, `supported_server_versions` and `supported_features` under property `properties` whose type is `CapabilityPropertiesV2`
- Model `Configuration` moved instance variable `value`, `current_value`, `description`, `documentation_link`, `default_value`, `data_type`, `allowed_values`, `source`, `is_read_only`, `is_config_pending_restart` and `is_dynamic_config` under property `properties` whose type is `ConfigurationProperties`
- Model `ConfigurationForBatchUpdate` moved instance variable `value` and `source` under property `properties` whose type is `ConfigurationForBatchUpdateProperties`
- Model `Database` moved instance variable `charset` and `collation` under property `properties` whose type is `DatabaseProperties`
- Model `FirewallRule` moved instance variable `start_ip_address` and `end_ip_address` under property `properties` whose type is `FirewallRuleProperties`
- Model `LogFile` moved instance variable `size_in_kb`, `created_time`, `type_properties_type`, `last_modified_time` and `url` under property `properties` whose type is `LogFileProperties`
- Model `Maintenance` moved instance variable `maintenance_type`, `maintenance_state`, `maintenance_start_time`, `maintenance_end_time`, `maintenance_execution_start_time`, `maintenance_execution_end_time`, `maintenance_available_schedule_min_time`, `maintenance_available_schedule_max_time`, `maintenance_title`, `maintenance_description` and `provisioning_state` under property `properties` whose type is `MaintenanceProperties`
- Model `MaintenanceUpdate` moved instance variable `maintenance_start_time` under property `properties` whose type is `MaintenancePropertiesForUpdate`
- Model `PrivateEndpointConnection` moved instance variable `group_ids`, `private_endpoint`, `private_link_service_connection_state` and `provisioning_state` under property `properties` whose type is `PrivateEndpointConnectionProperties`
- Model `PrivateLinkResource` moved instance variable `group_id`, `required_members` and `required_zone_names` under property `properties` whose type is `PrivateLinkResourceProperties`
- Model `Server` moved instance variable `administrator_login`, `administrator_login_password`, `version`, `full_version`, `availability_zone`, `create_mode`, `source_server_resource_id`, `restore_point_in_time`, `replication_role`, `replica_capacity`, `data_encryption`, `state`, `fully_qualified_domain_name`, `database_port`, `storage`, `backup`, `high_availability`, `network`, `private_endpoint_connections`, `maintenance_policy`, `maintenance_window`, `import_source_properties` and `lower_case_table_names` under property `properties` whose type is `ServerProperties`
- Model `ServerBackup` moved instance variable `backup_type`, `completed_time` and `source` under property `properties` whose type is `ServerBackupProperties`
- Model `ServerBackupV2` moved instance variable `backup_name_v2`, `backup_type`, `completed_time`, `source` and `provisioning_state` under property `properties` whose type is `ServerBackupPropertiesV2`
- Model `ServerForUpdate` moved instance variable `administrator_login_password`, `version`, `storage`, `backup`, `high_availability`, `maintenance_policy`, `maintenance_window`, `replication_role`, `data_encryption` and `network` under property `properties` whose type is `ServerPropertiesForUpdate`
- Model `ValidateBackupResponse` moved instance variable `number_of_containers` under property `properties` whose type is `ValidateBackupResponseProperties`
- Method `ConfigurationsOperations.list_by_server` changed its parameter `tags`/`keyword`/`page`/`page_size` from `positional_or_keyword` to `keyword_only`
- Parameter `capability_set_name` of method `LocationBasedCapabilitySetOperations.get` is now required
- Method `PrivateLinkResourcesOperations.list_by_server` changed return type from `PrivateLinkResourceListResult` to `ItemPaged[_models.PrivateLinkResource]`

### Other Changes

- Deleted model `AdministratorListResult`/`AdvancedThreatProtectionListResult`/`CapabilitiesListResult`/`CapabilitySetsList`/`DatabaseListResult`/`FirewallRuleListResult`/`LogFileListResult`/`MaintenanceListResult`/`OperationListResult`/`PrivateLinkResourceListResult`/`ServerBackupListResult`/`ServerBackupV2ListResult`/`ServerListResult` which actually were not used by SDK users

## 1.1.0b2 (2025-12-12)

### Bugs Fixed
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<#
PostEmitter.ps1

Runs automatically after the TypeSpec code generation for
azure-mgmt-mysqlflexibleservers (see eng/tools/azure-sdk-tools/packaging_tools/
sdk_generator.py -> run_post_emitter_script).

Why this script exists
----------------------
In the swagger-based SDK, several LROs carried an explicit
`x-ms-long-running-operation-options` (final-state-via) that autorest turned
into `lro_options={'final-state-via': ...}` on the poller. The
http-client-python emitter does NOT emit `lro_options` at all, so after the
TypeSpec migration every generated LRO gets `_lro_options = None`, which breaks
tests/test_unit_compatibility.py for the operations that must keep their
original final-state-via.

This script re-injects the required `lro_options` into the generated
`ARMPolling(...)` / `AsyncARMPolling(...)` calls so the generated SDK stays
compatible with the previously released swagger-based SDK.

Operations that must stay `None` (the swagger directive deleted their options,
and the emitter already produces `None`) are intentionally left untouched.

To run manually:
powershell -ExecutionPolicy Bypass -File PostEmitter.ps1
#>

$ErrorActionPreference = 'Stop'
$root = $PSScriptRoot

# (OperationClass, begin-method) -> final-state-via value that the swagger SDK used.
$targets = @{
'AdvancedThreatProtectionSettingsOperations::begin_update' = 'location'
'AdvancedThreatProtectionSettingsOperations::begin_update_put' = 'location'
'AzureADAdministratorsOperations::begin_delete' = 'location'
'BackupAndExportOperations::begin_create' = 'location'
'ConfigurationsOperations::begin_batch_update' = 'azure-async-operation'
'LongRunningBackupOperations::begin_create' = 'azure-async-operation'
'ServersMigrationOperations::begin_cutover_migration' = 'azure-async-operation'
'ServersOperations::begin_delete' = 'azure-async-operation'
'ServersOperations::begin_detach_v_net' = 'azure-async-operation'
'ServersOperations::begin_reset_gtid' = 'azure-async-operation'
}

$files = @(
'azure\mgmt\mysqlflexibleservers\operations\_operations.py',
'azure\mgmt\mysqlflexibleservers\aio\operations\_operations.py'
)

# One poller site is expected per targeted operation, in each of the two files.
$expected = $targets.Count * $files.Count
$totalInjected = 0

foreach ($rel in $files) {
$path = Join-Path $root $rel
if (-not (Test-Path -LiteralPath $path)) {
throw "[PostEmitter] Generated file not found: $path"
}

$lines = Get-Content -LiteralPath $path
$currentClass = ''
$currentMethod = ''
$resolved = 0

for ($i = 0; $i -lt $lines.Length; $i++) {
$line = $lines[$i]

$mClass = [regex]::Match($line, '^class (\w+)')
if ($mClass.Success) {
$currentClass = $mClass.Groups[1].Value
$currentMethod = ''
continue
}

$mDef = [regex]::Match($line, '^\s*(?:async\s+)?def (begin_\w+)\s*\(')
if ($mDef.Success) {
$currentMethod = $mDef.Groups[1].Value
}

# Matches both `ARMPolling(...` and `AsyncARMPolling(...`, whether the call
# is on one line (fresh generation) or already wrapped by black (re-run).
if ($line -match 'ARMPolling\(') {
$key = "$currentClass::$currentMethod"
if ($targets.ContainsKey($key)) {
$value = $targets[$key]
# Only the fresh, single-line form needs injecting; an already
# patched (black-wrapped) site is just counted as resolved.
if ($line -match 'ARMPolling\(lro_delay, ' -and $line -notmatch 'lro_options=') {
$lines[$i] = $line -replace 'ARMPolling\(lro_delay, ', ("ARMPolling(lro_delay, lro_options={'final-state-via': '" + $value + "'}, ")
}
$resolved++
}
}
}

Set-Content -LiteralPath $path -Value $lines
Write-Output "[PostEmitter] $rel : $resolved lro_options sites resolved"
$totalInjected += $resolved
}

Write-Output "[PostEmitter] total resolved: $totalInjected (expected $expected)"
if ($totalInjected -ne $expected) {
throw "[PostEmitter] Expected $expected targeted poller sites but found $totalInjected. The generated code shape may have changed."
}

# Re-format the files we edited so the injected (long) ARMPolling lines match
# the repo's formatting (line length 120). `python -m black` runs the Black
# installed in this interpreter's environment (no dependence on PATH/Scripts).
& python -m black --version *> $null
if ($LASTEXITCODE -ne 0) {
Write-Output "[PostEmitter] black not found; installing it with pip"
& python -m pip install black -q
if ($LASTEXITCODE -ne 0) {
throw "[PostEmitter] Failed to install black"
}
}
foreach ($rel in $files) {
$path = Join-Path $root $rel
Write-Output "[PostEmitter] formatting $rel with black"
& python -m black $path -l 120
if ($LASTEXITCODE -ne 0) {
throw "[PostEmitter] black failed to format $path (exit code $LASTEXITCODE)"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Microsoft Azure SDK for Python

This is the Microsoft Azure Mysqlflexibleservers Management Client Library.
This package has been tested with Python 3.9+.
This package has been tested with Python 3.10+.
For a more complete view of Azure libraries, see the [azure sdk python release](https://aka.ms/azsdk/python/all).

## _Disclaimer_
Expand All @@ -12,7 +12,7 @@ _Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For

### Prerequisites

- Python 3.9+ is required to use this package.
- Python 3.10+ is required to use this package.
- [Azure subscription](https://azure.microsoft.com/free/)

### Install the package
Expand All @@ -24,7 +24,7 @@ pip install azure-identity

### Authentication

By default, [Azure Active Directory](https://aka.ms/awps/aad) token authentication depends on correct configuration of the following environment variables.
By default, [Microsoft Entra](https://learn.microsoft.com/entra/fundamentals/what-is-entra) token authentication depends on correct configuration of the following environment variables.

- `AZURE_CLIENT_ID` for Azure client ID.
- `AZURE_TENANT_ID` for Azure tenant ID.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
{
"apiVersion": "2025-06-01-preview",
"commit": "342e8540894e2ba2dc214cc30f3bb2ff2e21a50c",
"apiVersion": "2025-12-01-preview",
"apiVersions": {
"Microsoft.DBforMySQL": "2025-12-01-preview"
},
"commit": "8d521358db4a46b60acaa6aa4bfc26769e2ff6cc",
"repository_url": "https://github.com/Azure/azure-rest-api-specs",
"typespec_src": "specification/mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers",
"emitterVersion": "0.53.1",
"autorest": "3.10.2",
"use": [
"@autorest/python@6.43.0",
"@autorest/modelerfour@4.27.0"
],
"autorest_command": "autorest specification/mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers/readme.md --generate-sample=True --generate-test=True --include-x-ms-examples-original-file=True --package-mode=azure-mgmt --python --python-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-python/sdk --use=@autorest/python@6.43.0 --use=@autorest/modelerfour@4.27.0 --version=3.10.2 --version-tolerant=False",
"readme": "specification/mysql/resource-manager/Microsoft.DBforMySQL/FlexibleServers/readme.md"
"emitterVersion": "0.63.2",
"httpClientPythonVersion": "^0.34.1"
}
Loading
Loading