Skip to content
Open
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
10 changes: 0 additions & 10 deletions src/azure-cli/azure/cli/command_modules/mysql/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,6 @@ def load_arguments(self, _): # pylint: disable=too-many-statements, too-many-
help='Enable or disable Auto scale IOPS configuration for both the source and the newly provisioned replica server to enable faster provisioning.'
)

storage_redundancy_arg_type = CLIArgumentType(
arg_type=get_enum_type(['LocalRedundancy', 'ZoneRedundancy']),
options_list=['--storage-redundancy'],
help='Enable local redundancy or zone redundancy. Zone redundancy only supports Business Critical tier.'
)

maintenance_policy_patch_strategy_arg_type = CLIArgumentType(
arg_type=get_enum_type(['Regular', 'VirtualCanary']),
options_list=['--maintenance-policy-patch-strategy', '--patch-strategy'],
Expand Down Expand Up @@ -372,7 +366,6 @@ def load_arguments(self, _): # pylint: disable=too-many-statements, too-many-
c.argument('public_access', arg_type=public_access_create_arg_type)
c.argument('vnet', arg_type=vnet_arg_type)
c.argument('vnet_address_prefix', arg_type=vnet_address_prefix_arg_type)
c.argument('storage_redundancy', arg_type=storage_redundancy_arg_type, default="LocalRedundancy")
c.argument('subnet', arg_type=subnet_arg_type)
c.argument('subnet_address_prefix', arg_type=subnet_address_prefix_arg_type)
c.argument('private_dns_zone_arguments', private_dns_zone_arguments_arg_type)
Expand Down Expand Up @@ -431,7 +424,6 @@ def load_arguments(self, _): # pylint: disable=too-many-statements, too-many-
c.argument('vnet_address_prefix', arg_type=vnet_address_prefix_arg_type)
c.argument('subnet', arg_type=subnet_arg_type)
c.argument('subnet_address_prefix', arg_type=subnet_address_prefix_arg_type)
c.argument('storage_redundancy', arg_type=storage_redundancy_arg_type)
c.argument('private_dns_zone_arguments', private_dns_zone_arguments_arg_type)
c.argument('zone', arg_type=zone_arg_type)
c.argument('tags', tags_type)
Expand Down Expand Up @@ -464,7 +456,6 @@ def load_arguments(self, _): # pylint: disable=too-many-statements, too-many-
c.argument('storage_gb', arg_type=storage_gb_arg_type)
c.argument('auto_grow', arg_type=auto_grow_arg_type)
c.argument('accelerated_logs', arg_type=accelerated_logs_arg_type)
c.argument('storage_redundancy', arg_type=storage_redundancy_arg_type)
c.argument('backup_retention', arg_type=mysql_backup_retention_arg_type)
c.argument('geo_redundant_backup', arg_type=geo_redundant_backup_arg_type)
c.argument('public_access', options_list=['--public-access'], arg_type=get_enum_type(['Enabled', 'Disabled']), help='Determines the public access. ')
Expand Down Expand Up @@ -594,7 +585,6 @@ def load_arguments(self, _): # pylint: disable=too-many-statements, too-many-
c.argument('sku_name', arg_type=sku_name_arg_type)
c.argument('storage_gb', arg_type=storage_gb_arg_type)
c.argument('iops', arg_type=iops_arg_type)
c.argument('storage_redundancy', arg_type=storage_redundancy_arg_type, default="LocalRedundancy")
c.argument('faster_provisioning', arg_type=faster_provisioning_arg_type)
c.argument('database_port', arg_type=database_port_arg_type)
c.argument('backup_retention', arg_type=mysql_backup_retention_arg_type)
Expand Down
47 changes: 16 additions & 31 deletions src/azure-cli/azure/cli/command_modules/mysql/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,18 +335,13 @@ def flexible_server_version_upgrade(cmd, client, resource_group_name, server_nam
# pylint: disable=too-many-locals, too-many-statements, raise-missing-from
# Region create without args
def flexible_server_create(cmd, client,
resource_group_name=None, server_name=None,
location=None, backup_retention=None,
sku_name=None, tier=None,
storage_gb=None, administrator_login=None,
administrator_login_password=None, version=None,
tags=None, database_name=None, database_port=None,
subnet=None, subnet_address_prefix=None, vnet=None, vnet_address_prefix=None,
private_dns_zone_arguments=None, public_access=None,
high_availability=None, zone=None, standby_availability_zone=None,
iops=None, auto_grow=None, auto_scale_iops=None, accelerated_logs=None, storage_redundancy=None,
geo_redundant_backup=None, byok_identity=None, backup_byok_identity=None, byok_key=None, backup_byok_key=None,
backup_interval=None, maintenance_policy_patch_strategy=None, yes=False):
resource_group_name=None, server_name=None, location=None, backup_retention=None, sku_name=None,
tier=None, storage_gb=None, administrator_login=None, administrator_login_password=None, version=None,
tags=None, database_name=None, database_port=None, subnet=None, subnet_address_prefix=None, vnet=None,
vnet_address_prefix=None, private_dns_zone_arguments=None, public_access=None, high_availability=None,
zone=None, standby_availability_zone=None, iops=None, auto_grow=None, auto_scale_iops=None,
accelerated_logs=None, geo_redundant_backup=None, byok_identity=None, backup_byok_identity=None,
byok_key=None, backup_byok_key=None, backup_interval=None, maintenance_policy_patch_strategy=None, yes=False):
# Generate missing parameters
location, resource_group_name, server_name = generate_missing_parameters(cmd, location, resource_group_name, server_name)
db_context = DbContext(
Expand Down Expand Up @@ -416,8 +411,7 @@ def flexible_server_create(cmd, client,
iops=iops,
auto_grow=auto_grow,
auto_io_scaling=auto_scale_iops,
log_on_disk=accelerated_logs,
storage_redundancy=storage_redundancy)
log_on_disk=accelerated_logs)

backup = models.Backup(backup_retention_days=backup_retention, backup_interval_hours=backup_interval, geo_redundant_backup=geo_redundant_backup)

Expand Down Expand Up @@ -712,8 +706,8 @@ def flexible_server_import_replica_stop(client, resource_group_name, server_name
def flexible_server_restore(cmd, client, resource_group_name, server_name, source_server, restore_point_in_time=None, zone=None,
no_wait=False, subnet=None, subnet_address_prefix=None, vnet=None, vnet_address_prefix=None,
private_dns_zone_arguments=None, public_access=None, yes=False, sku_name=None, tier=None, database_port=None,
storage_gb=None, auto_grow=None, accelerated_logs=None, faster_restore=None, storage_redundancy=None,
backup_retention=None, geo_redundant_backup=None, tags=None):
storage_gb=None, auto_grow=None, accelerated_logs=None, faster_restore=None, backup_retention=None,
geo_redundant_backup=None, tags=None):
provider = 'Microsoft.DBforMySQL'
server_name = server_name.lower()

Expand Down Expand Up @@ -771,9 +765,6 @@ def flexible_server_restore(cmd, client, resource_group_name, server_name, sourc
else:
auto_io_scaling = _determine_auto_io_scaling_by_faster_restore(faster_restore)

if not storage_redundancy:
storage_redundancy = source_server_object.storage.storage_redundancy

if not backup_retention:
backup_retention = source_server_object.backup.backup_retention_days
else:
Expand All @@ -796,8 +787,7 @@ def flexible_server_restore(cmd, client, resource_group_name, server_name, sourc
iops_input=source_server_object.storage.iops, tier=tier, sku_name=sku_name)

storage = models.Storage(storage_size_gb=storage_gb, iops=iops, auto_grow=auto_grow,
auto_io_scaling=auto_io_scaling,
log_on_disk=accelerated_logs, storage_redundancy=storage_redundancy)
auto_io_scaling=auto_io_scaling, log_on_disk=accelerated_logs)

backup = models.Backup(backup_retention_days=backup_retention, geo_redundant_backup=geo_redundant_backup)

Expand Down Expand Up @@ -860,8 +850,7 @@ def flexible_server_restore(cmd, client, resource_group_name, server_name, sourc
def flexible_server_georestore(cmd, client, resource_group_name, server_name, source_server, location, zone=None, no_wait=False,
subnet=None, subnet_address_prefix=None, vnet=None, vnet_address_prefix=None, tags=None,
private_dns_zone_arguments=None, public_access=None, yes=False, sku_name=None, tier=None,
storage_gb=None, auto_grow=None, accelerated_logs=None, storage_redundancy=None,
backup_retention=None, geo_redundant_backup=None):
storage_gb=None, auto_grow=None, accelerated_logs=None, backup_retention=None, geo_redundant_backup=None):
provider = 'Microsoft.DBforMySQL'
server_name = server_name.lower()

Expand Down Expand Up @@ -908,9 +897,6 @@ def flexible_server_georestore(cmd, client, resource_group_name, server_name, so
else:
mysql_accelerated_logs_validator(accelerated_logs, tier)

if not storage_redundancy:
storage_redundancy = source_server_object.storage.storage_redundancy

if not backup_retention:
backup_retention = source_server_object.backup.backup_retention_days
else:
Expand All @@ -937,7 +923,7 @@ def flexible_server_georestore(cmd, client, resource_group_name, server_name, so

storage = models.Storage(storage_size_gb=storage_gb, iops=iops, auto_grow=auto_grow,
auto_io_scaling=source_server_object.storage.auto_io_scaling,
log_on_disk=accelerated_logs, storage_redundancy=storage_redundancy)
log_on_disk=accelerated_logs)

backup = models.Backup(backup_retention_days=backup_retention, geo_redundant_backup=geo_redundant_backup)

Expand Down Expand Up @@ -1320,8 +1306,8 @@ def flexible_parameter_update_batch(client, server_name, resource_group_name, so
# Custom functions for server replica, will add MySQL part after backend ready in future
def flexible_replica_create(cmd, client, resource_group_name, source_server, replica_name, location=None, tags=None, sku_name=None,
private_dns_zone_arguments=None, vnet=None, subnet=None, zone=None, public_access=None, no_wait=False,
storage_gb=None, iops=None, storage_redundancy=None, faster_provisioning=None, geo_redundant_backup=None,
backup_retention=None, tier=None, database_port=None):
storage_gb=None, iops=None, faster_provisioning=None, geo_redundant_backup=None, backup_retention=None,
tier=None, database_port=None):
provider = 'Microsoft.DBforMySQL'
replica_name = replica_name.lower()

Expand Down Expand Up @@ -1376,8 +1362,7 @@ def flexible_replica_create(cmd, client, resource_group_name, source_server, rep
storage = models.Storage(storage_size_gb=storage_gb,
iops=iops,
auto_grow="Enabled",
auto_io_scaling=auto_io_scaling,
storage_redundancy=storage_redundancy)
auto_io_scaling=auto_io_scaling)

backup = models.Backup(backup_retention_days=backup_retention, geo_redundant_backup=geo_redundant_backup)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,11 @@ def _test_flexible_server_mgmt(self, database_engine, resource_group):
backup_retention = 7
database_name = 'testdb'
server_name = self.create_random_name(SERVER_NAME_PREFIX, SERVER_NAME_MAX_LENGTH)
storage_redundancy = "LocalRedundancy"

self.cmd('{} flexible-server create -g {} -n {} --backup-retention {} --sku-name {} --tier {} \
--storage-size {} --storage-redundancy {} -u {} --version {} --tags keys=3 --database-name {} --public-access None'
--storage-size {} -u {} --version {} --tags keys=3 --database-name {} --public-access None'
.format(database_engine, resource_group, server_name, backup_retention, sku_name, tier, storage_size,
storage_redundancy, 'dbadmin', version, database_name))
'dbadmin', version, database_name))

basic_info = self.cmd('{} flexible-server show -g {} -n {}'.format(database_engine, resource_group, server_name)).get_output_in_json()
self.assertEqual(basic_info['name'], server_name)
Expand All @@ -162,7 +161,6 @@ def _test_flexible_server_mgmt(self, database_engine, resource_group):
self.assertEqual(basic_info['sku']['tier'], tier)
self.assertEqual(basic_info['version'], version)
self.assertEqual(basic_info['storage']['storageSizeGb'], storage_size)
self.assertEqual(basic_info['storage']['storageRedundancy'], storage_redundancy)
self.assertEqual(basic_info['storage']['logOnDisk'], "Disabled")
self.assertEqual(basic_info['backup']['backupRetentionDays'], backup_retention)

Expand Down Expand Up @@ -447,12 +445,9 @@ def _test_flexible_server_restore_mgmt(self, database_engine, resource_group):
new_vnet_2 = self.create_random_name('VNET', SERVER_NAME_MAX_LENGTH)
new_subnet_2 = self.create_random_name('SUBNET', SERVER_NAME_MAX_LENGTH)

storage_redundancy = "LocalRedundancy"

self.cmd('{} flexible-server create -g {} -n {} --storage-redundancy {} --vnet {} --subnet {} -l {} --yes'.format(
database_engine, resource_group, source_server, storage_redundancy, source_vnet, source_subnet, location))
self.cmd('{} flexible-server create -g {} -n {} --vnet {} --subnet {} -l {} --yes'.format(
database_engine, resource_group, source_server, source_vnet, source_subnet, location))
result = self.cmd('{} flexible-server show -g {} -n {}'.format(database_engine, resource_group, source_server)).get_output_in_json()
self.assertEqual(result['storage']['storageRedundancy'], storage_redundancy)

# Wait until snapshot is created
current_time = datetime.utcnow().replace(tzinfo=tzutc()).isoformat()
Expand Down Expand Up @@ -569,8 +564,6 @@ def _test_flexible_server_georestore_mgmt(self, database_engine, resource_group)
new_vnet_2 = self.create_random_name('VNET', SERVER_NAME_MAX_LENGTH)
new_subnet_2 = self.create_random_name('SUBNET', SERVER_NAME_MAX_LENGTH)

storage_redundancy = "LocalRedundancy"

self.cmd('{} flexible-server create -g {} -n {} --vnet {} --subnet {} -l {} --geo-redundant-backup Enabled --yes'.format(
database_engine, resource_group, source_server, source_vnet, source_subnet, location))
result = self.cmd('{} flexible-server show -g {} -n {}'.format(database_engine, resource_group, source_server)).get_output_in_json()
Expand All @@ -587,12 +580,9 @@ def _test_flexible_server_georestore_mgmt(self, database_engine, resource_group)
.format(database_engine, resource_group, target_location, target_server_default, source_server), expect_failure=True)

# 2. vnet to public access
restore_result = self.cmd('{} flexible-server geo-restore -g {} -l {} --name {} --source-server {} --storage-redundancy {} --public-access enabled'
.format(database_engine, resource_group, target_location, target_server_public_access, source_server,
storage_redundancy)).get_output_in_json()
self.assertEqual(restore_result['storage']['storageRedundancy'], storage_redundancy)

#self.assertEqual(restore_result['network']['publicNetworkAccess'], 'Enabled')
restore_result = self.cmd('{} flexible-server geo-restore -g {} -l {} --name {} --source-server {} --public-access enabled'
.format(database_engine, resource_group, target_location, target_server_public_access, source_server)
).get_output_in_json()
self.assertEqual(str(restore_result['location']).replace(' ', '').lower(), target_location)

# 3. vnet to different vnet
Expand Down Expand Up @@ -1280,12 +1270,11 @@ def _test_flexible_server_cross_region_replica_mgmt(self, database_engine, resou
primary_role = 'None'
replica_role = 'Replica'
private_dns_param = 'privateDnsZoneResourceId'
storage_redundancy = "LocalRedundancy"

master_server = self.create_random_name(SERVER_NAME_PREFIX, SERVER_NAME_MAX_LENGTH)
replicas = [self.create_random_name(F'azuredbclirep{i+1}', SERVER_NAME_MAX_LENGTH) for i in range(2)]
self.cmd('{} flexible-server create -g {} --name {} -l {} --storage-size {} --tier GeneralPurpose --sku-name {} --storage-redundancy {} --public-access none'
.format(database_engine, resource_group, master_server, master_location, 256, DEFAULT_GENERAL_PURPOSE_SKU, storage_redundancy))
self.cmd('{} flexible-server create -g {} --name {} -l {} --storage-size {} --tier GeneralPurpose --sku-name {} --public-access none'
.format(database_engine, resource_group, master_server, master_location, 256, DEFAULT_GENERAL_PURPOSE_SKU))
result = self.cmd('{} flexible-server show -g {} --name {} '
.format(database_engine, resource_group, master_server),
checks=[JMESPathCheck('replicationRole', primary_role)]).get_output_in_json()
Expand Down