pulumiverse-scaleway 1.35.0a1761031391__py3-none-any.whl → 1.39.0a1764841480__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. pulumiverse_scaleway/__init__.py +38 -0
  2. pulumiverse_scaleway/_inputs.py +271 -166
  3. pulumiverse_scaleway/audittrail/__init__.py +10 -0
  4. pulumiverse_scaleway/audittrail/get_event.py +410 -0
  5. pulumiverse_scaleway/audittrail/outputs.py +234 -0
  6. pulumiverse_scaleway/baremetal_server.py +159 -0
  7. pulumiverse_scaleway/billing/get_consumptions.py +4 -0
  8. pulumiverse_scaleway/block/snapshot.py +78 -0
  9. pulumiverse_scaleway/block_snapshot.py +78 -0
  10. pulumiverse_scaleway/cockpit_grafana_user.py +0 -42
  11. pulumiverse_scaleway/database_instance.py +105 -55
  12. pulumiverse_scaleway/database_user.py +6 -6
  13. pulumiverse_scaleway/databases/_inputs.py +97 -3
  14. pulumiverse_scaleway/databases/get_instance.py +12 -1
  15. pulumiverse_scaleway/databases/instance.py +105 -55
  16. pulumiverse_scaleway/databases/outputs.py +127 -2
  17. pulumiverse_scaleway/databases/user.py +6 -6
  18. pulumiverse_scaleway/datawarehouse/__init__.py +13 -0
  19. pulumiverse_scaleway/datawarehouse/_inputs.py +149 -0
  20. pulumiverse_scaleway/datawarehouse/database.py +338 -0
  21. pulumiverse_scaleway/datawarehouse/deployment.py +821 -0
  22. pulumiverse_scaleway/datawarehouse/outputs.py +113 -0
  23. pulumiverse_scaleway/datawarehouse/user.py +451 -0
  24. pulumiverse_scaleway/domain/record.py +4 -4
  25. pulumiverse_scaleway/domain_record.py +4 -4
  26. pulumiverse_scaleway/edge_services_cache_stage.py +30 -0
  27. pulumiverse_scaleway/edge_services_dns_stage.py +28 -0
  28. pulumiverse_scaleway/elasticmetal/get_offer.py +2 -0
  29. pulumiverse_scaleway/elasticmetal/get_server.py +12 -1
  30. pulumiverse_scaleway/elasticmetal/server.py +159 -0
  31. pulumiverse_scaleway/file_filesystem.py +39 -35
  32. pulumiverse_scaleway/get_baremetal_offer.py +2 -0
  33. pulumiverse_scaleway/get_baremetal_server.py +12 -1
  34. pulumiverse_scaleway/get_billing_consumptions.py +4 -0
  35. pulumiverse_scaleway/get_database_instance.py +12 -1
  36. pulumiverse_scaleway/get_instance_ip.py +14 -2
  37. pulumiverse_scaleway/get_instance_server.py +13 -83
  38. pulumiverse_scaleway/get_k8s_version.py +12 -1
  39. pulumiverse_scaleway/get_kubernetes_cluster.py +34 -1
  40. pulumiverse_scaleway/get_loadbalancer.py +12 -1
  41. pulumiverse_scaleway/get_loadbalancer_certificate.py +60 -0
  42. pulumiverse_scaleway/iam/__init__.py +1 -0
  43. pulumiverse_scaleway/iam/get_policy.py +293 -0
  44. pulumiverse_scaleway/iam/outputs.py +52 -0
  45. pulumiverse_scaleway/inference/deployment.py +36 -0
  46. pulumiverse_scaleway/inference/model.py +7 -7
  47. pulumiverse_scaleway/inference_deployment.py +36 -0
  48. pulumiverse_scaleway/instance/_inputs.py +155 -144
  49. pulumiverse_scaleway/instance/get_ip.py +14 -2
  50. pulumiverse_scaleway/instance/get_server.py +13 -83
  51. pulumiverse_scaleway/instance/image.py +94 -40
  52. pulumiverse_scaleway/instance/outputs.py +164 -167
  53. pulumiverse_scaleway/instance/server.py +116 -244
  54. pulumiverse_scaleway/instance/user_data.py +4 -4
  55. pulumiverse_scaleway/instance/volume.py +14 -0
  56. pulumiverse_scaleway/instance_image.py +94 -40
  57. pulumiverse_scaleway/instance_server.py +116 -244
  58. pulumiverse_scaleway/instance_user_data.py +4 -4
  59. pulumiverse_scaleway/instance_volume.py +14 -0
  60. pulumiverse_scaleway/iot/device.py +0 -38
  61. pulumiverse_scaleway/iot/hub.py +11 -11
  62. pulumiverse_scaleway/iot/route.py +20 -20
  63. pulumiverse_scaleway/iot_device.py +0 -38
  64. pulumiverse_scaleway/iot_hub.py +11 -11
  65. pulumiverse_scaleway/iot_route.py +20 -20
  66. pulumiverse_scaleway/ipam/_inputs.py +6 -6
  67. pulumiverse_scaleway/ipam/ip.py +35 -7
  68. pulumiverse_scaleway/ipam/ip_reverse_dns.py +70 -0
  69. pulumiverse_scaleway/ipam/outputs.py +4 -4
  70. pulumiverse_scaleway/ipam_ip.py +35 -7
  71. pulumiverse_scaleway/ipam_ip_reverse_dns.py +70 -0
  72. pulumiverse_scaleway/key_manager_key.py +134 -25
  73. pulumiverse_scaleway/kubernetes/cluster.py +290 -4
  74. pulumiverse_scaleway/kubernetes/get_cluster.py +34 -1
  75. pulumiverse_scaleway/kubernetes/get_version.py +12 -1
  76. pulumiverse_scaleway/kubernetes/pool.py +7 -7
  77. pulumiverse_scaleway/kubernetes_cluster.py +290 -4
  78. pulumiverse_scaleway/kubernetes_node_pool.py +7 -7
  79. pulumiverse_scaleway/loadbalancer.py +55 -1
  80. pulumiverse_scaleway/loadbalancers/__init__.py +1 -0
  81. pulumiverse_scaleway/loadbalancers/_inputs.py +13 -13
  82. pulumiverse_scaleway/loadbalancers/get_certificate.py +60 -0
  83. pulumiverse_scaleway/loadbalancers/get_load_balancer.py +12 -1
  84. pulumiverse_scaleway/loadbalancers/load_balancer.py +55 -1
  85. pulumiverse_scaleway/loadbalancers/outputs.py +9 -9
  86. pulumiverse_scaleway/loadbalancers/private_network.py +505 -0
  87. pulumiverse_scaleway/mongo_db_instance.py +14 -14
  88. pulumiverse_scaleway/mongodb/instance.py +14 -14
  89. pulumiverse_scaleway/network/gateway_network.py +7 -7
  90. pulumiverse_scaleway/object/__init__.py +1 -0
  91. pulumiverse_scaleway/object/bucket_policy.py +0 -64
  92. pulumiverse_scaleway/object/get.py +290 -0
  93. pulumiverse_scaleway/object/item.py +37 -7
  94. pulumiverse_scaleway/object_bucket_policy.py +0 -64
  95. pulumiverse_scaleway/object_item.py +37 -7
  96. pulumiverse_scaleway/observability/__init__.py +1 -0
  97. pulumiverse_scaleway/observability/get_grafana.py +103 -0
  98. pulumiverse_scaleway/observability/get_sources.py +6 -6
  99. pulumiverse_scaleway/observability/grafana_user.py +0 -42
  100. pulumiverse_scaleway/observability/outputs.py +2 -2
  101. pulumiverse_scaleway/outputs.py +304 -182
  102. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  103. pulumiverse_scaleway/tem/domain.py +42 -0
  104. pulumiverse_scaleway/tem_domain.py +42 -0
  105. pulumiverse_scaleway/vpc_gateway_network.py +7 -7
  106. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/METADATA +1 -1
  107. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/RECORD +109 -96
  108. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/WHEEL +0 -0
  109. {pulumiverse_scaleway-1.35.0a1761031391.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/top_level.txt +0 -0
@@ -30,7 +30,7 @@ class InstanceArgs:
30
30
  engine: Optional[pulumi.Input[_builtins.str]] = None,
31
31
  init_settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
32
32
  is_ha_cluster: Optional[pulumi.Input[_builtins.bool]] = None,
33
- load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]]] = None,
33
+ load_balancer: Optional[pulumi.Input['InstanceLoadBalancerArgs']] = None,
34
34
  logs_policy: Optional[pulumi.Input['InstanceLogsPolicyArgs']] = None,
35
35
  name: Optional[pulumi.Input[_builtins.str]] = None,
36
36
  password: Optional[pulumi.Input[_builtins.str]] = None,
@@ -57,14 +57,12 @@ class InstanceArgs:
57
57
  :param pulumi.Input[_builtins.int] backup_schedule_retention: Backup schedule retention in days
58
58
  :param pulumi.Input[_builtins.bool] disable_backup: Disable automated backup for the database instance
59
59
  :param pulumi.Input[_builtins.bool] encryption_at_rest: Enable or disable encryption at rest for the Database Instance.
60
- :param pulumi.Input[_builtins.str] engine: Database Instance's engine version (e.g. `PostgreSQL-11`).
61
-
62
- > **Important** Updates to `engine` will recreate the Database Instance.
60
+ :param pulumi.Input[_builtins.str] engine: Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
63
61
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] init_settings: Map of engine settings to be set at database initialisation.
64
62
  :param pulumi.Input[_builtins.bool] is_ha_cluster: Enable or disable high availability for the Database Instance.
65
63
 
66
64
  > **Important** Updates to `is_ha_cluster` will recreate the Database Instance.
67
- :param pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]] load_balancers: List of Load Balancer endpoints of the Database Instance.
65
+ :param pulumi.Input['InstanceLoadBalancerArgs'] load_balancer: List of Load Balancer endpoints of the Database Instance.
68
66
  :param pulumi.Input['InstanceLogsPolicyArgs'] logs_policy: Logs policy configuration
69
67
  :param pulumi.Input[_builtins.str] name: The name of the Database Instance.
70
68
  :param pulumi.Input[_builtins.str] password: Password for the first user of the Database Instance.
@@ -102,8 +100,8 @@ class InstanceArgs:
102
100
  pulumi.set(__self__, "init_settings", init_settings)
103
101
  if is_ha_cluster is not None:
104
102
  pulumi.set(__self__, "is_ha_cluster", is_ha_cluster)
105
- if load_balancers is not None:
106
- pulumi.set(__self__, "load_balancers", load_balancers)
103
+ if load_balancer is not None:
104
+ pulumi.set(__self__, "load_balancer", load_balancer)
107
105
  if logs_policy is not None:
108
106
  pulumi.set(__self__, "logs_policy", logs_policy)
109
107
  if name is not None:
@@ -212,9 +210,7 @@ class InstanceArgs:
212
210
  @pulumi.getter
213
211
  def engine(self) -> Optional[pulumi.Input[_builtins.str]]:
214
212
  """
215
- Database Instance's engine version (e.g. `PostgreSQL-11`).
216
-
217
- > **Important** Updates to `engine` will recreate the Database Instance.
213
+ Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
218
214
  """
219
215
  return pulumi.get(self, "engine")
220
216
 
@@ -249,16 +245,16 @@ class InstanceArgs:
249
245
  pulumi.set(self, "is_ha_cluster", value)
250
246
 
251
247
  @_builtins.property
252
- @pulumi.getter(name="loadBalancers")
253
- def load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]]]:
248
+ @pulumi.getter(name="loadBalancer")
249
+ def load_balancer(self) -> Optional[pulumi.Input['InstanceLoadBalancerArgs']]:
254
250
  """
255
251
  List of Load Balancer endpoints of the Database Instance.
256
252
  """
257
- return pulumi.get(self, "load_balancers")
253
+ return pulumi.get(self, "load_balancer")
258
254
 
259
- @load_balancers.setter
260
- def load_balancers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]]]):
261
- pulumi.set(self, "load_balancers", value)
255
+ @load_balancer.setter
256
+ def load_balancer(self, value: Optional[pulumi.Input['InstanceLoadBalancerArgs']]):
257
+ pulumi.set(self, "load_balancer", value)
262
258
 
263
259
  @_builtins.property
264
260
  @pulumi.getter(name="logsPolicy")
@@ -437,7 +433,7 @@ class _InstanceState:
437
433
  engine: Optional[pulumi.Input[_builtins.str]] = None,
438
434
  init_settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
439
435
  is_ha_cluster: Optional[pulumi.Input[_builtins.bool]] = None,
440
- load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]]] = None,
436
+ load_balancer: Optional[pulumi.Input['InstanceLoadBalancerArgs']] = None,
441
437
  logs_policy: Optional[pulumi.Input['InstanceLogsPolicyArgs']] = None,
442
438
  name: Optional[pulumi.Input[_builtins.str]] = None,
443
439
  node_type: Optional[pulumi.Input[_builtins.str]] = None,
@@ -451,6 +447,7 @@ class _InstanceState:
451
447
  settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
452
448
  snapshot_id: Optional[pulumi.Input[_builtins.str]] = None,
453
449
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
450
+ upgradable_versions: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceUpgradableVersionArgs']]]] = None,
454
451
  user_name: Optional[pulumi.Input[_builtins.str]] = None,
455
452
  volume_size_in_gb: Optional[pulumi.Input[_builtins.int]] = None,
456
453
  volume_type: Optional[pulumi.Input[_builtins.str]] = None):
@@ -464,14 +461,12 @@ class _InstanceState:
464
461
  :param pulumi.Input[_builtins.bool] encryption_at_rest: Enable or disable encryption at rest for the Database Instance.
465
462
  :param pulumi.Input[_builtins.str] endpoint_ip: (Deprecated) The IP of the Database Instance. Please use the private_network or the load_balancer attribute.
466
463
  :param pulumi.Input[_builtins.int] endpoint_port: (Deprecated) The port of the Database Instance. Please use the private_network or the load_balancer attribute.
467
- :param pulumi.Input[_builtins.str] engine: Database Instance's engine version (e.g. `PostgreSQL-11`).
468
-
469
- > **Important** Updates to `engine` will recreate the Database Instance.
464
+ :param pulumi.Input[_builtins.str] engine: Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
470
465
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] init_settings: Map of engine settings to be set at database initialisation.
471
466
  :param pulumi.Input[_builtins.bool] is_ha_cluster: Enable or disable high availability for the Database Instance.
472
467
 
473
468
  > **Important** Updates to `is_ha_cluster` will recreate the Database Instance.
474
- :param pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]] load_balancers: List of Load Balancer endpoints of the Database Instance.
469
+ :param pulumi.Input['InstanceLoadBalancerArgs'] load_balancer: List of Load Balancer endpoints of the Database Instance.
475
470
  :param pulumi.Input['InstanceLogsPolicyArgs'] logs_policy: Logs policy configuration
476
471
  :param pulumi.Input[_builtins.str] name: The name of the Database Instance.
477
472
  :param pulumi.Input[_builtins.str] node_type: The type of Database Instance you want to create (e.g. `db-dev-s`).
@@ -492,6 +487,7 @@ class _InstanceState:
492
487
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] settings: Map of engine settings to be set on a running instance.
493
488
  :param pulumi.Input[_builtins.str] snapshot_id: The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the `engine` parameter and backup settings.
494
489
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the Database Instance.
490
+ :param pulumi.Input[Sequence[pulumi.Input['InstanceUpgradableVersionArgs']]] upgradable_versions: List of available engine versions for upgrade. Each version contains:
495
491
  :param pulumi.Input[_builtins.str] user_name: Identifier for the first user of the Database Instance.
496
492
 
497
493
  > **Important** Updates to `user_name` will recreate the Database Instance.
@@ -528,8 +524,8 @@ class _InstanceState:
528
524
  pulumi.set(__self__, "init_settings", init_settings)
529
525
  if is_ha_cluster is not None:
530
526
  pulumi.set(__self__, "is_ha_cluster", is_ha_cluster)
531
- if load_balancers is not None:
532
- pulumi.set(__self__, "load_balancers", load_balancers)
527
+ if load_balancer is not None:
528
+ pulumi.set(__self__, "load_balancer", load_balancer)
533
529
  if logs_policy is not None:
534
530
  pulumi.set(__self__, "logs_policy", logs_policy)
535
531
  if name is not None:
@@ -556,6 +552,8 @@ class _InstanceState:
556
552
  pulumi.set(__self__, "snapshot_id", snapshot_id)
557
553
  if tags is not None:
558
554
  pulumi.set(__self__, "tags", tags)
555
+ if upgradable_versions is not None:
556
+ pulumi.set(__self__, "upgradable_versions", upgradable_versions)
559
557
  if user_name is not None:
560
558
  pulumi.set(__self__, "user_name", user_name)
561
559
  if volume_size_in_gb is not None:
@@ -665,9 +663,7 @@ class _InstanceState:
665
663
  @pulumi.getter
666
664
  def engine(self) -> Optional[pulumi.Input[_builtins.str]]:
667
665
  """
668
- Database Instance's engine version (e.g. `PostgreSQL-11`).
669
-
670
- > **Important** Updates to `engine` will recreate the Database Instance.
666
+ Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
671
667
  """
672
668
  return pulumi.get(self, "engine")
673
669
 
@@ -702,16 +698,16 @@ class _InstanceState:
702
698
  pulumi.set(self, "is_ha_cluster", value)
703
699
 
704
700
  @_builtins.property
705
- @pulumi.getter(name="loadBalancers")
706
- def load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]]]:
701
+ @pulumi.getter(name="loadBalancer")
702
+ def load_balancer(self) -> Optional[pulumi.Input['InstanceLoadBalancerArgs']]:
707
703
  """
708
704
  List of Load Balancer endpoints of the Database Instance.
709
705
  """
710
- return pulumi.get(self, "load_balancers")
706
+ return pulumi.get(self, "load_balancer")
711
707
 
712
- @load_balancers.setter
713
- def load_balancers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceLoadBalancerArgs']]]]):
714
- pulumi.set(self, "load_balancers", value)
708
+ @load_balancer.setter
709
+ def load_balancer(self, value: Optional[pulumi.Input['InstanceLoadBalancerArgs']]):
710
+ pulumi.set(self, "load_balancer", value)
715
711
 
716
712
  @_builtins.property
717
713
  @pulumi.getter(name="logsPolicy")
@@ -876,6 +872,18 @@ class _InstanceState:
876
872
  def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
877
873
  pulumi.set(self, "tags", value)
878
874
 
875
+ @_builtins.property
876
+ @pulumi.getter(name="upgradableVersions")
877
+ def upgradable_versions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceUpgradableVersionArgs']]]]:
878
+ """
879
+ List of available engine versions for upgrade. Each version contains:
880
+ """
881
+ return pulumi.get(self, "upgradable_versions")
882
+
883
+ @upgradable_versions.setter
884
+ def upgradable_versions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceUpgradableVersionArgs']]]]):
885
+ pulumi.set(self, "upgradable_versions", value)
886
+
879
887
  @_builtins.property
880
888
  @pulumi.getter(name="userName")
881
889
  def user_name(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -931,7 +939,7 @@ class Instance(pulumi.CustomResource):
931
939
  engine: Optional[pulumi.Input[_builtins.str]] = None,
932
940
  init_settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
933
941
  is_ha_cluster: Optional[pulumi.Input[_builtins.bool]] = None,
934
- load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]]]] = None,
942
+ load_balancer: Optional[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]] = None,
935
943
  logs_policy: Optional[pulumi.Input[Union['InstanceLogsPolicyArgs', 'InstanceLogsPolicyArgsDict']]] = None,
936
944
  name: Optional[pulumi.Input[_builtins.str]] = None,
937
945
  node_type: Optional[pulumi.Input[_builtins.str]] = None,
@@ -1027,6 +1035,24 @@ class Instance(pulumi.CustomResource):
1027
1035
  backup_schedule_retention=7)
1028
1036
  ```
1029
1037
 
1038
+ ### Example Engine Upgrade
1039
+
1040
+ ```python
1041
+ import pulumi
1042
+ import pulumiverse_scaleway as scaleway
1043
+
1044
+ # Initial creation with PostgreSQL 14
1045
+ main = scaleway.databases.Instance("main",
1046
+ name="my-database",
1047
+ node_type="DB-DEV-S",
1048
+ engine="PostgreSQL-14",
1049
+ is_ha_cluster=False,
1050
+ disable_backup=True,
1051
+ user_name="my_user",
1052
+ password="thiZ_is_v&ry_s3cret")
1053
+ pulumi.export("upgradableVersions", main.upgradable_versions)
1054
+ ```
1055
+
1030
1056
  ### Examples of endpoint configuration
1031
1057
 
1032
1058
  Database Instances can have a maximum of 1 public endpoint and 1 private endpoint. They can have both, or none.
@@ -1057,13 +1083,13 @@ class Instance(pulumi.CustomResource):
1057
1083
 
1058
1084
  pn = scaleway.network.PrivateNetwork("pn")
1059
1085
  main = scaleway.databases.Instance("main",
1060
- load_balancers=[{}],
1061
1086
  node_type="DB-DEV-S",
1062
1087
  engine="PostgreSQL-15",
1063
1088
  private_network={
1064
1089
  "pn_id": pn.id,
1065
1090
  "enable_ipam": True,
1066
- })
1091
+ },
1092
+ load_balancer={})
1067
1093
  ```
1068
1094
 
1069
1095
  ### Default: 1 public endpoint
@@ -1104,14 +1130,12 @@ class Instance(pulumi.CustomResource):
1104
1130
  :param pulumi.Input[_builtins.int] backup_schedule_retention: Backup schedule retention in days
1105
1131
  :param pulumi.Input[_builtins.bool] disable_backup: Disable automated backup for the database instance
1106
1132
  :param pulumi.Input[_builtins.bool] encryption_at_rest: Enable or disable encryption at rest for the Database Instance.
1107
- :param pulumi.Input[_builtins.str] engine: Database Instance's engine version (e.g. `PostgreSQL-11`).
1108
-
1109
- > **Important** Updates to `engine` will recreate the Database Instance.
1133
+ :param pulumi.Input[_builtins.str] engine: Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
1110
1134
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] init_settings: Map of engine settings to be set at database initialisation.
1111
1135
  :param pulumi.Input[_builtins.bool] is_ha_cluster: Enable or disable high availability for the Database Instance.
1112
1136
 
1113
1137
  > **Important** Updates to `is_ha_cluster` will recreate the Database Instance.
1114
- :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]]] load_balancers: List of Load Balancer endpoints of the Database Instance.
1138
+ :param pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']] load_balancer: List of Load Balancer endpoints of the Database Instance.
1115
1139
  :param pulumi.Input[Union['InstanceLogsPolicyArgs', 'InstanceLogsPolicyArgsDict']] logs_policy: Logs policy configuration
1116
1140
  :param pulumi.Input[_builtins.str] name: The name of the Database Instance.
1117
1141
  :param pulumi.Input[_builtins.str] node_type: The type of Database Instance you want to create (e.g. `db-dev-s`).
@@ -1224,6 +1248,24 @@ class Instance(pulumi.CustomResource):
1224
1248
  backup_schedule_retention=7)
1225
1249
  ```
1226
1250
 
1251
+ ### Example Engine Upgrade
1252
+
1253
+ ```python
1254
+ import pulumi
1255
+ import pulumiverse_scaleway as scaleway
1256
+
1257
+ # Initial creation with PostgreSQL 14
1258
+ main = scaleway.databases.Instance("main",
1259
+ name="my-database",
1260
+ node_type="DB-DEV-S",
1261
+ engine="PostgreSQL-14",
1262
+ is_ha_cluster=False,
1263
+ disable_backup=True,
1264
+ user_name="my_user",
1265
+ password="thiZ_is_v&ry_s3cret")
1266
+ pulumi.export("upgradableVersions", main.upgradable_versions)
1267
+ ```
1268
+
1227
1269
  ### Examples of endpoint configuration
1228
1270
 
1229
1271
  Database Instances can have a maximum of 1 public endpoint and 1 private endpoint. They can have both, or none.
@@ -1254,13 +1296,13 @@ class Instance(pulumi.CustomResource):
1254
1296
 
1255
1297
  pn = scaleway.network.PrivateNetwork("pn")
1256
1298
  main = scaleway.databases.Instance("main",
1257
- load_balancers=[{}],
1258
1299
  node_type="DB-DEV-S",
1259
1300
  engine="PostgreSQL-15",
1260
1301
  private_network={
1261
1302
  "pn_id": pn.id,
1262
1303
  "enable_ipam": True,
1263
- })
1304
+ },
1305
+ load_balancer={})
1264
1306
  ```
1265
1307
 
1266
1308
  ### Default: 1 public endpoint
@@ -1317,7 +1359,7 @@ class Instance(pulumi.CustomResource):
1317
1359
  engine: Optional[pulumi.Input[_builtins.str]] = None,
1318
1360
  init_settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1319
1361
  is_ha_cluster: Optional[pulumi.Input[_builtins.bool]] = None,
1320
- load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]]]] = None,
1362
+ load_balancer: Optional[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]] = None,
1321
1363
  logs_policy: Optional[pulumi.Input[Union['InstanceLogsPolicyArgs', 'InstanceLogsPolicyArgsDict']]] = None,
1322
1364
  name: Optional[pulumi.Input[_builtins.str]] = None,
1323
1365
  node_type: Optional[pulumi.Input[_builtins.str]] = None,
@@ -1349,7 +1391,7 @@ class Instance(pulumi.CustomResource):
1349
1391
  __props__.__dict__["engine"] = engine
1350
1392
  __props__.__dict__["init_settings"] = init_settings
1351
1393
  __props__.__dict__["is_ha_cluster"] = is_ha_cluster
1352
- __props__.__dict__["load_balancers"] = load_balancers
1394
+ __props__.__dict__["load_balancer"] = load_balancer
1353
1395
  __props__.__dict__["logs_policy"] = logs_policy
1354
1396
  __props__.__dict__["name"] = name
1355
1397
  if node_type is None and not opts.urn:
@@ -1371,6 +1413,7 @@ class Instance(pulumi.CustomResource):
1371
1413
  __props__.__dict__["endpoint_port"] = None
1372
1414
  __props__.__dict__["organization_id"] = None
1373
1415
  __props__.__dict__["read_replicas"] = None
1416
+ __props__.__dict__["upgradable_versions"] = None
1374
1417
  alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="scaleway:index/databaseInstance:DatabaseInstance")])
1375
1418
  opts = pulumi.ResourceOptions.merge(opts, alias_opts)
1376
1419
  secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["password"])
@@ -1396,7 +1439,7 @@ class Instance(pulumi.CustomResource):
1396
1439
  engine: Optional[pulumi.Input[_builtins.str]] = None,
1397
1440
  init_settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1398
1441
  is_ha_cluster: Optional[pulumi.Input[_builtins.bool]] = None,
1399
- load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]]]] = None,
1442
+ load_balancer: Optional[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]] = None,
1400
1443
  logs_policy: Optional[pulumi.Input[Union['InstanceLogsPolicyArgs', 'InstanceLogsPolicyArgsDict']]] = None,
1401
1444
  name: Optional[pulumi.Input[_builtins.str]] = None,
1402
1445
  node_type: Optional[pulumi.Input[_builtins.str]] = None,
@@ -1410,6 +1453,7 @@ class Instance(pulumi.CustomResource):
1410
1453
  settings: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1411
1454
  snapshot_id: Optional[pulumi.Input[_builtins.str]] = None,
1412
1455
  tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1456
+ upgradable_versions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InstanceUpgradableVersionArgs', 'InstanceUpgradableVersionArgsDict']]]]] = None,
1413
1457
  user_name: Optional[pulumi.Input[_builtins.str]] = None,
1414
1458
  volume_size_in_gb: Optional[pulumi.Input[_builtins.int]] = None,
1415
1459
  volume_type: Optional[pulumi.Input[_builtins.str]] = None) -> 'Instance':
@@ -1428,14 +1472,12 @@ class Instance(pulumi.CustomResource):
1428
1472
  :param pulumi.Input[_builtins.bool] encryption_at_rest: Enable or disable encryption at rest for the Database Instance.
1429
1473
  :param pulumi.Input[_builtins.str] endpoint_ip: (Deprecated) The IP of the Database Instance. Please use the private_network or the load_balancer attribute.
1430
1474
  :param pulumi.Input[_builtins.int] endpoint_port: (Deprecated) The port of the Database Instance. Please use the private_network or the load_balancer attribute.
1431
- :param pulumi.Input[_builtins.str] engine: Database Instance's engine version (e.g. `PostgreSQL-11`).
1432
-
1433
- > **Important** Updates to `engine` will recreate the Database Instance.
1475
+ :param pulumi.Input[_builtins.str] engine: Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
1434
1476
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] init_settings: Map of engine settings to be set at database initialisation.
1435
1477
  :param pulumi.Input[_builtins.bool] is_ha_cluster: Enable or disable high availability for the Database Instance.
1436
1478
 
1437
1479
  > **Important** Updates to `is_ha_cluster` will recreate the Database Instance.
1438
- :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']]]] load_balancers: List of Load Balancer endpoints of the Database Instance.
1480
+ :param pulumi.Input[Union['InstanceLoadBalancerArgs', 'InstanceLoadBalancerArgsDict']] load_balancer: List of Load Balancer endpoints of the Database Instance.
1439
1481
  :param pulumi.Input[Union['InstanceLogsPolicyArgs', 'InstanceLogsPolicyArgsDict']] logs_policy: Logs policy configuration
1440
1482
  :param pulumi.Input[_builtins.str] name: The name of the Database Instance.
1441
1483
  :param pulumi.Input[_builtins.str] node_type: The type of Database Instance you want to create (e.g. `db-dev-s`).
@@ -1456,6 +1498,7 @@ class Instance(pulumi.CustomResource):
1456
1498
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] settings: Map of engine settings to be set on a running instance.
1457
1499
  :param pulumi.Input[_builtins.str] snapshot_id: The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the `engine` parameter and backup settings.
1458
1500
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the Database Instance.
1501
+ :param pulumi.Input[Sequence[pulumi.Input[Union['InstanceUpgradableVersionArgs', 'InstanceUpgradableVersionArgsDict']]]] upgradable_versions: List of available engine versions for upgrade. Each version contains:
1459
1502
  :param pulumi.Input[_builtins.str] user_name: Identifier for the first user of the Database Instance.
1460
1503
 
1461
1504
  > **Important** Updates to `user_name` will recreate the Database Instance.
@@ -1479,7 +1522,7 @@ class Instance(pulumi.CustomResource):
1479
1522
  __props__.__dict__["engine"] = engine
1480
1523
  __props__.__dict__["init_settings"] = init_settings
1481
1524
  __props__.__dict__["is_ha_cluster"] = is_ha_cluster
1482
- __props__.__dict__["load_balancers"] = load_balancers
1525
+ __props__.__dict__["load_balancer"] = load_balancer
1483
1526
  __props__.__dict__["logs_policy"] = logs_policy
1484
1527
  __props__.__dict__["name"] = name
1485
1528
  __props__.__dict__["node_type"] = node_type
@@ -1493,6 +1536,7 @@ class Instance(pulumi.CustomResource):
1493
1536
  __props__.__dict__["settings"] = settings
1494
1537
  __props__.__dict__["snapshot_id"] = snapshot_id
1495
1538
  __props__.__dict__["tags"] = tags
1539
+ __props__.__dict__["upgradable_versions"] = upgradable_versions
1496
1540
  __props__.__dict__["user_name"] = user_name
1497
1541
  __props__.__dict__["volume_size_in_gb"] = volume_size_in_gb
1498
1542
  __props__.__dict__["volume_type"] = volume_type
@@ -1568,9 +1612,7 @@ class Instance(pulumi.CustomResource):
1568
1612
  @pulumi.getter
1569
1613
  def engine(self) -> pulumi.Output[_builtins.str]:
1570
1614
  """
1571
- Database Instance's engine version (e.g. `PostgreSQL-11`).
1572
-
1573
- > **Important** Updates to `engine` will recreate the Database Instance.
1615
+ Database's engine version name (e.g., 'PostgreSQL-16', 'MySQL-8'). Changing this value triggers a blue/green upgrade using MajorUpgradeWorkflow with automatic endpoint migration
1574
1616
  """
1575
1617
  return pulumi.get(self, "engine")
1576
1618
 
@@ -1593,12 +1635,12 @@ class Instance(pulumi.CustomResource):
1593
1635
  return pulumi.get(self, "is_ha_cluster")
1594
1636
 
1595
1637
  @_builtins.property
1596
- @pulumi.getter(name="loadBalancers")
1597
- def load_balancers(self) -> pulumi.Output[Sequence['outputs.InstanceLoadBalancer']]:
1638
+ @pulumi.getter(name="loadBalancer")
1639
+ def load_balancer(self) -> pulumi.Output['outputs.InstanceLoadBalancer']:
1598
1640
  """
1599
1641
  List of Load Balancer endpoints of the Database Instance.
1600
1642
  """
1601
- return pulumi.get(self, "load_balancers")
1643
+ return pulumi.get(self, "load_balancer")
1602
1644
 
1603
1645
  @_builtins.property
1604
1646
  @pulumi.getter(name="logsPolicy")
@@ -1711,6 +1753,14 @@ class Instance(pulumi.CustomResource):
1711
1753
  """
1712
1754
  return pulumi.get(self, "tags")
1713
1755
 
1756
+ @_builtins.property
1757
+ @pulumi.getter(name="upgradableVersions")
1758
+ def upgradable_versions(self) -> pulumi.Output[Sequence['outputs.InstanceUpgradableVersion']]:
1759
+ """
1760
+ List of available engine versions for upgrade. Each version contains:
1761
+ """
1762
+ return pulumi.get(self, "upgradable_versions")
1763
+
1714
1764
  @_builtins.property
1715
1765
  @pulumi.getter(name="userName")
1716
1766
  def user_name(self) -> pulumi.Output[_builtins.str]:
@@ -21,6 +21,7 @@ __all__ = [
21
21
  'InstancePrivateIp',
22
22
  'InstancePrivateNetwork',
23
23
  'InstanceReadReplica',
24
+ 'InstanceUpgradableVersion',
24
25
  'ReadReplicaDirectAccess',
25
26
  'ReadReplicaPrivateNetwork',
26
27
  'GetAclAclRuleResult',
@@ -29,6 +30,7 @@ __all__ = [
29
30
  'GetInstancePrivateIpResult',
30
31
  'GetInstancePrivateNetworkResult',
31
32
  'GetInstanceReadReplicaResult',
33
+ 'GetInstanceUpgradableVersionResult',
32
34
  ]
33
35
 
34
36
  @pulumi.output_type
@@ -202,7 +204,7 @@ class InstancePrivateIp(dict):
202
204
  id: Optional[_builtins.str] = None):
203
205
  """
204
206
  :param _builtins.str address: The private IPv4 address.
205
- :param _builtins.str id: The ID of the IPv4 address resource.
207
+ :param _builtins.str id: Version ID to use in upgrade requests.
206
208
  """
207
209
  if address is not None:
208
210
  pulumi.set(__self__, "address", address)
@@ -221,7 +223,7 @@ class InstancePrivateIp(dict):
221
223
  @pulumi.getter
222
224
  def id(self) -> Optional[_builtins.str]:
223
225
  """
224
- The ID of the IPv4 address resource.
226
+ Version ID to use in upgrade requests.
225
227
  """
226
228
  return pulumi.get(self, "id")
227
229
 
@@ -406,6 +408,78 @@ class InstanceReadReplica(dict):
406
408
  return pulumi.get(self, "port")
407
409
 
408
410
 
411
+ @pulumi.output_type
412
+ class InstanceUpgradableVersion(dict):
413
+ @staticmethod
414
+ def __key_warning(key: str):
415
+ suggest = None
416
+ if key == "minorVersion":
417
+ suggest = "minor_version"
418
+
419
+ if suggest:
420
+ pulumi.log.warn(f"Key '{key}' not found in InstanceUpgradableVersion. Access the value via the '{suggest}' property getter instead.")
421
+
422
+ def __getitem__(self, key: str) -> Any:
423
+ InstanceUpgradableVersion.__key_warning(key)
424
+ return super().__getitem__(key)
425
+
426
+ def get(self, key: str, default = None) -> Any:
427
+ InstanceUpgradableVersion.__key_warning(key)
428
+ return super().get(key, default)
429
+
430
+ def __init__(__self__, *,
431
+ id: Optional[_builtins.str] = None,
432
+ minor_version: Optional[_builtins.str] = None,
433
+ name: Optional[_builtins.str] = None,
434
+ version: Optional[_builtins.str] = None):
435
+ """
436
+ :param _builtins.str id: Version ID to use in upgrade requests.
437
+ :param _builtins.str minor_version: Minor version string (e.g., `15.5.0`).
438
+ :param _builtins.str name: The name of the Database Instance.
439
+ :param _builtins.str version: Version string (e.g., `15.5`).
440
+ """
441
+ if id is not None:
442
+ pulumi.set(__self__, "id", id)
443
+ if minor_version is not None:
444
+ pulumi.set(__self__, "minor_version", minor_version)
445
+ if name is not None:
446
+ pulumi.set(__self__, "name", name)
447
+ if version is not None:
448
+ pulumi.set(__self__, "version", version)
449
+
450
+ @_builtins.property
451
+ @pulumi.getter
452
+ def id(self) -> Optional[_builtins.str]:
453
+ """
454
+ Version ID to use in upgrade requests.
455
+ """
456
+ return pulumi.get(self, "id")
457
+
458
+ @_builtins.property
459
+ @pulumi.getter(name="minorVersion")
460
+ def minor_version(self) -> Optional[_builtins.str]:
461
+ """
462
+ Minor version string (e.g., `15.5.0`).
463
+ """
464
+ return pulumi.get(self, "minor_version")
465
+
466
+ @_builtins.property
467
+ @pulumi.getter
468
+ def name(self) -> Optional[_builtins.str]:
469
+ """
470
+ The name of the Database Instance.
471
+ """
472
+ return pulumi.get(self, "name")
473
+
474
+ @_builtins.property
475
+ @pulumi.getter
476
+ def version(self) -> Optional[_builtins.str]:
477
+ """
478
+ Version string (e.g., `15.5`).
479
+ """
480
+ return pulumi.get(self, "version")
481
+
482
+
409
483
  @pulumi.output_type
410
484
  class ReadReplicaDirectAccess(dict):
411
485
  @staticmethod
@@ -926,3 +1000,54 @@ class GetInstanceReadReplicaResult(dict):
926
1000
  return pulumi.get(self, "port")
927
1001
 
928
1002
 
1003
+ @pulumi.output_type
1004
+ class GetInstanceUpgradableVersionResult(dict):
1005
+ def __init__(__self__, *,
1006
+ id: _builtins.str,
1007
+ minor_version: _builtins.str,
1008
+ name: _builtins.str,
1009
+ version: _builtins.str):
1010
+ """
1011
+ :param _builtins.str id: The ID of the Database Instance.
1012
+ :param _builtins.str minor_version: Minor version string
1013
+ :param _builtins.str name: The name of the RDB instance.
1014
+ :param _builtins.str version: Version string
1015
+ """
1016
+ pulumi.set(__self__, "id", id)
1017
+ pulumi.set(__self__, "minor_version", minor_version)
1018
+ pulumi.set(__self__, "name", name)
1019
+ pulumi.set(__self__, "version", version)
1020
+
1021
+ @_builtins.property
1022
+ @pulumi.getter
1023
+ def id(self) -> _builtins.str:
1024
+ """
1025
+ The ID of the Database Instance.
1026
+ """
1027
+ return pulumi.get(self, "id")
1028
+
1029
+ @_builtins.property
1030
+ @pulumi.getter(name="minorVersion")
1031
+ def minor_version(self) -> _builtins.str:
1032
+ """
1033
+ Minor version string
1034
+ """
1035
+ return pulumi.get(self, "minor_version")
1036
+
1037
+ @_builtins.property
1038
+ @pulumi.getter
1039
+ def name(self) -> _builtins.str:
1040
+ """
1041
+ The name of the RDB instance.
1042
+ """
1043
+ return pulumi.get(self, "name")
1044
+
1045
+ @_builtins.property
1046
+ @pulumi.getter
1047
+ def version(self) -> _builtins.str:
1048
+ """
1049
+ Version string
1050
+ """
1051
+ return pulumi.get(self, "version")
1052
+
1053
+
@@ -271,7 +271,7 @@ class User(pulumi.CustomResource):
271
271
  disable_backup=True,
272
272
  user_name="my_initial_user",
273
273
  password="thiZ_is_v&ry_s3cret")
274
- db_password = random.RandomPassword("db_password",
274
+ db_password = random.index.Password("db_password",
275
275
  length=20,
276
276
  special=True,
277
277
  upper=True,
@@ -281,11 +281,11 @@ class User(pulumi.CustomResource):
281
281
  min_lower=1,
282
282
  min_numeric=1,
283
283
  min_special=1,
284
- override_special="!@#$%^&*()_+-=[]{}|;:,.<>?")
284
+ override_special=!@#$%^&*()_+-=[]{}|;:,.<>?)
285
285
  db_admin = scaleway.databases.User("db_admin",
286
286
  instance_id=main.id,
287
287
  name="devtools",
288
- password=db_password.result,
288
+ password=db_password["result"],
289
289
  is_admin=True)
290
290
  ```
291
291
 
@@ -346,7 +346,7 @@ class User(pulumi.CustomResource):
346
346
  disable_backup=True,
347
347
  user_name="my_initial_user",
348
348
  password="thiZ_is_v&ry_s3cret")
349
- db_password = random.RandomPassword("db_password",
349
+ db_password = random.index.Password("db_password",
350
350
  length=20,
351
351
  special=True,
352
352
  upper=True,
@@ -356,11 +356,11 @@ class User(pulumi.CustomResource):
356
356
  min_lower=1,
357
357
  min_numeric=1,
358
358
  min_special=1,
359
- override_special="!@#$%^&*()_+-=[]{}|;:,.<>?")
359
+ override_special=!@#$%^&*()_+-=[]{}|;:,.<>?)
360
360
  db_admin = scaleway.databases.User("db_admin",
361
361
  instance_id=main.id,
362
362
  name="devtools",
363
- password=db_password.result,
363
+ password=db_password["result"],
364
364
  is_admin=True)
365
365
  ```
366
366
 
@@ -0,0 +1,13 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins as _builtins
6
+ from .. import _utilities
7
+ import typing
8
+ # Export this package's modules as members:
9
+ from .database import *
10
+ from .deployment import *
11
+ from .user import *
12
+ from ._inputs import *
13
+ from . import outputs