From 96204ddd2ba08791e726a8eb894405f8e0e14808 Mon Sep 17 00:00:00 2001 From: Ringo De Smet Date: Mon, 29 Jul 2024 20:31:05 +0200 Subject: [PATCH] Upgrade pulumi-terraform-bridge to v3.88.0 (#320) * make tfgen * make build_sdks --- examples/go.mod | 17 ++--- examples/go.sum | 45 ++++++------- .../cmd/pulumi-resource-scaleway/schema.json | 18 ++--- provider/go.mod | 32 ++++----- provider/go.sum | 67 ++++++++++--------- sdk/go.mod | 25 +++---- sdk/go.sum | 50 +++++++------- sdk/go/scaleway/instanceServer.go | 2 +- sdk/go/scaleway/kubernetesCluster.go | 2 +- sdk/go/scaleway/objectBucketPolicy.go | 4 +- .../vpcPublicGatewayDhcpReservation.go | 4 +- sdk/python/pulumiverse_scaleway/_inputs.py | 28 ++------ sdk/python/pulumiverse_scaleway/_utilities.py | 44 ++++++++++-- .../container_namespace.py | 12 +--- .../pulumiverse_scaleway/database_instance.py | 8 +-- .../documentdb_private_network_endpoint.py | 4 +- .../pulumiverse_scaleway/function_domain.py | 4 +- .../pulumiverse_scaleway/instance_snapshot.py | 4 +- .../pulumiverse_scaleway/loadbalancer.py | 28 +++----- .../loadbalancer_backend.py | 12 +--- .../loadbalancer_frontend.py | 8 +-- .../pulumiverse_scaleway/object_bucket.py | 12 +--- sdk/python/pulumiverse_scaleway/outputs.py | 28 ++------ .../pulumiverse_scaleway/redis_cluster.py | 4 +- .../vpc_private_network.py | 24 ++----- .../vpc_public_gateway_dhcp_reservation.py | 4 +- 26 files changed, 226 insertions(+), 264 deletions(-) diff --git a/examples/go.mod b/examples/go.mod index c66d3b48..1735d1a0 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -4,7 +4,7 @@ go 1.22 toolchain go1.22.4 -require github.com/pulumi/pulumi/pkg/v3 v3.119.0 +require github.com/pulumi/pulumi/pkg/v3 v3.126.0 require ( cloud.google.com/go v0.112.1 // indirect @@ -16,12 +16,13 @@ require ( cloud.google.com/go/longrunning v0.5.5 // indirect cloud.google.com/go/storage v1.39.1 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect @@ -82,7 +83,7 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.5 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect @@ -97,7 +98,7 @@ require ( github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -124,9 +125,9 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect github.com/pulumi/esc v0.9.1 // indirect - github.com/pulumi/pulumi/sdk/v3 v3.119.0 // indirect + github.com/pulumi/pulumi/sdk/v3 v3.126.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect diff --git a/examples/go.sum b/examples/go.sum index c0cd4f60..8ef90117 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -17,12 +17,12 @@ cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dV cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= @@ -30,6 +30,8 @@ github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -126,8 +128,6 @@ github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJ github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= -github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= @@ -139,8 +139,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= @@ -230,13 +230,12 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v1.2.2 h1:ihRI7YFwcZdiSD7SIenIhHfQH3OuDvWerAUBZbeQS3M= -github.com/hashicorp/go-hclog v1.2.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= -github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= @@ -282,8 +281,8 @@ github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxec github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -343,16 +342,16 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/pulumi/pkg/v3 v3.119.0 h1:I7716j1xugGCUgcEIhRn1MzzfSpZnsDZpi+pc5qf4hg= -github.com/pulumi/pulumi/pkg/v3 v3.119.0/go.mod h1:sKovnH/g9x8nKUNS38PlGQf2M8IwKu9uxBELuiSx4F4= -github.com/pulumi/pulumi/sdk/v3 v3.119.0 h1:CPP0ZxAM1WT0O5/IJF0x13ZyvFMoWJi21gqNxBrLusk= -github.com/pulumi/pulumi/sdk/v3 v3.119.0/go.mod h1:/mQJPO+HehhoSJ9O3C6eUKAGeAr+4KSrbDhLsXHKldc= +github.com/pulumi/pulumi/pkg/v3 v3.126.0 h1:XaZU1ehjHN2I5ihkfwxK/UFMDiCDM9FSt2TBnbldAx4= +github.com/pulumi/pulumi/pkg/v3 v3.126.0/go.mod h1:1P4/oK9zceOJUm48QQl/TqjDN68lfsdnTR1FITTFddw= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= diff --git a/provider/cmd/pulumi-resource-scaleway/schema.json b/provider/cmd/pulumi-resource-scaleway/schema.json index d2dca3f2..4d061bfe 100644 --- a/provider/cmd/pulumi-resource-scaleway/schema.json +++ b/provider/cmd/pulumi-resource-scaleway/schema.json @@ -9563,7 +9563,7 @@ } }, "scaleway:index/documentdbPrivateNetworkEndpoint:DocumentdbPrivateNetworkEndpoint": { - "description": "Creates and manages Scaleway Database Private Network Endpoint.\n\n## Example Usage\n\n### Example Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst instance = new scaleway.DocumentdbInstance(\"instance\", {\n nodeType: \"docdb-play2-pico\",\n engine: \"FerretDB-1\",\n userName: \"my_initial_user\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n volumeSizeInGb: 20,\n});\nconst main = new scaleway.DocumentdbPrivateNetworkEndpoint(\"main\", {\n instanceId: instance.id,\n privateNetwork: {\n ipNet: \"172.16.32.3/22\",\n id: pn.id,\n },\n}, {\n dependsOn: [pn],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\ninstance = scaleway.DocumentdbInstance(\"instance\",\n node_type=\"docdb-play2-pico\",\n engine=\"FerretDB-1\",\n user_name=\"my_initial_user\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n volume_size_in_gb=20)\nmain = scaleway.DocumentdbPrivateNetworkEndpoint(\"main\",\n instance_id=instance.id,\n private_network=scaleway.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs(\n ip_net=\"172.16.32.3/22\",\n id=pn.id,\n ),\n opts=pulumi.ResourceOptions(depends_on=[pn]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var instance = new Scaleway.DocumentdbInstance(\"instance\", new()\n {\n NodeType = \"docdb-play2-pico\",\n Engine = \"FerretDB-1\",\n UserName = \"my_initial_user\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n VolumeSizeInGb = 20,\n });\n\n var main = new Scaleway.DocumentdbPrivateNetworkEndpoint(\"main\", new()\n {\n InstanceId = instance.Id,\n PrivateNetwork = new Scaleway.Inputs.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs\n {\n IpNet = \"172.16.32.3/22\",\n Id = pn.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := scaleway.NewDocumentdbInstance(ctx, \"instance\", \u0026scaleway.DocumentdbInstanceArgs{\n\t\t\tNodeType: pulumi.String(\"docdb-play2-pico\"),\n\t\t\tEngine: pulumi.String(\"FerretDB-1\"),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tVolumeSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewDocumentdbPrivateNetworkEndpoint(ctx, \"main\", \u0026scaleway.DocumentdbPrivateNetworkEndpointArgs{\n\t\t\tInstanceId: instance.ID(),\n\t\t\tPrivateNetwork: \u0026scaleway.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs{\n\t\t\t\tIpNet: pulumi.String(\"172.16.32.3/22\"),\n\t\t\t\tId: pn.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpn,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.DocumentdbInstance;\nimport com.pulumi.scaleway.DocumentdbInstanceArgs;\nimport com.pulumi.scaleway.DocumentdbPrivateNetworkEndpoint;\nimport com.pulumi.scaleway.DocumentdbPrivateNetworkEndpointArgs;\nimport com.pulumi.scaleway.inputs.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var instance = new DocumentdbInstance(\"instance\", DocumentdbInstanceArgs.builder()\n .nodeType(\"docdb-play2-pico\")\n .engine(\"FerretDB-1\")\n .userName(\"my_initial_user\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .volumeSizeInGb(20)\n .build());\n\n var main = new DocumentdbPrivateNetworkEndpoint(\"main\", DocumentdbPrivateNetworkEndpointArgs.builder()\n .instanceId(instance.id())\n .privateNetwork(DocumentdbPrivateNetworkEndpointPrivateNetworkArgs.builder()\n .ipNet(\"172.16.32.3/22\")\n .id(pn.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pn)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n instance:\n type: scaleway:DocumentdbInstance\n properties:\n nodeType: docdb-play2-pico\n engine: FerretDB-1\n userName: my_initial_user\n password: thiZ_is_v\u0026ry_s3cret\n volumeSizeInGb: 20\n main:\n type: scaleway:DocumentdbPrivateNetworkEndpoint\n properties:\n instanceId: ${instance.id}\n privateNetwork:\n ipNet: 172.16.32.3/22\n id: ${pn.id}\n options:\n dependson:\n - ${pn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase Instance Endpoint can be imported using the `{region}/{endpoint_id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/documentdbPrivateNetworkEndpoint:DocumentdbPrivateNetworkEndpoint end fr-par/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages Scaleway Database Private Network Endpoint.\n\n## Example Usage\n\n### Example Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst instance = new scaleway.DocumentdbInstance(\"instance\", {\n nodeType: \"docdb-play2-pico\",\n engine: \"FerretDB-1\",\n userName: \"my_initial_user\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n volumeSizeInGb: 20,\n});\nconst main = new scaleway.DocumentdbPrivateNetworkEndpoint(\"main\", {\n instanceId: instance.id,\n privateNetwork: {\n ipNet: \"172.16.32.3/22\",\n id: pn.id,\n },\n}, {\n dependsOn: [pn],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\ninstance = scaleway.DocumentdbInstance(\"instance\",\n node_type=\"docdb-play2-pico\",\n engine=\"FerretDB-1\",\n user_name=\"my_initial_user\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n volume_size_in_gb=20)\nmain = scaleway.DocumentdbPrivateNetworkEndpoint(\"main\",\n instance_id=instance.id,\n private_network=scaleway.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs(\n ip_net=\"172.16.32.3/22\",\n id=pn.id,\n ),\n opts = pulumi.ResourceOptions(depends_on=[pn]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var instance = new Scaleway.DocumentdbInstance(\"instance\", new()\n {\n NodeType = \"docdb-play2-pico\",\n Engine = \"FerretDB-1\",\n UserName = \"my_initial_user\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n VolumeSizeInGb = 20,\n });\n\n var main = new Scaleway.DocumentdbPrivateNetworkEndpoint(\"main\", new()\n {\n InstanceId = instance.Id,\n PrivateNetwork = new Scaleway.Inputs.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs\n {\n IpNet = \"172.16.32.3/22\",\n Id = pn.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := scaleway.NewDocumentdbInstance(ctx, \"instance\", \u0026scaleway.DocumentdbInstanceArgs{\n\t\t\tNodeType: pulumi.String(\"docdb-play2-pico\"),\n\t\t\tEngine: pulumi.String(\"FerretDB-1\"),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tVolumeSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewDocumentdbPrivateNetworkEndpoint(ctx, \"main\", \u0026scaleway.DocumentdbPrivateNetworkEndpointArgs{\n\t\t\tInstanceId: instance.ID(),\n\t\t\tPrivateNetwork: \u0026scaleway.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs{\n\t\t\t\tIpNet: pulumi.String(\"172.16.32.3/22\"),\n\t\t\t\tId: pn.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpn,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.DocumentdbInstance;\nimport com.pulumi.scaleway.DocumentdbInstanceArgs;\nimport com.pulumi.scaleway.DocumentdbPrivateNetworkEndpoint;\nimport com.pulumi.scaleway.DocumentdbPrivateNetworkEndpointArgs;\nimport com.pulumi.scaleway.inputs.DocumentdbPrivateNetworkEndpointPrivateNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var instance = new DocumentdbInstance(\"instance\", DocumentdbInstanceArgs.builder()\n .nodeType(\"docdb-play2-pico\")\n .engine(\"FerretDB-1\")\n .userName(\"my_initial_user\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .volumeSizeInGb(20)\n .build());\n\n var main = new DocumentdbPrivateNetworkEndpoint(\"main\", DocumentdbPrivateNetworkEndpointArgs.builder()\n .instanceId(instance.id())\n .privateNetwork(DocumentdbPrivateNetworkEndpointPrivateNetworkArgs.builder()\n .ipNet(\"172.16.32.3/22\")\n .id(pn.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pn)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n instance:\n type: scaleway:DocumentdbInstance\n properties:\n nodeType: docdb-play2-pico\n engine: FerretDB-1\n userName: my_initial_user\n password: thiZ_is_v\u0026ry_s3cret\n volumeSizeInGb: 20\n main:\n type: scaleway:DocumentdbPrivateNetworkEndpoint\n properties:\n instanceId: ${instance.id}\n privateNetwork:\n ipNet: 172.16.32.3/22\n id: ${pn.id}\n options:\n dependson:\n - ${pn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase Instance Endpoint can be imported using the `{region}/{endpoint_id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/documentdbPrivateNetworkEndpoint:DocumentdbPrivateNetworkEndpoint end fr-par/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "instanceId": { "type": "string", @@ -10894,7 +10894,7 @@ } }, "scaleway:index/functionDomain:FunctionDomain": { - "description": "Creates and manages Scaleway Function Domain bindings.\nFor more information see [the documentation](https://www.scaleway.com/en/developers/api/serverless-functions).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainFunctionNamespace = new scaleway.FunctionNamespace(\"mainFunctionNamespace\", {});\nconst mainFunction = new scaleway.Function(\"mainFunction\", {\n namespaceId: mainFunctionNamespace.id,\n runtime: \"go118\",\n privacy: \"private\",\n handler: \"Handle\",\n zipFile: \"testfixture/gofunction.zip\",\n deploy: true,\n});\nconst mainFunctionDomain = new scaleway.FunctionDomain(\"mainFunctionDomain\", {\n functionId: mainFunction.id,\n hostname: \"example.com\",\n}, {\n dependsOn: [mainFunction],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_function_namespace = scaleway.FunctionNamespace(\"mainFunctionNamespace\")\nmain_function = scaleway.Function(\"mainFunction\",\n namespace_id=main_function_namespace.id,\n runtime=\"go118\",\n privacy=\"private\",\n handler=\"Handle\",\n zip_file=\"testfixture/gofunction.zip\",\n deploy=True)\nmain_function_domain = scaleway.FunctionDomain(\"mainFunctionDomain\",\n function_id=main_function.id,\n hostname=\"example.com\",\n opts=pulumi.ResourceOptions(depends_on=[main_function]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainFunctionNamespace = new Scaleway.FunctionNamespace(\"mainFunctionNamespace\");\n\n var mainFunction = new Scaleway.Function(\"mainFunction\", new()\n {\n NamespaceId = mainFunctionNamespace.Id,\n Runtime = \"go118\",\n Privacy = \"private\",\n Handler = \"Handle\",\n ZipFile = \"testfixture/gofunction.zip\",\n Deploy = true,\n });\n\n var mainFunctionDomain = new Scaleway.FunctionDomain(\"mainFunctionDomain\", new()\n {\n FunctionId = mainFunction.Id,\n Hostname = \"example.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainFunction,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainFunctionNamespace, err := scaleway.NewFunctionNamespace(ctx, \"mainFunctionNamespace\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := scaleway.NewFunction(ctx, \"mainFunction\", \u0026scaleway.FunctionArgs{\n\t\t\tNamespaceId: mainFunctionNamespace.ID(),\n\t\t\tRuntime: pulumi.String(\"go118\"),\n\t\t\tPrivacy: pulumi.String(\"private\"),\n\t\t\tHandler: pulumi.String(\"Handle\"),\n\t\t\tZipFile: pulumi.String(\"testfixture/gofunction.zip\"),\n\t\t\tDeploy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewFunctionDomain(ctx, \"mainFunctionDomain\", \u0026scaleway.FunctionDomainArgs{\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tHostname: pulumi.String(\"example.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainFunction,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.FunctionNamespace;\nimport com.pulumi.scaleway.Function;\nimport com.pulumi.scaleway.FunctionArgs;\nimport com.pulumi.scaleway.FunctionDomain;\nimport com.pulumi.scaleway.FunctionDomainArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainFunctionNamespace = new FunctionNamespace(\"mainFunctionNamespace\");\n\n var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n .namespaceId(mainFunctionNamespace.id())\n .runtime(\"go118\")\n .privacy(\"private\")\n .handler(\"Handle\")\n .zipFile(\"testfixture/gofunction.zip\")\n .deploy(true)\n .build());\n\n var mainFunctionDomain = new FunctionDomain(\"mainFunctionDomain\", FunctionDomainArgs.builder()\n .functionId(mainFunction.id())\n .hostname(\"example.com\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mainFunction)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainFunctionDomain:\n type: scaleway:FunctionDomain\n properties:\n functionId: ${mainFunction.id}\n hostname: example.com\n options:\n dependson:\n - ${mainFunction}\n mainFunctionNamespace:\n type: scaleway:FunctionNamespace\n mainFunction:\n type: scaleway:Function\n properties:\n namespaceId: ${mainFunctionNamespace.id}\n runtime: go118\n privacy: private\n handler: Handle\n zipFile: testfixture/gofunction.zip\n deploy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomain can be imported using the `{region}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/functionDomain:FunctionDomain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages Scaleway Function Domain bindings.\nFor more information see [the documentation](https://www.scaleway.com/en/developers/api/serverless-functions).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainFunctionNamespace = new scaleway.FunctionNamespace(\"mainFunctionNamespace\", {});\nconst mainFunction = new scaleway.Function(\"mainFunction\", {\n namespaceId: mainFunctionNamespace.id,\n runtime: \"go118\",\n privacy: \"private\",\n handler: \"Handle\",\n zipFile: \"testfixture/gofunction.zip\",\n deploy: true,\n});\nconst mainFunctionDomain = new scaleway.FunctionDomain(\"mainFunctionDomain\", {\n functionId: mainFunction.id,\n hostname: \"example.com\",\n}, {\n dependsOn: [mainFunction],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_function_namespace = scaleway.FunctionNamespace(\"mainFunctionNamespace\")\nmain_function = scaleway.Function(\"mainFunction\",\n namespace_id=main_function_namespace.id,\n runtime=\"go118\",\n privacy=\"private\",\n handler=\"Handle\",\n zip_file=\"testfixture/gofunction.zip\",\n deploy=True)\nmain_function_domain = scaleway.FunctionDomain(\"mainFunctionDomain\",\n function_id=main_function.id,\n hostname=\"example.com\",\n opts = pulumi.ResourceOptions(depends_on=[main_function]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainFunctionNamespace = new Scaleway.FunctionNamespace(\"mainFunctionNamespace\");\n\n var mainFunction = new Scaleway.Function(\"mainFunction\", new()\n {\n NamespaceId = mainFunctionNamespace.Id,\n Runtime = \"go118\",\n Privacy = \"private\",\n Handler = \"Handle\",\n ZipFile = \"testfixture/gofunction.zip\",\n Deploy = true,\n });\n\n var mainFunctionDomain = new Scaleway.FunctionDomain(\"mainFunctionDomain\", new()\n {\n FunctionId = mainFunction.Id,\n Hostname = \"example.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainFunction,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainFunctionNamespace, err := scaleway.NewFunctionNamespace(ctx, \"mainFunctionNamespace\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := scaleway.NewFunction(ctx, \"mainFunction\", \u0026scaleway.FunctionArgs{\n\t\t\tNamespaceId: mainFunctionNamespace.ID(),\n\t\t\tRuntime: pulumi.String(\"go118\"),\n\t\t\tPrivacy: pulumi.String(\"private\"),\n\t\t\tHandler: pulumi.String(\"Handle\"),\n\t\t\tZipFile: pulumi.String(\"testfixture/gofunction.zip\"),\n\t\t\tDeploy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewFunctionDomain(ctx, \"mainFunctionDomain\", \u0026scaleway.FunctionDomainArgs{\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tHostname: pulumi.String(\"example.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainFunction,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.FunctionNamespace;\nimport com.pulumi.scaleway.Function;\nimport com.pulumi.scaleway.FunctionArgs;\nimport com.pulumi.scaleway.FunctionDomain;\nimport com.pulumi.scaleway.FunctionDomainArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainFunctionNamespace = new FunctionNamespace(\"mainFunctionNamespace\");\n\n var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n .namespaceId(mainFunctionNamespace.id())\n .runtime(\"go118\")\n .privacy(\"private\")\n .handler(\"Handle\")\n .zipFile(\"testfixture/gofunction.zip\")\n .deploy(true)\n .build());\n\n var mainFunctionDomain = new FunctionDomain(\"mainFunctionDomain\", FunctionDomainArgs.builder()\n .functionId(mainFunction.id())\n .hostname(\"example.com\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mainFunction)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainFunctionDomain:\n type: scaleway:FunctionDomain\n properties:\n functionId: ${mainFunction.id}\n hostname: example.com\n options:\n dependson:\n - ${mainFunction}\n mainFunctionNamespace:\n type: scaleway:FunctionNamespace\n mainFunction:\n type: scaleway:Function\n properties:\n namespaceId: ${mainFunctionNamespace.id}\n runtime: go118\n privacy: private\n handler: Handle\n zipFile: testfixture/gofunction.zip\n deploy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomain can be imported using the `{region}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/functionDomain:FunctionDomain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "functionId": { "type": "string", @@ -13044,7 +13044,7 @@ } }, "scaleway:index/instanceServer:InstanceServer": { - "description": "Creates and manages Scaleway compute Instances. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).\n\nPlease check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst publicIp = new scaleway.InstanceIp(\"publicIp\", {});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n ipId: publicIp.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npublic_ip = scaleway.InstanceIp(\"publicIp\")\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n ip_id=public_ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var publicIp = new Scaleway.InstanceIp(\"publicIp\");\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n IpId = publicIp.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublicIp, err := scaleway.NewInstanceIp(ctx, \"publicIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tIpId: publicIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceIp;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var publicIp = new InstanceIp(\"publicIp\");\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .ipId(publicIp.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n publicIp:\n type: scaleway:InstanceIp\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n ipId: ${publicIp.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With additional volumes and tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst data = new scaleway.InstanceVolume(\"data\", {\n sizeInGb: 100,\n type: \"b_ssd\",\n});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n tags: [\n \"hello\",\n \"public\",\n ],\n rootVolume: {\n deleteOnTermination: false,\n },\n additionalVolumeIds: [data.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ndata = scaleway.InstanceVolume(\"data\",\n size_in_gb=100,\n type=\"b_ssd\")\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n tags=[\n \"hello\",\n \"public\",\n ],\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n delete_on_termination=False,\n ),\n additional_volume_ids=[data.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var data = new Scaleway.InstanceVolume(\"data\", new()\n {\n SizeInGb = 100,\n Type = \"b_ssd\",\n });\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n Tags = new[]\n {\n \"hello\",\n \"public\",\n },\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n DeleteOnTermination = false,\n },\n AdditionalVolumeIds = new[]\n {\n data.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdata, err := scaleway.NewInstanceVolume(ctx, \"data\", \u0026scaleway.InstanceVolumeArgs{\n\t\t\tSizeInGb: pulumi.Int(100),\n\t\t\tType: pulumi.String(\"b_ssd\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tDeleteOnTermination: pulumi.Bool(false),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tdata.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceVolume;\nimport com.pulumi.scaleway.InstanceVolumeArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var data = new InstanceVolume(\"data\", InstanceVolumeArgs.builder()\n .sizeInGb(100)\n .type(\"b_ssd\")\n .build());\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .tags( \n \"hello\",\n \"public\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .deleteOnTermination(false)\n .build())\n .additionalVolumeIds(data.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n data:\n type: scaleway:InstanceVolume\n properties:\n sizeInGb: 100\n type: b_ssd\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n tags:\n - hello\n - public\n rootVolume:\n deleteOnTermination: false\n additionalVolumeIds:\n - ${data.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a reserved IP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip = new scaleway.InstanceIp(\"ip\", {});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n tags: [\n \"hello\",\n \"public\",\n ],\n ipId: ip.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip = scaleway.InstanceIp(\"ip\")\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"f974feac-abae-4365-b988-8ec7d1cec10d\",\n tags=[\n \"hello\",\n \"public\",\n ],\n ip_id=ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ip = new Scaleway.InstanceIp(\"ip\");\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n Tags = new[]\n {\n \"hello\",\n \"public\",\n },\n IpId = ip.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip, err := scaleway.NewInstanceIp(ctx, \"ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"f974feac-abae-4365-b988-8ec7d1cec10d\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tIpId: ip.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceIp;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ip = new InstanceIp(\"ip\");\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"f974feac-abae-4365-b988-8ec7d1cec10d\")\n .tags( \n \"hello\",\n \"public\")\n .ipId(ip.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ip:\n type: scaleway:InstanceIp\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: f974feac-abae-4365-b988-8ec7d1cec10d\n tags:\n - hello\n - public\n ipId: ${ip.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With security group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst www = new scaleway.InstanceSecurityGroup(\"www\", {\n inboundDefaultPolicy: \"drop\",\n outboundDefaultPolicy: \"accept\",\n inboundRules: [\n {\n action: \"accept\",\n port: 22,\n ip: \"212.47.225.64\",\n },\n {\n action: \"accept\",\n port: 80,\n },\n {\n action: \"accept\",\n port: 443,\n },\n ],\n outboundRules: [{\n action: \"drop\",\n ipRange: \"10.20.0.0/24\",\n }],\n});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n securityGroupId: www.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nwww = scaleway.InstanceSecurityGroup(\"www\",\n inbound_default_policy=\"drop\",\n outbound_default_policy=\"accept\",\n inbound_rules=[\n scaleway.InstanceSecurityGroupInboundRuleArgs(\n action=\"accept\",\n port=22,\n ip=\"212.47.225.64\",\n ),\n scaleway.InstanceSecurityGroupInboundRuleArgs(\n action=\"accept\",\n port=80,\n ),\n scaleway.InstanceSecurityGroupInboundRuleArgs(\n action=\"accept\",\n port=443,\n ),\n ],\n outbound_rules=[scaleway.InstanceSecurityGroupOutboundRuleArgs(\n action=\"drop\",\n ip_range=\"10.20.0.0/24\",\n )])\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n security_group_id=www.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var www = new Scaleway.InstanceSecurityGroup(\"www\", new()\n {\n InboundDefaultPolicy = \"drop\",\n OutboundDefaultPolicy = \"accept\",\n InboundRules = new[]\n {\n new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs\n {\n Action = \"accept\",\n Port = 22,\n Ip = \"212.47.225.64\",\n },\n new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs\n {\n Action = \"accept\",\n Port = 80,\n },\n new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs\n {\n Action = \"accept\",\n Port = 443,\n },\n },\n OutboundRules = new[]\n {\n new Scaleway.Inputs.InstanceSecurityGroupOutboundRuleArgs\n {\n Action = \"drop\",\n IpRange = \"10.20.0.0/24\",\n },\n },\n });\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n SecurityGroupId = www.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twww, err := scaleway.NewInstanceSecurityGroup(ctx, \"www\", \u0026scaleway.InstanceSecurityGroupArgs{\n\t\t\tInboundDefaultPolicy: pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"accept\"),\n\t\t\tInboundRules: scaleway.InstanceSecurityGroupInboundRuleArray{\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort: pulumi.Int(22),\n\t\t\t\t\tIp: pulumi.String(\"212.47.225.64\"),\n\t\t\t\t},\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: scaleway.InstanceSecurityGroupOutboundRuleArray{\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupOutboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"drop\"),\n\t\t\t\t\tIpRange: pulumi.String(\"10.20.0.0/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tSecurityGroupId: www.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceSecurityGroup;\nimport com.pulumi.scaleway.InstanceSecurityGroupArgs;\nimport com.pulumi.scaleway.inputs.InstanceSecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.inputs.InstanceSecurityGroupOutboundRuleArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var www = new InstanceSecurityGroup(\"www\", InstanceSecurityGroupArgs.builder()\n .inboundDefaultPolicy(\"drop\")\n .outboundDefaultPolicy(\"accept\")\n .inboundRules( \n InstanceSecurityGroupInboundRuleArgs.builder()\n .action(\"accept\")\n .port(\"22\")\n .ip(\"212.47.225.64\")\n .build(),\n InstanceSecurityGroupInboundRuleArgs.builder()\n .action(\"accept\")\n .port(\"80\")\n .build(),\n InstanceSecurityGroupInboundRuleArgs.builder()\n .action(\"accept\")\n .port(\"443\")\n .build())\n .outboundRules(InstanceSecurityGroupOutboundRuleArgs.builder()\n .action(\"drop\")\n .ipRange(\"10.20.0.0/24\")\n .build())\n .build());\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .securityGroupId(www.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n www:\n type: scaleway:InstanceSecurityGroup\n properties:\n inboundDefaultPolicy: drop\n outboundDefaultPolicy: accept\n inboundRules:\n - action: accept\n port: '22'\n ip: 212.47.225.64\n - action: accept\n port: '80'\n - action: accept\n port: '443'\n outboundRules:\n - action: drop\n ipRange: 10.20.0.0/24\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n securityGroupId: ${www.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With user data and cloud-init\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n userData: {\n foo: \"bar\",\n \"cloud-init\": fs.readFileSync(`${path.module}/cloud-init.yml`, \"utf8\"),\n },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n user_data={\n \"foo\": \"bar\",\n \"cloud-init\": (lambda path: open(path).read())(f\"{path['module']}/cloud-init.yml\"),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n UserData = \n {\n { \"foo\", \"bar\" },\n { \"cloud-init\", File.ReadAllText($\"{path.Module}/cloud-init.yml\") },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tUserData: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\"cloud-init\": readFileOrPanic(fmt.Sprintf(\"%v/cloud-init.yml\", path.Module)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .userData(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"cloud-init\", Files.readString(Paths.get(String.format(\"%s/cloud-init.yml\", path.module()))))\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n userData:\n foo: bar\n cloud-init:\n fn::readFile: ${path.module}/cloud-init.yml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With private network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn01 = new scaleway.VpcPrivateNetwork(\"pn01\", {});\nconst base = new scaleway.InstanceServer(\"base\", {\n image: \"ubuntu_jammy\",\n type: \"DEV1-S\",\n privateNetworks: [{\n pnId: pn01.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn01 = scaleway.VpcPrivateNetwork(\"pn01\")\nbase = scaleway.InstanceServer(\"base\",\n image=\"ubuntu_jammy\",\n type=\"DEV1-S\",\n private_networks=[scaleway.InstanceServerPrivateNetworkArgs(\n pn_id=pn01.id,\n )])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn01 = new Scaleway.VpcPrivateNetwork(\"pn01\");\n\n var @base = new Scaleway.InstanceServer(\"base\", new()\n {\n Image = \"ubuntu_jammy\",\n Type = \"DEV1-S\",\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.InstanceServerPrivateNetworkArgs\n {\n PnId = pn01.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn01, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn01\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"base\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tPrivateNetworks: scaleway.InstanceServerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.InstanceServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: pn01.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerPrivateNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn01 = new VpcPrivateNetwork(\"pn01\");\n\n var base = new InstanceServer(\"base\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .type(\"DEV1-S\")\n .privateNetworks(InstanceServerPrivateNetworkArgs.builder()\n .pnId(pn01.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn01:\n type: scaleway:VpcPrivateNetwork\n base:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n type: DEV1-S\n privateNetworks:\n - pnId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Root volume configuration\n\n### Resized block volume with installed image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst image = new scaleway.InstanceServer(\"image\", {\n image: \"ubuntu_jammy\",\n rootVolume: {\n sizeInGb: 100,\n volumeType: \"b_ssd\",\n },\n type: \"PRO2-XXS\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nimage = scaleway.InstanceServer(\"image\",\n image=\"ubuntu_jammy\",\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n size_in_gb=100,\n volume_type=\"b_ssd\",\n ),\n type=\"PRO2-XXS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image = new Scaleway.InstanceServer(\"image\", new()\n {\n Image = \"ubuntu_jammy\",\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n SizeInGb = 100,\n VolumeType = \"b_ssd\",\n },\n Type = \"PRO2-XXS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewInstanceServer(ctx, \"image\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(100),\n\t\t\t\tVolumeType: pulumi.String(\"b_ssd\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"PRO2-XXS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new InstanceServer(\"image\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .sizeInGb(100)\n .volumeType(\"b_ssd\")\n .build())\n .type(\"PRO2-XXS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n rootVolume:\n sizeInGb: 100\n volumeType: b_ssd\n type: PRO2-XXS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### From snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshot = scaleway.getInstanceSnapshot({\n name: \"my_snapshot\",\n});\nconst fromSnapshotInstanceVolume = new scaleway.InstanceVolume(\"fromSnapshotInstanceVolume\", {\n fromSnapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n type: \"b_ssd\",\n});\nconst fromSnapshotInstanceServer = new scaleway.InstanceServer(\"fromSnapshotInstanceServer\", {\n type: \"PRO2-XXS\",\n rootVolume: {\n volumeId: fromSnapshotInstanceVolume.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nsnapshot = scaleway.get_instance_snapshot(name=\"my_snapshot\")\nfrom_snapshot_instance_volume = scaleway.InstanceVolume(\"fromSnapshotInstanceVolume\",\n from_snapshot_id=snapshot.id,\n type=\"b_ssd\")\nfrom_snapshot_instance_server = scaleway.InstanceServer(\"fromSnapshotInstanceServer\",\n type=\"PRO2-XXS\",\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n volume_id=from_snapshot_instance_volume.id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var snapshot = Scaleway.GetInstanceSnapshot.Invoke(new()\n {\n Name = \"my_snapshot\",\n });\n\n var fromSnapshotInstanceVolume = new Scaleway.InstanceVolume(\"fromSnapshotInstanceVolume\", new()\n {\n FromSnapshotId = snapshot.Apply(getInstanceSnapshotResult =\u003e getInstanceSnapshotResult.Id),\n Type = \"b_ssd\",\n });\n\n var fromSnapshotInstanceServer = new Scaleway.InstanceServer(\"fromSnapshotInstanceServer\", new()\n {\n Type = \"PRO2-XXS\",\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n VolumeId = fromSnapshotInstanceVolume.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := scaleway.LookupInstanceSnapshot(ctx, \u0026scaleway.LookupInstanceSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"my_snapshot\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfromSnapshotInstanceVolume, err := scaleway.NewInstanceVolume(ctx, \"fromSnapshotInstanceVolume\", \u0026scaleway.InstanceVolumeArgs{\n\t\t\tFromSnapshotId: pulumi.String(snapshot.Id),\n\t\t\tType: pulumi.String(\"b_ssd\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"fromSnapshotInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"PRO2-XXS\"),\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tVolumeId: fromSnapshotInstanceVolume.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetInstanceSnapshotArgs;\nimport com.pulumi.scaleway.InstanceVolume;\nimport com.pulumi.scaleway.InstanceVolumeArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var snapshot = ScalewayFunctions.getInstanceSnapshot(GetInstanceSnapshotArgs.builder()\n .name(\"my_snapshot\")\n .build());\n\n var fromSnapshotInstanceVolume = new InstanceVolume(\"fromSnapshotInstanceVolume\", InstanceVolumeArgs.builder()\n .fromSnapshotId(snapshot.applyValue(getInstanceSnapshotResult -\u003e getInstanceSnapshotResult.id()))\n .type(\"b_ssd\")\n .build());\n\n var fromSnapshotInstanceServer = new InstanceServer(\"fromSnapshotInstanceServer\", InstanceServerArgs.builder()\n .type(\"PRO2-XXS\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .volumeId(fromSnapshotInstanceVolume.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fromSnapshotInstanceVolume:\n type: scaleway:InstanceVolume\n properties:\n fromSnapshotId: ${snapshot.id}\n type: b_ssd\n fromSnapshotInstanceServer:\n type: scaleway:InstanceServer\n properties:\n type: PRO2-XXS\n rootVolume:\n volumeId: ${fromSnapshotInstanceVolume.id}\nvariables:\n snapshot:\n fn::invoke:\n Function: scaleway:getInstanceSnapshot\n Arguments:\n name: my_snapshot\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Private Network\n\n\u003e **Important:** Updates to `private_network` will recreate a new private network interface.\n\n- `pn_id` - (Required) The private network ID where to connect.\n- `mac_address` The private NIC MAC address.\n- `status` The private NIC state.\n- `zone` - (Defaults to provider `zone`) The zone in which the server must be created.\n\n\u003e **Important:**\n\n- You can only attach an instance in the same zone as a private network.\n- Instance supports maximum 8 different private networks.\n\n## Import\n\nInstance servers can be imported using the `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/instanceServer:InstanceServer web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages Scaleway compute Instances. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).\n\nPlease check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst publicIp = new scaleway.InstanceIp(\"publicIp\", {});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n ipId: publicIp.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npublic_ip = scaleway.InstanceIp(\"publicIp\")\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n ip_id=public_ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var publicIp = new Scaleway.InstanceIp(\"publicIp\");\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n IpId = publicIp.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublicIp, err := scaleway.NewInstanceIp(ctx, \"publicIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tIpId: publicIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceIp;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var publicIp = new InstanceIp(\"publicIp\");\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .ipId(publicIp.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n publicIp:\n type: scaleway:InstanceIp\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n ipId: ${publicIp.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With additional volumes and tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst data = new scaleway.InstanceVolume(\"data\", {\n sizeInGb: 100,\n type: \"b_ssd\",\n});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n tags: [\n \"hello\",\n \"public\",\n ],\n rootVolume: {\n deleteOnTermination: false,\n },\n additionalVolumeIds: [data.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ndata = scaleway.InstanceVolume(\"data\",\n size_in_gb=100,\n type=\"b_ssd\")\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n tags=[\n \"hello\",\n \"public\",\n ],\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n delete_on_termination=False,\n ),\n additional_volume_ids=[data.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var data = new Scaleway.InstanceVolume(\"data\", new()\n {\n SizeInGb = 100,\n Type = \"b_ssd\",\n });\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n Tags = new[]\n {\n \"hello\",\n \"public\",\n },\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n DeleteOnTermination = false,\n },\n AdditionalVolumeIds = new[]\n {\n data.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdata, err := scaleway.NewInstanceVolume(ctx, \"data\", \u0026scaleway.InstanceVolumeArgs{\n\t\t\tSizeInGb: pulumi.Int(100),\n\t\t\tType: pulumi.String(\"b_ssd\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tDeleteOnTermination: pulumi.Bool(false),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tdata.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceVolume;\nimport com.pulumi.scaleway.InstanceVolumeArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var data = new InstanceVolume(\"data\", InstanceVolumeArgs.builder()\n .sizeInGb(100)\n .type(\"b_ssd\")\n .build());\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .tags( \n \"hello\",\n \"public\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .deleteOnTermination(false)\n .build())\n .additionalVolumeIds(data.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n data:\n type: scaleway:InstanceVolume\n properties:\n sizeInGb: 100\n type: b_ssd\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n tags:\n - hello\n - public\n rootVolume:\n deleteOnTermination: false\n additionalVolumeIds:\n - ${data.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a reserved IP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip = new scaleway.InstanceIp(\"ip\", {});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n tags: [\n \"hello\",\n \"public\",\n ],\n ipId: ip.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip = scaleway.InstanceIp(\"ip\")\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"f974feac-abae-4365-b988-8ec7d1cec10d\",\n tags=[\n \"hello\",\n \"public\",\n ],\n ip_id=ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ip = new Scaleway.InstanceIp(\"ip\");\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n Tags = new[]\n {\n \"hello\",\n \"public\",\n },\n IpId = ip.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip, err := scaleway.NewInstanceIp(ctx, \"ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"f974feac-abae-4365-b988-8ec7d1cec10d\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tIpId: ip.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceIp;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ip = new InstanceIp(\"ip\");\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"f974feac-abae-4365-b988-8ec7d1cec10d\")\n .tags( \n \"hello\",\n \"public\")\n .ipId(ip.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ip:\n type: scaleway:InstanceIp\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: f974feac-abae-4365-b988-8ec7d1cec10d\n tags:\n - hello\n - public\n ipId: ${ip.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With security group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst www = new scaleway.InstanceSecurityGroup(\"www\", {\n inboundDefaultPolicy: \"drop\",\n outboundDefaultPolicy: \"accept\",\n inboundRules: [\n {\n action: \"accept\",\n port: 22,\n ip: \"212.47.225.64\",\n },\n {\n action: \"accept\",\n port: 80,\n },\n {\n action: \"accept\",\n port: 443,\n },\n ],\n outboundRules: [{\n action: \"drop\",\n ipRange: \"10.20.0.0/24\",\n }],\n});\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n securityGroupId: www.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nwww = scaleway.InstanceSecurityGroup(\"www\",\n inbound_default_policy=\"drop\",\n outbound_default_policy=\"accept\",\n inbound_rules=[\n scaleway.InstanceSecurityGroupInboundRuleArgs(\n action=\"accept\",\n port=22,\n ip=\"212.47.225.64\",\n ),\n scaleway.InstanceSecurityGroupInboundRuleArgs(\n action=\"accept\",\n port=80,\n ),\n scaleway.InstanceSecurityGroupInboundRuleArgs(\n action=\"accept\",\n port=443,\n ),\n ],\n outbound_rules=[scaleway.InstanceSecurityGroupOutboundRuleArgs(\n action=\"drop\",\n ip_range=\"10.20.0.0/24\",\n )])\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n security_group_id=www.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var www = new Scaleway.InstanceSecurityGroup(\"www\", new()\n {\n InboundDefaultPolicy = \"drop\",\n OutboundDefaultPolicy = \"accept\",\n InboundRules = new[]\n {\n new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs\n {\n Action = \"accept\",\n Port = 22,\n Ip = \"212.47.225.64\",\n },\n new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs\n {\n Action = \"accept\",\n Port = 80,\n },\n new Scaleway.Inputs.InstanceSecurityGroupInboundRuleArgs\n {\n Action = \"accept\",\n Port = 443,\n },\n },\n OutboundRules = new[]\n {\n new Scaleway.Inputs.InstanceSecurityGroupOutboundRuleArgs\n {\n Action = \"drop\",\n IpRange = \"10.20.0.0/24\",\n },\n },\n });\n\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n SecurityGroupId = www.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twww, err := scaleway.NewInstanceSecurityGroup(ctx, \"www\", \u0026scaleway.InstanceSecurityGroupArgs{\n\t\t\tInboundDefaultPolicy: pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"accept\"),\n\t\t\tInboundRules: scaleway.InstanceSecurityGroupInboundRuleArray{\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort: pulumi.Int(22),\n\t\t\t\t\tIp: pulumi.String(\"212.47.225.64\"),\n\t\t\t\t},\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: scaleway.InstanceSecurityGroupOutboundRuleArray{\n\t\t\t\t\u0026scaleway.InstanceSecurityGroupOutboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"drop\"),\n\t\t\t\t\tIpRange: pulumi.String(\"10.20.0.0/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tSecurityGroupId: www.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceSecurityGroup;\nimport com.pulumi.scaleway.InstanceSecurityGroupArgs;\nimport com.pulumi.scaleway.inputs.InstanceSecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.inputs.InstanceSecurityGroupOutboundRuleArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var www = new InstanceSecurityGroup(\"www\", InstanceSecurityGroupArgs.builder()\n .inboundDefaultPolicy(\"drop\")\n .outboundDefaultPolicy(\"accept\")\n .inboundRules( \n InstanceSecurityGroupInboundRuleArgs.builder()\n .action(\"accept\")\n .port(\"22\")\n .ip(\"212.47.225.64\")\n .build(),\n InstanceSecurityGroupInboundRuleArgs.builder()\n .action(\"accept\")\n .port(\"80\")\n .build(),\n InstanceSecurityGroupInboundRuleArgs.builder()\n .action(\"accept\")\n .port(\"443\")\n .build())\n .outboundRules(InstanceSecurityGroupOutboundRuleArgs.builder()\n .action(\"drop\")\n .ipRange(\"10.20.0.0/24\")\n .build())\n .build());\n\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .securityGroupId(www.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n www:\n type: scaleway:InstanceSecurityGroup\n properties:\n inboundDefaultPolicy: drop\n outboundDefaultPolicy: accept\n inboundRules:\n - action: accept\n port: '22'\n ip: 212.47.225.64\n - action: accept\n port: '80'\n - action: accept\n port: '443'\n outboundRules:\n - action: drop\n ipRange: 10.20.0.0/24\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n securityGroupId: ${www.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With user data and cloud-init\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as fs from \"fs\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst web = new scaleway.InstanceServer(\"web\", {\n type: \"DEV1-S\",\n image: \"ubuntu_jammy\",\n userData: {\n foo: \"bar\",\n \"cloud-init\": fs.readFileSync(`${path.module}/cloud-init.yml`, \"utf8\"),\n },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nweb = scaleway.InstanceServer(\"web\",\n type=\"DEV1-S\",\n image=\"ubuntu_jammy\",\n user_data={\n \"foo\": \"bar\",\n \"cloud-init\": (lambda path: open(path).read())(f\"{path['module']}/cloud-init.yml\"),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var web = new Scaleway.InstanceServer(\"web\", new()\n {\n Type = \"DEV1-S\",\n Image = \"ubuntu_jammy\",\n UserData = \n {\n { \"foo\", \"bar\" },\n { \"cloud-init\", File.ReadAllText($\"{path.Module}/cloud-init.yml\") },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc readFileOrPanic(path string) pulumi.StringPtrInput {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\treturn pulumi.String(string(data))\n}\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewInstanceServer(ctx, \"web\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tUserData: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\"cloud-init\": pulumi.String(readFileOrPanic(fmt.Sprintf(\"%v/cloud-init.yml\", path.Module))),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var web = new InstanceServer(\"web\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"ubuntu_jammy\")\n .userData(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"cloud-init\", Files.readString(Paths.get(String.format(\"%s/cloud-init.yml\", path.module()))))\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n web:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: ubuntu_jammy\n userData:\n foo: bar\n cloud-init:\n fn::readFile: ${path.module}/cloud-init.yml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With private network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn01 = new scaleway.VpcPrivateNetwork(\"pn01\", {});\nconst base = new scaleway.InstanceServer(\"base\", {\n image: \"ubuntu_jammy\",\n type: \"DEV1-S\",\n privateNetworks: [{\n pnId: pn01.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn01 = scaleway.VpcPrivateNetwork(\"pn01\")\nbase = scaleway.InstanceServer(\"base\",\n image=\"ubuntu_jammy\",\n type=\"DEV1-S\",\n private_networks=[scaleway.InstanceServerPrivateNetworkArgs(\n pn_id=pn01.id,\n )])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn01 = new Scaleway.VpcPrivateNetwork(\"pn01\");\n\n var @base = new Scaleway.InstanceServer(\"base\", new()\n {\n Image = \"ubuntu_jammy\",\n Type = \"DEV1-S\",\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.InstanceServerPrivateNetworkArgs\n {\n PnId = pn01.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn01, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn01\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"base\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tPrivateNetworks: scaleway.InstanceServerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.InstanceServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: pn01.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerPrivateNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn01 = new VpcPrivateNetwork(\"pn01\");\n\n var base = new InstanceServer(\"base\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .type(\"DEV1-S\")\n .privateNetworks(InstanceServerPrivateNetworkArgs.builder()\n .pnId(pn01.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn01:\n type: scaleway:VpcPrivateNetwork\n base:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n type: DEV1-S\n privateNetworks:\n - pnId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Root volume configuration\n\n### Resized block volume with installed image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst image = new scaleway.InstanceServer(\"image\", {\n image: \"ubuntu_jammy\",\n rootVolume: {\n sizeInGb: 100,\n volumeType: \"b_ssd\",\n },\n type: \"PRO2-XXS\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nimage = scaleway.InstanceServer(\"image\",\n image=\"ubuntu_jammy\",\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n size_in_gb=100,\n volume_type=\"b_ssd\",\n ),\n type=\"PRO2-XXS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image = new Scaleway.InstanceServer(\"image\", new()\n {\n Image = \"ubuntu_jammy\",\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n SizeInGb = 100,\n VolumeType = \"b_ssd\",\n },\n Type = \"PRO2-XXS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewInstanceServer(ctx, \"image\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(100),\n\t\t\t\tVolumeType: pulumi.String(\"b_ssd\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"PRO2-XXS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image = new InstanceServer(\"image\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .sizeInGb(100)\n .volumeType(\"b_ssd\")\n .build())\n .type(\"PRO2-XXS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n rootVolume:\n sizeInGb: 100\n volumeType: b_ssd\n type: PRO2-XXS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### From snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshot = scaleway.getInstanceSnapshot({\n name: \"my_snapshot\",\n});\nconst fromSnapshotInstanceVolume = new scaleway.InstanceVolume(\"fromSnapshotInstanceVolume\", {\n fromSnapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n type: \"b_ssd\",\n});\nconst fromSnapshotInstanceServer = new scaleway.InstanceServer(\"fromSnapshotInstanceServer\", {\n type: \"PRO2-XXS\",\n rootVolume: {\n volumeId: fromSnapshotInstanceVolume.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nsnapshot = scaleway.get_instance_snapshot(name=\"my_snapshot\")\nfrom_snapshot_instance_volume = scaleway.InstanceVolume(\"fromSnapshotInstanceVolume\",\n from_snapshot_id=snapshot.id,\n type=\"b_ssd\")\nfrom_snapshot_instance_server = scaleway.InstanceServer(\"fromSnapshotInstanceServer\",\n type=\"PRO2-XXS\",\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n volume_id=from_snapshot_instance_volume.id,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var snapshot = Scaleway.GetInstanceSnapshot.Invoke(new()\n {\n Name = \"my_snapshot\",\n });\n\n var fromSnapshotInstanceVolume = new Scaleway.InstanceVolume(\"fromSnapshotInstanceVolume\", new()\n {\n FromSnapshotId = snapshot.Apply(getInstanceSnapshotResult =\u003e getInstanceSnapshotResult.Id),\n Type = \"b_ssd\",\n });\n\n var fromSnapshotInstanceServer = new Scaleway.InstanceServer(\"fromSnapshotInstanceServer\", new()\n {\n Type = \"PRO2-XXS\",\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n VolumeId = fromSnapshotInstanceVolume.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := scaleway.LookupInstanceSnapshot(ctx, \u0026scaleway.LookupInstanceSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"my_snapshot\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfromSnapshotInstanceVolume, err := scaleway.NewInstanceVolume(ctx, \"fromSnapshotInstanceVolume\", \u0026scaleway.InstanceVolumeArgs{\n\t\t\tFromSnapshotId: pulumi.String(snapshot.Id),\n\t\t\tType: pulumi.String(\"b_ssd\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"fromSnapshotInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"PRO2-XXS\"),\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tVolumeId: fromSnapshotInstanceVolume.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetInstanceSnapshotArgs;\nimport com.pulumi.scaleway.InstanceVolume;\nimport com.pulumi.scaleway.InstanceVolumeArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var snapshot = ScalewayFunctions.getInstanceSnapshot(GetInstanceSnapshotArgs.builder()\n .name(\"my_snapshot\")\n .build());\n\n var fromSnapshotInstanceVolume = new InstanceVolume(\"fromSnapshotInstanceVolume\", InstanceVolumeArgs.builder()\n .fromSnapshotId(snapshot.applyValue(getInstanceSnapshotResult -\u003e getInstanceSnapshotResult.id()))\n .type(\"b_ssd\")\n .build());\n\n var fromSnapshotInstanceServer = new InstanceServer(\"fromSnapshotInstanceServer\", InstanceServerArgs.builder()\n .type(\"PRO2-XXS\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .volumeId(fromSnapshotInstanceVolume.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fromSnapshotInstanceVolume:\n type: scaleway:InstanceVolume\n properties:\n fromSnapshotId: ${snapshot.id}\n type: b_ssd\n fromSnapshotInstanceServer:\n type: scaleway:InstanceServer\n properties:\n type: PRO2-XXS\n rootVolume:\n volumeId: ${fromSnapshotInstanceVolume.id}\nvariables:\n snapshot:\n fn::invoke:\n Function: scaleway:getInstanceSnapshot\n Arguments:\n name: my_snapshot\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Private Network\n\n\u003e **Important:** Updates to `private_network` will recreate a new private network interface.\n\n- `pn_id` - (Required) The private network ID where to connect.\n- `mac_address` The private NIC MAC address.\n- `status` The private NIC state.\n- `zone` - (Defaults to provider `zone`) The zone in which the server must be created.\n\n\u003e **Important:**\n\n- You can only attach an instance in the same zone as a private network.\n- Instance supports maximum 8 different private networks.\n\n## Import\n\nInstance servers can be imported using the `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/instanceServer:InstanceServer web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "additionalVolumeIds": { "type": "array", @@ -13470,7 +13470,7 @@ } }, "scaleway:index/instanceSnapshot:InstanceSnapshot": { - "description": "Creates and manages Scaleway Compute Snapshots.\nFor more information,\nsee [the documentation](https://www.scaleway.com/en/developers/api/instance/#path-snapshots-list-snapshots).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.InstanceSnapshot(\"main\", {volumeId: \"11111111-1111-1111-1111-111111111111\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.InstanceSnapshot(\"main\", volume_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.InstanceSnapshot(\"main\", new()\n {\n VolumeId = \"11111111-1111-1111-1111-111111111111\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewInstanceSnapshot(ctx, \"main\", \u0026scaleway.InstanceSnapshotArgs{\n\t\t\tVolumeId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceSnapshot;\nimport com.pulumi.scaleway.InstanceSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new InstanceSnapshot(\"main\", InstanceSnapshotArgs.builder()\n .volumeId(\"11111111-1111-1111-1111-111111111111\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:InstanceSnapshot\n properties:\n volumeId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Unified type snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainInstanceVolume = new scaleway.InstanceVolume(\"mainInstanceVolume\", {\n type: \"l_ssd\",\n sizeInGb: 10,\n});\nconst mainInstanceServer = new scaleway.InstanceServer(\"mainInstanceServer\", {\n image: \"ubuntu_jammy\",\n type: \"DEV1-S\",\n rootVolume: {\n sizeInGb: 10,\n volumeType: \"l_ssd\",\n },\n additionalVolumeIds: [mainInstanceVolume.id],\n});\nconst mainInstanceSnapshot = new scaleway.InstanceSnapshot(\"mainInstanceSnapshot\", {\n volumeId: mainInstanceVolume.id,\n type: \"unified\",\n}, {\n dependsOn: [mainInstanceServer],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_instance_volume = scaleway.InstanceVolume(\"mainInstanceVolume\",\n type=\"l_ssd\",\n size_in_gb=10)\nmain_instance_server = scaleway.InstanceServer(\"mainInstanceServer\",\n image=\"ubuntu_jammy\",\n type=\"DEV1-S\",\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n size_in_gb=10,\n volume_type=\"l_ssd\",\n ),\n additional_volume_ids=[main_instance_volume.id])\nmain_instance_snapshot = scaleway.InstanceSnapshot(\"mainInstanceSnapshot\",\n volume_id=main_instance_volume.id,\n type=\"unified\",\n opts=pulumi.ResourceOptions(depends_on=[main_instance_server]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainInstanceVolume = new Scaleway.InstanceVolume(\"mainInstanceVolume\", new()\n {\n Type = \"l_ssd\",\n SizeInGb = 10,\n });\n\n var mainInstanceServer = new Scaleway.InstanceServer(\"mainInstanceServer\", new()\n {\n Image = \"ubuntu_jammy\",\n Type = \"DEV1-S\",\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n SizeInGb = 10,\n VolumeType = \"l_ssd\",\n },\n AdditionalVolumeIds = new[]\n {\n mainInstanceVolume.Id,\n },\n });\n\n var mainInstanceSnapshot = new Scaleway.InstanceSnapshot(\"mainInstanceSnapshot\", new()\n {\n VolumeId = mainInstanceVolume.Id,\n Type = \"unified\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainInstanceServer,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainInstanceVolume, err := scaleway.NewInstanceVolume(ctx, \"mainInstanceVolume\", \u0026scaleway.InstanceVolumeArgs{\n\t\t\tType: pulumi.String(\"l_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainInstanceServer, err := scaleway.NewInstanceServer(ctx, \"mainInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(10),\n\t\t\t\tVolumeType: pulumi.String(\"l_ssd\"),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tmainInstanceVolume.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceSnapshot(ctx, \"mainInstanceSnapshot\", \u0026scaleway.InstanceSnapshotArgs{\n\t\t\tVolumeId: mainInstanceVolume.ID(),\n\t\t\tType: pulumi.String(\"unified\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainInstanceServer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceVolume;\nimport com.pulumi.scaleway.InstanceVolumeArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport com.pulumi.scaleway.InstanceSnapshot;\nimport com.pulumi.scaleway.InstanceSnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainInstanceVolume = new InstanceVolume(\"mainInstanceVolume\", InstanceVolumeArgs.builder()\n .type(\"l_ssd\")\n .sizeInGb(10)\n .build());\n\n var mainInstanceServer = new InstanceServer(\"mainInstanceServer\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .type(\"DEV1-S\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .sizeInGb(10)\n .volumeType(\"l_ssd\")\n .build())\n .additionalVolumeIds(mainInstanceVolume.id())\n .build());\n\n var mainInstanceSnapshot = new InstanceSnapshot(\"mainInstanceSnapshot\", InstanceSnapshotArgs.builder()\n .volumeId(mainInstanceVolume.id())\n .type(\"unified\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mainInstanceServer)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainInstanceVolume:\n type: scaleway:InstanceVolume\n properties:\n type: l_ssd\n sizeInGb: 10\n mainInstanceServer:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n type: DEV1-S\n rootVolume:\n sizeInGb: 10\n volumeType: l_ssd\n additionalVolumeIds:\n - ${mainInstanceVolume.id}\n mainInstanceSnapshot:\n type: scaleway:InstanceSnapshot\n properties:\n volumeId: ${mainInstanceVolume.id}\n type: unified\n options:\n dependson:\n - ${mainInstanceServer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example importing a local qcow2 file\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst qcow = new scaleway.ObjectItem(\"qcow\", {\n bucket: bucket.name,\n key: \"server.qcow2\",\n file: \"myqcow.qcow2\",\n});\nconst snapshot = new scaleway.InstanceSnapshot(\"snapshot\", {\n type: \"unified\",\n \"import\": {\n bucket: qcow.bucket,\n key: qcow.key,\n },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbucket = scaleway.ObjectBucket(\"bucket\")\nqcow = scaleway.ObjectItem(\"qcow\",\n bucket=bucket.name,\n key=\"server.qcow2\",\n file=\"myqcow.qcow2\")\nsnapshot = scaleway.InstanceSnapshot(\"snapshot\",\n type=\"unified\",\n import_=scaleway.InstanceSnapshotImportArgs(\n bucket=qcow.bucket,\n key=qcow.key,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var qcow = new Scaleway.ObjectItem(\"qcow\", new()\n {\n Bucket = bucket.Name,\n Key = \"server.qcow2\",\n File = \"myqcow.qcow2\",\n });\n\n var snapshot = new Scaleway.InstanceSnapshot(\"snapshot\", new()\n {\n Type = \"unified\",\n Import = new Scaleway.Inputs.InstanceSnapshotImportArgs\n {\n Bucket = qcow.Bucket,\n Key = qcow.Key,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqcow, err := scaleway.NewObjectItem(ctx, \"qcow\", \u0026scaleway.ObjectItemArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tKey: pulumi.String(\"server.qcow2\"),\n\t\t\tFile: pulumi.String(\"myqcow.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceSnapshot(ctx, \"snapshot\", \u0026scaleway.InstanceSnapshotArgs{\n\t\t\tType: pulumi.String(\"unified\"),\n\t\t\tImport: \u0026scaleway.InstanceSnapshotImportArgs{\n\t\t\t\tBucket: qcow.Bucket,\n\t\t\t\tKey: qcow.Key,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectItem;\nimport com.pulumi.scaleway.ObjectItemArgs;\nimport com.pulumi.scaleway.InstanceSnapshot;\nimport com.pulumi.scaleway.InstanceSnapshotArgs;\nimport com.pulumi.scaleway.inputs.InstanceSnapshotImportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new ObjectBucket(\"bucket\");\n\n var qcow = new ObjectItem(\"qcow\", ObjectItemArgs.builder()\n .bucket(bucket.name())\n .key(\"server.qcow2\")\n .file(\"myqcow.qcow2\")\n .build());\n\n var snapshot = new InstanceSnapshot(\"snapshot\", InstanceSnapshotArgs.builder()\n .type(\"unified\")\n .import_(InstanceSnapshotImportArgs.builder()\n .bucket(qcow.bucket())\n .key(qcow.key())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: scaleway:ObjectBucket\n qcow:\n type: scaleway:ObjectItem\n properties:\n bucket: ${bucket.name}\n key: server.qcow2\n file: myqcow.qcow2\n snapshot:\n type: scaleway:InstanceSnapshot\n properties:\n type: unified\n import:\n bucket: ${qcow.bucket}\n key: ${qcow.key}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshots can be imported using the `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/instanceSnapshot:InstanceSnapshot main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages Scaleway Compute Snapshots.\nFor more information,\nsee [the documentation](https://www.scaleway.com/en/developers/api/instance/#path-snapshots-list-snapshots).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.InstanceSnapshot(\"main\", {volumeId: \"11111111-1111-1111-1111-111111111111\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.InstanceSnapshot(\"main\", volume_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.InstanceSnapshot(\"main\", new()\n {\n VolumeId = \"11111111-1111-1111-1111-111111111111\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewInstanceSnapshot(ctx, \"main\", \u0026scaleway.InstanceSnapshotArgs{\n\t\t\tVolumeId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceSnapshot;\nimport com.pulumi.scaleway.InstanceSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new InstanceSnapshot(\"main\", InstanceSnapshotArgs.builder()\n .volumeId(\"11111111-1111-1111-1111-111111111111\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:InstanceSnapshot\n properties:\n volumeId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Unified type snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainInstanceVolume = new scaleway.InstanceVolume(\"mainInstanceVolume\", {\n type: \"l_ssd\",\n sizeInGb: 10,\n});\nconst mainInstanceServer = new scaleway.InstanceServer(\"mainInstanceServer\", {\n image: \"ubuntu_jammy\",\n type: \"DEV1-S\",\n rootVolume: {\n sizeInGb: 10,\n volumeType: \"l_ssd\",\n },\n additionalVolumeIds: [mainInstanceVolume.id],\n});\nconst mainInstanceSnapshot = new scaleway.InstanceSnapshot(\"mainInstanceSnapshot\", {\n volumeId: mainInstanceVolume.id,\n type: \"unified\",\n}, {\n dependsOn: [mainInstanceServer],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_instance_volume = scaleway.InstanceVolume(\"mainInstanceVolume\",\n type=\"l_ssd\",\n size_in_gb=10)\nmain_instance_server = scaleway.InstanceServer(\"mainInstanceServer\",\n image=\"ubuntu_jammy\",\n type=\"DEV1-S\",\n root_volume=scaleway.InstanceServerRootVolumeArgs(\n size_in_gb=10,\n volume_type=\"l_ssd\",\n ),\n additional_volume_ids=[main_instance_volume.id])\nmain_instance_snapshot = scaleway.InstanceSnapshot(\"mainInstanceSnapshot\",\n volume_id=main_instance_volume.id,\n type=\"unified\",\n opts = pulumi.ResourceOptions(depends_on=[main_instance_server]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainInstanceVolume = new Scaleway.InstanceVolume(\"mainInstanceVolume\", new()\n {\n Type = \"l_ssd\",\n SizeInGb = 10,\n });\n\n var mainInstanceServer = new Scaleway.InstanceServer(\"mainInstanceServer\", new()\n {\n Image = \"ubuntu_jammy\",\n Type = \"DEV1-S\",\n RootVolume = new Scaleway.Inputs.InstanceServerRootVolumeArgs\n {\n SizeInGb = 10,\n VolumeType = \"l_ssd\",\n },\n AdditionalVolumeIds = new[]\n {\n mainInstanceVolume.Id,\n },\n });\n\n var mainInstanceSnapshot = new Scaleway.InstanceSnapshot(\"mainInstanceSnapshot\", new()\n {\n VolumeId = mainInstanceVolume.Id,\n Type = \"unified\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainInstanceServer,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainInstanceVolume, err := scaleway.NewInstanceVolume(ctx, \"mainInstanceVolume\", \u0026scaleway.InstanceVolumeArgs{\n\t\t\tType: pulumi.String(\"l_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainInstanceServer, err := scaleway.NewInstanceServer(ctx, \"mainInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tRootVolume: \u0026scaleway.InstanceServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(10),\n\t\t\t\tVolumeType: pulumi.String(\"l_ssd\"),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tmainInstanceVolume.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceSnapshot(ctx, \"mainInstanceSnapshot\", \u0026scaleway.InstanceSnapshotArgs{\n\t\t\tVolumeId: mainInstanceVolume.ID(),\n\t\t\tType: pulumi.String(\"unified\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainInstanceServer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.InstanceVolume;\nimport com.pulumi.scaleway.InstanceVolumeArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerRootVolumeArgs;\nimport com.pulumi.scaleway.InstanceSnapshot;\nimport com.pulumi.scaleway.InstanceSnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainInstanceVolume = new InstanceVolume(\"mainInstanceVolume\", InstanceVolumeArgs.builder()\n .type(\"l_ssd\")\n .sizeInGb(10)\n .build());\n\n var mainInstanceServer = new InstanceServer(\"mainInstanceServer\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .type(\"DEV1-S\")\n .rootVolume(InstanceServerRootVolumeArgs.builder()\n .sizeInGb(10)\n .volumeType(\"l_ssd\")\n .build())\n .additionalVolumeIds(mainInstanceVolume.id())\n .build());\n\n var mainInstanceSnapshot = new InstanceSnapshot(\"mainInstanceSnapshot\", InstanceSnapshotArgs.builder()\n .volumeId(mainInstanceVolume.id())\n .type(\"unified\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mainInstanceServer)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainInstanceVolume:\n type: scaleway:InstanceVolume\n properties:\n type: l_ssd\n sizeInGb: 10\n mainInstanceServer:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n type: DEV1-S\n rootVolume:\n sizeInGb: 10\n volumeType: l_ssd\n additionalVolumeIds:\n - ${mainInstanceVolume.id}\n mainInstanceSnapshot:\n type: scaleway:InstanceSnapshot\n properties:\n volumeId: ${mainInstanceVolume.id}\n type: unified\n options:\n dependson:\n - ${mainInstanceServer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example importing a local qcow2 file\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst qcow = new scaleway.ObjectItem(\"qcow\", {\n bucket: bucket.name,\n key: \"server.qcow2\",\n file: \"myqcow.qcow2\",\n});\nconst snapshot = new scaleway.InstanceSnapshot(\"snapshot\", {\n type: \"unified\",\n \"import\": {\n bucket: qcow.bucket,\n key: qcow.key,\n },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbucket = scaleway.ObjectBucket(\"bucket\")\nqcow = scaleway.ObjectItem(\"qcow\",\n bucket=bucket.name,\n key=\"server.qcow2\",\n file=\"myqcow.qcow2\")\nsnapshot = scaleway.InstanceSnapshot(\"snapshot\",\n type=\"unified\",\n import_=scaleway.InstanceSnapshotImportArgs(\n bucket=qcow.bucket,\n key=qcow.key,\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var qcow = new Scaleway.ObjectItem(\"qcow\", new()\n {\n Bucket = bucket.Name,\n Key = \"server.qcow2\",\n File = \"myqcow.qcow2\",\n });\n\n var snapshot = new Scaleway.InstanceSnapshot(\"snapshot\", new()\n {\n Type = \"unified\",\n Import = new Scaleway.Inputs.InstanceSnapshotImportArgs\n {\n Bucket = qcow.Bucket,\n Key = qcow.Key,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqcow, err := scaleway.NewObjectItem(ctx, \"qcow\", \u0026scaleway.ObjectItemArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tKey: pulumi.String(\"server.qcow2\"),\n\t\t\tFile: pulumi.String(\"myqcow.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewInstanceSnapshot(ctx, \"snapshot\", \u0026scaleway.InstanceSnapshotArgs{\n\t\t\tType: pulumi.String(\"unified\"),\n\t\t\tImport: \u0026scaleway.InstanceSnapshotImportArgs{\n\t\t\t\tBucket: qcow.Bucket,\n\t\t\t\tKey: qcow.Key,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectItem;\nimport com.pulumi.scaleway.ObjectItemArgs;\nimport com.pulumi.scaleway.InstanceSnapshot;\nimport com.pulumi.scaleway.InstanceSnapshotArgs;\nimport com.pulumi.scaleway.inputs.InstanceSnapshotImportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new ObjectBucket(\"bucket\");\n\n var qcow = new ObjectItem(\"qcow\", ObjectItemArgs.builder()\n .bucket(bucket.name())\n .key(\"server.qcow2\")\n .file(\"myqcow.qcow2\")\n .build());\n\n var snapshot = new InstanceSnapshot(\"snapshot\", InstanceSnapshotArgs.builder()\n .type(\"unified\")\n .import_(InstanceSnapshotImportArgs.builder()\n .bucket(qcow.bucket())\n .key(qcow.key())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: scaleway:ObjectBucket\n qcow:\n type: scaleway:ObjectItem\n properties:\n bucket: ${bucket.name}\n key: server.qcow2\n file: myqcow.qcow2\n snapshot:\n type: scaleway:InstanceSnapshot\n properties:\n type: unified\n import:\n bucket: ${qcow.bucket}\n key: ${qcow.key}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshots can be imported using the `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/instanceSnapshot:InstanceSnapshot main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "createdAt": { "type": "string", @@ -14888,7 +14888,7 @@ } }, "scaleway:index/kubernetesCluster:KubernetesCluster": { - "description": "Creates and manages Scaleway Kubernetes clusters. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/kubernetes/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n version: \"1.29.1\",\n cni: \"cilium\",\n privateNetworkId: pn.id,\n deleteAdditionalResources: false,\n});\nconst pool = new scaleway.KubernetesNodePool(\"pool\", {\n clusterId: cluster.id,\n nodeType: \"DEV1-M\",\n size: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\ncluster = scaleway.KubernetesCluster(\"cluster\",\n version=\"1.29.1\",\n cni=\"cilium\",\n private_network_id=pn.id,\n delete_additional_resources=False)\npool = scaleway.KubernetesNodePool(\"pool\",\n cluster_id=cluster.id,\n node_type=\"DEV1-M\",\n size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Version = \"1.29.1\",\n Cni = \"cilium\",\n PrivateNetworkId = pn.Id,\n DeleteAdditionalResources = false,\n });\n\n var pool = new Scaleway.KubernetesNodePool(\"pool\", new()\n {\n ClusterId = cluster.Id,\n NodeType = \"DEV1-M\",\n Size = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tVersion: pulumi.String(\"1.29.1\"),\n\t\t\tCni: pulumi.String(\"cilium\"),\n\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"pool\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tNodeType: pulumi.String(\"DEV1-M\"),\n\t\t\tSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .version(\"1.29.1\")\n .cni(\"cilium\")\n .privateNetworkId(pn.id())\n .deleteAdditionalResources(false)\n .build());\n\n var pool = new KubernetesNodePool(\"pool\", KubernetesNodePoolArgs.builder()\n .clusterId(cluster.id())\n .nodeType(\"DEV1-M\")\n .size(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n version: 1.29.1\n cni: cilium\n privateNetworkId: ${pn.id}\n deleteAdditionalResources: false\n pool:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${cluster.id}\n nodeType: DEV1-M\n size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multicloud\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n type: \"multicloud\",\n version: \"1.29.1\",\n cni: \"kilo\",\n deleteAdditionalResources: false,\n});\nconst pool = new scaleway.KubernetesNodePool(\"pool\", {\n clusterId: cluster.id,\n nodeType: \"external\",\n size: 0,\n minSize: 0,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncluster = scaleway.KubernetesCluster(\"cluster\",\n type=\"multicloud\",\n version=\"1.29.1\",\n cni=\"kilo\",\n delete_additional_resources=False)\npool = scaleway.KubernetesNodePool(\"pool\",\n cluster_id=cluster.id,\n node_type=\"external\",\n size=0,\n min_size=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Type = \"multicloud\",\n Version = \"1.29.1\",\n Cni = \"kilo\",\n DeleteAdditionalResources = false,\n });\n\n var pool = new Scaleway.KubernetesNodePool(\"pool\", new()\n {\n ClusterId = cluster.Id,\n NodeType = \"external\",\n Size = 0,\n MinSize = 0,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tType: pulumi.String(\"multicloud\"),\n\t\t\tVersion: pulumi.String(\"1.29.1\"),\n\t\t\tCni: pulumi.String(\"kilo\"),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"pool\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tNodeType: pulumi.String(\"external\"),\n\t\t\tSize: pulumi.Int(0),\n\t\t\tMinSize: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .type(\"multicloud\")\n .version(\"1.29.1\")\n .cni(\"kilo\")\n .deleteAdditionalResources(false)\n .build());\n\n var pool = new KubernetesNodePool(\"pool\", KubernetesNodePoolArgs.builder()\n .clusterId(cluster.id())\n .nodeType(\"external\")\n .size(0)\n .minSize(0)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n type: multicloud\n version: 1.29.1\n cni: kilo\n deleteAdditionalResources: false\n pool:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${cluster.id}\n nodeType: external\n size: 0\n minSize: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to this guide.\n\n### With additional configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n description: \"cluster made in terraform\",\n version: \"1.29.1\",\n cni: \"calico\",\n tags: [\"terraform\"],\n privateNetworkId: pn.id,\n deleteAdditionalResources: false,\n autoscalerConfig: {\n disableScaleDown: false,\n scaleDownDelayAfterAdd: \"5m\",\n estimator: \"binpacking\",\n expander: \"random\",\n ignoreDaemonsetsUtilization: true,\n balanceSimilarNodeGroups: true,\n expendablePodsPriorityCutoff: -5,\n },\n});\nconst pool = new scaleway.KubernetesNodePool(\"pool\", {\n clusterId: cluster.id,\n nodeType: \"DEV1-M\",\n size: 3,\n autoscaling: true,\n autohealing: true,\n minSize: 1,\n maxSize: 5,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\ncluster = scaleway.KubernetesCluster(\"cluster\",\n description=\"cluster made in terraform\",\n version=\"1.29.1\",\n cni=\"calico\",\n tags=[\"terraform\"],\n private_network_id=pn.id,\n delete_additional_resources=False,\n autoscaler_config=scaleway.KubernetesClusterAutoscalerConfigArgs(\n disable_scale_down=False,\n scale_down_delay_after_add=\"5m\",\n estimator=\"binpacking\",\n expander=\"random\",\n ignore_daemonsets_utilization=True,\n balance_similar_node_groups=True,\n expendable_pods_priority_cutoff=-5,\n ))\npool = scaleway.KubernetesNodePool(\"pool\",\n cluster_id=cluster.id,\n node_type=\"DEV1-M\",\n size=3,\n autoscaling=True,\n autohealing=True,\n min_size=1,\n max_size=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Description = \"cluster made in terraform\",\n Version = \"1.29.1\",\n Cni = \"calico\",\n Tags = new[]\n {\n \"terraform\",\n },\n PrivateNetworkId = pn.Id,\n DeleteAdditionalResources = false,\n AutoscalerConfig = new Scaleway.Inputs.KubernetesClusterAutoscalerConfigArgs\n {\n DisableScaleDown = false,\n ScaleDownDelayAfterAdd = \"5m\",\n Estimator = \"binpacking\",\n Expander = \"random\",\n IgnoreDaemonsetsUtilization = true,\n BalanceSimilarNodeGroups = true,\n ExpendablePodsPriorityCutoff = -5,\n },\n });\n\n var pool = new Scaleway.KubernetesNodePool(\"pool\", new()\n {\n ClusterId = cluster.Id,\n NodeType = \"DEV1-M\",\n Size = 3,\n Autoscaling = true,\n Autohealing = true,\n MinSize = 1,\n MaxSize = 5,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tDescription: pulumi.String(\"cluster made in terraform\"),\n\t\t\tVersion: pulumi.String(\"1.29.1\"),\n\t\t\tCni: pulumi.String(\"calico\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t\tAutoscalerConfig: \u0026scaleway.KubernetesClusterAutoscalerConfigArgs{\n\t\t\t\tDisableScaleDown: pulumi.Bool(false),\n\t\t\t\tScaleDownDelayAfterAdd: pulumi.String(\"5m\"),\n\t\t\t\tEstimator: pulumi.String(\"binpacking\"),\n\t\t\t\tExpander: pulumi.String(\"random\"),\n\t\t\t\tIgnoreDaemonsetsUtilization: pulumi.Bool(true),\n\t\t\t\tBalanceSimilarNodeGroups: pulumi.Bool(true),\n\t\t\t\tExpendablePodsPriorityCutoff: -5,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"pool\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tNodeType: pulumi.String(\"DEV1-M\"),\n\t\t\tSize: pulumi.Int(3),\n\t\t\tAutoscaling: pulumi.Bool(true),\n\t\t\tAutohealing: pulumi.Bool(true),\n\t\t\tMinSize: pulumi.Int(1),\n\t\t\tMaxSize: pulumi.Int(5),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.inputs.KubernetesClusterAutoscalerConfigArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .description(\"cluster made in terraform\")\n .version(\"1.29.1\")\n .cni(\"calico\")\n .tags(\"terraform\")\n .privateNetworkId(pn.id())\n .deleteAdditionalResources(false)\n .autoscalerConfig(KubernetesClusterAutoscalerConfigArgs.builder()\n .disableScaleDown(false)\n .scaleDownDelayAfterAdd(\"5m\")\n .estimator(\"binpacking\")\n .expander(\"random\")\n .ignoreDaemonsetsUtilization(true)\n .balanceSimilarNodeGroups(true)\n .expendablePodsPriorityCutoff(\"TODO: GenUnaryOpExpression\")\n .build())\n .build());\n\n var pool = new KubernetesNodePool(\"pool\", KubernetesNodePoolArgs.builder()\n .clusterId(cluster.id())\n .nodeType(\"DEV1-M\")\n .size(3)\n .autoscaling(true)\n .autohealing(true)\n .minSize(1)\n .maxSize(5)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n description: cluster made in terraform\n version: 1.29.1\n cni: calico\n tags:\n - terraform\n privateNetworkId: ${pn.id}\n deleteAdditionalResources: false\n autoscalerConfig:\n disableScaleDown: false\n scaleDownDelayAfterAdd: 5m\n estimator: binpacking\n expander: random\n ignoreDaemonsetsUtilization: true\n balanceSimilarNodeGroups: true\n expendablePodsPriorityCutoff: -5\n pool:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${cluster.id}\n nodeType: DEV1-M\n size: 3\n autoscaling: true\n autohealing: true\n minSize: 1\n maxSize: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Deprecation of default_pool\n\n`default_pool` is deprecated in favour the `scaleway.KubernetesNodePool` resource. Here is a migration example.\n\nBefore:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n cni: cilium\n defaultPool:\n - nodeType: DEV1-M\n size: 1\n version: 1.18.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nAfter:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n version: \"1.18.0\",\n cni: \"cilium\",\n});\nconst _default = new scaleway.KubernetesNodePool(\"default\", {\n clusterId: scaleway_k8s_cluster.jack.id,\n nodeType: \"DEV1-M\",\n size: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncluster = scaleway.KubernetesCluster(\"cluster\",\n version=\"1.18.0\",\n cni=\"cilium\")\ndefault = scaleway.KubernetesNodePool(\"default\",\n cluster_id=scaleway_k8s_cluster[\"jack\"][\"id\"],\n node_type=\"DEV1-M\",\n size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Version = \"1.18.0\",\n Cni = \"cilium\",\n });\n\n var @default = new Scaleway.KubernetesNodePool(\"default\", new()\n {\n ClusterId = scaleway_k8s_cluster.Jack.Id,\n NodeType = \"DEV1-M\",\n Size = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tVersion: pulumi.String(\"1.18.0\"),\n\t\t\tCni: pulumi.String(\"cilium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"default\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: pulumi.Any(scaleway_k8s_cluster.Jack.Id),\n\t\t\tNodeType: pulumi.String(\"DEV1-M\"),\n\t\t\tSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .version(\"1.18.0\")\n .cni(\"cilium\")\n .build());\n\n var default_ = new KubernetesNodePool(\"default\", KubernetesNodePoolArgs.builder()\n .clusterId(scaleway_k8s_cluster.jack().id())\n .nodeType(\"DEV1-M\")\n .size(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n version: 1.18.0\n cni: cilium\n default:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${scaleway_k8s_cluster.jack.id}\n nodeType: DEV1-M\n size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOnce you have moved all the `default_pool` into their own object, you will need to import them. If your pool had the ID 11111111-1111-1111-1111-111111111111 in the `fr-par` region, you can import it by typing:\n\n```bash\n$ terraform import scaleway_k8s_pool.default fr-par/11111111-1111-1111-1111-111111111111\n```\n\nThen you will only need to type `pulumi up` to have a smooth migration.\n\n## Import\n\nKubernetes clusters can be imported using the `{region}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/kubernetesCluster:KubernetesCluster mycluster fr-par/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages Scaleway Kubernetes clusters. For more information, see [the documentation](https://www.scaleway.com/en/developers/api/kubernetes/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n version: \"1.29.1\",\n cni: \"cilium\",\n privateNetworkId: pn.id,\n deleteAdditionalResources: false,\n});\nconst pool = new scaleway.KubernetesNodePool(\"pool\", {\n clusterId: cluster.id,\n nodeType: \"DEV1-M\",\n size: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\ncluster = scaleway.KubernetesCluster(\"cluster\",\n version=\"1.29.1\",\n cni=\"cilium\",\n private_network_id=pn.id,\n delete_additional_resources=False)\npool = scaleway.KubernetesNodePool(\"pool\",\n cluster_id=cluster.id,\n node_type=\"DEV1-M\",\n size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Version = \"1.29.1\",\n Cni = \"cilium\",\n PrivateNetworkId = pn.Id,\n DeleteAdditionalResources = false,\n });\n\n var pool = new Scaleway.KubernetesNodePool(\"pool\", new()\n {\n ClusterId = cluster.Id,\n NodeType = \"DEV1-M\",\n Size = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tVersion: pulumi.String(\"1.29.1\"),\n\t\t\tCni: pulumi.String(\"cilium\"),\n\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"pool\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tNodeType: pulumi.String(\"DEV1-M\"),\n\t\t\tSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .version(\"1.29.1\")\n .cni(\"cilium\")\n .privateNetworkId(pn.id())\n .deleteAdditionalResources(false)\n .build());\n\n var pool = new KubernetesNodePool(\"pool\", KubernetesNodePoolArgs.builder()\n .clusterId(cluster.id())\n .nodeType(\"DEV1-M\")\n .size(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n version: 1.29.1\n cni: cilium\n privateNetworkId: ${pn.id}\n deleteAdditionalResources: false\n pool:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${cluster.id}\n nodeType: DEV1-M\n size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multicloud\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n type: \"multicloud\",\n version: \"1.29.1\",\n cni: \"kilo\",\n deleteAdditionalResources: false,\n});\nconst pool = new scaleway.KubernetesNodePool(\"pool\", {\n clusterId: cluster.id,\n nodeType: \"external\",\n size: 0,\n minSize: 0,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncluster = scaleway.KubernetesCluster(\"cluster\",\n type=\"multicloud\",\n version=\"1.29.1\",\n cni=\"kilo\",\n delete_additional_resources=False)\npool = scaleway.KubernetesNodePool(\"pool\",\n cluster_id=cluster.id,\n node_type=\"external\",\n size=0,\n min_size=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Type = \"multicloud\",\n Version = \"1.29.1\",\n Cni = \"kilo\",\n DeleteAdditionalResources = false,\n });\n\n var pool = new Scaleway.KubernetesNodePool(\"pool\", new()\n {\n ClusterId = cluster.Id,\n NodeType = \"external\",\n Size = 0,\n MinSize = 0,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tType: pulumi.String(\"multicloud\"),\n\t\t\tVersion: pulumi.String(\"1.29.1\"),\n\t\t\tCni: pulumi.String(\"kilo\"),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"pool\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tNodeType: pulumi.String(\"external\"),\n\t\t\tSize: pulumi.Int(0),\n\t\t\tMinSize: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .type(\"multicloud\")\n .version(\"1.29.1\")\n .cni(\"kilo\")\n .deleteAdditionalResources(false)\n .build());\n\n var pool = new KubernetesNodePool(\"pool\", KubernetesNodePoolArgs.builder()\n .clusterId(cluster.id())\n .nodeType(\"external\")\n .size(0)\n .minSize(0)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n type: multicloud\n version: 1.29.1\n cni: kilo\n deleteAdditionalResources: false\n pool:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${cluster.id}\n nodeType: external\n size: 0\n minSize: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to this guide.\n\n### With additional configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n description: \"cluster made in terraform\",\n version: \"1.29.1\",\n cni: \"calico\",\n tags: [\"terraform\"],\n privateNetworkId: pn.id,\n deleteAdditionalResources: false,\n autoscalerConfig: {\n disableScaleDown: false,\n scaleDownDelayAfterAdd: \"5m\",\n estimator: \"binpacking\",\n expander: \"random\",\n ignoreDaemonsetsUtilization: true,\n balanceSimilarNodeGroups: true,\n expendablePodsPriorityCutoff: -5,\n },\n});\nconst pool = new scaleway.KubernetesNodePool(\"pool\", {\n clusterId: cluster.id,\n nodeType: \"DEV1-M\",\n size: 3,\n autoscaling: true,\n autohealing: true,\n minSize: 1,\n maxSize: 5,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\ncluster = scaleway.KubernetesCluster(\"cluster\",\n description=\"cluster made in terraform\",\n version=\"1.29.1\",\n cni=\"calico\",\n tags=[\"terraform\"],\n private_network_id=pn.id,\n delete_additional_resources=False,\n autoscaler_config=scaleway.KubernetesClusterAutoscalerConfigArgs(\n disable_scale_down=False,\n scale_down_delay_after_add=\"5m\",\n estimator=\"binpacking\",\n expander=\"random\",\n ignore_daemonsets_utilization=True,\n balance_similar_node_groups=True,\n expendable_pods_priority_cutoff=-5,\n ))\npool = scaleway.KubernetesNodePool(\"pool\",\n cluster_id=cluster.id,\n node_type=\"DEV1-M\",\n size=3,\n autoscaling=True,\n autohealing=True,\n min_size=1,\n max_size=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Description = \"cluster made in terraform\",\n Version = \"1.29.1\",\n Cni = \"calico\",\n Tags = new[]\n {\n \"terraform\",\n },\n PrivateNetworkId = pn.Id,\n DeleteAdditionalResources = false,\n AutoscalerConfig = new Scaleway.Inputs.KubernetesClusterAutoscalerConfigArgs\n {\n DisableScaleDown = false,\n ScaleDownDelayAfterAdd = \"5m\",\n Estimator = \"binpacking\",\n Expander = \"random\",\n IgnoreDaemonsetsUtilization = true,\n BalanceSimilarNodeGroups = true,\n ExpendablePodsPriorityCutoff = -5,\n },\n });\n\n var pool = new Scaleway.KubernetesNodePool(\"pool\", new()\n {\n ClusterId = cluster.Id,\n NodeType = \"DEV1-M\",\n Size = 3,\n Autoscaling = true,\n Autohealing = true,\n MinSize = 1,\n MaxSize = 5,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tDescription: pulumi.String(\"cluster made in terraform\"),\n\t\t\tVersion: pulumi.String(\"1.29.1\"),\n\t\t\tCni: pulumi.String(\"calico\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t\tAutoscalerConfig: \u0026scaleway.KubernetesClusterAutoscalerConfigArgs{\n\t\t\t\tDisableScaleDown: pulumi.Bool(false),\n\t\t\t\tScaleDownDelayAfterAdd: pulumi.String(\"5m\"),\n\t\t\t\tEstimator: pulumi.String(\"binpacking\"),\n\t\t\t\tExpander: pulumi.String(\"random\"),\n\t\t\t\tIgnoreDaemonsetsUtilization: pulumi.Bool(true),\n\t\t\t\tBalanceSimilarNodeGroups: pulumi.Bool(true),\n\t\t\t\tExpendablePodsPriorityCutoff: int(-5),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"pool\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tNodeType: pulumi.String(\"DEV1-M\"),\n\t\t\tSize: pulumi.Int(3),\n\t\t\tAutoscaling: pulumi.Bool(true),\n\t\t\tAutohealing: pulumi.Bool(true),\n\t\t\tMinSize: pulumi.Int(1),\n\t\t\tMaxSize: pulumi.Int(5),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.inputs.KubernetesClusterAutoscalerConfigArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .description(\"cluster made in terraform\")\n .version(\"1.29.1\")\n .cni(\"calico\")\n .tags(\"terraform\")\n .privateNetworkId(pn.id())\n .deleteAdditionalResources(false)\n .autoscalerConfig(KubernetesClusterAutoscalerConfigArgs.builder()\n .disableScaleDown(false)\n .scaleDownDelayAfterAdd(\"5m\")\n .estimator(\"binpacking\")\n .expander(\"random\")\n .ignoreDaemonsetsUtilization(true)\n .balanceSimilarNodeGroups(true)\n .expendablePodsPriorityCutoff(\"TODO: GenUnaryOpExpression\")\n .build())\n .build());\n\n var pool = new KubernetesNodePool(\"pool\", KubernetesNodePoolArgs.builder()\n .clusterId(cluster.id())\n .nodeType(\"DEV1-M\")\n .size(3)\n .autoscaling(true)\n .autohealing(true)\n .minSize(1)\n .maxSize(5)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n description: cluster made in terraform\n version: 1.29.1\n cni: calico\n tags:\n - terraform\n privateNetworkId: ${pn.id}\n deleteAdditionalResources: false\n autoscalerConfig:\n disableScaleDown: false\n scaleDownDelayAfterAdd: 5m\n estimator: binpacking\n expander: random\n ignoreDaemonsetsUtilization: true\n balanceSimilarNodeGroups: true\n expendablePodsPriorityCutoff: -5\n pool:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${cluster.id}\n nodeType: DEV1-M\n size: 3\n autoscaling: true\n autohealing: true\n minSize: 1\n maxSize: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Deprecation of default_pool\n\n`default_pool` is deprecated in favour the `scaleway.KubernetesNodePool` resource. Here is a migration example.\n\nBefore:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n cni: cilium\n defaultPool:\n - nodeType: DEV1-M\n size: 1\n version: 1.18.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nAfter:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cluster = new scaleway.KubernetesCluster(\"cluster\", {\n version: \"1.18.0\",\n cni: \"cilium\",\n});\nconst _default = new scaleway.KubernetesNodePool(\"default\", {\n clusterId: scaleway_k8s_cluster.jack.id,\n nodeType: \"DEV1-M\",\n size: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncluster = scaleway.KubernetesCluster(\"cluster\",\n version=\"1.18.0\",\n cni=\"cilium\")\ndefault = scaleway.KubernetesNodePool(\"default\",\n cluster_id=scaleway_k8s_cluster[\"jack\"][\"id\"],\n node_type=\"DEV1-M\",\n size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Scaleway.KubernetesCluster(\"cluster\", new()\n {\n Version = \"1.18.0\",\n Cni = \"cilium\",\n });\n\n var @default = new Scaleway.KubernetesNodePool(\"default\", new()\n {\n ClusterId = scaleway_k8s_cluster.Jack.Id,\n NodeType = \"DEV1-M\",\n Size = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewKubernetesCluster(ctx, \"cluster\", \u0026scaleway.KubernetesClusterArgs{\n\t\t\tVersion: pulumi.String(\"1.18.0\"),\n\t\t\tCni: pulumi.String(\"cilium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewKubernetesNodePool(ctx, \"default\", \u0026scaleway.KubernetesNodePoolArgs{\n\t\t\tClusterId: pulumi.Any(scaleway_k8s_cluster.Jack.Id),\n\t\t\tNodeType: pulumi.String(\"DEV1-M\"),\n\t\t\tSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.KubernetesCluster;\nimport com.pulumi.scaleway.KubernetesClusterArgs;\nimport com.pulumi.scaleway.KubernetesNodePool;\nimport com.pulumi.scaleway.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new KubernetesCluster(\"cluster\", KubernetesClusterArgs.builder()\n .version(\"1.18.0\")\n .cni(\"cilium\")\n .build());\n\n var default_ = new KubernetesNodePool(\"default\", KubernetesNodePoolArgs.builder()\n .clusterId(scaleway_k8s_cluster.jack().id())\n .nodeType(\"DEV1-M\")\n .size(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: scaleway:KubernetesCluster\n properties:\n version: 1.18.0\n cni: cilium\n default:\n type: scaleway:KubernetesNodePool\n properties:\n clusterId: ${scaleway_k8s_cluster.jack.id}\n nodeType: DEV1-M\n size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOnce you have moved all the `default_pool` into their own object, you will need to import them. If your pool had the ID 11111111-1111-1111-1111-111111111111 in the `fr-par` region, you can import it by typing:\n\n```bash\n$ terraform import scaleway_k8s_pool.default fr-par/11111111-1111-1111-1111-111111111111\n```\n\nThen you will only need to type `pulumi up` to have a smooth migration.\n\n## Import\n\nKubernetes clusters can be imported using the `{region}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/kubernetesCluster:KubernetesCluster mycluster fr-par/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "admissionPlugins": { "type": "array", @@ -15588,7 +15588,7 @@ } }, "scaleway:index/loadbalancer:Loadbalancer": { - "description": "Creates and manages Scaleway Load Balancers.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/network/load-balancer/concepts/#load-balancers) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-list-load-balancers).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.LoadbalancerIp(\"main\", {zone: \"fr-par-1\"});\nconst base = new scaleway.Loadbalancer(\"base\", {\n ipIds: [main.id],\n zone: main.zone,\n type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.LoadbalancerIp(\"main\", zone=\"fr-par-1\")\nbase = scaleway.Loadbalancer(\"base\",\n ip_ids=[main.id],\n zone=main.zone,\n type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.LoadbalancerIp(\"main\", new()\n {\n Zone = \"fr-par-1\",\n });\n\n var @base = new Scaleway.Loadbalancer(\"base\", new()\n {\n IpIds = new[]\n {\n main.Id,\n },\n Zone = main.Zone,\n Type = \"LB-S\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := scaleway.NewLoadbalancerIp(ctx, \"main\", \u0026scaleway.LoadbalancerIpArgs{\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"base\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tmain.ID(),\n\t\t\t},\n\t\t\tZone: main.Zone,\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.LoadbalancerIpArgs;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new LoadbalancerIp(\"main\", LoadbalancerIpArgs.builder()\n .zone(\"fr-par-1\")\n .build());\n\n var base = new Loadbalancer(\"base\", LoadbalancerArgs.builder()\n .ipIds(main.id())\n .zone(main.zone())\n .type(\"LB-S\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:LoadbalancerIp\n properties:\n zone: fr-par-1\n base:\n type: scaleway:Loadbalancer\n properties:\n ipIds:\n - ${main.id}\n zone: ${main.zone}\n type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private LB\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst base = new scaleway.Loadbalancer(\"base\", {\n assignFlexibleIp: false,\n type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbase = scaleway.Loadbalancer(\"base\",\n assign_flexible_ip=False,\n type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @base = new Scaleway.Loadbalancer(\"base\", new()\n {\n AssignFlexibleIp = false,\n Type = \"LB-S\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewLoadbalancer(ctx, \"base\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tAssignFlexibleIp: pulumi.Bool(false),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var base = new Loadbalancer(\"base\", LoadbalancerArgs.builder()\n .assignFlexibleIp(false)\n .type(\"LB-S\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n base:\n type: scaleway:Loadbalancer\n properties:\n assignFlexibleIp: false\n type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst v4 = new scaleway.LoadbalancerIp(\"v4\", {});\nconst v6 = new scaleway.LoadbalancerIp(\"v6\", {isIpv6: true});\nconst main = new scaleway.Loadbalancer(\"main\", {\n ipIds: [\n v4.id,\n v6.id,\n ],\n type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nv4 = scaleway.LoadbalancerIp(\"v4\")\nv6 = scaleway.LoadbalancerIp(\"v6\", is_ipv6=True)\nmain = scaleway.Loadbalancer(\"main\",\n ip_ids=[\n v4.id,\n v6.id,\n ],\n type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var v4 = new Scaleway.LoadbalancerIp(\"v4\");\n\n var v6 = new Scaleway.LoadbalancerIp(\"v6\", new()\n {\n IsIpv6 = true,\n });\n\n var main = new Scaleway.Loadbalancer(\"main\", new()\n {\n IpIds = new[]\n {\n v4.Id,\n v6.Id,\n },\n Type = \"LB-S\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tv4, err := scaleway.NewLoadbalancerIp(ctx, \"v4\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv6, err := scaleway.NewLoadbalancerIp(ctx, \"v6\", \u0026scaleway.LoadbalancerIpArgs{\n\t\t\tIsIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"main\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tv4.ID(),\n\t\t\t\tv6.ID(),\n\t\t\t},\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.LoadbalancerIpArgs;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var v4 = new LoadbalancerIp(\"v4\");\n\n var v6 = new LoadbalancerIp(\"v6\", LoadbalancerIpArgs.builder()\n .isIpv6(true)\n .build());\n\n var main = new Loadbalancer(\"main\", LoadbalancerArgs.builder()\n .ipIds( \n v4.id(),\n v6.id())\n .type(\"LB-S\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n v4:\n type: scaleway:LoadbalancerIp\n v6:\n type: scaleway:LoadbalancerIp\n properties:\n isIpv6: true\n main:\n type: scaleway:Loadbalancer\n properties:\n ipIds:\n - ${v4.id}\n - ${v6.id}\n type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple configurations\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## IP for Public Gateway\nconst mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\", {});\n//## Scaleway Private Network\nconst mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\", {});\n//## VPC Public Gateway Network\nconst mainVpcPublicGateway = new scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", {\n type: \"VPC-GW-S\",\n ipId: mainVpcPublicGatewayIp.id,\n});\n//## VPC Public Gateway Network DHCP config\nconst mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", {subnet: \"10.0.0.0/24\"});\n//## VPC Gateway Network\nconst mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", {\n gatewayId: mainVpcPublicGateway.id,\n privateNetworkId: mainVpcPrivateNetwork.id,\n dhcpId: mainVpcPublicGatewayDhcp.id,\n cleanupDhcp: true,\n enableMasquerade: true,\n});\n//## Scaleway Instance\nconst mainInstanceServer = new scaleway.InstanceServer(\"mainInstanceServer\", {\n type: \"DEV1-S\",\n image: \"debian_bullseye\",\n enableIpv6: false,\n privateNetworks: [{\n pnId: mainVpcPrivateNetwork.id,\n }],\n});\n//## IP for LB IP\nconst mainLoadbalancerIp = new scaleway.LoadbalancerIp(\"mainLoadbalancerIp\", {});\n//## Scaleway Private Network\nconst mainIndex_vpcPrivateNetworkVpcPrivateNetwork = new scaleway.VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\", {});\n//## Scaleway Load Balancer\nconst mainLoadbalancer = new scaleway.Loadbalancer(\"mainLoadbalancer\", {\n ipId: mainLoadbalancerIp.id,\n type: \"LB-S\",\n privateNetworks: [{\n privateNetworkId: mainVpcPrivateNetwork.id,\n dhcpConfig: true,\n }],\n}, {\n dependsOn: [mainVpcPublicGateway],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### IP for Public Gateway\nmain_vpc_public_gateway_ip = scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\")\n### Scaleway Private Network\nmain_vpc_private_network = scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\")\n### VPC Public Gateway Network\nmain_vpc_public_gateway = scaleway.VpcPublicGateway(\"mainVpcPublicGateway\",\n type=\"VPC-GW-S\",\n ip_id=main_vpc_public_gateway_ip.id)\n### VPC Public Gateway Network DHCP config\nmain_vpc_public_gateway_dhcp = scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", subnet=\"10.0.0.0/24\")\n### VPC Gateway Network\nmain_vpc_gateway_network = scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\",\n gateway_id=main_vpc_public_gateway.id,\n private_network_id=main_vpc_private_network.id,\n dhcp_id=main_vpc_public_gateway_dhcp.id,\n cleanup_dhcp=True,\n enable_masquerade=True)\n### Scaleway Instance\nmain_instance_server = scaleway.InstanceServer(\"mainInstanceServer\",\n type=\"DEV1-S\",\n image=\"debian_bullseye\",\n enable_ipv6=False,\n private_networks=[scaleway.InstanceServerPrivateNetworkArgs(\n pn_id=main_vpc_private_network.id,\n )])\n### IP for LB IP\nmain_loadbalancer_ip = scaleway.LoadbalancerIp(\"mainLoadbalancerIp\")\n### Scaleway Private Network\nmain_index_vpc_private_network_vpc_private_network = scaleway.VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\")\n### Scaleway Load Balancer\nmain_loadbalancer = scaleway.Loadbalancer(\"mainLoadbalancer\",\n ip_id=main_loadbalancer_ip.id,\n type=\"LB-S\",\n private_networks=[scaleway.LoadbalancerPrivateNetworkArgs(\n private_network_id=main_vpc_private_network.id,\n dhcp_config=True,\n )],\n opts=pulumi.ResourceOptions(depends_on=[main_vpc_public_gateway]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n //## IP for Public Gateway\n var mainVpcPublicGatewayIp = new Scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n //## Scaleway Private Network\n var mainVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n //## VPC Public Gateway Network\n var mainVpcPublicGateway = new Scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", new()\n {\n Type = \"VPC-GW-S\",\n IpId = mainVpcPublicGatewayIp.Id,\n });\n\n //## VPC Public Gateway Network DHCP config\n var mainVpcPublicGatewayDhcp = new Scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", new()\n {\n Subnet = \"10.0.0.0/24\",\n });\n\n //## VPC Gateway Network\n var mainVpcGatewayNetwork = new Scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", new()\n {\n GatewayId = mainVpcPublicGateway.Id,\n PrivateNetworkId = mainVpcPrivateNetwork.Id,\n DhcpId = mainVpcPublicGatewayDhcp.Id,\n CleanupDhcp = true,\n EnableMasquerade = true,\n });\n\n //## Scaleway Instance\n var mainInstanceServer = new Scaleway.InstanceServer(\"mainInstanceServer\", new()\n {\n Type = \"DEV1-S\",\n Image = \"debian_bullseye\",\n EnableIpv6 = false,\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.InstanceServerPrivateNetworkArgs\n {\n PnId = mainVpcPrivateNetwork.Id,\n },\n },\n });\n\n //## IP for LB IP\n var mainLoadbalancerIp = new Scaleway.LoadbalancerIp(\"mainLoadbalancerIp\");\n\n //## Scaleway Private Network\n var mainIndex_vpcPrivateNetworkVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\");\n\n //## Scaleway Load Balancer\n var mainLoadbalancer = new Scaleway.Loadbalancer(\"mainLoadbalancer\", new()\n {\n IpId = mainLoadbalancerIp.Id,\n Type = \"LB-S\",\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.LoadbalancerPrivateNetworkArgs\n {\n PrivateNetworkId = mainVpcPrivateNetwork.Id,\n DhcpConfig = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainVpcPublicGateway,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## IP for Public Gateway\n\t\tmainVpcPublicGatewayIp, err := scaleway.NewVpcPublicGatewayIp(ctx, \"mainVpcPublicGatewayIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Private Network\n\t\tmainVpcPrivateNetwork, err := scaleway.NewVpcPrivateNetwork(ctx, \"mainVpcPrivateNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## VPC Public Gateway Network\n\t\tmainVpcPublicGateway, err := scaleway.NewVpcPublicGateway(ctx, \"mainVpcPublicGateway\", \u0026scaleway.VpcPublicGatewayArgs{\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tIpId: mainVpcPublicGatewayIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## VPC Public Gateway Network DHCP config\n\t\tmainVpcPublicGatewayDhcp, err := scaleway.NewVpcPublicGatewayDhcp(ctx, \"mainVpcPublicGatewayDhcp\", \u0026scaleway.VpcPublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"10.0.0.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## VPC Gateway Network\n\t\t_, err = scaleway.NewVpcGatewayNetwork(ctx, \"mainVpcGatewayNetwork\", \u0026scaleway.VpcGatewayNetworkArgs{\n\t\t\tGatewayId: mainVpcPublicGateway.ID(),\n\t\t\tPrivateNetworkId: mainVpcPrivateNetwork.ID(),\n\t\t\tDhcpId: mainVpcPublicGatewayDhcp.ID(),\n\t\t\tCleanupDhcp: pulumi.Bool(true),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Instance\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"mainInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"debian_bullseye\"),\n\t\t\tEnableIpv6: pulumi.Bool(false),\n\t\t\tPrivateNetworks: scaleway.InstanceServerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.InstanceServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: mainVpcPrivateNetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## IP for LB IP\n\t\tmainLoadbalancerIp, err := scaleway.NewLoadbalancerIp(ctx, \"mainLoadbalancerIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Private Network\n\t\t_, err = scaleway.NewVpcPrivateNetwork(ctx, \"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Load Balancer\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"mainLoadbalancer\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpId: mainLoadbalancerIp.ID(),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tPrivateNetworks: scaleway.LoadbalancerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.LoadbalancerPrivateNetworkArgs{\n\t\t\t\t\tPrivateNetworkId: mainVpcPrivateNetwork.ID(),\n\t\t\t\t\tDhcpConfig: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainVpcPublicGateway,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPublicGatewayIp;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.VpcPublicGateway;\nimport com.pulumi.scaleway.VpcPublicGatewayArgs;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcp;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpArgs;\nimport com.pulumi.scaleway.VpcGatewayNetwork;\nimport com.pulumi.scaleway.VpcGatewayNetworkArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerPrivateNetworkArgs;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport com.pulumi.scaleway.inputs.LoadbalancerPrivateNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n //## IP for Public Gateway\n var mainVpcPublicGatewayIp = new VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n //## Scaleway Private Network\n var mainVpcPrivateNetwork = new VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n //## VPC Public Gateway Network\n var mainVpcPublicGateway = new VpcPublicGateway(\"mainVpcPublicGateway\", VpcPublicGatewayArgs.builder()\n .type(\"VPC-GW-S\")\n .ipId(mainVpcPublicGatewayIp.id())\n .build());\n\n //## VPC Public Gateway Network DHCP config\n var mainVpcPublicGatewayDhcp = new VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", VpcPublicGatewayDhcpArgs.builder()\n .subnet(\"10.0.0.0/24\")\n .build());\n\n //## VPC Gateway Network\n var mainVpcGatewayNetwork = new VpcGatewayNetwork(\"mainVpcGatewayNetwork\", VpcGatewayNetworkArgs.builder()\n .gatewayId(mainVpcPublicGateway.id())\n .privateNetworkId(mainVpcPrivateNetwork.id())\n .dhcpId(mainVpcPublicGatewayDhcp.id())\n .cleanupDhcp(true)\n .enableMasquerade(true)\n .build());\n\n //## Scaleway Instance\n var mainInstanceServer = new InstanceServer(\"mainInstanceServer\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"debian_bullseye\")\n .enableIpv6(false)\n .privateNetworks(InstanceServerPrivateNetworkArgs.builder()\n .pnId(mainVpcPrivateNetwork.id())\n .build())\n .build());\n\n //## IP for LB IP\n var mainLoadbalancerIp = new LoadbalancerIp(\"mainLoadbalancerIp\");\n\n //## Scaleway Private Network\n var mainIndex_vpcPrivateNetworkVpcPrivateNetwork = new VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\");\n\n //## Scaleway Load Balancer\n var mainLoadbalancer = new Loadbalancer(\"mainLoadbalancer\", LoadbalancerArgs.builder()\n .ipId(mainLoadbalancerIp.id())\n .type(\"LB-S\")\n .privateNetworks(LoadbalancerPrivateNetworkArgs.builder()\n .privateNetworkId(mainVpcPrivateNetwork.id())\n .dhcpConfig(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(mainVpcPublicGateway)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ### IP for Public Gateway\n mainVpcPublicGatewayIp:\n type: scaleway:VpcPublicGatewayIp\n ### Scaleway Private Network\n mainVpcPrivateNetwork:\n type: scaleway:VpcPrivateNetwork\n ### VPC Public Gateway Network\n mainVpcPublicGateway:\n type: scaleway:VpcPublicGateway\n properties:\n type: VPC-GW-S\n ipId: ${mainVpcPublicGatewayIp.id}\n ### VPC Public Gateway Network DHCP config\n mainVpcPublicGatewayDhcp:\n type: scaleway:VpcPublicGatewayDhcp\n properties:\n subnet: 10.0.0.0/24\n ### VPC Gateway Network\n mainVpcGatewayNetwork:\n type: scaleway:VpcGatewayNetwork\n properties:\n gatewayId: ${mainVpcPublicGateway.id}\n privateNetworkId: ${mainVpcPrivateNetwork.id}\n dhcpId: ${mainVpcPublicGatewayDhcp.id}\n cleanupDhcp: true\n enableMasquerade: true\n ### Scaleway Instance\n mainInstanceServer:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: debian_bullseye\n enableIpv6: false\n privateNetworks:\n - pnId: ${mainVpcPrivateNetwork.id}\n ### IP for LB IP\n mainLoadbalancerIp:\n type: scaleway:LoadbalancerIp\n ### Scaleway Private Network\n mainIndex/vpcPrivateNetworkVpcPrivateNetwork:\n type: scaleway:VpcPrivateNetwork\n ### Scaleway Load Balancer\n mainLoadbalancer:\n type: scaleway:Loadbalancer\n properties:\n ipId: ${mainLoadbalancerIp.id}\n type: LB-S\n privateNetworks:\n - privateNetworkId: ${mainVpcPrivateNetwork.id}\n dhcpConfig: true\n options:\n dependson:\n - ${mainVpcPublicGateway}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Migration\n\nIn order to migrate to other Load Balancer types, you can check upwards or downwards migration via our CLI `scw lb lb-types list`.\nThis change will not recreate your Load Balancer.\n\nPlease check our [documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-migrate-a-load-balancer) for further details\n\n## IP ID\n\nSince v1.15.0, `ip_id` is a required field. This means that now a separate `scaleway.LoadbalancerIp` is required.\nWhen importing, the IP needs to be imported as well as the Load Balancer.\nWhen upgrading to v1.15.0, you will need to create a new `scaleway.LoadbalancerIp` resource and import it.\n\nFor instance, if you had the following:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.Loadbalancer(\"main\", {\n type: \"LB-S\",\n zone: \"fr-par-1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.Loadbalancer(\"main\",\n type=\"LB-S\",\n zone=\"fr-par-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.Loadbalancer(\"main\", new()\n {\n Type = \"LB-S\",\n Zone = \"fr-par-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewLoadbalancer(ctx, \"main\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new Loadbalancer(\"main\", LoadbalancerArgs.builder()\n .type(\"LB-S\")\n .zone(\"fr-par-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:Loadbalancer\n properties:\n type: LB-S\n zone: fr-par-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou will need to update it to:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainLoadbalancerIp = new scaleway.LoadbalancerIp(\"mainLoadbalancerIp\", {});\nconst mainLoadbalancer = new scaleway.Loadbalancer(\"mainLoadbalancer\", {\n ipId: mainLoadbalancerIp.id,\n zone: \"fr-par-1\",\n type: \"LB-S\",\n releaseIp: false,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_loadbalancer_ip = scaleway.LoadbalancerIp(\"mainLoadbalancerIp\")\nmain_loadbalancer = scaleway.Loadbalancer(\"mainLoadbalancer\",\n ip_id=main_loadbalancer_ip.id,\n zone=\"fr-par-1\",\n type=\"LB-S\",\n release_ip=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainLoadbalancerIp = new Scaleway.LoadbalancerIp(\"mainLoadbalancerIp\");\n\n var mainLoadbalancer = new Scaleway.Loadbalancer(\"mainLoadbalancer\", new()\n {\n IpId = mainLoadbalancerIp.Id,\n Zone = \"fr-par-1\",\n Type = \"LB-S\",\n ReleaseIp = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainLoadbalancerIp, err := scaleway.NewLoadbalancerIp(ctx, \"mainLoadbalancerIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"mainLoadbalancer\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpId: mainLoadbalancerIp.ID(),\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tReleaseIp: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainLoadbalancerIp = new LoadbalancerIp(\"mainLoadbalancerIp\");\n\n var mainLoadbalancer = new Loadbalancer(\"mainLoadbalancer\", LoadbalancerArgs.builder()\n .ipId(mainLoadbalancerIp.id())\n .zone(\"fr-par-1\")\n .type(\"LB-S\")\n .releaseIp(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainLoadbalancerIp:\n type: scaleway:LoadbalancerIp\n mainLoadbalancer:\n type: scaleway:Loadbalancer\n properties:\n ipId: ${mainLoadbalancerIp.id}\n zone: fr-par-1\n type: LB-S\n releaseIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancers can be imported using `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/loadbalancer:Loadbalancer main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\nBe aware that you will also need to import the `scaleway_lb_ip` resource.\n\n", + "description": "Creates and manages Scaleway Load Balancers.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/network/load-balancer/concepts/#load-balancers) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-list-load-balancers).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.LoadbalancerIp(\"main\", {zone: \"fr-par-1\"});\nconst base = new scaleway.Loadbalancer(\"base\", {\n ipIds: [main.id],\n zone: main.zone,\n type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.LoadbalancerIp(\"main\", zone=\"fr-par-1\")\nbase = scaleway.Loadbalancer(\"base\",\n ip_ids=[main.id],\n zone=main.zone,\n type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.LoadbalancerIp(\"main\", new()\n {\n Zone = \"fr-par-1\",\n });\n\n var @base = new Scaleway.Loadbalancer(\"base\", new()\n {\n IpIds = new[]\n {\n main.Id,\n },\n Zone = main.Zone,\n Type = \"LB-S\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := scaleway.NewLoadbalancerIp(ctx, \"main\", \u0026scaleway.LoadbalancerIpArgs{\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"base\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tmain.ID(),\n\t\t\t},\n\t\t\tZone: main.Zone,\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.LoadbalancerIpArgs;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new LoadbalancerIp(\"main\", LoadbalancerIpArgs.builder()\n .zone(\"fr-par-1\")\n .build());\n\n var base = new Loadbalancer(\"base\", LoadbalancerArgs.builder()\n .ipIds(main.id())\n .zone(main.zone())\n .type(\"LB-S\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:LoadbalancerIp\n properties:\n zone: fr-par-1\n base:\n type: scaleway:Loadbalancer\n properties:\n ipIds:\n - ${main.id}\n zone: ${main.zone}\n type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private LB\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst base = new scaleway.Loadbalancer(\"base\", {\n assignFlexibleIp: false,\n type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbase = scaleway.Loadbalancer(\"base\",\n assign_flexible_ip=False,\n type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @base = new Scaleway.Loadbalancer(\"base\", new()\n {\n AssignFlexibleIp = false,\n Type = \"LB-S\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewLoadbalancer(ctx, \"base\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tAssignFlexibleIp: pulumi.Bool(false),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var base = new Loadbalancer(\"base\", LoadbalancerArgs.builder()\n .assignFlexibleIp(false)\n .type(\"LB-S\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n base:\n type: scaleway:Loadbalancer\n properties:\n assignFlexibleIp: false\n type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst v4 = new scaleway.LoadbalancerIp(\"v4\", {});\nconst v6 = new scaleway.LoadbalancerIp(\"v6\", {isIpv6: true});\nconst main = new scaleway.Loadbalancer(\"main\", {\n ipIds: [\n v4.id,\n v6.id,\n ],\n type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nv4 = scaleway.LoadbalancerIp(\"v4\")\nv6 = scaleway.LoadbalancerIp(\"v6\", is_ipv6=True)\nmain = scaleway.Loadbalancer(\"main\",\n ip_ids=[\n v4.id,\n v6.id,\n ],\n type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var v4 = new Scaleway.LoadbalancerIp(\"v4\");\n\n var v6 = new Scaleway.LoadbalancerIp(\"v6\", new()\n {\n IsIpv6 = true,\n });\n\n var main = new Scaleway.Loadbalancer(\"main\", new()\n {\n IpIds = new[]\n {\n v4.Id,\n v6.Id,\n },\n Type = \"LB-S\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tv4, err := scaleway.NewLoadbalancerIp(ctx, \"v4\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv6, err := scaleway.NewLoadbalancerIp(ctx, \"v6\", \u0026scaleway.LoadbalancerIpArgs{\n\t\t\tIsIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"main\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tv4.ID(),\n\t\t\t\tv6.ID(),\n\t\t\t},\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.LoadbalancerIpArgs;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var v4 = new LoadbalancerIp(\"v4\");\n\n var v6 = new LoadbalancerIp(\"v6\", LoadbalancerIpArgs.builder()\n .isIpv6(true)\n .build());\n\n var main = new Loadbalancer(\"main\", LoadbalancerArgs.builder()\n .ipIds( \n v4.id(),\n v6.id())\n .type(\"LB-S\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n v4:\n type: scaleway:LoadbalancerIp\n v6:\n type: scaleway:LoadbalancerIp\n properties:\n isIpv6: true\n main:\n type: scaleway:Loadbalancer\n properties:\n ipIds:\n - ${v4.id}\n - ${v6.id}\n type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple configurations\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## IP for Public Gateway\nconst mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\", {});\n//## Scaleway Private Network\nconst mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\", {});\n//## VPC Public Gateway Network\nconst mainVpcPublicGateway = new scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", {\n type: \"VPC-GW-S\",\n ipId: mainVpcPublicGatewayIp.id,\n});\n//## VPC Public Gateway Network DHCP config\nconst mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", {subnet: \"10.0.0.0/24\"});\n//## VPC Gateway Network\nconst mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", {\n gatewayId: mainVpcPublicGateway.id,\n privateNetworkId: mainVpcPrivateNetwork.id,\n dhcpId: mainVpcPublicGatewayDhcp.id,\n cleanupDhcp: true,\n enableMasquerade: true,\n});\n//## Scaleway Instance\nconst mainInstanceServer = new scaleway.InstanceServer(\"mainInstanceServer\", {\n type: \"DEV1-S\",\n image: \"debian_bullseye\",\n enableIpv6: false,\n privateNetworks: [{\n pnId: mainVpcPrivateNetwork.id,\n }],\n});\n//## IP for LB IP\nconst mainLoadbalancerIp = new scaleway.LoadbalancerIp(\"mainLoadbalancerIp\", {});\n//## Scaleway Private Network\nconst mainIndex_vpcPrivateNetworkVpcPrivateNetwork = new scaleway.VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\", {});\n//## Scaleway Load Balancer\nconst mainLoadbalancer = new scaleway.Loadbalancer(\"mainLoadbalancer\", {\n ipId: mainLoadbalancerIp.id,\n type: \"LB-S\",\n privateNetworks: [{\n privateNetworkId: mainVpcPrivateNetwork.id,\n dhcpConfig: true,\n }],\n}, {\n dependsOn: [mainVpcPublicGateway],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### IP for Public Gateway\nmain_vpc_public_gateway_ip = scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\")\n### Scaleway Private Network\nmain_vpc_private_network = scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\")\n### VPC Public Gateway Network\nmain_vpc_public_gateway = scaleway.VpcPublicGateway(\"mainVpcPublicGateway\",\n type=\"VPC-GW-S\",\n ip_id=main_vpc_public_gateway_ip.id)\n### VPC Public Gateway Network DHCP config\nmain_vpc_public_gateway_dhcp = scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", subnet=\"10.0.0.0/24\")\n### VPC Gateway Network\nmain_vpc_gateway_network = scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\",\n gateway_id=main_vpc_public_gateway.id,\n private_network_id=main_vpc_private_network.id,\n dhcp_id=main_vpc_public_gateway_dhcp.id,\n cleanup_dhcp=True,\n enable_masquerade=True)\n### Scaleway Instance\nmain_instance_server = scaleway.InstanceServer(\"mainInstanceServer\",\n type=\"DEV1-S\",\n image=\"debian_bullseye\",\n enable_ipv6=False,\n private_networks=[scaleway.InstanceServerPrivateNetworkArgs(\n pn_id=main_vpc_private_network.id,\n )])\n### IP for LB IP\nmain_loadbalancer_ip = scaleway.LoadbalancerIp(\"mainLoadbalancerIp\")\n### Scaleway Private Network\nmain_index_vpc_private_network_vpc_private_network = scaleway.VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\")\n### Scaleway Load Balancer\nmain_loadbalancer = scaleway.Loadbalancer(\"mainLoadbalancer\",\n ip_id=main_loadbalancer_ip.id,\n type=\"LB-S\",\n private_networks=[scaleway.LoadbalancerPrivateNetworkArgs(\n private_network_id=main_vpc_private_network.id,\n dhcp_config=True,\n )],\n opts = pulumi.ResourceOptions(depends_on=[main_vpc_public_gateway]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n //## IP for Public Gateway\n var mainVpcPublicGatewayIp = new Scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n //## Scaleway Private Network\n var mainVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n //## VPC Public Gateway Network\n var mainVpcPublicGateway = new Scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", new()\n {\n Type = \"VPC-GW-S\",\n IpId = mainVpcPublicGatewayIp.Id,\n });\n\n //## VPC Public Gateway Network DHCP config\n var mainVpcPublicGatewayDhcp = new Scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", new()\n {\n Subnet = \"10.0.0.0/24\",\n });\n\n //## VPC Gateway Network\n var mainVpcGatewayNetwork = new Scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", new()\n {\n GatewayId = mainVpcPublicGateway.Id,\n PrivateNetworkId = mainVpcPrivateNetwork.Id,\n DhcpId = mainVpcPublicGatewayDhcp.Id,\n CleanupDhcp = true,\n EnableMasquerade = true,\n });\n\n //## Scaleway Instance\n var mainInstanceServer = new Scaleway.InstanceServer(\"mainInstanceServer\", new()\n {\n Type = \"DEV1-S\",\n Image = \"debian_bullseye\",\n EnableIpv6 = false,\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.InstanceServerPrivateNetworkArgs\n {\n PnId = mainVpcPrivateNetwork.Id,\n },\n },\n });\n\n //## IP for LB IP\n var mainLoadbalancerIp = new Scaleway.LoadbalancerIp(\"mainLoadbalancerIp\");\n\n //## Scaleway Private Network\n var mainIndex_vpcPrivateNetworkVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\");\n\n //## Scaleway Load Balancer\n var mainLoadbalancer = new Scaleway.Loadbalancer(\"mainLoadbalancer\", new()\n {\n IpId = mainLoadbalancerIp.Id,\n Type = \"LB-S\",\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.LoadbalancerPrivateNetworkArgs\n {\n PrivateNetworkId = mainVpcPrivateNetwork.Id,\n DhcpConfig = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainVpcPublicGateway,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## IP for Public Gateway\n\t\tmainVpcPublicGatewayIp, err := scaleway.NewVpcPublicGatewayIp(ctx, \"mainVpcPublicGatewayIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Private Network\n\t\tmainVpcPrivateNetwork, err := scaleway.NewVpcPrivateNetwork(ctx, \"mainVpcPrivateNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## VPC Public Gateway Network\n\t\tmainVpcPublicGateway, err := scaleway.NewVpcPublicGateway(ctx, \"mainVpcPublicGateway\", \u0026scaleway.VpcPublicGatewayArgs{\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tIpId: mainVpcPublicGatewayIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## VPC Public Gateway Network DHCP config\n\t\tmainVpcPublicGatewayDhcp, err := scaleway.NewVpcPublicGatewayDhcp(ctx, \"mainVpcPublicGatewayDhcp\", \u0026scaleway.VpcPublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"10.0.0.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## VPC Gateway Network\n\t\t_, err = scaleway.NewVpcGatewayNetwork(ctx, \"mainVpcGatewayNetwork\", \u0026scaleway.VpcGatewayNetworkArgs{\n\t\t\tGatewayId: mainVpcPublicGateway.ID(),\n\t\t\tPrivateNetworkId: mainVpcPrivateNetwork.ID(),\n\t\t\tDhcpId: mainVpcPublicGatewayDhcp.ID(),\n\t\t\tCleanupDhcp: pulumi.Bool(true),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Instance\n\t\t_, err = scaleway.NewInstanceServer(ctx, \"mainInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"debian_bullseye\"),\n\t\t\tEnableIpv6: pulumi.Bool(false),\n\t\t\tPrivateNetworks: scaleway.InstanceServerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.InstanceServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: mainVpcPrivateNetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## IP for LB IP\n\t\tmainLoadbalancerIp, err := scaleway.NewLoadbalancerIp(ctx, \"mainLoadbalancerIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Private Network\n\t\t_, err = scaleway.NewVpcPrivateNetwork(ctx, \"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ## Scaleway Load Balancer\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"mainLoadbalancer\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpId: mainLoadbalancerIp.ID(),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tPrivateNetworks: scaleway.LoadbalancerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.LoadbalancerPrivateNetworkArgs{\n\t\t\t\t\tPrivateNetworkId: mainVpcPrivateNetwork.ID(),\n\t\t\t\t\tDhcpConfig: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainVpcPublicGateway,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPublicGatewayIp;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.VpcPublicGateway;\nimport com.pulumi.scaleway.VpcPublicGatewayArgs;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcp;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpArgs;\nimport com.pulumi.scaleway.VpcGatewayNetwork;\nimport com.pulumi.scaleway.VpcGatewayNetworkArgs;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerPrivateNetworkArgs;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport com.pulumi.scaleway.inputs.LoadbalancerPrivateNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n //## IP for Public Gateway\n var mainVpcPublicGatewayIp = new VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n //## Scaleway Private Network\n var mainVpcPrivateNetwork = new VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n //## VPC Public Gateway Network\n var mainVpcPublicGateway = new VpcPublicGateway(\"mainVpcPublicGateway\", VpcPublicGatewayArgs.builder()\n .type(\"VPC-GW-S\")\n .ipId(mainVpcPublicGatewayIp.id())\n .build());\n\n //## VPC Public Gateway Network DHCP config\n var mainVpcPublicGatewayDhcp = new VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", VpcPublicGatewayDhcpArgs.builder()\n .subnet(\"10.0.0.0/24\")\n .build());\n\n //## VPC Gateway Network\n var mainVpcGatewayNetwork = new VpcGatewayNetwork(\"mainVpcGatewayNetwork\", VpcGatewayNetworkArgs.builder()\n .gatewayId(mainVpcPublicGateway.id())\n .privateNetworkId(mainVpcPrivateNetwork.id())\n .dhcpId(mainVpcPublicGatewayDhcp.id())\n .cleanupDhcp(true)\n .enableMasquerade(true)\n .build());\n\n //## Scaleway Instance\n var mainInstanceServer = new InstanceServer(\"mainInstanceServer\", InstanceServerArgs.builder()\n .type(\"DEV1-S\")\n .image(\"debian_bullseye\")\n .enableIpv6(false)\n .privateNetworks(InstanceServerPrivateNetworkArgs.builder()\n .pnId(mainVpcPrivateNetwork.id())\n .build())\n .build());\n\n //## IP for LB IP\n var mainLoadbalancerIp = new LoadbalancerIp(\"mainLoadbalancerIp\");\n\n //## Scaleway Private Network\n var mainIndex_vpcPrivateNetworkVpcPrivateNetwork = new VpcPrivateNetwork(\"mainIndex/vpcPrivateNetworkVpcPrivateNetwork\");\n\n //## Scaleway Load Balancer\n var mainLoadbalancer = new Loadbalancer(\"mainLoadbalancer\", LoadbalancerArgs.builder()\n .ipId(mainLoadbalancerIp.id())\n .type(\"LB-S\")\n .privateNetworks(LoadbalancerPrivateNetworkArgs.builder()\n .privateNetworkId(mainVpcPrivateNetwork.id())\n .dhcpConfig(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(mainVpcPublicGateway)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ### IP for Public Gateway\n mainVpcPublicGatewayIp:\n type: scaleway:VpcPublicGatewayIp\n ### Scaleway Private Network\n mainVpcPrivateNetwork:\n type: scaleway:VpcPrivateNetwork\n ### VPC Public Gateway Network\n mainVpcPublicGateway:\n type: scaleway:VpcPublicGateway\n properties:\n type: VPC-GW-S\n ipId: ${mainVpcPublicGatewayIp.id}\n ### VPC Public Gateway Network DHCP config\n mainVpcPublicGatewayDhcp:\n type: scaleway:VpcPublicGatewayDhcp\n properties:\n subnet: 10.0.0.0/24\n ### VPC Gateway Network\n mainVpcGatewayNetwork:\n type: scaleway:VpcGatewayNetwork\n properties:\n gatewayId: ${mainVpcPublicGateway.id}\n privateNetworkId: ${mainVpcPrivateNetwork.id}\n dhcpId: ${mainVpcPublicGatewayDhcp.id}\n cleanupDhcp: true\n enableMasquerade: true\n ### Scaleway Instance\n mainInstanceServer:\n type: scaleway:InstanceServer\n properties:\n type: DEV1-S\n image: debian_bullseye\n enableIpv6: false\n privateNetworks:\n - pnId: ${mainVpcPrivateNetwork.id}\n ### IP for LB IP\n mainLoadbalancerIp:\n type: scaleway:LoadbalancerIp\n ### Scaleway Private Network\n mainIndex/vpcPrivateNetworkVpcPrivateNetwork:\n type: scaleway:VpcPrivateNetwork\n ### Scaleway Load Balancer\n mainLoadbalancer:\n type: scaleway:Loadbalancer\n properties:\n ipId: ${mainLoadbalancerIp.id}\n type: LB-S\n privateNetworks:\n - privateNetworkId: ${mainVpcPrivateNetwork.id}\n dhcpConfig: true\n options:\n dependson:\n - ${mainVpcPublicGateway}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Migration\n\nIn order to migrate to other Load Balancer types, you can check upwards or downwards migration via our CLI `scw lb lb-types list`.\nThis change will not recreate your Load Balancer.\n\nPlease check our [documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-migrate-a-load-balancer) for further details\n\n## IP ID\n\nSince v1.15.0, `ip_id` is a required field. This means that now a separate `scaleway.LoadbalancerIp` is required.\nWhen importing, the IP needs to be imported as well as the Load Balancer.\nWhen upgrading to v1.15.0, you will need to create a new `scaleway.LoadbalancerIp` resource and import it.\n\nFor instance, if you had the following:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.Loadbalancer(\"main\", {\n type: \"LB-S\",\n zone: \"fr-par-1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.Loadbalancer(\"main\",\n type=\"LB-S\",\n zone=\"fr-par-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.Loadbalancer(\"main\", new()\n {\n Type = \"LB-S\",\n Zone = \"fr-par-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewLoadbalancer(ctx, \"main\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new Loadbalancer(\"main\", LoadbalancerArgs.builder()\n .type(\"LB-S\")\n .zone(\"fr-par-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:Loadbalancer\n properties:\n type: LB-S\n zone: fr-par-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou will need to update it to:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainLoadbalancerIp = new scaleway.LoadbalancerIp(\"mainLoadbalancerIp\", {});\nconst mainLoadbalancer = new scaleway.Loadbalancer(\"mainLoadbalancer\", {\n ipId: mainLoadbalancerIp.id,\n zone: \"fr-par-1\",\n type: \"LB-S\",\n releaseIp: false,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_loadbalancer_ip = scaleway.LoadbalancerIp(\"mainLoadbalancerIp\")\nmain_loadbalancer = scaleway.Loadbalancer(\"mainLoadbalancer\",\n ip_id=main_loadbalancer_ip.id,\n zone=\"fr-par-1\",\n type=\"LB-S\",\n release_ip=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainLoadbalancerIp = new Scaleway.LoadbalancerIp(\"mainLoadbalancerIp\");\n\n var mainLoadbalancer = new Scaleway.Loadbalancer(\"mainLoadbalancer\", new()\n {\n IpId = mainLoadbalancerIp.Id,\n Zone = \"fr-par-1\",\n Type = \"LB-S\",\n ReleaseIp = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainLoadbalancerIp, err := scaleway.NewLoadbalancerIp(ctx, \"mainLoadbalancerIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewLoadbalancer(ctx, \"mainLoadbalancer\", \u0026scaleway.LoadbalancerArgs{\n\t\t\tIpId: mainLoadbalancerIp.ID(),\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tReleaseIp: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.LoadbalancerIp;\nimport com.pulumi.scaleway.Loadbalancer;\nimport com.pulumi.scaleway.LoadbalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainLoadbalancerIp = new LoadbalancerIp(\"mainLoadbalancerIp\");\n\n var mainLoadbalancer = new Loadbalancer(\"mainLoadbalancer\", LoadbalancerArgs.builder()\n .ipId(mainLoadbalancerIp.id())\n .zone(\"fr-par-1\")\n .type(\"LB-S\")\n .releaseIp(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainLoadbalancerIp:\n type: scaleway:LoadbalancerIp\n mainLoadbalancer:\n type: scaleway:Loadbalancer\n properties:\n ipId: ${mainLoadbalancerIp.id}\n zone: fr-par-1\n type: LB-S\n releaseIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancers can be imported using `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/loadbalancer:Loadbalancer main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\nBe aware that you will also need to import the `scaleway_lb_ip` resource.\n\n", "properties": { "assignFlexibleIp": { "type": "boolean", @@ -18203,7 +18203,7 @@ } }, "scaleway:index/objectBucketPolicy:ObjectBucketPolicy": { - "description": "Creates and manages Scaleway object storage bucket policy.\nFor more information, see [the documentation](https://www.scaleway.com/en/docs/storage/object/api-cli/bucket-policy/).\n\n## Example Usage\n\n### Example Usage with an IAM user\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\nconst user = scaleway.getIamUser({\n email: \"user@scaleway.com\",\n});\nconst policyIamPolicy = new scaleway.IamPolicy(\"policyIamPolicy\", {\n userId: user.then(user =\u003e user.id),\n rules: [{\n projectIds: [_default.then(_default =\u003e _default.id)],\n permissionSetNames: [\"ObjectStorageFullAccess\"],\n }],\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst policyObjectBucketPolicy = new scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", {\n bucket: bucket.name,\n policy: pulumi.jsonStringify({\n Version: \"2023-04-17\",\n Id: \"MyBucketPolicy\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\"s3:*\"],\n Principal: {\n SCW: user.then(user =\u003e `user_id:${user.id}`),\n },\n Resource: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\nuser = scaleway.get_iam_user(email=\"user@scaleway.com\")\npolicy_iam_policy = scaleway.IamPolicy(\"policyIamPolicy\",\n user_id=user.id,\n rules=[scaleway.IamPolicyRuleArgs(\n project_ids=[default.id],\n permission_set_names=[\"ObjectStorageFullAccess\"],\n )])\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\")\npolicy_object_bucket_policy = scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\",\n bucket=bucket.name,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2023-04-17\",\n \"Id\": \"MyBucketPolicy\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\"s3:*\"],\n \"Principal\": {\n \"SCW\": f\"user_id:{user.id}\",\n },\n \"Resource\": [\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n var user = Scaleway.GetIamUser.Invoke(new()\n {\n Email = \"user@scaleway.com\",\n });\n\n var policyIamPolicy = new Scaleway.IamPolicy(\"policyIamPolicy\", new()\n {\n UserId = user.Apply(getIamUserResult =\u003e getIamUserResult.Id),\n Rules = new[]\n {\n new Scaleway.Inputs.IamPolicyRuleArgs\n {\n ProjectIds = new[]\n {\n @default.Apply(@default =\u003e @default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)),\n },\n PermissionSetNames = new[]\n {\n \"ObjectStorageFullAccess\",\n },\n },\n },\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new Scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", new()\n {\n Bucket = bucket.Name,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2023-04-17\",\n [\"Id\"] = \"MyBucketPolicy\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Action\"] = new[]\n {\n \"s3:*\",\n },\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"SCW\"] = $\"user_id:{user.Apply(getIamUserResult =\u003e getIamUserResult.Id)}\",\n },\n [\"Resource\"] = new[]\n {\n bucket.Name,\n bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := scaleway.LookupIamUser(ctx, \u0026scaleway.LookupIamUserArgs{\n\t\t\tEmail: pulumi.StringRef(\"user@scaleway.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewIamPolicy(ctx, \"policyIamPolicy\", \u0026scaleway.IamPolicyArgs{\n\t\t\tUserId: pulumi.String(user.Id),\n\t\t\tRules: scaleway.IamPolicyRuleArray{\n\t\t\t\t\u0026scaleway.IamPolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageFullAccess\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"policyObjectBucketPolicy\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPolicy: pulumi.All(bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\tbucketName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2023-04-17\",\n\t\t\t\t\t\"Id\": \"MyBucketPolicy\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"user_id:%v\", user.Id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.inputs.GetIamUserArgs;\nimport com.pulumi.scaleway.IamPolicy;\nimport com.pulumi.scaleway.IamPolicyArgs;\nimport com.pulumi.scaleway.inputs.IamPolicyRuleArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n final var user = ScalewayFunctions.getIamUser(GetIamUserArgs.builder()\n .email(\"user@scaleway.com\")\n .build());\n\n var policyIamPolicy = new IamPolicy(\"policyIamPolicy\", IamPolicyArgs.builder()\n .userId(user.applyValue(getIamUserResult -\u003e getIamUserResult.id()))\n .rules(IamPolicyRuleArgs.builder()\n .projectIds(default_.id())\n .permissionSetNames(\"ObjectStorageFullAccess\")\n .build())\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new ObjectBucketPolicy(\"policyObjectBucketPolicy\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.name())\n .policy(Output.tuple(bucket.name(), bucket.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var bucketName1 = values.t2;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2023-04-17\"),\n jsonProperty(\"Id\", \"MyBucketPolicy\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\"s3:*\")),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"SCW\", String.format(\"user_id:%s\", user.applyValue(getIamUserResult -\u003e getIamUserResult.id())))\n )),\n jsonProperty(\"Resource\", jsonArray(\n bucketName, \n String.format(\"%s/*\", bucketName1)\n ))\n )))\n ));\n }))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policyIamPolicy:\n type: scaleway:IamPolicy\n properties:\n userId: ${user.id}\n rules:\n - projectIds:\n - ${default.id}\n permissionSetNames:\n - ObjectStorageFullAccess\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n policyObjectBucketPolicy:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.name}\n policy:\n fn::toJSON:\n Version: 2023-04-17\n Id: MyBucketPolicy\n Statement:\n - Effect: Allow\n Action:\n - s3:*\n Principal:\n SCW: user_id:${user.id}\n Resource:\n - ${bucket.name}\n - ${bucket.name}/*\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n user:\n fn::invoke:\n Function: scaleway:getIamUser\n Arguments:\n email: user@scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with an IAM application\n\n### Creating a bucket and delegating read access to an application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\n// IAM configuration\nconst reading_app = new scaleway.IamApplication(\"reading-app\", {});\nconst policyIamPolicy = new scaleway.IamPolicy(\"policyIamPolicy\", {\n applicationId: reading_app.id,\n rules: [{\n projectIds: [_default.then(_default =\u003e _default.id)],\n permissionSetNames: [\"ObjectStorageBucketsRead\"],\n }],\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst policyObjectBucketPolicy = new scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", {\n bucket: bucket.id,\n policy: pulumi.jsonStringify({\n Version: \"2023-04-17\",\n Statement: [{\n Sid: \"Delegate read access\",\n Effect: \"Allow\",\n Principal: {\n SCW: pulumi.interpolate`application_id:${reading_app.id}`,\n },\n Action: [\n \"s3:ListBucket\",\n \"s3:GetObject\",\n ],\n Resource: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\n# IAM configuration\nreading_app = scaleway.IamApplication(\"reading-app\")\npolicy_iam_policy = scaleway.IamPolicy(\"policyIamPolicy\",\n application_id=reading_app.id,\n rules=[scaleway.IamPolicyRuleArgs(\n project_ids=[default.id],\n permission_set_names=[\"ObjectStorageBucketsRead\"],\n )])\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\")\npolicy_object_bucket_policy = scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\",\n bucket=bucket.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2023-04-17\",\n \"Statement\": [{\n \"Sid\": \"Delegate read access\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"SCW\": reading_app.id.apply(lambda id: f\"application_id:{id}\"),\n },\n \"Action\": [\n \"s3:ListBucket\",\n \"s3:GetObject\",\n ],\n \"Resource\": [\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n // IAM configuration\n var reading_app = new Scaleway.IamApplication(\"reading-app\");\n\n var policyIamPolicy = new Scaleway.IamPolicy(\"policyIamPolicy\", new()\n {\n ApplicationId = reading_app.Id,\n Rules = new[]\n {\n new Scaleway.Inputs.IamPolicyRuleArgs\n {\n ProjectIds = new[]\n {\n @default.Apply(@default =\u003e @default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)),\n },\n PermissionSetNames = new[]\n {\n \"ObjectStorageBucketsRead\",\n },\n },\n },\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new Scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", new()\n {\n Bucket = bucket.Id,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2023-04-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Sid\"] = \"Delegate read access\",\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"SCW\"] = reading_app.Id.Apply(id =\u003e $\"application_id:{id}\"),\n },\n [\"Action\"] = new[]\n {\n \"s3:ListBucket\",\n \"s3:GetObject\",\n },\n [\"Resource\"] = new[]\n {\n bucket.Name,\n bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM configuration\n\t\t_, err = scaleway.NewIamApplication(ctx, \"reading-app\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewIamPolicy(ctx, \"policyIamPolicy\", \u0026scaleway.IamPolicyArgs{\n\t\t\tApplicationId: reading_app.ID(),\n\t\t\tRules: scaleway.IamPolicyRuleArray{\n\t\t\t\t\u0026scaleway.IamPolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageBucketsRead\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"policyObjectBucketPolicy\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tPolicy: pulumi.All(reading_app.ID(), bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tid := _args[0].(string)\n\t\t\t\tbucketName := _args[1].(string)\n\t\t\t\tbucketName1 := _args[2].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2023-04-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Sid\": \"Delegate read access\",\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"application_id:%v\", id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\t\t\"s3:GetObject\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.IamApplication;\nimport com.pulumi.scaleway.IamPolicy;\nimport com.pulumi.scaleway.IamPolicyArgs;\nimport com.pulumi.scaleway.inputs.IamPolicyRuleArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n // IAM configuration\n var reading_app = new IamApplication(\"reading-app\");\n\n var policyIamPolicy = new IamPolicy(\"policyIamPolicy\", IamPolicyArgs.builder()\n .applicationId(reading_app.id())\n .rules(IamPolicyRuleArgs.builder()\n .projectIds(default_.id())\n .permissionSetNames(\"ObjectStorageBucketsRead\")\n .build())\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new ObjectBucketPolicy(\"policyObjectBucketPolicy\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.id())\n .policy(Output.tuple(reading_app.id(), bucket.name(), bucket.name()).applyValue(values -\u003e {\n var id = values.t1;\n var bucketName = values.t2;\n var bucketName1 = values.t3;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2023-04-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Sid\", \"Delegate read access\"),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"SCW\", String.format(\"application_id:%s\", id))\n )),\n jsonProperty(\"Action\", jsonArray(\n \"s3:ListBucket\", \n \"s3:GetObject\"\n )),\n jsonProperty(\"Resource\", jsonArray(\n bucketName, \n String.format(\"%s/*\", bucketName1)\n ))\n )))\n ));\n }))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # IAM configuration\n reading-app:\n type: scaleway:IamApplication\n policyIamPolicy:\n type: scaleway:IamPolicy\n properties:\n applicationId: ${[\"reading-app\"].id}\n rules:\n - projectIds:\n - ${default.id}\n permissionSetNames:\n - ObjectStorageBucketsRead\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n policyObjectBucketPolicy:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.id}\n policy:\n fn::toJSON:\n Version: 2023-04-17\n Statement:\n - Sid: Delegate read access\n Effect: Allow\n Principal:\n SCW: application_id:${[\"reading-app\"].id}\n Action:\n - s3:ListBucket\n - s3:GetObject\n Resource:\n - ${bucket.name}\n - ${bucket.name}/*\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Reading the bucket with the application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst reading-app = scaleway.getIamApplication({\n name: \"reading-app\",\n});\nconst reading_api_key = new scaleway.IamApiKey(\"reading-api-key\", {applicationId: reading_app.then(reading_app =\u003e reading_app.id)});\nconst reading_profile = new scaleway.Provider(\"reading-profile\", {\n accessKey: reading_api_key.accessKey,\n secretKey: reading_api_key.secretKey,\n});\nconst bucket = scaleway.getObjectBucket({\n name: \"some-unique-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nreading_app = scaleway.get_iam_application(name=\"reading-app\")\nreading_api_key = scaleway.IamApiKey(\"reading-api-key\", application_id=reading_app.id)\nreading_profile = scaleway.Provider(\"reading-profile\",\n access_key=reading_api_key.access_key,\n secret_key=reading_api_key.secret_key)\nbucket = scaleway.get_object_bucket(name=\"some-unique-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var reading_app = Scaleway.GetIamApplication.Invoke(new()\n {\n Name = \"reading-app\",\n });\n\n var reading_api_key = new Scaleway.IamApiKey(\"reading-api-key\", new()\n {\n ApplicationId = reading_app.Apply(reading_app =\u003e reading_app.Apply(getIamApplicationResult =\u003e getIamApplicationResult.Id)),\n });\n\n var reading_profile = new Scaleway.Provider(\"reading-profile\", new()\n {\n AccessKey = reading_api_key.AccessKey,\n SecretKey = reading_api_key.SecretKey,\n });\n\n var bucket = Scaleway.GetObjectBucket.Invoke(new()\n {\n Name = \"some-unique-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\treading_app, err := scaleway.LookupIamApplication(ctx, \u0026scaleway.LookupIamApplicationArgs{\n\t\t\tName: pulumi.StringRef(\"reading-app\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewIamApiKey(ctx, \"reading-api-key\", \u0026scaleway.IamApiKeyArgs{\n\t\t\tApplicationId: pulumi.String(reading_app.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewProvider(ctx, \"reading-profile\", \u0026scaleway.ProviderArgs{\n\t\t\tAccessKey: reading_api_key.AccessKey,\n\t\t\tSecretKey: reading_api_key.SecretKey,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.LookupObjectBucket(ctx, \u0026scaleway.LookupObjectBucketArgs{\n\t\t\tName: pulumi.StringRef(\"some-unique-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetIamApplicationArgs;\nimport com.pulumi.scaleway.IamApiKey;\nimport com.pulumi.scaleway.IamApiKeyArgs;\nimport com.pulumi.scaleway.Provider;\nimport com.pulumi.scaleway.ProviderArgs;\nimport com.pulumi.scaleway.inputs.GetObjectBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var reading-app = ScalewayFunctions.getIamApplication(GetIamApplicationArgs.builder()\n .name(\"reading-app\")\n .build());\n\n var reading_api_key = new IamApiKey(\"reading-api-key\", IamApiKeyArgs.builder()\n .applicationId(reading_app.id())\n .build());\n\n var reading_profile = new Provider(\"reading-profile\", ProviderArgs.builder()\n .accessKey(reading_api_key.accessKey())\n .secretKey(reading_api_key.secretKey())\n .build());\n\n final var bucket = ScalewayFunctions.getObjectBucket(GetObjectBucketArgs.builder()\n .name(\"some-unique-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n reading-api-key:\n type: scaleway:IamApiKey\n properties:\n applicationId: ${[\"reading-app\"].id}\n reading-profile:\n type: pulumi:providers:scaleway\n properties:\n accessKey: ${[\"reading-api-key\"].accessKey}\n secretKey: ${[\"reading-api-key\"].secretKey}\nvariables:\n reading-app:\n fn::invoke:\n Function: scaleway:getIamApplication\n Arguments:\n name: reading-app\n bucket:\n fn::invoke:\n Function: scaleway:getObjectBucket\n Arguments:\n name: some-unique-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with AWS provider\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst policy = aws.iam.getPolicyDocumentOutput({\n version: \"2012-10-17\",\n statements: [{\n sid: \"Delegate access\",\n effect: \"Allow\",\n principals: [{\n type: \"SCW\",\n identifiers: [_default.then(_default =\u003e `project_id:${_default.id}`)],\n }],\n actions: [\"s3:ListBucket\"],\n resources: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n});\nconst main = new scaleway.ObjectBucketPolicy(\"main\", {\n bucket: bucket.id,\n policy: policy.apply(policy =\u003e policy.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\")\npolicy = aws.iam.get_policy_document_output(version=\"2012-10-17\",\n statements=[aws.iam.GetPolicyDocumentStatementArgs(\n sid=\"Delegate access\",\n effect=\"Allow\",\n principals=[aws.iam.GetPolicyDocumentStatementPrincipalArgs(\n type=\"SCW\",\n identifiers=[f\"project_id:{default.id}\"],\n )],\n actions=[\"s3:ListBucket\"],\n resources=[\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n )])\nmain = scaleway.ObjectBucketPolicy(\"main\",\n bucket=bucket.id,\n policy=policy.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var policy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Version = \"2012-10-17\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"Delegate access\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"SCW\",\n Identifiers = new[]\n {\n $\"project_id:{@default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)}\",\n },\n },\n },\n Actions = new[]\n {\n \"s3:ListBucket\",\n },\n Resources = new[]\n {\n bucket.Name,\n $\"{bucket.Name}/*\",\n },\n },\n },\n });\n\n var main = new Scaleway.ObjectBucketPolicy(\"main\", new()\n {\n Bucket = bucket.Id,\n Policy = policy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tVersion: pulumi.String(\"2012-10-17\"),\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tSid: pulumi.String(\"Delegate access\"),\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"SCW\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(fmt.Sprintf(\"project_id:%v\", _default.Id)),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ListBucket\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tbucket.Name,\n\t\t\t\t\t\tbucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"main\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tPolicy: policy.ApplyT(func(policy iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026policy.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\");\n\n final var policy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .version(\"2012-10-17\")\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"Delegate access\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"SCW\")\n .identifiers(String.format(\"project_id:%s\", default_.id()))\n .build())\n .actions(\"s3:ListBucket\")\n .resources( \n bucket.name(),\n bucket.name().applyValue(name -\u003e String.format(\"%s/*\", name)))\n .build())\n .build());\n\n var main = new ObjectBucketPolicy(\"main\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.id())\n .policy(policy.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(policy -\u003e policy.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n main:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.id}\n policy: ${policy.json}\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n policy:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n version: 2012-10-17\n statements:\n - sid: Delegate access\n effect: Allow\n principals:\n - type: SCW\n identifiers:\n - project_id:${default.id}\n actions:\n - s3:ListBucket\n resources:\n - ${bucket.name}\n - ${bucket.name}/*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with deprecated version 2012-10-17\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {region: \"fr-par\"});\nconst policy = new scaleway.ObjectBucketPolicy(\"policy\", {\n bucket: bucket.name,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\n \"s3:ListBucket\",\n \"s3:GetObjectTagging\",\n ],\n Principal: {\n SCW: _default.then(_default =\u003e `project_id:${_default.id}`),\n },\n Resource: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\", region=\"fr-par\")\npolicy = scaleway.ObjectBucketPolicy(\"policy\",\n bucket=bucket.name,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\",\n \"s3:GetObjectTagging\",\n ],\n \"Principal\": {\n \"SCW\": f\"project_id:{default.id}\",\n },\n \"Resource\": [\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\", new()\n {\n Region = \"fr-par\",\n });\n\n var policy = new Scaleway.ObjectBucketPolicy(\"policy\", new()\n {\n Bucket = bucket.Name,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Action\"] = new[]\n {\n \"s3:ListBucket\",\n \"s3:GetObjectTagging\",\n },\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"SCW\"] = @default.Apply(@default =\u003e $\"project_id:{@default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)}\"),\n },\n [\"Resource\"] = new[]\n {\n bucket.Name,\n bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", \u0026scaleway.ObjectBucketArgs{\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"policy\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPolicy: pulumi.All(bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\tbucketName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\t\t\"s3:GetObjectTagging\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"project_id:%v\", _default.Id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectBucketArgs;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\", ObjectBucketArgs.builder()\n .region(\"fr-par\")\n .build());\n\n var policy = new ObjectBucketPolicy(\"policy\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.name())\n .policy(Output.tuple(bucket.name(), bucket.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var bucketName1 = values.t2;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\n \"s3:ListBucket\", \n \"s3:GetObjectTagging\"\n )),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"SCW\", String.format(\"project_id:%s\", default_.id()))\n )),\n jsonProperty(\"Resource\", jsonArray(\n bucketName, \n String.format(\"%s/*\", bucketName1)\n ))\n )))\n ));\n }))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n properties:\n region: fr-par\n policy:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.name}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Action:\n - s3:ListBucket\n - s3:GetObjectTagging\n Principal:\n SCW: project_id:${default.id}\n Resource:\n - ${bucket.name}\n - ${bucket.name}/*\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n**NB:** To configure the AWS provider with Scaleway credentials, please visit this [tutorial](https://www.scaleway.com/en/docs/storage/object/api-cli/object-storage-aws-cli/).\n\n## Import\n\nBucket policies can be imported using the `{region}/{bucketName}` identifier, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket\n```\n\n~\u003e **Important:** The `project_id` attribute has a particular behavior with s3 products because the s3 API is scoped by project.\n\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n", + "description": "Creates and manages Scaleway object storage bucket policy.\nFor more information, see [the documentation](https://www.scaleway.com/en/docs/storage/object/api-cli/bucket-policy/).\n\n## Example Usage\n\n### Example Usage with an IAM user\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\nconst user = scaleway.getIamUser({\n email: \"user@scaleway.com\",\n});\nconst policyIamPolicy = new scaleway.IamPolicy(\"policyIamPolicy\", {\n userId: user.then(user =\u003e user.id),\n rules: [{\n projectIds: [_default.then(_default =\u003e _default.id)],\n permissionSetNames: [\"ObjectStorageFullAccess\"],\n }],\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst policyObjectBucketPolicy = new scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", {\n bucket: bucket.name,\n policy: pulumi.jsonStringify({\n Version: \"2023-04-17\",\n Id: \"MyBucketPolicy\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\"s3:*\"],\n Principal: {\n SCW: user.then(user =\u003e `user_id:${user.id}`),\n },\n Resource: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\nuser = scaleway.get_iam_user(email=\"user@scaleway.com\")\npolicy_iam_policy = scaleway.IamPolicy(\"policyIamPolicy\",\n user_id=user.id,\n rules=[scaleway.IamPolicyRuleArgs(\n project_ids=[default.id],\n permission_set_names=[\"ObjectStorageFullAccess\"],\n )])\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\")\npolicy_object_bucket_policy = scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\",\n bucket=bucket.name,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2023-04-17\",\n \"Id\": \"MyBucketPolicy\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\"s3:*\"],\n \"Principal\": {\n \"SCW\": f\"user_id:{user.id}\",\n },\n \"Resource\": [\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n var user = Scaleway.GetIamUser.Invoke(new()\n {\n Email = \"user@scaleway.com\",\n });\n\n var policyIamPolicy = new Scaleway.IamPolicy(\"policyIamPolicy\", new()\n {\n UserId = user.Apply(getIamUserResult =\u003e getIamUserResult.Id),\n Rules = new[]\n {\n new Scaleway.Inputs.IamPolicyRuleArgs\n {\n ProjectIds = new[]\n {\n @default.Apply(@default =\u003e @default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)),\n },\n PermissionSetNames = new[]\n {\n \"ObjectStorageFullAccess\",\n },\n },\n },\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new Scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", new()\n {\n Bucket = bucket.Name,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2023-04-17\",\n [\"Id\"] = \"MyBucketPolicy\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Action\"] = new[]\n {\n \"s3:*\",\n },\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"SCW\"] = $\"user_id:{user.Apply(getIamUserResult =\u003e getIamUserResult.Id)}\",\n },\n [\"Resource\"] = new[]\n {\n bucket.Name,\n bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := scaleway.LookupIamUser(ctx, \u0026scaleway.LookupIamUserArgs{\n\t\t\tEmail: pulumi.StringRef(\"user@scaleway.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewIamPolicy(ctx, \"policyIamPolicy\", \u0026scaleway.IamPolicyArgs{\n\t\t\tUserId: pulumi.String(user.Id),\n\t\t\tRules: scaleway.IamPolicyRuleArray{\n\t\t\t\t\u0026scaleway.IamPolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageFullAccess\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"policyObjectBucketPolicy\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPolicy: pulumi.All(bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\tbucketName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2023-04-17\",\n\t\t\t\t\t\"Id\": \"MyBucketPolicy\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"user_id:%v\", user.Id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.inputs.GetIamUserArgs;\nimport com.pulumi.scaleway.IamPolicy;\nimport com.pulumi.scaleway.IamPolicyArgs;\nimport com.pulumi.scaleway.inputs.IamPolicyRuleArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n final var user = ScalewayFunctions.getIamUser(GetIamUserArgs.builder()\n .email(\"user@scaleway.com\")\n .build());\n\n var policyIamPolicy = new IamPolicy(\"policyIamPolicy\", IamPolicyArgs.builder()\n .userId(user.applyValue(getIamUserResult -\u003e getIamUserResult.id()))\n .rules(IamPolicyRuleArgs.builder()\n .projectIds(default_.id())\n .permissionSetNames(\"ObjectStorageFullAccess\")\n .build())\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new ObjectBucketPolicy(\"policyObjectBucketPolicy\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.name())\n .policy(Output.tuple(bucket.name(), bucket.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var bucketName1 = values.t2;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2023-04-17\"),\n jsonProperty(\"Id\", \"MyBucketPolicy\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\"s3:*\")),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"SCW\", String.format(\"user_id:%s\", user.applyValue(getIamUserResult -\u003e getIamUserResult.id())))\n )),\n jsonProperty(\"Resource\", jsonArray(\n bucketName, \n String.format(\"%s/*\", bucketName1)\n ))\n )))\n ));\n }))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n policyIamPolicy:\n type: scaleway:IamPolicy\n properties:\n userId: ${user.id}\n rules:\n - projectIds:\n - ${default.id}\n permissionSetNames:\n - ObjectStorageFullAccess\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n policyObjectBucketPolicy:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.name}\n policy:\n fn::toJSON:\n Version: 2023-04-17\n Id: MyBucketPolicy\n Statement:\n - Effect: Allow\n Action:\n - s3:*\n Principal:\n SCW: user_id:${user.id}\n Resource:\n - ${bucket.name}\n - ${bucket.name}/*\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n user:\n fn::invoke:\n Function: scaleway:getIamUser\n Arguments:\n email: user@scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with an IAM application\n\n### Creating a bucket and delegating read access to an application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\n// IAM configuration\nconst reading_app = new scaleway.IamApplication(\"reading-app\", {});\nconst policyIamPolicy = new scaleway.IamPolicy(\"policyIamPolicy\", {\n applicationId: reading_app.id,\n rules: [{\n projectIds: [_default.then(_default =\u003e _default.id)],\n permissionSetNames: [\"ObjectStorageBucketsRead\"],\n }],\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst policyObjectBucketPolicy = new scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", {\n bucket: bucket.id,\n policy: pulumi.jsonStringify({\n Version: \"2023-04-17\",\n Statement: [{\n Sid: \"Delegate read access\",\n Effect: \"Allow\",\n Principal: {\n SCW: pulumi.interpolate`application_id:${reading_app.id}`,\n },\n Action: [\n \"s3:ListBucket\",\n \"s3:GetObject\",\n ],\n Resource: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\n# IAM configuration\nreading_app = scaleway.IamApplication(\"reading-app\")\npolicy_iam_policy = scaleway.IamPolicy(\"policyIamPolicy\",\n application_id=reading_app.id,\n rules=[scaleway.IamPolicyRuleArgs(\n project_ids=[default.id],\n permission_set_names=[\"ObjectStorageBucketsRead\"],\n )])\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\")\npolicy_object_bucket_policy = scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\",\n bucket=bucket.id,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2023-04-17\",\n \"Statement\": [{\n \"Sid\": \"Delegate read access\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"SCW\": reading_app.id.apply(lambda id: f\"application_id:{id}\"),\n },\n \"Action\": [\n \"s3:ListBucket\",\n \"s3:GetObject\",\n ],\n \"Resource\": [\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n // IAM configuration\n var reading_app = new Scaleway.IamApplication(\"reading-app\");\n\n var policyIamPolicy = new Scaleway.IamPolicy(\"policyIamPolicy\", new()\n {\n ApplicationId = reading_app.Id,\n Rules = new[]\n {\n new Scaleway.Inputs.IamPolicyRuleArgs\n {\n ProjectIds = new[]\n {\n @default.Apply(@default =\u003e @default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)),\n },\n PermissionSetNames = new[]\n {\n \"ObjectStorageBucketsRead\",\n },\n },\n },\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new Scaleway.ObjectBucketPolicy(\"policyObjectBucketPolicy\", new()\n {\n Bucket = bucket.Id,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2023-04-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Sid\"] = \"Delegate read access\",\n [\"Effect\"] = \"Allow\",\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"SCW\"] = reading_app.Id.Apply(id =\u003e $\"application_id:{id}\"),\n },\n [\"Action\"] = new[]\n {\n \"s3:ListBucket\",\n \"s3:GetObject\",\n },\n [\"Resource\"] = new[]\n {\n bucket.Name,\n bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM configuration\n\t\t_, err = scaleway.NewIamApplication(ctx, \"reading-app\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewIamPolicy(ctx, \"policyIamPolicy\", \u0026scaleway.IamPolicyArgs{\n\t\t\tApplicationId: reading_app.ID(),\n\t\t\tRules: scaleway.IamPolicyRuleArray{\n\t\t\t\t\u0026scaleway.IamPolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageBucketsRead\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"policyObjectBucketPolicy\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tPolicy: pulumi.All(reading_app.ID(), bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tid := _args[0].(string)\n\t\t\t\tbucketName := _args[1].(string)\n\t\t\t\tbucketName1 := _args[2].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2023-04-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Sid\": \"Delegate read access\",\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"application_id:%v\", id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\t\t\"s3:GetObject\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.IamApplication;\nimport com.pulumi.scaleway.IamPolicy;\nimport com.pulumi.scaleway.IamPolicyArgs;\nimport com.pulumi.scaleway.inputs.IamPolicyRuleArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n // IAM configuration\n var reading_app = new IamApplication(\"reading-app\");\n\n var policyIamPolicy = new IamPolicy(\"policyIamPolicy\", IamPolicyArgs.builder()\n .applicationId(reading_app.id())\n .rules(IamPolicyRuleArgs.builder()\n .projectIds(default_.id())\n .permissionSetNames(\"ObjectStorageBucketsRead\")\n .build())\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\");\n\n var policyObjectBucketPolicy = new ObjectBucketPolicy(\"policyObjectBucketPolicy\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.id())\n .policy(Output.tuple(reading_app.id(), bucket.name(), bucket.name()).applyValue(values -\u003e {\n var id = values.t1;\n var bucketName = values.t2;\n var bucketName1 = values.t3;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2023-04-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Sid\", \"Delegate read access\"),\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"SCW\", String.format(\"application_id:%s\", id))\n )),\n jsonProperty(\"Action\", jsonArray(\n \"s3:ListBucket\", \n \"s3:GetObject\"\n )),\n jsonProperty(\"Resource\", jsonArray(\n bucketName, \n String.format(\"%s/*\", bucketName1)\n ))\n )))\n ));\n }))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # IAM configuration\n reading-app:\n type: scaleway:IamApplication\n policyIamPolicy:\n type: scaleway:IamPolicy\n properties:\n applicationId: ${[\"reading-app\"].id}\n rules:\n - projectIds:\n - ${default.id}\n permissionSetNames:\n - ObjectStorageBucketsRead\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n policyObjectBucketPolicy:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.id}\n policy:\n fn::toJSON:\n Version: 2023-04-17\n Statement:\n - Sid: Delegate read access\n Effect: Allow\n Principal:\n SCW: application_id:${[\"reading-app\"].id}\n Action:\n - s3:ListBucket\n - s3:GetObject\n Resource:\n - ${bucket.name}\n - ${bucket.name}/*\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Reading the bucket with the application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst reading-app = scaleway.getIamApplication({\n name: \"reading-app\",\n});\nconst reading_api_key = new scaleway.IamApiKey(\"reading-api-key\", {applicationId: reading_app.then(reading_app =\u003e reading_app.id)});\nconst reading_profile = new scaleway.Provider(\"reading-profile\", {\n accessKey: reading_api_key.accessKey,\n secretKey: reading_api_key.secretKey,\n});\nconst bucket = scaleway.getObjectBucket({\n name: \"some-unique-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nreading_app = scaleway.get_iam_application(name=\"reading-app\")\nreading_api_key = scaleway.IamApiKey(\"reading-api-key\", application_id=reading_app.id)\nreading_profile = scaleway.Provider(\"reading-profile\",\n access_key=reading_api_key.access_key,\n secret_key=reading_api_key.secret_key)\nbucket = scaleway.get_object_bucket(name=\"some-unique-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var reading_app = Scaleway.GetIamApplication.Invoke(new()\n {\n Name = \"reading-app\",\n });\n\n var reading_api_key = new Scaleway.IamApiKey(\"reading-api-key\", new()\n {\n ApplicationId = reading_app.Apply(reading_app =\u003e reading_app.Apply(getIamApplicationResult =\u003e getIamApplicationResult.Id)),\n });\n\n var reading_profile = new Scaleway.Provider(\"reading-profile\", new()\n {\n AccessKey = reading_api_key.AccessKey,\n SecretKey = reading_api_key.SecretKey,\n });\n\n var bucket = Scaleway.GetObjectBucket.Invoke(new()\n {\n Name = \"some-unique-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\treading_app, err := scaleway.LookupIamApplication(ctx, \u0026scaleway.LookupIamApplicationArgs{\n\t\t\tName: pulumi.StringRef(\"reading-app\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewIamApiKey(ctx, \"reading-api-key\", \u0026scaleway.IamApiKeyArgs{\n\t\t\tApplicationId: pulumi.String(reading_app.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewProvider(ctx, \"reading-profile\", \u0026scaleway.ProviderArgs{\n\t\t\tAccessKey: reading_api_key.AccessKey,\n\t\t\tSecretKey: reading_api_key.SecretKey,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.LookupObjectBucket(ctx, \u0026scaleway.LookupObjectBucketArgs{\n\t\t\tName: pulumi.StringRef(\"some-unique-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetIamApplicationArgs;\nimport com.pulumi.scaleway.IamApiKey;\nimport com.pulumi.scaleway.IamApiKeyArgs;\nimport com.pulumi.scaleway.Provider;\nimport com.pulumi.scaleway.ProviderArgs;\nimport com.pulumi.scaleway.inputs.GetObjectBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var reading-app = ScalewayFunctions.getIamApplication(GetIamApplicationArgs.builder()\n .name(\"reading-app\")\n .build());\n\n var reading_api_key = new IamApiKey(\"reading-api-key\", IamApiKeyArgs.builder()\n .applicationId(reading_app.id())\n .build());\n\n var reading_profile = new Provider(\"reading-profile\", ProviderArgs.builder()\n .accessKey(reading_api_key.accessKey())\n .secretKey(reading_api_key.secretKey())\n .build());\n\n final var bucket = ScalewayFunctions.getObjectBucket(GetObjectBucketArgs.builder()\n .name(\"some-unique-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n reading-api-key:\n type: scaleway:IamApiKey\n properties:\n applicationId: ${[\"reading-app\"].id}\n reading-profile:\n type: pulumi:providers:scaleway\n properties:\n accessKey: ${[\"reading-api-key\"].accessKey}\n secretKey: ${[\"reading-api-key\"].secretKey}\nvariables:\n reading-app:\n fn::invoke:\n Function: scaleway:getIamApplication\n Arguments:\n name: reading-app\n bucket:\n fn::invoke:\n Function: scaleway:getObjectBucket\n Arguments:\n name: some-unique-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with AWS provider\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {});\nconst policy = aws.iam.getPolicyDocumentOutput({\n version: \"2012-10-17\",\n statements: [{\n sid: \"Delegate access\",\n effect: \"Allow\",\n principals: [{\n type: \"SCW\",\n identifiers: [_default.then(_default =\u003e `project_id:${_default.id}`)],\n }],\n actions: [\"s3:ListBucket\"],\n resources: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n});\nconst main = new scaleway.ObjectBucketPolicy(\"main\", {\n bucket: bucket.id,\n policy: policy.apply(policy =\u003e policy.json),\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\")\npolicy = aws.iam.get_policy_document_output(version=\"2012-10-17\",\n statements=[aws.iam.GetPolicyDocumentStatementArgs(\n sid=\"Delegate access\",\n effect=\"Allow\",\n principals=[aws.iam.GetPolicyDocumentStatementPrincipalArgs(\n type=\"SCW\",\n identifiers=[f\"project_id:{default.id}\"],\n )],\n actions=[\"s3:ListBucket\"],\n resources=[\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n )])\nmain = scaleway.ObjectBucketPolicy(\"main\",\n bucket=bucket.id,\n policy=policy.json)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\");\n\n var policy = Aws.Iam.GetPolicyDocument.Invoke(new()\n {\n Version = \"2012-10-17\",\n Statements = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs\n {\n Sid = \"Delegate access\",\n Effect = \"Allow\",\n Principals = new[]\n {\n new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs\n {\n Type = \"SCW\",\n Identifiers = new[]\n {\n $\"project_id:{@default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)}\",\n },\n },\n },\n Actions = new[]\n {\n \"s3:ListBucket\",\n },\n Resources = new[]\n {\n bucket.Name,\n $\"{bucket.Name}/*\",\n },\n },\n },\n });\n\n var main = new Scaleway.ObjectBucketPolicy(\"main\", new()\n {\n Bucket = bucket.Id,\n Policy = policy.Apply(getPolicyDocumentResult =\u003e getPolicyDocumentResult.Json),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{\n\t\t\tVersion: pulumi.String(\"2012-10-17\"),\n\t\t\tStatements: iam.GetPolicyDocumentStatementArray{\n\t\t\t\t\u0026iam.GetPolicyDocumentStatementArgs{\n\t\t\t\t\tSid: pulumi.String(\"Delegate access\"),\n\t\t\t\t\tEffect: pulumi.String(\"Allow\"),\n\t\t\t\t\tPrincipals: iam.GetPolicyDocumentStatementPrincipalArray{\n\t\t\t\t\t\t\u0026iam.GetPolicyDocumentStatementPrincipalArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"SCW\"),\n\t\t\t\t\t\t\tIdentifiers: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(fmt.Sprintf(\"project_id:%v\", _default.Id)),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"s3:ListBucket\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tbucket.Name,\n\t\t\t\t\t\tbucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"%v/*\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"main\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tPolicy: pulumi.String(policy.ApplyT(func(policy iam.GetPolicyDocumentResult) (*string, error) {\n\t\t\t\treturn \u0026policy.Json, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.aws.iam.IamFunctions;\nimport com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\");\n\n final var policy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()\n .version(\"2012-10-17\")\n .statements(GetPolicyDocumentStatementArgs.builder()\n .sid(\"Delegate access\")\n .effect(\"Allow\")\n .principals(GetPolicyDocumentStatementPrincipalArgs.builder()\n .type(\"SCW\")\n .identifiers(String.format(\"project_id:%s\", default_.id()))\n .build())\n .actions(\"s3:ListBucket\")\n .resources( \n bucket.name(),\n bucket.name().applyValue(name -\u003e String.format(\"%s/*\", name)))\n .build())\n .build());\n\n var main = new ObjectBucketPolicy(\"main\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.id())\n .policy(policy.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult).applyValue(policy -\u003e policy.applyValue(getPolicyDocumentResult -\u003e getPolicyDocumentResult.json())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n main:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.id}\n policy: ${policy.json}\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n policy:\n fn::invoke:\n Function: aws:iam:getPolicyDocument\n Arguments:\n version: 2012-10-17\n statements:\n - sid: Delegate access\n effect: Allow\n principals:\n - type: SCW\n identifiers:\n - project_id:${default.id}\n actions:\n - s3:ListBucket\n resources:\n - ${bucket.name}\n - ${bucket.name}/*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with deprecated version 2012-10-17\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumi/scaleway\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst default = scaleway.getAccountProject({\n name: \"default\",\n});\n// Object storage configuration\nconst bucket = new scaleway.ObjectBucket(\"bucket\", {region: \"fr-par\"});\nconst policy = new scaleway.ObjectBucketPolicy(\"policy\", {\n bucket: bucket.name,\n policy: pulumi.jsonStringify({\n Version: \"2012-10-17\",\n Statement: [{\n Effect: \"Allow\",\n Action: [\n \"s3:ListBucket\",\n \"s3:GetObjectTagging\",\n ],\n Principal: {\n SCW: _default.then(_default =\u003e `project_id:${_default.id}`),\n },\n Resource: [\n bucket.name,\n pulumi.interpolate`${bucket.name}/*`,\n ],\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.get_account_project(name=\"default\")\n# Object storage configuration\nbucket = scaleway.ObjectBucket(\"bucket\", region=\"fr-par\")\npolicy = scaleway.ObjectBucketPolicy(\"policy\",\n bucket=bucket.name,\n policy=pulumi.Output.json_dumps({\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\",\n \"s3:GetObjectTagging\",\n ],\n \"Principal\": {\n \"SCW\": f\"project_id:{default.id}\",\n },\n \"Resource\": [\n bucket.name,\n bucket.name.apply(lambda name: f\"{name}/*\"),\n ],\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumi.Scaleway;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Scaleway.GetAccountProject.Invoke(new()\n {\n Name = \"default\",\n });\n\n // Object storage configuration\n var bucket = new Scaleway.ObjectBucket(\"bucket\", new()\n {\n Region = \"fr-par\",\n });\n\n var policy = new Scaleway.ObjectBucketPolicy(\"policy\", new()\n {\n Bucket = bucket.Name,\n Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n {\n [\"Version\"] = \"2012-10-17\",\n [\"Statement\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"Effect\"] = \"Allow\",\n [\"Action\"] = new[]\n {\n \"s3:ListBucket\",\n \"s3:GetObjectTagging\",\n },\n [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"SCW\"] = @default.Apply(@default =\u003e $\"project_id:{@default.Apply(getAccountProjectResult =\u003e getAccountProjectResult.Id)}\"),\n },\n [\"Resource\"] = new[]\n {\n bucket.Name,\n bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n },\n },\n },\n })),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := scaleway.LookupAccountProject(ctx, \u0026scaleway.LookupAccountProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := scaleway.NewObjectBucket(ctx, \"bucket\", \u0026scaleway.ObjectBucketArgs{\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewObjectBucketPolicy(ctx, \"policy\", \u0026scaleway.ObjectBucketPolicyArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPolicy: pulumi.All(bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\tbucketName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\t\t\"s3:GetObjectTagging\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"project_id:%v\", _default.Id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.ScalewayFunctions;\nimport com.pulumi.scaleway.inputs.GetAccountProjectArgs;\nimport com.pulumi.scaleway.ObjectBucket;\nimport com.pulumi.scaleway.ObjectBucketArgs;\nimport com.pulumi.scaleway.ObjectBucketPolicy;\nimport com.pulumi.scaleway.ObjectBucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ScalewayFunctions.getAccountProject(GetAccountProjectArgs.builder()\n .name(\"default\")\n .build());\n\n // Object storage configuration\n var bucket = new ObjectBucket(\"bucket\", ObjectBucketArgs.builder()\n .region(\"fr-par\")\n .build());\n\n var policy = new ObjectBucketPolicy(\"policy\", ObjectBucketPolicyArgs.builder()\n .bucket(bucket.name())\n .policy(Output.tuple(bucket.name(), bucket.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var bucketName1 = values.t2;\n return serializeJson(\n jsonObject(\n jsonProperty(\"Version\", \"2012-10-17\"),\n jsonProperty(\"Statement\", jsonArray(jsonObject(\n jsonProperty(\"Effect\", \"Allow\"),\n jsonProperty(\"Action\", jsonArray(\n \"s3:ListBucket\", \n \"s3:GetObjectTagging\"\n )),\n jsonProperty(\"Principal\", jsonObject(\n jsonProperty(\"SCW\", String.format(\"project_id:%s\", default_.id()))\n )),\n jsonProperty(\"Resource\", jsonArray(\n bucketName, \n String.format(\"%s/*\", bucketName1)\n ))\n )))\n ));\n }))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Object storage configuration\n bucket:\n type: scaleway:ObjectBucket\n properties:\n region: fr-par\n policy:\n type: scaleway:ObjectBucketPolicy\n properties:\n bucket: ${bucket.name}\n policy:\n fn::toJSON:\n Version: 2012-10-17\n Statement:\n - Effect: Allow\n Action:\n - s3:ListBucket\n - s3:GetObjectTagging\n Principal:\n SCW: project_id:${default.id}\n Resource:\n - ${bucket.name}\n - ${bucket.name}/*\nvariables:\n default:\n fn::invoke:\n Function: scaleway:getAccountProject\n Arguments:\n name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n**NB:** To configure the AWS provider with Scaleway credentials, please visit this [tutorial](https://www.scaleway.com/en/docs/storage/object/api-cli/object-storage-aws-cli/).\n\n## Import\n\nBucket policies can be imported using the `{region}/{bucketName}` identifier, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket\n```\n\n~\u003e **Important:** The `project_id` attribute has a particular behavior with s3 products because the s3 API is scoped by project.\n\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n", "properties": { "bucket": { "type": "string", @@ -18575,7 +18575,7 @@ } }, "scaleway:index/redisCluster:RedisCluster": { - "description": "Creates and manages Scaleway Redisâ„¢ clusters.\nFor more information refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-redis).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.RedisCluster(\"main\", {\n acls: [{\n description: \"Allow all\",\n ip: \"0.0.0.0/0\",\n }],\n clusterSize: 1,\n nodeType: \"RED1-MICRO\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n tags: [\n \"test\",\n \"redis\",\n ],\n tlsEnabled: true,\n userName: \"my_initial_user\",\n version: \"6.2.7\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.RedisCluster(\"main\",\n acls=[scaleway.RedisClusterAclArgs(\n description=\"Allow all\",\n ip=\"0.0.0.0/0\",\n )],\n cluster_size=1,\n node_type=\"RED1-MICRO\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n tags=[\n \"test\",\n \"redis\",\n ],\n tls_enabled=True,\n user_name=\"my_initial_user\",\n version=\"6.2.7\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.RedisCluster(\"main\", new()\n {\n Acls = new[]\n {\n new Scaleway.Inputs.RedisClusterAclArgs\n {\n Description = \"Allow all\",\n Ip = \"0.0.0.0/0\",\n },\n },\n ClusterSize = 1,\n NodeType = \"RED1-MICRO\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n Tags = new[]\n {\n \"test\",\n \"redis\",\n },\n TlsEnabled = true,\n UserName = \"my_initial_user\",\n Version = \"6.2.7\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewRedisCluster(ctx, \"main\", \u0026scaleway.RedisClusterArgs{\n\t\t\tAcls: scaleway.RedisClusterAclArray{\n\t\t\t\t\u0026scaleway.RedisClusterAclArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Allow all\"),\n\t\t\t\t\tIp: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterSize: pulumi.Int(1),\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\tpulumi.String(\"redis\"),\n\t\t\t},\n\t\t\tTlsEnabled: pulumi.Bool(true),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tVersion: pulumi.String(\"6.2.7\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.RedisCluster;\nimport com.pulumi.scaleway.RedisClusterArgs;\nimport com.pulumi.scaleway.inputs.RedisClusterAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new RedisCluster(\"main\", RedisClusterArgs.builder()\n .acls(RedisClusterAclArgs.builder()\n .description(\"Allow all\")\n .ip(\"0.0.0.0/0\")\n .build())\n .clusterSize(1)\n .nodeType(\"RED1-MICRO\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .tags( \n \"test\",\n \"redis\")\n .tlsEnabled(\"true\")\n .userName(\"my_initial_user\")\n .version(\"6.2.7\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:RedisCluster\n properties:\n acls:\n - description: Allow all\n ip: 0.0.0.0/0\n clusterSize: 1\n nodeType: RED1-MICRO\n password: thiZ_is_v\u0026ry_s3cret\n tags:\n - test\n - redis\n tlsEnabled: 'true'\n userName: my_initial_user\n version: 6.2.7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With settings\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.RedisCluster(\"main\", {\n nodeType: \"RED1-MICRO\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n settings: {\n maxclients: \"1000\",\n \"tcp-keepalive\": \"120\",\n },\n userName: \"my_initial_user\",\n version: \"6.2.7\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.RedisCluster(\"main\",\n node_type=\"RED1-MICRO\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n settings={\n \"maxclients\": \"1000\",\n \"tcp-keepalive\": \"120\",\n },\n user_name=\"my_initial_user\",\n version=\"6.2.7\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.RedisCluster(\"main\", new()\n {\n NodeType = \"RED1-MICRO\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n Settings = \n {\n { \"maxclients\", \"1000\" },\n { \"tcp-keepalive\", \"120\" },\n },\n UserName = \"my_initial_user\",\n Version = \"6.2.7\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewRedisCluster(ctx, \"main\", \u0026scaleway.RedisClusterArgs{\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tSettings: pulumi.StringMap{\n\t\t\t\t\"maxclients\": pulumi.String(\"1000\"),\n\t\t\t\t\"tcp-keepalive\": pulumi.String(\"120\"),\n\t\t\t},\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tVersion: pulumi.String(\"6.2.7\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.RedisCluster;\nimport com.pulumi.scaleway.RedisClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new RedisCluster(\"main\", RedisClusterArgs.builder()\n .nodeType(\"RED1-MICRO\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .settings(Map.ofEntries(\n Map.entry(\"maxclients\", \"1000\"),\n Map.entry(\"tcp-keepalive\", \"120\")\n ))\n .userName(\"my_initial_user\")\n .version(\"6.2.7\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:RedisCluster\n properties:\n nodeType: RED1-MICRO\n password: thiZ_is_v\u0026ry_s3cret\n settings:\n maxclients: '1000'\n tcp-keepalive: '120'\n userName: my_initial_user\n version: 6.2.7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a Private Network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst main = new scaleway.RedisCluster(\"main\", {\n version: \"6.2.7\",\n nodeType: \"RED1-MICRO\",\n userName: \"my_initial_user\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n clusterSize: 1,\n privateNetworks: [{\n id: pn.id,\n serviceIps: [\"10.12.1.1/20\"],\n }],\n}, {\n dependsOn: [pn],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\nmain = scaleway.RedisCluster(\"main\",\n version=\"6.2.7\",\n node_type=\"RED1-MICRO\",\n user_name=\"my_initial_user\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n cluster_size=1,\n private_networks=[scaleway.RedisClusterPrivateNetworkArgs(\n id=pn.id,\n service_ips=[\"10.12.1.1/20\"],\n )],\n opts=pulumi.ResourceOptions(depends_on=[pn]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var main = new Scaleway.RedisCluster(\"main\", new()\n {\n Version = \"6.2.7\",\n NodeType = \"RED1-MICRO\",\n UserName = \"my_initial_user\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n ClusterSize = 1,\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.RedisClusterPrivateNetworkArgs\n {\n Id = pn.Id,\n ServiceIps = new[]\n {\n \"10.12.1.1/20\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewRedisCluster(ctx, \"main\", \u0026scaleway.RedisClusterArgs{\n\t\t\tVersion: pulumi.String(\"6.2.7\"),\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tClusterSize: pulumi.Int(1),\n\t\t\tPrivateNetworks: scaleway.RedisClusterPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.RedisClusterPrivateNetworkArgs{\n\t\t\t\t\tId: pn.ID(),\n\t\t\t\t\tServiceIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.12.1.1/20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpn,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.RedisCluster;\nimport com.pulumi.scaleway.RedisClusterArgs;\nimport com.pulumi.scaleway.inputs.RedisClusterPrivateNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var main = new RedisCluster(\"main\", RedisClusterArgs.builder()\n .version(\"6.2.7\")\n .nodeType(\"RED1-MICRO\")\n .userName(\"my_initial_user\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .clusterSize(1)\n .privateNetworks(RedisClusterPrivateNetworkArgs.builder()\n .id(pn.id())\n .serviceIps(\"10.12.1.1/20\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pn)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n main:\n type: scaleway:RedisCluster\n properties:\n version: 6.2.7\n nodeType: RED1-MICRO\n userName: my_initial_user\n password: thiZ_is_v\u0026ry_s3cret\n clusterSize: 1\n privateNetworks:\n - id: ${pn.id}\n serviceIps:\n - 10.12.1.1/20\n options:\n dependson:\n - ${pn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRedisâ„¢ cluster can be imported using the `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/redisCluster:RedisCluster main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages Scaleway Redisâ„¢ clusters.\nFor more information refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-redis).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.RedisCluster(\"main\", {\n acls: [{\n description: \"Allow all\",\n ip: \"0.0.0.0/0\",\n }],\n clusterSize: 1,\n nodeType: \"RED1-MICRO\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n tags: [\n \"test\",\n \"redis\",\n ],\n tlsEnabled: true,\n userName: \"my_initial_user\",\n version: \"6.2.7\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.RedisCluster(\"main\",\n acls=[scaleway.RedisClusterAclArgs(\n description=\"Allow all\",\n ip=\"0.0.0.0/0\",\n )],\n cluster_size=1,\n node_type=\"RED1-MICRO\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n tags=[\n \"test\",\n \"redis\",\n ],\n tls_enabled=True,\n user_name=\"my_initial_user\",\n version=\"6.2.7\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.RedisCluster(\"main\", new()\n {\n Acls = new[]\n {\n new Scaleway.Inputs.RedisClusterAclArgs\n {\n Description = \"Allow all\",\n Ip = \"0.0.0.0/0\",\n },\n },\n ClusterSize = 1,\n NodeType = \"RED1-MICRO\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n Tags = new[]\n {\n \"test\",\n \"redis\",\n },\n TlsEnabled = true,\n UserName = \"my_initial_user\",\n Version = \"6.2.7\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewRedisCluster(ctx, \"main\", \u0026scaleway.RedisClusterArgs{\n\t\t\tAcls: scaleway.RedisClusterAclArray{\n\t\t\t\t\u0026scaleway.RedisClusterAclArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Allow all\"),\n\t\t\t\t\tIp: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterSize: pulumi.Int(1),\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\tpulumi.String(\"redis\"),\n\t\t\t},\n\t\t\tTlsEnabled: pulumi.Bool(true),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tVersion: pulumi.String(\"6.2.7\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.RedisCluster;\nimport com.pulumi.scaleway.RedisClusterArgs;\nimport com.pulumi.scaleway.inputs.RedisClusterAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new RedisCluster(\"main\", RedisClusterArgs.builder()\n .acls(RedisClusterAclArgs.builder()\n .description(\"Allow all\")\n .ip(\"0.0.0.0/0\")\n .build())\n .clusterSize(1)\n .nodeType(\"RED1-MICRO\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .tags( \n \"test\",\n \"redis\")\n .tlsEnabled(\"true\")\n .userName(\"my_initial_user\")\n .version(\"6.2.7\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:RedisCluster\n properties:\n acls:\n - description: Allow all\n ip: 0.0.0.0/0\n clusterSize: 1\n nodeType: RED1-MICRO\n password: thiZ_is_v\u0026ry_s3cret\n tags:\n - test\n - redis\n tlsEnabled: 'true'\n userName: my_initial_user\n version: 6.2.7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With settings\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.RedisCluster(\"main\", {\n nodeType: \"RED1-MICRO\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n settings: {\n maxclients: \"1000\",\n \"tcp-keepalive\": \"120\",\n },\n userName: \"my_initial_user\",\n version: \"6.2.7\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.RedisCluster(\"main\",\n node_type=\"RED1-MICRO\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n settings={\n \"maxclients\": \"1000\",\n \"tcp-keepalive\": \"120\",\n },\n user_name=\"my_initial_user\",\n version=\"6.2.7\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var main = new Scaleway.RedisCluster(\"main\", new()\n {\n NodeType = \"RED1-MICRO\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n Settings = \n {\n { \"maxclients\", \"1000\" },\n { \"tcp-keepalive\", \"120\" },\n },\n UserName = \"my_initial_user\",\n Version = \"6.2.7\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewRedisCluster(ctx, \"main\", \u0026scaleway.RedisClusterArgs{\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tSettings: pulumi.StringMap{\n\t\t\t\t\"maxclients\": pulumi.String(\"1000\"),\n\t\t\t\t\"tcp-keepalive\": pulumi.String(\"120\"),\n\t\t\t},\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tVersion: pulumi.String(\"6.2.7\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.RedisCluster;\nimport com.pulumi.scaleway.RedisClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var main = new RedisCluster(\"main\", RedisClusterArgs.builder()\n .nodeType(\"RED1-MICRO\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .settings(Map.ofEntries(\n Map.entry(\"maxclients\", \"1000\"),\n Map.entry(\"tcp-keepalive\", \"120\")\n ))\n .userName(\"my_initial_user\")\n .version(\"6.2.7\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: scaleway:RedisCluster\n properties:\n nodeType: RED1-MICRO\n password: thiZ_is_v\u0026ry_s3cret\n settings:\n maxclients: '1000'\n tcp-keepalive: '120'\n userName: my_initial_user\n version: 6.2.7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a Private Network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.VpcPrivateNetwork(\"pn\", {});\nconst main = new scaleway.RedisCluster(\"main\", {\n version: \"6.2.7\",\n nodeType: \"RED1-MICRO\",\n userName: \"my_initial_user\",\n password: \"thiZ_is_v\u0026ry_s3cret\",\n clusterSize: 1,\n privateNetworks: [{\n id: pn.id,\n serviceIps: [\"10.12.1.1/20\"],\n }],\n}, {\n dependsOn: [pn],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.VpcPrivateNetwork(\"pn\")\nmain = scaleway.RedisCluster(\"main\",\n version=\"6.2.7\",\n node_type=\"RED1-MICRO\",\n user_name=\"my_initial_user\",\n password=\"thiZ_is_v\u0026ry_s3cret\",\n cluster_size=1,\n private_networks=[scaleway.RedisClusterPrivateNetworkArgs(\n id=pn.id,\n service_ips=[\"10.12.1.1/20\"],\n )],\n opts = pulumi.ResourceOptions(depends_on=[pn]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pn = new Scaleway.VpcPrivateNetwork(\"pn\");\n\n var main = new Scaleway.RedisCluster(\"main\", new()\n {\n Version = \"6.2.7\",\n NodeType = \"RED1-MICRO\",\n UserName = \"my_initial_user\",\n Password = \"thiZ_is_v\u0026ry_s3cret\",\n ClusterSize = 1,\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.RedisClusterPrivateNetworkArgs\n {\n Id = pn.Id,\n ServiceIps = new[]\n {\n \"10.12.1.1/20\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pn,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := scaleway.NewVpcPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewRedisCluster(ctx, \"main\", \u0026scaleway.RedisClusterArgs{\n\t\t\tVersion: pulumi.String(\"6.2.7\"),\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tClusterSize: pulumi.Int(1),\n\t\t\tPrivateNetworks: scaleway.RedisClusterPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.RedisClusterPrivateNetworkArgs{\n\t\t\t\t\tId: pn.ID(),\n\t\t\t\t\tServiceIps: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.12.1.1/20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpn,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.RedisCluster;\nimport com.pulumi.scaleway.RedisClusterArgs;\nimport com.pulumi.scaleway.inputs.RedisClusterPrivateNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pn = new VpcPrivateNetwork(\"pn\");\n\n var main = new RedisCluster(\"main\", RedisClusterArgs.builder()\n .version(\"6.2.7\")\n .nodeType(\"RED1-MICRO\")\n .userName(\"my_initial_user\")\n .password(\"thiZ_is_v\u0026ry_s3cret\")\n .clusterSize(1)\n .privateNetworks(RedisClusterPrivateNetworkArgs.builder()\n .id(pn.id())\n .serviceIps(\"10.12.1.1/20\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pn)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pn:\n type: scaleway:VpcPrivateNetwork\n main:\n type: scaleway:RedisCluster\n properties:\n version: 6.2.7\n nodeType: RED1-MICRO\n userName: my_initial_user\n password: thiZ_is_v\u0026ry_s3cret\n clusterSize: 1\n privateNetworks:\n - id: ${pn.id}\n serviceIps:\n - 10.12.1.1/20\n options:\n dependson:\n - ${pn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRedisâ„¢ cluster can be imported using the `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/redisCluster:RedisCluster main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "acls": { "type": "array", @@ -20594,7 +20594,7 @@ } }, "scaleway:index/vpcPublicGatewayDhcpReservation:VpcPublicGatewayDhcpReservation": { - "description": "Creates and manages [Scaleway DHCP Reservations](https://www.scaleway.com/en/docs/network/vpc/concepts/#dhcp).\n\nThese static associations are used to assign IP addresses based on the MAC addresses of the resource.\n\nStatically assigned IP addresses should fall within the configured subnet, but be outside of the dynamic range.\n\nFor more information, see [the API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-c05544).\n\n[DHCP reservations](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-entries-e40fb6) hold both dynamic DHCP leases (IP addresses dynamically assigned by the gateway to resources) and static user-created DHCP reservations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\", {});\nconst mainInstanceServer = new scaleway.InstanceServer(\"mainInstanceServer\", {\n image: \"ubuntu_jammy\",\n type: \"DEV1-S\",\n zone: \"fr-par-1\",\n privateNetworks: [{\n pnId: mainVpcPrivateNetwork.id,\n }],\n});\nconst mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\", {});\nconst mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", {subnet: \"192.168.1.0/24\"});\nconst mainVpcPublicGateway = new scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", {\n type: \"VPC-GW-S\",\n ipId: mainVpcPublicGatewayIp.id,\n});\nconst mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", {\n gatewayId: mainVpcPublicGateway.id,\n privateNetworkId: mainVpcPrivateNetwork.id,\n dhcpId: mainVpcPublicGatewayDhcp.id,\n cleanupDhcp: true,\n enableMasquerade: true,\n}, {\n dependsOn: [\n mainVpcPublicGatewayIp,\n mainVpcPrivateNetwork,\n ],\n});\nconst mainVpcPublicGatewayDhcpReservation = new scaleway.VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\", {\n gatewayNetworkId: mainVpcGatewayNetwork.id,\n macAddress: mainInstanceServer.privateNetworks.apply(privateNetworks =\u003e privateNetworks?.[0]?.macAddress),\n ipAddress: \"192.168.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_vpc_private_network = scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\")\nmain_instance_server = scaleway.InstanceServer(\"mainInstanceServer\",\n image=\"ubuntu_jammy\",\n type=\"DEV1-S\",\n zone=\"fr-par-1\",\n private_networks=[scaleway.InstanceServerPrivateNetworkArgs(\n pn_id=main_vpc_private_network.id,\n )])\nmain_vpc_public_gateway_ip = scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\")\nmain_vpc_public_gateway_dhcp = scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", subnet=\"192.168.1.0/24\")\nmain_vpc_public_gateway = scaleway.VpcPublicGateway(\"mainVpcPublicGateway\",\n type=\"VPC-GW-S\",\n ip_id=main_vpc_public_gateway_ip.id)\nmain_vpc_gateway_network = scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\",\n gateway_id=main_vpc_public_gateway.id,\n private_network_id=main_vpc_private_network.id,\n dhcp_id=main_vpc_public_gateway_dhcp.id,\n cleanup_dhcp=True,\n enable_masquerade=True,\n opts=pulumi.ResourceOptions(depends_on=[\n main_vpc_public_gateway_ip,\n main_vpc_private_network,\n ]))\nmain_vpc_public_gateway_dhcp_reservation = scaleway.VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\",\n gateway_network_id=main_vpc_gateway_network.id,\n mac_address=main_instance_server.private_networks[0].mac_address,\n ip_address=\"192.168.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n var mainInstanceServer = new Scaleway.InstanceServer(\"mainInstanceServer\", new()\n {\n Image = \"ubuntu_jammy\",\n Type = \"DEV1-S\",\n Zone = \"fr-par-1\",\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.InstanceServerPrivateNetworkArgs\n {\n PnId = mainVpcPrivateNetwork.Id,\n },\n },\n });\n\n var mainVpcPublicGatewayIp = new Scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n var mainVpcPublicGatewayDhcp = new Scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", new()\n {\n Subnet = \"192.168.1.0/24\",\n });\n\n var mainVpcPublicGateway = new Scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", new()\n {\n Type = \"VPC-GW-S\",\n IpId = mainVpcPublicGatewayIp.Id,\n });\n\n var mainVpcGatewayNetwork = new Scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", new()\n {\n GatewayId = mainVpcPublicGateway.Id,\n PrivateNetworkId = mainVpcPrivateNetwork.Id,\n DhcpId = mainVpcPublicGatewayDhcp.Id,\n CleanupDhcp = true,\n EnableMasquerade = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainVpcPublicGatewayIp,\n mainVpcPrivateNetwork,\n },\n });\n\n var mainVpcPublicGatewayDhcpReservation = new Scaleway.VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\", new()\n {\n GatewayNetworkId = mainVpcGatewayNetwork.Id,\n MacAddress = mainInstanceServer.PrivateNetworks.Apply(privateNetworks =\u003e privateNetworks[0]?.MacAddress),\n IpAddress = \"192.168.1.1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainVpcPrivateNetwork, err := scaleway.NewVpcPrivateNetwork(ctx, \"mainVpcPrivateNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainInstanceServer, err := scaleway.NewInstanceServer(ctx, \"mainInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t\tPrivateNetworks: scaleway.InstanceServerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.InstanceServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: mainVpcPrivateNetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcPublicGatewayIp, err := scaleway.NewVpcPublicGatewayIp(ctx, \"mainVpcPublicGatewayIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcPublicGatewayDhcp, err := scaleway.NewVpcPublicGatewayDhcp(ctx, \"mainVpcPublicGatewayDhcp\", \u0026scaleway.VpcPublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"192.168.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcPublicGateway, err := scaleway.NewVpcPublicGateway(ctx, \"mainVpcPublicGateway\", \u0026scaleway.VpcPublicGatewayArgs{\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tIpId: mainVpcPublicGatewayIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcGatewayNetwork, err := scaleway.NewVpcGatewayNetwork(ctx, \"mainVpcGatewayNetwork\", \u0026scaleway.VpcGatewayNetworkArgs{\n\t\t\tGatewayId: mainVpcPublicGateway.ID(),\n\t\t\tPrivateNetworkId: mainVpcPrivateNetwork.ID(),\n\t\t\tDhcpId: mainVpcPublicGatewayDhcp.ID(),\n\t\t\tCleanupDhcp: pulumi.Bool(true),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainVpcPublicGatewayIp,\n\t\t\tmainVpcPrivateNetwork,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewVpcPublicGatewayDhcpReservation(ctx, \"mainVpcPublicGatewayDhcpReservation\", \u0026scaleway.VpcPublicGatewayDhcpReservationArgs{\n\t\t\tGatewayNetworkId: mainVpcGatewayNetwork.ID(),\n\t\t\tMacAddress: mainInstanceServer.PrivateNetworks.ApplyT(func(privateNetworks []scaleway.InstanceServerPrivateNetwork) (*string, error) {\n\t\t\t\treturn \u0026privateNetworks[0].MacAddress, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\tIpAddress: pulumi.String(\"192.168.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerPrivateNetworkArgs;\nimport com.pulumi.scaleway.VpcPublicGatewayIp;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcp;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpArgs;\nimport com.pulumi.scaleway.VpcPublicGateway;\nimport com.pulumi.scaleway.VpcPublicGatewayArgs;\nimport com.pulumi.scaleway.VpcGatewayNetwork;\nimport com.pulumi.scaleway.VpcGatewayNetworkArgs;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpReservation;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpReservationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainVpcPrivateNetwork = new VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n var mainInstanceServer = new InstanceServer(\"mainInstanceServer\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .type(\"DEV1-S\")\n .zone(\"fr-par-1\")\n .privateNetworks(InstanceServerPrivateNetworkArgs.builder()\n .pnId(mainVpcPrivateNetwork.id())\n .build())\n .build());\n\n var mainVpcPublicGatewayIp = new VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n var mainVpcPublicGatewayDhcp = new VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", VpcPublicGatewayDhcpArgs.builder()\n .subnet(\"192.168.1.0/24\")\n .build());\n\n var mainVpcPublicGateway = new VpcPublicGateway(\"mainVpcPublicGateway\", VpcPublicGatewayArgs.builder()\n .type(\"VPC-GW-S\")\n .ipId(mainVpcPublicGatewayIp.id())\n .build());\n\n var mainVpcGatewayNetwork = new VpcGatewayNetwork(\"mainVpcGatewayNetwork\", VpcGatewayNetworkArgs.builder()\n .gatewayId(mainVpcPublicGateway.id())\n .privateNetworkId(mainVpcPrivateNetwork.id())\n .dhcpId(mainVpcPublicGatewayDhcp.id())\n .cleanupDhcp(true)\n .enableMasquerade(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n mainVpcPublicGatewayIp,\n mainVpcPrivateNetwork)\n .build());\n\n var mainVpcPublicGatewayDhcpReservation = new VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\", VpcPublicGatewayDhcpReservationArgs.builder()\n .gatewayNetworkId(mainVpcGatewayNetwork.id())\n .macAddress(mainInstanceServer.privateNetworks().applyValue(privateNetworks -\u003e privateNetworks[0].macAddress()))\n .ipAddress(\"192.168.1.1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainVpcPrivateNetwork:\n type: scaleway:VpcPrivateNetwork\n mainInstanceServer:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n type: DEV1-S\n zone: fr-par-1\n privateNetworks:\n - pnId: ${mainVpcPrivateNetwork.id}\n mainVpcPublicGatewayIp:\n type: scaleway:VpcPublicGatewayIp\n mainVpcPublicGatewayDhcp:\n type: scaleway:VpcPublicGatewayDhcp\n properties:\n subnet: 192.168.1.0/24\n mainVpcPublicGateway:\n type: scaleway:VpcPublicGateway\n properties:\n type: VPC-GW-S\n ipId: ${mainVpcPublicGatewayIp.id}\n mainVpcGatewayNetwork:\n type: scaleway:VpcGatewayNetwork\n properties:\n gatewayId: ${mainVpcPublicGateway.id}\n privateNetworkId: ${mainVpcPrivateNetwork.id}\n dhcpId: ${mainVpcPublicGatewayDhcp.id}\n cleanupDhcp: true\n enableMasquerade: true\n options:\n dependson:\n - ${mainVpcPublicGatewayIp}\n - ${mainVpcPrivateNetwork}\n mainVpcPublicGatewayDhcpReservation:\n type: scaleway:VpcPublicGatewayDhcpReservation\n properties:\n gatewayNetworkId: ${mainVpcGatewayNetwork.id}\n macAddress: ${mainInstanceServer.privateNetworks[0].macAddress}\n ipAddress: 192.168.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway DHCP reservation configurations can be imported using `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayDhcpReservation:VpcPublicGatewayDhcpReservation main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", + "description": "Creates and manages [Scaleway DHCP Reservations](https://www.scaleway.com/en/docs/network/vpc/concepts/#dhcp).\n\nThese static associations are used to assign IP addresses based on the MAC addresses of the resource.\n\nStatically assigned IP addresses should fall within the configured subnet, but be outside of the dynamic range.\n\nFor more information, see [the API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-c05544).\n\n[DHCP reservations](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-entries-e40fb6) hold both dynamic DHCP leases (IP addresses dynamically assigned by the gateway to resources) and static user-created DHCP reservations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainVpcPrivateNetwork = new scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\", {});\nconst mainInstanceServer = new scaleway.InstanceServer(\"mainInstanceServer\", {\n image: \"ubuntu_jammy\",\n type: \"DEV1-S\",\n zone: \"fr-par-1\",\n privateNetworks: [{\n pnId: mainVpcPrivateNetwork.id,\n }],\n});\nconst mainVpcPublicGatewayIp = new scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\", {});\nconst mainVpcPublicGatewayDhcp = new scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", {subnet: \"192.168.1.0/24\"});\nconst mainVpcPublicGateway = new scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", {\n type: \"VPC-GW-S\",\n ipId: mainVpcPublicGatewayIp.id,\n});\nconst mainVpcGatewayNetwork = new scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", {\n gatewayId: mainVpcPublicGateway.id,\n privateNetworkId: mainVpcPrivateNetwork.id,\n dhcpId: mainVpcPublicGatewayDhcp.id,\n cleanupDhcp: true,\n enableMasquerade: true,\n}, {\n dependsOn: [\n mainVpcPublicGatewayIp,\n mainVpcPrivateNetwork,\n ],\n});\nconst mainVpcPublicGatewayDhcpReservation = new scaleway.VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\", {\n gatewayNetworkId: mainVpcGatewayNetwork.id,\n macAddress: mainInstanceServer.privateNetworks.apply(privateNetworks =\u003e privateNetworks?.[0]?.macAddress),\n ipAddress: \"192.168.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_vpc_private_network = scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\")\nmain_instance_server = scaleway.InstanceServer(\"mainInstanceServer\",\n image=\"ubuntu_jammy\",\n type=\"DEV1-S\",\n zone=\"fr-par-1\",\n private_networks=[scaleway.InstanceServerPrivateNetworkArgs(\n pn_id=main_vpc_private_network.id,\n )])\nmain_vpc_public_gateway_ip = scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\")\nmain_vpc_public_gateway_dhcp = scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", subnet=\"192.168.1.0/24\")\nmain_vpc_public_gateway = scaleway.VpcPublicGateway(\"mainVpcPublicGateway\",\n type=\"VPC-GW-S\",\n ip_id=main_vpc_public_gateway_ip.id)\nmain_vpc_gateway_network = scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\",\n gateway_id=main_vpc_public_gateway.id,\n private_network_id=main_vpc_private_network.id,\n dhcp_id=main_vpc_public_gateway_dhcp.id,\n cleanup_dhcp=True,\n enable_masquerade=True,\n opts = pulumi.ResourceOptions(depends_on=[\n main_vpc_public_gateway_ip,\n main_vpc_private_network,\n ]))\nmain_vpc_public_gateway_dhcp_reservation = scaleway.VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\",\n gateway_network_id=main_vpc_gateway_network.id,\n mac_address=main_instance_server.private_networks[0].mac_address,\n ip_address=\"192.168.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mainVpcPrivateNetwork = new Scaleway.VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n var mainInstanceServer = new Scaleway.InstanceServer(\"mainInstanceServer\", new()\n {\n Image = \"ubuntu_jammy\",\n Type = \"DEV1-S\",\n Zone = \"fr-par-1\",\n PrivateNetworks = new[]\n {\n new Scaleway.Inputs.InstanceServerPrivateNetworkArgs\n {\n PnId = mainVpcPrivateNetwork.Id,\n },\n },\n });\n\n var mainVpcPublicGatewayIp = new Scaleway.VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n var mainVpcPublicGatewayDhcp = new Scaleway.VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", new()\n {\n Subnet = \"192.168.1.0/24\",\n });\n\n var mainVpcPublicGateway = new Scaleway.VpcPublicGateway(\"mainVpcPublicGateway\", new()\n {\n Type = \"VPC-GW-S\",\n IpId = mainVpcPublicGatewayIp.Id,\n });\n\n var mainVpcGatewayNetwork = new Scaleway.VpcGatewayNetwork(\"mainVpcGatewayNetwork\", new()\n {\n GatewayId = mainVpcPublicGateway.Id,\n PrivateNetworkId = mainVpcPrivateNetwork.Id,\n DhcpId = mainVpcPublicGatewayDhcp.Id,\n CleanupDhcp = true,\n EnableMasquerade = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mainVpcPublicGatewayIp,\n mainVpcPrivateNetwork,\n },\n });\n\n var mainVpcPublicGatewayDhcpReservation = new Scaleway.VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\", new()\n {\n GatewayNetworkId = mainVpcGatewayNetwork.Id,\n MacAddress = mainInstanceServer.PrivateNetworks.Apply(privateNetworks =\u003e privateNetworks[0]?.MacAddress),\n IpAddress = \"192.168.1.1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainVpcPrivateNetwork, err := scaleway.NewVpcPrivateNetwork(ctx, \"mainVpcPrivateNetwork\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainInstanceServer, err := scaleway.NewInstanceServer(ctx, \"mainInstanceServer\", \u0026scaleway.InstanceServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType: pulumi.String(\"DEV1-S\"),\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t\tPrivateNetworks: scaleway.InstanceServerPrivateNetworkArray{\n\t\t\t\t\u0026scaleway.InstanceServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: mainVpcPrivateNetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcPublicGatewayIp, err := scaleway.NewVpcPublicGatewayIp(ctx, \"mainVpcPublicGatewayIp\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcPublicGatewayDhcp, err := scaleway.NewVpcPublicGatewayDhcp(ctx, \"mainVpcPublicGatewayDhcp\", \u0026scaleway.VpcPublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"192.168.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcPublicGateway, err := scaleway.NewVpcPublicGateway(ctx, \"mainVpcPublicGateway\", \u0026scaleway.VpcPublicGatewayArgs{\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tIpId: mainVpcPublicGatewayIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVpcGatewayNetwork, err := scaleway.NewVpcGatewayNetwork(ctx, \"mainVpcGatewayNetwork\", \u0026scaleway.VpcGatewayNetworkArgs{\n\t\t\tGatewayId: mainVpcPublicGateway.ID(),\n\t\t\tPrivateNetworkId: mainVpcPrivateNetwork.ID(),\n\t\t\tDhcpId: mainVpcPublicGatewayDhcp.ID(),\n\t\t\tCleanupDhcp: pulumi.Bool(true),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainVpcPublicGatewayIp,\n\t\t\tmainVpcPrivateNetwork,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = scaleway.NewVpcPublicGatewayDhcpReservation(ctx, \"mainVpcPublicGatewayDhcpReservation\", \u0026scaleway.VpcPublicGatewayDhcpReservationArgs{\n\t\t\tGatewayNetworkId: mainVpcGatewayNetwork.ID(),\n\t\t\tMacAddress: pulumi.String(mainInstanceServer.PrivateNetworks.ApplyT(func(privateNetworks []scaleway.InstanceServerPrivateNetwork) (*string, error) {\n\t\t\t\treturn \u0026privateNetworks[0].MacAddress, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tIpAddress: pulumi.String(\"192.168.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.scaleway.VpcPrivateNetwork;\nimport com.pulumi.scaleway.InstanceServer;\nimport com.pulumi.scaleway.InstanceServerArgs;\nimport com.pulumi.scaleway.inputs.InstanceServerPrivateNetworkArgs;\nimport com.pulumi.scaleway.VpcPublicGatewayIp;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcp;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpArgs;\nimport com.pulumi.scaleway.VpcPublicGateway;\nimport com.pulumi.scaleway.VpcPublicGatewayArgs;\nimport com.pulumi.scaleway.VpcGatewayNetwork;\nimport com.pulumi.scaleway.VpcGatewayNetworkArgs;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpReservation;\nimport com.pulumi.scaleway.VpcPublicGatewayDhcpReservationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mainVpcPrivateNetwork = new VpcPrivateNetwork(\"mainVpcPrivateNetwork\");\n\n var mainInstanceServer = new InstanceServer(\"mainInstanceServer\", InstanceServerArgs.builder()\n .image(\"ubuntu_jammy\")\n .type(\"DEV1-S\")\n .zone(\"fr-par-1\")\n .privateNetworks(InstanceServerPrivateNetworkArgs.builder()\n .pnId(mainVpcPrivateNetwork.id())\n .build())\n .build());\n\n var mainVpcPublicGatewayIp = new VpcPublicGatewayIp(\"mainVpcPublicGatewayIp\");\n\n var mainVpcPublicGatewayDhcp = new VpcPublicGatewayDhcp(\"mainVpcPublicGatewayDhcp\", VpcPublicGatewayDhcpArgs.builder()\n .subnet(\"192.168.1.0/24\")\n .build());\n\n var mainVpcPublicGateway = new VpcPublicGateway(\"mainVpcPublicGateway\", VpcPublicGatewayArgs.builder()\n .type(\"VPC-GW-S\")\n .ipId(mainVpcPublicGatewayIp.id())\n .build());\n\n var mainVpcGatewayNetwork = new VpcGatewayNetwork(\"mainVpcGatewayNetwork\", VpcGatewayNetworkArgs.builder()\n .gatewayId(mainVpcPublicGateway.id())\n .privateNetworkId(mainVpcPrivateNetwork.id())\n .dhcpId(mainVpcPublicGatewayDhcp.id())\n .cleanupDhcp(true)\n .enableMasquerade(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n mainVpcPublicGatewayIp,\n mainVpcPrivateNetwork)\n .build());\n\n var mainVpcPublicGatewayDhcpReservation = new VpcPublicGatewayDhcpReservation(\"mainVpcPublicGatewayDhcpReservation\", VpcPublicGatewayDhcpReservationArgs.builder()\n .gatewayNetworkId(mainVpcGatewayNetwork.id())\n .macAddress(mainInstanceServer.privateNetworks().applyValue(privateNetworks -\u003e privateNetworks[0].macAddress()))\n .ipAddress(\"192.168.1.1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mainVpcPrivateNetwork:\n type: scaleway:VpcPrivateNetwork\n mainInstanceServer:\n type: scaleway:InstanceServer\n properties:\n image: ubuntu_jammy\n type: DEV1-S\n zone: fr-par-1\n privateNetworks:\n - pnId: ${mainVpcPrivateNetwork.id}\n mainVpcPublicGatewayIp:\n type: scaleway:VpcPublicGatewayIp\n mainVpcPublicGatewayDhcp:\n type: scaleway:VpcPublicGatewayDhcp\n properties:\n subnet: 192.168.1.0/24\n mainVpcPublicGateway:\n type: scaleway:VpcPublicGateway\n properties:\n type: VPC-GW-S\n ipId: ${mainVpcPublicGatewayIp.id}\n mainVpcGatewayNetwork:\n type: scaleway:VpcGatewayNetwork\n properties:\n gatewayId: ${mainVpcPublicGateway.id}\n privateNetworkId: ${mainVpcPrivateNetwork.id}\n dhcpId: ${mainVpcPublicGatewayDhcp.id}\n cleanupDhcp: true\n enableMasquerade: true\n options:\n dependson:\n - ${mainVpcPublicGatewayIp}\n - ${mainVpcPrivateNetwork}\n mainVpcPublicGatewayDhcpReservation:\n type: scaleway:VpcPublicGatewayDhcpReservation\n properties:\n gatewayNetworkId: ${mainVpcGatewayNetwork.id}\n macAddress: ${mainInstanceServer.privateNetworks[0].macAddress}\n ipAddress: 192.168.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway DHCP reservation configurations can be imported using `{zone}/{id}`, e.g.\n\nbash\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayDhcpReservation:VpcPublicGatewayDhcpReservation main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n", "properties": { "createdAt": { "type": "string", diff --git a/provider/go.mod b/provider/go.mod index 636ff9b4..cd7e9cb6 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -5,8 +5,8 @@ go 1.22 toolchain go1.22.4 require ( - github.com/pulumi/pulumi-terraform-bridge/v3 v3.84.0 - github.com/pulumi/pulumi/sdk/v3 v3.118.0 + github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 github.com/scaleway/terraform-provider-scaleway/v2/shim v0.0.0-00010101000000-000000000000 ) @@ -25,9 +25,9 @@ require ( cloud.google.com/go/longrunning v0.5.5 // indirect cloud.google.com/go/storage v1.39.1 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect @@ -65,7 +65,7 @@ require ( github.com/blang/semver v3.5.1+incompatible // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.24.2 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.7 // indirect @@ -80,7 +80,6 @@ require ( github.com/ettle/strcase v0.1.1 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.12.0 // indirect @@ -109,7 +108,7 @@ require ( github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-getter v1.7.5 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-plugin v1.6.0 // indirect @@ -182,16 +181,17 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/posener/complete v1.2.3 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.6.2 // indirect + github.com/pulumi/esc v0.9.1 // indirect + github.com/pulumi/inflector v0.1.1 // indirect github.com/pulumi/pulumi-java/pkg v0.11.0 // indirect github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8 // indirect - github.com/pulumi/pulumi-yaml v1.7.0 // indirect - github.com/pulumi/pulumi/pkg/v3 v3.118.0 // indirect + github.com/pulumi/pulumi-yaml v1.9.1 // indirect + github.com/pulumi/pulumi/pkg/v3 v3.126.0 // indirect github.com/pulumi/schema-tools v0.1.2 // indirect github.com/pulumi/terraform-diff-reader v0.0.2 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect @@ -231,16 +231,16 @@ require ( gocloud.dev v0.37.0 // indirect gocloud.dev/secrets/hashivault v0.37.0 // indirect golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/term v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect + golang.org/x/tools v0.22.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/appengine v1.6.8 // indirect diff --git a/provider/go.sum b/provider/go.sum index 0472f508..634b7403 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1152,12 +1152,12 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= @@ -1296,8 +1296,8 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= @@ -1395,8 +1395,6 @@ github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3 github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 h1:Uc+IZ7gYqAf/rSGFplbWBSHaGolEQlNLgMgSE3ccnIQ= -github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813/go.mod h1:P+oSoE9yhSRvsmYyZsshflcR6ePWYLql6UU1amW13IM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= @@ -1613,8 +1611,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= @@ -1937,22 +1935,24 @@ github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3d github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= -github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/providertest v0.0.11 h1:mg8MQ7Cq7+9XlHIkBD+aCqQO4mwAJEISngZgVdnQUe8= -github.com/pulumi/providertest v0.0.11/go.mod h1:HsxjVsytcMIuNj19w1lT2W0QXY0oReXl1+h6eD2JXP8= +github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= +github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= +github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+SobA= +github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY= +github.com/pulumi/providertest v0.0.14 h1:5QlAPAAs82jkQraHsJvq1xgVfC7xtW8sFJwv2pHgxQ8= +github.com/pulumi/providertest v0.0.14/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0= github.com/pulumi/pulumi-java/pkg v0.11.0 h1:Jw9gBvyfmfOMq/EkYDm9+zGPxsDAA8jfeMpHmtZ+1oA= github.com/pulumi/pulumi-java/pkg v0.11.0/go.mod h1:sXAk25P47AQVQL6ilAbFmRNgZykC7og/+87ihnqzFTc= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.84.0 h1:WgRvBOGMkuUE6XLq0wzp27RkWuucrKLRPVB/5+7tBwU= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.84.0/go.mod h1:ju1Cn9qmqkStWP0Hyfzt3NOm+PnaiWnodXGx3TYaGyU= +github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0 h1:0W2Y3Fk7VAWHpjD3FwzVnqWo7g1hD+96C0YDobMnvDU= +github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0/go.mod h1:QSDiqiCMMbfzrsp3oyRPWgSVE/dkVH5ujxoFappqjdo= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8 h1:mav2tSitA9BPJPLLahKgepHyYsMzwaTm4cvp0dcTMYw= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8/go.mod h1:qUYk2c9i/yqMGNj9/bQyXpS39BxNDSXYjVN1njnq0zY= -github.com/pulumi/pulumi-yaml v1.7.0 h1:SbFSaqkH8UiMEy0ZSH9sHLQlmV8so0iCLfvLbPtVP7s= -github.com/pulumi/pulumi-yaml v1.7.0/go.mod h1:pCfYHSRmdl+5dM/7eT2uDQS528YOhAhiqbn9pwRzW20= -github.com/pulumi/pulumi/pkg/v3 v3.118.0 h1:i2OJe0Rl6BDxupJ0ix9HczAGKUsc6H6cU9svwDe1TYk= -github.com/pulumi/pulumi/pkg/v3 v3.118.0/go.mod h1:fbDHFdEJtFRkHu3Q6Sd7X3PalUsIXLbHT/pHfsbldlo= -github.com/pulumi/pulumi/sdk/v3 v3.118.0 h1:NboaaB4cNuehzsax38PO1jZOS6Mzbx/jNaDNaHPmg4c= -github.com/pulumi/pulumi/sdk/v3 v3.118.0/go.mod h1:kNea72+FQk82OjZ3yEP4dl6nbAl2ngE8PDBc0iFAaHg= +github.com/pulumi/pulumi-yaml v1.9.1 h1:JPeI80M23SPactxgnCFS1casZlSr7ZhAXwSx4H55QQ4= +github.com/pulumi/pulumi-yaml v1.9.1/go.mod h1:OH0R34yJxA5u6zjYBN4JXcWoEvfkRoOVWi6viu8buoA= +github.com/pulumi/pulumi/pkg/v3 v3.126.0 h1:XaZU1ehjHN2I5ihkfwxK/UFMDiCDM9FSt2TBnbldAx4= +github.com/pulumi/pulumi/pkg/v3 v3.126.0/go.mod h1:1P4/oK9zceOJUm48QQl/TqjDN68lfsdnTR1FITTFddw= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k= github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI= @@ -1972,8 +1972,9 @@ github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYe github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= @@ -2173,8 +2174,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2224,8 +2225,8 @@ golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2303,8 +2304,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2603,8 +2604,8 @@ golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/sdk/go.mod b/sdk/go.mod index c715e6ab..499d12d2 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -6,11 +6,12 @@ toolchain go1.22.4 require ( github.com/blang/semver v3.5.1+incompatible - github.com/pulumi/pulumi/sdk/v3 v3.118.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 ) require ( dario.cat/mergo v1.0.0 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect @@ -19,7 +20,7 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.24.2 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.7 // indirect @@ -58,7 +59,7 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pkg/term v1.1.0 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.6.2 // indirect + github.com/pulumi/esc v0.9.1 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect @@ -75,15 +76,15 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/zclconf/go-cty v1.13.2 // indirect go.uber.org/atomic v1.9.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.15.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect diff --git a/sdk/go.sum b/sdk/go.sum index eee4f15a..7c377224 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -1,5 +1,7 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -26,8 +28,8 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= @@ -146,10 +148,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= -github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/pulumi/sdk/v3 v3.118.0 h1:NboaaB4cNuehzsax38PO1jZOS6Mzbx/jNaDNaHPmg4c= -github.com/pulumi/pulumi/sdk/v3 v3.118.0/go.mod h1:kNea72+FQk82OjZ3yEP4dl6nbAl2ngE8PDBc0iFAaHg= +github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= +github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= @@ -205,18 +207,18 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -228,15 +230,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -257,15 +259,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -273,8 +275,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -283,8 +285,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/sdk/go/scaleway/instanceServer.go b/sdk/go/scaleway/instanceServer.go index a5d26999..bd359235 100644 --- a/sdk/go/scaleway/instanceServer.go +++ b/sdk/go/scaleway/instanceServer.go @@ -216,7 +216,7 @@ import ( // Image: pulumi.String("ubuntu_jammy"), // UserData: pulumi.StringMap{ // "foo": pulumi.String("bar"), -// "cloud-init": readFileOrPanic(fmt.Sprintf("%v/cloud-init.yml", path.Module)), +// "cloud-init": pulumi.String(readFileOrPanic(fmt.Sprintf("%v/cloud-init.yml", path.Module))), // }, // }) // if err != nil { diff --git a/sdk/go/scaleway/kubernetesCluster.go b/sdk/go/scaleway/kubernetesCluster.go index 6a83245e..36bdcd70 100644 --- a/sdk/go/scaleway/kubernetesCluster.go +++ b/sdk/go/scaleway/kubernetesCluster.go @@ -131,7 +131,7 @@ import ( // Expander: pulumi.String("random"), // IgnoreDaemonsetsUtilization: pulumi.Bool(true), // BalanceSimilarNodeGroups: pulumi.Bool(true), -// ExpendablePodsPriorityCutoff: -5, +// ExpendablePodsPriorityCutoff: int(-5), // }, // }) // if err != nil { diff --git a/sdk/go/scaleway/objectBucketPolicy.go b/sdk/go/scaleway/objectBucketPolicy.go index 73e18f13..38e365ea 100644 --- a/sdk/go/scaleway/objectBucketPolicy.go +++ b/sdk/go/scaleway/objectBucketPolicy.go @@ -303,9 +303,9 @@ import ( // }, nil) // _, err = scaleway.NewObjectBucketPolicy(ctx, "main", &scaleway.ObjectBucketPolicyArgs{ // Bucket: bucket.ID(), -// Policy: policy.ApplyT(func(policy iam.GetPolicyDocumentResult) (*string, error) { +// Policy: pulumi.String(policy.ApplyT(func(policy iam.GetPolicyDocumentResult) (*string, error) { // return &policy.Json, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // }) // if err != nil { // return err diff --git a/sdk/go/scaleway/vpcPublicGatewayDhcpReservation.go b/sdk/go/scaleway/vpcPublicGatewayDhcpReservation.go index 19b3d993..a0526bf4 100644 --- a/sdk/go/scaleway/vpcPublicGatewayDhcpReservation.go +++ b/sdk/go/scaleway/vpcPublicGatewayDhcpReservation.go @@ -85,9 +85,9 @@ import ( // } // _, err = scaleway.NewVpcPublicGatewayDhcpReservation(ctx, "mainVpcPublicGatewayDhcpReservation", &scaleway.VpcPublicGatewayDhcpReservationArgs{ // GatewayNetworkId: mainVpcGatewayNetwork.ID(), -// MacAddress: mainInstanceServer.PrivateNetworks.ApplyT(func(privateNetworks []scaleway.InstanceServerPrivateNetwork) (*string, error) { +// MacAddress: pulumi.String(mainInstanceServer.PrivateNetworks.ApplyT(func(privateNetworks []scaleway.InstanceServerPrivateNetwork) (*string, error) { // return &privateNetworks[0].MacAddress, nil -// }).(pulumi.StringPtrOutput), +// }).(pulumi.StringPtrOutput)), // IpAddress: pulumi.String("192.168.1.1"), // }) // if err != nil { diff --git a/sdk/python/pulumiverse_scaleway/_inputs.py b/sdk/python/pulumiverse_scaleway/_inputs.py index c8ddb481..56bf84bf 100644 --- a/sdk/python/pulumiverse_scaleway/_inputs.py +++ b/sdk/python/pulumiverse_scaleway/_inputs.py @@ -867,13 +867,11 @@ def queue(self, value: pulumi.Input[str]): @property @pulumi.getter(name="namespaceId") + @_utilities.deprecated("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") def namespace_id(self) -> Optional[pulumi.Input[str]]: """ ID of the mnq namespace. Deprecated. """ - warnings.warn("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""", DeprecationWarning) - pulumi.log.warn("""namespace_id is deprecated: The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") - return pulumi.get(self, "namespace_id") @namespace_id.setter @@ -2199,13 +2197,11 @@ def queue(self, value: pulumi.Input[str]): @property @pulumi.getter(name="namespaceId") + @_utilities.deprecated("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") def namespace_id(self) -> Optional[pulumi.Input[str]]: """ ID of the mnq namespace. Deprecated. """ - warnings.warn("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""", DeprecationWarning) - pulumi.log.warn("""namespace_id is deprecated: The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") - return pulumi.get(self, "namespace_id") @namespace_id.setter @@ -2568,13 +2564,11 @@ def action(self, value: pulumi.Input[str]): @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[pulumi.Input[str]]: """ The ip this rule apply to. If no `ip` nor `ip_range` are specified, rule will apply to all ip. Only one of `ip` and `ip_range` should be specified. """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @ip.setter @@ -2676,13 +2670,11 @@ def action(self, value: pulumi.Input[str]): @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[pulumi.Input[str]]: """ Ip address for this rule (e.g: 1.1.1.1). Only one of ip or ip_range should be provided """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @ip.setter @@ -2784,13 +2776,11 @@ def action(self, value: pulumi.Input[str]): @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[pulumi.Input[str]]: """ The ip this rule apply to. If no `ip` nor `ip_range` are specified, rule will apply to all ip. Only one of `ip` and `ip_range` should be specified. """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @ip.setter @@ -2892,13 +2882,11 @@ def action(self, value: pulumi.Input[str]): @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[pulumi.Input[str]]: """ Ip address for this rule (e.g: 1.1.1.1). Only one of ip or ip_range should be provided """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @ip.setter @@ -5086,13 +5074,11 @@ def dhcp_config(self, value: Optional[pulumi.Input[bool]]): @property @pulumi.getter(name="staticConfig") + @_utilities.deprecated("""static_config field is deprecated, please use dhcp_config instead""") def static_config(self) -> Optional[pulumi.Input[str]]: """ (Deprecated) Please use `dhcp_config`. Define a local ip address of your choice for the load balancer instance. """ - warnings.warn("""static_config field is deprecated, please use dhcp_config instead""", DeprecationWarning) - pulumi.log.warn("""static_config is deprecated: static_config field is deprecated, please use dhcp_config instead""") - return pulumi.get(self, "static_config") @static_config.setter diff --git a/sdk/python/pulumiverse_scaleway/_utilities.py b/sdk/python/pulumiverse_scaleway/_utilities.py index b7a29b8a..e1b33722 100644 --- a/sdk/python/pulumiverse_scaleway/_utilities.py +++ b/sdk/python/pulumiverse_scaleway/_utilities.py @@ -4,6 +4,7 @@ import asyncio +import functools import importlib.metadata import importlib.util import inspect @@ -11,14 +12,19 @@ import os import sys import typing +import warnings +import base64 import pulumi import pulumi.runtime from pulumi.runtime.sync_await import _sync_await +from pulumi.runtime.proto import resource_pb2 from semver import VersionInfo as SemverVersion from parver import Version as PEP440Version +C = typing.TypeVar("C", bound=typing.Callable) + def get_env(*args): for v in args: @@ -96,10 +102,6 @@ def _get_semver_version(): _version = _get_semver_version() _version_str = str(_version) - -def get_version(): - return _version_str - def get_resource_opts_defaults() -> pulumi.ResourceOptions: return pulumi.ResourceOptions( version=get_version(), @@ -287,5 +289,39 @@ async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bo await o._resources, ) + +# This is included to provide an upgrade path for users who are using a version +# of the Pulumi SDK (<3.121.0) that does not include the `deprecated` decorator. +def deprecated(message: str) -> typing.Callable[[C], C]: + """ + Decorator to indicate a function is deprecated. + + As well as inserting appropriate statements to indicate that the function is + deprecated, this decorator also tags the function with a special attribute + so that Pulumi code can detect that it is deprecated and react appropriately + in certain situations. + + message is the deprecation message that should be printed if the function is called. + """ + + def decorator(fn: C) -> C: + if not callable(fn): + raise TypeError("Expected fn to be callable") + + @functools.wraps(fn) + def deprecated_fn(*args, **kwargs): + warnings.warn(message) + pulumi.warn(f"{fn.__name__} is deprecated: {message}") + + return fn(*args, **kwargs) + + deprecated_fn.__dict__["_pulumi_deprecated_callable"] = fn + return typing.cast(C, deprecated_fn) + + return decorator + def get_plugin_download_url(): return "github://api.github.com/pulumiverse" + +def get_version(): + return _version_str diff --git a/sdk/python/pulumiverse_scaleway/container_namespace.py b/sdk/python/pulumiverse_scaleway/container_namespace.py index dcaf45d3..aeed64cb 100644 --- a/sdk/python/pulumiverse_scaleway/container_namespace.py +++ b/sdk/python/pulumiverse_scaleway/container_namespace.py @@ -65,13 +65,11 @@ def description(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="destroyRegistry") + @_utilities.deprecated("""Registry namespace is automatically destroyed with namespace""") def destroy_registry(self) -> Optional[pulumi.Input[bool]]: """ Destroy registry on deletion """ - warnings.warn("""Registry namespace is automatically destroyed with namespace""", DeprecationWarning) - pulumi.log.warn("""destroy_registry is deprecated: Registry namespace is automatically destroyed with namespace""") - return pulumi.get(self, "destroy_registry") @destroy_registry.setter @@ -207,13 +205,11 @@ def description(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="destroyRegistry") + @_utilities.deprecated("""Registry namespace is automatically destroyed with namespace""") def destroy_registry(self) -> Optional[pulumi.Input[bool]]: """ Destroy registry on deletion """ - warnings.warn("""Registry namespace is automatically destroyed with namespace""", DeprecationWarning) - pulumi.log.warn("""destroy_registry is deprecated: Registry namespace is automatically destroyed with namespace""") - return pulumi.get(self, "destroy_registry") @destroy_registry.setter @@ -509,13 +505,11 @@ def description(self) -> pulumi.Output[Optional[str]]: @property @pulumi.getter(name="destroyRegistry") + @_utilities.deprecated("""Registry namespace is automatically destroyed with namespace""") def destroy_registry(self) -> pulumi.Output[Optional[bool]]: """ Destroy registry on deletion """ - warnings.warn("""Registry namespace is automatically destroyed with namespace""", DeprecationWarning) - pulumi.log.warn("""destroy_registry is deprecated: Registry namespace is automatically destroyed with namespace""") - return pulumi.get(self, "destroy_registry") @property diff --git a/sdk/python/pulumiverse_scaleway/database_instance.py b/sdk/python/pulumiverse_scaleway/database_instance.py index d8e125f9..59dc1508 100644 --- a/sdk/python/pulumiverse_scaleway/database_instance.py +++ b/sdk/python/pulumiverse_scaleway/database_instance.py @@ -556,13 +556,11 @@ def disable_backup(self, value: Optional[pulumi.Input[bool]]): @property @pulumi.getter(name="endpointIp") + @_utilities.deprecated("""Please use the private_network or the load_balancer attribute""") def endpoint_ip(self) -> Optional[pulumi.Input[str]]: """ (Deprecated) The IP of the Database Instance. """ - warnings.warn("""Please use the private_network or the load_balancer attribute""", DeprecationWarning) - pulumi.log.warn("""endpoint_ip is deprecated: Please use the private_network or the load_balancer attribute""") - return pulumi.get(self, "endpoint_ip") @endpoint_ip.setter @@ -1400,13 +1398,11 @@ def disable_backup(self) -> pulumi.Output[Optional[bool]]: @property @pulumi.getter(name="endpointIp") + @_utilities.deprecated("""Please use the private_network or the load_balancer attribute""") def endpoint_ip(self) -> pulumi.Output[str]: """ (Deprecated) The IP of the Database Instance. """ - warnings.warn("""Please use the private_network or the load_balancer attribute""", DeprecationWarning) - pulumi.log.warn("""endpoint_ip is deprecated: Please use the private_network or the load_balancer attribute""") - return pulumi.get(self, "endpoint_ip") @property diff --git a/sdk/python/pulumiverse_scaleway/documentdb_private_network_endpoint.py b/sdk/python/pulumiverse_scaleway/documentdb_private_network_endpoint.py index fd891720..b79d4873 100644 --- a/sdk/python/pulumiverse_scaleway/documentdb_private_network_endpoint.py +++ b/sdk/python/pulumiverse_scaleway/documentdb_private_network_endpoint.py @@ -177,7 +177,7 @@ def __init__(__self__, ip_net="172.16.32.3/22", id=pn.id, ), - opts=pulumi.ResourceOptions(depends_on=[pn])) + opts = pulumi.ResourceOptions(depends_on=[pn])) ``` ## Import @@ -231,7 +231,7 @@ def __init__(__self__, ip_net="172.16.32.3/22", id=pn.id, ), - opts=pulumi.ResourceOptions(depends_on=[pn])) + opts = pulumi.ResourceOptions(depends_on=[pn])) ``` ## Import diff --git a/sdk/python/pulumiverse_scaleway/function_domain.py b/sdk/python/pulumiverse_scaleway/function_domain.py index 1a339f67..cb28771a 100644 --- a/sdk/python/pulumiverse_scaleway/function_domain.py +++ b/sdk/python/pulumiverse_scaleway/function_domain.py @@ -181,7 +181,7 @@ def __init__(__self__, main_function_domain = scaleway.FunctionDomain("mainFunctionDomain", function_id=main_function.id, hostname="example.com", - opts=pulumi.ResourceOptions(depends_on=[main_function])) + opts = pulumi.ResourceOptions(depends_on=[main_function])) ``` ## Import @@ -232,7 +232,7 @@ def __init__(__self__, main_function_domain = scaleway.FunctionDomain("mainFunctionDomain", function_id=main_function.id, hostname="example.com", - opts=pulumi.ResourceOptions(depends_on=[main_function])) + opts = pulumi.ResourceOptions(depends_on=[main_function])) ``` ## Import diff --git a/sdk/python/pulumiverse_scaleway/instance_snapshot.py b/sdk/python/pulumiverse_scaleway/instance_snapshot.py index ba50bb18..201d3033 100644 --- a/sdk/python/pulumiverse_scaleway/instance_snapshot.py +++ b/sdk/python/pulumiverse_scaleway/instance_snapshot.py @@ -360,7 +360,7 @@ def __init__(__self__, main_instance_snapshot = scaleway.InstanceSnapshot("mainInstanceSnapshot", volume_id=main_instance_volume.id, type="unified", - opts=pulumi.ResourceOptions(depends_on=[main_instance_server])) + opts = pulumi.ResourceOptions(depends_on=[main_instance_server])) ``` ### Example importing a local qcow2 file @@ -445,7 +445,7 @@ def __init__(__self__, main_instance_snapshot = scaleway.InstanceSnapshot("mainInstanceSnapshot", volume_id=main_instance_volume.id, type="unified", - opts=pulumi.ResourceOptions(depends_on=[main_instance_server])) + opts = pulumi.ResourceOptions(depends_on=[main_instance_server])) ``` ### Example importing a local qcow2 file diff --git a/sdk/python/pulumiverse_scaleway/loadbalancer.py b/sdk/python/pulumiverse_scaleway/loadbalancer.py index ae818603..e72cdd9e 100644 --- a/sdk/python/pulumiverse_scaleway/loadbalancer.py +++ b/sdk/python/pulumiverse_scaleway/loadbalancer.py @@ -129,15 +129,13 @@ def description(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="ipId") + @_utilities.deprecated("""Please use ip_ids""") def ip_id(self) -> Optional[pulumi.Input[str]]: """ The ID of the associated Load Balancer IP. See below. > **Important:** Updates to `ip_id` will recreate the Load Balancer. """ - warnings.warn("""Please use ip_ids""", DeprecationWarning) - pulumi.log.warn("""ip_id is deprecated: Please use ip_ids""") - return pulumi.get(self, "ip_id") @ip_id.setter @@ -194,13 +192,11 @@ def project_id(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="releaseIp") + @_utilities.deprecated("""The resource ip will be destroyed by it's own resource. Please set this to `false`""") def release_ip(self) -> Optional[pulumi.Input[bool]]: """ The `release_ip` allow the release of the IP address associated with the Load Balancer. """ - warnings.warn("""The resource ip will be destroyed by it's own resource. Please set this to `false`""", DeprecationWarning) - pulumi.log.warn("""release_ip is deprecated: The resource ip will be destroyed by it's own resource. Please set this to `false`""") - return pulumi.get(self, "release_ip") @release_ip.setter @@ -377,15 +373,13 @@ def ip_address(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="ipId") + @_utilities.deprecated("""Please use ip_ids""") def ip_id(self) -> Optional[pulumi.Input[str]]: """ The ID of the associated Load Balancer IP. See below. > **Important:** Updates to `ip_id` will recreate the Load Balancer. """ - warnings.warn("""Please use ip_ids""", DeprecationWarning) - pulumi.log.warn("""ip_id is deprecated: Please use ip_ids""") - return pulumi.get(self, "ip_id") @ip_id.setter @@ -478,13 +472,11 @@ def region(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="releaseIp") + @_utilities.deprecated("""The resource ip will be destroyed by it's own resource. Please set this to `false`""") def release_ip(self) -> Optional[pulumi.Input[bool]]: """ The `release_ip` allow the release of the IP address associated with the Load Balancer. """ - warnings.warn("""The resource ip will be destroyed by it's own resource. Please set this to `false`""", DeprecationWarning) - pulumi.log.warn("""release_ip is deprecated: The resource ip will be destroyed by it's own resource. Please set this to `false`""") - return pulumi.get(self, "release_ip") @release_ip.setter @@ -649,7 +641,7 @@ def __init__(__self__, private_network_id=main_vpc_private_network.id, dhcp_config=True, )], - opts=pulumi.ResourceOptions(depends_on=[main_vpc_public_gateway])) + opts = pulumi.ResourceOptions(depends_on=[main_vpc_public_gateway])) ``` ## Migration @@ -816,7 +808,7 @@ def __init__(__self__, private_network_id=main_vpc_private_network.id, dhcp_config=True, )], - opts=pulumi.ResourceOptions(depends_on=[main_vpc_public_gateway])) + opts = pulumi.ResourceOptions(depends_on=[main_vpc_public_gateway])) ``` ## Migration @@ -1036,15 +1028,13 @@ def ip_address(self) -> pulumi.Output[str]: @property @pulumi.getter(name="ipId") + @_utilities.deprecated("""Please use ip_ids""") def ip_id(self) -> pulumi.Output[str]: """ The ID of the associated Load Balancer IP. See below. > **Important:** Updates to `ip_id` will recreate the Load Balancer. """ - warnings.warn("""Please use ip_ids""", DeprecationWarning) - pulumi.log.warn("""ip_id is deprecated: Please use ip_ids""") - return pulumi.get(self, "ip_id") @property @@ -1105,13 +1095,11 @@ def region(self) -> pulumi.Output[str]: @property @pulumi.getter(name="releaseIp") + @_utilities.deprecated("""The resource ip will be destroyed by it's own resource. Please set this to `false`""") def release_ip(self) -> pulumi.Output[Optional[bool]]: """ The `release_ip` allow the release of the IP address associated with the Load Balancer. """ - warnings.warn("""The resource ip will be destroyed by it's own resource. Please set this to `false`""", DeprecationWarning) - pulumi.log.warn("""release_ip is deprecated: The resource ip will be destroyed by it's own resource. Please set this to `false`""") - return pulumi.get(self, "release_ip") @property diff --git a/sdk/python/pulumiverse_scaleway/loadbalancer_backend.py b/sdk/python/pulumiverse_scaleway/loadbalancer_backend.py index c1829c4c..45d92acb 100644 --- a/sdk/python/pulumiverse_scaleway/loadbalancer_backend.py +++ b/sdk/python/pulumiverse_scaleway/loadbalancer_backend.py @@ -386,13 +386,11 @@ def redispatch_attempt_count(self, value: Optional[pulumi.Input[int]]): @property @pulumi.getter(name="sendProxyV2") + @_utilities.deprecated("""Please use proxy_protocol instead""") def send_proxy_v2(self) -> Optional[pulumi.Input[bool]]: """ Enables PROXY protocol version 2 """ - warnings.warn("""Please use proxy_protocol instead""", DeprecationWarning) - pulumi.log.warn("""send_proxy_v2 is deprecated: Please use proxy_protocol instead""") - return pulumi.get(self, "send_proxy_v2") @send_proxy_v2.setter @@ -872,13 +870,11 @@ def redispatch_attempt_count(self, value: Optional[pulumi.Input[int]]): @property @pulumi.getter(name="sendProxyV2") + @_utilities.deprecated("""Please use proxy_protocol instead""") def send_proxy_v2(self) -> Optional[pulumi.Input[bool]]: """ Enables PROXY protocol version 2 """ - warnings.warn("""Please use proxy_protocol instead""", DeprecationWarning) - pulumi.log.warn("""send_proxy_v2 is deprecated: Please use proxy_protocol instead""") - return pulumi.get(self, "send_proxy_v2") @send_proxy_v2.setter @@ -1510,13 +1506,11 @@ def redispatch_attempt_count(self) -> pulumi.Output[Optional[int]]: @property @pulumi.getter(name="sendProxyV2") + @_utilities.deprecated("""Please use proxy_protocol instead""") def send_proxy_v2(self) -> pulumi.Output[bool]: """ Enables PROXY protocol version 2 """ - warnings.warn("""Please use proxy_protocol instead""", DeprecationWarning) - pulumi.log.warn("""send_proxy_v2 is deprecated: Please use proxy_protocol instead""") - return pulumi.get(self, "send_proxy_v2") @property diff --git a/sdk/python/pulumiverse_scaleway/loadbalancer_frontend.py b/sdk/python/pulumiverse_scaleway/loadbalancer_frontend.py index 5ac1eae0..59fbbc7f 100644 --- a/sdk/python/pulumiverse_scaleway/loadbalancer_frontend.py +++ b/sdk/python/pulumiverse_scaleway/loadbalancer_frontend.py @@ -255,13 +255,11 @@ def backend_id(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter(name="certificateId") + @_utilities.deprecated("""Please use certificate_ids""") def certificate_id(self) -> Optional[pulumi.Input[str]]: """ (Deprecated) First certificate ID used by the frontend. """ - warnings.warn("""Please use certificate_ids""", DeprecationWarning) - pulumi.log.warn("""certificate_id is deprecated: Please use certificate_ids""") - return pulumi.get(self, "certificate_id") @certificate_id.setter @@ -754,13 +752,11 @@ def backend_id(self) -> pulumi.Output[str]: @property @pulumi.getter(name="certificateId") + @_utilities.deprecated("""Please use certificate_ids""") def certificate_id(self) -> pulumi.Output[str]: """ (Deprecated) First certificate ID used by the frontend. """ - warnings.warn("""Please use certificate_ids""", DeprecationWarning) - pulumi.log.warn("""certificate_id is deprecated: Please use certificate_ids""") - return pulumi.get(self, "certificate_id") @property diff --git a/sdk/python/pulumiverse_scaleway/object_bucket.py b/sdk/python/pulumiverse_scaleway/object_bucket.py index 91ce5a7f..dc420b0c 100644 --- a/sdk/python/pulumiverse_scaleway/object_bucket.py +++ b/sdk/python/pulumiverse_scaleway/object_bucket.py @@ -71,13 +71,11 @@ def __init__(__self__, *, @property @pulumi.getter + @_utilities.deprecated("""ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""") def acl(self) -> Optional[pulumi.Input[str]]: """ (Deprecated) The canned ACL you want to apply to the bucket. """ - warnings.warn("""ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""", DeprecationWarning) - pulumi.log.warn("""acl is deprecated: ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""") - return pulumi.get(self, "acl") @acl.setter @@ -265,13 +263,11 @@ def __init__(__self__, *, @property @pulumi.getter + @_utilities.deprecated("""ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""") def acl(self) -> Optional[pulumi.Input[str]]: """ (Deprecated) The canned ACL you want to apply to the bucket. """ - warnings.warn("""ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""", DeprecationWarning) - pulumi.log.warn("""acl is deprecated: ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""") - return pulumi.get(self, "acl") @acl.setter @@ -774,13 +770,11 @@ def get(resource_name: str, @property @pulumi.getter + @_utilities.deprecated("""ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""") def acl(self) -> pulumi.Output[Optional[str]]: """ (Deprecated) The canned ACL you want to apply to the bucket. """ - warnings.warn("""ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""", DeprecationWarning) - pulumi.log.warn("""acl is deprecated: ACL attribute is deprecated. Please use the resource ObjectBucketAcl instead.""") - return pulumi.get(self, "acl") @property diff --git a/sdk/python/pulumiverse_scaleway/outputs.py b/sdk/python/pulumiverse_scaleway/outputs.py index b6a3cb64..64d41576 100644 --- a/sdk/python/pulumiverse_scaleway/outputs.py +++ b/sdk/python/pulumiverse_scaleway/outputs.py @@ -930,13 +930,11 @@ def queue(self) -> str: @property @pulumi.getter(name="namespaceId") + @_utilities.deprecated("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") def namespace_id(self) -> Optional[str]: """ ID of the mnq namespace. Deprecated. """ - warnings.warn("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""", DeprecationWarning) - pulumi.log.warn("""namespace_id is deprecated: The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") - return pulumi.get(self, "namespace_id") @property @@ -2166,13 +2164,11 @@ def queue(self) -> str: @property @pulumi.getter(name="namespaceId") + @_utilities.deprecated("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") def namespace_id(self) -> Optional[str]: """ ID of the mnq namespace. Deprecated. """ - warnings.warn("""The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""", DeprecationWarning) - pulumi.log.warn("""namespace_id is deprecated: The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it""") - return pulumi.get(self, "namespace_id") @property @@ -2515,13 +2511,11 @@ def action(self) -> str: @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[str]: """ The ip this rule apply to. If no `ip` nor `ip_range` are specified, rule will apply to all ip. Only one of `ip` and `ip_range` should be specified. """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @property @@ -2615,13 +2609,11 @@ def action(self) -> str: @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[str]: """ Ip address for this rule (e.g: 1.1.1.1). Only one of ip or ip_range should be provided """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @property @@ -2715,13 +2707,11 @@ def action(self) -> str: @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[str]: """ The ip this rule apply to. If no `ip` nor `ip_range` are specified, rule will apply to all ip. Only one of `ip` and `ip_range` should be specified. """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @property @@ -2815,13 +2805,11 @@ def action(self) -> str: @property @pulumi.getter + @_utilities.deprecated("""Ip address is deprecated. Please use ip_range instead""") def ip(self) -> Optional[str]: """ Ip address for this rule (e.g: 1.1.1.1). Only one of ip or ip_range should be provided """ - warnings.warn("""Ip address is deprecated. Please use ip_range instead""", DeprecationWarning) - pulumi.log.warn("""ip is deprecated: Ip address is deprecated. Please use ip_range instead""") - return pulumi.get(self, "ip") @property @@ -4911,13 +4899,11 @@ def dhcp_config(self) -> Optional[bool]: @property @pulumi.getter(name="staticConfig") + @_utilities.deprecated("""static_config field is deprecated, please use dhcp_config instead""") def static_config(self) -> Optional[str]: """ (Deprecated) Please use `dhcp_config`. Define a local ip address of your choice for the load balancer instance. """ - warnings.warn("""static_config field is deprecated, please use dhcp_config instead""", DeprecationWarning) - pulumi.log.warn("""static_config is deprecated: static_config field is deprecated, please use dhcp_config instead""") - return pulumi.get(self, "static_config") @property diff --git a/sdk/python/pulumiverse_scaleway/redis_cluster.py b/sdk/python/pulumiverse_scaleway/redis_cluster.py index 0546df41..d00948e5 100644 --- a/sdk/python/pulumiverse_scaleway/redis_cluster.py +++ b/sdk/python/pulumiverse_scaleway/redis_cluster.py @@ -696,7 +696,7 @@ def __init__(__self__, id=pn.id, service_ips=["10.12.1.1/20"], )], - opts=pulumi.ResourceOptions(depends_on=[pn])) + opts = pulumi.ResourceOptions(depends_on=[pn])) ``` ## Import @@ -818,7 +818,7 @@ def __init__(__self__, id=pn.id, service_ips=["10.12.1.1/20"], )], - opts=pulumi.ResourceOptions(depends_on=[pn])) + opts = pulumi.ResourceOptions(depends_on=[pn])) ``` ## Import diff --git a/sdk/python/pulumiverse_scaleway/vpc_private_network.py b/sdk/python/pulumiverse_scaleway/vpc_private_network.py index c61efdbe..591a6108 100644 --- a/sdk/python/pulumiverse_scaleway/vpc_private_network.py +++ b/sdk/python/pulumiverse_scaleway/vpc_private_network.py @@ -88,13 +88,11 @@ def ipv6_subnets(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VpcPr @property @pulumi.getter(name="isRegional") + @_utilities.deprecated("""This field is deprecated and will be removed in the next major version""") def is_regional(self) -> Optional[pulumi.Input[bool]]: """ Private Networks are now all necessarily regional. """ - warnings.warn("""This field is deprecated and will be removed in the next major version""", DeprecationWarning) - pulumi.log.warn("""is_regional is deprecated: This field is deprecated and will be removed in the next major version""") - return pulumi.get(self, "is_regional") @is_regional.setter @@ -163,13 +161,11 @@ def vpc_id(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter + @_utilities.deprecated("""This field is deprecated and will be removed in the next major version, please use `region` instead""") def zone(self) -> Optional[pulumi.Input[str]]: """ Use `region` instead. """ - warnings.warn("""This field is deprecated and will be removed in the next major version, please use `region` instead""", DeprecationWarning) - pulumi.log.warn("""zone is deprecated: This field is deprecated and will be removed in the next major version, please use `region` instead""") - return pulumi.get(self, "zone") @zone.setter @@ -276,13 +272,11 @@ def ipv6_subnets(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['VpcPr @property @pulumi.getter(name="isRegional") + @_utilities.deprecated("""This field is deprecated and will be removed in the next major version""") def is_regional(self) -> Optional[pulumi.Input[bool]]: """ Private Networks are now all necessarily regional. """ - warnings.warn("""This field is deprecated and will be removed in the next major version""", DeprecationWarning) - pulumi.log.warn("""is_regional is deprecated: This field is deprecated and will be removed in the next major version""") - return pulumi.get(self, "is_regional") @is_regional.setter @@ -375,13 +369,11 @@ def vpc_id(self, value: Optional[pulumi.Input[str]]): @property @pulumi.getter + @_utilities.deprecated("""This field is deprecated and will be removed in the next major version, please use `region` instead""") def zone(self) -> Optional[pulumi.Input[str]]: """ Use `region` instead. """ - warnings.warn("""This field is deprecated and will be removed in the next major version, please use `region` instead""", DeprecationWarning) - pulumi.log.warn("""zone is deprecated: This field is deprecated and will be removed in the next major version, please use `region` instead""") - return pulumi.get(self, "zone") @zone.setter @@ -657,13 +649,11 @@ def ipv6_subnets(self) -> pulumi.Output[Sequence['outputs.VpcPrivateNetworkIpv6S @property @pulumi.getter(name="isRegional") + @_utilities.deprecated("""This field is deprecated and will be removed in the next major version""") def is_regional(self) -> pulumi.Output[bool]: """ Private Networks are now all necessarily regional. """ - warnings.warn("""This field is deprecated and will be removed in the next major version""", DeprecationWarning) - pulumi.log.warn("""is_regional is deprecated: This field is deprecated and will be removed in the next major version""") - return pulumi.get(self, "is_regional") @property @@ -724,12 +714,10 @@ def vpc_id(self) -> pulumi.Output[str]: @property @pulumi.getter + @_utilities.deprecated("""This field is deprecated and will be removed in the next major version, please use `region` instead""") def zone(self) -> pulumi.Output[str]: """ Use `region` instead. """ - warnings.warn("""This field is deprecated and will be removed in the next major version, please use `region` instead""", DeprecationWarning) - pulumi.log.warn("""zone is deprecated: This field is deprecated and will be removed in the next major version, please use `region` instead""") - return pulumi.get(self, "zone") diff --git a/sdk/python/pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py b/sdk/python/pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py index d22ba6f9..f8f46620 100644 --- a/sdk/python/pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +++ b/sdk/python/pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py @@ -262,7 +262,7 @@ def __init__(__self__, dhcp_id=main_vpc_public_gateway_dhcp.id, cleanup_dhcp=True, enable_masquerade=True, - opts=pulumi.ResourceOptions(depends_on=[ + opts = pulumi.ResourceOptions(depends_on=[ main_vpc_public_gateway_ip, main_vpc_private_network, ])) @@ -331,7 +331,7 @@ def __init__(__self__, dhcp_id=main_vpc_public_gateway_dhcp.id, cleanup_dhcp=True, enable_masquerade=True, - opts=pulumi.ResourceOptions(depends_on=[ + opts = pulumi.ResourceOptions(depends_on=[ main_vpc_public_gateway_ip, main_vpc_private_network, ]))