diff --git a/src/azure-cli/azure/cli/command_modules/postgresql/_breaking_change.py b/src/azure-cli/azure/cli/command_modules/postgresql/_breaking_change.py index 1fa93326ae6..32a99548f86 100644 --- a/src/azure-cli/azure/cli/command_modules/postgresql/_breaking_change.py +++ b/src/azure-cli/azure/cli/command_modules/postgresql/_breaking_change.py @@ -53,11 +53,6 @@ def _register_network_resource_breaking_change(command_name): message='Long term retention command group will be removed. ' 'For more information, open a support incident.') -# Name of new backup no longer required in backup create command -register_other_breaking_change('postgres flexible-server backup create', - message='The argument for backup name will no longer be required ' - 'in next breaking change release(2.86.0) scheduled for May 2026.') - # LTR command argument changes register_other_breaking_change('postgres flexible-server long-term-retention', message='The --backup-name/-b argument has been deprecated and will be removed ' diff --git a/src/azure-cli/azure/cli/command_modules/postgresql/commands/backup_commands.py b/src/azure-cli/azure/cli/command_modules/postgresql/commands/backup_commands.py index 9ac2bf9b353..b2cf953892b 100644 --- a/src/azure-cli/azure/cli/command_modules/postgresql/commands/backup_commands.py +++ b/src/azure-cli/azure/cli/command_modules/postgresql/commands/backup_commands.py @@ -4,16 +4,39 @@ # -------------------------------------------------------------------------------------------- # pylint: disable=unused-argument, line-too-long +from datetime import datetime from azure.cli.core.util import user_confirmation from knack.log import get_logger from ..utils.validators import validate_resource_group, validate_backup_name logger = get_logger(__name__) +_BACKUP_NAME_PREFIX = "ondemandbackup" -def backup_create_func(client, resource_group_name, server_name, backup_name): + +def _generate_backup_name(client, resource_group_name, server_name): + existing_backups = client.list_by_server(resource_group_name, server_name) + existing_names = {backup.name for backup in existing_backups} + + on_demand_count = sum(1 for name in existing_names if name.startswith(_BACKUP_NAME_PREFIX)) + + date_str = datetime.utcnow().strftime("%m%d%Y") + backup_name = f"{_BACKUP_NAME_PREFIX}-{date_str}-{on_demand_count + 1}" + + if backup_name in existing_names: + backup_name = f"{_BACKUP_NAME_PREFIX}-{date_str}-{on_demand_count + 2}" + + return backup_name + + +def backup_create_func(client, resource_group_name, server_name, backup_name=None): validate_resource_group(resource_group_name) - validate_backup_name(backup_name) + + if not backup_name: + backup_name = _generate_backup_name(client, resource_group_name, server_name) + logger.warning("No backup name provided. Using generated name: %s", backup_name) + else: + validate_backup_name(backup_name) return client.begin_create( resource_group_name,