or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

common-models.mdindex.mdmariadb-single-server.mdmysql-flexible-servers.mdmysql-single-server.mdpostgresql-flexible-servers.mdpostgresql-single-server.md

postgresql-flexible-servers.mddocs/

0

# PostgreSQL Flexible Servers Management

1

2

Advanced management capabilities for PostgreSQL flexible server deployments on Azure. This service provides enhanced server lifecycle management, high availability configuration, backup and restore operations, private networking, and advanced monitoring capabilities for PostgreSQL instances.

3

4

## Capabilities

5

6

### Management Client

7

8

Main client for PostgreSQL flexible server operations with enhanced features and comprehensive resource management capabilities.

9

10

```python { .api }

11

class PostgreSQLManagementClient:

12

"""

13

PostgreSQL management client for flexible server deployments.

14

15

Parameters:

16

- credential: TokenCredential for Azure authentication

17

- subscription_id: str, Azure subscription ID

18

- base_url: str, management endpoint (default: https://management.azure.com)

19

- polling_interval: int, LRO polling interval in seconds

20

21

Attributes:

22

- servers: Enhanced server lifecycle operations

23

- databases: Database management operations

24

- firewall_rules: Firewall configuration operations

25

- configurations: Server parameter operations

26

- location_based_capabilities: Regional capability queries

27

"""

28

def __init__(

29

self,

30

credential,

31

subscription_id: str,

32

base_url: str = "https://management.azure.com",

33

**kwargs

34

): ...

35

36

def close(self): ...

37

def __enter__(self): ...

38

def __exit__(self, *exc_details): ...

39

```

40

41

### Enhanced Server Operations

42

43

Comprehensive server lifecycle management with flexible server features including high availability, backup configuration, and maintenance windows.

44

45

```python { .api }

46

class ServersOperations:

47

"""Enhanced server lifecycle and management operations for PostgreSQL flexible servers."""

48

49

def create(self, resource_group_name: str, server_name: str, parameters, **kwargs):

50

"""

51

Creates a new PostgreSQL flexible server with enhanced capabilities.

52

53

Parameters:

54

- resource_group_name: str, resource group name

55

- server_name: str, server name (must be globally unique)

56

- parameters: Enhanced server creation parameters including:

57

- high_availability: HighAvailability configuration

58

- backup: Backup configuration and policies

59

- network: Network configuration including private access

60

- maintenance_window: Maintenance scheduling

61

- data_encryption: Data encryption settings

62

- storage: Storage configuration with auto-scaling

63

64

Returns:

65

LROPoller for server creation operation

66

"""

67

68

def update(self, resource_group_name: str, server_name: str, parameters, **kwargs):

69

"""

70

Updates an existing PostgreSQL flexible server.

71

72

Parameters:

73

- resource_group_name: str, resource group name

74

- server_name: str, server name

75

- parameters: Server update parameters with flexible server properties

76

77

Returns:

78

LROPoller for server update operation

79

"""

80

81

def delete(self, resource_group_name: str, server_name: str, **kwargs):

82

"""

83

Deletes a PostgreSQL flexible server.

84

85

Parameters:

86

- resource_group_name: str, resource group name

87

- server_name: str, server name

88

89

Returns:

90

LROPoller for server deletion operation

91

"""

92

93

def get(self, resource_group_name: str, server_name: str, **kwargs):

94

"""

95

Gets details of a PostgreSQL flexible server.

96

97

Parameters:

98

- resource_group_name: str, resource group name

99

- server_name: str, server name

100

101

Returns:

102

Server object with enhanced flexible server properties

103

"""

104

105

def list(self, **kwargs):

106

"""

107

Lists all PostgreSQL flexible servers in the subscription.

108

109

Returns:

110

Paged collection of Server objects

111

"""

112

113

def list_by_resource_group(self, resource_group_name: str, **kwargs):

114

"""

115

Lists PostgreSQL flexible servers in a resource group.

116

117

Parameters:

118

- resource_group_name: str, resource group name

119

120

Returns:

121

Paged collection of Server objects

122

"""

123

124

def restart(self, resource_group_name: str, server_name: str, restart_parameters, **kwargs):

125

"""

126

Restarts a PostgreSQL flexible server with optional parameters.

127

128

Parameters:

129

- resource_group_name: str, resource group name

130

- server_name: str, server name

131

- restart_parameters: Restart configuration options

132

133

Returns:

134

LROPoller for restart operation

135

"""

136

137

def start(self, resource_group_name: str, server_name: str, **kwargs):

138

"""

139

Starts a stopped PostgreSQL flexible server.

140

141

Parameters:

142

- resource_group_name: str, resource group name

143

- server_name: str, server name

144

145

Returns:

146

LROPoller for start operation

147

"""

148

149

def stop(self, resource_group_name: str, server_name: str, **kwargs):

150

"""

151

Stops a running PostgreSQL flexible server.

152

153

Parameters:

154

- resource_group_name: str, resource group name

155

- server_name: str, server name

156

157

Returns:

158

LROPoller for stop operation

159

"""

160

```

161

162

### Database Operations

163

164

Enhanced database management within PostgreSQL flexible servers.

165

166

```python { .api }

167

class DatabasesOperations:

168

"""Database management operations within PostgreSQL flexible servers."""

169

170

def create(self, resource_group_name: str, server_name: str, database_name: str, parameters, **kwargs):

171

"""

172

Creates a database in a PostgreSQL flexible server.

173

174

Parameters:

175

- resource_group_name: str, resource group name

176

- server_name: str, server name

177

- database_name: str, database name

178

- parameters: Database parameters (charset, collation)

179

180

Returns:

181

LROPoller for database creation operation

182

"""

183

184

def delete(self, resource_group_name: str, server_name: str, database_name: str, **kwargs):

185

"""

186

Deletes a database from a PostgreSQL flexible server.

187

188

Parameters:

189

- resource_group_name: str, resource group name

190

- server_name: str, server name

191

- database_name: str, database name

192

193

Returns:

194

LROPoller for deletion operation

195

"""

196

197

def get(self, resource_group_name: str, server_name: str, database_name: str, **kwargs):

198

"""

199

Gets database properties from a PostgreSQL flexible server.

200

201

Parameters:

202

- resource_group_name: str, resource group name

203

- server_name: str, server name

204

- database_name: str, database name

205

206

Returns:

207

Database object with properties

208

"""

209

210

def list_by_server(self, resource_group_name: str, server_name: str, **kwargs):

211

"""

212

Lists databases in a PostgreSQL flexible server.

213

214

Parameters:

215

- resource_group_name: str, resource group name

216

- server_name: str, server name

217

218

Returns:

219

Paged collection of Database objects

220

"""

221

```

222

223

### Firewall Rules Operations

224

225

Enhanced firewall management for PostgreSQL flexible servers with improved security features.

226

227

```python { .api }

228

class FirewallRulesOperations:

229

"""Enhanced firewall rule management for PostgreSQL flexible servers."""

230

231

def create_or_update(self, resource_group_name: str, server_name: str, firewall_rule_name: str, parameters, **kwargs):

232

"""

233

Creates or updates a firewall rule for a PostgreSQL flexible server.

234

235

Parameters:

236

- resource_group_name: str, resource group name

237

- server_name: str, server name

238

- firewall_rule_name: str, firewall rule name

239

- parameters: Enhanced firewall rule parameters

240

241

Returns:

242

LROPoller for firewall rule operation

243

"""

244

245

def delete(self, resource_group_name: str, server_name: str, firewall_rule_name: str, **kwargs):

246

"""

247

Deletes a firewall rule from a PostgreSQL flexible server.

248

249

Parameters:

250

- resource_group_name: str, resource group name

251

- server_name: str, server name

252

- firewall_rule_name: str, firewall rule name

253

254

Returns:

255

LROPoller for deletion operation

256

"""

257

258

def get(self, resource_group_name: str, server_name: str, firewall_rule_name: str, **kwargs):

259

"""

260

Gets a firewall rule from a PostgreSQL flexible server.

261

262

Parameters:

263

- resource_group_name: str, resource group name

264

- server_name: str, server name

265

- firewall_rule_name: str, firewall rule name

266

267

Returns:

268

FirewallRule object

269

"""

270

271

def list_by_server(self, resource_group_name: str, server_name: str, **kwargs):

272

"""

273

Lists firewall rules for a PostgreSQL flexible server.

274

275

Parameters:

276

- resource_group_name: str, resource group name

277

- server_name: str, server name

278

279

Returns:

280

Paged collection of FirewallRule objects

281

"""

282

```

283

284

### Configuration Operations

285

286

Enhanced server parameter and configuration management for PostgreSQL flexible servers.

287

288

```python { .api }

289

class ConfigurationsOperations:

290

"""Enhanced PostgreSQL flexible server configuration and parameter management."""

291

292

def update(self, resource_group_name: str, server_name: str, configuration_name: str, parameters, **kwargs):

293

"""

294

Updates a configuration parameter for a PostgreSQL flexible server.

295

296

Parameters:

297

- resource_group_name: str, resource group name

298

- server_name: str, server name

299

- configuration_name: str, parameter name

300

- parameters: Enhanced configuration value and properties

301

302

Returns:

303

LROPoller for configuration update

304

"""

305

306

def get(self, resource_group_name: str, server_name: str, configuration_name: str, **kwargs):

307

"""

308

Gets a configuration parameter value from a PostgreSQL flexible server.

309

310

Parameters:

311

- resource_group_name: str, resource group name

312

- server_name: str, server name

313

- configuration_name: str, parameter name

314

315

Returns:

316

Configuration object with current value

317

"""

318

319

def list_by_server(self, resource_group_name: str, server_name: str, **kwargs):

320

"""

321

Lists all configuration parameters for a PostgreSQL flexible server.

322

323

Parameters:

324

- resource_group_name: str, resource group name

325

- server_name: str, server name

326

327

Returns:

328

Paged collection of Configuration objects

329

"""

330

```

331

332

### Location-Based Capabilities Operations

333

334

Regional capability queries for PostgreSQL flexible servers to understand available features and SKUs.

335

336

```python { .api }

337

class LocationBasedCapabilitiesOperations:

338

"""Regional capability queries for PostgreSQL flexible servers."""

339

340

def execute(self, location_name: str, parameters, **kwargs):

341

"""

342

Executes capability queries for a specific region for PostgreSQL flexible servers.

343

344

Parameters:

345

- location_name: str, Azure region name

346

- parameters: Capability query parameters

347

348

Returns:

349

Capability results including:

350

- Available server versions (11, 12, 13, 14, 15)

351

- Supported SKUs and compute tiers

352

- Storage options and limits

353

- High availability support

354

- Backup retention limits

355

- Zone availability

356

"""

357

```

358

359

## Enhanced Models for PostgreSQL Flexible Servers

360

361

```python { .api }

362

class Server:

363

"""Enhanced PostgreSQL flexible server resource representation."""

364

id: str

365

name: str

366

type: str

367

location: str

368

tags: Dict[str, str]

369

system_data: SystemData

370

administrator_login: str

371

administrator_login_password: str

372

version: str # PostgreSQL version (11, 12, 13, 14, 15)

373

state: str # Ready, Starting, Stopping, Stopped, Updating, etc.

374

fully_qualified_domain_name: str

375

storage: Storage

376

backup: Backup

377

high_availability: HighAvailability

378

network: Network

379

maintenance_window: MaintenanceWindow

380

source_server_resource_id: str

381

point_in_time_utc: datetime

382

availability_zone: str

383

standby_availability_zone: str

384

create_mode: str # Default, Create, Update, PointInTimeRestore, GeoRestore, Replica

385

auth_config: AuthConfig

386

data_encryption: DataEncryption

387

replica: Replica

388

389

class Storage:

390

"""Enhanced storage configuration for PostgreSQL flexible servers."""

391

storage_size_gb: int

392

auto_grow: str # Enabled, Disabled

393

tier: str # P4, P6, P10, P15, P20, P30, P40, P50, P60, P70, P80

394

395

class HighAvailability:

396

"""High availability configuration for PostgreSQL flexible servers."""

397

mode: str # Disabled, ZoneRedundant, SameZone

398

state: str # NotEnabled, CreatingStandby, ReplicatingData, FailingOver, Healthy, RemovingStandby

399

standby_availability_zone: str

400

401

class Backup:

402

"""Backup configuration and policies for PostgreSQL flexible servers."""

403

backup_retention_days: int

404

geo_redundant_backup: str # Enabled, Disabled

405

earliest_restore_date: datetime

406

407

class Network:

408

"""Network configuration for PostgreSQL flexible servers."""

409

public_network_access: str # Enabled, Disabled

410

delegated_subnet_resource_id: str

411

private_dns_zone_resource_id: str

412

413

class MaintenanceWindow:

414

"""Maintenance scheduling configuration for PostgreSQL flexible servers."""

415

custom_window: str # Enabled, Disabled

416

start_hour: int

417

start_minute: int

418

day_of_week: int

419

420

class AuthConfig:

421

"""Authentication configuration for PostgreSQL flexible servers."""

422

active_directory_auth: str # Enabled, Disabled

423

password_auth: str # Enabled, Disabled

424

tenant_id: str

425

426

class DataEncryption:

427

"""Data encryption settings for PostgreSQL flexible servers."""

428

type: str # AzureKeyVault, SystemManaged

429

primary_key_uri: str

430

primary_user_assigned_identity_id: str

431

geo_backup_key_uri: str

432

geo_backup_user_assigned_identity_id: str

433

434

class Replica:

435

"""Read replica configuration for PostgreSQL flexible servers."""

436

role: str # Primary, AsyncReplica, GeoAsyncReplica

437

capacity: int

438

replication_state: str # Active, Catchup, Provisioning, Updating, Broken, Reconfiguring

439

440

class Database:

441

"""Database within PostgreSQL flexible server."""

442

id: str

443

name: str

444

type: str

445

charset: str

446

collation: str

447

system_data: SystemData

448

449

class FirewallRule:

450

"""Enhanced firewall rule for PostgreSQL flexible server."""

451

id: str

452

name: str

453

type: str

454

start_ip_address: str

455

end_ip_address: str

456

system_data: SystemData

457

458

class Configuration:

459

"""Enhanced PostgreSQL flexible server configuration parameter."""

460

id: str

461

name: str

462

type: str

463

value: str

464

description: str

465

default_value: str

466

data_type: str

467

allowed_values: str

468

source: str

469

is_dynamic: bool

470

is_read_only: bool

471

is_config_pending_restart: bool

472

unit: str

473

system_data: SystemData

474

```

475

476

## Usage Examples

477

478

### Creating a PostgreSQL Flexible Server with High Availability

479

480

```python

481

from azure.identity import DefaultAzureCredential

482

from azure.mgmt.rdbms.postgresql_flexibleservers import PostgreSQLManagementClient

483

from azure.mgmt.rdbms.postgresql_flexibleservers.models import (

484

Server, ServerForCreate, Storage, HighAvailability, Backup,

485

Network, MaintenanceWindow, AuthConfig, DataEncryption

486

)

487

488

credential = DefaultAzureCredential()

489

client = PostgreSQLManagementClient(credential, "subscription-id")

490

491

# Define enhanced server parameters

492

server_creation_parameters = ServerForCreate(

493

location="East US",

494

tags={"environment": "production"},

495

properties=Server(

496

administrator_login="myadmin",

497

administrator_login_password="SecurePassword123!",

498

version="14",

499

availability_zone="1",

500

create_mode="Default",

501

storage=Storage(

502

storage_size_gb=128,

503

auto_grow="Enabled",

504

tier="P10"

505

),

506

high_availability=HighAvailability(

507

mode="ZoneRedundant",

508

standby_availability_zone="2"

509

),

510

backup=Backup(

511

backup_retention_days=14,

512

geo_redundant_backup="Enabled"

513

),

514

network=Network(

515

public_network_access="Disabled",

516

delegated_subnet_resource_id="/subscriptions/sub-id/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",

517

private_dns_zone_resource_id="/subscriptions/sub-id/resourceGroups/rg/providers/Microsoft.Network/privateDnsZones/privatelink.postgres.database.azure.com"

518

),

519

maintenance_window=MaintenanceWindow(

520

custom_window="Enabled",

521

start_hour=2,

522

start_minute=0,

523

day_of_week=0 # Sunday

524

),

525

auth_config=AuthConfig(

526

active_directory_auth="Enabled",

527

password_auth="Enabled",

528

tenant_id="11111111-1111-1111-1111-111111111111"

529

)

530

)

531

)

532

533

# Create flexible server (async operation)

534

server_operation = client.servers.begin_create(

535

"my-resource-group",

536

"my-postgresql-flexible-server",

537

server_creation_parameters

538

)

539

server = server_operation.result() # Wait for completion

540

print(f"PostgreSQL flexible server created: {server.name}")

541

print(f"High availability mode: {server.high_availability.mode}")

542

print(f"Authentication config: {server.auth_config.active_directory_auth}")

543

```

544

545

### Point-in-Time Restore and Geo-Restore

546

547

```python

548

from datetime import datetime, timedelta

549

550

# Point-in-time restore (create new server from backup)

551

restore_time = datetime.utcnow() - timedelta(hours=2)

552

pitr_parameters = ServerForCreate(

553

location="East US",

554

properties=Server(

555

source_server_resource_id=server.id,

556

point_in_time_utc=restore_time,

557

create_mode="PointInTimeRestore"

558

)

559

)

560

561

pitr_operation = client.servers.begin_create(

562

"my-resource-group",

563

"my-postgresql-pitr-server",

564

pitr_parameters

565

)

566

pitr_server = pitr_operation.result()

567

print(f"Server restored from point-in-time: {pitr_server.name}")

568

569

# Geo-restore (restore to different region)

570

geo_restore_parameters = ServerForCreate(

571

location="West US 2", # Different region

572

properties=Server(

573

source_server_resource_id=server.id,

574

create_mode="GeoRestore"

575

)

576

)

577

578

geo_operation = client.servers.begin_create(

579

"my-resource-group-west",

580

"my-postgresql-geo-server",

581

geo_restore_parameters

582

)

583

geo_server = geo_operation.result()

584

print(f"Server geo-restored: {geo_server.name}")

585

```

586

587

### Managing Private Networking and DNS

588

589

```python

590

# Check VNet subnet usage before creating server

591

from azure.mgmt.rdbms.postgresql_flexibleservers.models import VirtualNetworkSubnetUsageParameter

592

593

subnet_usage_params = VirtualNetworkSubnetUsageParameter(

594

virtual_network_arm_resource_id="/subscriptions/sub-id/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet"

595

)

596

597

subnet_usage = client.check_virtual_network_subnet_usage.execute(

598

"East US",

599

subnet_usage_params

600

)

601

print(f"Subnet delegated: {subnet_usage.subnet_usage.delegated_subnets}")

602

603

# Get private DNS zone suffix for region

604

dns_suffix = client.get_private_dns_zone_suffix.execute("East US")

605

print(f"Private DNS suffix: {dns_suffix.private_dns_zone_suffix}")

606

607

# Update server network configuration

608

network_update = {

609

"network": {

610

"public_network_access": "Disabled"

611

}

612

}

613

614

network_operation = client.servers.begin_update(

615

"my-resource-group",

616

"my-postgresql-flexible-server",

617

network_update

618

)

619

updated_server = network_operation.result()

620

print(f"Network access updated: {updated_server.network.public_network_access}")

621

```

622

623

### Advanced Configuration and Monitoring

624

625

```python

626

# Configure PostgreSQL parameters

627

config_params = {"value": "on"}

628

config_operation = client.configurations.begin_update(

629

"my-resource-group",

630

"my-postgresql-flexible-server",

631

"log_statement",

632

config_params

633

)

634

config_operation.result()

635

636

# List all server configurations

637

configurations = client.configurations.list_by_server(

638

"my-resource-group",

639

"my-postgresql-flexible-server"

640

)

641

642

for config in configurations:

643

if config.source != "system-default":

644

print(f"Custom config: {config.name} = {config.value}")

645

646

# Stop and start server for maintenance

647

stop_operation = client.servers.begin_stop(

648

"my-resource-group",

649

"my-postgresql-flexible-server"

650

)

651

stop_operation.result()

652

print("PostgreSQL server stopped for maintenance")

653

654

start_operation = client.servers.begin_start(

655

"my-resource-group",

656

"my-postgresql-flexible-server"

657

)

658

start_operation.result()

659

print("PostgreSQL server started after maintenance")

660

```