Skip to content

Commit 2de78ec

Browse files
author
Matthew Boentoro
committed
[RDBMS] az postgres flexible-server create: Set default sku to be coming from location capability API
1 parent c25c29d commit 2de78ec

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ def _flexible_server_params(command_group):
595595
# Add create mode as a parameter
596596
if command_group == 'postgres':
597597
c.argument('tier', default='GeneralPurpose', arg_type=tier_arg_type)
598-
c.argument('sku_name', default='Standard_D2s_v3', arg_type=sku_name_arg_type)
598+
c.argument('sku_name', arg_type=sku_name_arg_type)
599599
c.argument('storage_gb', default='128', arg_type=storage_gb_arg_type)
600600
c.argument('version', default='16', arg_type=version_arg_type)
601601
c.argument('backup_retention', default=7, arg_type=pg_backup_retention_arg_type)

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import os
99
import json
1010
from importlib import import_module
11+
from functools import cmp_to_key
1112
import re
1213
from urllib.parse import quote
1314
from urllib.request import urlretrieve
@@ -33,15 +34,16 @@
3334
cf_postgres_flexible_config, cf_postgres_flexible_adadmin
3435
from ._flexible_server_util import generate_missing_parameters, resolve_poller, \
3536
generate_password, parse_maintenance_window, get_current_time, build_identity_and_data_encryption, \
36-
_is_resource_name, get_tenant_id, get_case_insensitive_key_value, get_enum_value_true_false
37+
_is_resource_name, get_tenant_id, get_case_insensitive_key_value, get_enum_value_true_false, \
38+
get_postgres_tiers, get_postgres_skus
3739
from ._flexible_server_location_capabilities_util import get_postgres_location_capability_info
3840
from ._util import get_index_tuning_settings_map
3941
from .flexible_server_custom_common import create_firewall_rule
4042
from .flexible_server_virtual_network import prepare_private_network, prepare_private_dns_zone, prepare_public_network
4143
from .validators import pg_arguments_validator, validate_server_name, validate_and_format_restore_point_in_time, \
4244
validate_postgres_replica, validate_georestore_network, pg_byok_validator, validate_migration_runtime_server, \
4345
validate_resource_group, check_resource_group, validate_citus_cluster, cluster_byok_validator, validate_backup_name, \
44-
validate_virtual_endpoint_name_availability
46+
validate_virtual_endpoint_name_availability, compare_sku_names
4547

4648
logger = get_logger(__name__)
4749
DEFAULT_DB_NAME = 'flexibleserverdb'
@@ -84,6 +86,18 @@ def flexible_server_create(cmd, client,
8486
logging_name='PostgreSQL', command_group='postgres', server_client=client, location=location)
8587

8688
server_name = server_name.lower()
89+
90+
if sku_name is None:
91+
# set sku_name from capability API
92+
list_location_capability_info = get_postgres_location_capability_info(cmd, location)
93+
tiers = [item.lower() for item in get_postgres_tiers(list_location_capability_info['sku_info'])]
94+
try:
95+
sku_info = list_location_capability_info['sku_info']
96+
skus = [item for item in get_postgres_skus(sku_info, tier.lower())]
97+
skus = sorted(skus, key=cmp_to_key(compare_sku_names))
98+
sku_name = skus[0]
99+
except:
100+
raise CLIError('Incorrect value for --tier. Allowed values : {}'.format(tiers))
87101

88102
pg_arguments_validator(db_context,
89103
server_name=server_name,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,9 +470,9 @@ def compare_sku_names(sku_1, sku_2):
470470
return -1
471471

472472
# the case where version number is the same, we want to sort by the core number
473-
if int(sku_2_match.group('core_number')) > int(sku_1_match.group('core_number')):
474-
return 1
475473
if int(sku_2_match.group('core_number')) < int(sku_1_match.group('core_number')):
474+
return 1
475+
if int(sku_2_match.group('core_number')) > int(sku_1_match.group('core_number')):
476476
return -1
477477

478478
return 0

0 commit comments

Comments
 (0)