Skip to content

Commit fc0a56f

Browse files
author
Matthew Boentoro
committed
[RDBMS] az postgres flexible-server update: add user confirmation on certain update operations
1 parent 05a5d8f commit fc0a56f

File tree

5 files changed

+1969
-1576
lines changed

5 files changed

+1969
-1576
lines changed

src/azure-cli/azure/cli/command_modules/rdbms/flexible_server_custom_postgres.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,8 @@ def flexible_server_update_custom_func(cmd, client, instance,
345345
yes=yes)
346346
instance.network.private_dns_zone_arm_resource_id = private_dns_zone_id
347347

348+
_confirm_restart_server(instance, sku_name, storage_gb, yes)
349+
348350
if sku_name:
349351
instance.sku.name = sku_name
350352

@@ -1789,6 +1791,27 @@ def _update_login(server_name, resource_group_name, auth_config, password_auth,
17891791
return administrator_login, administrator_login_password
17901792

17911793

1794+
# pylint: disable=chained-comparison
1795+
def _confirm_restart_server(instance, sku_name, storage_gb, yes):
1796+
show_confirmation = False
1797+
1798+
# check if sku_name is changed
1799+
if sku_name and sku_name != instance.sku.name:
1800+
show_confirmation = True
1801+
1802+
# check if storage_gb is exceeding 4096 threshold
1803+
if storage_gb and storage_gb > 4096 and instance.storage.storage_size_gb <= 4096 and instance.storage.type == "":
1804+
show_confirmation = True
1805+
1806+
# check if storage_gb changed for PremiumV2_LRS
1807+
if storage_gb and instance.storage.type == "PremiumV2_LRS" and instance.storage.storage_size_gb != storage_gb:
1808+
show_confirmation = True
1809+
1810+
if not yes and show_confirmation:
1811+
user_confirmation("You are trying to change the compute or the size of storage assigned to your server in a way that \
1812+
requires a server restart. During the restart, you'll experience some downtime of the server. Do you want to proceed?", yes=yes)
1813+
1814+
17921815
# pylint: disable=too-many-instance-attributes, too-few-public-methods
17931816
class DbContext:
17941817
def __init__(self, cmd=None, azure_sdk=None, logging_name=None, cf_firewall=None, cf_db=None,

src/azure-cli/azure/cli/command_modules/rdbms/tests/latest/recordings/test_flexible_server_ssdv2_mgmt.yaml

Lines changed: 271 additions & 271 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/rdbms/tests/latest/recordings/test_postgres_flexible_server_mgmt.yaml

Lines changed: 1278 additions & 816 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/rdbms/tests/latest/recordings/test_postgres_flexible_server_mgmt_case_insensitive.yaml

Lines changed: 393 additions & 485 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/rdbms/tests/latest/test_rdbms_flexible_commands.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def _test_flexible_server_mgmt(self, database_engine, resource_group):
164164
self.cmd('{} flexible-server update -g {} -n {} -p randompw321##@!'
165165
.format(database_engine, resource_group, server_name))
166166

167-
self.cmd('{} flexible-server update -g {} -n {} --storage-size 256'
167+
self.cmd('{} flexible-server update -g {} -n {} --storage-size 256 --yes'
168168
.format(database_engine, resource_group, server_name),
169169
checks=[JMESPathCheck('storage.storageSizeGb', 256 )])
170170

@@ -178,7 +178,7 @@ def _test_flexible_server_mgmt(self, database_engine, resource_group):
178178

179179
tier = 'MemoryOptimized'
180180
sku_name = memory_optimized_sku
181-
self.cmd('{} flexible-server update -g {} -n {} --tier {} --sku-name {}'
181+
self.cmd('{} flexible-server update -g {} -n {} --tier {} --sku-name {} --yes'
182182
.format(database_engine, resource_group, server_name, tier, sku_name),
183183
checks=[JMESPathCheck('sku.tier', tier),
184184
JMESPathCheck('sku.name', sku_name)])
@@ -350,7 +350,7 @@ def _test_flexible_server_mgmt_case_insensitive(self, database_engine, resource_
350350
sku_name = 'Standard_E2ds_v4'
351351
sku_name_lower = sku_name.lower()
352352

353-
self.cmd('{} flexible-server update -g {} -n {} --tier {} --sku-name {}'
353+
self.cmd('{} flexible-server update -g {} -n {} --tier {} --sku-name {} --yes'
354354
.format(database_engine, resource_group, server_name, tier_lower, sku_name_lower),
355355
checks=[JMESPathCheck('sku.tier', tier),
356356
JMESPathCheck('sku.name', sku_name)])
@@ -407,7 +407,7 @@ def _test_flexible_server_ssdv2_mgmt(self, database_engine, resource_group):
407407
self.assertEqual(basic_info['backup']['backupRetentionDays'], backup_retention)
408408

409409
# test updates
410-
self.cmd('{} flexible-server update -g {} -n {} --storage-size 300'
410+
self.cmd('{} flexible-server update -g {} -n {} --storage-size 300 --yes'
411411
.format(database_engine, resource_group, server_name),
412412
checks=[JMESPathCheck('storage.storageSizeGb', 300 )])
413413

0 commit comments

Comments
 (0)