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__ = ['BaremetalServerArgs', 'BaremetalServer']
21
21
  @pulumi.input_type
22
22
  class BaremetalServerArgs:
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['BaremetalServerOptionArgs']]]] = 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['BaremetalServerPrivateIpArgs']]]] = None,
33
35
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerPrivateNetworkArgs']]]] = 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 BaremetalServer 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['BaremetalServerOptionArgs']]] 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['BaremetalServerPrivateIpArgs']]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
59
64
  :param pulumi.Input[Sequence[pulumi.Input['BaremetalServerPrivateNetworkArgs']]] 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 BaremetalServerArgs:
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 BaremetalServerArgs:
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 BaremetalServerArgs:
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['BaremetalServerOptionArgs']]]]:
172
196
  """
@@ -179,9 +203,9 @@ class BaremetalServerArgs:
179
203
  def options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerOptionArgs']]]]):
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 BaremetalServerArgs:
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['BaremetalServerPrivateIpArgs']]]]:
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['BaremetalServerPrivateIpArgs']]]]):
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['BaremetalServerPrivateNetworkArgs']]]]:
223
259
  """
@@ -229,21 +265,33 @@ class BaremetalServerArgs:
229
265
  def private_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerPrivateNetworkArgs']]]]):
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 BaremetalServerArgs:
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 _BaremetalServerState:
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['BaremetalServerIpArgs']]]] = None,
338
387
  ipv4s: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpv4Args']]]] = None,
339
388
  ipv6s: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpv6Args']]]] = 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['BaremetalServerOptionArgs']]]] = 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['BaremetalServerPrivateIpArgs']]]] = None,
350
400
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerPrivateNetworkArgs']]]] = 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 BaremetalServer 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['BaremetalServerIpArgs']]] ips: (List of) The IPs of the server.
366
418
  :param pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpv4Args']]] ipv4s: (List of) The IPv4 addresses of the server.
367
419
  :param pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpv6Args']]] 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['BaremetalServerOptionArgs']]] 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['BaremetalServerPrivateIpArgs']]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
384
437
  :param pulumi.Input[Sequence[pulumi.Input['BaremetalServerPrivateNetworkArgs']]] 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 _BaremetalServerState:
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 _BaremetalServerState:
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['BaremetalServerIpArgs']]]]:
499
571
  """
@@ -505,7 +577,7 @@ class _BaremetalServerState:
505
577
  def ips(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpArgs']]]]):
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['BaremetalServerIpv4Args']]]]:
511
583
  """
@@ -517,7 +589,7 @@ class _BaremetalServerState:
517
589
  def ipv4s(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpv4Args']]]]):
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['BaremetalServerIpv6Args']]]]:
523
595
  """
@@ -529,21 +601,21 @@ class _BaremetalServerState:
529
601
  def ipv6s(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerIpv6Args']]]]):
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 _BaremetalServerState:
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['BaremetalServerOptionArgs']]]]:
586
658
  """
@@ -593,21 +665,21 @@ class _BaremetalServerState:
593
665
  def options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerOptionArgs']]]]):
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 _BaremetalServerState:
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['BaremetalServerPrivateIpArgs']]]]:
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['BaremetalServerPrivateIpArgs']]]]):
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['BaremetalServerPrivateNetworkArgs']]]]:
661
745
  """
@@ -667,21 +751,33 @@ class _BaremetalServerState:
667
751
  def private_networks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['BaremetalServerPrivateNetworkArgs']]]]):
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,85 +785,86 @@ class _BaremetalServerState:
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
 
768
864
  warnings.warn("""scaleway.index/baremetalserver.BaremetalServer has been deprecated in favor of scaleway.elasticmetal/server.Server""", DeprecationWarning)
769
865
 
770
866
 
867
+ @pulumi.type_token("scaleway:index/baremetalServer:BaremetalServer")
771
868
  class BaremetalServer(pulumi.CustomResource):
772
869
  warnings.warn("""scaleway.index/baremetalserver.BaremetalServer has been deprecated in favor of scaleway.elasticmetal/server.Server""", DeprecationWarning)
773
870
 
@@ -775,24 +872,27 @@ class BaremetalServer(pulumi.CustomResource):
775
872
  def __init__(__self__,
776
873
  resource_name: str,
777
874
  opts: Optional[pulumi.ResourceOptions] = None,
778
- description: Optional[pulumi.Input[str]] = None,
779
- hostname: Optional[pulumi.Input[str]] = None,
780
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
781
- name: Optional[pulumi.Input[str]] = None,
782
- offer: Optional[pulumi.Input[str]] = None,
875
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
876
+ description: Optional[pulumi.Input[_builtins.str]] = None,
877
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
878
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
879
+ name: Optional[pulumi.Input[_builtins.str]] = None,
880
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
783
881
  options: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerOptionArgs', 'BaremetalServerOptionArgsDict']]]]] = None,
784
- os: Optional[pulumi.Input[str]] = None,
785
- partitioning: Optional[pulumi.Input[str]] = None,
786
- password: Optional[pulumi.Input[str]] = None,
882
+ os: Optional[pulumi.Input[_builtins.str]] = None,
883
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
884
+ password: Optional[pulumi.Input[_builtins.str]] = None,
885
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateIpArgs', 'BaremetalServerPrivateIpArgsDict']]]]] = None,
787
886
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateNetworkArgs', 'BaremetalServerPrivateNetworkArgsDict']]]]] = None,
788
- project_id: Optional[pulumi.Input[str]] = None,
789
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
790
- service_password: Optional[pulumi.Input[str]] = None,
791
- service_user: Optional[pulumi.Input[str]] = None,
792
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
793
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
794
- user: Optional[pulumi.Input[str]] = None,
795
- zone: Optional[pulumi.Input[str]] = None,
887
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
888
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
889
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
890
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
891
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
892
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
893
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
894
+ user: Optional[pulumi.Input[_builtins.str]] = None,
895
+ zone: Optional[pulumi.Input[_builtins.str]] = None,
796
896
  __props__=None):
797
897
  """
798
898
  Creates and manages Scaleway Compute Baremetal servers. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/elastic-metal/).
@@ -801,125 +901,60 @@ class BaremetalServer(pulumi.CustomResource):
801
901
 
802
902
  ### Basic
803
903
 
804
- ```python
805
- import pulumi
806
- import pulumi_scaleway as scaleway
807
- import pulumiverse_scaleway as scaleway
808
-
809
- main = scaleway.iam.get_ssh_key(name="main")
810
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
811
- name="EM-I220E-NVME")
812
- base = scaleway.elasticmetal.Server("base",
813
- zone="fr-par-2",
814
- offer=my_offer.offer_id,
815
- os="d17d6872-0412-45d9-a198-af82c34d3c5c",
816
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]])
817
- ```
818
-
819
904
  ### With option
820
905
 
821
- ```python
822
- import pulumi
823
- import pulumi_scaleway as scaleway
824
- import pulumiverse_scaleway as scaleway
825
-
826
- main = scaleway.iam.get_ssh_key(name="main")
827
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
828
- name="Ubuntu",
829
- version="22.04 LTS (Jammy Jellyfish)")
830
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
831
- name="EM-B112X-SSD")
832
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
833
- name="Private Network")
834
- remote_access = scaleway.elasticmetal.get_option(zone="fr-par-2",
835
- name="Remote Access")
836
- base = scaleway.elasticmetal.Server("base",
837
- zone="fr-par-2",
838
- offer=my_offer.offer_id,
839
- os=my_os.os_id,
840
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
841
- options=[
842
- {
843
- "id": private_network.option_id,
844
- },
845
- {
846
- "id": remote_access.option_id,
847
- },
848
- ])
849
- ```
850
-
851
- ### With private network
906
+ ### With cloud-init
852
907
 
853
908
  ```python
854
909
  import pulumi
855
910
  import pulumi_scaleway as scaleway
911
+ import pulumi_std as std
856
912
  import pulumiverse_scaleway as scaleway
857
913
 
858
- main = scaleway.iam.get_ssh_key(name="main")
859
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
914
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
915
+ my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
860
916
  name="Ubuntu",
861
917
  version="22.04 LTS (Jammy Jellyfish)")
862
918
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
863
- name="EM-B112X-SSD")
864
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
865
- name="Private Network")
866
- pn = scaleway.network.PrivateNetwork("pn",
867
- region="fr-par",
868
- name="baremetal_private_network")
869
- base = scaleway.elasticmetal.Server("base",
919
+ name="EM-I220E-NVME")
920
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
870
921
  zone="fr-par-2",
871
922
  offer=my_offer.offer_id,
872
923
  os=my_os.os_id,
873
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
874
- options=[{
875
- "id": private_network.option_id,
876
- }],
877
- private_networks=[{
878
- "id": pn.id,
879
- }])
924
+ ssh_key_ids=[my_ssh_key.id],
925
+ cloud_init=std.index.file(input="userdata.yaml")["result"])
880
926
  ```
881
927
 
882
- ### With IPAM IP IDs
883
-
884
928
  ```python
885
929
  import pulumi
886
930
  import pulumi_scaleway as scaleway
887
931
  import pulumiverse_scaleway as scaleway
888
932
 
889
- vpc01 = scaleway.network.Vpc("vpc01", name="vpc_baremetal")
890
- pn01 = scaleway.network.PrivateNetwork("pn01",
891
- name="private_network_baremetal",
892
- ipv4_subnet={
893
- "subnet": "172.16.64.0/22",
894
- },
895
- vpc_id=vpc01.id)
896
- ip01 = scaleway.ipam.Ip("ip01",
897
- address="172.16.64.7",
898
- sources=[{
899
- "private_network_id": pn01.id,
900
- }])
901
- my_key = scaleway.iam.get_ssh_key(name="main")
933
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
934
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
935
+ name="EM-I220E-NVME")
902
936
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
903
937
  name="Ubuntu",
904
938
  version="22.04 LTS (Jammy Jellyfish)")
905
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
906
- name="EM-A115X-SSD")
907
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-1",
908
- name="Private Network")
909
- base = scaleway.elasticmetal.Server("base",
939
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
910
940
  zone="fr-par-2",
911
941
  offer=my_offer.offer_id,
912
942
  os=my_os.os_id,
913
- ssh_key_ids=[my_key_scaleway_account_ssh_key["id"]],
914
- options=[{
915
- "id": private_network.option_id,
916
- }],
917
- private_networks=[{
918
- "id": pn01.id,
919
- "ipam_ip_ids": [ip01.id],
920
- }])
943
+ ssh_key_ids=[my_ssh_key.id],
944
+ cloud_init=\"\"\"#cloud-config
945
+ packages:
946
+ - htop
947
+ - curl
948
+
949
+ runcmd:
950
+ - echo \\"Hello from raw cloud-init!\\" > /home/ubuntu/message.txt
951
+ \"\"\")
921
952
  ```
922
953
 
954
+ ### With private network
955
+
956
+ ### With IPAM IP IDs
957
+
923
958
  ### Without install config
924
959
 
925
960
  ```python
@@ -929,7 +964,7 @@ class BaremetalServer(pulumi.CustomResource):
929
964
 
930
965
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
931
966
  name="EM-B112X-SSD")
932
- base = scaleway.elasticmetal.Server("base",
967
+ my_server = scaleway.elasticmetal.Server("my_server",
933
968
  zone="fr-par-2",
934
969
  offer=my_offer.offer_id,
935
970
  install_config_afterward=True)
@@ -945,16 +980,18 @@ class BaremetalServer(pulumi.CustomResource):
945
980
  config = pulumi.Config()
946
981
  config_custom_partitioning = config.get("configCustomPartitioning")
947
982
  if config_custom_partitioning is None:
948
- 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\\":[]}}"
983
+ 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\\":[]}"
949
984
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
950
985
  name="Ubuntu",
951
986
  version="22.04 LTS (Jammy Jellyfish)")
952
- main = scaleway.iam.SshKey("main", name="main")
987
+ my_ssh_key = scaleway.iam.SshKey("my_ssh_key",
988
+ name="my_ssh_key",
989
+ public_key="ssh XXXXXXXXXXX")
953
990
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
954
991
  name="EM-B220E-NVME",
955
992
  subscription_period="hourly")
956
- base = scaleway.elasticmetal.Server("base",
957
- name="%s",
993
+ my_server = scaleway.elasticmetal.Server("my_server",
994
+ name="my_super_server",
958
995
  zone="fr-par-1",
959
996
  description="test a description",
960
997
  offer=my_offer.offer_id,
@@ -965,9 +1002,50 @@ class BaremetalServer(pulumi.CustomResource):
965
1002
  "scaleway_baremetal_server",
966
1003
  "minimal",
967
1004
  ],
968
- ssh_key_ids=[main.id])
1005
+ ssh_key_ids=[my_ssh_key.id])
969
1006
  ```
970
1007
 
1008
+ ### Migrate from hourly to monthly plan
1009
+
1010
+ 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.
1011
+ 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.
1012
+
1013
+ ### Hourly Plan Example
1014
+
1015
+ ```python
1016
+ import pulumi
1017
+ import pulumi_scaleway as scaleway
1018
+ import pulumiverse_scaleway as scaleway
1019
+
1020
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1021
+ name="EM-B220E-NVME",
1022
+ subscription_period="hourly")
1023
+ my_server = scaleway.elasticmetal.Server("my_server",
1024
+ name="UpdateSubscriptionPeriod",
1025
+ offer=my_offer.offer_id,
1026
+ zone="%s",
1027
+ install_config_afterward=True)
1028
+ ```
1029
+
1030
+ ### Monthly Plan Example
1031
+
1032
+ ```python
1033
+ import pulumi
1034
+ import pulumi_scaleway as scaleway
1035
+ import pulumiverse_scaleway as scaleway
1036
+
1037
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1038
+ name="EM-B220E-NVME",
1039
+ subscription_period="monthly")
1040
+ my_server = scaleway.elasticmetal.Server("my_server",
1041
+ name="UpdateSubscriptionPeriod",
1042
+ offer=my_offer.offer_id,
1043
+ zone="fr-par-1",
1044
+ install_config_afterward=True)
1045
+ ```
1046
+
1047
+ **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.
1048
+
971
1049
  ## Import
972
1050
 
973
1051
  Baremetal servers can be imported using the `{zone}/{id}`, e.g.
@@ -980,31 +1058,34 @@ class BaremetalServer(pulumi.CustomResource):
980
1058
 
981
1059
  :param str resource_name: The name of the resource.
982
1060
  :param pulumi.ResourceOptions opts: Options for the resource.
983
- :param pulumi.Input[str] description: A description for the server.
984
- :param pulumi.Input[str] hostname: The hostname of the server.
985
- :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.
986
- :param pulumi.Input[str] name: The name of the server.
987
- :param pulumi.Input[str] offer: The offer UUID of the baremetal server.
1061
+ :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.
1062
+ :param pulumi.Input[_builtins.str] description: A description for the server.
1063
+ :param pulumi.Input[_builtins.str] hostname: The hostname of the server.
1064
+ :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.
1065
+ :param pulumi.Input[_builtins.str] name: The name of the server.
1066
+ :param pulumi.Input[_builtins.str] offer: The offer UUID of the baremetal server.
988
1067
  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.
989
1068
 
990
1069
  > **Important:** Updates to `offer` will recreate the server.
991
1070
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerOptionArgs', 'BaremetalServerOptionArgsDict']]]] options: The options to enable on the server.
992
1071
  > The `options` block supports:
993
- :param pulumi.Input[str] os: The UUID of the os to install on the server.
1072
+ :param pulumi.Input[_builtins.str] os: The UUID of the os to install on the server.
994
1073
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
995
1074
  > **Important:** Updates to `os` will reinstall the server.
996
- :param pulumi.Input[str] partitioning: The partitioning schema in JSON format
997
- :param pulumi.Input[str] password: Password used for the installation. May be required depending on used os.
1075
+ :param pulumi.Input[_builtins.str] partitioning: The partitioning schema in JSON format
1076
+ :param pulumi.Input[_builtins.str] password: Password used for the installation. May be required depending on used os.
1077
+ :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateIpArgs', 'BaremetalServerPrivateIpArgsDict']]]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
998
1078
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateNetworkArgs', 'BaremetalServerPrivateNetworkArgsDict']]]] 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/)
999
- :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
1000
- :param pulumi.Input[bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1079
+ :param pulumi.Input[_builtins.str] project_id: `project_id`) The ID of the project the server is associated with.
1080
+ :param pulumi.Input[_builtins.bool] protected: Set to true to activate server protection option.
1081
+ :param pulumi.Input[_builtins.bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1001
1082
  > **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.
1002
- :param pulumi.Input[str] service_password: Password used for the service to install. May be required depending on used os.
1003
- :param pulumi.Input[str] service_user: User used for the service to install.
1004
- :param pulumi.Input[Sequence[pulumi.Input[str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1005
- :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
1006
- :param pulumi.Input[str] user: User used for the installation.
1007
- :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
1083
+ :param pulumi.Input[_builtins.str] service_password: Password used for the service to install. May be required depending on used os.
1084
+ :param pulumi.Input[_builtins.str] service_user: User used for the service to install.
1085
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1086
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the server.
1087
+ :param pulumi.Input[_builtins.str] user: User used for the installation.
1088
+ :param pulumi.Input[_builtins.str] zone: `zone`) The zone in which the server should be created.
1008
1089
  """
1009
1090
  ...
1010
1091
  @overload
@@ -1019,125 +1100,60 @@ class BaremetalServer(pulumi.CustomResource):
1019
1100
 
1020
1101
  ### Basic
1021
1102
 
1022
- ```python
1023
- import pulumi
1024
- import pulumi_scaleway as scaleway
1025
- import pulumiverse_scaleway as scaleway
1026
-
1027
- main = scaleway.iam.get_ssh_key(name="main")
1028
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1029
- name="EM-I220E-NVME")
1030
- base = scaleway.elasticmetal.Server("base",
1031
- zone="fr-par-2",
1032
- offer=my_offer.offer_id,
1033
- os="d17d6872-0412-45d9-a198-af82c34d3c5c",
1034
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]])
1035
- ```
1036
-
1037
1103
  ### With option
1038
1104
 
1039
- ```python
1040
- import pulumi
1041
- import pulumi_scaleway as scaleway
1042
- import pulumiverse_scaleway as scaleway
1043
-
1044
- main = scaleway.iam.get_ssh_key(name="main")
1045
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
1046
- name="Ubuntu",
1047
- version="22.04 LTS (Jammy Jellyfish)")
1048
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1049
- name="EM-B112X-SSD")
1050
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
1051
- name="Private Network")
1052
- remote_access = scaleway.elasticmetal.get_option(zone="fr-par-2",
1053
- name="Remote Access")
1054
- base = scaleway.elasticmetal.Server("base",
1055
- zone="fr-par-2",
1056
- offer=my_offer.offer_id,
1057
- os=my_os.os_id,
1058
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
1059
- options=[
1060
- {
1061
- "id": private_network.option_id,
1062
- },
1063
- {
1064
- "id": remote_access.option_id,
1065
- },
1066
- ])
1067
- ```
1068
-
1069
- ### With private network
1105
+ ### With cloud-init
1070
1106
 
1071
1107
  ```python
1072
1108
  import pulumi
1073
1109
  import pulumi_scaleway as scaleway
1110
+ import pulumi_std as std
1074
1111
  import pulumiverse_scaleway as scaleway
1075
1112
 
1076
- main = scaleway.iam.get_ssh_key(name="main")
1077
- my_os = scaleway.elasticmetal.get_os(zone="fr-par-2",
1113
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
1114
+ my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
1078
1115
  name="Ubuntu",
1079
1116
  version="22.04 LTS (Jammy Jellyfish)")
1080
1117
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1081
- name="EM-B112X-SSD")
1082
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-2",
1083
- name="Private Network")
1084
- pn = scaleway.network.PrivateNetwork("pn",
1085
- region="fr-par",
1086
- name="baremetal_private_network")
1087
- base = scaleway.elasticmetal.Server("base",
1118
+ name="EM-I220E-NVME")
1119
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
1088
1120
  zone="fr-par-2",
1089
1121
  offer=my_offer.offer_id,
1090
1122
  os=my_os.os_id,
1091
- ssh_key_ids=[main_scaleway_account_ssh_key["id"]],
1092
- options=[{
1093
- "id": private_network.option_id,
1094
- }],
1095
- private_networks=[{
1096
- "id": pn.id,
1097
- }])
1123
+ ssh_key_ids=[my_ssh_key.id],
1124
+ cloud_init=std.index.file(input="userdata.yaml")["result"])
1098
1125
  ```
1099
1126
 
1100
- ### With IPAM IP IDs
1101
-
1102
1127
  ```python
1103
1128
  import pulumi
1104
1129
  import pulumi_scaleway as scaleway
1105
1130
  import pulumiverse_scaleway as scaleway
1106
1131
 
1107
- vpc01 = scaleway.network.Vpc("vpc01", name="vpc_baremetal")
1108
- pn01 = scaleway.network.PrivateNetwork("pn01",
1109
- name="private_network_baremetal",
1110
- ipv4_subnet={
1111
- "subnet": "172.16.64.0/22",
1112
- },
1113
- vpc_id=vpc01.id)
1114
- ip01 = scaleway.ipam.Ip("ip01",
1115
- address="172.16.64.7",
1116
- sources=[{
1117
- "private_network_id": pn01.id,
1118
- }])
1119
- my_key = scaleway.iam.get_ssh_key(name="main")
1132
+ my_ssh_key = scaleway.iam.get_ssh_key(name="main")
1133
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1134
+ name="EM-I220E-NVME")
1120
1135
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
1121
1136
  name="Ubuntu",
1122
1137
  version="22.04 LTS (Jammy Jellyfish)")
1123
- my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1124
- name="EM-A115X-SSD")
1125
- private_network = scaleway.elasticmetal.get_option(zone="fr-par-1",
1126
- name="Private Network")
1127
- base = scaleway.elasticmetal.Server("base",
1138
+ my_server_ci = scaleway.elasticmetal.Server("my_server_ci",
1128
1139
  zone="fr-par-2",
1129
1140
  offer=my_offer.offer_id,
1130
1141
  os=my_os.os_id,
1131
- ssh_key_ids=[my_key_scaleway_account_ssh_key["id"]],
1132
- options=[{
1133
- "id": private_network.option_id,
1134
- }],
1135
- private_networks=[{
1136
- "id": pn01.id,
1137
- "ipam_ip_ids": [ip01.id],
1138
- }])
1142
+ ssh_key_ids=[my_ssh_key.id],
1143
+ cloud_init=\"\"\"#cloud-config
1144
+ packages:
1145
+ - htop
1146
+ - curl
1147
+
1148
+ runcmd:
1149
+ - echo \\"Hello from raw cloud-init!\\" > /home/ubuntu/message.txt
1150
+ \"\"\")
1139
1151
  ```
1140
1152
 
1153
+ ### With private network
1154
+
1155
+ ### With IPAM IP IDs
1156
+
1141
1157
  ### Without install config
1142
1158
 
1143
1159
  ```python
@@ -1147,7 +1163,7 @@ class BaremetalServer(pulumi.CustomResource):
1147
1163
 
1148
1164
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-2",
1149
1165
  name="EM-B112X-SSD")
1150
- base = scaleway.elasticmetal.Server("base",
1166
+ my_server = scaleway.elasticmetal.Server("my_server",
1151
1167
  zone="fr-par-2",
1152
1168
  offer=my_offer.offer_id,
1153
1169
  install_config_afterward=True)
@@ -1163,16 +1179,18 @@ class BaremetalServer(pulumi.CustomResource):
1163
1179
  config = pulumi.Config()
1164
1180
  config_custom_partitioning = config.get("configCustomPartitioning")
1165
1181
  if config_custom_partitioning is None:
1166
- 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\\":[]}}"
1182
+ 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\\":[]}"
1167
1183
  my_os = scaleway.elasticmetal.get_os(zone="fr-par-1",
1168
1184
  name="Ubuntu",
1169
1185
  version="22.04 LTS (Jammy Jellyfish)")
1170
- main = scaleway.iam.SshKey("main", name="main")
1186
+ my_ssh_key = scaleway.iam.SshKey("my_ssh_key",
1187
+ name="my_ssh_key",
1188
+ public_key="ssh XXXXXXXXXXX")
1171
1189
  my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1172
1190
  name="EM-B220E-NVME",
1173
1191
  subscription_period="hourly")
1174
- base = scaleway.elasticmetal.Server("base",
1175
- name="%s",
1192
+ my_server = scaleway.elasticmetal.Server("my_server",
1193
+ name="my_super_server",
1176
1194
  zone="fr-par-1",
1177
1195
  description="test a description",
1178
1196
  offer=my_offer.offer_id,
@@ -1183,9 +1201,50 @@ class BaremetalServer(pulumi.CustomResource):
1183
1201
  "scaleway_baremetal_server",
1184
1202
  "minimal",
1185
1203
  ],
1186
- ssh_key_ids=[main.id])
1204
+ ssh_key_ids=[my_ssh_key.id])
1205
+ ```
1206
+
1207
+ ### Migrate from hourly to monthly plan
1208
+
1209
+ 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.
1210
+ 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.
1211
+
1212
+ ### Hourly Plan Example
1213
+
1214
+ ```python
1215
+ import pulumi
1216
+ import pulumi_scaleway as scaleway
1217
+ import pulumiverse_scaleway as scaleway
1218
+
1219
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1220
+ name="EM-B220E-NVME",
1221
+ subscription_period="hourly")
1222
+ my_server = scaleway.elasticmetal.Server("my_server",
1223
+ name="UpdateSubscriptionPeriod",
1224
+ offer=my_offer.offer_id,
1225
+ zone="%s",
1226
+ install_config_afterward=True)
1227
+ ```
1228
+
1229
+ ### Monthly Plan Example
1230
+
1231
+ ```python
1232
+ import pulumi
1233
+ import pulumi_scaleway as scaleway
1234
+ import pulumiverse_scaleway as scaleway
1235
+
1236
+ my_offer = scaleway.elasticmetal.get_offer(zone="fr-par-1",
1237
+ name="EM-B220E-NVME",
1238
+ subscription_period="monthly")
1239
+ my_server = scaleway.elasticmetal.Server("my_server",
1240
+ name="UpdateSubscriptionPeriod",
1241
+ offer=my_offer.offer_id,
1242
+ zone="fr-par-1",
1243
+ install_config_afterward=True)
1187
1244
  ```
1188
1245
 
1246
+ **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.
1247
+
1189
1248
  ## Import
1190
1249
 
1191
1250
  Baremetal servers can be imported using the `{zone}/{id}`, e.g.
@@ -1211,24 +1270,27 @@ class BaremetalServer(pulumi.CustomResource):
1211
1270
  def _internal_init(__self__,
1212
1271
  resource_name: str,
1213
1272
  opts: Optional[pulumi.ResourceOptions] = None,
1214
- description: Optional[pulumi.Input[str]] = None,
1215
- hostname: Optional[pulumi.Input[str]] = None,
1216
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
1217
- name: Optional[pulumi.Input[str]] = None,
1218
- offer: Optional[pulumi.Input[str]] = None,
1273
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
1274
+ description: Optional[pulumi.Input[_builtins.str]] = None,
1275
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
1276
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
1277
+ name: Optional[pulumi.Input[_builtins.str]] = None,
1278
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
1219
1279
  options: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerOptionArgs', 'BaremetalServerOptionArgsDict']]]]] = None,
1220
- os: Optional[pulumi.Input[str]] = None,
1221
- partitioning: Optional[pulumi.Input[str]] = None,
1222
- password: Optional[pulumi.Input[str]] = None,
1280
+ os: Optional[pulumi.Input[_builtins.str]] = None,
1281
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
1282
+ password: Optional[pulumi.Input[_builtins.str]] = None,
1283
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateIpArgs', 'BaremetalServerPrivateIpArgsDict']]]]] = None,
1223
1284
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateNetworkArgs', 'BaremetalServerPrivateNetworkArgsDict']]]]] = None,
1224
- project_id: Optional[pulumi.Input[str]] = None,
1225
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
1226
- service_password: Optional[pulumi.Input[str]] = None,
1227
- service_user: Optional[pulumi.Input[str]] = None,
1228
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1229
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1230
- user: Optional[pulumi.Input[str]] = None,
1231
- zone: Optional[pulumi.Input[str]] = None,
1285
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
1286
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
1287
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
1288
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
1289
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
1290
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1291
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1292
+ user: Optional[pulumi.Input[_builtins.str]] = None,
1293
+ zone: Optional[pulumi.Input[_builtins.str]] = None,
1232
1294
  __props__=None):
1233
1295
  pulumi.log.warn("""BaremetalServer is deprecated: scaleway.index/baremetalserver.BaremetalServer has been deprecated in favor of scaleway.elasticmetal/server.Server""")
1234
1296
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
@@ -1239,6 +1301,7 @@ class BaremetalServer(pulumi.CustomResource):
1239
1301
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1240
1302
  __props__ = BaremetalServerArgs.__new__(BaremetalServerArgs)
1241
1303
 
1304
+ __props__.__dict__["cloud_init"] = cloud_init
1242
1305
  __props__.__dict__["description"] = description
1243
1306
  __props__.__dict__["hostname"] = hostname
1244
1307
  __props__.__dict__["install_config_afterward"] = install_config_afterward
@@ -1250,8 +1313,10 @@ class BaremetalServer(pulumi.CustomResource):
1250
1313
  __props__.__dict__["os"] = os
1251
1314
  __props__.__dict__["partitioning"] = partitioning
1252
1315
  __props__.__dict__["password"] = None if password is None else pulumi.Output.secret(password)
1316
+ __props__.__dict__["private_ips"] = private_ips
1253
1317
  __props__.__dict__["private_networks"] = private_networks
1254
1318
  __props__.__dict__["project_id"] = project_id
1319
+ __props__.__dict__["protected"] = protected
1255
1320
  __props__.__dict__["reinstall_on_config_changes"] = reinstall_on_config_changes
1256
1321
  __props__.__dict__["service_password"] = None if service_password is None else pulumi.Output.secret(service_password)
1257
1322
  __props__.__dict__["service_user"] = service_user
@@ -1279,32 +1344,35 @@ class BaremetalServer(pulumi.CustomResource):
1279
1344
  def get(resource_name: str,
1280
1345
  id: pulumi.Input[str],
1281
1346
  opts: Optional[pulumi.ResourceOptions] = None,
1282
- description: Optional[pulumi.Input[str]] = None,
1283
- domain: Optional[pulumi.Input[str]] = None,
1284
- hostname: Optional[pulumi.Input[str]] = None,
1285
- install_config_afterward: Optional[pulumi.Input[bool]] = None,
1347
+ cloud_init: Optional[pulumi.Input[_builtins.str]] = None,
1348
+ description: Optional[pulumi.Input[_builtins.str]] = None,
1349
+ domain: Optional[pulumi.Input[_builtins.str]] = None,
1350
+ hostname: Optional[pulumi.Input[_builtins.str]] = None,
1351
+ install_config_afterward: Optional[pulumi.Input[_builtins.bool]] = None,
1286
1352
  ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerIpArgs', 'BaremetalServerIpArgsDict']]]]] = None,
1287
1353
  ipv4s: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerIpv4Args', 'BaremetalServerIpv4ArgsDict']]]]] = None,
1288
1354
  ipv6s: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerIpv6Args', 'BaremetalServerIpv6ArgsDict']]]]] = None,
1289
- name: Optional[pulumi.Input[str]] = None,
1290
- offer: Optional[pulumi.Input[str]] = None,
1291
- offer_id: Optional[pulumi.Input[str]] = None,
1292
- offer_name: Optional[pulumi.Input[str]] = None,
1355
+ name: Optional[pulumi.Input[_builtins.str]] = None,
1356
+ offer: Optional[pulumi.Input[_builtins.str]] = None,
1357
+ offer_id: Optional[pulumi.Input[_builtins.str]] = None,
1358
+ offer_name: Optional[pulumi.Input[_builtins.str]] = None,
1293
1359
  options: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerOptionArgs', 'BaremetalServerOptionArgsDict']]]]] = None,
1294
- organization_id: Optional[pulumi.Input[str]] = None,
1295
- os: Optional[pulumi.Input[str]] = None,
1296
- os_name: Optional[pulumi.Input[str]] = None,
1297
- partitioning: Optional[pulumi.Input[str]] = None,
1298
- password: Optional[pulumi.Input[str]] = None,
1360
+ organization_id: Optional[pulumi.Input[_builtins.str]] = None,
1361
+ os: Optional[pulumi.Input[_builtins.str]] = None,
1362
+ os_name: Optional[pulumi.Input[_builtins.str]] = None,
1363
+ partitioning: Optional[pulumi.Input[_builtins.str]] = None,
1364
+ password: Optional[pulumi.Input[_builtins.str]] = None,
1365
+ private_ips: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateIpArgs', 'BaremetalServerPrivateIpArgsDict']]]]] = None,
1299
1366
  private_networks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateNetworkArgs', 'BaremetalServerPrivateNetworkArgsDict']]]]] = None,
1300
- project_id: Optional[pulumi.Input[str]] = None,
1301
- reinstall_on_config_changes: Optional[pulumi.Input[bool]] = None,
1302
- service_password: Optional[pulumi.Input[str]] = None,
1303
- service_user: Optional[pulumi.Input[str]] = None,
1304
- ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1305
- tags: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1306
- user: Optional[pulumi.Input[str]] = None,
1307
- zone: Optional[pulumi.Input[str]] = None) -> 'BaremetalServer':
1367
+ project_id: Optional[pulumi.Input[_builtins.str]] = None,
1368
+ protected: Optional[pulumi.Input[_builtins.bool]] = None,
1369
+ reinstall_on_config_changes: Optional[pulumi.Input[_builtins.bool]] = None,
1370
+ service_password: Optional[pulumi.Input[_builtins.str]] = None,
1371
+ service_user: Optional[pulumi.Input[_builtins.str]] = None,
1372
+ ssh_key_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1373
+ tags: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1374
+ user: Optional[pulumi.Input[_builtins.str]] = None,
1375
+ zone: Optional[pulumi.Input[_builtins.str]] = None) -> 'BaremetalServer':
1308
1376
  """
1309
1377
  Get an existing BaremetalServer resource's state with the given name, id, and optional extra
1310
1378
  properties used to qualify the lookup.
@@ -1312,44 +1380,48 @@ class BaremetalServer(pulumi.CustomResource):
1312
1380
  :param str resource_name: The unique name of the resulting resource.
1313
1381
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
1314
1382
  :param pulumi.ResourceOptions opts: Options for the resource.
1315
- :param pulumi.Input[str] description: A description for the server.
1316
- :param pulumi.Input[str] domain: The domain of the server.
1317
- :param pulumi.Input[str] hostname: The hostname of the server.
1318
- :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.
1383
+ :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.
1384
+ :param pulumi.Input[_builtins.str] description: A description for the server.
1385
+ :param pulumi.Input[_builtins.str] domain: The domain of the server.
1386
+ :param pulumi.Input[_builtins.str] hostname: The hostname of the server.
1387
+ :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.
1319
1388
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerIpArgs', 'BaremetalServerIpArgsDict']]]] ips: (List of) The IPs of the server.
1320
1389
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerIpv4Args', 'BaremetalServerIpv4ArgsDict']]]] ipv4s: (List of) The IPv4 addresses of the server.
1321
1390
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerIpv6Args', 'BaremetalServerIpv6ArgsDict']]]] ipv6s: (List of) The IPv6 addresses of the server.
1322
- :param pulumi.Input[str] name: The name of the server.
1323
- :param pulumi.Input[str] offer: The offer UUID of the baremetal server.
1391
+ :param pulumi.Input[_builtins.str] name: The name of the server.
1392
+ :param pulumi.Input[_builtins.str] offer: The offer UUID of the baremetal server.
1324
1393
  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.
1325
1394
 
1326
1395
  > **Important:** Updates to `offer` will recreate the server.
1327
- :param pulumi.Input[str] offer_id: The ID of the offer.
1328
- :param pulumi.Input[str] offer_name: The name of the offer.
1396
+ :param pulumi.Input[_builtins.str] offer_id: The ID of the offer.
1397
+ :param pulumi.Input[_builtins.str] offer_name: The name of the offer.
1329
1398
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerOptionArgs', 'BaremetalServerOptionArgsDict']]]] options: The options to enable on the server.
1330
1399
  > The `options` block supports:
1331
- :param pulumi.Input[str] organization_id: The organization ID the server is associated with.
1332
- :param pulumi.Input[str] os: The UUID of the os to install on the server.
1400
+ :param pulumi.Input[_builtins.str] organization_id: The organization ID the server is associated with.
1401
+ :param pulumi.Input[_builtins.str] os: The UUID of the os to install on the server.
1333
1402
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
1334
1403
  > **Important:** Updates to `os` will reinstall the server.
1335
- :param pulumi.Input[str] os_name: The name of the os.
1336
- :param pulumi.Input[str] partitioning: The partitioning schema in JSON format
1337
- :param pulumi.Input[str] password: Password used for the installation. May be required depending on used os.
1404
+ :param pulumi.Input[_builtins.str] os_name: The name of the os.
1405
+ :param pulumi.Input[_builtins.str] partitioning: The partitioning schema in JSON format
1406
+ :param pulumi.Input[_builtins.str] password: Password used for the installation. May be required depending on used os.
1407
+ :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateIpArgs', 'BaremetalServerPrivateIpArgsDict']]]] private_ips: The list of private IPv4 and IPv6 addresses associated with the resource.
1338
1408
  :param pulumi.Input[Sequence[pulumi.Input[Union['BaremetalServerPrivateNetworkArgs', 'BaremetalServerPrivateNetworkArgsDict']]]] 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/)
1339
- :param pulumi.Input[str] project_id: `project_id`) The ID of the project the server is associated with.
1340
- :param pulumi.Input[bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1409
+ :param pulumi.Input[_builtins.str] project_id: `project_id`) The ID of the project the server is associated with.
1410
+ :param pulumi.Input[_builtins.bool] protected: Set to true to activate server protection option.
1411
+ :param pulumi.Input[_builtins.bool] reinstall_on_config_changes: If True, this boolean allows to reinstall the server on install config changes.
1341
1412
  > **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.
1342
- :param pulumi.Input[str] service_password: Password used for the service to install. May be required depending on used os.
1343
- :param pulumi.Input[str] service_user: User used for the service to install.
1344
- :param pulumi.Input[Sequence[pulumi.Input[str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1345
- :param pulumi.Input[Sequence[pulumi.Input[str]]] tags: The tags associated with the server.
1346
- :param pulumi.Input[str] user: User used for the installation.
1347
- :param pulumi.Input[str] zone: `zone`) The zone in which the server should be created.
1413
+ :param pulumi.Input[_builtins.str] service_password: Password used for the service to install. May be required depending on used os.
1414
+ :param pulumi.Input[_builtins.str] service_user: User used for the service to install.
1415
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] ssh_key_ids: List of SSH keys allowed to connect to the server.
1416
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] tags: The tags associated with the server.
1417
+ :param pulumi.Input[_builtins.str] user: User used for the installation.
1418
+ :param pulumi.Input[_builtins.str] zone: `zone`) The zone in which the server should be created.
1348
1419
  """
1349
1420
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
1350
1421
 
1351
1422
  __props__ = _BaremetalServerState.__new__(_BaremetalServerState)
1352
1423
 
1424
+ __props__.__dict__["cloud_init"] = cloud_init
1353
1425
  __props__.__dict__["description"] = description
1354
1426
  __props__.__dict__["domain"] = domain
1355
1427
  __props__.__dict__["hostname"] = hostname
@@ -1367,8 +1439,10 @@ class BaremetalServer(pulumi.CustomResource):
1367
1439
  __props__.__dict__["os_name"] = os_name
1368
1440
  __props__.__dict__["partitioning"] = partitioning
1369
1441
  __props__.__dict__["password"] = password
1442
+ __props__.__dict__["private_ips"] = private_ips
1370
1443
  __props__.__dict__["private_networks"] = private_networks
1371
1444
  __props__.__dict__["project_id"] = project_id
1445
+ __props__.__dict__["protected"] = protected
1372
1446
  __props__.__dict__["reinstall_on_config_changes"] = reinstall_on_config_changes
1373
1447
  __props__.__dict__["service_password"] = service_password
1374
1448
  __props__.__dict__["service_user"] = service_user
@@ -1378,39 +1452,47 @@ class BaremetalServer(pulumi.CustomResource):
1378
1452
  __props__.__dict__["zone"] = zone
1379
1453
  return BaremetalServer(resource_name, opts=opts, __props__=__props__)
1380
1454
 
1381
- @property
1455
+ @_builtins.property
1456
+ @pulumi.getter(name="cloudInit")
1457
+ def cloud_init(self) -> pulumi.Output[_builtins.str]:
1458
+ """
1459
+ 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.
1460
+ """
1461
+ return pulumi.get(self, "cloud_init")
1462
+
1463
+ @_builtins.property
1382
1464
  @pulumi.getter
1383
- def description(self) -> pulumi.Output[Optional[str]]:
1465
+ def description(self) -> pulumi.Output[Optional[_builtins.str]]:
1384
1466
  """
1385
1467
  A description for the server.
1386
1468
  """
1387
1469
  return pulumi.get(self, "description")
1388
1470
 
1389
- @property
1471
+ @_builtins.property
1390
1472
  @pulumi.getter
1391
- def domain(self) -> pulumi.Output[str]:
1473
+ def domain(self) -> pulumi.Output[_builtins.str]:
1392
1474
  """
1393
1475
  The domain of the server.
1394
1476
  """
1395
1477
  return pulumi.get(self, "domain")
1396
1478
 
1397
- @property
1479
+ @_builtins.property
1398
1480
  @pulumi.getter
1399
- def hostname(self) -> pulumi.Output[Optional[str]]:
1481
+ def hostname(self) -> pulumi.Output[Optional[_builtins.str]]:
1400
1482
  """
1401
1483
  The hostname of the server.
1402
1484
  """
1403
1485
  return pulumi.get(self, "hostname")
1404
1486
 
1405
- @property
1487
+ @_builtins.property
1406
1488
  @pulumi.getter(name="installConfigAfterward")
1407
- def install_config_afterward(self) -> pulumi.Output[Optional[bool]]:
1489
+ def install_config_afterward(self) -> pulumi.Output[Optional[_builtins.bool]]:
1408
1490
  """
1409
1491
  If True, this boolean allows to create a server without the install config if you want to provide it later.
1410
1492
  """
1411
1493
  return pulumi.get(self, "install_config_afterward")
1412
1494
 
1413
- @property
1495
+ @_builtins.property
1414
1496
  @pulumi.getter
1415
1497
  def ips(self) -> pulumi.Output[Sequence['outputs.BaremetalServerIp']]:
1416
1498
  """
@@ -1418,7 +1500,7 @@ class BaremetalServer(pulumi.CustomResource):
1418
1500
  """
1419
1501
  return pulumi.get(self, "ips")
1420
1502
 
1421
- @property
1503
+ @_builtins.property
1422
1504
  @pulumi.getter
1423
1505
  def ipv4s(self) -> pulumi.Output[Sequence['outputs.BaremetalServerIpv4']]:
1424
1506
  """
@@ -1426,7 +1508,7 @@ class BaremetalServer(pulumi.CustomResource):
1426
1508
  """
1427
1509
  return pulumi.get(self, "ipv4s")
1428
1510
 
1429
- @property
1511
+ @_builtins.property
1430
1512
  @pulumi.getter
1431
1513
  def ipv6s(self) -> pulumi.Output[Sequence['outputs.BaremetalServerIpv6']]:
1432
1514
  """
@@ -1434,17 +1516,17 @@ class BaremetalServer(pulumi.CustomResource):
1434
1516
  """
1435
1517
  return pulumi.get(self, "ipv6s")
1436
1518
 
1437
- @property
1519
+ @_builtins.property
1438
1520
  @pulumi.getter
1439
- def name(self) -> pulumi.Output[str]:
1521
+ def name(self) -> pulumi.Output[_builtins.str]:
1440
1522
  """
1441
1523
  The name of the server.
1442
1524
  """
1443
1525
  return pulumi.get(self, "name")
1444
1526
 
1445
- @property
1527
+ @_builtins.property
1446
1528
  @pulumi.getter
1447
- def offer(self) -> pulumi.Output[str]:
1529
+ def offer(self) -> pulumi.Output[_builtins.str]:
1448
1530
  """
1449
1531
  The offer UUID of the baremetal server.
1450
1532
  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.
@@ -1453,23 +1535,23 @@ class BaremetalServer(pulumi.CustomResource):
1453
1535
  """
1454
1536
  return pulumi.get(self, "offer")
1455
1537
 
1456
- @property
1538
+ @_builtins.property
1457
1539
  @pulumi.getter(name="offerId")
1458
- def offer_id(self) -> pulumi.Output[str]:
1540
+ def offer_id(self) -> pulumi.Output[_builtins.str]:
1459
1541
  """
1460
1542
  The ID of the offer.
1461
1543
  """
1462
1544
  return pulumi.get(self, "offer_id")
1463
1545
 
1464
- @property
1546
+ @_builtins.property
1465
1547
  @pulumi.getter(name="offerName")
1466
- def offer_name(self) -> pulumi.Output[str]:
1548
+ def offer_name(self) -> pulumi.Output[_builtins.str]:
1467
1549
  """
1468
1550
  The name of the offer.
1469
1551
  """
1470
1552
  return pulumi.get(self, "offer_name")
1471
1553
 
1472
- @property
1554
+ @_builtins.property
1473
1555
  @pulumi.getter
1474
1556
  def options(self) -> pulumi.Output[Optional[Sequence['outputs.BaremetalServerOption']]]:
1475
1557
  """
@@ -1478,17 +1560,17 @@ class BaremetalServer(pulumi.CustomResource):
1478
1560
  """
1479
1561
  return pulumi.get(self, "options")
1480
1562
 
1481
- @property
1563
+ @_builtins.property
1482
1564
  @pulumi.getter(name="organizationId")
1483
- def organization_id(self) -> pulumi.Output[str]:
1565
+ def organization_id(self) -> pulumi.Output[_builtins.str]:
1484
1566
  """
1485
1567
  The organization ID the server is associated with.
1486
1568
  """
1487
1569
  return pulumi.get(self, "organization_id")
1488
1570
 
1489
- @property
1571
+ @_builtins.property
1490
1572
  @pulumi.getter
1491
- def os(self) -> pulumi.Output[Optional[str]]:
1573
+ def os(self) -> pulumi.Output[Optional[_builtins.str]]:
1492
1574
  """
1493
1575
  The UUID of the os to install on the server.
1494
1576
  Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.
@@ -1496,31 +1578,39 @@ class BaremetalServer(pulumi.CustomResource):
1496
1578
  """
1497
1579
  return pulumi.get(self, "os")
1498
1580
 
1499
- @property
1581
+ @_builtins.property
1500
1582
  @pulumi.getter(name="osName")
1501
- def os_name(self) -> pulumi.Output[str]:
1583
+ def os_name(self) -> pulumi.Output[_builtins.str]:
1502
1584
  """
1503
1585
  The name of the os.
1504
1586
  """
1505
1587
  return pulumi.get(self, "os_name")
1506
1588
 
1507
- @property
1589
+ @_builtins.property
1508
1590
  @pulumi.getter
1509
- def partitioning(self) -> pulumi.Output[Optional[str]]:
1591
+ def partitioning(self) -> pulumi.Output[Optional[_builtins.str]]:
1510
1592
  """
1511
1593
  The partitioning schema in JSON format
1512
1594
  """
1513
1595
  return pulumi.get(self, "partitioning")
1514
1596
 
1515
- @property
1597
+ @_builtins.property
1516
1598
  @pulumi.getter
1517
- def password(self) -> pulumi.Output[Optional[str]]:
1599
+ def password(self) -> pulumi.Output[Optional[_builtins.str]]:
1518
1600
  """
1519
1601
  Password used for the installation. May be required depending on used os.
1520
1602
  """
1521
1603
  return pulumi.get(self, "password")
1522
1604
 
1523
- @property
1605
+ @_builtins.property
1606
+ @pulumi.getter(name="privateIps")
1607
+ def private_ips(self) -> pulumi.Output[Sequence['outputs.BaremetalServerPrivateIp']]:
1608
+ """
1609
+ The list of private IPv4 and IPv6 addresses associated with the resource.
1610
+ """
1611
+ return pulumi.get(self, "private_ips")
1612
+
1613
+ @_builtins.property
1524
1614
  @pulumi.getter(name="privateNetworks")
1525
1615
  def private_networks(self) -> pulumi.Output[Optional[Sequence['outputs.BaremetalServerPrivateNetwork']]]:
1526
1616
  """
@@ -1528,66 +1618,74 @@ class BaremetalServer(pulumi.CustomResource):
1528
1618
  """
1529
1619
  return pulumi.get(self, "private_networks")
1530
1620
 
1531
- @property
1621
+ @_builtins.property
1532
1622
  @pulumi.getter(name="projectId")
1533
- def project_id(self) -> pulumi.Output[str]:
1623
+ def project_id(self) -> pulumi.Output[_builtins.str]:
1534
1624
  """
1535
1625
  `project_id`) The ID of the project the server is associated with.
1536
1626
  """
1537
1627
  return pulumi.get(self, "project_id")
1538
1628
 
1539
- @property
1629
+ @_builtins.property
1630
+ @pulumi.getter
1631
+ def protected(self) -> pulumi.Output[Optional[_builtins.bool]]:
1632
+ """
1633
+ Set to true to activate server protection option.
1634
+ """
1635
+ return pulumi.get(self, "protected")
1636
+
1637
+ @_builtins.property
1540
1638
  @pulumi.getter(name="reinstallOnConfigChanges")
1541
- def reinstall_on_config_changes(self) -> pulumi.Output[Optional[bool]]:
1639
+ def reinstall_on_config_changes(self) -> pulumi.Output[Optional[_builtins.bool]]:
1542
1640
  """
1543
1641
  If True, this boolean allows to reinstall the server on install config changes.
1544
1642
  > **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.
1545
1643
  """
1546
1644
  return pulumi.get(self, "reinstall_on_config_changes")
1547
1645
 
1548
- @property
1646
+ @_builtins.property
1549
1647
  @pulumi.getter(name="servicePassword")
1550
- def service_password(self) -> pulumi.Output[Optional[str]]:
1648
+ def service_password(self) -> pulumi.Output[Optional[_builtins.str]]:
1551
1649
  """
1552
1650
  Password used for the service to install. May be required depending on used os.
1553
1651
  """
1554
1652
  return pulumi.get(self, "service_password")
1555
1653
 
1556
- @property
1654
+ @_builtins.property
1557
1655
  @pulumi.getter(name="serviceUser")
1558
- def service_user(self) -> pulumi.Output[str]:
1656
+ def service_user(self) -> pulumi.Output[_builtins.str]:
1559
1657
  """
1560
1658
  User used for the service to install.
1561
1659
  """
1562
1660
  return pulumi.get(self, "service_user")
1563
1661
 
1564
- @property
1662
+ @_builtins.property
1565
1663
  @pulumi.getter(name="sshKeyIds")
1566
- def ssh_key_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
1664
+ def ssh_key_ids(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
1567
1665
  """
1568
1666
  List of SSH keys allowed to connect to the server.
1569
1667
  """
1570
1668
  return pulumi.get(self, "ssh_key_ids")
1571
1669
 
1572
- @property
1670
+ @_builtins.property
1573
1671
  @pulumi.getter
1574
- def tags(self) -> pulumi.Output[Sequence[str]]:
1672
+ def tags(self) -> pulumi.Output[Sequence[_builtins.str]]:
1575
1673
  """
1576
1674
  The tags associated with the server.
1577
1675
  """
1578
1676
  return pulumi.get(self, "tags")
1579
1677
 
1580
- @property
1678
+ @_builtins.property
1581
1679
  @pulumi.getter
1582
- def user(self) -> pulumi.Output[str]:
1680
+ def user(self) -> pulumi.Output[_builtins.str]:
1583
1681
  """
1584
1682
  User used for the installation.
1585
1683
  """
1586
1684
  return pulumi.get(self, "user")
1587
1685
 
1588
- @property
1686
+ @_builtins.property
1589
1687
  @pulumi.getter
1590
- def zone(self) -> pulumi.Output[str]:
1688
+ def zone(self) -> pulumi.Output[Optional[_builtins.str]]:
1591
1689
  """
1592
1690
  `zone`) The zone in which the server should be created.
1593
1691
  """