From 95481a69db180a5ead707ac33e948918c38a6652 Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Tue, 28 Jan 2025 12:10:18 +0000 Subject: [PATCH] make tfgen --- examples/go.mod | 28 +++--- examples/go.sum | 68 ++++++--------- .../cmd/pulumi-resource-azure/schema.json | 20 ++--- provider/go.mod | 6 +- provider/go.sum | 8 +- sdk/go.mod | 26 +++--- sdk/go.sum | 86 ++++++------------- 7 files changed, 108 insertions(+), 134 deletions(-) diff --git a/examples/go.mod b/examples/go.mod index a74b7f90f8..9b0ac2b970 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -1,12 +1,14 @@ module github.com/pulumi/pulumi-azure/examples/v5 -go 1.21 +go 1.22 + +toolchain go1.22.11 replace github.com/hashicorp/vault => github.com/hashicorp/vault v1.2.0 require ( github.com/pulumi/pulumi/pkg/v3 v3.145.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 ) require ( @@ -26,7 +28,7 @@ require ( 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/ProtonMail/go-crypto v1.1.3 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect @@ -56,7 +58,7 @@ require ( github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.5.0 // indirect github.com/djherbis/times v1.5.0 // indirect @@ -64,8 +66,8 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/felixge/httpsnoop v1.0.4 // 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 + github.com/go-git/go-billy/v5 v5.6.1 // indirect + github.com/go-git/go-git/v5 v5.13.1 // indirect github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -128,7 +130,7 @@ 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.10.0 // indirect - github.com/pulumi/pulumi/sdk/v3 v3.145.0 // indirect + github.com/pulumi/pulumi/sdk/v3 v3.147.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect @@ -137,7 +139,7 @@ require ( github.com/segmentio/asm v1.1.3 // indirect github.com/segmentio/encoding v0.3.5 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/texttheater/golang-levenshtein v1.0.1 // indirect @@ -158,8 +160,8 @@ require ( gocloud.dev v0.37.0 // indirect gocloud.dev/secrets/hashivault v0.37.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect - golang.org/x/mod v0.18.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.22.0 // indirect golang.org/x/sync v0.10.0 // indirect @@ -167,7 +169,7 @@ require ( golang.org/x/term v0.27.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.22.0 // indirect + golang.org/x/tools v0.23.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect @@ -179,3 +181,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 diff --git a/examples/go.sum b/examples/go.sum index 69a3f33354..5aae41ad5a 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -35,8 +35,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -99,7 +99,6 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -112,15 +111,14 @@ github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNW github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -130,8 +128,8 @@ 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/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= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= +github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -143,16 +141,16 @@ 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= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= +github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= +github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -313,8 +311,8 @@ github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -339,10 +337,10 @@ 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.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= -github.com/pulumi/pulumi/pkg/v3 v3.145.0 h1:hAhFLieunnCKuMd3GbLqE5uWQ1hpNLdl6+bCDFSF4YQ= -github.com/pulumi/pulumi/pkg/v3 v3.145.0/go.mod h1:N19IsMJ3GyYO5N2JfpsCAVk0eH1NKkF05fZGn5dnhBE= -github.com/pulumi/pulumi/sdk/v3 v3.145.0 h1:r5iOgz67RElFXJt4GVVY2SBGh5sR24mL9NOcKBiBi/k= -github.com/pulumi/pulumi/sdk/v3 v3.145.0/go.mod h1:5pZySnw3RiQKddx8orThjEFmWsXkGAY3ktKOxZj2Ym4= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 h1:AYjXx3QmUhYwIKPTT5dn8mkJWOEow1mvciSMbvPVOvQ= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 h1:U0mkZ0i96Ml9wNsJDGYl8vssNPr9gcqZlG2XgHNcPpc= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= 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= @@ -363,8 +361,8 @@ github.com/segmentio/encoding v0.3.5/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oH github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= +github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -383,8 +381,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= @@ -429,16 +427,14 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 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.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -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/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -450,8 +446,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.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.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.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-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -465,9 +461,7 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -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.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= @@ -505,8 +499,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -517,9 +509,7 @@ golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.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.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= @@ -530,9 +520,7 @@ 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= 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.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -554,8 +542,8 @@ 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.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -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/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= 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/provider/cmd/pulumi-resource-azure/schema.json b/provider/cmd/pulumi-resource-azure/schema.json index 41e469eda9..d5e514caa0 100644 --- a/provider/cmd/pulumi-resource-azure/schema.json +++ b/provider/cmd/pulumi-resource-azure/schema.json @@ -122994,7 +122994,7 @@ } }, "azure:appservice/slotVirtualNetworkSwiftConnection:SlotVirtualNetworkSwiftConnection": { - "description": "Manages an App Service Slot's Virtual Network Association (this is for the [Regional VNet Integration](https://docs.microsoft.com/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration) which is still in preview).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleVirtualNetwork = new azure.network.VirtualNetwork(\"example\", {\n name: \"example-virtual-network\",\n addressSpaces: [\"10.0.0.0/16\"],\n location: example.location,\n resourceGroupName: example.name,\n});\nconst exampleSubnet = new azure.network.Subnet(\"example\", {\n name: \"example-subnet\",\n resourceGroupName: example.name,\n virtualNetworkName: exampleVirtualNetwork.name,\n addressPrefixes: [\"10.0.1.0/24\"],\n delegations: [{\n name: \"example-delegation\",\n serviceDelegation: {\n name: \"Microsoft.Web/serverFarms\",\n actions: [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }],\n});\nconst examplePlan = new azure.appservice.Plan(\"example\", {\n name: \"example-service-plan\",\n location: example.location,\n resourceGroupName: example.name,\n sku: {\n tier: \"Standard\",\n size: \"S1\",\n },\n});\nconst exampleAppService = new azure.appservice.AppService(\"example\", {\n name: \"example-app-service\",\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst example_staging = new azure.appservice.Slot(\"example-staging\", {\n name: \"staging\",\n appServiceName: exampleAppService.name,\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst exampleSlotVirtualNetworkSwiftConnection = new azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\", {\n slotName: example_staging.name,\n appServiceId: exampleAppService.id,\n subnetId: exampleSubnet.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_virtual_network = azure.network.VirtualNetwork(\"example\",\n name=\"example-virtual-network\",\n address_spaces=[\"10.0.0.0/16\"],\n location=example.location,\n resource_group_name=example.name)\nexample_subnet = azure.network.Subnet(\"example\",\n name=\"example-subnet\",\n resource_group_name=example.name,\n virtual_network_name=example_virtual_network.name,\n address_prefixes=[\"10.0.1.0/24\"],\n delegations=[{\n \"name\": \"example-delegation\",\n \"service_delegation\": {\n \"name\": \"Microsoft.Web/serverFarms\",\n \"actions\": [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }])\nexample_plan = azure.appservice.Plan(\"example\",\n name=\"example-service-plan\",\n location=example.location,\n resource_group_name=example.name,\n sku={\n \"tier\": \"Standard\",\n \"size\": \"S1\",\n })\nexample_app_service = azure.appservice.AppService(\"example\",\n name=\"example-app-service\",\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_staging = azure.appservice.Slot(\"example-staging\",\n name=\"staging\",\n app_service_name=example_app_service.name,\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_slot_virtual_network_swift_connection = azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\",\n slot_name=example_staging.name,\n app_service_id=example_app_service.id,\n subnet_id=example_subnet.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleVirtualNetwork = new Azure.Network.VirtualNetwork(\"example\", new()\n {\n Name = \"example-virtual-network\",\n AddressSpaces = new[]\n {\n \"10.0.0.0/16\",\n },\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var exampleSubnet = new Azure.Network.Subnet(\"example\", new()\n {\n Name = \"example-subnet\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = exampleVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"10.0.1.0/24\",\n },\n Delegations = new[]\n {\n new Azure.Network.Inputs.SubnetDelegationArgs\n {\n Name = \"example-delegation\",\n ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs\n {\n Name = \"Microsoft.Web/serverFarms\",\n Actions = new[]\n {\n \"Microsoft.Network/virtualNetworks/subnets/action\",\n },\n },\n },\n },\n });\n\n var examplePlan = new Azure.AppService.Plan(\"example\", new()\n {\n Name = \"example-service-plan\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = new Azure.AppService.Inputs.PlanSkuArgs\n {\n Tier = \"Standard\",\n Size = \"S1\",\n },\n });\n\n var exampleAppService = new Azure.AppService.AppService(\"example\", new()\n {\n Name = \"example-app-service\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var example_staging = new Azure.AppService.Slot(\"example-staging\", new()\n {\n Name = \"staging\",\n AppServiceName = exampleAppService.Name,\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var exampleSlotVirtualNetworkSwiftConnection = new Azure.AppService.SlotVirtualNetworkSwiftConnection(\"example\", new()\n {\n SlotName = example_staging.Name,\n AppServiceId = exampleAppService.Id,\n SubnetId = exampleSubnet.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appservice\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"example\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"example-virtual-network\"),\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnet, err := network.NewSubnet(ctx, \"example\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"example-subnet\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: exampleVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tDelegations: network.SubnetDelegationArray{\n\t\t\t\t\u0026network.SubnetDelegationArgs{\n\t\t\t\t\tName: pulumi.String(\"example-delegation\"),\n\t\t\t\t\tServiceDelegation: \u0026network.SubnetDelegationServiceDelegationArgs{\n\t\t\t\t\t\tName: pulumi.String(\"Microsoft.Web/serverFarms\"),\n\t\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"Microsoft.Network/virtualNetworks/subnets/action\"),\n\t\t\t\t\t\t},\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\texamplePlan, err := appservice.NewPlan(ctx, \"example\", \u0026appservice.PlanArgs{\n\t\t\tName: pulumi.String(\"example-service-plan\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: \u0026appservice.PlanSkuArgs{\n\t\t\t\tTier: pulumi.String(\"Standard\"),\n\t\t\t\tSize: pulumi.String(\"S1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAppService, err := appservice.NewAppService(ctx, \"example\", \u0026appservice.AppServiceArgs{\n\t\t\tName: pulumi.String(\"example-app-service\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appservice.NewSlot(ctx, \"example-staging\", \u0026appservice.SlotArgs{\n\t\t\tName: pulumi.String(\"staging\"),\n\t\t\tAppServiceName: exampleAppService.Name,\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appservice.NewSlotVirtualNetworkSwiftConnection(ctx, \"example\", \u0026appservice.SlotVirtualNetworkSwiftConnectionArgs{\n\t\t\tSlotName: example_staging.Name,\n\t\t\tAppServiceId: exampleAppService.ID(),\n\t\t\tSubnetId: exampleSubnet.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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;\nimport com.pulumi.azure.appservice.Plan;\nimport com.pulumi.azure.appservice.PlanArgs;\nimport com.pulumi.azure.appservice.inputs.PlanSkuArgs;\nimport com.pulumi.azure.appservice.AppService;\nimport com.pulumi.azure.appservice.AppServiceArgs;\nimport com.pulumi.azure.appservice.Slot;\nimport com.pulumi.azure.appservice.SlotArgs;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnection;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnectionArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleVirtualNetwork = new VirtualNetwork(\"exampleVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"example-virtual-network\")\n .addressSpaces(\"10.0.0.0/16\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var exampleSubnet = new Subnet(\"exampleSubnet\", SubnetArgs.builder()\n .name(\"example-subnet\")\n .resourceGroupName(example.name())\n .virtualNetworkName(exampleVirtualNetwork.name())\n .addressPrefixes(\"10.0.1.0/24\")\n .delegations(SubnetDelegationArgs.builder()\n .name(\"example-delegation\")\n .serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()\n .name(\"Microsoft.Web/serverFarms\")\n .actions(\"Microsoft.Network/virtualNetworks/subnets/action\")\n .build())\n .build())\n .build());\n\n var examplePlan = new Plan(\"examplePlan\", PlanArgs.builder()\n .name(\"example-service-plan\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(PlanSkuArgs.builder()\n .tier(\"Standard\")\n .size(\"S1\")\n .build())\n .build());\n\n var exampleAppService = new AppService(\"exampleAppService\", AppServiceArgs.builder()\n .name(\"example-app-service\")\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var example_staging = new Slot(\"example-staging\", SlotArgs.builder()\n .name(\"staging\")\n .appServiceName(exampleAppService.name())\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var exampleSlotVirtualNetworkSwiftConnection = new SlotVirtualNetworkSwiftConnection(\"exampleSlotVirtualNetworkSwiftConnection\", SlotVirtualNetworkSwiftConnectionArgs.builder()\n .slotName(example_staging.name())\n .appServiceId(exampleAppService.id())\n .subnetId(exampleSubnet.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleVirtualNetwork:\n type: azure:network:VirtualNetwork\n name: example\n properties:\n name: example-virtual-network\n addressSpaces:\n - 10.0.0.0/16\n location: ${example.location}\n resourceGroupName: ${example.name}\n exampleSubnet:\n type: azure:network:Subnet\n name: example\n properties:\n name: example-subnet\n resourceGroupName: ${example.name}\n virtualNetworkName: ${exampleVirtualNetwork.name}\n addressPrefixes:\n - 10.0.1.0/24\n delegations:\n - name: example-delegation\n serviceDelegation:\n name: Microsoft.Web/serverFarms\n actions:\n - Microsoft.Network/virtualNetworks/subnets/action\n examplePlan:\n type: azure:appservice:Plan\n name: example\n properties:\n name: example-service-plan\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku:\n tier: Standard\n size: S1\n exampleAppService:\n type: azure:appservice:AppService\n name: example\n properties:\n name: example-app-service\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n example-staging:\n type: azure:appservice:Slot\n properties:\n name: staging\n appServiceName: ${exampleAppService.name}\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n exampleSlotVirtualNetworkSwiftConnection:\n type: azure:appservice:SlotVirtualNetworkSwiftConnection\n name: example\n properties:\n slotName: ${[\"example-staging\"].name}\n appServiceId: ${exampleAppService.id}\n subnetId: ${exampleSubnet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApp Service Slot Virtual Network Associations can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:appservice/slotVirtualNetworkSwiftConnection:SlotVirtualNetworkSwiftConnection myassociation /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Web/sites/instance1/slots/staging/config/virtualNetwork\n```\n\n", + "description": "Manages an App Service Slot's Virtual Network Association (this is for the [Regional VNet Integration](https://docs.microsoft.com/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration) which is still in preview).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleVirtualNetwork = new azure.network.VirtualNetwork(\"example\", {\n name: \"example-virtual-network\",\n addressSpaces: [\"10.0.0.0/16\"],\n location: example.location,\n resourceGroupName: example.name,\n});\nconst exampleSubnet = new azure.network.Subnet(\"example\", {\n name: \"example-subnet\",\n resourceGroupName: example.name,\n virtualNetworkName: exampleVirtualNetwork.name,\n addressPrefixes: [\"10.0.1.0/24\"],\n delegations: [{\n name: \"example-delegation\",\n serviceDelegation: {\n name: \"Microsoft.Web/serverFarms\",\n actions: [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }],\n});\nconst examplePlan = new azure.appservice.Plan(\"example\", {\n name: \"example-service-plan\",\n location: example.location,\n resourceGroupName: example.name,\n sku: {\n tier: \"Standard\",\n size: \"S1\",\n },\n});\nconst exampleAppService = new azure.appservice.AppService(\"example\", {\n name: \"example-app-service\",\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst example_staging = new azure.appservice.Slot(\"example-staging\", {\n name: \"staging\",\n appServiceName: exampleAppService.name,\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst exampleSlotVirtualNetworkSwiftConnection = new azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\", {\n slotName: example_staging.name,\n appServiceId: exampleAppService.id,\n subnetId: exampleSubnet.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_virtual_network = azure.network.VirtualNetwork(\"example\",\n name=\"example-virtual-network\",\n address_spaces=[\"10.0.0.0/16\"],\n location=example.location,\n resource_group_name=example.name)\nexample_subnet = azure.network.Subnet(\"example\",\n name=\"example-subnet\",\n resource_group_name=example.name,\n virtual_network_name=example_virtual_network.name,\n address_prefixes=[\"10.0.1.0/24\"],\n delegations=[{\n \"name\": \"example-delegation\",\n \"service_delegation\": {\n \"name\": \"Microsoft.Web/serverFarms\",\n \"actions\": [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }])\nexample_plan = azure.appservice.Plan(\"example\",\n name=\"example-service-plan\",\n location=example.location,\n resource_group_name=example.name,\n sku={\n \"tier\": \"Standard\",\n \"size\": \"S1\",\n })\nexample_app_service = azure.appservice.AppService(\"example\",\n name=\"example-app-service\",\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_staging = azure.appservice.Slot(\"example-staging\",\n name=\"staging\",\n app_service_name=example_app_service.name,\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_slot_virtual_network_swift_connection = azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\",\n slot_name=example_staging.name,\n app_service_id=example_app_service.id,\n subnet_id=example_subnet.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleVirtualNetwork = new Azure.Network.VirtualNetwork(\"example\", new()\n {\n Name = \"example-virtual-network\",\n AddressSpaces = new[]\n {\n \"10.0.0.0/16\",\n },\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var exampleSubnet = new Azure.Network.Subnet(\"example\", new()\n {\n Name = \"example-subnet\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = exampleVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"10.0.1.0/24\",\n },\n Delegations = new[]\n {\n new Azure.Network.Inputs.SubnetDelegationArgs\n {\n Name = \"example-delegation\",\n ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs\n {\n Name = \"Microsoft.Web/serverFarms\",\n Actions = new[]\n {\n \"Microsoft.Network/virtualNetworks/subnets/action\",\n },\n },\n },\n },\n });\n\n var examplePlan = new Azure.AppService.Plan(\"example\", new()\n {\n Name = \"example-service-plan\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = new Azure.AppService.Inputs.PlanSkuArgs\n {\n Tier = \"Standard\",\n Size = \"S1\",\n },\n });\n\n var exampleAppService = new Azure.AppService.AppService(\"example\", new()\n {\n Name = \"example-app-service\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var example_staging = new Azure.AppService.Slot(\"example-staging\", new()\n {\n Name = \"staging\",\n AppServiceName = exampleAppService.Name,\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var exampleSlotVirtualNetworkSwiftConnection = new Azure.AppService.SlotVirtualNetworkSwiftConnection(\"example\", new()\n {\n SlotName = example_staging.Name,\n AppServiceId = exampleAppService.Id,\n SubnetId = exampleSubnet.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appservice\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"example\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"example-virtual-network\"),\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnet, err := network.NewSubnet(ctx, \"example\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"example-subnet\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: exampleVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tDelegations: network.SubnetDelegationArray{\n\t\t\t\t\u0026network.SubnetDelegationArgs{\n\t\t\t\t\tName: pulumi.String(\"example-delegation\"),\n\t\t\t\t\tServiceDelegation: \u0026network.SubnetDelegationServiceDelegationArgs{\n\t\t\t\t\t\tName: pulumi.String(\"Microsoft.Web/serverFarms\"),\n\t\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"Microsoft.Network/virtualNetworks/subnets/action\"),\n\t\t\t\t\t\t},\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\texamplePlan, err := appservice.NewPlan(ctx, \"example\", \u0026appservice.PlanArgs{\n\t\t\tName: pulumi.String(\"example-service-plan\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: \u0026appservice.PlanSkuArgs{\n\t\t\t\tTier: pulumi.String(\"Standard\"),\n\t\t\t\tSize: pulumi.String(\"S1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAppService, err := appservice.NewAppService(ctx, \"example\", \u0026appservice.AppServiceArgs{\n\t\t\tName: pulumi.String(\"example-app-service\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_staging, err := appservice.NewSlot(ctx, \"example-staging\", \u0026appservice.SlotArgs{\n\t\t\tName: pulumi.String(\"staging\"),\n\t\t\tAppServiceName: exampleAppService.Name,\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appservice.NewSlotVirtualNetworkSwiftConnection(ctx, \"example\", \u0026appservice.SlotVirtualNetworkSwiftConnectionArgs{\n\t\t\tSlotName: example_staging.Name,\n\t\t\tAppServiceId: exampleAppService.ID(),\n\t\t\tSubnetId: exampleSubnet.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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;\nimport com.pulumi.azure.appservice.Plan;\nimport com.pulumi.azure.appservice.PlanArgs;\nimport com.pulumi.azure.appservice.inputs.PlanSkuArgs;\nimport com.pulumi.azure.appservice.AppService;\nimport com.pulumi.azure.appservice.AppServiceArgs;\nimport com.pulumi.azure.appservice.Slot;\nimport com.pulumi.azure.appservice.SlotArgs;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnection;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnectionArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleVirtualNetwork = new VirtualNetwork(\"exampleVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"example-virtual-network\")\n .addressSpaces(\"10.0.0.0/16\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var exampleSubnet = new Subnet(\"exampleSubnet\", SubnetArgs.builder()\n .name(\"example-subnet\")\n .resourceGroupName(example.name())\n .virtualNetworkName(exampleVirtualNetwork.name())\n .addressPrefixes(\"10.0.1.0/24\")\n .delegations(SubnetDelegationArgs.builder()\n .name(\"example-delegation\")\n .serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()\n .name(\"Microsoft.Web/serverFarms\")\n .actions(\"Microsoft.Network/virtualNetworks/subnets/action\")\n .build())\n .build())\n .build());\n\n var examplePlan = new Plan(\"examplePlan\", PlanArgs.builder()\n .name(\"example-service-plan\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(PlanSkuArgs.builder()\n .tier(\"Standard\")\n .size(\"S1\")\n .build())\n .build());\n\n var exampleAppService = new AppService(\"exampleAppService\", AppServiceArgs.builder()\n .name(\"example-app-service\")\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var example_staging = new Slot(\"example-staging\", SlotArgs.builder()\n .name(\"staging\")\n .appServiceName(exampleAppService.name())\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var exampleSlotVirtualNetworkSwiftConnection = new SlotVirtualNetworkSwiftConnection(\"exampleSlotVirtualNetworkSwiftConnection\", SlotVirtualNetworkSwiftConnectionArgs.builder()\n .slotName(example_staging.name())\n .appServiceId(exampleAppService.id())\n .subnetId(exampleSubnet.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleVirtualNetwork:\n type: azure:network:VirtualNetwork\n name: example\n properties:\n name: example-virtual-network\n addressSpaces:\n - 10.0.0.0/16\n location: ${example.location}\n resourceGroupName: ${example.name}\n exampleSubnet:\n type: azure:network:Subnet\n name: example\n properties:\n name: example-subnet\n resourceGroupName: ${example.name}\n virtualNetworkName: ${exampleVirtualNetwork.name}\n addressPrefixes:\n - 10.0.1.0/24\n delegations:\n - name: example-delegation\n serviceDelegation:\n name: Microsoft.Web/serverFarms\n actions:\n - Microsoft.Network/virtualNetworks/subnets/action\n examplePlan:\n type: azure:appservice:Plan\n name: example\n properties:\n name: example-service-plan\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku:\n tier: Standard\n size: S1\n exampleAppService:\n type: azure:appservice:AppService\n name: example\n properties:\n name: example-app-service\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n example-staging:\n type: azure:appservice:Slot\n properties:\n name: staging\n appServiceName: ${exampleAppService.name}\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n exampleSlotVirtualNetworkSwiftConnection:\n type: azure:appservice:SlotVirtualNetworkSwiftConnection\n name: example\n properties:\n slotName: ${[\"example-staging\"].name}\n appServiceId: ${exampleAppService.id}\n subnetId: ${exampleSubnet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApp Service Slot Virtual Network Associations can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:appservice/slotVirtualNetworkSwiftConnection:SlotVirtualNetworkSwiftConnection myassociation /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Web/sites/instance1/slots/staging/config/virtualNetwork\n```\n\n", "properties": { "appServiceId": { "type": "string", @@ -133097,7 +133097,7 @@ } }, "azure:backup/protectedFileShare:ProtectedFileShare": { - "description": "Manages an Azure Backup Protected File Share to enable backups for file shares within an Azure Storage Account\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"tfex-recovery_vault\",\n location: \"West Europe\",\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"tfex-recovery-vault\",\n location: example.location,\n resourceGroupName: example.name,\n sku: \"Standard\",\n});\nconst sa = new azure.storage.Account(\"sa\", {\n name: \"examplesa\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst exampleShare = new azure.storage.Share(\"example\", {\n name: \"example-share\",\n storageAccountName: sa.name,\n quota: 1,\n});\nconst protection_container = new azure.backup.ContainerStorageAccount(\"protection-container\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n storageAccountId: sa.id,\n});\nconst examplePolicyFileShare = new azure.backup.PolicyFileShare(\"example\", {\n name: \"tfex-recovery-vault-policy\",\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n backup: {\n frequency: \"Daily\",\n time: \"23:00\",\n },\n retentionDaily: {\n count: 10,\n },\n});\nconst share1 = new azure.backup.ProtectedFileShare(\"share1\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n sourceStorageAccountId: protection_container.storageAccountId,\n sourceFileShareName: exampleShare.name,\n backupPolicyId: examplePolicyFileShare.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"tfex-recovery_vault\",\n location=\"West Europe\")\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"tfex-recovery-vault\",\n location=example.location,\n resource_group_name=example.name,\n sku=\"Standard\")\nsa = azure.storage.Account(\"sa\",\n name=\"examplesa\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nexample_share = azure.storage.Share(\"example\",\n name=\"example-share\",\n storage_account_name=sa.name,\n quota=1)\nprotection_container = azure.backup.ContainerStorageAccount(\"protection-container\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n storage_account_id=sa.id)\nexample_policy_file_share = azure.backup.PolicyFileShare(\"example\",\n name=\"tfex-recovery-vault-policy\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n backup={\n \"frequency\": \"Daily\",\n \"time\": \"23:00\",\n },\n retention_daily={\n \"count\": 10,\n })\nshare1 = azure.backup.ProtectedFileShare(\"share1\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n source_storage_account_id=protection_container.storage_account_id,\n source_file_share_name=example_share.name,\n backup_policy_id=example_policy_file_share.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"tfex-recovery_vault\",\n Location = \"West Europe\",\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"tfex-recovery-vault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = \"Standard\",\n });\n\n var sa = new Azure.Storage.Account(\"sa\", new()\n {\n Name = \"examplesa\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var exampleShare = new Azure.Storage.Share(\"example\", new()\n {\n Name = \"example-share\",\n StorageAccountName = sa.Name,\n Quota = 1,\n });\n\n var protection_container = new Azure.Backup.ContainerStorageAccount(\"protection-container\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n StorageAccountId = sa.Id,\n });\n\n var examplePolicyFileShare = new Azure.Backup.PolicyFileShare(\"example\", new()\n {\n Name = \"tfex-recovery-vault-policy\",\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n Backup = new Azure.Backup.Inputs.PolicyFileShareBackupArgs\n {\n Frequency = \"Daily\",\n Time = \"23:00\",\n },\n RetentionDaily = new Azure.Backup.Inputs.PolicyFileShareRetentionDailyArgs\n {\n Count = 10,\n },\n });\n\n var share1 = new Azure.Backup.ProtectedFileShare(\"share1\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n SourceStorageAccountId = protection_container.StorageAccountId,\n SourceFileShareName = exampleShare.Name,\n BackupPolicyId = examplePolicyFileShare.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/backup\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery_vault\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := storage.NewAccount(ctx, \"sa\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplesa\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleShare, err := storage.NewShare(ctx, \"example\", \u0026storage.ShareArgs{\n\t\t\tName: pulumi.String(\"example-share\"),\n\t\t\tStorageAccountName: sa.Name,\n\t\t\tQuota: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backup.NewContainerStorageAccount(ctx, \"protection-container\", \u0026backup.ContainerStorageAccountArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tStorageAccountId: sa.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePolicyFileShare, err := backup.NewPolicyFileShare(ctx, \"example\", \u0026backup.PolicyFileShareArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault-policy\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tBackup: \u0026backup.PolicyFileShareBackupArgs{\n\t\t\t\tFrequency: pulumi.String(\"Daily\"),\n\t\t\t\tTime: pulumi.String(\"23:00\"),\n\t\t\t},\n\t\t\tRetentionDaily: \u0026backup.PolicyFileShareRetentionDailyArgs{\n\t\t\t\tCount: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backup.NewProtectedFileShare(ctx, \"share1\", \u0026backup.ProtectedFileShareArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceStorageAccountId: protection_container.StorageAccountId,\n\t\t\tSourceFileShareName: exampleShare.Name,\n\t\t\tBackupPolicyId: examplePolicyFileShare.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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.storage.Share;\nimport com.pulumi.azure.storage.ShareArgs;\nimport com.pulumi.azure.backup.ContainerStorageAccount;\nimport com.pulumi.azure.backup.ContainerStorageAccountArgs;\nimport com.pulumi.azure.backup.PolicyFileShare;\nimport com.pulumi.azure.backup.PolicyFileShareArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareBackupArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareRetentionDailyArgs;\nimport com.pulumi.azure.backup.ProtectedFileShare;\nimport com.pulumi.azure.backup.ProtectedFileShareArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"tfex-recovery_vault\")\n .location(\"West Europe\")\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"tfex-recovery-vault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(\"Standard\")\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .name(\"examplesa\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var exampleShare = new Share(\"exampleShare\", ShareArgs.builder()\n .name(\"example-share\")\n .storageAccountName(sa.name())\n .quota(1)\n .build());\n\n var protection_container = new ContainerStorageAccount(\"protection-container\", ContainerStorageAccountArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .storageAccountId(sa.id())\n .build());\n\n var examplePolicyFileShare = new PolicyFileShare(\"examplePolicyFileShare\", PolicyFileShareArgs.builder()\n .name(\"tfex-recovery-vault-policy\")\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .backup(PolicyFileShareBackupArgs.builder()\n .frequency(\"Daily\")\n .time(\"23:00\")\n .build())\n .retentionDaily(PolicyFileShareRetentionDailyArgs.builder()\n .count(10)\n .build())\n .build());\n\n var share1 = new ProtectedFileShare(\"share1\", ProtectedFileShareArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .sourceStorageAccountId(protection_container.storageAccountId())\n .sourceFileShareName(exampleShare.name())\n .backupPolicyId(examplePolicyFileShare.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: tfex-recovery_vault\n location: West Europe\n vault:\n type: azure:recoveryservices:Vault\n properties:\n name: tfex-recovery-vault\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku: Standard\n sa:\n type: azure:storage:Account\n properties:\n name: examplesa\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: LRS\n exampleShare:\n type: azure:storage:Share\n name: example\n properties:\n name: example-share\n storageAccountName: ${sa.name}\n quota: 1\n protection-container:\n type: azure:backup:ContainerStorageAccount\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n storageAccountId: ${sa.id}\n examplePolicyFileShare:\n type: azure:backup:PolicyFileShare\n name: example\n properties:\n name: tfex-recovery-vault-policy\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n backup:\n frequency: Daily\n time: 23:00\n retentionDaily:\n count: 10\n share1:\n type: azure:backup:ProtectedFileShare\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n sourceStorageAccountId: ${[\"protection-container\"].storageAccountId}\n sourceFileShareName: ${exampleShare.name}\n backupPolicyId: ${examplePolicyFileShare.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAzure Backup Protected File Shares can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:backup/protectedFileShare:ProtectedFileShare item1 \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.RecoveryServices/vaults/example-recovery-vault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;group2;example-storage-account/protectedItems/AzureFileShare;3f6e3108a45793581bcbd1c61c87a3b2ceeb4ff4bc02a95ce9d1022b23722935\"\n```\n\n-\u003e **NOTE** The ID requires quoting as there are semicolons. This user unfriendly ID can be found in the Deployments of the used resourcegroup, look for an Deployment which starts with `ConfigureAFSProtection-`, click then `Go to resource`.\n\n", + "description": "Manages an Azure Backup Protected File Share to enable backups for file shares within an Azure Storage Account\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"tfex-recovery_vault\",\n location: \"West Europe\",\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"tfex-recovery-vault\",\n location: example.location,\n resourceGroupName: example.name,\n sku: \"Standard\",\n});\nconst sa = new azure.storage.Account(\"sa\", {\n name: \"examplesa\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst exampleShare = new azure.storage.Share(\"example\", {\n name: \"example-share\",\n storageAccountName: sa.name,\n quota: 1,\n});\nconst protection_container = new azure.backup.ContainerStorageAccount(\"protection-container\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n storageAccountId: sa.id,\n});\nconst examplePolicyFileShare = new azure.backup.PolicyFileShare(\"example\", {\n name: \"tfex-recovery-vault-policy\",\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n backup: {\n frequency: \"Daily\",\n time: \"23:00\",\n },\n retentionDaily: {\n count: 10,\n },\n});\nconst share1 = new azure.backup.ProtectedFileShare(\"share1\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n sourceStorageAccountId: protection_container.storageAccountId,\n sourceFileShareName: exampleShare.name,\n backupPolicyId: examplePolicyFileShare.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"tfex-recovery_vault\",\n location=\"West Europe\")\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"tfex-recovery-vault\",\n location=example.location,\n resource_group_name=example.name,\n sku=\"Standard\")\nsa = azure.storage.Account(\"sa\",\n name=\"examplesa\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nexample_share = azure.storage.Share(\"example\",\n name=\"example-share\",\n storage_account_name=sa.name,\n quota=1)\nprotection_container = azure.backup.ContainerStorageAccount(\"protection-container\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n storage_account_id=sa.id)\nexample_policy_file_share = azure.backup.PolicyFileShare(\"example\",\n name=\"tfex-recovery-vault-policy\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n backup={\n \"frequency\": \"Daily\",\n \"time\": \"23:00\",\n },\n retention_daily={\n \"count\": 10,\n })\nshare1 = azure.backup.ProtectedFileShare(\"share1\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n source_storage_account_id=protection_container.storage_account_id,\n source_file_share_name=example_share.name,\n backup_policy_id=example_policy_file_share.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"tfex-recovery_vault\",\n Location = \"West Europe\",\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"tfex-recovery-vault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = \"Standard\",\n });\n\n var sa = new Azure.Storage.Account(\"sa\", new()\n {\n Name = \"examplesa\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var exampleShare = new Azure.Storage.Share(\"example\", new()\n {\n Name = \"example-share\",\n StorageAccountName = sa.Name,\n Quota = 1,\n });\n\n var protection_container = new Azure.Backup.ContainerStorageAccount(\"protection-container\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n StorageAccountId = sa.Id,\n });\n\n var examplePolicyFileShare = new Azure.Backup.PolicyFileShare(\"example\", new()\n {\n Name = \"tfex-recovery-vault-policy\",\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n Backup = new Azure.Backup.Inputs.PolicyFileShareBackupArgs\n {\n Frequency = \"Daily\",\n Time = \"23:00\",\n },\n RetentionDaily = new Azure.Backup.Inputs.PolicyFileShareRetentionDailyArgs\n {\n Count = 10,\n },\n });\n\n var share1 = new Azure.Backup.ProtectedFileShare(\"share1\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n SourceStorageAccountId = protection_container.StorageAccountId,\n SourceFileShareName = exampleShare.Name,\n BackupPolicyId = examplePolicyFileShare.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/backup\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery_vault\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := storage.NewAccount(ctx, \"sa\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplesa\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleShare, err := storage.NewShare(ctx, \"example\", \u0026storage.ShareArgs{\n\t\t\tName: pulumi.String(\"example-share\"),\n\t\t\tStorageAccountName: sa.Name,\n\t\t\tQuota: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprotection_container, err := backup.NewContainerStorageAccount(ctx, \"protection-container\", \u0026backup.ContainerStorageAccountArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tStorageAccountId: sa.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePolicyFileShare, err := backup.NewPolicyFileShare(ctx, \"example\", \u0026backup.PolicyFileShareArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault-policy\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tBackup: \u0026backup.PolicyFileShareBackupArgs{\n\t\t\t\tFrequency: pulumi.String(\"Daily\"),\n\t\t\t\tTime: pulumi.String(\"23:00\"),\n\t\t\t},\n\t\t\tRetentionDaily: \u0026backup.PolicyFileShareRetentionDailyArgs{\n\t\t\t\tCount: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backup.NewProtectedFileShare(ctx, \"share1\", \u0026backup.ProtectedFileShareArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceStorageAccountId: protection_container.StorageAccountId,\n\t\t\tSourceFileShareName: exampleShare.Name,\n\t\t\tBackupPolicyId: examplePolicyFileShare.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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.storage.Share;\nimport com.pulumi.azure.storage.ShareArgs;\nimport com.pulumi.azure.backup.ContainerStorageAccount;\nimport com.pulumi.azure.backup.ContainerStorageAccountArgs;\nimport com.pulumi.azure.backup.PolicyFileShare;\nimport com.pulumi.azure.backup.PolicyFileShareArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareBackupArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareRetentionDailyArgs;\nimport com.pulumi.azure.backup.ProtectedFileShare;\nimport com.pulumi.azure.backup.ProtectedFileShareArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"tfex-recovery_vault\")\n .location(\"West Europe\")\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"tfex-recovery-vault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(\"Standard\")\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .name(\"examplesa\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var exampleShare = new Share(\"exampleShare\", ShareArgs.builder()\n .name(\"example-share\")\n .storageAccountName(sa.name())\n .quota(1)\n .build());\n\n var protection_container = new ContainerStorageAccount(\"protection-container\", ContainerStorageAccountArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .storageAccountId(sa.id())\n .build());\n\n var examplePolicyFileShare = new PolicyFileShare(\"examplePolicyFileShare\", PolicyFileShareArgs.builder()\n .name(\"tfex-recovery-vault-policy\")\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .backup(PolicyFileShareBackupArgs.builder()\n .frequency(\"Daily\")\n .time(\"23:00\")\n .build())\n .retentionDaily(PolicyFileShareRetentionDailyArgs.builder()\n .count(10)\n .build())\n .build());\n\n var share1 = new ProtectedFileShare(\"share1\", ProtectedFileShareArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .sourceStorageAccountId(protection_container.storageAccountId())\n .sourceFileShareName(exampleShare.name())\n .backupPolicyId(examplePolicyFileShare.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: tfex-recovery_vault\n location: West Europe\n vault:\n type: azure:recoveryservices:Vault\n properties:\n name: tfex-recovery-vault\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku: Standard\n sa:\n type: azure:storage:Account\n properties:\n name: examplesa\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: LRS\n exampleShare:\n type: azure:storage:Share\n name: example\n properties:\n name: example-share\n storageAccountName: ${sa.name}\n quota: 1\n protection-container:\n type: azure:backup:ContainerStorageAccount\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n storageAccountId: ${sa.id}\n examplePolicyFileShare:\n type: azure:backup:PolicyFileShare\n name: example\n properties:\n name: tfex-recovery-vault-policy\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n backup:\n frequency: Daily\n time: 23:00\n retentionDaily:\n count: 10\n share1:\n type: azure:backup:ProtectedFileShare\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n sourceStorageAccountId: ${[\"protection-container\"].storageAccountId}\n sourceFileShareName: ${exampleShare.name}\n backupPolicyId: ${examplePolicyFileShare.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAzure Backup Protected File Shares can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:backup/protectedFileShare:ProtectedFileShare item1 \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.RecoveryServices/vaults/example-recovery-vault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;group2;example-storage-account/protectedItems/AzureFileShare;3f6e3108a45793581bcbd1c61c87a3b2ceeb4ff4bc02a95ce9d1022b23722935\"\n```\n\n-\u003e **NOTE** The ID requires quoting as there are semicolons. This user unfriendly ID can be found in the Deployments of the used resourcegroup, look for an Deployment which starts with `ConfigureAFSProtection-`, click then `Go to resource`.\n\n", "properties": { "backupPolicyId": { "type": "string", @@ -141350,7 +141350,7 @@ } }, "azure:compute/diskEncryptionSet:DiskEncryptionSet": { - "description": "Manages a Disk Encryption Set.\n\n\u003e **NOTE:** At this time the Key Vault used to store the Active Key for this Disk Encryption Set must have both Soft Delete \u0026 Purge Protection enabled - which are not yet supported by this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.Id,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.ID(),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, 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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.id())\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.id}\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Automatic Key Rotation Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.versionlessId,\n autoKeyRotationEnabled: true,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.versionless_id,\n auto_key_rotation_enabled=True,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.VersionlessId,\n AutoKeyRotationEnabled = true,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.VersionlessId,\n\t\t\tAutoKeyRotationEnabled: pulumi.Bool(true),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, 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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.versionlessId())\n .autoKeyRotationEnabled(true)\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.versionlessId}\n autoKeyRotationEnabled: true\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDisk Encryption Sets can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:compute/diskEncryptionSet:DiskEncryptionSet example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Compute/diskEncryptionSets/encryptionSet1\n```\n\n", + "description": "Manages a Disk Encryption Set.\n\n\u003e **NOTE:** At this time the Key Vault used to store the Active Key for this Disk Encryption Set must have both Soft Delete \u0026 Purge Protection enabled - which are not yet supported by this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.Id,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_user, err := keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.ID(),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, 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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.id())\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.id}\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Automatic Key Rotation Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.versionlessId,\n autoKeyRotationEnabled: true,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.versionless_id,\n auto_key_rotation_enabled=True,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.VersionlessId,\n AutoKeyRotationEnabled = true,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_user, err := keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.VersionlessId,\n\t\t\tAutoKeyRotationEnabled: pulumi.Bool(true),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, 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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.versionlessId())\n .autoKeyRotationEnabled(true)\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.versionlessId}\n autoKeyRotationEnabled: true\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDisk Encryption Sets can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:compute/diskEncryptionSet:DiskEncryptionSet example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Compute/diskEncryptionSets/encryptionSet1\n```\n\n", "properties": { "autoKeyRotationEnabled": { "type": "boolean" @@ -201988,7 +201988,7 @@ } }, "azure:lb/backendAddressPoolAddress:BackendAddressPoolAddress": { - "description": "Manages a Backend Address within a Backend Address Pool.\n\n\u003e **Note:** Backend Addresses can only be added to a `Standard` SKU Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = azure.network.getVirtualNetwork({\n name: \"example-network\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetLB = azure.lb.getLB({\n name: \"example-lb\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetBackendAddressPool = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"first\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst exampleBackendAddressPoolAddress = new azure.lb.BackendAddressPoolAddress(\"example\", {\n name: \"example\",\n backendAddressPoolId: exampleGetBackendAddressPool.then(exampleGetBackendAddressPool =\u003e exampleGetBackendAddressPool.id),\n virtualNetworkId: example.then(example =\u003e example.id),\n ipAddress: \"10.0.0.1\",\n});\nconst backend-pool-cr = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"globalLBBackendPool\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst example_1 = new azure.lb.BackendAddressPoolAddress(\"example-1\", {\n name: \"address1\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R1.frontendIpConfiguration[0].id,\n});\nconst example_2 = new azure.lb.BackendAddressPoolAddress(\"example-2\", {\n name: \"address2\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R2.frontendIpConfiguration[0].id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.network.get_virtual_network(name=\"example-network\",\n resource_group_name=\"example-resources\")\nexample_get_lb = azure.lb.get_lb(name=\"example-lb\",\n resource_group_name=\"example-resources\")\nexample_get_backend_address_pool = azure.lb.get_backend_address_pool(name=\"first\",\n loadbalancer_id=example_get_lb.id)\nexample_backend_address_pool_address = azure.lb.BackendAddressPoolAddress(\"example\",\n name=\"example\",\n backend_address_pool_id=example_get_backend_address_pool.id,\n virtual_network_id=example.id,\n ip_address=\"10.0.0.1\")\nbackend_pool_cr = azure.lb.get_backend_address_pool(name=\"globalLBBackendPool\",\n loadbalancer_id=example_get_lb.id)\nexample_1 = azure.lb.BackendAddressPoolAddress(\"example-1\",\n name=\"address1\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r1[\"frontendIpConfiguration\"][0][\"id\"])\nexample_2 = azure.lb.BackendAddressPoolAddress(\"example-2\",\n name=\"address2\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r2[\"frontendIpConfiguration\"][0][\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Azure.Network.GetVirtualNetwork.Invoke(new()\n {\n Name = \"example-network\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetLB = Azure.Lb.GetLB.Invoke(new()\n {\n Name = \"example-lb\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetBackendAddressPool = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"first\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var exampleBackendAddressPoolAddress = new Azure.Lb.BackendAddressPoolAddress(\"example\", new()\n {\n Name = \"example\",\n BackendAddressPoolId = exampleGetBackendAddressPool.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id),\n VirtualNetworkId = example.Apply(getVirtualNetworkResult =\u003e getVirtualNetworkResult.Id),\n IpAddress = \"10.0.0.1\",\n });\n\n var backend_pool_cr = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"globalLBBackendPool\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var example_1 = new Azure.Lb.BackendAddressPoolAddress(\"example-1\", new()\n {\n Name = \"address1\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R1.FrontendIpConfiguration[0].Id,\n });\n\n var example_2 = new Azure.Lb.BackendAddressPoolAddress(\"example-2\", new()\n {\n Name = \"address2\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R2.FrontendIpConfiguration[0].Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/lb\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := network.LookupVirtualNetwork(ctx, \u0026network.LookupVirtualNetworkArgs{\n\t\t\tName: \"example-network\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetLB, err := lb.GetLB(ctx, \u0026lb.GetLBArgs{\n\t\t\tName: \"example-lb\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetBackendAddressPool, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"first\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tBackendAddressPoolId: pulumi.String(exampleGetBackendAddressPool.Id),\n\t\t\tVirtualNetworkId: pulumi.String(example.Id),\n\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend_pool_cr, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"globalLBBackendPool\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-1\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address1\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R1.FrontendIpConfiguration[0].Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-2\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address2\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R2.FrontendIpConfiguration[0].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.azure.network.NetworkFunctions;\nimport com.pulumi.azure.network.inputs.GetVirtualNetworkArgs;\nimport com.pulumi.azure.lb.LbFunctions;\nimport com.pulumi.azure.lb.inputs.GetLBArgs;\nimport com.pulumi.azure.lb.inputs.GetBackendAddressPoolArgs;\nimport com.pulumi.azure.lb.BackendAddressPoolAddress;\nimport com.pulumi.azure.lb.BackendAddressPoolAddressArgs;\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 example = NetworkFunctions.getVirtualNetwork(GetVirtualNetworkArgs.builder()\n .name(\"example-network\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetLB = LbFunctions.getLB(GetLBArgs.builder()\n .name(\"example-lb\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetBackendAddressPool = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"first\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var exampleBackendAddressPoolAddress = new BackendAddressPoolAddress(\"exampleBackendAddressPoolAddress\", BackendAddressPoolAddressArgs.builder()\n .name(\"example\")\n .backendAddressPoolId(exampleGetBackendAddressPool.applyValue(getBackendAddressPoolResult -\u003e getBackendAddressPoolResult.id()))\n .virtualNetworkId(example.applyValue(getVirtualNetworkResult -\u003e getVirtualNetworkResult.id()))\n .ipAddress(\"10.0.0.1\")\n .build());\n\n final var backend-pool-cr = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"globalLBBackendPool\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var example_1 = new BackendAddressPoolAddress(\"example-1\", BackendAddressPoolAddressArgs.builder()\n .name(\"address1\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R1.frontendIpConfiguration()[0].id())\n .build());\n\n var example_2 = new BackendAddressPoolAddress(\"example-2\", BackendAddressPoolAddressArgs.builder()\n .name(\"address2\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R2.frontendIpConfiguration()[0].id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBackendAddressPoolAddress:\n type: azure:lb:BackendAddressPoolAddress\n name: example\n properties:\n name: example\n backendAddressPoolId: ${exampleGetBackendAddressPool.id}\n virtualNetworkId: ${example.id}\n ipAddress: 10.0.0.1\n example-1:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address1\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R1\"].frontendIpConfiguration[0].id}\n example-2:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address2\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R2\"].frontendIpConfiguration[0].id}\nvariables:\n example:\n fn::invoke:\n function: azure:network:getVirtualNetwork\n arguments:\n name: example-network\n resourceGroupName: example-resources\n exampleGetLB:\n fn::invoke:\n function: azure:lb:getLB\n arguments:\n name: example-lb\n resourceGroupName: example-resources\n exampleGetBackendAddressPool:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: first\n loadbalancerId: ${exampleGetLB.id}\n backend-pool-cr:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: globalLBBackendPool\n loadbalancerId: ${exampleGetLB.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackend Address Pool Addresses can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:lb/backendAddressPoolAddress:BackendAddressPoolAddress example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/backendAddressPool1/addresses/address1\n```\n\n", + "description": "Manages a Backend Address within a Backend Address Pool.\n\n\u003e **Note:** Backend Addresses can only be added to a `Standard` SKU Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = azure.network.getVirtualNetwork({\n name: \"example-network\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetLB = azure.lb.getLB({\n name: \"example-lb\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetBackendAddressPool = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"first\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst exampleBackendAddressPoolAddress = new azure.lb.BackendAddressPoolAddress(\"example\", {\n name: \"example\",\n backendAddressPoolId: exampleGetBackendAddressPool.then(exampleGetBackendAddressPool =\u003e exampleGetBackendAddressPool.id),\n virtualNetworkId: example.then(example =\u003e example.id),\n ipAddress: \"10.0.0.1\",\n});\nconst backend_pool_cr = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"globalLBBackendPool\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst example_1 = new azure.lb.BackendAddressPoolAddress(\"example-1\", {\n name: \"address1\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R1.frontendIpConfiguration[0].id,\n});\nconst example_2 = new azure.lb.BackendAddressPoolAddress(\"example-2\", {\n name: \"address2\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R2.frontendIpConfiguration[0].id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.network.get_virtual_network(name=\"example-network\",\n resource_group_name=\"example-resources\")\nexample_get_lb = azure.lb.get_lb(name=\"example-lb\",\n resource_group_name=\"example-resources\")\nexample_get_backend_address_pool = azure.lb.get_backend_address_pool(name=\"first\",\n loadbalancer_id=example_get_lb.id)\nexample_backend_address_pool_address = azure.lb.BackendAddressPoolAddress(\"example\",\n name=\"example\",\n backend_address_pool_id=example_get_backend_address_pool.id,\n virtual_network_id=example.id,\n ip_address=\"10.0.0.1\")\nbackend_pool_cr = azure.lb.get_backend_address_pool(name=\"globalLBBackendPool\",\n loadbalancer_id=example_get_lb.id)\nexample_1 = azure.lb.BackendAddressPoolAddress(\"example-1\",\n name=\"address1\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r1[\"frontendIpConfiguration\"][0][\"id\"])\nexample_2 = azure.lb.BackendAddressPoolAddress(\"example-2\",\n name=\"address2\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r2[\"frontendIpConfiguration\"][0][\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Azure.Network.GetVirtualNetwork.Invoke(new()\n {\n Name = \"example-network\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetLB = Azure.Lb.GetLB.Invoke(new()\n {\n Name = \"example-lb\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetBackendAddressPool = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"first\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var exampleBackendAddressPoolAddress = new Azure.Lb.BackendAddressPoolAddress(\"example\", new()\n {\n Name = \"example\",\n BackendAddressPoolId = exampleGetBackendAddressPool.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id),\n VirtualNetworkId = example.Apply(getVirtualNetworkResult =\u003e getVirtualNetworkResult.Id),\n IpAddress = \"10.0.0.1\",\n });\n\n var backend_pool_cr = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"globalLBBackendPool\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var example_1 = new Azure.Lb.BackendAddressPoolAddress(\"example-1\", new()\n {\n Name = \"address1\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R1.FrontendIpConfiguration[0].Id,\n });\n\n var example_2 = new Azure.Lb.BackendAddressPoolAddress(\"example-2\", new()\n {\n Name = \"address2\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R2.FrontendIpConfiguration[0].Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/lb\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := network.LookupVirtualNetwork(ctx, \u0026network.LookupVirtualNetworkArgs{\n\t\t\tName: \"example-network\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetLB, err := lb.GetLB(ctx, \u0026lb.GetLBArgs{\n\t\t\tName: \"example-lb\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetBackendAddressPool, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"first\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tBackendAddressPoolId: pulumi.String(exampleGetBackendAddressPool.Id),\n\t\t\tVirtualNetworkId: pulumi.String(example.Id),\n\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend_pool_cr, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"globalLBBackendPool\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-1\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address1\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R1.FrontendIpConfiguration[0].Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-2\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address2\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R2.FrontendIpConfiguration[0].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.azure.network.NetworkFunctions;\nimport com.pulumi.azure.network.inputs.GetVirtualNetworkArgs;\nimport com.pulumi.azure.lb.LbFunctions;\nimport com.pulumi.azure.lb.inputs.GetLBArgs;\nimport com.pulumi.azure.lb.inputs.GetBackendAddressPoolArgs;\nimport com.pulumi.azure.lb.BackendAddressPoolAddress;\nimport com.pulumi.azure.lb.BackendAddressPoolAddressArgs;\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 example = NetworkFunctions.getVirtualNetwork(GetVirtualNetworkArgs.builder()\n .name(\"example-network\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetLB = LbFunctions.getLB(GetLBArgs.builder()\n .name(\"example-lb\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetBackendAddressPool = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"first\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var exampleBackendAddressPoolAddress = new BackendAddressPoolAddress(\"exampleBackendAddressPoolAddress\", BackendAddressPoolAddressArgs.builder()\n .name(\"example\")\n .backendAddressPoolId(exampleGetBackendAddressPool.applyValue(getBackendAddressPoolResult -\u003e getBackendAddressPoolResult.id()))\n .virtualNetworkId(example.applyValue(getVirtualNetworkResult -\u003e getVirtualNetworkResult.id()))\n .ipAddress(\"10.0.0.1\")\n .build());\n\n final var backend-pool-cr = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"globalLBBackendPool\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var example_1 = new BackendAddressPoolAddress(\"example-1\", BackendAddressPoolAddressArgs.builder()\n .name(\"address1\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R1.frontendIpConfiguration()[0].id())\n .build());\n\n var example_2 = new BackendAddressPoolAddress(\"example-2\", BackendAddressPoolAddressArgs.builder()\n .name(\"address2\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R2.frontendIpConfiguration()[0].id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBackendAddressPoolAddress:\n type: azure:lb:BackendAddressPoolAddress\n name: example\n properties:\n name: example\n backendAddressPoolId: ${exampleGetBackendAddressPool.id}\n virtualNetworkId: ${example.id}\n ipAddress: 10.0.0.1\n example-1:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address1\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R1\"].frontendIpConfiguration[0].id}\n example-2:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address2\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R2\"].frontendIpConfiguration[0].id}\nvariables:\n example:\n fn::invoke:\n function: azure:network:getVirtualNetwork\n arguments:\n name: example-network\n resourceGroupName: example-resources\n exampleGetLB:\n fn::invoke:\n function: azure:lb:getLB\n arguments:\n name: example-lb\n resourceGroupName: example-resources\n exampleGetBackendAddressPool:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: first\n loadbalancerId: ${exampleGetLB.id}\n backend-pool-cr:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: globalLBBackendPool\n loadbalancerId: ${exampleGetLB.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackend Address Pool Addresses can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:lb/backendAddressPoolAddress:BackendAddressPoolAddress example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/backendAddressPool1/addresses/address1\n```\n\n", "properties": { "backendAddressIpConfigurationId": { "type": "string", @@ -207979,7 +207979,7 @@ } }, "azure:machinelearning/workspace:Workspace": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\")\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\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 current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleAccessPolicy = new azure.keyvault.AccessPolicy(\"example\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"workspaceexamplekeyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n exampleAccessPolicy,\n ],\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n encryption: {\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_access_policy = azure.keyvault.AccessPolicy(\"example\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key = azure.keyvault.Key(\"example\",\n name=\"workspaceexamplekeyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_access_policy,\n ]))\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n },\n encryption={\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleAccessPolicy = new Azure.KeyVault.AccessPolicy(\"example\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"workspaceexamplekeyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n exampleAccessPolicy,\n },\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPolicy, err := keyvault.NewAccessPolicy(ctx, \"example\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texampleAccessPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleAccessPolicy = new AccessPolicy(\"exampleAccessPolicy\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"workspaceexamplekeyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n exampleAccessPolicy)\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleAccessPolicy:\n type: azure:keyvault:AccessPolicy\n name: example\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Get\n - Delete\n - Purge\n - GetRotationPolicy\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: workspaceexamplekeyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${exampleAccessPolicy}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\n encryption:\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With User Assigned Identity And Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"examplestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"example-keyvalut\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleUserAssignedIdentity = new azure.authorization.UserAssignedIdentity(\"example\", {\n name: \"example-identity\",\n location: example.location,\n resourceGroupName: example.name,\n});\nconst example_identity = new azure.keyvault.AccessPolicy(\"example-identity\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: exampleUserAssignedIdentity.principalId,\n keyPermissions: [\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secretPermissions: [\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ],\n});\nconst example_sp = new azure.keyvault.AccessPolicy(\"example-sp\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst test = azuread.getServicePrincipal({\n displayName: \"Azure Cosmos DB\",\n});\nconst example_cosmosdb = new azure.keyvault.AccessPolicy(\"example-cosmosdb\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: test.then(test =\u003e test.objectId),\n keyPermissions: [\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n}, {\n dependsOn: [\n test,\n current,\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"example-keyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n example_sp,\n ],\n});\nconst example_role1 = new azure.authorization.Assignment(\"example-role1\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role2 = new azure.authorization.Assignment(\"example-role2\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Storage Blob Data Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role3 = new azure.authorization.Assignment(\"example-role3\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role4 = new azure.authorization.Assignment(\"example-role4\", {\n scope: exampleInsights.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n highBusinessImpact: true,\n primaryUserAssignedIdentity: exampleUserAssignedIdentity.id,\n identity: {\n type: \"UserAssigned\",\n identityIds: [exampleUserAssignedIdentity.id],\n },\n encryption: {\n userAssignedIdentityId: exampleUserAssignedIdentity.id,\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n}, {\n dependsOn: [\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_azuread as azuread\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_account = azure.storage.Account(\"example\",\n name=\"examplestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"example-keyvalut\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_user_assigned_identity = azure.authorization.UserAssignedIdentity(\"example\",\n name=\"example-identity\",\n location=example.location,\n resource_group_name=example.name)\nexample_identity = azure.keyvault.AccessPolicy(\"example-identity\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=example_user_assigned_identity.principal_id,\n key_permissions=[\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secret_permissions=[\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ])\nexample_sp = azure.keyvault.AccessPolicy(\"example-sp\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\ntest = azuread.get_service_principal(display_name=\"Azure Cosmos DB\")\nexample_cosmosdb = azure.keyvault.AccessPolicy(\"example-cosmosdb\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=test.object_id,\n key_permissions=[\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n test,\n current,\n ]))\nexample_key = azure.keyvault.Key(\"example\",\n name=\"example-keyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_sp,\n ]))\nexample_role1 = azure.authorization.Assignment(\"example-role1\",\n scope=example_key_vault.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role2 = azure.authorization.Assignment(\"example-role2\",\n scope=example_account.id,\n role_definition_name=\"Storage Blob Data Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role3 = azure.authorization.Assignment(\"example-role3\",\n scope=example_account.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role4 = azure.authorization.Assignment(\"example-role4\",\n scope=example_insights.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n high_business_impact=True,\n primary_user_assigned_identity=example_user_assigned_identity.id,\n identity={\n \"type\": \"UserAssigned\",\n \"identity_ids\": [example_user_assigned_identity.id],\n },\n encryption={\n \"user_assigned_identity_id\": example_user_assigned_identity.id,\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"examplestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"example-keyvalut\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleUserAssignedIdentity = new Azure.Authorization.UserAssignedIdentity(\"example\", new()\n {\n Name = \"example-identity\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var example_identity = new Azure.KeyVault.AccessPolicy(\"example-identity\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = exampleUserAssignedIdentity.PrincipalId,\n KeyPermissions = new[]\n {\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n },\n SecretPermissions = new[]\n {\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n },\n });\n\n var example_sp = new Azure.KeyVault.AccessPolicy(\"example-sp\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var test = AzureAD.GetServicePrincipal.Invoke(new()\n {\n DisplayName = \"Azure Cosmos DB\",\n });\n\n var example_cosmosdb = new Azure.KeyVault.AccessPolicy(\"example-cosmosdb\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = test.Apply(getServicePrincipalResult =\u003e getServicePrincipalResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n test,\n current,\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"example-keyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n example_sp,\n },\n });\n\n var example_role1 = new Azure.Authorization.Assignment(\"example-role1\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role2 = new Azure.Authorization.Assignment(\"example-role2\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Storage Blob Data Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role3 = new Azure.Authorization.Assignment(\"example-role3\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role4 = new Azure.Authorization.Assignment(\"example-role4\", new()\n {\n Scope = exampleInsights.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n HighBusinessImpact = true,\n PrimaryUserAssignedIdentity = exampleUserAssignedIdentity.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"UserAssigned\",\n IdentityIds = new[]\n {\n exampleUserAssignedIdentity.Id,\n },\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n UserAssignedIdentityId = exampleUserAssignedIdentity.Id,\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"example-keyvalut\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUserAssignedIdentity, err := authorization.NewUserAssignedIdentity(ctx, \"example\", \u0026authorization.UserAssignedIdentityArgs{\n\t\t\tName: pulumi.String(\"example-identity\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-identity\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: exampleUserAssignedIdentity.PrincipalId,\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t},\n\t\t\tSecretPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Set\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Backup\"),\n\t\t\t\tpulumi.String(\"Restore\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-sp\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := azuread.LookupServicePrincipal(ctx, \u0026azuread.LookupServicePrincipalArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Azure Cosmos DB\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-cosmosdb\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(test.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttest,\n\t\t\tcurrent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"example-keyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texample_sp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role1\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role2\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Storage Blob Data Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role3\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role4\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleInsights.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tHighBusinessImpact: pulumi.Bool(true),\n\t\t\tPrimaryUserAssignedIdentity: exampleUserAssignedIdentity.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"UserAssigned\"),\n\t\t\t\tIdentityIds: pulumi.StringArray{\n\t\t\t\t\texampleUserAssignedIdentity.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tUserAssignedIdentityId: exampleUserAssignedIdentity.ID(),\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_role1,\n\t\t\texample_role2,\n\t\t\texample_role3,\n\t\t\texample_role4,\n\t\t\texample_cosmosdb,\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.authorization.UserAssignedIdentity;\nimport com.pulumi.azure.authorization.UserAssignedIdentityArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetServicePrincipalArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"examplestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"example-keyvalut\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleUserAssignedIdentity = new UserAssignedIdentity(\"exampleUserAssignedIdentity\", UserAssignedIdentityArgs.builder()\n .name(\"example-identity\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var example_identity = new AccessPolicy(\"example-identity\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(exampleUserAssignedIdentity.principalId())\n .keyPermissions( \n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\")\n .secretPermissions( \n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\")\n .build());\n\n var example_sp = new AccessPolicy(\"example-sp\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n final var test = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()\n .displayName(\"Azure Cosmos DB\")\n .build());\n\n var example_cosmosdb = new AccessPolicy(\"example-cosmosdb\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult),\n current.applyValue(getClientConfigResult -\u003e getClientConfigResult))\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"example-keyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n example_sp)\n .build());\n\n var example_role1 = new Assignment(\"example-role1\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role2 = new Assignment(\"example-role2\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Storage Blob Data Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role3 = new Assignment(\"example-role3\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role4 = new Assignment(\"example-role4\", AssignmentArgs.builder()\n .scope(exampleInsights.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .highBusinessImpact(true)\n .primaryUserAssignedIdentity(exampleUserAssignedIdentity.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"UserAssigned\")\n .identityIds(exampleUserAssignedIdentity.id())\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .userAssignedIdentityId(exampleUserAssignedIdentity.id())\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: examplestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: example-keyvalut\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleUserAssignedIdentity:\n type: azure:authorization:UserAssignedIdentity\n name: example\n properties:\n name: example-identity\n location: ${example.location}\n resourceGroupName: ${example.name}\n example-identity:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${exampleUserAssignedIdentity.principalId}\n keyPermissions:\n - WrapKey\n - UnwrapKey\n - Get\n - Recover\n secretPermissions:\n - Get\n - List\n - Set\n - Delete\n - Recover\n - Backup\n - Restore\n example-sp:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Get\n - Create\n - Recover\n - Delete\n - Purge\n - GetRotationPolicy\n example-cosmosdb:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${test.objectId}\n keyPermissions:\n - Get\n - Recover\n - UnwrapKey\n - WrapKey\n options:\n dependsOn:\n - ${test}\n - ${current}\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: example-keyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${[\"example-sp\"]}\n example-role1:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role2:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Storage Blob Data Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role3:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role4:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleInsights.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n highBusinessImpact: true\n primaryUserAssignedIdentity: ${exampleUserAssignedIdentity.id}\n identity:\n type: UserAssigned\n identityIds:\n - ${exampleUserAssignedIdentity.id}\n encryption:\n userAssignedIdentityId: ${exampleUserAssignedIdentity.id}\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\n options:\n dependsOn:\n - ${[\"example-role1\"]}\n - ${[\"example-role2\"]}\n - ${[\"example-role3\"]}\n - ${[\"example-role4\"]}\n - ${[\"example-cosmosdb\"]}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n test:\n fn::invoke:\n function: azuread:getServicePrincipal\n arguments:\n displayName: Azure Cosmos DB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMachine Learning Workspace can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:machinelearning/workspace:Workspace example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.MachineLearningServices/workspaces/workspace1\n```\n\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\")\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\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 current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleAccessPolicy = new azure.keyvault.AccessPolicy(\"example\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"workspaceexamplekeyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n exampleAccessPolicy,\n ],\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n encryption: {\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_access_policy = azure.keyvault.AccessPolicy(\"example\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key = azure.keyvault.Key(\"example\",\n name=\"workspaceexamplekeyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_access_policy,\n ]))\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n },\n encryption={\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleAccessPolicy = new Azure.KeyVault.AccessPolicy(\"example\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"workspaceexamplekeyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n exampleAccessPolicy,\n },\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPolicy, err := keyvault.NewAccessPolicy(ctx, \"example\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texampleAccessPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleAccessPolicy = new AccessPolicy(\"exampleAccessPolicy\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"workspaceexamplekeyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n exampleAccessPolicy)\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleAccessPolicy:\n type: azure:keyvault:AccessPolicy\n name: example\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Get\n - Delete\n - Purge\n - GetRotationPolicy\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: workspaceexamplekeyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${exampleAccessPolicy}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\n encryption:\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With User Assigned Identity And Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"examplestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"example-keyvalut\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleUserAssignedIdentity = new azure.authorization.UserAssignedIdentity(\"example\", {\n name: \"example-identity\",\n location: example.location,\n resourceGroupName: example.name,\n});\nconst example_identity = new azure.keyvault.AccessPolicy(\"example-identity\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: exampleUserAssignedIdentity.principalId,\n keyPermissions: [\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secretPermissions: [\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ],\n});\nconst example_sp = new azure.keyvault.AccessPolicy(\"example-sp\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst test = azuread.getServicePrincipal({\n displayName: \"Azure Cosmos DB\",\n});\nconst example_cosmosdb = new azure.keyvault.AccessPolicy(\"example-cosmosdb\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: test.then(test =\u003e test.objectId),\n keyPermissions: [\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n}, {\n dependsOn: [\n test,\n current,\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"example-keyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n example_sp,\n ],\n});\nconst example_role1 = new azure.authorization.Assignment(\"example-role1\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role2 = new azure.authorization.Assignment(\"example-role2\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Storage Blob Data Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role3 = new azure.authorization.Assignment(\"example-role3\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role4 = new azure.authorization.Assignment(\"example-role4\", {\n scope: exampleInsights.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n highBusinessImpact: true,\n primaryUserAssignedIdentity: exampleUserAssignedIdentity.id,\n identity: {\n type: \"UserAssigned\",\n identityIds: [exampleUserAssignedIdentity.id],\n },\n encryption: {\n userAssignedIdentityId: exampleUserAssignedIdentity.id,\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n}, {\n dependsOn: [\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_azuread as azuread\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_account = azure.storage.Account(\"example\",\n name=\"examplestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"example-keyvalut\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_user_assigned_identity = azure.authorization.UserAssignedIdentity(\"example\",\n name=\"example-identity\",\n location=example.location,\n resource_group_name=example.name)\nexample_identity = azure.keyvault.AccessPolicy(\"example-identity\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=example_user_assigned_identity.principal_id,\n key_permissions=[\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secret_permissions=[\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ])\nexample_sp = azure.keyvault.AccessPolicy(\"example-sp\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\ntest = azuread.get_service_principal(display_name=\"Azure Cosmos DB\")\nexample_cosmosdb = azure.keyvault.AccessPolicy(\"example-cosmosdb\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=test.object_id,\n key_permissions=[\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n test,\n current,\n ]))\nexample_key = azure.keyvault.Key(\"example\",\n name=\"example-keyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_sp,\n ]))\nexample_role1 = azure.authorization.Assignment(\"example-role1\",\n scope=example_key_vault.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role2 = azure.authorization.Assignment(\"example-role2\",\n scope=example_account.id,\n role_definition_name=\"Storage Blob Data Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role3 = azure.authorization.Assignment(\"example-role3\",\n scope=example_account.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role4 = azure.authorization.Assignment(\"example-role4\",\n scope=example_insights.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n high_business_impact=True,\n primary_user_assigned_identity=example_user_assigned_identity.id,\n identity={\n \"type\": \"UserAssigned\",\n \"identity_ids\": [example_user_assigned_identity.id],\n },\n encryption={\n \"user_assigned_identity_id\": example_user_assigned_identity.id,\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"examplestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"example-keyvalut\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleUserAssignedIdentity = new Azure.Authorization.UserAssignedIdentity(\"example\", new()\n {\n Name = \"example-identity\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var example_identity = new Azure.KeyVault.AccessPolicy(\"example-identity\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = exampleUserAssignedIdentity.PrincipalId,\n KeyPermissions = new[]\n {\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n },\n SecretPermissions = new[]\n {\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n },\n });\n\n var example_sp = new Azure.KeyVault.AccessPolicy(\"example-sp\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var test = AzureAD.GetServicePrincipal.Invoke(new()\n {\n DisplayName = \"Azure Cosmos DB\",\n });\n\n var example_cosmosdb = new Azure.KeyVault.AccessPolicy(\"example-cosmosdb\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = test.Apply(getServicePrincipalResult =\u003e getServicePrincipalResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n test,\n current,\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"example-keyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n example_sp,\n },\n });\n\n var example_role1 = new Azure.Authorization.Assignment(\"example-role1\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role2 = new Azure.Authorization.Assignment(\"example-role2\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Storage Blob Data Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role3 = new Azure.Authorization.Assignment(\"example-role3\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role4 = new Azure.Authorization.Assignment(\"example-role4\", new()\n {\n Scope = exampleInsights.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n HighBusinessImpact = true,\n PrimaryUserAssignedIdentity = exampleUserAssignedIdentity.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"UserAssigned\",\n IdentityIds = new[]\n {\n exampleUserAssignedIdentity.Id,\n },\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n UserAssignedIdentityId = exampleUserAssignedIdentity.Id,\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"example-keyvalut\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUserAssignedIdentity, err := authorization.NewUserAssignedIdentity(ctx, \"example\", \u0026authorization.UserAssignedIdentityArgs{\n\t\t\tName: pulumi.String(\"example-identity\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-identity\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: exampleUserAssignedIdentity.PrincipalId,\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t},\n\t\t\tSecretPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Set\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Backup\"),\n\t\t\t\tpulumi.String(\"Restore\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_sp, err := keyvault.NewAccessPolicy(ctx, \"example-sp\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := azuread.LookupServicePrincipal(ctx, \u0026azuread.LookupServicePrincipalArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Azure Cosmos DB\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_cosmosdb, err := keyvault.NewAccessPolicy(ctx, \"example-cosmosdb\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(test.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttest,\n\t\t\tcurrent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"example-keyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texample_sp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role1, err := authorization.NewAssignment(ctx, \"example-role1\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role2, err := authorization.NewAssignment(ctx, \"example-role2\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Storage Blob Data Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role3, err := authorization.NewAssignment(ctx, \"example-role3\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role4, err := authorization.NewAssignment(ctx, \"example-role4\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleInsights.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tHighBusinessImpact: pulumi.Bool(true),\n\t\t\tPrimaryUserAssignedIdentity: exampleUserAssignedIdentity.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"UserAssigned\"),\n\t\t\t\tIdentityIds: pulumi.StringArray{\n\t\t\t\t\texampleUserAssignedIdentity.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tUserAssignedIdentityId: exampleUserAssignedIdentity.ID(),\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_role1,\n\t\t\texample_role2,\n\t\t\texample_role3,\n\t\t\texample_role4,\n\t\t\texample_cosmosdb,\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.authorization.UserAssignedIdentity;\nimport com.pulumi.azure.authorization.UserAssignedIdentityArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetServicePrincipalArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\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 final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"examplestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"example-keyvalut\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleUserAssignedIdentity = new UserAssignedIdentity(\"exampleUserAssignedIdentity\", UserAssignedIdentityArgs.builder()\n .name(\"example-identity\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var example_identity = new AccessPolicy(\"example-identity\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(exampleUserAssignedIdentity.principalId())\n .keyPermissions( \n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\")\n .secretPermissions( \n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\")\n .build());\n\n var example_sp = new AccessPolicy(\"example-sp\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n final var test = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()\n .displayName(\"Azure Cosmos DB\")\n .build());\n\n var example_cosmosdb = new AccessPolicy(\"example-cosmosdb\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult),\n current.applyValue(getClientConfigResult -\u003e getClientConfigResult))\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"example-keyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n example_sp)\n .build());\n\n var example_role1 = new Assignment(\"example-role1\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role2 = new Assignment(\"example-role2\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Storage Blob Data Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role3 = new Assignment(\"example-role3\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role4 = new Assignment(\"example-role4\", AssignmentArgs.builder()\n .scope(exampleInsights.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .highBusinessImpact(true)\n .primaryUserAssignedIdentity(exampleUserAssignedIdentity.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"UserAssigned\")\n .identityIds(exampleUserAssignedIdentity.id())\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .userAssignedIdentityId(exampleUserAssignedIdentity.id())\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: examplestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: example-keyvalut\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleUserAssignedIdentity:\n type: azure:authorization:UserAssignedIdentity\n name: example\n properties:\n name: example-identity\n location: ${example.location}\n resourceGroupName: ${example.name}\n example-identity:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${exampleUserAssignedIdentity.principalId}\n keyPermissions:\n - WrapKey\n - UnwrapKey\n - Get\n - Recover\n secretPermissions:\n - Get\n - List\n - Set\n - Delete\n - Recover\n - Backup\n - Restore\n example-sp:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Get\n - Create\n - Recover\n - Delete\n - Purge\n - GetRotationPolicy\n example-cosmosdb:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${test.objectId}\n keyPermissions:\n - Get\n - Recover\n - UnwrapKey\n - WrapKey\n options:\n dependsOn:\n - ${test}\n - ${current}\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: example-keyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${[\"example-sp\"]}\n example-role1:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role2:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Storage Blob Data Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role3:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role4:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleInsights.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n highBusinessImpact: true\n primaryUserAssignedIdentity: ${exampleUserAssignedIdentity.id}\n identity:\n type: UserAssigned\n identityIds:\n - ${exampleUserAssignedIdentity.id}\n encryption:\n userAssignedIdentityId: ${exampleUserAssignedIdentity.id}\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\n options:\n dependsOn:\n - ${[\"example-role1\"]}\n - ${[\"example-role2\"]}\n - ${[\"example-role3\"]}\n - ${[\"example-role4\"]}\n - ${[\"example-cosmosdb\"]}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n test:\n fn::invoke:\n function: azuread:getServicePrincipal\n arguments:\n displayName: Azure Cosmos DB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMachine Learning Workspace can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:machinelearning/workspace:Workspace example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.MachineLearningServices/workspaces/workspace1\n```\n\n", "properties": { "applicationInsightsId": { "type": "string", @@ -233457,7 +233457,7 @@ } }, "azure:network/virtualNetworkPeering:VirtualNetworkPeering": { - "description": "Manages a virtual network peering which allows resources to access other\nresources in the linked virtual network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id)\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Triggers)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_2.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_1.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_std as std\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_2.address_spaces).apply(lambda invoke: invoke.result),\n })\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_1.address_spaces).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_2.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_1.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_2.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_1.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-2\"].addressSpaces}\n return: result\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-1\"].addressSpaces}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Note\n\nVirtual Network peerings cannot be created, updated or deleted concurrently.\n\n## Import\n\nVirtual Network Peerings can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:network/virtualNetworkPeering:VirtualNetworkPeering examplePeering /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Network/virtualNetworks/myvnet1/virtualNetworkPeerings/myvnet1peering\n```\n\n", + "description": "Manages a virtual network peering which allows resources to access other\nresources in the linked virtual network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id)\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_1, err := network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_2, err := network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Triggers)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_2.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_1.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_std as std\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_2.address_spaces).apply(lambda invoke: invoke.result),\n })\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_1.address_spaces).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_2.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_1.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_1, err := network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_2, err := network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_2.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_1.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\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 example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-2\"].addressSpaces}\n return: result\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-1\"].addressSpaces}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Note\n\nVirtual Network peerings cannot be created, updated or deleted concurrently.\n\n## Import\n\nVirtual Network Peerings can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:network/virtualNetworkPeering:VirtualNetworkPeering examplePeering /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Network/virtualNetworks/myvnet1/virtualNetworkPeerings/myvnet1peering\n```\n\n", "properties": { "allowForwardedTraffic": { "type": "boolean", @@ -256511,7 +256511,7 @@ } }, "azure:siterecovery/replicatedVM:ReplicatedVM": { - "description": "Manages a VM replicated using Azure Site Recovery (Azure to Azure only). A replicated VM keeps a copiously updated image of the VM in another region in order to be able to start the VM in that region in case of a disaster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.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\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\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 primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Replicated VM's can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicatedVM:ReplicatedVM vmreplication /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.RecoveryServices/vaults/recovery-vault-name/replicationFabrics/fabric-name/replicationProtectionContainers/protection-container-name/replicationProtectedItems/vm-replication-name\n```\n\n", + "description": "Manages a VM replicated using Azure Site Recovery (Azure to Azure only). A replicated VM keeps a copiously updated image of the VM in another region in order to be able to start the VM in that region in case of a disaster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.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\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainer_mapping, err := siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_mapping, err := siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\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 primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Replicated VM's can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicatedVM:ReplicatedVM vmreplication /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.RecoveryServices/vaults/recovery-vault-name/replicationFabrics/fabric-name/replicationProtectionContainers/protection-container-name/replicationProtectedItems/vm-replication-name\n```\n\n", "properties": { "managedDisks": { "type": "array", @@ -256988,7 +256988,7 @@ } }, "azure:siterecovery/replicationRecoveryPlan:ReplicationRecoveryPlan": { - "description": "Manages a Site Recovery Replication Recovery Plan within a Recovery Services vault. A recovery plan gathers machines into recovery groups for the purpose of failover.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\nconst example = new azure.siterecovery.ReplicationRecoveryPlan(\"example\", {\n name: \"example-recover-plan\",\n recoveryVaultId: vault.id,\n sourceRecoveryFabricId: primaryFabric.id,\n targetRecoveryFabricId: secondaryFabric.id,\n shutdownRecoveryGroup: {},\n failoverRecoveryGroup: {},\n bootRecoveryGroups: [{\n replicatedProtectedItems: [vm_replication.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\nexample = azure.siterecovery.ReplicationRecoveryPlan(\"example\",\n name=\"example-recover-plan\",\n recovery_vault_id=vault.id,\n source_recovery_fabric_id=primary_fabric.id,\n target_recovery_fabric_id=secondary_fabric.id,\n shutdown_recovery_group={},\n failover_recovery_group={},\n boot_recovery_groups=[{\n \"replicated_protected_items\": [vm_replication.id],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n var example = new Azure.SiteRecovery.ReplicationRecoveryPlan(\"example\", new()\n {\n Name = \"example-recover-plan\",\n RecoveryVaultId = vault.Id,\n SourceRecoveryFabricId = primaryFabric.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n ShutdownRecoveryGroup = null,\n FailoverRecoveryGroup = null,\n BootRecoveryGroups = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs\n {\n ReplicatedProtectedItems = new[]\n {\n vm_replication.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.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\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicationRecoveryPlan(ctx, \"example\", \u0026siterecovery.ReplicationRecoveryPlanArgs{\n\t\t\tName: pulumi.String(\"example-recover-plan\"),\n\t\t\tRecoveryVaultId: vault.ID(),\n\t\t\tSourceRecoveryFabricId: primaryFabric.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tShutdownRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanShutdownRecoveryGroupArgs{},\n\t\t\tFailoverRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanFailoverRecoveryGroupArgs{},\n\t\t\tBootRecoveryGroups: siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArray{\n\t\t\t\t\u0026siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArgs{\n\t\t\t\t\tReplicatedProtectedItems: pulumi.StringArray{\n\t\t\t\t\t\tvm_replication.ID(),\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\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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlan;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlanArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanShutdownRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanFailoverRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs;\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 primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n var example = new ReplicationRecoveryPlan(\"example\", ReplicationRecoveryPlanArgs.builder()\n .name(\"example-recover-plan\")\n .recoveryVaultId(vault.id())\n .sourceRecoveryFabricId(primaryFabric.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .shutdownRecoveryGroup()\n .failoverRecoveryGroup()\n .bootRecoveryGroups(ReplicationRecoveryPlanBootRecoveryGroupArgs.builder()\n .replicatedProtectedItems(vm_replication.id())\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Fabric can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicationRecoveryPlan:ReplicationRecoveryPlan azurerm_site_recovery_replication_recovery_plan.example /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/groupName/providers/Microsoft.RecoveryServices/vaults/vaultName/replicationRecoveryPlans/planName\n```\n\n", + "description": "Manages a Site Recovery Replication Recovery Plan within a Recovery Services vault. A recovery plan gathers machines into recovery groups for the purpose of failover.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\nconst example = new azure.siterecovery.ReplicationRecoveryPlan(\"example\", {\n name: \"example-recover-plan\",\n recoveryVaultId: vault.id,\n sourceRecoveryFabricId: primaryFabric.id,\n targetRecoveryFabricId: secondaryFabric.id,\n shutdownRecoveryGroup: {},\n failoverRecoveryGroup: {},\n bootRecoveryGroups: [{\n replicatedProtectedItems: [vm_replication.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\nexample = azure.siterecovery.ReplicationRecoveryPlan(\"example\",\n name=\"example-recover-plan\",\n recovery_vault_id=vault.id,\n source_recovery_fabric_id=primary_fabric.id,\n target_recovery_fabric_id=secondary_fabric.id,\n shutdown_recovery_group={},\n failover_recovery_group={},\n boot_recovery_groups=[{\n \"replicated_protected_items\": [vm_replication.id],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n var example = new Azure.SiteRecovery.ReplicationRecoveryPlan(\"example\", new()\n {\n Name = \"example-recover-plan\",\n RecoveryVaultId = vault.Id,\n SourceRecoveryFabricId = primaryFabric.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n ShutdownRecoveryGroup = null,\n FailoverRecoveryGroup = null,\n BootRecoveryGroups = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs\n {\n ReplicatedProtectedItems = new[]\n {\n vm_replication.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.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\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainer_mapping, err := siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_mapping, err := siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvm_replication, err := siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicationRecoveryPlan(ctx, \"example\", \u0026siterecovery.ReplicationRecoveryPlanArgs{\n\t\t\tName: pulumi.String(\"example-recover-plan\"),\n\t\t\tRecoveryVaultId: vault.ID(),\n\t\t\tSourceRecoveryFabricId: primaryFabric.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tShutdownRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanShutdownRecoveryGroupArgs{},\n\t\t\tFailoverRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanFailoverRecoveryGroupArgs{},\n\t\t\tBootRecoveryGroups: siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArray{\n\t\t\t\t\u0026siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArgs{\n\t\t\t\t\tReplicatedProtectedItems: pulumi.StringArray{\n\t\t\t\t\t\tvm_replication.ID(),\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\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.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlan;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlanArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanShutdownRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanFailoverRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs;\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 primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n var example = new ReplicationRecoveryPlan(\"example\", ReplicationRecoveryPlanArgs.builder()\n .name(\"example-recover-plan\")\n .recoveryVaultId(vault.id())\n .sourceRecoveryFabricId(primaryFabric.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .shutdownRecoveryGroup()\n .failoverRecoveryGroup()\n .bootRecoveryGroups(ReplicationRecoveryPlanBootRecoveryGroupArgs.builder()\n .replicatedProtectedItems(vm_replication.id())\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Fabric can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicationRecoveryPlan:ReplicationRecoveryPlan azurerm_site_recovery_replication_recovery_plan.example /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/groupName/providers/Microsoft.RecoveryServices/vaults/vaultName/replicationRecoveryPlans/planName\n```\n\n", "properties": { "azureToAzureSettings": { "$ref": "#/types/azure:siterecovery/ReplicationRecoveryPlanAzureToAzureSettings:ReplicationRecoveryPlanAzureToAzureSettings", @@ -276119,7 +276119,7 @@ } }, "azure:authorization/getRoleDefinition:getRoleDefinition": { - "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\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 primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\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 primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRoleDefinition.\n", "properties": { @@ -301168,7 +301168,7 @@ }, "azure:role/getRoleDefinition:getRoleDefinition": { "deprecationMessage": "azure.role.getRoleDefinition has been deprecated in favor of azure.authorization.getRoleDefinition", - "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\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 primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\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.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\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 primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRoleDefinition.\n", "properties": { diff --git a/provider/go.mod b/provider/go.mod index 8110ddb538..189840dd94 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -11,7 +11,7 @@ require ( github.com/hashicorp/terraform-provider-azurerm v1.44.1-0.20220923005104-eaa801c358ff github.com/pulumi/providertest v0.1.3 github.com/pulumi/pulumi-terraform-bridge/v3 v3.101.0 - github.com/pulumi/pulumi/sdk/v3 v3.145.0 + github.com/pulumi/pulumi/sdk/v3 v3.147.0 github.com/stretchr/testify v1.10.0 ) @@ -272,3 +272,7 @@ require ( lukechampine.com/frand v1.4.2 // indirect software.sslmate.com/src/go-pkcs12 v0.4.0 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 diff --git a/provider/go.sum b/provider/go.sum index 5c0f3868c6..8c61030726 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1989,10 +1989,10 @@ github.com/pulumi/pulumi-terraform-bridge/v3 v3.101.0 h1:LucjkMkSU2iMuMdLYhRaVDi github.com/pulumi/pulumi-terraform-bridge/v3 v3.101.0/go.mod h1:r+cxSrRxwCRbHMdKMKWU3NKDcUTm9xa9PcBDuHQnRkI= github.com/pulumi/pulumi-yaml v1.12.0 h1:ThJP+EBqeJyCnS6w6/PwcEFOT5o112qv0lObhefmFCk= github.com/pulumi/pulumi-yaml v1.12.0/go.mod h1:EhZd1XDfuLa15O51qVVE16U6r8ldK9mLIBclqWCX27Y= -github.com/pulumi/pulumi/pkg/v3 v3.145.0 h1:hAhFLieunnCKuMd3GbLqE5uWQ1hpNLdl6+bCDFSF4YQ= -github.com/pulumi/pulumi/pkg/v3 v3.145.0/go.mod h1:N19IsMJ3GyYO5N2JfpsCAVk0eH1NKkF05fZGn5dnhBE= -github.com/pulumi/pulumi/sdk/v3 v3.145.0 h1:r5iOgz67RElFXJt4GVVY2SBGh5sR24mL9NOcKBiBi/k= -github.com/pulumi/pulumi/sdk/v3 v3.145.0/go.mod h1:5pZySnw3RiQKddx8orThjEFmWsXkGAY3ktKOxZj2Ym4= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 h1:AYjXx3QmUhYwIKPTT5dn8mkJWOEow1mvciSMbvPVOvQ= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 h1:U0mkZ0i96Ml9wNsJDGYl8vssNPr9gcqZlG2XgHNcPpc= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= 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= diff --git a/sdk/go.mod b/sdk/go.mod index ef54abd094..73da55267c 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -1,6 +1,8 @@ module github.com/pulumi/pulumi-azure/sdk/v6 -go 1.21 +go 1.22 + +toolchain go1.22.11 require ( github.com/blang/semver v3.5.1+incompatible @@ -11,7 +13,7 @@ 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/ProtonMail/go-crypto v1.1.3 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect @@ -23,12 +25,12 @@ require ( github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/djherbis/times v1.5.0 // indirect github.com/emirpasic/gods v1.18.1 // 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 + github.com/go-git/go-billy/v5 v5.6.1 // indirect + github.com/go-git/go-git/v5 v5.13.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/glog v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -59,11 +61,11 @@ require ( github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // 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/rogpeppe/go-internal v1.12.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.2.2 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect github.com/spf13/cast v1.4.1 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect @@ -75,14 +77,14 @@ require ( github.com/zclconf/go-cty v1.13.2 // indirect go.uber.org/atomic v1.9.0 // indirect golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect - golang.org/x/mod v0.18.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.33.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/term v0.27.0 // indirect golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.22.0 // indirect + golang.org/x/tools v0.23.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 @@ -91,3 +93,7 @@ require ( lukechampine.com/frand v1.4.2 // indirect pgregory.net/rapid v0.6.1 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 diff --git a/sdk/go.sum b/sdk/go.sum index 95e769753a..7422e1452f 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -7,8 +7,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= -github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -25,7 +25,6 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -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.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= @@ -34,36 +33,35 @@ github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZ github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= +github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= -github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= +github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= -github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= +github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= +github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -129,8 +127,8 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -150,14 +148,14 @@ 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/sdk/v3 v3.145.0 h1:r5iOgz67RElFXJt4GVVY2SBGh5sR24mL9NOcKBiBi/k= -github.com/pulumi/pulumi/sdk/v3 v3.145.0/go.mod h1:5pZySnw3RiQKddx8orThjEFmWsXkGAY3ktKOxZj2Ym4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480 h1:U0mkZ0i96Ml9wNsJDGYl8vssNPr9gcqZlG2XgHNcPpc= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250128115227-3fa6ec1d1480/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= 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/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= @@ -166,8 +164,8 @@ github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= -github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= +github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= @@ -185,8 +183,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= @@ -197,7 +195,6 @@ github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= @@ -205,40 +202,28 @@ go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 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.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -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/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= 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.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.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= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -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.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= 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.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -253,30 +238,17 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.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.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 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= -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.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -285,10 +257,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 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.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= 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=