Skip to content

Commit b8e3a6c

Browse files
mattboentoroMatthew Boentoronasc17
authored
{RDBMS} az postgres flexible-server migration create/show/list/update/check-name-availability; geo-restore; identity assign/remove/show/list; db create/delete; replica list/create/stop-replication/promote; virtual-endpoint create/delete/show/list/update: adding citus on flex validator (#30306)
* {RDBMS} az postgres flexible-server migration create/show/list/update/check-name-availability: adding citus on flex validator * validate cluster block * Added blockers * block geo restore * fix replica for clusters * add cof check on identity commands * fix issue * add cof validation on replica and virtual endpoint * fix broken test * fix test * Tests updates --------- Co-authored-by: Matthew Boentoro <[email protected]> Co-authored-by: Naia Scott <[email protected]> Co-authored-by: nasc17 <[email protected]>
1 parent ee825d9 commit b8e3a6c

File tree

34 files changed

+23356
-16757
lines changed

34 files changed

+23356
-16757
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,10 @@ def load_flexibleserver_command_table(self, _):
229229
g.custom_command('pre-check', 'ltr_precheck_func', custom_command_type=flexible_servers_custom_postgres)
230230
g.custom_command('start', 'ltr_start_func', custom_command_type=flexible_servers_custom_postgres)
231231

232-
with self.command_group('postgres flexible-server replica', postgres_flexible_replica_sdk) as g:
233-
g.command('list', 'list_by_server')
232+
with self.command_group('postgres flexible-server replica', postgres_flexible_replica_sdk,
233+
custom_command_type=flexible_servers_custom_postgres,
234+
client_factory=cf_postgres_flexible_replica) as g:
235+
g.custom_command('list', 'flexible_replica_list_by_server')
234236

235237
with self.command_group('postgres flexible-server replica', postgres_flexible_servers_sdk,
236238
custom_command_type=flexible_servers_custom_postgres,

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from ._client_factory import cf_postgres_flexible_replica
1717
from ._flexible_server_util import run_subprocess, \
1818
fill_action_template, get_git_root_dir, resolve_poller, GITHUB_ACTION_PATH
19-
from .validators import validate_public_access_server, validate_resource_group, check_resource_group
19+
from .validators import validate_public_access_server, validate_resource_group, check_resource_group, validate_citus_cluster
2020

2121
logger = get_logger(__name__)
2222
# pylint: disable=raise-missing-from
@@ -147,7 +147,7 @@ def firewall_rule_list_func(cmd, client, resource_group_name, server_name):
147147
return client.list_by_server(resource_group_name, server_name)
148148

149149

150-
def database_delete_func(client, resource_group_name=None, server_name=None, database_name=None, yes=None):
150+
def database_delete_func(cmd, client, resource_group_name=None, server_name=None, database_name=None, yes=None):
151151
if (not check_resource_group(resource_group_name)):
152152
resource_group_name = None
153153

@@ -162,6 +162,7 @@ def database_delete_func(client, resource_group_name=None, server_name=None, dat
162162
"Are you sure you want to delete the database '{0}' of server '{1}'".format(database_name,
163163
server_name), yes=yes)
164164

165+
validate_citus_cluster(cmd, resource_group_name, server_name)
165166
try:
166167
result = client.begin_delete(resource_group_name, server_name, database_name)
167168
except Exception as ex: # pylint: disable=broad-except
@@ -274,6 +275,7 @@ def flexible_server_log_list(client, resource_group_name, server_name, filename_
274275

275276
def flexible_server_version_upgrade(cmd, client, resource_group_name, server_name, version, yes=None):
276277
validate_resource_group(resource_group_name)
278+
validate_citus_cluster(cmd, resource_group_name, server_name)
277279

278280
if not yes:
279281
user_confirmation(

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

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from .flexible_server_virtual_network import prepare_private_network, prepare_private_dns_zone, prepare_public_network
3737
from .validators import pg_arguments_validator, validate_server_name, validate_and_format_restore_point_in_time, \
3838
validate_postgres_replica, validate_georestore_network, pg_byok_validator, validate_migration_runtime_server, \
39-
validate_resource_group, check_resource_group
39+
validate_resource_group, check_resource_group, validate_citus_cluster
4040

4141
logger = get_logger(__name__)
4242
DEFAULT_DB_NAME = 'flexibleserverdb'
@@ -426,6 +426,7 @@ def flexible_server_restart(cmd, client, resource_group_name, server_name, fail_
426426
raise ArgumentUsageError("Failing over can only be triggered for zone redundant or same zone servers.")
427427

428428
if fail_over is not None:
429+
validate_citus_cluster(cmd, resource_group_name, server_name)
429430
if fail_over.lower() not in ['planned', 'forced']:
430431
raise InvalidArgumentValueError("Allowed failover parameters are 'Planned' and 'Forced'.")
431432
if fail_over.lower() == 'planned':
@@ -498,6 +499,12 @@ def flexible_list_skus(cmd, client, location):
498499
return result
499500

500501

502+
def flexible_replica_list_by_server(cmd, client, resource_group_name, server_name):
503+
validate_resource_group(resource_group_name)
504+
validate_citus_cluster(cmd, resource_group_name, server_name)
505+
return client.list_by_server(resource_group_name, server_name)
506+
507+
501508
def flexible_replica_create(cmd, client, resource_group_name, source_server, replica_name, zone=None,
502509
location=None, vnet=None, vnet_address_prefix=None, subnet=None,
503510
subnet_address_prefix=None, private_dns_zone_arguments=None, no_wait=False,
@@ -520,6 +527,7 @@ def flexible_replica_create(cmd, client, resource_group_name, source_server, rep
520527
source_server_id = source_server
521528

522529
source_server_id_parts = parse_resource_id(source_server_id)
530+
validate_citus_cluster(cmd, resource_group_name, source_server_id_parts['name'])
523531
try:
524532
source_server_object = client.get(source_server_id_parts['resource_group'], source_server_id_parts['name'])
525533
except Exception as e:
@@ -614,6 +622,7 @@ def flexible_server_georestore(cmd, client, resource_group_name, server_name, so
614622

615623
try:
616624
id_parts = parse_resource_id(source_server_id)
625+
validate_citus_cluster(cmd, id_parts['resource_group'], id_parts['name'])
617626
source_subscription_id = id_parts['subscription']
618627
postgres_source_client = get_postgresql_flexible_management_client(cmd.cli_ctx, source_subscription_id)
619628
source_server_object = postgres_source_client.servers.get(id_parts['resource_group'], id_parts['name'])
@@ -739,8 +748,9 @@ def flexible_server_revivedropped(cmd, client, resource_group_name, server_name,
739748
return sdk_no_wait(no_wait, client.begin_create, resource_group_name, server_name, parameters)
740749

741750

742-
def flexible_replica_stop(client, resource_group_name, server_name):
751+
def flexible_replica_stop(cmd, client, resource_group_name, server_name):
743752
validate_resource_group(resource_group_name)
753+
validate_citus_cluster(cmd, resource_group_name, server_name)
744754

745755
try:
746756
server_object = client.get(resource_group_name, server_name)
@@ -761,8 +771,9 @@ def flexible_replica_stop(client, resource_group_name, server_name):
761771
return client.begin_update(resource_group_name, server_name, params)
762772

763773

764-
def flexible_replica_promote(client, resource_group_name, server_name, promote_mode='standalone', promote_option='planned'):
774+
def flexible_replica_promote(cmd, client, resource_group_name, server_name, promote_mode='standalone', promote_option='planned'):
765775
validate_resource_group(resource_group_name)
776+
validate_citus_cluster(cmd, resource_group_name, server_name)
766777

767778
try:
768779
server_object = client.get(resource_group_name, server_name)
@@ -828,6 +839,7 @@ def _create_server(db_context, cmd, resource_group_name, server_name, tags, loca
828839

829840
def _create_database(db_context, cmd, resource_group_name, server_name, database_name):
830841
validate_resource_group(resource_group_name)
842+
validate_citus_cluster(cmd, resource_group_name, server_name)
831843

832844
# check for existing database, create if not
833845
cf_db, logging_name = db_context.cf_db, db_context.logging_name
@@ -887,6 +899,7 @@ def flexible_server_connection_string(
887899
# Custom functions for identity
888900
def flexible_server_identity_assign(cmd, client, resource_group_name, server_name, identities):
889901
validate_resource_group(resource_group_name)
902+
validate_citus_cluster(cmd, resource_group_name, server_name)
890903

891904
identities_map = {}
892905
for identity in identities:
@@ -910,6 +923,7 @@ def flexible_server_identity_assign(cmd, client, resource_group_name, server_nam
910923

911924
def flexible_server_identity_remove(cmd, client, resource_group_name, server_name, identities):
912925
validate_resource_group(resource_group_name)
926+
validate_citus_cluster(cmd, resource_group_name, server_name)
913927

914928
instance = client.get(resource_group_name, server_name)
915929

@@ -945,15 +959,17 @@ def flexible_server_identity_remove(cmd, client, resource_group_name, server_nam
945959
return result.identity or postgresql_flexibleservers.models.UserAssignedIdentity(type="SystemAssigned")
946960

947961

948-
def flexible_server_identity_list(client, resource_group_name, server_name):
962+
def flexible_server_identity_list(cmd, client, resource_group_name, server_name):
949963
validate_resource_group(resource_group_name)
964+
validate_citus_cluster(cmd, resource_group_name, server_name)
950965

951966
server = client.get(resource_group_name, server_name)
952967
return server.identity or postgresql_flexibleservers.models.UserAssignedIdentity(type="SystemAssigned")
953968

954969

955-
def flexible_server_identity_show(client, resource_group_name, server_name, identity):
970+
def flexible_server_identity_show(cmd, client, resource_group_name, server_name, identity):
956971
validate_resource_group(resource_group_name)
972+
validate_citus_cluster(cmd, resource_group_name, server_name)
957973

958974
server = client.get(resource_group_name, server_name)
959975

@@ -1160,6 +1176,7 @@ def flexible_server_list_log_files_with_filter(client, resource_group_name, serv
11601176
def migration_create_func(cmd, client, resource_group_name, server_name, properties, migration_mode="offline",
11611177
migration_name=None, migration_option=None, tags=None, location=None):
11621178
validate_resource_group(resource_group_name)
1179+
validate_citus_cluster(cmd, resource_group_name, server_name)
11631180

11641181
logging_name = 'PostgreSQL'
11651182
subscription_id = get_subscription_id(cmd.cli_ctx)
@@ -1193,13 +1210,15 @@ def migration_create_func(cmd, client, resource_group_name, server_name, propert
11931210

11941211
def migration_show_func(cmd, client, resource_group_name, server_name, migration_name):
11951212
validate_resource_group(resource_group_name)
1213+
validate_citus_cluster(cmd, resource_group_name, server_name)
11961214

11971215
subscription_id = get_subscription_id(cmd.cli_ctx)
11981216
return client.get(subscription_id, resource_group_name, server_name, migration_name)
11991217

12001218

12011219
def migration_list_func(cmd, client, resource_group_name, server_name, migration_filter="Active"):
12021220
validate_resource_group(resource_group_name)
1221+
validate_citus_cluster(cmd, resource_group_name, server_name)
12031222

12041223
subscription_id = get_subscription_id(cmd.cli_ctx)
12051224
return client.list_by_target_server(subscription_id, resource_group_name, server_name, migration_filter)
@@ -1214,6 +1233,7 @@ def migration_delete_func(cmd, client, resource_group_name, server_name, migrati
12141233

12151234
def migration_update_func(cmd, client, resource_group_name, server_name, migration_name, setup_logical_replication=None, cutover=None, cancel=None):
12161235
validate_resource_group(resource_group_name)
1236+
validate_citus_cluster(cmd, resource_group_name, server_name)
12171237

12181238
subscription_id = get_subscription_id(cmd.cli_ctx)
12191239

@@ -1246,14 +1266,16 @@ def migration_update_func(cmd, client, resource_group_name, server_name, migrati
12461266

12471267
def migration_check_name_availability(cmd, client, resource_group_name, server_name, migration_name):
12481268
validate_resource_group(resource_group_name)
1269+
validate_citus_cluster(cmd, resource_group_name, server_name)
12491270

12501271
subscription_id = get_subscription_id(cmd.cli_ctx)
12511272
migration_name_availability_parammeters = {"name": "%s" % migration_name, "type": "Microsoft.DBforPostgreSQL/flexibleServers/migrations"}
12521273
return get_postgresql_flexible_management_client(cmd.cli_ctx).check_migration_name_availability(subscription_id, resource_group_name, server_name, migration_name_availability_parammeters)
12531274

12541275

1255-
def virtual_endpoint_create_func(client, resource_group_name, server_name, virtual_endpoint_name, endpoint_type, members):
1276+
def virtual_endpoint_create_func(cmd, client, resource_group_name, server_name, virtual_endpoint_name, endpoint_type, members):
12561277
validate_resource_group(resource_group_name)
1278+
validate_citus_cluster(cmd, resource_group_name, server_name)
12571279

12581280
parameters = {
12591281
'name': virtual_endpoint_name,
@@ -1268,25 +1290,28 @@ def virtual_endpoint_create_func(client, resource_group_name, server_name, virtu
12681290
parameters)
12691291

12701292

1271-
def virtual_endpoint_show_func(client, resource_group_name, server_name, virtual_endpoint_name):
1293+
def virtual_endpoint_show_func(cmd, client, resource_group_name, server_name, virtual_endpoint_name):
12721294
validate_resource_group(resource_group_name)
1295+
validate_citus_cluster(cmd, resource_group_name, server_name)
12731296

12741297
return client.get(
12751298
resource_group_name,
12761299
server_name,
12771300
virtual_endpoint_name)
12781301

12791302

1280-
def virtual_endpoint_list_func(client, resource_group_name, server_name):
1303+
def virtual_endpoint_list_func(cmd, client, resource_group_name, server_name):
12811304
validate_resource_group(resource_group_name)
1305+
validate_citus_cluster(cmd, resource_group_name, server_name)
12821306

12831307
return client.list_by_server(
12841308
resource_group_name,
12851309
server_name)
12861310

12871311

1288-
def virtual_endpoint_delete_func(client, resource_group_name, server_name, virtual_endpoint_name, yes=False):
1312+
def virtual_endpoint_delete_func(cmd, client, resource_group_name, server_name, virtual_endpoint_name, yes=False):
12891313
validate_resource_group(resource_group_name)
1314+
validate_citus_cluster(cmd, resource_group_name, server_name)
12901315

12911316
if not yes:
12921317
user_confirmation(
@@ -1299,8 +1324,9 @@ def virtual_endpoint_delete_func(client, resource_group_name, server_name, virtu
12991324
virtual_endpoint_name)
13001325

13011326

1302-
def virtual_endpoint_update_func(client, resource_group_name, server_name, virtual_endpoint_name, endpoint_type, members):
1327+
def virtual_endpoint_update_func(cmd, client, resource_group_name, server_name, virtual_endpoint_name, endpoint_type, members):
13031328
validate_resource_group(resource_group_name)
1329+
validate_citus_cluster(cmd, resource_group_name, server_name)
13041330

13051331
parameters = {
13061332
'name': virtual_endpoint_name,

0 commit comments

Comments
 (0)