pulumiverse-scaleway 1.27.0a1744869119__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 (515) hide show
  1. pulumiverse_scaleway/__init__.py +109 -2
  2. pulumiverse_scaleway/_inputs.py +3936 -2603
  3. pulumiverse_scaleway/_utilities.py +1 -1
  4. pulumiverse_scaleway/account/__init__.py +4 -1
  5. pulumiverse_scaleway/account/get_availability_zones.py +12 -12
  6. pulumiverse_scaleway/account/get_project.py +28 -28
  7. pulumiverse_scaleway/account/get_projects.py +241 -0
  8. pulumiverse_scaleway/account/get_ssh_key.py +34 -34
  9. pulumiverse_scaleway/account/outputs.py +95 -0
  10. pulumiverse_scaleway/account/project.py +72 -71
  11. pulumiverse_scaleway/account/ssh_key.py +107 -106
  12. pulumiverse_scaleway/account_project.py +72 -71
  13. pulumiverse_scaleway/account_ssh_key.py +107 -106
  14. pulumiverse_scaleway/apple_silicon_server.py +334 -201
  15. pulumiverse_scaleway/applesilicon/__init__.py +2 -1
  16. pulumiverse_scaleway/applesilicon/_inputs.py +105 -51
  17. pulumiverse_scaleway/applesilicon/outputs.py +65 -33
  18. pulumiverse_scaleway/applesilicon/server.py +334 -201
  19. pulumiverse_scaleway/audittrail/__init__.py +10 -0
  20. pulumiverse_scaleway/audittrail/get_event.py +410 -0
  21. pulumiverse_scaleway/audittrail/outputs.py +234 -0
  22. pulumiverse_scaleway/autoscaling/__init__.py +13 -0
  23. pulumiverse_scaleway/autoscaling/_inputs.py +558 -0
  24. pulumiverse_scaleway/autoscaling/instance_group.py +807 -0
  25. pulumiverse_scaleway/autoscaling/instance_policy.py +634 -0
  26. pulumiverse_scaleway/autoscaling/instance_template.py +878 -0
  27. pulumiverse_scaleway/autoscaling/outputs.py +438 -0
  28. pulumiverse_scaleway/baremetal_server.py +622 -524
  29. pulumiverse_scaleway/billing/__init__.py +2 -1
  30. pulumiverse_scaleway/billing/get_consumptions.py +19 -15
  31. pulumiverse_scaleway/billing/get_invoices.py +25 -25
  32. pulumiverse_scaleway/billing/outputs.py +96 -96
  33. pulumiverse_scaleway/block/__init__.py +4 -1
  34. pulumiverse_scaleway/block/_inputs.py +125 -0
  35. pulumiverse_scaleway/block/get_snapshot.py +60 -37
  36. pulumiverse_scaleway/block/get_volume.py +38 -38
  37. pulumiverse_scaleway/block/outputs.py +139 -0
  38. pulumiverse_scaleway/block/snapshot.py +272 -98
  39. pulumiverse_scaleway/block/volume.py +145 -144
  40. pulumiverse_scaleway/block_snapshot.py +272 -98
  41. pulumiverse_scaleway/block_volume.py +145 -144
  42. pulumiverse_scaleway/cockpit.py +71 -49
  43. pulumiverse_scaleway/cockpit_alert_manager.py +66 -65
  44. pulumiverse_scaleway/cockpit_grafana_user.py +72 -113
  45. pulumiverse_scaleway/cockpit_source.py +142 -141
  46. pulumiverse_scaleway/cockpit_token.py +84 -83
  47. pulumiverse_scaleway/config/__init__.py +2 -1
  48. pulumiverse_scaleway/config/__init__.pyi +2 -2
  49. pulumiverse_scaleway/config/vars.py +11 -11
  50. pulumiverse_scaleway/container.py +653 -424
  51. pulumiverse_scaleway/container_cron.py +97 -96
  52. pulumiverse_scaleway/container_domain.py +63 -62
  53. pulumiverse_scaleway/container_namespace.py +251 -172
  54. pulumiverse_scaleway/container_token.py +97 -96
  55. pulumiverse_scaleway/container_trigger.py +77 -76
  56. pulumiverse_scaleway/containers/__init__.py +2 -1
  57. pulumiverse_scaleway/containers/_inputs.py +87 -87
  58. pulumiverse_scaleway/containers/container.py +653 -424
  59. pulumiverse_scaleway/containers/cron.py +97 -96
  60. pulumiverse_scaleway/containers/domain.py +63 -62
  61. pulumiverse_scaleway/containers/get_container.py +117 -73
  62. pulumiverse_scaleway/containers/get_namespace.py +56 -45
  63. pulumiverse_scaleway/containers/namespace.py +251 -172
  64. pulumiverse_scaleway/containers/outputs.py +84 -84
  65. pulumiverse_scaleway/containers/token.py +97 -96
  66. pulumiverse_scaleway/containers/trigger.py +77 -76
  67. pulumiverse_scaleway/database.py +81 -80
  68. pulumiverse_scaleway/database_acl.py +148 -39
  69. pulumiverse_scaleway/database_backup.py +124 -123
  70. pulumiverse_scaleway/database_instance.py +531 -436
  71. pulumiverse_scaleway/database_privilege.py +88 -87
  72. pulumiverse_scaleway/database_read_replica.py +60 -59
  73. pulumiverse_scaleway/database_user.py +171 -98
  74. pulumiverse_scaleway/databases/__init__.py +2 -1
  75. pulumiverse_scaleway/databases/_inputs.py +364 -216
  76. pulumiverse_scaleway/databases/acl.py +148 -39
  77. pulumiverse_scaleway/databases/database.py +81 -80
  78. pulumiverse_scaleway/databases/database_backup.py +124 -123
  79. pulumiverse_scaleway/databases/get_acl.py +17 -17
  80. pulumiverse_scaleway/databases/get_database.py +26 -26
  81. pulumiverse_scaleway/databases/get_database_backup.py +46 -46
  82. pulumiverse_scaleway/databases/get_instance.py +95 -73
  83. pulumiverse_scaleway/databases/get_privilege.py +30 -30
  84. pulumiverse_scaleway/databases/instance.py +531 -436
  85. pulumiverse_scaleway/databases/outputs.py +419 -232
  86. pulumiverse_scaleway/databases/privilege.py +88 -87
  87. pulumiverse_scaleway/databases/read_replica.py +60 -59
  88. pulumiverse_scaleway/databases/serverless_database.py +97 -96
  89. pulumiverse_scaleway/databases/snapshot.py +127 -126
  90. pulumiverse_scaleway/databases/user.py +171 -98
  91. pulumiverse_scaleway/datawarehouse/__init__.py +13 -0
  92. pulumiverse_scaleway/datawarehouse/_inputs.py +149 -0
  93. pulumiverse_scaleway/datawarehouse/database.py +338 -0
  94. pulumiverse_scaleway/datawarehouse/deployment.py +821 -0
  95. pulumiverse_scaleway/datawarehouse/outputs.py +113 -0
  96. pulumiverse_scaleway/datawarehouse/user.py +451 -0
  97. pulumiverse_scaleway/domain/__init__.py +2 -1
  98. pulumiverse_scaleway/domain/_inputs.py +661 -661
  99. pulumiverse_scaleway/domain/get_record.py +53 -64
  100. pulumiverse_scaleway/domain/get_zone.py +36 -30
  101. pulumiverse_scaleway/domain/outputs.py +501 -501
  102. pulumiverse_scaleway/domain/record.py +156 -202
  103. pulumiverse_scaleway/domain/registration.py +123 -122
  104. pulumiverse_scaleway/domain/zone.py +108 -107
  105. pulumiverse_scaleway/domain_record.py +156 -202
  106. pulumiverse_scaleway/domain_zone.py +108 -107
  107. pulumiverse_scaleway/edge_services_backend_stage.py +61 -60
  108. pulumiverse_scaleway/edge_services_cache_stage.py +283 -111
  109. pulumiverse_scaleway/edge_services_dns_stage.py +169 -140
  110. pulumiverse_scaleway/edge_services_head_stage.py +37 -36
  111. pulumiverse_scaleway/edge_services_pipeline.py +125 -82
  112. pulumiverse_scaleway/edge_services_plan.py +37 -36
  113. pulumiverse_scaleway/edge_services_route_stage.py +75 -74
  114. pulumiverse_scaleway/edge_services_tls_stage.py +219 -124
  115. pulumiverse_scaleway/edge_services_waf_stage.py +106 -105
  116. pulumiverse_scaleway/elasticmetal/__init__.py +3 -1
  117. pulumiverse_scaleway/elasticmetal/_inputs.py +203 -129
  118. pulumiverse_scaleway/elasticmetal/get_ip.py +70 -54
  119. pulumiverse_scaleway/elasticmetal/get_ips.py +31 -31
  120. pulumiverse_scaleway/elasticmetal/get_offer.py +43 -41
  121. pulumiverse_scaleway/elasticmetal/get_option.py +24 -24
  122. pulumiverse_scaleway/elasticmetal/get_os.py +28 -28
  123. pulumiverse_scaleway/elasticmetal/get_partition_schema.py +215 -0
  124. pulumiverse_scaleway/elasticmetal/get_server.py +101 -68
  125. pulumiverse_scaleway/elasticmetal/ip.py +170 -169
  126. pulumiverse_scaleway/elasticmetal/ip_mac_address.py +107 -106
  127. pulumiverse_scaleway/elasticmetal/outputs.py +379 -287
  128. pulumiverse_scaleway/elasticmetal/server.py +622 -524
  129. pulumiverse_scaleway/file_filesystem.py +555 -0
  130. pulumiverse_scaleway/flexible_ip.py +170 -169
  131. pulumiverse_scaleway/flexible_ip_mac_address.py +107 -106
  132. pulumiverse_scaleway/function.py +457 -348
  133. pulumiverse_scaleway/function_cron.py +97 -96
  134. pulumiverse_scaleway/function_domain.py +63 -62
  135. pulumiverse_scaleway/function_namespace.py +234 -155
  136. pulumiverse_scaleway/function_token.py +97 -96
  137. pulumiverse_scaleway/function_trigger.py +77 -76
  138. pulumiverse_scaleway/functions/__init__.py +2 -1
  139. pulumiverse_scaleway/functions/_inputs.py +50 -50
  140. pulumiverse_scaleway/functions/cron.py +97 -96
  141. pulumiverse_scaleway/functions/domain.py +63 -62
  142. pulumiverse_scaleway/functions/function.py +457 -348
  143. pulumiverse_scaleway/functions/get_function.py +93 -71
  144. pulumiverse_scaleway/functions/get_namespace.py +54 -43
  145. pulumiverse_scaleway/functions/namespace.py +234 -155
  146. pulumiverse_scaleway/functions/outputs.py +34 -34
  147. pulumiverse_scaleway/functions/token.py +97 -96
  148. pulumiverse_scaleway/functions/trigger.py +77 -76
  149. pulumiverse_scaleway/get_account_project.py +28 -28
  150. pulumiverse_scaleway/get_account_ssh_key.py +34 -34
  151. pulumiverse_scaleway/get_availability_zones.py +12 -12
  152. pulumiverse_scaleway/get_baremetal_offer.py +43 -41
  153. pulumiverse_scaleway/get_baremetal_option.py +24 -24
  154. pulumiverse_scaleway/get_baremetal_os.py +28 -28
  155. pulumiverse_scaleway/get_baremetal_server.py +101 -68
  156. pulumiverse_scaleway/get_billing_consumptions.py +19 -15
  157. pulumiverse_scaleway/get_billing_invoices.py +25 -25
  158. pulumiverse_scaleway/get_block_snapshot.py +60 -37
  159. pulumiverse_scaleway/get_block_volume.py +38 -38
  160. pulumiverse_scaleway/get_cockpit.py +16 -16
  161. pulumiverse_scaleway/get_cockpit_source.py +88 -45
  162. pulumiverse_scaleway/get_config.py +24 -24
  163. pulumiverse_scaleway/get_container.py +117 -73
  164. pulumiverse_scaleway/get_container_namespace.py +56 -45
  165. pulumiverse_scaleway/get_database.py +26 -26
  166. pulumiverse_scaleway/get_database_acl.py +17 -17
  167. pulumiverse_scaleway/get_database_backup.py +46 -46
  168. pulumiverse_scaleway/get_database_instance.py +95 -73
  169. pulumiverse_scaleway/get_database_privilege.py +30 -30
  170. pulumiverse_scaleway/get_domain_record.py +53 -64
  171. pulumiverse_scaleway/get_domain_zone.py +36 -30
  172. pulumiverse_scaleway/get_flexible_ip.py +70 -54
  173. pulumiverse_scaleway/get_flexible_ips.py +31 -31
  174. pulumiverse_scaleway/get_function.py +93 -71
  175. pulumiverse_scaleway/get_function_namespace.py +54 -43
  176. pulumiverse_scaleway/get_iam_api_key.py +28 -28
  177. pulumiverse_scaleway/get_iam_application.py +32 -32
  178. pulumiverse_scaleway/get_iam_group.py +36 -36
  179. pulumiverse_scaleway/get_iam_ssh_key.py +34 -34
  180. pulumiverse_scaleway/get_iam_user.py +30 -30
  181. pulumiverse_scaleway/get_instance_image.py +58 -58
  182. pulumiverse_scaleway/get_instance_ip.py +42 -30
  183. pulumiverse_scaleway/get_instance_placement_group.py +38 -38
  184. pulumiverse_scaleway/get_instance_private_nic.py +53 -41
  185. pulumiverse_scaleway/get_instance_security_group.py +46 -46
  186. pulumiverse_scaleway/get_instance_server.py +108 -145
  187. pulumiverse_scaleway/get_instance_servers.py +31 -31
  188. pulumiverse_scaleway/get_instance_snapshot.py +41 -41
  189. pulumiverse_scaleway/get_instance_volume.py +42 -42
  190. pulumiverse_scaleway/get_iot_device.py +46 -46
  191. pulumiverse_scaleway/get_iot_hub.py +60 -60
  192. pulumiverse_scaleway/get_ipam_ip.py +65 -65
  193. pulumiverse_scaleway/get_ipam_ips.py +56 -56
  194. pulumiverse_scaleway/get_k8s_version.py +34 -23
  195. pulumiverse_scaleway/get_kubernetes_cluster.py +98 -65
  196. pulumiverse_scaleway/get_kubernetes_node_pool.py +86 -75
  197. pulumiverse_scaleway/get_lb_acls.py +29 -29
  198. pulumiverse_scaleway/get_lb_backend.py +75 -75
  199. pulumiverse_scaleway/get_lb_backends.py +29 -29
  200. pulumiverse_scaleway/get_lb_frontend.py +76 -43
  201. pulumiverse_scaleway/get_lb_frontends.py +29 -29
  202. pulumiverse_scaleway/get_lb_ips.py +37 -37
  203. pulumiverse_scaleway/get_lb_route.py +36 -25
  204. pulumiverse_scaleway/get_lb_routes.py +23 -23
  205. pulumiverse_scaleway/get_lbs.py +31 -31
  206. pulumiverse_scaleway/get_loadbalancer.py +78 -56
  207. pulumiverse_scaleway/get_loadbalancer_certificate.py +96 -36
  208. pulumiverse_scaleway/get_loadbalancer_ip.py +40 -40
  209. pulumiverse_scaleway/get_marketplace_image.py +28 -28
  210. pulumiverse_scaleway/get_mnq_sns.py +18 -18
  211. pulumiverse_scaleway/get_mnq_sqs.py +18 -18
  212. pulumiverse_scaleway/get_mongo_db_instance.py +110 -55
  213. pulumiverse_scaleway/get_object_bucket.py +35 -35
  214. pulumiverse_scaleway/get_object_bucket_policy.py +22 -22
  215. pulumiverse_scaleway/get_redis_cluster.py +65 -54
  216. pulumiverse_scaleway/get_registry_image.py +48 -48
  217. pulumiverse_scaleway/get_registry_image_tag.py +44 -44
  218. pulumiverse_scaleway/get_registry_namespace.py +36 -36
  219. pulumiverse_scaleway/get_secret.py +58 -58
  220. pulumiverse_scaleway/get_secret_version.py +46 -46
  221. pulumiverse_scaleway/get_tem_domain.py +103 -70
  222. pulumiverse_scaleway/get_vpc.py +58 -47
  223. pulumiverse_scaleway/get_vpc_gateway_network.py +55 -44
  224. pulumiverse_scaleway/get_vpc_private_network.py +58 -47
  225. pulumiverse_scaleway/get_vpc_public_gateway.py +56 -56
  226. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +44 -44
  227. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +44 -44
  228. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +24 -24
  229. pulumiverse_scaleway/get_vpc_public_pat_rule.py +32 -32
  230. pulumiverse_scaleway/get_vpc_routes.py +47 -47
  231. pulumiverse_scaleway/get_vpcs.py +31 -31
  232. pulumiverse_scaleway/get_web_host_offer.py +34 -34
  233. pulumiverse_scaleway/get_webhosting.py +58 -58
  234. pulumiverse_scaleway/hosting/__init__.py +2 -1
  235. pulumiverse_scaleway/hosting/_inputs.py +117 -75
  236. pulumiverse_scaleway/hosting/get_hosting.py +58 -58
  237. pulumiverse_scaleway/hosting/get_offer.py +34 -34
  238. pulumiverse_scaleway/hosting/hosting.py +213 -212
  239. pulumiverse_scaleway/hosting/outputs.py +276 -192
  240. pulumiverse_scaleway/iam/__init__.py +3 -1
  241. pulumiverse_scaleway/iam/_inputs.py +26 -26
  242. pulumiverse_scaleway/iam/api_key.py +142 -141
  243. pulumiverse_scaleway/iam/application.py +98 -97
  244. pulumiverse_scaleway/iam/get_api_key.py +28 -28
  245. pulumiverse_scaleway/iam/get_application.py +32 -32
  246. pulumiverse_scaleway/iam/get_group.py +36 -36
  247. pulumiverse_scaleway/iam/get_policy.py +293 -0
  248. pulumiverse_scaleway/iam/get_ssh_key.py +34 -34
  249. pulumiverse_scaleway/iam/get_user.py +30 -30
  250. pulumiverse_scaleway/iam/group.py +140 -139
  251. pulumiverse_scaleway/iam/group_membership.py +54 -53
  252. pulumiverse_scaleway/iam/outputs.py +70 -18
  253. pulumiverse_scaleway/iam/policy.py +169 -168
  254. pulumiverse_scaleway/iam/ssh_key.py +107 -106
  255. pulumiverse_scaleway/iam/user.py +598 -134
  256. pulumiverse_scaleway/iam_api_key.py +142 -141
  257. pulumiverse_scaleway/iam_application.py +98 -97
  258. pulumiverse_scaleway/iam_group.py +140 -139
  259. pulumiverse_scaleway/iam_group_membership.py +54 -53
  260. pulumiverse_scaleway/iam_policy.py +169 -168
  261. pulumiverse_scaleway/iam_ssh_key.py +107 -106
  262. pulumiverse_scaleway/iam_user.py +598 -134
  263. pulumiverse_scaleway/inference/__init__.py +4 -1
  264. pulumiverse_scaleway/inference/_inputs.py +232 -50
  265. pulumiverse_scaleway/inference/deployment.py +319 -220
  266. pulumiverse_scaleway/inference/get_model.py +299 -0
  267. pulumiverse_scaleway/inference/model.py +684 -0
  268. pulumiverse_scaleway/inference/outputs.py +250 -34
  269. pulumiverse_scaleway/inference_deployment.py +319 -220
  270. pulumiverse_scaleway/instance/__init__.py +3 -1
  271. pulumiverse_scaleway/instance/_inputs.py +650 -437
  272. pulumiverse_scaleway/instance/get_image.py +58 -58
  273. pulumiverse_scaleway/instance/get_ip.py +42 -30
  274. pulumiverse_scaleway/instance/get_placement_group.py +38 -38
  275. pulumiverse_scaleway/instance/get_private_nic.py +53 -41
  276. pulumiverse_scaleway/instance/get_security_group.py +46 -46
  277. pulumiverse_scaleway/instance/get_server.py +108 -145
  278. pulumiverse_scaleway/instance/get_server_type.py +271 -0
  279. pulumiverse_scaleway/instance/get_servers.py +31 -31
  280. pulumiverse_scaleway/instance/get_snapshot.py +41 -41
  281. pulumiverse_scaleway/instance/get_volume.py +42 -42
  282. pulumiverse_scaleway/instance/image.py +260 -205
  283. pulumiverse_scaleway/instance/ip.py +116 -115
  284. pulumiverse_scaleway/instance/ip_reverse_dns.py +54 -53
  285. pulumiverse_scaleway/instance/outputs.py +981 -548
  286. pulumiverse_scaleway/instance/placement_group.py +123 -122
  287. pulumiverse_scaleway/instance/private_nic.py +163 -113
  288. pulumiverse_scaleway/instance/security_group.py +188 -187
  289. pulumiverse_scaleway/instance/security_group_rules.py +42 -41
  290. pulumiverse_scaleway/instance/server.py +590 -562
  291. pulumiverse_scaleway/instance/snapshot.py +150 -157
  292. pulumiverse_scaleway/instance/user_data.py +75 -74
  293. pulumiverse_scaleway/instance/volume.py +174 -159
  294. pulumiverse_scaleway/instance_image.py +260 -205
  295. pulumiverse_scaleway/instance_ip.py +116 -115
  296. pulumiverse_scaleway/instance_ip_reverse_dns.py +54 -53
  297. pulumiverse_scaleway/instance_placement_group.py +123 -122
  298. pulumiverse_scaleway/instance_private_nic.py +163 -113
  299. pulumiverse_scaleway/instance_security_group.py +188 -187
  300. pulumiverse_scaleway/instance_security_group_rules.py +42 -41
  301. pulumiverse_scaleway/instance_server.py +590 -562
  302. pulumiverse_scaleway/instance_snapshot.py +150 -157
  303. pulumiverse_scaleway/instance_user_data.py +75 -74
  304. pulumiverse_scaleway/instance_volume.py +174 -159
  305. pulumiverse_scaleway/iot/__init__.py +2 -1
  306. pulumiverse_scaleway/iot/_inputs.py +119 -119
  307. pulumiverse_scaleway/iot/device.py +156 -193
  308. pulumiverse_scaleway/iot/get_device.py +46 -46
  309. pulumiverse_scaleway/iot/get_hub.py +60 -60
  310. pulumiverse_scaleway/iot/hub.py +259 -258
  311. pulumiverse_scaleway/iot/network.py +115 -114
  312. pulumiverse_scaleway/iot/outputs.py +107 -107
  313. pulumiverse_scaleway/iot/route.py +109 -108
  314. pulumiverse_scaleway/iot_device.py +156 -193
  315. pulumiverse_scaleway/iot_hub.py +259 -258
  316. pulumiverse_scaleway/iot_network.py +115 -114
  317. pulumiverse_scaleway/iot_route.py +109 -108
  318. pulumiverse_scaleway/ipam/__init__.py +2 -1
  319. pulumiverse_scaleway/ipam/_inputs.py +108 -108
  320. pulumiverse_scaleway/ipam/get_ip.py +65 -65
  321. pulumiverse_scaleway/ipam/get_ips.py +56 -56
  322. pulumiverse_scaleway/ipam/ip.py +160 -131
  323. pulumiverse_scaleway/ipam/ip_reverse_dns.py +141 -70
  324. pulumiverse_scaleway/ipam/outputs.py +122 -122
  325. pulumiverse_scaleway/ipam_ip.py +160 -131
  326. pulumiverse_scaleway/ipam_ip_reverse_dns.py +141 -70
  327. pulumiverse_scaleway/job/__init__.py +2 -1
  328. pulumiverse_scaleway/job/_inputs.py +127 -14
  329. pulumiverse_scaleway/job/definition.py +283 -175
  330. pulumiverse_scaleway/job/outputs.py +98 -10
  331. pulumiverse_scaleway/job_definition.py +283 -175
  332. pulumiverse_scaleway/key_manager_key.py +939 -0
  333. pulumiverse_scaleway/kubernetes/__init__.py +3 -1
  334. pulumiverse_scaleway/kubernetes/_inputs.py +388 -185
  335. pulumiverse_scaleway/kubernetes/acl.py +447 -0
  336. pulumiverse_scaleway/kubernetes/cluster.py +594 -307
  337. pulumiverse_scaleway/kubernetes/get_cluster.py +98 -65
  338. pulumiverse_scaleway/kubernetes/get_pool.py +86 -75
  339. pulumiverse_scaleway/kubernetes/get_version.py +34 -23
  340. pulumiverse_scaleway/kubernetes/outputs.py +444 -250
  341. pulumiverse_scaleway/kubernetes/pool.py +427 -365
  342. pulumiverse_scaleway/kubernetes_cluster.py +594 -307
  343. pulumiverse_scaleway/kubernetes_node_pool.py +427 -365
  344. pulumiverse_scaleway/loadbalancer.py +329 -246
  345. pulumiverse_scaleway/loadbalancer_acl.py +102 -101
  346. pulumiverse_scaleway/loadbalancer_backend.py +534 -487
  347. pulumiverse_scaleway/loadbalancer_certificate.py +97 -96
  348. pulumiverse_scaleway/loadbalancer_frontend.py +271 -167
  349. pulumiverse_scaleway/loadbalancer_ip.py +124 -123
  350. pulumiverse_scaleway/loadbalancer_route.py +244 -119
  351. pulumiverse_scaleway/loadbalancers/__init__.py +3 -1
  352. pulumiverse_scaleway/loadbalancers/_inputs.py +367 -273
  353. pulumiverse_scaleway/loadbalancers/acl.py +102 -101
  354. pulumiverse_scaleway/loadbalancers/backend.py +534 -487
  355. pulumiverse_scaleway/loadbalancers/certificate.py +97 -96
  356. pulumiverse_scaleway/loadbalancers/frontend.py +271 -167
  357. pulumiverse_scaleway/loadbalancers/get_acls.py +29 -29
  358. pulumiverse_scaleway/loadbalancers/get_backend.py +75 -75
  359. pulumiverse_scaleway/loadbalancers/get_backends.py +29 -29
  360. pulumiverse_scaleway/loadbalancers/get_certificate.py +96 -36
  361. pulumiverse_scaleway/loadbalancers/get_frontend.py +76 -43
  362. pulumiverse_scaleway/loadbalancers/get_frontends.py +29 -29
  363. pulumiverse_scaleway/loadbalancers/get_ip.py +40 -40
  364. pulumiverse_scaleway/loadbalancers/get_ips.py +37 -37
  365. pulumiverse_scaleway/loadbalancers/get_load_balancer.py +78 -56
  366. pulumiverse_scaleway/loadbalancers/get_load_balancers.py +31 -31
  367. pulumiverse_scaleway/loadbalancers/get_route.py +36 -25
  368. pulumiverse_scaleway/loadbalancers/get_routes.py +23 -23
  369. pulumiverse_scaleway/loadbalancers/ip.py +124 -123
  370. pulumiverse_scaleway/loadbalancers/load_balancer.py +329 -246
  371. pulumiverse_scaleway/loadbalancers/outputs.py +870 -716
  372. pulumiverse_scaleway/loadbalancers/private_network.py +505 -0
  373. pulumiverse_scaleway/loadbalancers/route.py +244 -119
  374. pulumiverse_scaleway/mnq/__init__.py +2 -1
  375. pulumiverse_scaleway/mnq/_inputs.py +90 -38
  376. pulumiverse_scaleway/mnq/get_sns.py +18 -18
  377. pulumiverse_scaleway/mnq/get_sqs.py +18 -18
  378. pulumiverse_scaleway/mnq/nats_account.py +63 -62
  379. pulumiverse_scaleway/mnq/nats_credentials.py +63 -62
  380. pulumiverse_scaleway/mnq/outputs.py +73 -26
  381. pulumiverse_scaleway/mnq/sns.py +46 -45
  382. pulumiverse_scaleway/mnq/sns_credentials.py +82 -81
  383. pulumiverse_scaleway/mnq/sns_topic.py +174 -173
  384. pulumiverse_scaleway/mnq/sns_topic_subscription.py +182 -181
  385. pulumiverse_scaleway/mnq/sqs.py +46 -45
  386. pulumiverse_scaleway/mnq/sqs_credentials.py +82 -81
  387. pulumiverse_scaleway/mnq/sqs_queue.py +392 -232
  388. pulumiverse_scaleway/mnq_nats_account.py +63 -62
  389. pulumiverse_scaleway/mnq_nats_credentials.py +63 -62
  390. pulumiverse_scaleway/mnq_sns.py +46 -45
  391. pulumiverse_scaleway/mnq_sns_credentials.py +82 -81
  392. pulumiverse_scaleway/mnq_sns_topic.py +174 -173
  393. pulumiverse_scaleway/mnq_sns_topic_subscription.py +182 -181
  394. pulumiverse_scaleway/mnq_sqs.py +46 -45
  395. pulumiverse_scaleway/mnq_sqs_credentials.py +82 -81
  396. pulumiverse_scaleway/mnq_sqs_queue.py +392 -232
  397. pulumiverse_scaleway/mongo_db_instance.py +569 -268
  398. pulumiverse_scaleway/mongo_db_snapshot.py +127 -126
  399. pulumiverse_scaleway/mongodb/__init__.py +3 -1
  400. pulumiverse_scaleway/mongodb/_inputs.py +178 -51
  401. pulumiverse_scaleway/mongodb/get_instance.py +110 -55
  402. pulumiverse_scaleway/mongodb/instance.py +569 -268
  403. pulumiverse_scaleway/mongodb/outputs.py +192 -68
  404. pulumiverse_scaleway/mongodb/snapshot.py +127 -126
  405. pulumiverse_scaleway/mongodb/user.py +507 -0
  406. pulumiverse_scaleway/network/__init__.py +2 -1
  407. pulumiverse_scaleway/network/_inputs.py +209 -155
  408. pulumiverse_scaleway/network/acl.py +100 -101
  409. pulumiverse_scaleway/network/gateway_network.py +228 -180
  410. pulumiverse_scaleway/network/get_gateway_network.py +55 -44
  411. pulumiverse_scaleway/network/get_private_network.py +58 -47
  412. pulumiverse_scaleway/network/get_public_gateway.py +56 -56
  413. pulumiverse_scaleway/network/get_public_gateway_dhcp.py +44 -44
  414. pulumiverse_scaleway/network/get_public_gateway_dhcp_reservation.py +44 -44
  415. pulumiverse_scaleway/network/get_public_gateway_ip.py +24 -24
  416. pulumiverse_scaleway/network/get_public_gateway_pat_rule.py +32 -32
  417. pulumiverse_scaleway/network/get_routes.py +47 -47
  418. pulumiverse_scaleway/network/get_vpc.py +58 -47
  419. pulumiverse_scaleway/network/get_vpcs.py +31 -31
  420. pulumiverse_scaleway/network/outputs.py +338 -270
  421. pulumiverse_scaleway/network/private_network.py +203 -155
  422. pulumiverse_scaleway/network/public_gateway.py +261 -260
  423. pulumiverse_scaleway/network/public_gateway_dhcp.py +285 -284
  424. pulumiverse_scaleway/network/public_gateway_dhcp_reservation.py +107 -106
  425. pulumiverse_scaleway/network/public_gateway_ip.py +107 -106
  426. pulumiverse_scaleway/network/public_gateway_ip_reverse_dns.py +54 -53
  427. pulumiverse_scaleway/network/public_gateway_pat_rule.py +132 -131
  428. pulumiverse_scaleway/network/route.py +230 -141
  429. pulumiverse_scaleway/network/vpc.py +172 -124
  430. pulumiverse_scaleway/object/__init__.py +3 -1
  431. pulumiverse_scaleway/object/_inputs.py +202 -166
  432. pulumiverse_scaleway/object/bucket.py +162 -148
  433. pulumiverse_scaleway/object/bucket_acl.py +97 -94
  434. pulumiverse_scaleway/object/bucket_lock_configuration.py +57 -56
  435. pulumiverse_scaleway/object/bucket_policy.py +71 -134
  436. pulumiverse_scaleway/object/bucket_website_configuration.py +104 -85
  437. pulumiverse_scaleway/object/get.py +290 -0
  438. pulumiverse_scaleway/object/get_bucket.py +35 -35
  439. pulumiverse_scaleway/object/get_bucket_policy.py +22 -22
  440. pulumiverse_scaleway/object/item.py +301 -223
  441. pulumiverse_scaleway/object/outputs.py +210 -166
  442. pulumiverse_scaleway/object_bucket.py +162 -148
  443. pulumiverse_scaleway/object_bucket_acl.py +97 -94
  444. pulumiverse_scaleway/object_bucket_lock_configuration.py +57 -56
  445. pulumiverse_scaleway/object_bucket_policy.py +71 -134
  446. pulumiverse_scaleway/object_bucket_website_configuration.py +104 -85
  447. pulumiverse_scaleway/object_item.py +301 -223
  448. pulumiverse_scaleway/observability/__init__.py +4 -2
  449. pulumiverse_scaleway/observability/_inputs.py +106 -106
  450. pulumiverse_scaleway/observability/alert_manager.py +66 -65
  451. pulumiverse_scaleway/observability/cockpit.py +71 -49
  452. pulumiverse_scaleway/observability/get_grafana.py +103 -0
  453. pulumiverse_scaleway/observability/get_instance.py +16 -16
  454. pulumiverse_scaleway/observability/get_source.py +88 -45
  455. pulumiverse_scaleway/observability/get_sources.py +375 -0
  456. pulumiverse_scaleway/observability/grafana_user.py +72 -113
  457. pulumiverse_scaleway/observability/outputs.py +241 -101
  458. pulumiverse_scaleway/observability/source.py +142 -141
  459. pulumiverse_scaleway/observability/token.py +84 -83
  460. pulumiverse_scaleway/outputs.py +5235 -3665
  461. pulumiverse_scaleway/provider.py +107 -82
  462. pulumiverse_scaleway/pulumi-plugin.json +1 -1
  463. pulumiverse_scaleway/rdb_snapshot.py +127 -126
  464. pulumiverse_scaleway/redis/__init__.py +2 -1
  465. pulumiverse_scaleway/redis/_inputs.py +163 -69
  466. pulumiverse_scaleway/redis/cluster.py +273 -225
  467. pulumiverse_scaleway/redis/get_cluster.py +65 -54
  468. pulumiverse_scaleway/redis/outputs.py +199 -87
  469. pulumiverse_scaleway/redis_cluster.py +273 -225
  470. pulumiverse_scaleway/registry/__init__.py +2 -1
  471. pulumiverse_scaleway/registry/get_image.py +48 -48
  472. pulumiverse_scaleway/registry/get_image_tag.py +44 -44
  473. pulumiverse_scaleway/registry/get_namespace.py +36 -36
  474. pulumiverse_scaleway/registry/namespace.py +106 -105
  475. pulumiverse_scaleway/registry_namespace.py +106 -105
  476. pulumiverse_scaleway/sdb_database.py +97 -96
  477. pulumiverse_scaleway/secret.py +188 -179
  478. pulumiverse_scaleway/secret_version.py +107 -106
  479. pulumiverse_scaleway/secrets/__init__.py +2 -1
  480. pulumiverse_scaleway/secrets/_inputs.py +63 -63
  481. pulumiverse_scaleway/secrets/get_secret.py +58 -58
  482. pulumiverse_scaleway/secrets/get_version.py +46 -46
  483. pulumiverse_scaleway/secrets/outputs.py +84 -84
  484. pulumiverse_scaleway/secrets/secret.py +188 -179
  485. pulumiverse_scaleway/secrets/version.py +107 -106
  486. pulumiverse_scaleway/tem/__init__.py +2 -1
  487. pulumiverse_scaleway/tem/_inputs.py +33 -33
  488. pulumiverse_scaleway/tem/blocked_list.py +105 -104
  489. pulumiverse_scaleway/tem/domain.py +384 -257
  490. pulumiverse_scaleway/tem/domain_validation.py +63 -62
  491. pulumiverse_scaleway/tem/get_domain.py +103 -70
  492. pulumiverse_scaleway/tem/get_offer_subscription.py +34 -34
  493. pulumiverse_scaleway/tem/outputs.py +44 -44
  494. pulumiverse_scaleway/tem/webhook.py +132 -131
  495. pulumiverse_scaleway/tem_domain.py +384 -257
  496. pulumiverse_scaleway/tem_domain_validation.py +63 -62
  497. pulumiverse_scaleway/tem_webhook.py +132 -131
  498. pulumiverse_scaleway/vpc.py +172 -124
  499. pulumiverse_scaleway/vpc_gateway_network.py +228 -180
  500. pulumiverse_scaleway/vpc_private_network.py +203 -155
  501. pulumiverse_scaleway/vpc_public_gateway.py +261 -260
  502. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +285 -284
  503. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +107 -106
  504. pulumiverse_scaleway/vpc_public_gateway_ip.py +107 -106
  505. pulumiverse_scaleway/vpc_public_gateway_ip_reverse_dns.py +54 -53
  506. pulumiverse_scaleway/vpc_public_gateway_pat_rule.py +132 -131
  507. pulumiverse_scaleway/vpc_route.py +230 -141
  508. pulumiverse_scaleway/webhosting.py +213 -212
  509. {pulumiverse_scaleway-1.27.0a1744869119.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/METADATA +2 -2
  510. pulumiverse_scaleway-1.39.0a1764841480.dist-info/RECORD +513 -0
  511. {pulumiverse_scaleway-1.27.0a1744869119.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/WHEEL +1 -1
  512. pulumiverse_scaleway/get_cockpit_plan.py +0 -129
  513. pulumiverse_scaleway/observability/get_plan.py +0 -125
  514. pulumiverse_scaleway-1.27.0a1744869119.dist-info/RECORD +0 -483
  515. {pulumiverse_scaleway-1.27.0a1744869119.dist-info → pulumiverse_scaleway-1.39.0a1764841480.dist-info}/top_level.txt +0 -0
@@ -1,8 +1,8 @@
1
1
  # coding=utf-8
2
- # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
3
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
4
 
5
- import copy
5
+ import builtins as _builtins
6
6
  import warnings
7
7
  import sys
8
8
  import pulumi
@@ -21,53 +21,61 @@ __all__ = ['ServerArgs', 'Server']
21
21
  @pulumi.input_type
22
22
  class ServerArgs:
23
23
  def __init__(__self__, *,
24
- offer: pulumi.Input[str],
25
- description: Optional[pulumi.Input[str]] = None,
26
- hostname: Optional[pulumi.Input[str]] = None,
27
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
28
- name: Optional[pulumi.Input[str]] = None,
24
+ offer: pulumi.Input[_builtins.str],
25
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
26
+ description: Optional[pulumi.Input[_builtins.str]] = None,
27
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
28
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
29
+ name: Optional[pulumi.Input[_builtins.str]] = None,
29
30
  options: Optional[pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]]] = None,
30
- os: Optional[pulumi.Input[str]] = None,
31
- partitioning: Optional[pulumi.Input[str]] = None,
32
- password: Optional[pulumi.Input[str]] = None,
31
+ os: Optional[pulumi.Input[_builtins.str]] = None,
32
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
33
+ password: Optional[pulumi.Input[_builtins.str]] = None,
34
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]]] = None,
33
35
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]]] = None,
34
- project_id: Optional[pulumi.Input[str]] = None,
35
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
36
- service_password: Optional[pulumi.Input[str]] = None,
37
- service_user: Optional[pulumi.Input[str]] = None,
38
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
39
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
40
- user: Optional[pulumi.Input[str]] = None,
41
- zone: Optional[pulumi.Input[str]] = None):
36
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
37
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
38
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
39
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
40
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
41
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
42
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
43
+ user: Optional[pulumi.Input[_builtins.str]] = None,
44
+ zone: Optional[pulumi.Input[_builtins.str]] = None):
42
45
  """
43
46
  The set of arguments for constructing a Server resource.
44
- :param pulumi.Input[str] offer: The offer UUID of the baremetal server.
47
+ :param pulumi.Input[_builtins.str] offer: The offer UUID of the baremetal server.
45
48
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
46
49
 
47
50
  > **Important:** Updates to `offer` will recreate the server.
48
- :param pulumi.Input[str] description: A description for the server.
49
- :param pulumi.Input[str] hostname: The hostname of the server.
50
- :param pulumi.Input[bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
51
- :param pulumi.Input[str] name: The name of the server.
51
+ :param pulumi.Input[_builtins.str] cloud_init: Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
52
+ :param pulumi.Input[_builtins.str] description: A description for the server.
53
+ :param pulumi.Input[_builtins.str] hostname: The hostname of the server.
54
+ :param pulumi.Input[_builtins.bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
55
+ :param pulumi.Input[_builtins.str] name: The name of the server.
52
56
  :param pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]] options: The options to enable on the server.
53
57
  > The `options` block supports:
54
- :param pulumi.Input[str] os: The UUID of the os to install on the server.
58
+ :param pulumi.Input[_builtins.str] os: The UUID of the os to install on the server.
55
59
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
56
60
  > **Important:** Updates to `os` will reinstall the server.
57
- :param pulumi.Input[str] partitioning: The partitioning schema in JSON format
58
- :param pulumi.Input[str] password: Password used for the installation. May be required depending on used os.
61
+ :param pulumi.Input[_builtins.str] partitioning: The partitioning schema in JSON format
62
+ :param pulumi.Input[_builtins.str] password: Password used for the installation. May be required depending on used os.
63
+ :param pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
59
64
  :param pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]] private_networks: The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)
60
- :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
61
- :param pulumi.Input[bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
65
+ :param pulumi.Input[_builtins.str] project_id: `project_id`) The ID of the project the server is associated with.
66
+ :param pulumi.Input[_builtins.bool] protected: Set to true to activate server protection option.
67
+ :param pulumi.Input[_builtins.bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
62
68
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
63
- :param pulumi.Input[str] service_password: Password used for the service to install. May be required depending on used os.
64
- :param pulumi.Input[str] service_user: User used for the service to install.
65
- :param pulumi.Input[Sequence[pulumi.Input[str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
66
- :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
67
- :param pulumi.Input[str] user: User used for the installation.
68
- :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
69
+ :param pulumi.Input[_builtins.str] service_password: Password used for the service to install. May be required depending on used os.
70
+ :param pulumi.Input[_builtins.str] service_user: User used for the service to install.
71
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
72
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the server.
73
+ :param pulumi.Input[_builtins.str] user: User used for the installation.
74
+ :param pulumi.Input[_builtins.str] zone: `zone`) The zone in which the server should be created.
69
75
  """
70
76
  pulumi.set(__self__, "offer", offer)
77
+ if cloud_init is not None:
78
+ pulumi.set(__self__, "cloud_init", cloud_init)
71
79
  if description is not None:
72
80
  pulumi.set(__self__, "description", description)
73
81
  if hostname is not None:
@@ -84,10 +92,14 @@ class ServerArgs:
84
92
  pulumi.set(__self__, "partitioning", partitioning)
85
93
  if password is not None:
86
94
  pulumi.set(__self__, "password", password)
95
+ if private_ips is not None:
96
+ pulumi.set(__self__, "private_ips", private_ips)
87
97
  if private_networks is not None:
88
98
  pulumi.set(__self__, "private_networks", private_networks)
89
99
  if project_id is not None:
90
100
  pulumi.set(__self__, "project_id", project_id)
101
+ if protected is not None:
102
+ pulumi.set(__self__, "protected", protected)
91
103
  if reinstall_on_config_changes is not None:
92
104
  pulumi.set(__self__, "reinstall_on_config_changes", reinstall_on_config_changes)
93
105
  if service_password is not None:
@@ -103,9 +115,9 @@ class ServerArgs:
103
115
  if zone is not None:
104
116
  pulumi.set(__self__, "zone", zone)
105
117
 
106
- @property
118
+ @_builtins.property
107
119
  @pulumi.getter
108
- def offer(self) -> pulumi.Input[str]:
120
+ def offer(self) -> pulumi.Input[_builtins.str]:
109
121
  """
110
122
  The offer UUID of the baremetal server.
111
123
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
@@ -115,58 +127,70 @@ class ServerArgs:
115
127
  return pulumi.get(self, "offer")
116
128
 
117
129
  @offer.setter
118
- def offer(self, value: pulumi.Input[str]):
130
+ def offer(self, value: pulumi.Input[_builtins.str]):
119
131
  pulumi.set(self, "offer", value)
120
132
 
121
- @property
133
+ @_builtins.property
134
+ @pulumi.getter(name="cloudInit")
135
+ def cloud_init(self) -> Optional[pulumi.Input[_builtins.str]]:
136
+ """
137
+ Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
138
+ """
139
+ return pulumi.get(self, "cloud_init")
140
+
141
+ @cloud_init.setter
142
+ def cloud_init(self, value: Optional[pulumi.Input[_builtins.str]]):
143
+ pulumi.set(self, "cloud_init", value)
144
+
145
+ @_builtins.property
122
146
  @pulumi.getter
123
- def description(self) -> Optional[pulumi.Input[str]]:
147
+ def description(self) -> Optional[pulumi.Input[_builtins.str]]:
124
148
  """
125
149
  A description for the server.
126
150
  """
127
151
  return pulumi.get(self, "description")
128
152
 
129
153
  @description.setter
130
- def description(self, value: Optional[pulumi.Input[str]]):
154
+ def description(self, value: Optional[pulumi.Input[_builtins.str]]):
131
155
  pulumi.set(self, "description", value)
132
156
 
133
- @property
157
+ @_builtins.property
134
158
  @pulumi.getter
135
- def hostname(self) -> Optional[pulumi.Input[str]]:
159
+ def hostname(self) -> Optional[pulumi.Input[_builtins.str]]:
136
160
  """
137
161
  The hostname of the server.
138
162
  """
139
163
  return pulumi.get(self, "hostname")
140
164
 
141
165
  @hostname.setter
142
- def hostname(self, value: Optional[pulumi.Input[str]]):
166
+ def hostname(self, value: Optional[pulumi.Input[_builtins.str]]):
143
167
  pulumi.set(self, "hostname", value)
144
168
 
145
- @property
169
+ @_builtins.property
146
170
  @pulumi.getter(name="installConfigAfterward")
147
- def install_config_afterward(self) -> Optional[pulumi.Input[bool]]:
171
+ def install_config_afterward(self) -> Optional[pulumi.Input[_builtins.bool]]:
148
172
  """
149
173
  If True, this boolean allows to create a server without the install config if you want to provide it later.
150
174
  """
151
175
  return pulumi.get(self, "install_config_afterward")
152
176
 
153
177
  @install_config_afterward.setter
154
- def install_config_afterward(self, value: Optional[pulumi.Input[bool]]):
178
+ def install_config_afterward(self, value: Optional[pulumi.Input[_builtins.bool]]):
155
179
  pulumi.set(self, "install_config_afterward", value)
156
180
 
157
- @property
181
+ @_builtins.property
158
182
  @pulumi.getter
159
- def name(self) -> Optional[pulumi.Input[str]]:
183
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
160
184
  """
161
185
  The name of the server.
162
186
  """
163
187
  return pulumi.get(self, "name")
164
188
 
165
189
  @name.setter
166
- def name(self, value: Optional[pulumi.Input[str]]):
190
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
167
191
  pulumi.set(self, "name", value)
168
192
 
169
- @property
193
+ @_builtins.property
170
194
  @pulumi.getter
171
195
  def options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]]]:
172
196
  """
@@ -179,9 +203,9 @@ class ServerArgs:
179
203
  def options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]]]):
180
204
  pulumi.set(self, "options", value)
181
205
 
182
- @property
206
+ @_builtins.property
183
207
  @pulumi.getter
184
- def os(self) -> Optional[pulumi.Input[str]]:
208
+ def os(self) -> Optional[pulumi.Input[_builtins.str]]:
185
209
  """
186
210
  The UUID of the os to install on the server.
187
211
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
@@ -190,34 +214,46 @@ class ServerArgs:
190
214
  return pulumi.get(self, "os")
191
215
 
192
216
  @os.setter
193
- def os(self, value: Optional[pulumi.Input[str]]):
217
+ def os(self, value: Optional[pulumi.Input[_builtins.str]]):
194
218
  pulumi.set(self, "os", value)
195
219
 
196
- @property
220
+ @_builtins.property
197
221
  @pulumi.getter
198
- def partitioning(self) -> Optional[pulumi.Input[str]]:
222
+ def partitioning(self) -> Optional[pulumi.Input[_builtins.str]]:
199
223
  """
200
224
  The partitioning schema in JSON format
201
225
  """
202
226
  return pulumi.get(self, "partitioning")
203
227
 
204
228
  @partitioning.setter
205
- def partitioning(self, value: Optional[pulumi.Input[str]]):
229
+ def partitioning(self, value: Optional[pulumi.Input[_builtins.str]]):
206
230
  pulumi.set(self, "partitioning", value)
207
231
 
208
- @property
232
+ @_builtins.property
209
233
  @pulumi.getter
210
- def password(self) -> Optional[pulumi.Input[str]]:
234
+ def password(self) -> Optional[pulumi.Input[_builtins.str]]:
211
235
  """
212
236
  Password used for the installation. May be required depending on used os.
213
237
  """
214
238
  return pulumi.get(self, "password")
215
239
 
216
240
  @password.setter
217
- def password(self, value: Optional[pulumi.Input[str]]):
241
+ def password(self, value: Optional[pulumi.Input[_builtins.str]]):
218
242
  pulumi.set(self, "password", value)
219
243
 
220
- @property
244
+ @_builtins.property
245
+ @pulumi.getter(name="privateIps")
246
+ def private_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]]]:
247
+ """
248
+ The list of private IPv4 and IPv6 addresses associated with the resource.
249
+ """
250
+ return pulumi.get(self, "private_ips")
251
+
252
+ @private_ips.setter
253
+ def private_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]]]):
254
+ pulumi.set(self, "private_ips", value)
255
+
256
+ @_builtins.property
221
257
  @pulumi.getter(name="privateNetworks")
222
258
  def private_networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]]]:
223
259
  """
@@ -229,21 +265,33 @@ class ServerArgs:
229
265
  def private_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]]]):
230
266
  pulumi.set(self, "private_networks", value)
231
267
 
232
- @property
268
+ @_builtins.property
233
269
  @pulumi.getter(name="projectId")
234
- def project_id(self) -> Optional[pulumi.Input[str]]:
270
+ def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
235
271
  """
236
272
  `project_id`) The ID of the project the server is associated with.
237
273
  """
238
274
  return pulumi.get(self, "project_id")
239
275
 
240
276
  @project_id.setter
241
- def project_id(self, value: Optional[pulumi.Input[str]]):
277
+ def project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
242
278
  pulumi.set(self, "project_id", value)
243
279
 
244
- @property
280
+ @_builtins.property
281
+ @pulumi.getter
282
+ def protected(self) -> Optional[pulumi.Input[_builtins.bool]]:
283
+ """
284
+ Set to true to activate server protection option.
285
+ """
286
+ return pulumi.get(self, "protected")
287
+
288
+ @protected.setter
289
+ def protected(self, value: Optional[pulumi.Input[_builtins.bool]]):
290
+ pulumi.set(self, "protected", value)
291
+
292
+ @_builtins.property
245
293
  @pulumi.getter(name="reinstallOnConfigChanges")
246
- def reinstall_on_config_changes(self) -> Optional[pulumi.Input[bool]]:
294
+ def reinstall_on_config_changes(self) -> Optional[pulumi.Input[_builtins.bool]]:
247
295
  """
248
296
  If True, this boolean allows to reinstall the server on install config changes.
249
297
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
@@ -251,147 +299,155 @@ class ServerArgs:
251
299
  return pulumi.get(self, "reinstall_on_config_changes")
252
300
 
253
301
  @reinstall_on_config_changes.setter
254
- def reinstall_on_config_changes(self, value: Optional[pulumi.Input[bool]]):
302
+ def reinstall_on_config_changes(self, value: Optional[pulumi.Input[_builtins.bool]]):
255
303
  pulumi.set(self, "reinstall_on_config_changes", value)
256
304
 
257
- @property
305
+ @_builtins.property
258
306
  @pulumi.getter(name="servicePassword")
259
- def service_password(self) -> Optional[pulumi.Input[str]]:
307
+ def service_password(self) -> Optional[pulumi.Input[_builtins.str]]:
260
308
  """
261
309
  Password used for the service to install. May be required depending on used os.
262
310
  """
263
311
  return pulumi.get(self, "service_password")
264
312
 
265
313
  @service_password.setter
266
- def service_password(self, value: Optional[pulumi.Input[str]]):
314
+ def service_password(self, value: Optional[pulumi.Input[_builtins.str]]):
267
315
  pulumi.set(self, "service_password", value)
268
316
 
269
- @property
317
+ @_builtins.property
270
318
  @pulumi.getter(name="serviceUser")
271
- def service_user(self) -> Optional[pulumi.Input[str]]:
319
+ def service_user(self) -> Optional[pulumi.Input[_builtins.str]]:
272
320
  """
273
321
  User used for the service to install.
274
322
  """
275
323
  return pulumi.get(self, "service_user")
276
324
 
277
325
  @service_user.setter
278
- def service_user(self, value: Optional[pulumi.Input[str]]):
326
+ def service_user(self, value: Optional[pulumi.Input[_builtins.str]]):
279
327
  pulumi.set(self, "service_user", value)
280
328
 
281
- @property
329
+ @_builtins.property
282
330
  @pulumi.getter(name="sshKeyIds")
283
- def ssh_key_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
331
+ def ssh_key_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
284
332
  """
285
333
  List of SSH keys allowed to connect to the server.
286
334
  """
287
335
  return pulumi.get(self, "ssh_key_ids")
288
336
 
289
337
  @ssh_key_ids.setter
290
- def ssh_key_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
338
+ def ssh_key_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
291
339
  pulumi.set(self, "ssh_key_ids", value)
292
340
 
293
- @property
341
+ @_builtins.property
294
342
  @pulumi.getter
295
- def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
343
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
296
344
  """
297
345
  The tags associated with the server.
298
346
  """
299
347
  return pulumi.get(self, "tags")
300
348
 
301
349
  @tags.setter
302
- def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
350
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
303
351
  pulumi.set(self, "tags", value)
304
352
 
305
- @property
353
+ @_builtins.property
306
354
  @pulumi.getter
307
- def user(self) -> Optional[pulumi.Input[str]]:
355
+ def user(self) -> Optional[pulumi.Input[_builtins.str]]:
308
356
  """
309
357
  User used for the installation.
310
358
  """
311
359
  return pulumi.get(self, "user")
312
360
 
313
361
  @user.setter
314
- def user(self, value: Optional[pulumi.Input[str]]):
362
+ def user(self, value: Optional[pulumi.Input[_builtins.str]]):
315
363
  pulumi.set(self, "user", value)
316
364
 
317
- @property
365
+ @_builtins.property
318
366
  @pulumi.getter
319
- def zone(self) -> Optional[pulumi.Input[str]]:
367
+ def zone(self) -> Optional[pulumi.Input[_builtins.str]]:
320
368
  """
321
369
  `zone`) The zone in which the server should be created.
322
370
  """
323
371
  return pulumi.get(self, "zone")
324
372
 
325
373
  @zone.setter
326
- def zone(self, value: Optional[pulumi.Input[str]]):
374
+ def zone(self, value: Optional[pulumi.Input[_builtins.str]]):
327
375
  pulumi.set(self, "zone", value)
328
376
 
329
377
 
330
378
  @pulumi.input_type
331
379
  class _ServerState:
332
380
  def __init__(__self__, *,
333
- description: Optional[pulumi.Input[str]] = None,
334
- domain: Optional[pulumi.Input[str]] = None,
335
- hostname: Optional[pulumi.Input[str]] = None,
336
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
381
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
382
+ description: Optional[pulumi.Input[_builtins.str]] = None,
383
+ domain: Optional[pulumi.Input[_builtins.str]] = None,
384
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
385
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
337
386
  ips: Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpArgs']]]] = None,
338
387
  ipv4s: Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpv4Args']]]] = None,
339
388
  ipv6s: Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpv6Args']]]] = None,
340
- name: Optional[pulumi.Input[str]] = None,
341
- offer: Optional[pulumi.Input[str]] = None,
342
- offer_id: Optional[pulumi.Input[str]] = None,
343
- offer_name: Optional[pulumi.Input[str]] = None,
389
+ name: Optional[pulumi.Input[_builtins.str]] = None,
390
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
391
+ offer_id: Optional[pulumi.Input[_builtins.str]] = None,
392
+ offer_name: Optional[pulumi.Input[_builtins.str]] = None,
344
393
  options: Optional[pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]]] = None,
345
- organization_id: Optional[pulumi.Input[str]] = None,
346
- os: Optional[pulumi.Input[str]] = None,
347
- os_name: Optional[pulumi.Input[str]] = None,
348
- partitioning: Optional[pulumi.Input[str]] = None,
349
- password: Optional[pulumi.Input[str]] = None,
394
+ organization_id: Optional[pulumi.Input[_builtins.str]] = None,
395
+ os: Optional[pulumi.Input[_builtins.str]] = None,
396
+ os_name: Optional[pulumi.Input[_builtins.str]] = None,
397
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
398
+ password: Optional[pulumi.Input[_builtins.str]] = None,
399
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]]] = None,
350
400
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]]] = None,
351
- project_id: Optional[pulumi.Input[str]] = None,
352
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
353
- service_password: Optional[pulumi.Input[str]] = None,
354
- service_user: Optional[pulumi.Input[str]] = None,
355
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
356
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
357
- user: Optional[pulumi.Input[str]] = None,
358
- zone: Optional[pulumi.Input[str]] = None):
401
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
402
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
403
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
404
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
405
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
406
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
407
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
408
+ user: Optional[pulumi.Input[_builtins.str]] = None,
409
+ zone: Optional[pulumi.Input[_builtins.str]] = None):
359
410
  """
360
411
  Input properties used for looking up and filtering Server resources.
361
- :param pulumi.Input[str] description: A description for the server.
362
- :param pulumi.Input[str] domain: The domain of the server.
363
- :param pulumi.Input[str] hostname: The hostname of the server.
364
- :param pulumi.Input[bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
412
+ :param pulumi.Input[_builtins.str] cloud_init: Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
413
+ :param pulumi.Input[_builtins.str] description: A description for the server.
414
+ :param pulumi.Input[_builtins.str] domain: The domain of the server.
415
+ :param pulumi.Input[_builtins.str] hostname: The hostname of the server.
416
+ :param pulumi.Input[_builtins.bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
365
417
  :param pulumi.Input[Sequence[pulumi.Input['ServerIpArgs']]] ips: (List of) The IPs of the server.
366
418
  :param pulumi.Input[Sequence[pulumi.Input['ServerIpv4Args']]] ipv4s: (List of) The IPv4 addresses of the server.
367
419
  :param pulumi.Input[Sequence[pulumi.Input['ServerIpv6Args']]] ipv6s: (List of) The IPv6 addresses of the server.
368
- :param pulumi.Input[str] name: The name of the server.
369
- :param pulumi.Input[str] offer: The offer UUID of the baremetal server.
420
+ :param pulumi.Input[_builtins.str] name: The name of the server.
421
+ :param pulumi.Input[_builtins.str] offer: The offer UUID of the baremetal server.
370
422
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
371
423
 
372
424
  > **Important:** Updates to `offer` will recreate the server.
373
- :param pulumi.Input[str] offer_id: The ID of the offer.
374
- :param pulumi.Input[str] offer_name: The name of the offer.
425
+ :param pulumi.Input[_builtins.str] offer_id: The ID of the offer.
426
+ :param pulumi.Input[_builtins.str] offer_name: The name of the offer.
375
427
  :param pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]] options: The options to enable on the server.
376
428
  > The `options` block supports:
377
- :param pulumi.Input[str] organization_id: The organization ID the server is associated with.
378
- :param pulumi.Input[str] os: The UUID of the os to install on the server.
429
+ :param pulumi.Input[_builtins.str] organization_id: The organization ID the server is associated with.
430
+ :param pulumi.Input[_builtins.str] os: The UUID of the os to install on the server.
379
431
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
380
432
  > **Important:** Updates to `os` will reinstall the server.
381
- :param pulumi.Input[str] os_name: The name of the os.
382
- :param pulumi.Input[str] partitioning: The partitioning schema in JSON format
383
- :param pulumi.Input[str] password: Password used for the installation. May be required depending on used os.
433
+ :param pulumi.Input[_builtins.str] os_name: The name of the os.
434
+ :param pulumi.Input[_builtins.str] partitioning: The partitioning schema in JSON format
435
+ :param pulumi.Input[_builtins.str] password: Password used for the installation. May be required depending on used os.
436
+ :param pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
384
437
  :param pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]] private_networks: The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)
385
- :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
386
- :param pulumi.Input[bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
438
+ :param pulumi.Input[_builtins.str] project_id: `project_id`) The ID of the project the server is associated with.
439
+ :param pulumi.Input[_builtins.bool] protected: Set to true to activate server protection option.
440
+ :param pulumi.Input[_builtins.bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
387
441
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
388
- :param pulumi.Input[str] service_password: Password used for the service to install. May be required depending on used os.
389
- :param pulumi.Input[str] service_user: User used for the service to install.
390
- :param pulumi.Input[Sequence[pulumi.Input[str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
391
- :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
392
- :param pulumi.Input[str] user: User used for the installation.
393
- :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
394
- """
442
+ :param pulumi.Input[_builtins.str] service_password: Password used for the service to install. May be required depending on used os.
443
+ :param pulumi.Input[_builtins.str] service_user: User used for the service to install.
444
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
445
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the server.
446
+ :param pulumi.Input[_builtins.str] user: User used for the installation.
447
+ :param pulumi.Input[_builtins.str] zone: `zone`) The zone in which the server should be created.
448
+ """
449
+ if cloud_init is not None:
450
+ pulumi.set(__self__, "cloud_init", cloud_init)
395
451
  if description is not None:
396
452
  pulumi.set(__self__, "description", description)
397
453
  if domain is not None:
@@ -426,10 +482,14 @@ class _ServerState:
426
482
  pulumi.set(__self__, "partitioning", partitioning)
427
483
  if password is not None:
428
484
  pulumi.set(__self__, "password", password)
485
+ if private_ips is not None:
486
+ pulumi.set(__self__, "private_ips", private_ips)
429
487
  if private_networks is not None:
430
488
  pulumi.set(__self__, "private_networks", private_networks)
431
489
  if project_id is not None:
432
490
  pulumi.set(__self__, "project_id", project_id)
491
+ if protected is not None:
492
+ pulumi.set(__self__, "protected", protected)
433
493
  if reinstall_on_config_changes is not None:
434
494
  pulumi.set(__self__, "reinstall_on_config_changes", reinstall_on_config_changes)
435
495
  if service_password is not None:
@@ -445,55 +505,67 @@ class _ServerState:
445
505
  if zone is not None:
446
506
  pulumi.set(__self__, "zone", zone)
447
507
 
448
- @property
508
+ @_builtins.property
509
+ @pulumi.getter(name="cloudInit")
510
+ def cloud_init(self) -> Optional[pulumi.Input[_builtins.str]]:
511
+ """
512
+ Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
513
+ """
514
+ return pulumi.get(self, "cloud_init")
515
+
516
+ @cloud_init.setter
517
+ def cloud_init(self, value: Optional[pulumi.Input[_builtins.str]]):
518
+ pulumi.set(self, "cloud_init", value)
519
+
520
+ @_builtins.property
449
521
  @pulumi.getter
450
- def description(self) -> Optional[pulumi.Input[str]]:
522
+ def description(self) -> Optional[pulumi.Input[_builtins.str]]:
451
523
  """
452
524
  A description for the server.
453
525
  """
454
526
  return pulumi.get(self, "description")
455
527
 
456
528
  @description.setter
457
- def description(self, value: Optional[pulumi.Input[str]]):
529
+ def description(self, value: Optional[pulumi.Input[_builtins.str]]):
458
530
  pulumi.set(self, "description", value)
459
531
 
460
- @property
532
+ @_builtins.property
461
533
  @pulumi.getter
462
- def domain(self) -> Optional[pulumi.Input[str]]:
534
+ def domain(self) -> Optional[pulumi.Input[_builtins.str]]:
463
535
  """
464
536
  The domain of the server.
465
537
  """
466
538
  return pulumi.get(self, "domain")
467
539
 
468
540
  @domain.setter
469
- def domain(self, value: Optional[pulumi.Input[str]]):
541
+ def domain(self, value: Optional[pulumi.Input[_builtins.str]]):
470
542
  pulumi.set(self, "domain", value)
471
543
 
472
- @property
544
+ @_builtins.property
473
545
  @pulumi.getter
474
- def hostname(self) -> Optional[pulumi.Input[str]]:
546
+ def hostname(self) -> Optional[pulumi.Input[_builtins.str]]:
475
547
  """
476
548
  The hostname of the server.
477
549
  """
478
550
  return pulumi.get(self, "hostname")
479
551
 
480
552
  @hostname.setter
481
- def hostname(self, value: Optional[pulumi.Input[str]]):
553
+ def hostname(self, value: Optional[pulumi.Input[_builtins.str]]):
482
554
  pulumi.set(self, "hostname", value)
483
555
 
484
- @property
556
+ @_builtins.property
485
557
  @pulumi.getter(name="installConfigAfterward")
486
- def install_config_afterward(self) -> Optional[pulumi.Input[bool]]:
558
+ def install_config_afterward(self) -> Optional[pulumi.Input[_builtins.bool]]:
487
559
  """
488
560
  If True, this boolean allows to create a server without the install config if you want to provide it later.
489
561
  """
490
562
  return pulumi.get(self, "install_config_afterward")
491
563
 
492
564
  @install_config_afterward.setter
493
- def install_config_afterward(self, value: Optional[pulumi.Input[bool]]):
565
+ def install_config_afterward(self, value: Optional[pulumi.Input[_builtins.bool]]):
494
566
  pulumi.set(self, "install_config_afterward", value)
495
567
 
496
- @property
568
+ @_builtins.property
497
569
  @pulumi.getter
498
570
  def ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpArgs']]]]:
499
571
  """
@@ -505,7 +577,7 @@ class _ServerState:
505
577
  def ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpArgs']]]]):
506
578
  pulumi.set(self, "ips", value)
507
579
 
508
- @property
580
+ @_builtins.property
509
581
  @pulumi.getter
510
582
  def ipv4s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpv4Args']]]]:
511
583
  """
@@ -517,7 +589,7 @@ class _ServerState:
517
589
  def ipv4s(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpv4Args']]]]):
518
590
  pulumi.set(self, "ipv4s", value)
519
591
 
520
- @property
592
+ @_builtins.property
521
593
  @pulumi.getter
522
594
  def ipv6s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpv6Args']]]]:
523
595
  """
@@ -529,21 +601,21 @@ class _ServerState:
529
601
  def ipv6s(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerIpv6Args']]]]):
530
602
  pulumi.set(self, "ipv6s", value)
531
603
 
532
- @property
604
+ @_builtins.property
533
605
  @pulumi.getter
534
- def name(self) -> Optional[pulumi.Input[str]]:
606
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
535
607
  """
536
608
  The name of the server.
537
609
  """
538
610
  return pulumi.get(self, "name")
539
611
 
540
612
  @name.setter
541
- def name(self, value: Optional[pulumi.Input[str]]):
613
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
542
614
  pulumi.set(self, "name", value)
543
615
 
544
- @property
616
+ @_builtins.property
545
617
  @pulumi.getter
546
- def offer(self) -> Optional[pulumi.Input[str]]:
618
+ def offer(self) -> Optional[pulumi.Input[_builtins.str]]:
547
619
  """
548
620
  The offer UUID of the baremetal server.
549
621
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
@@ -553,34 +625,34 @@ class _ServerState:
553
625
  return pulumi.get(self, "offer")
554
626
 
555
627
  @offer.setter
556
- def offer(self, value: Optional[pulumi.Input[str]]):
628
+ def offer(self, value: Optional[pulumi.Input[_builtins.str]]):
557
629
  pulumi.set(self, "offer", value)
558
630
 
559
- @property
631
+ @_builtins.property
560
632
  @pulumi.getter(name="offerId")
561
- def offer_id(self) -> Optional[pulumi.Input[str]]:
633
+ def offer_id(self) -> Optional[pulumi.Input[_builtins.str]]:
562
634
  """
563
635
  The ID of the offer.
564
636
  """
565
637
  return pulumi.get(self, "offer_id")
566
638
 
567
639
  @offer_id.setter
568
- def offer_id(self, value: Optional[pulumi.Input[str]]):
640
+ def offer_id(self, value: Optional[pulumi.Input[_builtins.str]]):
569
641
  pulumi.set(self, "offer_id", value)
570
642
 
571
- @property
643
+ @_builtins.property
572
644
  @pulumi.getter(name="offerName")
573
- def offer_name(self) -> Optional[pulumi.Input[str]]:
645
+ def offer_name(self) -> Optional[pulumi.Input[_builtins.str]]:
574
646
  """
575
647
  The name of the offer.
576
648
  """
577
649
  return pulumi.get(self, "offer_name")
578
650
 
579
651
  @offer_name.setter
580
- def offer_name(self, value: Optional[pulumi.Input[str]]):
652
+ def offer_name(self, value: Optional[pulumi.Input[_builtins.str]]):
581
653
  pulumi.set(self, "offer_name", value)
582
654
 
583
- @property
655
+ @_builtins.property
584
656
  @pulumi.getter
585
657
  def options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]]]:
586
658
  """
@@ -593,21 +665,21 @@ class _ServerState:
593
665
  def options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerOptionArgs']]]]):
594
666
  pulumi.set(self, "options", value)
595
667
 
596
- @property
668
+ @_builtins.property
597
669
  @pulumi.getter(name="organizationId")
598
- def organization_id(self) -> Optional[pulumi.Input[str]]:
670
+ def organization_id(self) -> Optional[pulumi.Input[_builtins.str]]:
599
671
  """
600
672
  The organization ID the server is associated with.
601
673
  """
602
674
  return pulumi.get(self, "organization_id")
603
675
 
604
676
  @organization_id.setter
605
- def organization_id(self, value: Optional[pulumi.Input[str]]):
677
+ def organization_id(self, value: Optional[pulumi.Input[_builtins.str]]):
606
678
  pulumi.set(self, "organization_id", value)
607
679
 
608
- @property
680
+ @_builtins.property
609
681
  @pulumi.getter
610
- def os(self) -> Optional[pulumi.Input[str]]:
682
+ def os(self) -> Optional[pulumi.Input[_builtins.str]]:
611
683
  """
612
684
  The UUID of the os to install on the server.
613
685
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
@@ -616,46 +688,58 @@ class _ServerState:
616
688
  return pulumi.get(self, "os")
617
689
 
618
690
  @os.setter
619
- def os(self, value: Optional[pulumi.Input[str]]):
691
+ def os(self, value: Optional[pulumi.Input[_builtins.str]]):
620
692
  pulumi.set(self, "os", value)
621
693
 
622
- @property
694
+ @_builtins.property
623
695
  @pulumi.getter(name="osName")
624
- def os_name(self) -> Optional[pulumi.Input[str]]:
696
+ def os_name(self) -> Optional[pulumi.Input[_builtins.str]]:
625
697
  """
626
698
  The name of the os.
627
699
  """
628
700
  return pulumi.get(self, "os_name")
629
701
 
630
702
  @os_name.setter
631
- def os_name(self, value: Optional[pulumi.Input[str]]):
703
+ def os_name(self, value: Optional[pulumi.Input[_builtins.str]]):
632
704
  pulumi.set(self, "os_name", value)
633
705
 
634
- @property
706
+ @_builtins.property
635
707
  @pulumi.getter
636
- def partitioning(self) -> Optional[pulumi.Input[str]]:
708
+ def partitioning(self) -> Optional[pulumi.Input[_builtins.str]]:
637
709
  """
638
710
  The partitioning schema in JSON format
639
711
  """
640
712
  return pulumi.get(self, "partitioning")
641
713
 
642
714
  @partitioning.setter
643
- def partitioning(self, value: Optional[pulumi.Input[str]]):
715
+ def partitioning(self, value: Optional[pulumi.Input[_builtins.str]]):
644
716
  pulumi.set(self, "partitioning", value)
645
717
 
646
- @property
718
+ @_builtins.property
647
719
  @pulumi.getter
648
- def password(self) -> Optional[pulumi.Input[str]]:
720
+ def password(self) -> Optional[pulumi.Input[_builtins.str]]:
649
721
  """
650
722
  Password used for the installation. May be required depending on used os.
651
723
  """
652
724
  return pulumi.get(self, "password")
653
725
 
654
726
  @password.setter
655
- def password(self, value: Optional[pulumi.Input[str]]):
727
+ def password(self, value: Optional[pulumi.Input[_builtins.str]]):
656
728
  pulumi.set(self, "password", value)
657
729
 
658
- @property
730
+ @_builtins.property
731
+ @pulumi.getter(name="privateIps")
732
+ def private_ips(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]]]:
733
+ """
734
+ The list of private IPv4 and IPv6 addresses associated with the resource.
735
+ """
736
+ return pulumi.get(self, "private_ips")
737
+
738
+ @private_ips.setter
739
+ def private_ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateIpArgs']]]]):
740
+ pulumi.set(self, "private_ips", value)
741
+
742
+ @_builtins.property
659
743
  @pulumi.getter(name="privateNetworks")
660
744
  def private_networks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]]]:
661
745
  """
@@ -667,21 +751,33 @@ class _ServerState:
667
751
  def private_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ServerPrivateNetworkArgs']]]]):
668
752
  pulumi.set(self, "private_networks", value)
669
753
 
670
- @property
754
+ @_builtins.property
671
755
  @pulumi.getter(name="projectId")
672
- def project_id(self) -> Optional[pulumi.Input[str]]:
756
+ def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
673
757
  """
674
758
  `project_id`) The ID of the project the server is associated with.
675
759
  """
676
760
  return pulumi.get(self, "project_id")
677
761
 
678
762
  @project_id.setter
679
- def project_id(self, value: Optional[pulumi.Input[str]]):
763
+ def project_id(self, value: Optional[pulumi.Input[_builtins.str]]):
680
764
  pulumi.set(self, "project_id", value)
681
765
 
682
- @property
766
+ @_builtins.property
767
+ @pulumi.getter
768
+ def protected(self) -> Optional[pulumi.Input[_builtins.bool]]:
769
+ """
770
+ Set to true to activate server protection option.
771
+ """
772
+ return pulumi.get(self, "protected")
773
+
774
+ @protected.setter
775
+ def protected(self, value: Optional[pulumi.Input[_builtins.bool]]):
776
+ pulumi.set(self, "protected", value)
777
+
778
+ @_builtins.property
683
779
  @pulumi.getter(name="reinstallOnConfigChanges")
684
- def reinstall_on_config_changes(self) -> Optional[pulumi.Input[bool]]:
780
+ def reinstall_on_config_changes(self) -> Optional[pulumi.Input[_builtins.bool]]:
685
781
  """
686
782
  If True, this boolean allows to reinstall the server on install config changes.
687
783
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
@@ -689,105 +785,109 @@ class _ServerState:
689
785
  return pulumi.get(self, "reinstall_on_config_changes")
690
786
 
691
787
  @reinstall_on_config_changes.setter
692
- def reinstall_on_config_changes(self, value: Optional[pulumi.Input[bool]]):
788
+ def reinstall_on_config_changes(self, value: Optional[pulumi.Input[_builtins.bool]]):
693
789
  pulumi.set(self, "reinstall_on_config_changes", value)
694
790
 
695
- @property
791
+ @_builtins.property
696
792
  @pulumi.getter(name="servicePassword")
697
- def service_password(self) -> Optional[pulumi.Input[str]]:
793
+ def service_password(self) -> Optional[pulumi.Input[_builtins.str]]:
698
794
  """
699
795
  Password used for the service to install. May be required depending on used os.
700
796
  """
701
797
  return pulumi.get(self, "service_password")
702
798
 
703
799
  @service_password.setter
704
- def service_password(self, value: Optional[pulumi.Input[str]]):
800
+ def service_password(self, value: Optional[pulumi.Input[_builtins.str]]):
705
801
  pulumi.set(self, "service_password", value)
706
802
 
707
- @property
803
+ @_builtins.property
708
804
  @pulumi.getter(name="serviceUser")
709
- def service_user(self) -> Optional[pulumi.Input[str]]:
805
+ def service_user(self) -> Optional[pulumi.Input[_builtins.str]]:
710
806
  """
711
807
  User used for the service to install.
712
808
  """
713
809
  return pulumi.get(self, "service_user")
714
810
 
715
811
  @service_user.setter
716
- def service_user(self, value: Optional[pulumi.Input[str]]):
812
+ def service_user(self, value: Optional[pulumi.Input[_builtins.str]]):
717
813
  pulumi.set(self, "service_user", value)
718
814
 
719
- @property
815
+ @_builtins.property
720
816
  @pulumi.getter(name="sshKeyIds")
721
- def ssh_key_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
817
+ def ssh_key_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
722
818
  """
723
819
  List of SSH keys allowed to connect to the server.
724
820
  """
725
821
  return pulumi.get(self, "ssh_key_ids")
726
822
 
727
823
  @ssh_key_ids.setter
728
- def ssh_key_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
824
+ def ssh_key_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
729
825
  pulumi.set(self, "ssh_key_ids", value)
730
826
 
731
- @property
827
+ @_builtins.property
732
828
  @pulumi.getter
733
- def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
829
+ def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
734
830
  """
735
831
  The tags associated with the server.
736
832
  """
737
833
  return pulumi.get(self, "tags")
738
834
 
739
835
  @tags.setter
740
- def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
836
+ def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
741
837
  pulumi.set(self, "tags", value)
742
838
 
743
- @property
839
+ @_builtins.property
744
840
  @pulumi.getter
745
- def user(self) -> Optional[pulumi.Input[str]]:
841
+ def user(self) -> Optional[pulumi.Input[_builtins.str]]:
746
842
  """
747
843
  User used for the installation.
748
844
  """
749
845
  return pulumi.get(self, "user")
750
846
 
751
847
  @user.setter
752
- def user(self, value: Optional[pulumi.Input[str]]):
848
+ def user(self, value: Optional[pulumi.Input[_builtins.str]]):
753
849
  pulumi.set(self, "user", value)
754
850
 
755
- @property
851
+ @_builtins.property
756
852
  @pulumi.getter
757
- def zone(self) -> Optional[pulumi.Input[str]]:
853
+ def zone(self) -> Optional[pulumi.Input[_builtins.str]]:
758
854
  """
759
855
  `zone`) The zone in which the server should be created.
760
856
  """
761
857
  return pulumi.get(self, "zone")
762
858
 
763
859
  @zone.setter
764
- def zone(self, value: Optional[pulumi.Input[str]]):
860
+ def zone(self, value: Optional[pulumi.Input[_builtins.str]]):
765
861
  pulumi.set(self, "zone", value)
766
862
 
767
863
 
864
+ @pulumi.type_token("scaleway:elasticmetal/server:Server")
768
865
  class Server(pulumi.CustomResource):
769
866
  @overload
770
867
  def __init__(__self__,
771
868
  resource_name: str,
772
869
  opts: Optional[pulumi.ResourceOptions] = None,
773
- description: Optional[pulumi.Input[str]] = None,
774
- hostname: Optional[pulumi.Input[str]] = None,
775
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
776
- name: Optional[pulumi.Input[str]] = None,
777
- offer: Optional[pulumi.Input[str]] = None,
870
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
871
+ description: Optional[pulumi.Input[_builtins.str]] = None,
872
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
873
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
874
+ name: Optional[pulumi.Input[_builtins.str]] = None,
875
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
778
876
  options: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerOptionArgs', 'ServerOptionArgsDict']]]]] = None,
779
- os: Optional[pulumi.Input[str]] = None,
780
- partitioning: Optional[pulumi.Input[str]] = None,
781
- password: Optional[pulumi.Input[str]] = None,
877
+ os: Optional[pulumi.Input[_builtins.str]] = None,
878
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
879
+ password: Optional[pulumi.Input[_builtins.str]] = None,
880
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateIpArgs', 'ServerPrivateIpArgsDict']]]]] = None,
782
881
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateNetworkArgs', 'ServerPrivateNetworkArgsDict']]]]] = None,
783
- project_id: Optional[pulumi.Input[str]] = None,
784
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
785
- service_password: Optional[pulumi.Input[str]] = None,
786
- service_user: Optional[pulumi.Input[str]] = None,
787
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
788
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
789
- user: Optional[pulumi.Input[str]] = None,
790
- zone: Optional[pulumi.Input[str]] = None,
882
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
883
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
884
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
885
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
886
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
887
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
888
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
889
+ user: Optional[pulumi.Input[_builtins.str]] = None,
890
+ zone: Optional[pulumi.Input[_builtins.str]] = None,
791
891
  __props__=None):
792
892
  """
793
893
  Creates and manages Scaleway Compute Baremetal servers. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/elastic-metal/).
@@ -796,125 +896,60 @@ class Server(pulumi.CustomResource):
796
896
 
797
897
  ### Basic
798
898
 
799
- ```python
800
- import pulumi
801
- import pulumi_scaleway as scaleway
802
- import pulumiverse_scaleway as scaleway
803
-
804
- main = scaleway.iam.get_ssh_key(name="main")
805
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
806
- name="EM-I220E-NVME")
807
- base = scaleway.elasticmetal.Server("base",
808
- zone="fr-par-2",
809
- offer=my_offer.offer_id,
810
- os="d17d6872-0412-45d9-a198-af82c34d3c5c",
811
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]])
812
- ```
813
-
814
899
  ### With option
815
900
 
816
- ```python
817
- import pulumi
818
- import pulumi_scaleway as scaleway
819
- import pulumiverse_scaleway as scaleway
820
-
821
- main = scaleway.iam.get_ssh_key(name="main")
822
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
823
- name="Ubuntu",
824
- version="22.04 LTS (Jammy Jellyfish)")
825
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
826
- name="EM-B112X-SSD")
827
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
828
- name="Private Network")
829
- remote_access = scaleway.elasticmetal.get_option(zone="fr-par-2",
830
- name="Remote Access")
831
- base = scaleway.elasticmetal.Server("base",
832
- zone="fr-par-2",
833
- offer=my_offer.offer_id,
834
- os=my_os.os_id,
835
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
836
- options=[
837
- {
838
- "id": private_network.option_id,
839
- },
840
- {
841
- "id": remote_access.option_id,
842
- },
843
- ])
844
- ```
845
-
846
- ### With private network
901
+ ### With cloud-init
847
902
 
848
903
  ```python
849
904
  import pulumi
850
905
  import pulumi_scaleway as scaleway
906
+ import pulumi_std as std
851
907
  import pulumiverse_scaleway as scaleway
852
908
 
853
- main = scaleway.iam.get_ssh_key(name="main")
854
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
909
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
910
+ my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
855
911
  name="Ubuntu",
856
912
  version="22.04 LTS (Jammy Jellyfish)")
857
913
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
858
- name="EM-B112X-SSD")
859
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
860
- name="Private Network")
861
- pn = scaleway.network.PrivateNetwork("pn",
862
- region="fr-par",
863
- name="baremetal_private_network")
864
- base = scaleway.elasticmetal.Server("base",
914
+ name="EM-I220E-NVME")
915
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
865
916
  zone="fr-par-2",
866
917
  offer=my_offer.offer_id,
867
918
  os=my_os.os_id,
868
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
869
- options=[{
870
- "id": private_network.option_id,
871
- }],
872
- private_networks=[{
873
- "id": pn.id,
874
- }])
919
+ ssh_key_ids=[my_ssh_key.id],
920
+ cloud_init=std.index.file(input="userdata.yaml")["result"])
875
921
  ```
876
922
 
877
- ### With IPAM IP IDs
878
-
879
923
  ```python
880
924
  import pulumi
881
925
  import pulumi_scaleway as scaleway
882
926
  import pulumiverse_scaleway as scaleway
883
927
 
884
- vpc01 = scaleway.network.Vpc("vpc01", name="vpc_baremetal")
885
- pn01 = scaleway.network.PrivateNetwork("pn01",
886
- name="private_network_baremetal",
887
- ipv4_subnet={
888
- "subnet": "172.16.64.0/22",
889
- },
890
- vpc_id=vpc01.id)
891
- ip01 = scaleway.ipam.Ip("ip01",
892
- address="172.16.64.7",
893
- sources=[{
894
- "private_network_id": pn01.id,
895
- }])
896
- my_key = scaleway.iam.get_ssh_key(name="main")
928
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
929
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
930
+ name="EM-I220E-NVME")
897
931
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
898
932
  name="Ubuntu",
899
933
  version="22.04 LTS (Jammy Jellyfish)")
900
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
901
- name="EM-A115X-SSD")
902
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-1",
903
- name="Private Network")
904
- base = scaleway.elasticmetal.Server("base",
934
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
905
935
  zone="fr-par-2",
906
936
  offer=my_offer.offer_id,
907
937
  os=my_os.os_id,
908
- ssh_key_ids=[my_key_scaleway_account_ssh_key["id"]],
909
- options=[{
910
- "id": private_network.option_id,
911
- }],
912
- private_networks=[{
913
- "id": pn01.id,
914
- "ipam_ip_ids": [ip01.id],
915
- }])
938
+ ssh_key_ids=[my_ssh_key.id],
939
+ cloud_init=\"\"\"#cloud-config
940
+ packages:
941
+ - htop
942
+ - curl
943
+
944
+ runcmd:
945
+ - echo \\"Hello from raw cloud-init!\\" > /home/ubuntu/message.txt
946
+ \"\"\")
916
947
  ```
917
948
 
949
+ ### With private network
950
+
951
+ ### With IPAM IP IDs
952
+
918
953
  ### Without install config
919
954
 
920
955
  ```python
@@ -924,7 +959,7 @@ class Server(pulumi.CustomResource):
924
959
 
925
960
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
926
961
  name="EM-B112X-SSD")
927
- base = scaleway.elasticmetal.Server("base",
962
+ my_server = scaleway.elasticmetal.Server("my_server",
928
963
  zone="fr-par-2",
929
964
  offer=my_offer.offer_id,
930
965
  install_config_afterward=True)
@@ -940,16 +975,18 @@ class Server(pulumi.CustomResource):
940
975
  config = pulumi.Config()
941
976
  config_custom_partitioning = config.get("configCustomPartitioning")
942
977
  if config_custom_partitioning is None:
943
- config_custom_partitioning = "{\\"disks\\":[{\\"device\\":\\"/dev/nvme0n1\\",\\"partitions\\":[{\\"label\\":\\"uefi\\",\\"number\\":1,\\"size\\":536870912},{\\"label\\":\\"swap\\",\\"number\\":2,\\"size\\":4294967296},{\\"label\\":\\"boot\\",\\"number\\":3,\\"size\\":1073741824},{\\"label\\":\\"root\\",\\"number\\":4,\\"size\\":1017827045376}]},{\\"device\\":\\"/dev/nvme1n1\\",\\"partitions\\":[{\\"label\\":\\"swap\\",\\"number\\":1,\\"size\\":4294967296},{\\"label\\":\\"boot\\",\\"number\\":2,\\"size\\":1073741824},{\\"label\\":\\"root\\",\\"number\\":3,\\"size\\":1017827045376}]}],\\"filesystems\\":[{\\"device\\":\\"/dev/nvme0n1p1\\",\\"format\\":\\"fat32\\",\\"mountpoint\\":\\"/boot/efi\\"},{\\"device\\":\\"/dev/md0\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/boot\\"},{\\"device\\":\\"/dev/md1\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/\\"}],\\"raids\\":[{\\"devices\\":[\\"/dev/nvme0n1p3\\",\\"/dev/nvme1n1p2\\"],\\"level\\":\\"raid_level_1\\",\\"name\\":\\"/dev/md0\\"},{\\"devices\\":[\\"/dev/nvme0n1p4\\",\\"/dev/nvme1n1p3\\"],\\"level\\":\\"raid_level_1\\",\\"name\\":\\"/dev/md1\\"}],\\"zfs\\":{\\"pools\\":[]}}"
978
+ config_custom_partitioning = "{\\"disks\\":[{\\"device\\":\\"/dev/nvme0n1\\",\\"partitions\\":[{\\"label\\":\\"uefi\\",\\"number\\":1,\\"size\\":536870912,\\"useAllAvailableSpace\\":false},{\\"label\\":\\"boot\\",\\"number\\":2,\\"size\\":536870912,\\"useAllAvailableSpace\\":false},{\\"label\\":\\"root\\",\\"number\\":3,\\"size\\":1018839433216,\\"useAllAvailableSpace\\":false}]},{\\"device\\":\\"/dev/nvme1n1\\",\\"partitions\\":[{\\"label\\":\\"boot\\",\\"number\\":1,\\"size\\":536870912,\\"useAllAvailableSpace\\":false},{\\"label\\":\\"data\\",\\"number\\":2,\\"size\\":1018839433216,\\"useAllAvailableSpace\\":false}]}],\\"filesystems\\":[{\\"device\\":\\"/dev/nvme0n1p1\\",\\"format\\":\\"fat32\\",\\"mountpoint\\":\\"/boot/efi\\"},{\\"device\\":\\"/dev/nvme0n1p2\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/boot\\"},{\\"device\\":\\"/dev/nvme0n1p3\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/\\"},{\\"device\\":\\"/dev/nvme1n1p2\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/data\\"}],\\"raids\\":[]}"
944
979
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
945
980
  name="Ubuntu",
946
981
  version="22.04 LTS (Jammy Jellyfish)")
947
- main = scaleway.iam.SshKey("main", name="main")
982
+ my_ssh_key = scaleway.iam.SshKey("my_ssh_key",
983
+ name="my_ssh_key",
984
+ public_key="ssh XXXXXXXXXXX")
948
985
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
949
986
  name="EM-B220E-NVME",
950
987
  subscription_period="hourly")
951
- base = scaleway.elasticmetal.Server("base",
952
- name="%s",
988
+ my_server = scaleway.elasticmetal.Server("my_server",
989
+ name="my_super_server",
953
990
  zone="fr-par-1",
954
991
  description="test a description",
955
992
  offer=my_offer.offer_id,
@@ -960,9 +997,50 @@ class Server(pulumi.CustomResource):
960
997
  "scaleway_baremetal_server",
961
998
  "minimal",
962
999
  ],
963
- ssh_key_ids=[main.id])
1000
+ ssh_key_ids=[my_ssh_key.id])
964
1001
  ```
965
1002
 
1003
+ ### Migrate from hourly to monthly plan
1004
+
1005
+ To migrate from an hourly to a monthly subscription for a Scaleway Baremetal server, it is important to understand that the migration can only be done by using the data source.
1006
+ You cannot directly modify the subscription_period of an existing elasticmetal_get_offer resource. Instead, you must define the monthly offer using the data source and then update the server configuration accordingly.
1007
+
1008
+ ### Hourly Plan Example
1009
+
1010
+ ```python
1011
+ import pulumi
1012
+ import pulumi_scaleway as scaleway
1013
+ import pulumiverse_scaleway as scaleway
1014
+
1015
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1016
+ name="EM-B220E-NVME",
1017
+ subscription_period="hourly")
1018
+ my_server = scaleway.elasticmetal.Server("my_server",
1019
+ name="UpdateSubscriptionPeriod",
1020
+ offer=my_offer.offer_id,
1021
+ zone="%s",
1022
+ install_config_afterward=True)
1023
+ ```
1024
+
1025
+ ### Monthly Plan Example
1026
+
1027
+ ```python
1028
+ import pulumi
1029
+ import pulumi_scaleway as scaleway
1030
+ import pulumiverse_scaleway as scaleway
1031
+
1032
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1033
+ name="EM-B220E-NVME",
1034
+ subscription_period="monthly")
1035
+ my_server = scaleway.elasticmetal.Server("my_server",
1036
+ name="UpdateSubscriptionPeriod",
1037
+ offer=my_offer.offer_id,
1038
+ zone="fr-par-1",
1039
+ install_config_afterward=True)
1040
+ ```
1041
+
1042
+ **Important** Once you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.
1043
+
966
1044
  ## Import
967
1045
 
968
1046
  Baremetal servers can be imported using the `{zone}/{id}`, e.g.
@@ -975,31 +1053,34 @@ class Server(pulumi.CustomResource):
975
1053
 
976
1054
  :param str resource_name: The name of the resource.
977
1055
  :param pulumi.ResourceOptions opts: Options for the resource.
978
- :param pulumi.Input[str] description: A description for the server.
979
- :param pulumi.Input[str] hostname: The hostname of the server.
980
- :param pulumi.Input[bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
981
- :param pulumi.Input[str] name: The name of the server.
982
- :param pulumi.Input[str] offer: The offer UUID of the baremetal server.
1056
+ :param pulumi.Input[_builtins.str] cloud_init: Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
1057
+ :param pulumi.Input[_builtins.str] description: A description for the server.
1058
+ :param pulumi.Input[_builtins.str] hostname: The hostname of the server.
1059
+ :param pulumi.Input[_builtins.bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
1060
+ :param pulumi.Input[_builtins.str] name: The name of the server.
1061
+ :param pulumi.Input[_builtins.str] offer: The offer UUID of the baremetal server.
983
1062
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
984
1063
 
985
1064
  > **Important:** Updates to `offer` will recreate the server.
986
1065
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerOptionArgs', 'ServerOptionArgsDict']]]] options: The options to enable on the server.
987
1066
  > The `options` block supports:
988
- :param pulumi.Input[str] os: The UUID of the os to install on the server.
1067
+ :param pulumi.Input[_builtins.str] os: The UUID of the os to install on the server.
989
1068
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
990
1069
  > **Important:** Updates to `os` will reinstall the server.
991
- :param pulumi.Input[str] partitioning: The partitioning schema in JSON format
992
- :param pulumi.Input[str] password: Password used for the installation. May be required depending on used os.
1070
+ :param pulumi.Input[_builtins.str] partitioning: The partitioning schema in JSON format
1071
+ :param pulumi.Input[_builtins.str] password: Password used for the installation. May be required depending on used os.
1072
+ :param pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateIpArgs', 'ServerPrivateIpArgsDict']]]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
993
1073
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateNetworkArgs', 'ServerPrivateNetworkArgsDict']]]] private_networks: The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)
994
- :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
995
- :param pulumi.Input[bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1074
+ :param pulumi.Input[_builtins.str] project_id: `project_id`) The ID of the project the server is associated with.
1075
+ :param pulumi.Input[_builtins.bool] protected: Set to true to activate server protection option.
1076
+ :param pulumi.Input[_builtins.bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
996
1077
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
997
- :param pulumi.Input[str] service_password: Password used for the service to install. May be required depending on used os.
998
- :param pulumi.Input[str] service_user: User used for the service to install.
999
- :param pulumi.Input[Sequence[pulumi.Input[str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1000
- :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
1001
- :param pulumi.Input[str] user: User used for the installation.
1002
- :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
1078
+ :param pulumi.Input[_builtins.str] service_password: Password used for the service to install. May be required depending on used os.
1079
+ :param pulumi.Input[_builtins.str] service_user: User used for the service to install.
1080
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1081
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the server.
1082
+ :param pulumi.Input[_builtins.str] user: User used for the installation.
1083
+ :param pulumi.Input[_builtins.str] zone: `zone`) The zone in which the server should be created.
1003
1084
  """
1004
1085
  ...
1005
1086
  @overload
@@ -1014,125 +1095,60 @@ class Server(pulumi.CustomResource):
1014
1095
 
1015
1096
  ### Basic
1016
1097
 
1017
- ```python
1018
- import pulumi
1019
- import pulumi_scaleway as scaleway
1020
- import pulumiverse_scaleway as scaleway
1021
-
1022
- main = scaleway.iam.get_ssh_key(name="main")
1023
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1024
- name="EM-I220E-NVME")
1025
- base = scaleway.elasticmetal.Server("base",
1026
- zone="fr-par-2",
1027
- offer=my_offer.offer_id,
1028
- os="d17d6872-0412-45d9-a198-af82c34d3c5c",
1029
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]])
1030
- ```
1031
-
1032
1098
  ### With option
1033
1099
 
1034
- ```python
1035
- import pulumi
1036
- import pulumi_scaleway as scaleway
1037
- import pulumiverse_scaleway as scaleway
1038
-
1039
- main = scaleway.iam.get_ssh_key(name="main")
1040
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
1041
- name="Ubuntu",
1042
- version="22.04 LTS (Jammy Jellyfish)")
1043
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1044
- name="EM-B112X-SSD")
1045
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
1046
- name="Private Network")
1047
- remote_access = scaleway.elasticmetal.get_option(zone="fr-par-2",
1048
- name="Remote Access")
1049
- base = scaleway.elasticmetal.Server("base",
1050
- zone="fr-par-2",
1051
- offer=my_offer.offer_id,
1052
- os=my_os.os_id,
1053
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
1054
- options=[
1055
- {
1056
- "id": private_network.option_id,
1057
- },
1058
- {
1059
- "id": remote_access.option_id,
1060
- },
1061
- ])
1062
- ```
1063
-
1064
- ### With private network
1100
+ ### With cloud-init
1065
1101
 
1066
1102
  ```python
1067
1103
  import pulumi
1068
1104
  import pulumi_scaleway as scaleway
1105
+ import pulumi_std as std
1069
1106
  import pulumiverse_scaleway as scaleway
1070
1107
 
1071
- main = scaleway.iam.get_ssh_key(name="main")
1072
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
1108
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
1109
+ my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
1073
1110
  name="Ubuntu",
1074
1111
  version="22.04 LTS (Jammy Jellyfish)")
1075
1112
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1076
- name="EM-B112X-SSD")
1077
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
1078
- name="Private Network")
1079
- pn = scaleway.network.PrivateNetwork("pn",
1080
- region="fr-par",
1081
- name="baremetal_private_network")
1082
- base = scaleway.elasticmetal.Server("base",
1113
+ name="EM-I220E-NVME")
1114
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
1083
1115
  zone="fr-par-2",
1084
1116
  offer=my_offer.offer_id,
1085
1117
  os=my_os.os_id,
1086
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
1087
- options=[{
1088
- "id": private_network.option_id,
1089
- }],
1090
- private_networks=[{
1091
- "id": pn.id,
1092
- }])
1118
+ ssh_key_ids=[my_ssh_key.id],
1119
+ cloud_init=std.index.file(input="userdata.yaml")["result"])
1093
1120
  ```
1094
1121
 
1095
- ### With IPAM IP IDs
1096
-
1097
1122
  ```python
1098
1123
  import pulumi
1099
1124
  import pulumi_scaleway as scaleway
1100
1125
  import pulumiverse_scaleway as scaleway
1101
1126
 
1102
- vpc01 = scaleway.network.Vpc("vpc01", name="vpc_baremetal")
1103
- pn01 = scaleway.network.PrivateNetwork("pn01",
1104
- name="private_network_baremetal",
1105
- ipv4_subnet={
1106
- "subnet": "172.16.64.0/22",
1107
- },
1108
- vpc_id=vpc01.id)
1109
- ip01 = scaleway.ipam.Ip("ip01",
1110
- address="172.16.64.7",
1111
- sources=[{
1112
- "private_network_id": pn01.id,
1113
- }])
1114
- my_key = scaleway.iam.get_ssh_key(name="main")
1127
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
1128
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1129
+ name="EM-I220E-NVME")
1115
1130
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
1116
1131
  name="Ubuntu",
1117
1132
  version="22.04 LTS (Jammy Jellyfish)")
1118
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1119
- name="EM-A115X-SSD")
1120
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-1",
1121
- name="Private Network")
1122
- base = scaleway.elasticmetal.Server("base",
1133
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
1123
1134
  zone="fr-par-2",
1124
1135
  offer=my_offer.offer_id,
1125
1136
  os=my_os.os_id,
1126
- ssh_key_ids=[my_key_scaleway_account_ssh_key["id"]],
1127
- options=[{
1128
- "id": private_network.option_id,
1129
- }],
1130
- private_networks=[{
1131
- "id": pn01.id,
1132
- "ipam_ip_ids": [ip01.id],
1133
- }])
1137
+ ssh_key_ids=[my_ssh_key.id],
1138
+ cloud_init=\"\"\"#cloud-config
1139
+ packages:
1140
+ - htop
1141
+ - curl
1142
+
1143
+ runcmd:
1144
+ - echo \\"Hello from raw cloud-init!\\" > /home/ubuntu/message.txt
1145
+ \"\"\")
1134
1146
  ```
1135
1147
 
1148
+ ### With private network
1149
+
1150
+ ### With IPAM IP IDs
1151
+
1136
1152
  ### Without install config
1137
1153
 
1138
1154
  ```python
@@ -1142,7 +1158,7 @@ class Server(pulumi.CustomResource):
1142
1158
 
1143
1159
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1144
1160
  name="EM-B112X-SSD")
1145
- base = scaleway.elasticmetal.Server("base",
1161
+ my_server = scaleway.elasticmetal.Server("my_server",
1146
1162
  zone="fr-par-2",
1147
1163
  offer=my_offer.offer_id,
1148
1164
  install_config_afterward=True)
@@ -1158,16 +1174,18 @@ class Server(pulumi.CustomResource):
1158
1174
  config = pulumi.Config()
1159
1175
  config_custom_partitioning = config.get("configCustomPartitioning")
1160
1176
  if config_custom_partitioning is None:
1161
- config_custom_partitioning = "{\\"disks\\":[{\\"device\\":\\"/dev/nvme0n1\\",\\"partitions\\":[{\\"label\\":\\"uefi\\",\\"number\\":1,\\"size\\":536870912},{\\"label\\":\\"swap\\",\\"number\\":2,\\"size\\":4294967296},{\\"label\\":\\"boot\\",\\"number\\":3,\\"size\\":1073741824},{\\"label\\":\\"root\\",\\"number\\":4,\\"size\\":1017827045376}]},{\\"device\\":\\"/dev/nvme1n1\\",\\"partitions\\":[{\\"label\\":\\"swap\\",\\"number\\":1,\\"size\\":4294967296},{\\"label\\":\\"boot\\",\\"number\\":2,\\"size\\":1073741824},{\\"label\\":\\"root\\",\\"number\\":3,\\"size\\":1017827045376}]}],\\"filesystems\\":[{\\"device\\":\\"/dev/nvme0n1p1\\",\\"format\\":\\"fat32\\",\\"mountpoint\\":\\"/boot/efi\\"},{\\"device\\":\\"/dev/md0\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/boot\\"},{\\"device\\":\\"/dev/md1\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/\\"}],\\"raids\\":[{\\"devices\\":[\\"/dev/nvme0n1p3\\",\\"/dev/nvme1n1p2\\"],\\"level\\":\\"raid_level_1\\",\\"name\\":\\"/dev/md0\\"},{\\"devices\\":[\\"/dev/nvme0n1p4\\",\\"/dev/nvme1n1p3\\"],\\"level\\":\\"raid_level_1\\",\\"name\\":\\"/dev/md1\\"}],\\"zfs\\":{\\"pools\\":[]}}"
1177
+ config_custom_partitioning = "{\\"disks\\":[{\\"device\\":\\"/dev/nvme0n1\\",\\"partitions\\":[{\\"label\\":\\"uefi\\",\\"number\\":1,\\"size\\":536870912,\\"useAllAvailableSpace\\":false},{\\"label\\":\\"boot\\",\\"number\\":2,\\"size\\":536870912,\\"useAllAvailableSpace\\":false},{\\"label\\":\\"root\\",\\"number\\":3,\\"size\\":1018839433216,\\"useAllAvailableSpace\\":false}]},{\\"device\\":\\"/dev/nvme1n1\\",\\"partitions\\":[{\\"label\\":\\"boot\\",\\"number\\":1,\\"size\\":536870912,\\"useAllAvailableSpace\\":false},{\\"label\\":\\"data\\",\\"number\\":2,\\"size\\":1018839433216,\\"useAllAvailableSpace\\":false}]}],\\"filesystems\\":[{\\"device\\":\\"/dev/nvme0n1p1\\",\\"format\\":\\"fat32\\",\\"mountpoint\\":\\"/boot/efi\\"},{\\"device\\":\\"/dev/nvme0n1p2\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/boot\\"},{\\"device\\":\\"/dev/nvme0n1p3\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/\\"},{\\"device\\":\\"/dev/nvme1n1p2\\",\\"format\\":\\"ext4\\",\\"mountpoint\\":\\"/data\\"}],\\"raids\\":[]}"
1162
1178
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
1163
1179
  name="Ubuntu",
1164
1180
  version="22.04 LTS (Jammy Jellyfish)")
1165
- main = scaleway.iam.SshKey("main", name="main")
1181
+ my_ssh_key = scaleway.iam.SshKey("my_ssh_key",
1182
+ name="my_ssh_key",
1183
+ public_key="ssh XXXXXXXXXXX")
1166
1184
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1167
1185
  name="EM-B220E-NVME",
1168
1186
  subscription_period="hourly")
1169
- base = scaleway.elasticmetal.Server("base",
1170
- name="%s",
1187
+ my_server = scaleway.elasticmetal.Server("my_server",
1188
+ name="my_super_server",
1171
1189
  zone="fr-par-1",
1172
1190
  description="test a description",
1173
1191
  offer=my_offer.offer_id,
@@ -1178,9 +1196,50 @@ class Server(pulumi.CustomResource):
1178
1196
  "scaleway_baremetal_server",
1179
1197
  "minimal",
1180
1198
  ],
1181
- ssh_key_ids=[main.id])
1199
+ ssh_key_ids=[my_ssh_key.id])
1200
+ ```
1201
+
1202
+ ### Migrate from hourly to monthly plan
1203
+
1204
+ To migrate from an hourly to a monthly subscription for a Scaleway Baremetal server, it is important to understand that the migration can only be done by using the data source.
1205
+ You cannot directly modify the subscription_period of an existing elasticmetal_get_offer resource. Instead, you must define the monthly offer using the data source and then update the server configuration accordingly.
1206
+
1207
+ ### Hourly Plan Example
1208
+
1209
+ ```python
1210
+ import pulumi
1211
+ import pulumi_scaleway as scaleway
1212
+ import pulumiverse_scaleway as scaleway
1213
+
1214
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1215
+ name="EM-B220E-NVME",
1216
+ subscription_period="hourly")
1217
+ my_server = scaleway.elasticmetal.Server("my_server",
1218
+ name="UpdateSubscriptionPeriod",
1219
+ offer=my_offer.offer_id,
1220
+ zone="%s",
1221
+ install_config_afterward=True)
1222
+ ```
1223
+
1224
+ ### Monthly Plan Example
1225
+
1226
+ ```python
1227
+ import pulumi
1228
+ import pulumi_scaleway as scaleway
1229
+ import pulumiverse_scaleway as scaleway
1230
+
1231
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1232
+ name="EM-B220E-NVME",
1233
+ subscription_period="monthly")
1234
+ my_server = scaleway.elasticmetal.Server("my_server",
1235
+ name="UpdateSubscriptionPeriod",
1236
+ offer=my_offer.offer_id,
1237
+ zone="fr-par-1",
1238
+ install_config_afterward=True)
1182
1239
  ```
1183
1240
 
1241
+ **Important** Once you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.
1242
+
1184
1243
  ## Import
1185
1244
 
1186
1245
  Baremetal servers can be imported using the `{zone}/{id}`, e.g.
@@ -1206,24 +1265,27 @@ class Server(pulumi.CustomResource):
1206
1265
  def _internal_init(__self__,
1207
1266
  resource_name: str,
1208
1267
  opts: Optional[pulumi.ResourceOptions] = None,
1209
- description: Optional[pulumi.Input[str]] = None,
1210
- hostname: Optional[pulumi.Input[str]] = None,
1211
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
1212
- name: Optional[pulumi.Input[str]] = None,
1213
- offer: Optional[pulumi.Input[str]] = None,
1268
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
1269
+ description: Optional[pulumi.Input[_builtins.str]] = None,
1270
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
1271
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
1272
+ name: Optional[pulumi.Input[_builtins.str]] = None,
1273
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
1214
1274
  options: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerOptionArgs', 'ServerOptionArgsDict']]]]] = None,
1215
- os: Optional[pulumi.Input[str]] = None,
1216
- partitioning: Optional[pulumi.Input[str]] = None,
1217
- password: Optional[pulumi.Input[str]] = None,
1275
+ os: Optional[pulumi.Input[_builtins.str]] = None,
1276
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
1277
+ password: Optional[pulumi.Input[_builtins.str]] = None,
1278
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateIpArgs', 'ServerPrivateIpArgsDict']]]]] = None,
1218
1279
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateNetworkArgs', 'ServerPrivateNetworkArgsDict']]]]] = None,
1219
- project_id: Optional[pulumi.Input[str]] = None,
1220
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
1221
- service_password: Optional[pulumi.Input[str]] = None,
1222
- service_user: Optional[pulumi.Input[str]] = None,
1223
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1224
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1225
- user: Optional[pulumi.Input[str]] = None,
1226
- zone: Optional[pulumi.Input[str]] = None,
1280
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
1281
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
1282
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
1283
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
1284
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
1285
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1286
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1287
+ user: Optional[pulumi.Input[_builtins.str]] = None,
1288
+ zone: Optional[pulumi.Input[_builtins.str]] = None,
1227
1289
  __props__=None):
1228
1290
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
1229
1291
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -1233,6 +1295,7 @@ class Server(pulumi.CustomResource):
1233
1295
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1234
1296
  __props__ = ServerArgs.__new__(ServerArgs)
1235
1297
 
1298
+ __props__.__dict__["cloud_init"] = cloud_init
1236
1299
  __props__.__dict__["description"] = description
1237
1300
  __props__.__dict__["hostname"] = hostname
1238
1301
  __props__.__dict__["install_config_afterward"] = install_config_afterward
@@ -1244,8 +1307,10 @@ class Server(pulumi.CustomResource):
1244
1307
  __props__.__dict__["os"] = os
1245
1308
  __props__.__dict__["partitioning"] = partitioning
1246
1309
  __props__.__dict__["password"] = None if password is None else pulumi.Output.secret(password)
1310
+ __props__.__dict__["private_ips"] = private_ips
1247
1311
  __props__.__dict__["private_networks"] = private_networks
1248
1312
  __props__.__dict__["project_id"] = project_id
1313
+ __props__.__dict__["protected"] = protected
1249
1314
  __props__.__dict__["reinstall_on_config_changes"] = reinstall_on_config_changes
1250
1315
  __props__.__dict__["service_password"] = None if service_password is None else pulumi.Output.secret(service_password)
1251
1316
  __props__.__dict__["service_user"] = service_user
@@ -1275,32 +1340,35 @@ class Server(pulumi.CustomResource):
1275
1340
  def get(resource_name: str,
1276
1341
  id: pulumi.Input[str],
1277
1342
  opts: Optional[pulumi.ResourceOptions] = None,
1278
- description: Optional[pulumi.Input[str]] = None,
1279
- domain: Optional[pulumi.Input[str]] = None,
1280
- hostname: Optional[pulumi.Input[str]] = None,
1281
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
1343
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
1344
+ description: Optional[pulumi.Input[_builtins.str]] = None,
1345
+ domain: Optional[pulumi.Input[_builtins.str]] = None,
1346
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
1347
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
1282
1348
  ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerIpArgs', 'ServerIpArgsDict']]]]] = None,
1283
1349
  ipv4s: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerIpv4Args', 'ServerIpv4ArgsDict']]]]] = None,
1284
1350
  ipv6s: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerIpv6Args', 'ServerIpv6ArgsDict']]]]] = None,
1285
- name: Optional[pulumi.Input[str]] = None,
1286
- offer: Optional[pulumi.Input[str]] = None,
1287
- offer_id: Optional[pulumi.Input[str]] = None,
1288
- offer_name: Optional[pulumi.Input[str]] = None,
1351
+ name: Optional[pulumi.Input[_builtins.str]] = None,
1352
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
1353
+ offer_id: Optional[pulumi.Input[_builtins.str]] = None,
1354
+ offer_name: Optional[pulumi.Input[_builtins.str]] = None,
1289
1355
  options: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerOptionArgs', 'ServerOptionArgsDict']]]]] = None,
1290
- organization_id: Optional[pulumi.Input[str]] = None,
1291
- os: Optional[pulumi.Input[str]] = None,
1292
- os_name: Optional[pulumi.Input[str]] = None,
1293
- partitioning: Optional[pulumi.Input[str]] = None,
1294
- password: Optional[pulumi.Input[str]] = None,
1356
+ organization_id: Optional[pulumi.Input[_builtins.str]] = None,
1357
+ os: Optional[pulumi.Input[_builtins.str]] = None,
1358
+ os_name: Optional[pulumi.Input[_builtins.str]] = None,
1359
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
1360
+ password: Optional[pulumi.Input[_builtins.str]] = None,
1361
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateIpArgs', 'ServerPrivateIpArgsDict']]]]] = None,
1295
1362
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateNetworkArgs', 'ServerPrivateNetworkArgsDict']]]]] = None,
1296
- project_id: Optional[pulumi.Input[str]] = None,
1297
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
1298
- service_password: Optional[pulumi.Input[str]] = None,
1299
- service_user: Optional[pulumi.Input[str]] = None,
1300
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1301
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1302
- user: Optional[pulumi.Input[str]] = None,
1303
- zone: Optional[pulumi.Input[str]] = None) -> 'Server':
1363
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
1364
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
1365
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
1366
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
1367
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
1368
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1369
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1370
+ user: Optional[pulumi.Input[_builtins.str]] = None,
1371
+ zone: Optional[pulumi.Input[_builtins.str]] = None) -> 'Server':
1304
1372
  """
1305
1373
  Get an existing Server resource's state with the given name, id, and optional extra
1306
1374
  properties used to qualify the lookup.
@@ -1308,44 +1376,48 @@ class Server(pulumi.CustomResource):
1308
1376
  :param str resource_name: The unique name of the resulting resource.
1309
1377
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
1310
1378
  :param pulumi.ResourceOptions opts: Options for the resource.
1311
- :param pulumi.Input[str] description: A description for the server.
1312
- :param pulumi.Input[str] domain: The domain of the server.
1313
- :param pulumi.Input[str] hostname: The hostname of the server.
1314
- :param pulumi.Input[bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
1379
+ :param pulumi.Input[_builtins.str] cloud_init: Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
1380
+ :param pulumi.Input[_builtins.str] description: A description for the server.
1381
+ :param pulumi.Input[_builtins.str] domain: The domain of the server.
1382
+ :param pulumi.Input[_builtins.str] hostname: The hostname of the server.
1383
+ :param pulumi.Input[_builtins.bool] install_config_afterward: If True, this boolean allows to create a server without the install config if you want to provide it later.
1315
1384
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerIpArgs', 'ServerIpArgsDict']]]] ips: (List of) The IPs of the server.
1316
1385
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerIpv4Args', 'ServerIpv4ArgsDict']]]] ipv4s: (List of) The IPv4 addresses of the server.
1317
1386
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerIpv6Args', 'ServerIpv6ArgsDict']]]] ipv6s: (List of) The IPv6 addresses of the server.
1318
- :param pulumi.Input[str] name: The name of the server.
1319
- :param pulumi.Input[str] offer: The offer UUID of the baremetal server.
1387
+ :param pulumi.Input[_builtins.str] name: The name of the server.
1388
+ :param pulumi.Input[_builtins.str] offer: The offer UUID of the baremetal server.
1320
1389
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
1321
1390
 
1322
1391
  > **Important:** Updates to `offer` will recreate the server.
1323
- :param pulumi.Input[str] offer_id: The ID of the offer.
1324
- :param pulumi.Input[str] offer_name: The name of the offer.
1392
+ :param pulumi.Input[_builtins.str] offer_id: The ID of the offer.
1393
+ :param pulumi.Input[_builtins.str] offer_name: The name of the offer.
1325
1394
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerOptionArgs', 'ServerOptionArgsDict']]]] options: The options to enable on the server.
1326
1395
  > The `options` block supports:
1327
- :param pulumi.Input[str] organization_id: The organization ID the server is associated with.
1328
- :param pulumi.Input[str] os: The UUID of the os to install on the server.
1396
+ :param pulumi.Input[_builtins.str] organization_id: The organization ID the server is associated with.
1397
+ :param pulumi.Input[_builtins.str] os: The UUID of the os to install on the server.
1329
1398
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
1330
1399
  > **Important:** Updates to `os` will reinstall the server.
1331
- :param pulumi.Input[str] os_name: The name of the os.
1332
- :param pulumi.Input[str] partitioning: The partitioning schema in JSON format
1333
- :param pulumi.Input[str] password: Password used for the installation. May be required depending on used os.
1400
+ :param pulumi.Input[_builtins.str] os_name: The name of the os.
1401
+ :param pulumi.Input[_builtins.str] partitioning: The partitioning schema in JSON format
1402
+ :param pulumi.Input[_builtins.str] password: Password used for the installation. May be required depending on used os.
1403
+ :param pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateIpArgs', 'ServerPrivateIpArgsDict']]]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
1334
1404
  :param pulumi.Input[Sequence[pulumi.Input[Union['ServerPrivateNetworkArgs', 'ServerPrivateNetworkArgsDict']]]] private_networks: The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)
1335
- :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
1336
- :param pulumi.Input[bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1405
+ :param pulumi.Input[_builtins.str] project_id: `project_id`) The ID of the project the server is associated with.
1406
+ :param pulumi.Input[_builtins.bool] protected: Set to true to activate server protection option.
1407
+ :param pulumi.Input[_builtins.bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1337
1408
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
1338
- :param pulumi.Input[str] service_password: Password used for the service to install. May be required depending on used os.
1339
- :param pulumi.Input[str] service_user: User used for the service to install.
1340
- :param pulumi.Input[Sequence[pulumi.Input[str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1341
- :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
1342
- :param pulumi.Input[str] user: User used for the installation.
1343
- :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
1409
+ :param pulumi.Input[_builtins.str] service_password: Password used for the service to install. May be required depending on used os.
1410
+ :param pulumi.Input[_builtins.str] service_user: User used for the service to install.
1411
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1412
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the server.
1413
+ :param pulumi.Input[_builtins.str] user: User used for the installation.
1414
+ :param pulumi.Input[_builtins.str] zone: `zone`) The zone in which the server should be created.
1344
1415
  """
1345
1416
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1346
1417
 
1347
1418
  __props__ = _ServerState.__new__(_ServerState)
1348
1419
 
1420
+ __props__.__dict__["cloud_init"] = cloud_init
1349
1421
  __props__.__dict__["description"] = description
1350
1422
  __props__.__dict__["domain"] = domain
1351
1423
  __props__.__dict__["hostname"] = hostname
@@ -1363,8 +1435,10 @@ class Server(pulumi.CustomResource):
1363
1435
  __props__.__dict__["os_name"] = os_name
1364
1436
  __props__.__dict__["partitioning"] = partitioning
1365
1437
  __props__.__dict__["password"] = password
1438
+ __props__.__dict__["private_ips"] = private_ips
1366
1439
  __props__.__dict__["private_networks"] = private_networks
1367
1440
  __props__.__dict__["project_id"] = project_id
1441
+ __props__.__dict__["protected"] = protected
1368
1442
  __props__.__dict__["reinstall_on_config_changes"] = reinstall_on_config_changes
1369
1443
  __props__.__dict__["service_password"] = service_password
1370
1444
  __props__.__dict__["service_user"] = service_user
@@ -1374,39 +1448,47 @@ class Server(pulumi.CustomResource):
1374
1448
  __props__.__dict__["zone"] = zone
1375
1449
  return Server(resource_name, opts=opts, __props__=__props__)
1376
1450
 
1377
- @property
1451
+ @_builtins.property
1452
+ @pulumi.getter(name="cloudInit")
1453
+ def cloud_init(self) -> pulumi.Output[_builtins.str]:
1454
+ """
1455
+ Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file("cloud-init.yml")`). Max length: 127998 characters. Updates to `cloud_init` will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.
1456
+ """
1457
+ return pulumi.get(self, "cloud_init")
1458
+
1459
+ @_builtins.property
1378
1460
  @pulumi.getter
1379
- def description(self) -> pulumi.Output[Optional[str]]:
1461
+ def description(self) -> pulumi.Output[Optional[_builtins.str]]:
1380
1462
  """
1381
1463
  A description for the server.
1382
1464
  """
1383
1465
  return pulumi.get(self, "description")
1384
1466
 
1385
- @property
1467
+ @_builtins.property
1386
1468
  @pulumi.getter
1387
- def domain(self) -> pulumi.Output[str]:
1469
+ def domain(self) -> pulumi.Output[_builtins.str]:
1388
1470
  """
1389
1471
  The domain of the server.
1390
1472
  """
1391
1473
  return pulumi.get(self, "domain")
1392
1474
 
1393
- @property
1475
+ @_builtins.property
1394
1476
  @pulumi.getter
1395
- def hostname(self) -> pulumi.Output[Optional[str]]:
1477
+ def hostname(self) -> pulumi.Output[Optional[_builtins.str]]:
1396
1478
  """
1397
1479
  The hostname of the server.
1398
1480
  """
1399
1481
  return pulumi.get(self, "hostname")
1400
1482
 
1401
- @property
1483
+ @_builtins.property
1402
1484
  @pulumi.getter(name="installConfigAfterward")
1403
- def install_config_afterward(self) -> pulumi.Output[Optional[bool]]:
1485
+ def install_config_afterward(self) -> pulumi.Output[Optional[_builtins.bool]]:
1404
1486
  """
1405
1487
  If True, this boolean allows to create a server without the install config if you want to provide it later.
1406
1488
  """
1407
1489
  return pulumi.get(self, "install_config_afterward")
1408
1490
 
1409
- @property
1491
+ @_builtins.property
1410
1492
  @pulumi.getter
1411
1493
  def ips(self) -> pulumi.Output[Sequence['outputs.ServerIp']]:
1412
1494
  """
@@ -1414,7 +1496,7 @@ class Server(pulumi.CustomResource):
1414
1496
  """
1415
1497
  return pulumi.get(self, "ips")
1416
1498
 
1417
- @property
1499
+ @_builtins.property
1418
1500
  @pulumi.getter
1419
1501
  def ipv4s(self) -> pulumi.Output[Sequence['outputs.ServerIpv4']]:
1420
1502
  """
@@ -1422,7 +1504,7 @@ class Server(pulumi.CustomResource):
1422
1504
  """
1423
1505
  return pulumi.get(self, "ipv4s")
1424
1506
 
1425
- @property
1507
+ @_builtins.property
1426
1508
  @pulumi.getter
1427
1509
  def ipv6s(self) -> pulumi.Output[Sequence['outputs.ServerIpv6']]:
1428
1510
  """
@@ -1430,17 +1512,17 @@ class Server(pulumi.CustomResource):
1430
1512
  """
1431
1513
  return pulumi.get(self, "ipv6s")
1432
1514
 
1433
- @property
1515
+ @_builtins.property
1434
1516
  @pulumi.getter
1435
- def name(self) -> pulumi.Output[str]:
1517
+ def name(self) -> pulumi.Output[_builtins.str]:
1436
1518
  """
1437
1519
  The name of the server.
1438
1520
  """
1439
1521
  return pulumi.get(self, "name")
1440
1522
 
1441
- @property
1523
+ @_builtins.property
1442
1524
  @pulumi.getter
1443
- def offer(self) -> pulumi.Output[str]:
1525
+ def offer(self) -> pulumi.Output[_builtins.str]:
1444
1526
  """
1445
1527
  The offer UUID of the baremetal server.
1446
1528
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.
@@ -1449,23 +1531,23 @@ class Server(pulumi.CustomResource):
1449
1531
  """
1450
1532
  return pulumi.get(self, "offer")
1451
1533
 
1452
- @property
1534
+ @_builtins.property
1453
1535
  @pulumi.getter(name="offerId")
1454
- def offer_id(self) -> pulumi.Output[str]:
1536
+ def offer_id(self) -> pulumi.Output[_builtins.str]:
1455
1537
  """
1456
1538
  The ID of the offer.
1457
1539
  """
1458
1540
  return pulumi.get(self, "offer_id")
1459
1541
 
1460
- @property
1542
+ @_builtins.property
1461
1543
  @pulumi.getter(name="offerName")
1462
- def offer_name(self) -> pulumi.Output[str]:
1544
+ def offer_name(self) -> pulumi.Output[_builtins.str]:
1463
1545
  """
1464
1546
  The name of the offer.
1465
1547
  """
1466
1548
  return pulumi.get(self, "offer_name")
1467
1549
 
1468
- @property
1550
+ @_builtins.property
1469
1551
  @pulumi.getter
1470
1552
  def options(self) -> pulumi.Output[Optional[Sequence['outputs.ServerOption']]]:
1471
1553
  """
@@ -1474,17 +1556,17 @@ class Server(pulumi.CustomResource):
1474
1556
  """
1475
1557
  return pulumi.get(self, "options")
1476
1558
 
1477
- @property
1559
+ @_builtins.property
1478
1560
  @pulumi.getter(name="organizationId")
1479
- def organization_id(self) -> pulumi.Output[str]:
1561
+ def organization_id(self) -> pulumi.Output[_builtins.str]:
1480
1562
  """
1481
1563
  The organization ID the server is associated with.
1482
1564
  """
1483
1565
  return pulumi.get(self, "organization_id")
1484
1566
 
1485
- @property
1567
+ @_builtins.property
1486
1568
  @pulumi.getter
1487
- def os(self) -> pulumi.Output[Optional[str]]:
1569
+ def os(self) -> pulumi.Output[Optional[_builtins.str]]:
1488
1570
  """
1489
1571
  The UUID of the os to install on the server.
1490
1572
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
@@ -1492,31 +1574,39 @@ class Server(pulumi.CustomResource):
1492
1574
  """
1493
1575
  return pulumi.get(self, "os")
1494
1576
 
1495
- @property
1577
+ @_builtins.property
1496
1578
  @pulumi.getter(name="osName")
1497
- def os_name(self) -> pulumi.Output[str]:
1579
+ def os_name(self) -> pulumi.Output[_builtins.str]:
1498
1580
  """
1499
1581
  The name of the os.
1500
1582
  """
1501
1583
  return pulumi.get(self, "os_name")
1502
1584
 
1503
- @property
1585
+ @_builtins.property
1504
1586
  @pulumi.getter
1505
- def partitioning(self) -> pulumi.Output[Optional[str]]:
1587
+ def partitioning(self) -> pulumi.Output[Optional[_builtins.str]]:
1506
1588
  """
1507
1589
  The partitioning schema in JSON format
1508
1590
  """
1509
1591
  return pulumi.get(self, "partitioning")
1510
1592
 
1511
- @property
1593
+ @_builtins.property
1512
1594
  @pulumi.getter
1513
- def password(self) -> pulumi.Output[Optional[str]]:
1595
+ def password(self) -> pulumi.Output[Optional[_builtins.str]]:
1514
1596
  """
1515
1597
  Password used for the installation. May be required depending on used os.
1516
1598
  """
1517
1599
  return pulumi.get(self, "password")
1518
1600
 
1519
- @property
1601
+ @_builtins.property
1602
+ @pulumi.getter(name="privateIps")
1603
+ def private_ips(self) -> pulumi.Output[Sequence['outputs.ServerPrivateIp']]:
1604
+ """
1605
+ The list of private IPv4 and IPv6 addresses associated with the resource.
1606
+ """
1607
+ return pulumi.get(self, "private_ips")
1608
+
1609
+ @_builtins.property
1520
1610
  @pulumi.getter(name="privateNetworks")
1521
1611
  def private_networks(self) -> pulumi.Output[Optional[Sequence['outputs.ServerPrivateNetwork']]]:
1522
1612
  """
@@ -1524,66 +1614,74 @@ class Server(pulumi.CustomResource):
1524
1614
  """
1525
1615
  return pulumi.get(self, "private_networks")
1526
1616
 
1527
- @property
1617
+ @_builtins.property
1528
1618
  @pulumi.getter(name="projectId")
1529
- def project_id(self) -> pulumi.Output[str]:
1619
+ def project_id(self) -> pulumi.Output[_builtins.str]:
1530
1620
  """
1531
1621
  `project_id`) The ID of the project the server is associated with.
1532
1622
  """
1533
1623
  return pulumi.get(self, "project_id")
1534
1624
 
1535
- @property
1625
+ @_builtins.property
1626
+ @pulumi.getter
1627
+ def protected(self) -> pulumi.Output[Optional[_builtins.bool]]:
1628
+ """
1629
+ Set to true to activate server protection option.
1630
+ """
1631
+ return pulumi.get(self, "protected")
1632
+
1633
+ @_builtins.property
1536
1634
  @pulumi.getter(name="reinstallOnConfigChanges")
1537
- def reinstall_on_config_changes(self) -> pulumi.Output[Optional[bool]]:
1635
+ def reinstall_on_config_changes(self) -> pulumi.Output[Optional[_builtins.bool]]:
1538
1636
  """
1539
1637
  If True, this boolean allows to reinstall the server on install config changes.
1540
1638
  > **Important:** Updates to `ssh_key_ids`, `user`, `password`, `service_user` or `service_password` will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.
1541
1639
  """
1542
1640
  return pulumi.get(self, "reinstall_on_config_changes")
1543
1641
 
1544
- @property
1642
+ @_builtins.property
1545
1643
  @pulumi.getter(name="servicePassword")
1546
- def service_password(self) -> pulumi.Output[Optional[str]]:
1644
+ def service_password(self) -> pulumi.Output[Optional[_builtins.str]]:
1547
1645
  """
1548
1646
  Password used for the service to install. May be required depending on used os.
1549
1647
  """
1550
1648
  return pulumi.get(self, "service_password")
1551
1649
 
1552
- @property
1650
+ @_builtins.property
1553
1651
  @pulumi.getter(name="serviceUser")
1554
- def service_user(self) -> pulumi.Output[str]:
1652
+ def service_user(self) -> pulumi.Output[_builtins.str]:
1555
1653
  """
1556
1654
  User used for the service to install.
1557
1655
  """
1558
1656
  return pulumi.get(self, "service_user")
1559
1657
 
1560
- @property
1658
+ @_builtins.property
1561
1659
  @pulumi.getter(name="sshKeyIds")
1562
- def ssh_key_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
1660
+ def ssh_key_ids(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
1563
1661
  """
1564
1662
  List of SSH keys allowed to connect to the server.
1565
1663
  """
1566
1664
  return pulumi.get(self, "ssh_key_ids")
1567
1665
 
1568
- @property
1666
+ @_builtins.property
1569
1667
  @pulumi.getter
1570
- def tags(self) -> pulumi.Output[Sequence[str]]:
1668
+ def tags(self) -> pulumi.Output[Sequence[_builtins.str]]:
1571
1669
  """
1572
1670
  The tags associated with the server.
1573
1671
  """
1574
1672
  return pulumi.get(self, "tags")
1575
1673
 
1576
- @property
1674
+ @_builtins.property
1577
1675
  @pulumi.getter
1578
- def user(self) -> pulumi.Output[str]:
1676
+ def user(self) -> pulumi.Output[_builtins.str]:
1579
1677
  """
1580
1678
  User used for the installation.
1581
1679
  """
1582
1680
  return pulumi.get(self, "user")
1583
1681
 
1584
- @property
1682
+ @_builtins.property
1585
1683
  @pulumi.getter
1586
- def zone(self) -> pulumi.Output[str]:
1684
+ def zone(self) -> pulumi.Output[Optional[_builtins.str]]:
1587
1685
  """
1588
1686
  `zone`) The zone in which the server should be created.
1589
1687
  """