diff --git a/.pulumi-java-gen.version b/.pulumi-java-gen.version index d33c3a21..51de3305 100644 --- a/.pulumi-java-gen.version +++ b/.pulumi-java-gen.version @@ -1 +1 @@ -0.12.0 \ No newline at end of file +0.13.0 \ No newline at end of file diff --git a/examples/go.mod b/examples/go.mod index 975f3ce9..57f21c5c 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -2,7 +2,7 @@ module github.com/pulumiverse/pulumi-grafana/examples go 1.22 -require github.com/pulumi/pulumi/pkg/v3 v3.118.0 +require github.com/pulumi/pulumi/pkg/v3 v3.126.0 require ( cloud.google.com/go v0.112.1 // indirect @@ -14,12 +14,13 @@ require ( cloud.google.com/go/longrunning v0.5.5 // indirect cloud.google.com/go/storage v1.39.1 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect @@ -45,7 +46,7 @@ require ( github.com/blang/semver v3.5.1+incompatible // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.24.2 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.7 // indirect @@ -80,7 +81,7 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-retryablehttp v0.7.5 // indirect + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect @@ -95,7 +96,7 @@ require ( github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect @@ -121,10 +122,10 @@ require ( github.com/pkg/term v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.6.2 // indirect - github.com/pulumi/pulumi/sdk/v3 v3.118.0 // indirect + github.com/pulumi/esc v0.9.1 // indirect + github.com/pulumi/pulumi/sdk/v3 v3.126.0 // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect @@ -153,17 +154,17 @@ require ( go.uber.org/atomic v1.9.0 // indirect gocloud.dev v0.37.0 // indirect gocloud.dev/secrets/hashivault v0.37.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.17.0 // indirect + golang.org/x/tools v0.22.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/appengine v1.6.8 // indirect diff --git a/examples/go.sum b/examples/go.sum index b8efb75a..8ef90117 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -17,12 +17,12 @@ cloud.google.com/go/storage v1.39.1 h1:MvraqHKhogCOTXTlct/9C3K3+Uy2jBmFYb3/Sp6dV cloud.google.com/go/storage v1.39.1/go.mod h1:xK6xZmxZmo+fyP7+DEF6FhNc24/JAe95OLyOHCXFH1o= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= @@ -30,6 +30,8 @@ github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -103,8 +105,8 @@ github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4r github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= @@ -126,8 +128,6 @@ github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJ github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= -github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= @@ -139,8 +139,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= @@ -230,13 +230,12 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v1.2.2 h1:ihRI7YFwcZdiSD7SIenIhHfQH3OuDvWerAUBZbeQS3M= -github.com/hashicorp/go-hclog v1.2.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= -github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= +github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= @@ -282,8 +281,8 @@ github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxec github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -341,18 +340,18 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= -github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/pulumi/pkg/v3 v3.118.0 h1:i2OJe0Rl6BDxupJ0ix9HczAGKUsc6H6cU9svwDe1TYk= -github.com/pulumi/pulumi/pkg/v3 v3.118.0/go.mod h1:fbDHFdEJtFRkHu3Q6Sd7X3PalUsIXLbHT/pHfsbldlo= -github.com/pulumi/pulumi/sdk/v3 v3.118.0 h1:NboaaB4cNuehzsax38PO1jZOS6Mzbx/jNaDNaHPmg4c= -github.com/pulumi/pulumi/sdk/v3 v3.118.0/go.mod h1:kNea72+FQk82OjZ3yEP4dl6nbAl2ngE8PDBc0iFAaHg= +github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= +github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= +github.com/pulumi/pulumi/pkg/v3 v3.126.0 h1:XaZU1ehjHN2I5ihkfwxK/UFMDiCDM9FSt2TBnbldAx4= +github.com/pulumi/pulumi/pkg/v3 v3.126.0/go.mod h1:1P4/oK9zceOJUm48QQl/TqjDN68lfsdnTR1FITTFddw= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= @@ -440,11 +439,11 @@ 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.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/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= @@ -455,8 +454,9 @@ 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.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-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= @@ -476,8 +476,8 @@ 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= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= @@ -489,8 +489,9 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ 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.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -517,8 +518,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -528,8 +529,8 @@ 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= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -541,8 +542,8 @@ 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= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -558,8 +559,9 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f 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 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= 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/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-grafana/schema.json b/provider/cmd/pulumi-resource-grafana/schema.json index 18c56ec5..7cea1aa0 100644 --- a/provider/cmd/pulumi-resource-grafana/schema.json +++ b/provider/cmd/pulumi-resource-grafana/schema.json @@ -15130,7 +15130,7 @@ "deprecationMessage": "grafana.index/notificationpolicy.NotificationPolicy has been deprecated in favor of grafana.alerting/notificationpolicy.NotificationPolicy" }, "grafana:index/oncallEscalation:OncallEscalation": { - "description": "* [Official documentation](https://grafana.com/docs/oncall/latest/configure/escalation-chains-and-routes/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_policies/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\nconst alex = grafana.onCall.getUser({\n username: \"alex\",\n});\n// Notify step\nconst exampleNotifyStepEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n// Wait step\nconst exampleNotifyStepOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"wait\",\n duration: 300,\n position: 1,\n});\n// Important step\nconst exampleNotifyStepGrafanaOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n important: true,\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts=pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\nalex = grafana.onCall.get_user(username=\"alex\")\n# Notify step\nexample_notify_step_escalation = grafana.on_call.Escalation(\"exampleNotifyStepEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n persons_to_notifies=[alex.id],\n position=0)\n# Wait step\nexample_notify_step_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"wait\",\n duration=300,\n position=1)\n# Important step\nexample_notify_step_grafana_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n important=True,\n persons_to_notifies=[alex.id],\n position=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n var alex = Grafana.OnCall.GetUser.Invoke(new()\n {\n Username = \"alex\",\n });\n\n // Notify step\n var exampleNotifyStepEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"wait\",\n Duration = 300,\n Position = 1,\n });\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n Important = true,\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\talex, err := onCall.GetUser(ctx, \u0026oncall.GetUserArgs{\n\t\t\tUsername: \"alex\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Notify step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"wait\"),\n\t\t\tDuration: pulumi.Int(300),\n\t\t\tPosition: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Important step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepGrafanaOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tImportant: pulumi.Bool(true),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\nimport com.pulumi.grafana.onCall.OnCallFunctions;\nimport com.pulumi.grafana.onCall.inputs.GetUserArgs;\nimport com.pulumi.grafana.onCall.Escalation;\nimport com.pulumi.grafana.onCall.EscalationArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n final var alex = OnCallFunctions.getUser(GetUserArgs.builder()\n .username(\"alex\")\n .build());\n\n // Notify step\n var exampleNotifyStepEscalation = new Escalation(\"exampleNotifyStepEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"wait\")\n .duration(300)\n .position(1)\n .build());\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .important(true)\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n # Notify step\n exampleNotifyStepEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n personsToNotifies:\n - ${alex.id}\n position: 0\n # Wait step\n exampleNotifyStepOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: wait\n duration: 300\n position: 1\n # Important step\n exampleNotifyStepGrafanaOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n important: true\n personsToNotifies:\n - ${alex.id}\n position: 0\nvariables:\n alex:\n fn::invoke:\n Function: grafana:onCall:getUser\n Arguments:\n username: alex\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/oncallEscalation:OncallEscalation name \"{{ id }}\"\n```\n\n", + "description": "* [Official documentation](https://grafana.com/docs/oncall/latest/configure/escalation-chains-and-routes/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_policies/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\nconst alex = grafana.onCall.getUser({\n username: \"alex\",\n});\n// Notify step\nconst exampleNotifyStepEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n// Wait step\nconst exampleNotifyStepOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"wait\",\n duration: 300,\n position: 1,\n});\n// Important step\nconst exampleNotifyStepGrafanaOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n important: true,\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts = pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\nalex = grafana.onCall.get_user(username=\"alex\")\n# Notify step\nexample_notify_step_escalation = grafana.on_call.Escalation(\"exampleNotifyStepEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n persons_to_notifies=[alex.id],\n position=0)\n# Wait step\nexample_notify_step_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"wait\",\n duration=300,\n position=1)\n# Important step\nexample_notify_step_grafana_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n important=True,\n persons_to_notifies=[alex.id],\n position=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n var alex = Grafana.OnCall.GetUser.Invoke(new()\n {\n Username = \"alex\",\n });\n\n // Notify step\n var exampleNotifyStepEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"wait\",\n Duration = 300,\n Position = 1,\n });\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n Important = true,\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\talex, err := onCall.GetUser(ctx, \u0026oncall.GetUserArgs{\n\t\t\tUsername: \"alex\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Notify step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"wait\"),\n\t\t\tDuration: pulumi.Int(300),\n\t\t\tPosition: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Important step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepGrafanaOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tImportant: pulumi.Bool(true),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\nimport com.pulumi.grafana.onCall.OnCallFunctions;\nimport com.pulumi.grafana.onCall.inputs.GetUserArgs;\nimport com.pulumi.grafana.onCall.Escalation;\nimport com.pulumi.grafana.onCall.EscalationArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n final var alex = OnCallFunctions.getUser(GetUserArgs.builder()\n .username(\"alex\")\n .build());\n\n // Notify step\n var exampleNotifyStepEscalation = new Escalation(\"exampleNotifyStepEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"wait\")\n .duration(300)\n .position(1)\n .build());\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .important(true)\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n # Notify step\n exampleNotifyStepEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n personsToNotifies:\n - ${alex.id}\n position: 0\n # Wait step\n exampleNotifyStepOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: wait\n duration: 300\n position: 1\n # Important step\n exampleNotifyStepGrafanaOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n important: true\n personsToNotifies:\n - ${alex.id}\n position: 0\nvariables:\n alex:\n fn::invoke:\n Function: grafana:onCall:getUser\n Arguments:\n username: alex\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/oncallEscalation:OncallEscalation name \"{{ id }}\"\n```\n\n", "properties": { "actionToTrigger": { "type": "string", @@ -15335,7 +15335,7 @@ "deprecationMessage": "grafana.index/oncallescalation.OncallEscalation has been deprecated in favor of grafana.oncall/escalation.Escalation" }, "grafana:index/oncallEscalationChain:OncallEscalationChain": { - "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts=pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/oncallEscalationChain:OncallEscalationChain name \"{{ id }}\"\n```\n\n", + "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts = pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/oncallEscalationChain:OncallEscalationChain name \"{{ id }}\"\n```\n\n", "properties": { "name": { "type": "string", @@ -15756,7 +15756,7 @@ "deprecationMessage": "grafana.index/oncalloncallshift.OncallOnCallShift has been deprecated in favor of grafana.oncall/oncallshift.OnCallShift" }, "grafana:index/oncallOutgoingWebhook:OncallOutgoingWebhook": { - "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test_acc_outgoingWebhook = new grafana.oncall.OutgoingWebhook(\"test-acc-outgoingWebhook\", {url: \"https://example.com/\"}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ntest_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook(\"test-acc-outgoingWebhook\", url=\"https://example.com/\",\nopts=pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test_acc_outgoingWebhook = new Grafana.OnCall.OutgoingWebhook(\"test-acc-outgoingWebhook\", new()\n {\n Url = \"https://example.com/\",\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewOutgoingWebhook(ctx, \"test-acc-outgoingWebhook\", \u0026onCall.OutgoingWebhookArgs{\n\t\t\tUrl: pulumi.String(\"https://example.com/\"),\n\t\t}, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.OutgoingWebhook;\nimport com.pulumi.grafana.onCall.OutgoingWebhookArgs;\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 test_acc_outgoingWebhook = new OutgoingWebhook(\"test-acc-outgoingWebhook\", OutgoingWebhookArgs.builder()\n .url(\"https://example.com/\")\n .build(), CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test-acc-outgoingWebhook:\n type: grafana:onCall:OutgoingWebhook\n properties:\n url: https://example.com/\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/oncallOutgoingWebhook:OncallOutgoingWebhook name \"{{ id }}\"\n```\n\n", + "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test_acc_outgoingWebhook = new grafana.oncall.OutgoingWebhook(\"test-acc-outgoingWebhook\", {url: \"https://example.com/\"}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ntest_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook(\"test-acc-outgoingWebhook\", url=\"https://example.com/\",\nopts = pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test_acc_outgoingWebhook = new Grafana.OnCall.OutgoingWebhook(\"test-acc-outgoingWebhook\", new()\n {\n Url = \"https://example.com/\",\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewOutgoingWebhook(ctx, \"test-acc-outgoingWebhook\", \u0026onCall.OutgoingWebhookArgs{\n\t\t\tUrl: pulumi.String(\"https://example.com/\"),\n\t\t}, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.OutgoingWebhook;\nimport com.pulumi.grafana.onCall.OutgoingWebhookArgs;\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 test_acc_outgoingWebhook = new OutgoingWebhook(\"test-acc-outgoingWebhook\", OutgoingWebhookArgs.builder()\n .url(\"https://example.com/\")\n .build(), CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test-acc-outgoingWebhook:\n type: grafana:onCall:OutgoingWebhook\n properties:\n url: https://example.com/\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/oncallOutgoingWebhook:OncallOutgoingWebhook name \"{{ id }}\"\n```\n\n", "properties": { "authorizationHeader": { "type": "string", @@ -17638,7 +17638,7 @@ "deprecationMessage": "grafana.index/serviceaccountpermissionitem.ServiceAccountPermissionItem has been deprecated in favor of grafana.oss/serviceaccountpermissionitem.ServiceAccountPermissionItem" }, "grafana:index/serviceAccountToken:ServiceAccountToken": { - "description": "**Note:** This resource is available only with Grafana 9.1+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst admin = new grafana.oss.ServiceAccount(\"admin\", {\n isDisabled: false,\n role: \"Admin\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\nadmin = grafana.oss.ServiceAccount(\"admin\",\n is_disabled=False,\n role=\"Admin\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = new Grafana.Oss.ServiceAccount(\"admin\", new()\n {\n IsDisabled = false,\n Role = \"Admin\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/oss\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oss.NewServiceAccount(ctx, \"admin\", \u0026oss.ServiceAccountArgs{\n\t\t\tIsDisabled: pulumi.Bool(false),\n\t\t\tRole: pulumi.String(\"Admin\"),\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.grafana.oss.ServiceAccount;\nimport com.pulumi.grafana.oss.ServiceAccountArgs;\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 admin = new ServiceAccount(\"admin\", ServiceAccountArgs.builder()\n .isDisabled(false)\n .role(\"Admin\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin:\n type: grafana:oss:ServiceAccount\n properties:\n isDisabled: false\n role: Admin\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name \"{{ id }}\"\n```\n\n```sh\n$ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name \"{{ orgID }}:{{ id }}\"\n```\n\n", + "description": "**Note:** This resource is available only with Grafana 9.1+.\n\n* [Official documentation](https://grafana.com/docs/grafana/latest/administration/service-accounts/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/serviceaccount/#service-account-api)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test = new grafana.oss.ServiceAccount(\"test\", {role: \"Viewer\"});\nconst foo = new grafana.oss.ServiceAccountToken(\"foo\", {serviceAccountId: test.id});\nconst bar = new grafana.oss.ServiceAccountToken(\"bar\", {\n serviceAccountId: test.id,\n secondsToLive: 30,\n});\nexport const serviceAccountTokenFooKeyOnly = foo.key;\nexport const serviceAccountTokenBar = bar;\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ntest = grafana.oss.ServiceAccount(\"test\", role=\"Viewer\")\nfoo = grafana.oss.ServiceAccountToken(\"foo\", service_account_id=test.id)\nbar = grafana.oss.ServiceAccountToken(\"bar\",\n service_account_id=test.id,\n seconds_to_live=30)\npulumi.export(\"serviceAccountTokenFooKeyOnly\", foo.key)\npulumi.export(\"serviceAccountTokenBar\", bar)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Grafana.Oss.ServiceAccount(\"test\", new()\n {\n Role = \"Viewer\",\n });\n\n var foo = new Grafana.Oss.ServiceAccountToken(\"foo\", new()\n {\n ServiceAccountId = test.Id,\n });\n\n var bar = new Grafana.Oss.ServiceAccountToken(\"bar\", new()\n {\n ServiceAccountId = test.Id,\n SecondsToLive = 30,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serviceAccountTokenFooKeyOnly\"] = foo.Key,\n [\"serviceAccountTokenBar\"] = bar,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/oss\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := oss.NewServiceAccount(ctx, \"test\", \u0026oss.ServiceAccountArgs{\n\t\t\tRole: pulumi.String(\"Viewer\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := oss.NewServiceAccountToken(ctx, \"foo\", \u0026oss.ServiceAccountTokenArgs{\n\t\t\tServiceAccountId: test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbar, err := oss.NewServiceAccountToken(ctx, \"bar\", \u0026oss.ServiceAccountTokenArgs{\n\t\t\tServiceAccountId: test.ID(),\n\t\t\tSecondsToLive: pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"serviceAccountTokenFooKeyOnly\", foo.Key)\n\t\tctx.Export(\"serviceAccountTokenBar\", bar)\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.grafana.oss.ServiceAccount;\nimport com.pulumi.grafana.oss.ServiceAccountArgs;\nimport com.pulumi.grafana.oss.ServiceAccountToken;\nimport com.pulumi.grafana.oss.ServiceAccountTokenArgs;\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 test = new ServiceAccount(\"test\", ServiceAccountArgs.builder()\n .role(\"Viewer\")\n .build());\n\n var foo = new ServiceAccountToken(\"foo\", ServiceAccountTokenArgs.builder()\n .serviceAccountId(test.id())\n .build());\n\n var bar = new ServiceAccountToken(\"bar\", ServiceAccountTokenArgs.builder()\n .serviceAccountId(test.id())\n .secondsToLive(30)\n .build());\n\n ctx.export(\"serviceAccountTokenFooKeyOnly\", foo.key());\n ctx.export(\"serviceAccountTokenBar\", bar);\n }\n}\n```\n```yaml\nresources:\n test:\n type: grafana:oss:ServiceAccount\n properties:\n role: Viewer\n foo:\n type: grafana:oss:ServiceAccountToken\n properties:\n serviceAccountId: ${test.id}\n bar:\n type: grafana:oss:ServiceAccountToken\n properties:\n serviceAccountId: ${test.id}\n secondsToLive: 30\noutputs:\n serviceAccountTokenFooKeyOnly: ${foo.key}\n serviceAccountTokenBar: ${bar}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "expiration": { "type": "string", @@ -17655,11 +17655,11 @@ }, "name": { "type": "string", - "description": "The name of the service account.\n" + "description": "The name of the service account token.\n" }, "secondsToLive": { "type": "integer", - "description": "The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it\nis null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will\nnever expire.\n" + "description": "The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire.\n" }, "serviceAccountId": { "type": "string", @@ -17676,12 +17676,12 @@ "inputProperties": { "name": { "type": "string", - "description": "The name of the service account.\n", + "description": "The name of the service account token.\n", "willReplaceOnChanges": true }, "secondsToLive": { "type": "integer", - "description": "The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it\nis null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will\nnever expire.\n", + "description": "The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire.\n", "willReplaceOnChanges": true }, "serviceAccountId": { @@ -17711,12 +17711,12 @@ }, "name": { "type": "string", - "description": "The name of the service account.\n", + "description": "The name of the service account token.\n", "willReplaceOnChanges": true }, "secondsToLive": { "type": "integer", - "description": "The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it\nis null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will\nnever expire.\n", + "description": "The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire.\n", "willReplaceOnChanges": true }, "serviceAccountId": { @@ -17974,7 +17974,7 @@ "deprecationMessage": "grafana.index/syntheticmonitoringcheck.SyntheticMonitoringCheck has been deprecated in favor of grafana.syntheticmonitoring/check.Check" }, "grafana:index/syntheticMonitoringInstallation:SyntheticMonitoringInstallation": { - "description": "Sets up Synthetic Monitoring on a Grafana cloud stack and generates a token. \nOnce a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.\nThis resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.\n\n**Note that this resource must be used on a provider configured with Grafana Cloud credentials.**\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/)\n* [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)\n\nRequired access policy scopes:\n\n* stacks:read\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst config = new pulumi.Config();\nconst cloudAccessPolicyToken = config.requireObject(\"cloudAccessPolicyToken\");\nconst stackSlug = config.requireObject(\"stackSlug\");\nconst cloudRegion = config.get(\"cloudRegion\") || \"us\";\n// Step 1: Create a stack\nconst cloud = new grafana.Provider(\"cloud\", {cloudAccessPolicyToken: cloudAccessPolicyToken});\nconst smStackStack = new grafana.cloud.Stack(\"smStackStack\", {\n slug: stackSlug,\n regionSlug: cloudRegion,\n}, {\n provider: grafana.cloud,\n});\n// Step 2: Install Synthetic Monitoring on the stack\nconst smMetricsPublishAccessPolicy = new grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", {\n region: cloudRegion,\n scopes: [\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms: [{\n type: \"stack\",\n identifier: smStackStack.id,\n }],\n}, {\n provider: grafana.cloud,\n});\nconst smMetricsPublishAccessPolicyToken = new grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", {\n region: cloudRegion,\n accessPolicyId: smMetricsPublishAccessPolicy.policyId,\n}, {\n provider: grafana.cloud,\n});\nconst smStackInstallation = new grafana.syntheticmonitoring.Installation(\"smStackInstallation\", {\n stackId: smStackStack.id,\n metricsPublisherKey: smMetricsPublishAccessPolicyToken.token,\n}, {\n provider: grafana.cloud,\n});\n// Step 3: Interact with Synthetic Monitoring\nconst sm = new grafana.Provider(\"sm\", {\n smAccessToken: smStackInstallation.smAccessToken,\n smUrl: smStackInstallation.stackSmApiUrl,\n});\nconst main = grafana.syntheticMonitoring.getProbes({});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\nconfig = pulumi.Config()\ncloud_access_policy_token = config.require_object(\"cloudAccessPolicyToken\")\nstack_slug = config.require_object(\"stackSlug\")\ncloud_region = config.get(\"cloudRegion\")\nif cloud_region is None:\n cloud_region = \"us\"\n# Step 1: Create a stack\ncloud = grafana.Provider(\"cloud\", cloud_access_policy_token=cloud_access_policy_token)\nsm_stack_stack = grafana.cloud.Stack(\"smStackStack\",\n slug=stack_slug,\n region_slug=cloud_region,\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 2: Install Synthetic Monitoring on the stack\nsm_metrics_publish_access_policy = grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\",\n region=cloud_region,\n scopes=[\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms=[grafana.cloud.AccessPolicyRealmArgs(\n type=\"stack\",\n identifier=sm_stack_stack.id,\n )],\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\",\n region=cloud_region,\n access_policy_id=sm_metrics_publish_access_policy.policy_id,\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_stack_installation = grafana.synthetic_monitoring.Installation(\"smStackInstallation\",\n stack_id=sm_stack_stack.id,\n metrics_publisher_key=sm_metrics_publish_access_policy_token.token,\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 3: Interact with Synthetic Monitoring\nsm = grafana.Provider(\"sm\",\n sm_access_token=sm_stack_installation.sm_access_token,\n sm_url=sm_stack_installation.stack_sm_api_url)\nmain = grafana.syntheticMonitoring.get_probes()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var cloudAccessPolicyToken = config.RequireObject\u003cdynamic\u003e(\"cloudAccessPolicyToken\");\n var stackSlug = config.RequireObject\u003cdynamic\u003e(\"stackSlug\");\n var cloudRegion = config.Get(\"cloudRegion\") ?? \"us\";\n // Step 1: Create a stack\n var cloud = new Grafana.Provider(\"cloud\", new()\n {\n CloudAccessPolicyToken = cloudAccessPolicyToken,\n });\n\n var smStackStack = new Grafana.Cloud.Stack(\"smStackStack\", new()\n {\n Slug = stackSlug,\n RegionSlug = cloudRegion,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new Grafana.Cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", new()\n {\n Region = cloudRegion,\n Scopes = new[]\n {\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n },\n Realms = new[]\n {\n new Grafana.Cloud.Inputs.AccessPolicyRealmArgs\n {\n Type = \"stack\",\n Identifier = smStackStack.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smMetricsPublishAccessPolicyToken = new Grafana.Cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", new()\n {\n Region = cloudRegion,\n AccessPolicyId = smMetricsPublishAccessPolicy.PolicyId,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smStackInstallation = new Grafana.SyntheticMonitoring.Installation(\"smStackInstallation\", new()\n {\n StackId = smStackStack.Id,\n MetricsPublisherKey = smMetricsPublishAccessPolicyToken.Token,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Grafana.Provider(\"sm\", new()\n {\n SmAccessToken = smStackInstallation.SmAccessToken,\n SmUrl = smStackInstallation.StackSmApiUrl,\n });\n\n var main = Grafana.SyntheticMonitoring.GetProbes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/cloud\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/syntheticMonitoring\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tcloudAccessPolicyToken := cfg.RequireObject(\"cloudAccessPolicyToken\")\n\t\tstackSlug := cfg.RequireObject(\"stackSlug\")\n\t\tcloudRegion := \"us\"\n\t\tif param := cfg.Get(\"cloudRegion\"); param != \"\" {\n\t\t\tcloudRegion = param\n\t\t}\n\t\t// Step 1: Create a stack\n\t\t_, err := grafana.NewProvider(ctx, \"cloud\", \u0026grafana.ProviderArgs{\n\t\t\tCloudAccessPolicyToken: pulumi.Any(cloudAccessPolicyToken),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackStack, err := cloud.NewStack(ctx, \"smStackStack\", \u0026cloud.StackArgs{\n\t\t\tSlug: pulumi.Any(stackSlug),\n\t\t\tRegionSlug: pulumi.String(cloudRegion),\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 2: Install Synthetic Monitoring on the stack\n\t\tsmMetricsPublishAccessPolicy, err := cloud.NewAccessPolicy(ctx, \"smMetricsPublishAccessPolicy\", \u0026cloud.AccessPolicyArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"metrics:write\"),\n\t\t\t\tpulumi.String(\"stacks:read\"),\n\t\t\t\tpulumi.String(\"logs:write\"),\n\t\t\t\tpulumi.String(\"traces:write\"),\n\t\t\t},\n\t\t\tRealms: cloud.AccessPolicyRealmArray{\n\t\t\t\t\u0026cloud.AccessPolicyRealmArgs{\n\t\t\t\t\tType: pulumi.String(\"stack\"),\n\t\t\t\t\tIdentifier: smStackStack.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmMetricsPublishAccessPolicyToken, err := cloud.NewAccessPolicyToken(ctx, \"smMetricsPublishAccessPolicyToken\", \u0026cloud.AccessPolicyTokenArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tAccessPolicyId: smMetricsPublishAccessPolicy.PolicyId,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackInstallation, err := syntheticMonitoring.NewInstallation(ctx, \"smStackInstallation\", \u0026syntheticMonitoring.InstallationArgs{\n\t\t\tStackId: smStackStack.ID(),\n\t\t\tMetricsPublisherKey: smMetricsPublishAccessPolicyToken.Token,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 3: Interact with Synthetic Monitoring\n\t\t_, err = grafana.NewProvider(ctx, \"sm\", \u0026grafana.ProviderArgs{\n\t\t\tSmAccessToken: smStackInstallation.SmAccessToken,\n\t\t\tSmUrl: smStackInstallation.StackSmApiUrl,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = syntheticMonitoring.GetProbes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.Provider;\nimport com.pulumi.grafana.ProviderArgs;\nimport com.pulumi.grafana.cloud.Stack;\nimport com.pulumi.grafana.cloud.StackArgs;\nimport com.pulumi.grafana.cloud.AccessPolicy;\nimport com.pulumi.grafana.cloud.AccessPolicyArgs;\nimport com.pulumi.grafana.cloud.inputs.AccessPolicyRealmArgs;\nimport com.pulumi.grafana.cloud.AccessPolicyToken;\nimport com.pulumi.grafana.cloud.AccessPolicyTokenArgs;\nimport com.pulumi.grafana.syntheticMonitoring.Installation;\nimport com.pulumi.grafana.syntheticMonitoring.InstallationArgs;\nimport com.pulumi.grafana.syntheticMonitoring.SyntheticMonitoringFunctions;\nimport com.pulumi.grafana.syntheticMonitoring.inputs.GetProbesArgs;\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 config = ctx.config();\n final var cloudAccessPolicyToken = config.get(\"cloudAccessPolicyToken\");\n final var stackSlug = config.get(\"stackSlug\");\n final var cloudRegion = config.get(\"cloudRegion\").orElse(\"us\");\n // Step 1: Create a stack\n var cloud = new Provider(\"cloud\", ProviderArgs.builder()\n .cloudAccessPolicyToken(cloudAccessPolicyToken)\n .build());\n\n var smStackStack = new Stack(\"smStackStack\", StackArgs.builder()\n .slug(stackSlug)\n .regionSlug(cloudRegion)\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new AccessPolicy(\"smMetricsPublishAccessPolicy\", AccessPolicyArgs.builder()\n .region(cloudRegion)\n .scopes( \n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\")\n .realms(AccessPolicyRealmArgs.builder()\n .type(\"stack\")\n .identifier(smStackStack.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smMetricsPublishAccessPolicyToken = new AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", AccessPolicyTokenArgs.builder()\n .region(cloudRegion)\n .accessPolicyId(smMetricsPublishAccessPolicy.policyId())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smStackInstallation = new Installation(\"smStackInstallation\", InstallationArgs.builder()\n .stackId(smStackStack.id())\n .metricsPublisherKey(smMetricsPublishAccessPolicyToken.token())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Provider(\"sm\", ProviderArgs.builder()\n .smAccessToken(smStackInstallation.smAccessToken())\n .smUrl(smStackInstallation.stackSmApiUrl())\n .build());\n\n final var main = SyntheticMonitoringFunctions.getProbes();\n\n }\n}\n```\n```yaml\nconfiguration:\n cloudAccessPolicyToken:\n type: dynamic\n stackSlug:\n type: dynamic\n cloudRegion:\n type: string\n default: us\nresources:\n # Step 1: Create a stack\n cloud:\n type: pulumi:providers:grafana\n properties:\n cloudAccessPolicyToken: ${cloudAccessPolicyToken}\n smStackStack:\n type: grafana:cloud:Stack\n properties:\n slug: ${stackSlug}\n regionSlug: ${cloudRegion}\n options:\n provider: ${grafana.cloud}\n # Step 2: Install Synthetic Monitoring on the stack\n smMetricsPublishAccessPolicy:\n type: grafana:cloud:AccessPolicy\n properties:\n region: ${cloudRegion}\n scopes:\n - metrics:write\n - stacks:read\n - logs:write\n - traces:write\n realms:\n - type: stack\n identifier: ${smStackStack.id}\n options:\n provider: ${grafana.cloud}\n smMetricsPublishAccessPolicyToken:\n type: grafana:cloud:AccessPolicyToken\n properties:\n region: ${cloudRegion}\n accessPolicyId: ${smMetricsPublishAccessPolicy.policyId}\n options:\n provider: ${grafana.cloud}\n smStackInstallation:\n type: grafana:syntheticMonitoring:Installation\n properties:\n stackId: ${smStackStack.id}\n metricsPublisherKey: ${smMetricsPublishAccessPolicyToken.token}\n options:\n provider: ${grafana.cloud}\n # Step 3: Interact with Synthetic Monitoring\n sm:\n type: pulumi:providers:grafana\n properties:\n smAccessToken: ${smStackInstallation.smAccessToken}\n smUrl: ${smStackInstallation.stackSmApiUrl}\nvariables:\n main:\n fn::invoke:\n Function: grafana:syntheticMonitoring:getProbes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Sets up Synthetic Monitoring on a Grafana cloud stack and generates a token. \nOnce a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.\nThis resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.\n\n**Note that this resource must be used on a provider configured with Grafana Cloud credentials.**\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/)\n* [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)\n\nRequired access policy scopes:\n\n* stacks:read\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst config = new pulumi.Config();\nconst cloudAccessPolicyToken = config.requireObject(\"cloudAccessPolicyToken\");\nconst stackSlug = config.requireObject(\"stackSlug\");\nconst cloudRegion = config.get(\"cloudRegion\") || \"us\";\n// Step 1: Create a stack\nconst cloud = new grafana.Provider(\"cloud\", {cloudAccessPolicyToken: cloudAccessPolicyToken});\nconst smStackStack = new grafana.cloud.Stack(\"smStackStack\", {\n slug: stackSlug,\n regionSlug: cloudRegion,\n}, {\n provider: grafana.cloud,\n});\n// Step 2: Install Synthetic Monitoring on the stack\nconst smMetricsPublishAccessPolicy = new grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", {\n region: cloudRegion,\n scopes: [\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms: [{\n type: \"stack\",\n identifier: smStackStack.id,\n }],\n}, {\n provider: grafana.cloud,\n});\nconst smMetricsPublishAccessPolicyToken = new grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", {\n region: cloudRegion,\n accessPolicyId: smMetricsPublishAccessPolicy.policyId,\n}, {\n provider: grafana.cloud,\n});\nconst smStackInstallation = new grafana.syntheticmonitoring.Installation(\"smStackInstallation\", {\n stackId: smStackStack.id,\n metricsPublisherKey: smMetricsPublishAccessPolicyToken.token,\n}, {\n provider: grafana.cloud,\n});\n// Step 3: Interact with Synthetic Monitoring\nconst sm = new grafana.Provider(\"sm\", {\n smAccessToken: smStackInstallation.smAccessToken,\n smUrl: smStackInstallation.stackSmApiUrl,\n});\nconst main = grafana.syntheticMonitoring.getProbes({});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\nconfig = pulumi.Config()\ncloud_access_policy_token = config.require_object(\"cloudAccessPolicyToken\")\nstack_slug = config.require_object(\"stackSlug\")\ncloud_region = config.get(\"cloudRegion\")\nif cloud_region is None:\n cloud_region = \"us\"\n# Step 1: Create a stack\ncloud = grafana.Provider(\"cloud\", cloud_access_policy_token=cloud_access_policy_token)\nsm_stack_stack = grafana.cloud.Stack(\"smStackStack\",\n slug=stack_slug,\n region_slug=cloud_region,\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 2: Install Synthetic Monitoring on the stack\nsm_metrics_publish_access_policy = grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\",\n region=cloud_region,\n scopes=[\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms=[grafana.cloud.AccessPolicyRealmArgs(\n type=\"stack\",\n identifier=sm_stack_stack.id,\n )],\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\",\n region=cloud_region,\n access_policy_id=sm_metrics_publish_access_policy.policy_id,\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_stack_installation = grafana.synthetic_monitoring.Installation(\"smStackInstallation\",\n stack_id=sm_stack_stack.id,\n metrics_publisher_key=sm_metrics_publish_access_policy_token.token,\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 3: Interact with Synthetic Monitoring\nsm = grafana.Provider(\"sm\",\n sm_access_token=sm_stack_installation.sm_access_token,\n sm_url=sm_stack_installation.stack_sm_api_url)\nmain = grafana.syntheticMonitoring.get_probes()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var cloudAccessPolicyToken = config.RequireObject\u003cdynamic\u003e(\"cloudAccessPolicyToken\");\n var stackSlug = config.RequireObject\u003cdynamic\u003e(\"stackSlug\");\n var cloudRegion = config.Get(\"cloudRegion\") ?? \"us\";\n // Step 1: Create a stack\n var cloud = new Grafana.Provider(\"cloud\", new()\n {\n CloudAccessPolicyToken = cloudAccessPolicyToken,\n });\n\n var smStackStack = new Grafana.Cloud.Stack(\"smStackStack\", new()\n {\n Slug = stackSlug,\n RegionSlug = cloudRegion,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new Grafana.Cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", new()\n {\n Region = cloudRegion,\n Scopes = new[]\n {\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n },\n Realms = new[]\n {\n new Grafana.Cloud.Inputs.AccessPolicyRealmArgs\n {\n Type = \"stack\",\n Identifier = smStackStack.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smMetricsPublishAccessPolicyToken = new Grafana.Cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", new()\n {\n Region = cloudRegion,\n AccessPolicyId = smMetricsPublishAccessPolicy.PolicyId,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smStackInstallation = new Grafana.SyntheticMonitoring.Installation(\"smStackInstallation\", new()\n {\n StackId = smStackStack.Id,\n MetricsPublisherKey = smMetricsPublishAccessPolicyToken.Token,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Grafana.Provider(\"sm\", new()\n {\n SmAccessToken = smStackInstallation.SmAccessToken,\n SmUrl = smStackInstallation.StackSmApiUrl,\n });\n\n var main = Grafana.SyntheticMonitoring.GetProbes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/cloud\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/syntheticMonitoring\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tcloudAccessPolicyToken := cfg.RequireObject(\"cloudAccessPolicyToken\")\n\t\tstackSlug := cfg.RequireObject(\"stackSlug\")\n\t\tcloudRegion := \"us\"\n\t\tif param := cfg.Get(\"cloudRegion\"); param != \"\" {\n\t\t\tcloudRegion = param\n\t\t}\n\t\t// Step 1: Create a stack\n\t\t_, err := grafana.NewProvider(ctx, \"cloud\", \u0026grafana.ProviderArgs{\n\t\t\tCloudAccessPolicyToken: pulumi.Any(cloudAccessPolicyToken),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackStack, err := cloud.NewStack(ctx, \"smStackStack\", \u0026cloud.StackArgs{\n\t\t\tSlug: pulumi.Any(stackSlug),\n\t\t\tRegionSlug: pulumi.String(cloudRegion),\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 2: Install Synthetic Monitoring on the stack\n\t\tsmMetricsPublishAccessPolicy, err := cloud.NewAccessPolicy(ctx, \"smMetricsPublishAccessPolicy\", \u0026cloud.AccessPolicyArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"metrics:write\"),\n\t\t\t\tpulumi.String(\"stacks:read\"),\n\t\t\t\tpulumi.String(\"logs:write\"),\n\t\t\t\tpulumi.String(\"traces:write\"),\n\t\t\t},\n\t\t\tRealms: cloud.AccessPolicyRealmArray{\n\t\t\t\t\u0026cloud.AccessPolicyRealmArgs{\n\t\t\t\t\tType: pulumi.String(\"stack\"),\n\t\t\t\t\tIdentifier: smStackStack.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmMetricsPublishAccessPolicyToken, err := cloud.NewAccessPolicyToken(ctx, \"smMetricsPublishAccessPolicyToken\", \u0026cloud.AccessPolicyTokenArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tAccessPolicyId: smMetricsPublishAccessPolicy.PolicyId,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackInstallation, err := syntheticMonitoring.NewInstallation(ctx, \"smStackInstallation\", \u0026syntheticMonitoring.InstallationArgs{\n\t\t\tStackId: smStackStack.ID(),\n\t\t\tMetricsPublisherKey: smMetricsPublishAccessPolicyToken.Token,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 3: Interact with Synthetic Monitoring\n\t\t_, err = grafana.NewProvider(ctx, \"sm\", \u0026grafana.ProviderArgs{\n\t\t\tSmAccessToken: smStackInstallation.SmAccessToken,\n\t\t\tSmUrl: smStackInstallation.StackSmApiUrl,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = syntheticMonitoring.GetProbes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.Provider;\nimport com.pulumi.grafana.ProviderArgs;\nimport com.pulumi.grafana.cloud.Stack;\nimport com.pulumi.grafana.cloud.StackArgs;\nimport com.pulumi.grafana.cloud.AccessPolicy;\nimport com.pulumi.grafana.cloud.AccessPolicyArgs;\nimport com.pulumi.grafana.cloud.inputs.AccessPolicyRealmArgs;\nimport com.pulumi.grafana.cloud.AccessPolicyToken;\nimport com.pulumi.grafana.cloud.AccessPolicyTokenArgs;\nimport com.pulumi.grafana.syntheticMonitoring.Installation;\nimport com.pulumi.grafana.syntheticMonitoring.InstallationArgs;\nimport com.pulumi.grafana.syntheticMonitoring.SyntheticMonitoringFunctions;\nimport com.pulumi.grafana.syntheticMonitoring.inputs.GetProbesArgs;\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 config = ctx.config();\n final var cloudAccessPolicyToken = config.get(\"cloudAccessPolicyToken\");\n final var stackSlug = config.get(\"stackSlug\");\n final var cloudRegion = config.get(\"cloudRegion\").orElse(\"us\");\n // Step 1: Create a stack\n var cloud = new Provider(\"cloud\", ProviderArgs.builder()\n .cloudAccessPolicyToken(cloudAccessPolicyToken)\n .build());\n\n var smStackStack = new Stack(\"smStackStack\", StackArgs.builder()\n .slug(stackSlug)\n .regionSlug(cloudRegion)\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new AccessPolicy(\"smMetricsPublishAccessPolicy\", AccessPolicyArgs.builder()\n .region(cloudRegion)\n .scopes( \n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\")\n .realms(AccessPolicyRealmArgs.builder()\n .type(\"stack\")\n .identifier(smStackStack.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smMetricsPublishAccessPolicyToken = new AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", AccessPolicyTokenArgs.builder()\n .region(cloudRegion)\n .accessPolicyId(smMetricsPublishAccessPolicy.policyId())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smStackInstallation = new Installation(\"smStackInstallation\", InstallationArgs.builder()\n .stackId(smStackStack.id())\n .metricsPublisherKey(smMetricsPublishAccessPolicyToken.token())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Provider(\"sm\", ProviderArgs.builder()\n .smAccessToken(smStackInstallation.smAccessToken())\n .smUrl(smStackInstallation.stackSmApiUrl())\n .build());\n\n final var main = SyntheticMonitoringFunctions.getProbes();\n\n }\n}\n```\n```yaml\nconfiguration:\n cloudAccessPolicyToken:\n type: dynamic\n stackSlug:\n type: dynamic\n cloudRegion:\n type: string\n default: us\nresources:\n # Step 1: Create a stack\n cloud:\n type: pulumi:providers:grafana\n properties:\n cloudAccessPolicyToken: ${cloudAccessPolicyToken}\n smStackStack:\n type: grafana:cloud:Stack\n properties:\n slug: ${stackSlug}\n regionSlug: ${cloudRegion}\n options:\n provider: ${grafana.cloud}\n # Step 2: Install Synthetic Monitoring on the stack\n smMetricsPublishAccessPolicy:\n type: grafana:cloud:AccessPolicy\n properties:\n region: ${cloudRegion}\n scopes:\n - metrics:write\n - stacks:read\n - logs:write\n - traces:write\n realms:\n - type: stack\n identifier: ${smStackStack.id}\n options:\n provider: ${grafana.cloud}\n smMetricsPublishAccessPolicyToken:\n type: grafana:cloud:AccessPolicyToken\n properties:\n region: ${cloudRegion}\n accessPolicyId: ${smMetricsPublishAccessPolicy.policyId}\n options:\n provider: ${grafana.cloud}\n smStackInstallation:\n type: grafana:syntheticMonitoring:Installation\n properties:\n stackId: ${smStackStack.id}\n metricsPublisherKey: ${smMetricsPublishAccessPolicyToken.token}\n options:\n provider: ${grafana.cloud}\n # Step 3: Interact with Synthetic Monitoring\n sm:\n type: pulumi:providers:grafana\n properties:\n smAccessToken: ${smStackInstallation.smAccessToken}\n smUrl: ${smStackInstallation.stackSmApiUrl}\nvariables:\n main:\n fn::invoke:\n Function: grafana:syntheticMonitoring:getProbes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "metricsPublisherKey": { "type": "string", @@ -18908,7 +18908,7 @@ ] }, "grafana:onCall/escalation:Escalation": { - "description": "* [Official documentation](https://grafana.com/docs/oncall/latest/configure/escalation-chains-and-routes/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_policies/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\nconst alex = grafana.onCall.getUser({\n username: \"alex\",\n});\n// Notify step\nconst exampleNotifyStepEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n// Wait step\nconst exampleNotifyStepOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"wait\",\n duration: 300,\n position: 1,\n});\n// Important step\nconst exampleNotifyStepGrafanaOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n important: true,\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts=pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\nalex = grafana.onCall.get_user(username=\"alex\")\n# Notify step\nexample_notify_step_escalation = grafana.on_call.Escalation(\"exampleNotifyStepEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n persons_to_notifies=[alex.id],\n position=0)\n# Wait step\nexample_notify_step_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"wait\",\n duration=300,\n position=1)\n# Important step\nexample_notify_step_grafana_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n important=True,\n persons_to_notifies=[alex.id],\n position=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n var alex = Grafana.OnCall.GetUser.Invoke(new()\n {\n Username = \"alex\",\n });\n\n // Notify step\n var exampleNotifyStepEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"wait\",\n Duration = 300,\n Position = 1,\n });\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n Important = true,\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\talex, err := onCall.GetUser(ctx, \u0026oncall.GetUserArgs{\n\t\t\tUsername: \"alex\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Notify step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"wait\"),\n\t\t\tDuration: pulumi.Int(300),\n\t\t\tPosition: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Important step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepGrafanaOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tImportant: pulumi.Bool(true),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\nimport com.pulumi.grafana.onCall.OnCallFunctions;\nimport com.pulumi.grafana.onCall.inputs.GetUserArgs;\nimport com.pulumi.grafana.onCall.Escalation;\nimport com.pulumi.grafana.onCall.EscalationArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n final var alex = OnCallFunctions.getUser(GetUserArgs.builder()\n .username(\"alex\")\n .build());\n\n // Notify step\n var exampleNotifyStepEscalation = new Escalation(\"exampleNotifyStepEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"wait\")\n .duration(300)\n .position(1)\n .build());\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .important(true)\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n # Notify step\n exampleNotifyStepEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n personsToNotifies:\n - ${alex.id}\n position: 0\n # Wait step\n exampleNotifyStepOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: wait\n duration: 300\n position: 1\n # Important step\n exampleNotifyStepGrafanaOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n important: true\n personsToNotifies:\n - ${alex.id}\n position: 0\nvariables:\n alex:\n fn::invoke:\n Function: grafana:onCall:getUser\n Arguments:\n username: alex\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:onCall/escalation:Escalation name \"{{ id }}\"\n```\n\n", + "description": "* [Official documentation](https://grafana.com/docs/oncall/latest/configure/escalation-chains-and-routes/)\n* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_policies/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\nconst alex = grafana.onCall.getUser({\n username: \"alex\",\n});\n// Notify step\nconst exampleNotifyStepEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n// Wait step\nconst exampleNotifyStepOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"wait\",\n duration: 300,\n position: 1,\n});\n// Important step\nconst exampleNotifyStepGrafanaOnCall_escalationEscalation = new grafana.oncall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", {\n escalationChainId: _default.id,\n type: \"notify_persons\",\n important: true,\n personsToNotifies: [alex.then(alex =\u003e alex.id)],\n position: 0,\n});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts = pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\nalex = grafana.onCall.get_user(username=\"alex\")\n# Notify step\nexample_notify_step_escalation = grafana.on_call.Escalation(\"exampleNotifyStepEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n persons_to_notifies=[alex.id],\n position=0)\n# Wait step\nexample_notify_step_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"wait\",\n duration=300,\n position=1)\n# Important step\nexample_notify_step_grafana_on_call_escalation_escalation = grafana.on_call.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\",\n escalation_chain_id=default.id,\n type=\"notify_persons\",\n important=True,\n persons_to_notifies=[alex.id],\n position=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n var alex = Grafana.OnCall.GetUser.Invoke(new()\n {\n Username = \"alex\",\n });\n\n // Notify step\n var exampleNotifyStepEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"wait\",\n Duration = 300,\n Position = 1,\n });\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Grafana.OnCall.Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", new()\n {\n EscalationChainId = @default.Id,\n Type = \"notify_persons\",\n Important = true,\n PersonsToNotifies = new[]\n {\n alex.Apply(getUserResult =\u003e getUserResult.Id),\n },\n Position = 0,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\talex, err := onCall.GetUser(ctx, \u0026oncall.GetUserArgs{\n\t\t\tUsername: \"alex\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Notify step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"wait\"),\n\t\t\tDuration: pulumi.Int(300),\n\t\t\tPosition: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Important step\n\t\t_, err = onCall.NewEscalation(ctx, \"exampleNotifyStepGrafanaOnCall/escalationEscalation\", \u0026onCall.EscalationArgs{\n\t\t\tEscalationChainId: _default.ID(),\n\t\t\tType: pulumi.String(\"notify_persons\"),\n\t\t\tImportant: pulumi.Bool(true),\n\t\t\tPersonsToNotifies: pulumi.StringArray{\n\t\t\t\tpulumi.String(alex.Id),\n\t\t\t},\n\t\t\tPosition: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\nimport com.pulumi.grafana.onCall.OnCallFunctions;\nimport com.pulumi.grafana.onCall.inputs.GetUserArgs;\nimport com.pulumi.grafana.onCall.Escalation;\nimport com.pulumi.grafana.onCall.EscalationArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n final var alex = OnCallFunctions.getUser(GetUserArgs.builder()\n .username(\"alex\")\n .build());\n\n // Notify step\n var exampleNotifyStepEscalation = new Escalation(\"exampleNotifyStepEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n // Wait step\n var exampleNotifyStepOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"wait\")\n .duration(300)\n .position(1)\n .build());\n\n // Important step\n var exampleNotifyStepGrafanaOnCall_escalationEscalation = new Escalation(\"exampleNotifyStepGrafanaOnCall/escalationEscalation\", EscalationArgs.builder()\n .escalationChainId(default_.id())\n .type(\"notify_persons\")\n .important(true)\n .personsToNotifies(alex.applyValue(getUserResult -\u003e getUserResult.id()))\n .position(0)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n # Notify step\n exampleNotifyStepEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n personsToNotifies:\n - ${alex.id}\n position: 0\n # Wait step\n exampleNotifyStepOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: wait\n duration: 300\n position: 1\n # Important step\n exampleNotifyStepGrafanaOnCall/escalationEscalation:\n type: grafana:onCall:Escalation\n properties:\n escalationChainId: ${default.id}\n type: notify_persons\n important: true\n personsToNotifies:\n - ${alex.id}\n position: 0\nvariables:\n alex:\n fn::invoke:\n Function: grafana:onCall:getUser\n Arguments:\n username: alex\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:onCall/escalation:Escalation name \"{{ id }}\"\n```\n\n", "properties": { "actionToTrigger": { "type": "string", @@ -19112,7 +19112,7 @@ ] }, "grafana:onCall/escalationChain:EscalationChain": { - "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts=pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:onCall/escalationChain:EscalationChain name \"{{ id }}\"\n```\n\n", + "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/escalation_chains/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst _default = new grafana.oncall.EscalationChain(\"default\", {}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ndefault = grafana.on_call.EscalationChain(\"default\", opts = pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Grafana.OnCall.EscalationChain(\"default\", new()\n {\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewEscalationChain(ctx, \"default\", nil, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.EscalationChain;\nimport com.pulumi.grafana.onCall.EscalationChainArgs;\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 default_ = new EscalationChain(\"default\", EscalationChainArgs.Empty, CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: grafana:onCall:EscalationChain\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:onCall/escalationChain:EscalationChain name \"{{ id }}\"\n```\n\n", "properties": { "name": { "type": "string", @@ -19530,7 +19530,7 @@ ] }, "grafana:onCall/outgoingWebhook:OutgoingWebhook": { - "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test_acc_outgoingWebhook = new grafana.oncall.OutgoingWebhook(\"test-acc-outgoingWebhook\", {url: \"https://example.com/\"}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ntest_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook(\"test-acc-outgoingWebhook\", url=\"https://example.com/\",\nopts=pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test_acc_outgoingWebhook = new Grafana.OnCall.OutgoingWebhook(\"test-acc-outgoingWebhook\", new()\n {\n Url = \"https://example.com/\",\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewOutgoingWebhook(ctx, \"test-acc-outgoingWebhook\", \u0026onCall.OutgoingWebhookArgs{\n\t\t\tUrl: pulumi.String(\"https://example.com/\"),\n\t\t}, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.OutgoingWebhook;\nimport com.pulumi.grafana.onCall.OutgoingWebhookArgs;\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 test_acc_outgoingWebhook = new OutgoingWebhook(\"test-acc-outgoingWebhook\", OutgoingWebhookArgs.builder()\n .url(\"https://example.com/\")\n .build(), CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test-acc-outgoingWebhook:\n type: grafana:onCall:OutgoingWebhook\n properties:\n url: https://example.com/\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:onCall/outgoingWebhook:OutgoingWebhook name \"{{ id }}\"\n```\n\n", + "description": "* [HTTP API](https://grafana.com/docs/oncall/latest/oncall-api-reference/outgoing_webhooks/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test_acc_outgoingWebhook = new grafana.oncall.OutgoingWebhook(\"test-acc-outgoingWebhook\", {url: \"https://example.com/\"}, {\n provider: grafana.oncall,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_grafana as grafana\n\ntest_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook(\"test-acc-outgoingWebhook\", url=\"https://example.com/\",\nopts = pulumi.ResourceOptions(provider=grafana[\"oncall\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test_acc_outgoingWebhook = new Grafana.OnCall.OutgoingWebhook(\"test-acc-outgoingWebhook\", new()\n {\n Url = \"https://example.com/\",\n }, new CustomResourceOptions\n {\n Provider = grafana.Oncall,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/onCall\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := onCall.NewOutgoingWebhook(ctx, \"test-acc-outgoingWebhook\", \u0026onCall.OutgoingWebhookArgs{\n\t\t\tUrl: pulumi.String(\"https://example.com/\"),\n\t\t}, pulumi.Provider(grafana.Oncall))\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.grafana.onCall.OutgoingWebhook;\nimport com.pulumi.grafana.onCall.OutgoingWebhookArgs;\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 test_acc_outgoingWebhook = new OutgoingWebhook(\"test-acc-outgoingWebhook\", OutgoingWebhookArgs.builder()\n .url(\"https://example.com/\")\n .build(), CustomResourceOptions.builder()\n .provider(grafana.oncall())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test-acc-outgoingWebhook:\n type: grafana:onCall:OutgoingWebhook\n properties:\n url: https://example.com/\n options:\n provider: ${grafana.oncall}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import grafana:onCall/outgoingWebhook:OutgoingWebhook name \"{{ id }}\"\n```\n\n", "properties": { "authorizationHeader": { "type": "string", @@ -22557,7 +22557,7 @@ ] }, "grafana:syntheticMonitoring/installation:Installation": { - "description": "Sets up Synthetic Monitoring on a Grafana cloud stack and generates a token. \nOnce a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.\nThis resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.\n\n**Note that this resource must be used on a provider configured with Grafana Cloud credentials.**\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/)\n* [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)\n\nRequired access policy scopes:\n\n* stacks:read\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst config = new pulumi.Config();\nconst cloudAccessPolicyToken = config.requireObject(\"cloudAccessPolicyToken\");\nconst stackSlug = config.requireObject(\"stackSlug\");\nconst cloudRegion = config.get(\"cloudRegion\") || \"us\";\n// Step 1: Create a stack\nconst cloud = new grafana.Provider(\"cloud\", {cloudAccessPolicyToken: cloudAccessPolicyToken});\nconst smStackStack = new grafana.cloud.Stack(\"smStackStack\", {\n slug: stackSlug,\n regionSlug: cloudRegion,\n}, {\n provider: grafana.cloud,\n});\n// Step 2: Install Synthetic Monitoring on the stack\nconst smMetricsPublishAccessPolicy = new grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", {\n region: cloudRegion,\n scopes: [\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms: [{\n type: \"stack\",\n identifier: smStackStack.id,\n }],\n}, {\n provider: grafana.cloud,\n});\nconst smMetricsPublishAccessPolicyToken = new grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", {\n region: cloudRegion,\n accessPolicyId: smMetricsPublishAccessPolicy.policyId,\n}, {\n provider: grafana.cloud,\n});\nconst smStackInstallation = new grafana.syntheticmonitoring.Installation(\"smStackInstallation\", {\n stackId: smStackStack.id,\n metricsPublisherKey: smMetricsPublishAccessPolicyToken.token,\n}, {\n provider: grafana.cloud,\n});\n// Step 3: Interact with Synthetic Monitoring\nconst sm = new grafana.Provider(\"sm\", {\n smAccessToken: smStackInstallation.smAccessToken,\n smUrl: smStackInstallation.stackSmApiUrl,\n});\nconst main = grafana.syntheticMonitoring.getProbes({});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\nconfig = pulumi.Config()\ncloud_access_policy_token = config.require_object(\"cloudAccessPolicyToken\")\nstack_slug = config.require_object(\"stackSlug\")\ncloud_region = config.get(\"cloudRegion\")\nif cloud_region is None:\n cloud_region = \"us\"\n# Step 1: Create a stack\ncloud = grafana.Provider(\"cloud\", cloud_access_policy_token=cloud_access_policy_token)\nsm_stack_stack = grafana.cloud.Stack(\"smStackStack\",\n slug=stack_slug,\n region_slug=cloud_region,\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 2: Install Synthetic Monitoring on the stack\nsm_metrics_publish_access_policy = grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\",\n region=cloud_region,\n scopes=[\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms=[grafana.cloud.AccessPolicyRealmArgs(\n type=\"stack\",\n identifier=sm_stack_stack.id,\n )],\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\",\n region=cloud_region,\n access_policy_id=sm_metrics_publish_access_policy.policy_id,\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_stack_installation = grafana.synthetic_monitoring.Installation(\"smStackInstallation\",\n stack_id=sm_stack_stack.id,\n metrics_publisher_key=sm_metrics_publish_access_policy_token.token,\n opts=pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 3: Interact with Synthetic Monitoring\nsm = grafana.Provider(\"sm\",\n sm_access_token=sm_stack_installation.sm_access_token,\n sm_url=sm_stack_installation.stack_sm_api_url)\nmain = grafana.syntheticMonitoring.get_probes()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var cloudAccessPolicyToken = config.RequireObject\u003cdynamic\u003e(\"cloudAccessPolicyToken\");\n var stackSlug = config.RequireObject\u003cdynamic\u003e(\"stackSlug\");\n var cloudRegion = config.Get(\"cloudRegion\") ?? \"us\";\n // Step 1: Create a stack\n var cloud = new Grafana.Provider(\"cloud\", new()\n {\n CloudAccessPolicyToken = cloudAccessPolicyToken,\n });\n\n var smStackStack = new Grafana.Cloud.Stack(\"smStackStack\", new()\n {\n Slug = stackSlug,\n RegionSlug = cloudRegion,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new Grafana.Cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", new()\n {\n Region = cloudRegion,\n Scopes = new[]\n {\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n },\n Realms = new[]\n {\n new Grafana.Cloud.Inputs.AccessPolicyRealmArgs\n {\n Type = \"stack\",\n Identifier = smStackStack.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smMetricsPublishAccessPolicyToken = new Grafana.Cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", new()\n {\n Region = cloudRegion,\n AccessPolicyId = smMetricsPublishAccessPolicy.PolicyId,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smStackInstallation = new Grafana.SyntheticMonitoring.Installation(\"smStackInstallation\", new()\n {\n StackId = smStackStack.Id,\n MetricsPublisherKey = smMetricsPublishAccessPolicyToken.Token,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Grafana.Provider(\"sm\", new()\n {\n SmAccessToken = smStackInstallation.SmAccessToken,\n SmUrl = smStackInstallation.StackSmApiUrl,\n });\n\n var main = Grafana.SyntheticMonitoring.GetProbes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/cloud\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/syntheticMonitoring\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tcloudAccessPolicyToken := cfg.RequireObject(\"cloudAccessPolicyToken\")\n\t\tstackSlug := cfg.RequireObject(\"stackSlug\")\n\t\tcloudRegion := \"us\"\n\t\tif param := cfg.Get(\"cloudRegion\"); param != \"\" {\n\t\t\tcloudRegion = param\n\t\t}\n\t\t// Step 1: Create a stack\n\t\t_, err := grafana.NewProvider(ctx, \"cloud\", \u0026grafana.ProviderArgs{\n\t\t\tCloudAccessPolicyToken: pulumi.Any(cloudAccessPolicyToken),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackStack, err := cloud.NewStack(ctx, \"smStackStack\", \u0026cloud.StackArgs{\n\t\t\tSlug: pulumi.Any(stackSlug),\n\t\t\tRegionSlug: pulumi.String(cloudRegion),\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 2: Install Synthetic Monitoring on the stack\n\t\tsmMetricsPublishAccessPolicy, err := cloud.NewAccessPolicy(ctx, \"smMetricsPublishAccessPolicy\", \u0026cloud.AccessPolicyArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"metrics:write\"),\n\t\t\t\tpulumi.String(\"stacks:read\"),\n\t\t\t\tpulumi.String(\"logs:write\"),\n\t\t\t\tpulumi.String(\"traces:write\"),\n\t\t\t},\n\t\t\tRealms: cloud.AccessPolicyRealmArray{\n\t\t\t\t\u0026cloud.AccessPolicyRealmArgs{\n\t\t\t\t\tType: pulumi.String(\"stack\"),\n\t\t\t\t\tIdentifier: smStackStack.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmMetricsPublishAccessPolicyToken, err := cloud.NewAccessPolicyToken(ctx, \"smMetricsPublishAccessPolicyToken\", \u0026cloud.AccessPolicyTokenArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tAccessPolicyId: smMetricsPublishAccessPolicy.PolicyId,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackInstallation, err := syntheticMonitoring.NewInstallation(ctx, \"smStackInstallation\", \u0026syntheticMonitoring.InstallationArgs{\n\t\t\tStackId: smStackStack.ID(),\n\t\t\tMetricsPublisherKey: smMetricsPublishAccessPolicyToken.Token,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 3: Interact with Synthetic Monitoring\n\t\t_, err = grafana.NewProvider(ctx, \"sm\", \u0026grafana.ProviderArgs{\n\t\t\tSmAccessToken: smStackInstallation.SmAccessToken,\n\t\t\tSmUrl: smStackInstallation.StackSmApiUrl,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = syntheticMonitoring.GetProbes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.Provider;\nimport com.pulumi.grafana.ProviderArgs;\nimport com.pulumi.grafana.cloud.Stack;\nimport com.pulumi.grafana.cloud.StackArgs;\nimport com.pulumi.grafana.cloud.AccessPolicy;\nimport com.pulumi.grafana.cloud.AccessPolicyArgs;\nimport com.pulumi.grafana.cloud.inputs.AccessPolicyRealmArgs;\nimport com.pulumi.grafana.cloud.AccessPolicyToken;\nimport com.pulumi.grafana.cloud.AccessPolicyTokenArgs;\nimport com.pulumi.grafana.syntheticMonitoring.Installation;\nimport com.pulumi.grafana.syntheticMonitoring.InstallationArgs;\nimport com.pulumi.grafana.syntheticMonitoring.SyntheticMonitoringFunctions;\nimport com.pulumi.grafana.syntheticMonitoring.inputs.GetProbesArgs;\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 config = ctx.config();\n final var cloudAccessPolicyToken = config.get(\"cloudAccessPolicyToken\");\n final var stackSlug = config.get(\"stackSlug\");\n final var cloudRegion = config.get(\"cloudRegion\").orElse(\"us\");\n // Step 1: Create a stack\n var cloud = new Provider(\"cloud\", ProviderArgs.builder()\n .cloudAccessPolicyToken(cloudAccessPolicyToken)\n .build());\n\n var smStackStack = new Stack(\"smStackStack\", StackArgs.builder()\n .slug(stackSlug)\n .regionSlug(cloudRegion)\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new AccessPolicy(\"smMetricsPublishAccessPolicy\", AccessPolicyArgs.builder()\n .region(cloudRegion)\n .scopes( \n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\")\n .realms(AccessPolicyRealmArgs.builder()\n .type(\"stack\")\n .identifier(smStackStack.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smMetricsPublishAccessPolicyToken = new AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", AccessPolicyTokenArgs.builder()\n .region(cloudRegion)\n .accessPolicyId(smMetricsPublishAccessPolicy.policyId())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smStackInstallation = new Installation(\"smStackInstallation\", InstallationArgs.builder()\n .stackId(smStackStack.id())\n .metricsPublisherKey(smMetricsPublishAccessPolicyToken.token())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Provider(\"sm\", ProviderArgs.builder()\n .smAccessToken(smStackInstallation.smAccessToken())\n .smUrl(smStackInstallation.stackSmApiUrl())\n .build());\n\n final var main = SyntheticMonitoringFunctions.getProbes();\n\n }\n}\n```\n```yaml\nconfiguration:\n cloudAccessPolicyToken:\n type: dynamic\n stackSlug:\n type: dynamic\n cloudRegion:\n type: string\n default: us\nresources:\n # Step 1: Create a stack\n cloud:\n type: pulumi:providers:grafana\n properties:\n cloudAccessPolicyToken: ${cloudAccessPolicyToken}\n smStackStack:\n type: grafana:cloud:Stack\n properties:\n slug: ${stackSlug}\n regionSlug: ${cloudRegion}\n options:\n provider: ${grafana.cloud}\n # Step 2: Install Synthetic Monitoring on the stack\n smMetricsPublishAccessPolicy:\n type: grafana:cloud:AccessPolicy\n properties:\n region: ${cloudRegion}\n scopes:\n - metrics:write\n - stacks:read\n - logs:write\n - traces:write\n realms:\n - type: stack\n identifier: ${smStackStack.id}\n options:\n provider: ${grafana.cloud}\n smMetricsPublishAccessPolicyToken:\n type: grafana:cloud:AccessPolicyToken\n properties:\n region: ${cloudRegion}\n accessPolicyId: ${smMetricsPublishAccessPolicy.policyId}\n options:\n provider: ${grafana.cloud}\n smStackInstallation:\n type: grafana:syntheticMonitoring:Installation\n properties:\n stackId: ${smStackStack.id}\n metricsPublisherKey: ${smMetricsPublishAccessPolicyToken.token}\n options:\n provider: ${grafana.cloud}\n # Step 3: Interact with Synthetic Monitoring\n sm:\n type: pulumi:providers:grafana\n properties:\n smAccessToken: ${smStackInstallation.smAccessToken}\n smUrl: ${smStackInstallation.stackSmApiUrl}\nvariables:\n main:\n fn::invoke:\n Function: grafana:syntheticMonitoring:getProbes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Sets up Synthetic Monitoring on a Grafana cloud stack and generates a token. \nOnce a Grafana Cloud stack is created, a user can either use this resource or go into the UI to install synthetic monitoring.\nThis resource cannot be imported but it can be used on an existing Synthetic Monitoring installation without issues.\n\n**Note that this resource must be used on a provider configured with Grafana Cloud credentials.**\n\n* [Official documentation](https://grafana.com/docs/grafana-cloud/testing/synthetic-monitoring/set-up/)\n* [API documentation](https://github.com/grafana/synthetic-monitoring-api-go-client/blob/main/docs/API.md#apiv1registerinstall)\n\nRequired access policy scopes:\n\n* stacks:read\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst config = new pulumi.Config();\nconst cloudAccessPolicyToken = config.requireObject(\"cloudAccessPolicyToken\");\nconst stackSlug = config.requireObject(\"stackSlug\");\nconst cloudRegion = config.get(\"cloudRegion\") || \"us\";\n// Step 1: Create a stack\nconst cloud = new grafana.Provider(\"cloud\", {cloudAccessPolicyToken: cloudAccessPolicyToken});\nconst smStackStack = new grafana.cloud.Stack(\"smStackStack\", {\n slug: stackSlug,\n regionSlug: cloudRegion,\n}, {\n provider: grafana.cloud,\n});\n// Step 2: Install Synthetic Monitoring on the stack\nconst smMetricsPublishAccessPolicy = new grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", {\n region: cloudRegion,\n scopes: [\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms: [{\n type: \"stack\",\n identifier: smStackStack.id,\n }],\n}, {\n provider: grafana.cloud,\n});\nconst smMetricsPublishAccessPolicyToken = new grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", {\n region: cloudRegion,\n accessPolicyId: smMetricsPublishAccessPolicy.policyId,\n}, {\n provider: grafana.cloud,\n});\nconst smStackInstallation = new grafana.syntheticmonitoring.Installation(\"smStackInstallation\", {\n stackId: smStackStack.id,\n metricsPublisherKey: smMetricsPublishAccessPolicyToken.token,\n}, {\n provider: grafana.cloud,\n});\n// Step 3: Interact with Synthetic Monitoring\nconst sm = new grafana.Provider(\"sm\", {\n smAccessToken: smStackInstallation.smAccessToken,\n smUrl: smStackInstallation.stackSmApiUrl,\n});\nconst main = grafana.syntheticMonitoring.getProbes({});\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\nconfig = pulumi.Config()\ncloud_access_policy_token = config.require_object(\"cloudAccessPolicyToken\")\nstack_slug = config.require_object(\"stackSlug\")\ncloud_region = config.get(\"cloudRegion\")\nif cloud_region is None:\n cloud_region = \"us\"\n# Step 1: Create a stack\ncloud = grafana.Provider(\"cloud\", cloud_access_policy_token=cloud_access_policy_token)\nsm_stack_stack = grafana.cloud.Stack(\"smStackStack\",\n slug=stack_slug,\n region_slug=cloud_region,\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 2: Install Synthetic Monitoring on the stack\nsm_metrics_publish_access_policy = grafana.cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\",\n region=cloud_region,\n scopes=[\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n ],\n realms=[grafana.cloud.AccessPolicyRealmArgs(\n type=\"stack\",\n identifier=sm_stack_stack.id,\n )],\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\",\n region=cloud_region,\n access_policy_id=sm_metrics_publish_access_policy.policy_id,\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\nsm_stack_installation = grafana.synthetic_monitoring.Installation(\"smStackInstallation\",\n stack_id=sm_stack_stack.id,\n metrics_publisher_key=sm_metrics_publish_access_policy_token.token,\n opts = pulumi.ResourceOptions(provider=grafana[\"cloud\"]))\n# Step 3: Interact with Synthetic Monitoring\nsm = grafana.Provider(\"sm\",\n sm_access_token=sm_stack_installation.sm_access_token,\n sm_url=sm_stack_installation.stack_sm_api_url)\nmain = grafana.syntheticMonitoring.get_probes()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var cloudAccessPolicyToken = config.RequireObject\u003cdynamic\u003e(\"cloudAccessPolicyToken\");\n var stackSlug = config.RequireObject\u003cdynamic\u003e(\"stackSlug\");\n var cloudRegion = config.Get(\"cloudRegion\") ?? \"us\";\n // Step 1: Create a stack\n var cloud = new Grafana.Provider(\"cloud\", new()\n {\n CloudAccessPolicyToken = cloudAccessPolicyToken,\n });\n\n var smStackStack = new Grafana.Cloud.Stack(\"smStackStack\", new()\n {\n Slug = stackSlug,\n RegionSlug = cloudRegion,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new Grafana.Cloud.AccessPolicy(\"smMetricsPublishAccessPolicy\", new()\n {\n Region = cloudRegion,\n Scopes = new[]\n {\n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\",\n },\n Realms = new[]\n {\n new Grafana.Cloud.Inputs.AccessPolicyRealmArgs\n {\n Type = \"stack\",\n Identifier = smStackStack.Id,\n },\n },\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smMetricsPublishAccessPolicyToken = new Grafana.Cloud.AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", new()\n {\n Region = cloudRegion,\n AccessPolicyId = smMetricsPublishAccessPolicy.PolicyId,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n var smStackInstallation = new Grafana.SyntheticMonitoring.Installation(\"smStackInstallation\", new()\n {\n StackId = smStackStack.Id,\n MetricsPublisherKey = smMetricsPublishAccessPolicyToken.Token,\n }, new CustomResourceOptions\n {\n Provider = grafana.Cloud,\n });\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Grafana.Provider(\"sm\", new()\n {\n SmAccessToken = smStackInstallation.SmAccessToken,\n SmUrl = smStackInstallation.StackSmApiUrl,\n });\n\n var main = Grafana.SyntheticMonitoring.GetProbes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/cloud\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/syntheticMonitoring\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tcloudAccessPolicyToken := cfg.RequireObject(\"cloudAccessPolicyToken\")\n\t\tstackSlug := cfg.RequireObject(\"stackSlug\")\n\t\tcloudRegion := \"us\"\n\t\tif param := cfg.Get(\"cloudRegion\"); param != \"\" {\n\t\t\tcloudRegion = param\n\t\t}\n\t\t// Step 1: Create a stack\n\t\t_, err := grafana.NewProvider(ctx, \"cloud\", \u0026grafana.ProviderArgs{\n\t\t\tCloudAccessPolicyToken: pulumi.Any(cloudAccessPolicyToken),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackStack, err := cloud.NewStack(ctx, \"smStackStack\", \u0026cloud.StackArgs{\n\t\t\tSlug: pulumi.Any(stackSlug),\n\t\t\tRegionSlug: pulumi.String(cloudRegion),\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 2: Install Synthetic Monitoring on the stack\n\t\tsmMetricsPublishAccessPolicy, err := cloud.NewAccessPolicy(ctx, \"smMetricsPublishAccessPolicy\", \u0026cloud.AccessPolicyArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"metrics:write\"),\n\t\t\t\tpulumi.String(\"stacks:read\"),\n\t\t\t\tpulumi.String(\"logs:write\"),\n\t\t\t\tpulumi.String(\"traces:write\"),\n\t\t\t},\n\t\t\tRealms: cloud.AccessPolicyRealmArray{\n\t\t\t\t\u0026cloud.AccessPolicyRealmArgs{\n\t\t\t\t\tType: pulumi.String(\"stack\"),\n\t\t\t\t\tIdentifier: smStackStack.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmMetricsPublishAccessPolicyToken, err := cloud.NewAccessPolicyToken(ctx, \"smMetricsPublishAccessPolicyToken\", \u0026cloud.AccessPolicyTokenArgs{\n\t\t\tRegion: pulumi.String(cloudRegion),\n\t\t\tAccessPolicyId: smMetricsPublishAccessPolicy.PolicyId,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsmStackInstallation, err := syntheticMonitoring.NewInstallation(ctx, \"smStackInstallation\", \u0026syntheticMonitoring.InstallationArgs{\n\t\t\tStackId: smStackStack.ID(),\n\t\t\tMetricsPublisherKey: smMetricsPublishAccessPolicyToken.Token,\n\t\t}, pulumi.Provider(grafana.Cloud))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Step 3: Interact with Synthetic Monitoring\n\t\t_, err = grafana.NewProvider(ctx, \"sm\", \u0026grafana.ProviderArgs{\n\t\t\tSmAccessToken: smStackInstallation.SmAccessToken,\n\t\t\tSmUrl: smStackInstallation.StackSmApiUrl,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = syntheticMonitoring.GetProbes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.grafana.Provider;\nimport com.pulumi.grafana.ProviderArgs;\nimport com.pulumi.grafana.cloud.Stack;\nimport com.pulumi.grafana.cloud.StackArgs;\nimport com.pulumi.grafana.cloud.AccessPolicy;\nimport com.pulumi.grafana.cloud.AccessPolicyArgs;\nimport com.pulumi.grafana.cloud.inputs.AccessPolicyRealmArgs;\nimport com.pulumi.grafana.cloud.AccessPolicyToken;\nimport com.pulumi.grafana.cloud.AccessPolicyTokenArgs;\nimport com.pulumi.grafana.syntheticMonitoring.Installation;\nimport com.pulumi.grafana.syntheticMonitoring.InstallationArgs;\nimport com.pulumi.grafana.syntheticMonitoring.SyntheticMonitoringFunctions;\nimport com.pulumi.grafana.syntheticMonitoring.inputs.GetProbesArgs;\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 config = ctx.config();\n final var cloudAccessPolicyToken = config.get(\"cloudAccessPolicyToken\");\n final var stackSlug = config.get(\"stackSlug\");\n final var cloudRegion = config.get(\"cloudRegion\").orElse(\"us\");\n // Step 1: Create a stack\n var cloud = new Provider(\"cloud\", ProviderArgs.builder()\n .cloudAccessPolicyToken(cloudAccessPolicyToken)\n .build());\n\n var smStackStack = new Stack(\"smStackStack\", StackArgs.builder()\n .slug(stackSlug)\n .regionSlug(cloudRegion)\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 2: Install Synthetic Monitoring on the stack\n var smMetricsPublishAccessPolicy = new AccessPolicy(\"smMetricsPublishAccessPolicy\", AccessPolicyArgs.builder()\n .region(cloudRegion)\n .scopes( \n \"metrics:write\",\n \"stacks:read\",\n \"logs:write\",\n \"traces:write\")\n .realms(AccessPolicyRealmArgs.builder()\n .type(\"stack\")\n .identifier(smStackStack.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smMetricsPublishAccessPolicyToken = new AccessPolicyToken(\"smMetricsPublishAccessPolicyToken\", AccessPolicyTokenArgs.builder()\n .region(cloudRegion)\n .accessPolicyId(smMetricsPublishAccessPolicy.policyId())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n var smStackInstallation = new Installation(\"smStackInstallation\", InstallationArgs.builder()\n .stackId(smStackStack.id())\n .metricsPublisherKey(smMetricsPublishAccessPolicyToken.token())\n .build(), CustomResourceOptions.builder()\n .provider(grafana.cloud())\n .build());\n\n // Step 3: Interact with Synthetic Monitoring\n var sm = new Provider(\"sm\", ProviderArgs.builder()\n .smAccessToken(smStackInstallation.smAccessToken())\n .smUrl(smStackInstallation.stackSmApiUrl())\n .build());\n\n final var main = SyntheticMonitoringFunctions.getProbes();\n\n }\n}\n```\n```yaml\nconfiguration:\n cloudAccessPolicyToken:\n type: dynamic\n stackSlug:\n type: dynamic\n cloudRegion:\n type: string\n default: us\nresources:\n # Step 1: Create a stack\n cloud:\n type: pulumi:providers:grafana\n properties:\n cloudAccessPolicyToken: ${cloudAccessPolicyToken}\n smStackStack:\n type: grafana:cloud:Stack\n properties:\n slug: ${stackSlug}\n regionSlug: ${cloudRegion}\n options:\n provider: ${grafana.cloud}\n # Step 2: Install Synthetic Monitoring on the stack\n smMetricsPublishAccessPolicy:\n type: grafana:cloud:AccessPolicy\n properties:\n region: ${cloudRegion}\n scopes:\n - metrics:write\n - stacks:read\n - logs:write\n - traces:write\n realms:\n - type: stack\n identifier: ${smStackStack.id}\n options:\n provider: ${grafana.cloud}\n smMetricsPublishAccessPolicyToken:\n type: grafana:cloud:AccessPolicyToken\n properties:\n region: ${cloudRegion}\n accessPolicyId: ${smMetricsPublishAccessPolicy.policyId}\n options:\n provider: ${grafana.cloud}\n smStackInstallation:\n type: grafana:syntheticMonitoring:Installation\n properties:\n stackId: ${smStackStack.id}\n metricsPublisherKey: ${smMetricsPublishAccessPolicyToken.token}\n options:\n provider: ${grafana.cloud}\n # Step 3: Interact with Synthetic Monitoring\n sm:\n type: pulumi:providers:grafana\n properties:\n smAccessToken: ${smStackInstallation.smAccessToken}\n smUrl: ${smStackInstallation.stackSmApiUrl}\nvariables:\n main:\n fn::invoke:\n Function: grafana:syntheticMonitoring:getProbes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "metricsPublisherKey": { "type": "string", @@ -24711,7 +24711,7 @@ }, "grafana:index/getUser:getUser": { "deprecationMessage": "grafana.index/getuser.getUser has been deprecated in favor of grafana.oss/getuser.getUser", - "description": "* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test = new grafana.oss.User(\"test\", {\n email: \"test.datasource@example.com\",\n login: \"test-datasource\",\n password: \"my-password\",\n isAdmin: true,\n});\nconst fromId = grafana.oss.getUserOutput({\n userId: test.userId,\n});\nconst fromEmail = grafana.oss.getUserOutput({\n email: test.email,\n});\nconst fromLogin = test.login.apply(login =\u003e grafana.oss.getUserOutput({\n login: login,\n}));\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ntest = grafana.oss.User(\"test\",\n email=\"test.datasource@example.com\",\n login=\"test-datasource\",\n password=\"my-password\",\n is_admin=True)\nfrom_id = grafana.oss.get_user_output(user_id=test.user_id)\nfrom_email = grafana.oss.get_user_output(email=test.email)\nfrom_login = test.login.apply(lambda login: grafana.oss.get_user_output(login=login))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Grafana.Oss.User(\"test\", new()\n {\n Email = \"test.datasource@example.com\",\n Login = \"test-datasource\",\n Password = \"my-password\",\n IsAdmin = true,\n });\n\n var fromId = Grafana.Oss.GetUser.Invoke(new()\n {\n UserId = test.UserId,\n });\n\n var fromEmail = Grafana.Oss.GetUser.Invoke(new()\n {\n Email = test.Email,\n });\n\n var fromLogin = Grafana.Oss.GetUser.Invoke(new()\n {\n Login = test.Login,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/oss\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := oss.NewUser(ctx, \"test\", \u0026oss.UserArgs{\n\t\t\tEmail: pulumi.String(\"test.datasource@example.com\"),\n\t\t\tLogin: pulumi.String(\"test-datasource\"),\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t\tIsAdmin: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tUserId: test.UserId,\n\t\t}, nil)\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tEmail: test.Email,\n\t\t}, nil)\n\t\t_ = test.Login.ApplyT(func(login *string) (oss.GetUserResult, error) {\n\t\t\treturn oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\t\tLogin: login,\n\t\t\t}, nil), nil\n\t\t}).(oss.GetUserResultOutput)\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.grafana.oss.User;\nimport com.pulumi.grafana.oss.UserArgs;\nimport com.pulumi.grafana.oss.OssFunctions;\nimport com.pulumi.grafana.oss.inputs.GetUserArgs;\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 test = new User(\"test\", UserArgs.builder()\n .email(\"test.datasource@example.com\")\n .login(\"test-datasource\")\n .password(\"my-password\")\n .isAdmin(true)\n .build());\n\n final var fromId = OssFunctions.getUser(GetUserArgs.builder()\n .userId(test.userId())\n .build());\n\n final var fromEmail = OssFunctions.getUser(GetUserArgs.builder()\n .email(test.email())\n .build());\n\n final var fromLogin = OssFunctions.getUser(GetUserArgs.builder()\n .login(test.login())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: grafana:oss:User\n properties:\n email: test.datasource@example.com\n login: test-datasource\n password: my-password\n isAdmin: true\nvariables:\n fromId:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n userId: ${test.userId}\n fromEmail:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n email: ${test.email}\n fromLogin:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n login: ${test.login}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test = new grafana.oss.User(\"test\", {\n email: \"test.datasource@example.com\",\n login: \"test-datasource\",\n password: \"my-password\",\n isAdmin: true,\n});\nconst fromId = grafana.oss.getUserOutput({\n userId: test.userId,\n});\nconst fromEmail = grafana.oss.getUserOutput({\n email: test.email,\n});\nconst fromLogin = test.login.apply(login =\u003e grafana.oss.getUserOutput({\n login: login,\n}));\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ntest = grafana.oss.User(\"test\",\n email=\"test.datasource@example.com\",\n login=\"test-datasource\",\n password=\"my-password\",\n is_admin=True)\nfrom_id = grafana.oss.get_user_output(user_id=test.user_id)\nfrom_email = grafana.oss.get_user_output(email=test.email)\nfrom_login = test.login.apply(lambda login: grafana.oss.get_user_output(login=login))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Grafana.Oss.User(\"test\", new()\n {\n Email = \"test.datasource@example.com\",\n Login = \"test-datasource\",\n Password = \"my-password\",\n IsAdmin = true,\n });\n\n var fromId = Grafana.Oss.GetUser.Invoke(new()\n {\n UserId = test.UserId,\n });\n\n var fromEmail = Grafana.Oss.GetUser.Invoke(new()\n {\n Email = test.Email,\n });\n\n var fromLogin = Grafana.Oss.GetUser.Invoke(new()\n {\n Login = test.Login,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/oss\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := oss.NewUser(ctx, \"test\", \u0026oss.UserArgs{\n\t\t\tEmail: pulumi.String(\"test.datasource@example.com\"),\n\t\t\tLogin: pulumi.String(\"test-datasource\"),\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t\tIsAdmin: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tUserId: test.UserId,\n\t\t}, nil)\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tEmail: test.Email,\n\t\t}, nil)\n\t\t_ = test.Login.ApplyT(func(login *string) (oss.GetUserResult, error) {\n\t\t\treturn oss.GetUserResult(interface{}(oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\t\tLogin: login,\n\t\t\t}, nil))), nil\n\t\t}).(oss.GetUserResultOutput)\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.grafana.oss.User;\nimport com.pulumi.grafana.oss.UserArgs;\nimport com.pulumi.grafana.oss.OssFunctions;\nimport com.pulumi.grafana.oss.inputs.GetUserArgs;\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 test = new User(\"test\", UserArgs.builder()\n .email(\"test.datasource@example.com\")\n .login(\"test-datasource\")\n .password(\"my-password\")\n .isAdmin(true)\n .build());\n\n final var fromId = OssFunctions.getUser(GetUserArgs.builder()\n .userId(test.userId())\n .build());\n\n final var fromEmail = OssFunctions.getUser(GetUserArgs.builder()\n .email(test.email())\n .build());\n\n final var fromLogin = OssFunctions.getUser(GetUserArgs.builder()\n .login(test.login())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: grafana:oss:User\n properties:\n email: test.datasource@example.com\n login: test-datasource\n password: my-password\n isAdmin: true\nvariables:\n fromId:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n userId: ${test.userId}\n fromEmail:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n email: ${test.email}\n fromLogin:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n login: ${test.login}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getUser.\n", "properties": { @@ -25773,7 +25773,7 @@ } }, "grafana:oss/getUser:getUser": { - "description": "* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test = new grafana.oss.User(\"test\", {\n email: \"test.datasource@example.com\",\n login: \"test-datasource\",\n password: \"my-password\",\n isAdmin: true,\n});\nconst fromId = grafana.oss.getUserOutput({\n userId: test.userId,\n});\nconst fromEmail = grafana.oss.getUserOutput({\n email: test.email,\n});\nconst fromLogin = test.login.apply(login =\u003e grafana.oss.getUserOutput({\n login: login,\n}));\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ntest = grafana.oss.User(\"test\",\n email=\"test.datasource@example.com\",\n login=\"test-datasource\",\n password=\"my-password\",\n is_admin=True)\nfrom_id = grafana.oss.get_user_output(user_id=test.user_id)\nfrom_email = grafana.oss.get_user_output(email=test.email)\nfrom_login = test.login.apply(lambda login: grafana.oss.get_user_output(login=login))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Grafana.Oss.User(\"test\", new()\n {\n Email = \"test.datasource@example.com\",\n Login = \"test-datasource\",\n Password = \"my-password\",\n IsAdmin = true,\n });\n\n var fromId = Grafana.Oss.GetUser.Invoke(new()\n {\n UserId = test.UserId,\n });\n\n var fromEmail = Grafana.Oss.GetUser.Invoke(new()\n {\n Email = test.Email,\n });\n\n var fromLogin = Grafana.Oss.GetUser.Invoke(new()\n {\n Login = test.Login,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/oss\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := oss.NewUser(ctx, \"test\", \u0026oss.UserArgs{\n\t\t\tEmail: pulumi.String(\"test.datasource@example.com\"),\n\t\t\tLogin: pulumi.String(\"test-datasource\"),\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t\tIsAdmin: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tUserId: test.UserId,\n\t\t}, nil)\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tEmail: test.Email,\n\t\t}, nil)\n\t\t_ = test.Login.ApplyT(func(login *string) (oss.GetUserResult, error) {\n\t\t\treturn oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\t\tLogin: login,\n\t\t\t}, nil), nil\n\t\t}).(oss.GetUserResultOutput)\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.grafana.oss.User;\nimport com.pulumi.grafana.oss.UserArgs;\nimport com.pulumi.grafana.oss.OssFunctions;\nimport com.pulumi.grafana.oss.inputs.GetUserArgs;\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 test = new User(\"test\", UserArgs.builder()\n .email(\"test.datasource@example.com\")\n .login(\"test-datasource\")\n .password(\"my-password\")\n .isAdmin(true)\n .build());\n\n final var fromId = OssFunctions.getUser(GetUserArgs.builder()\n .userId(test.userId())\n .build());\n\n final var fromEmail = OssFunctions.getUser(GetUserArgs.builder()\n .email(test.email())\n .build());\n\n final var fromLogin = OssFunctions.getUser(GetUserArgs.builder()\n .login(test.login())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: grafana:oss:User\n properties:\n email: test.datasource@example.com\n login: test-datasource\n password: my-password\n isAdmin: true\nvariables:\n fromId:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n userId: ${test.userId}\n fromEmail:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n email: ${test.email}\n fromLogin:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n login: ${test.login}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "* [Official documentation](https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/)\n* [HTTP API](https://grafana.com/docs/grafana/latest/developers/http_api/user/)\n\nThis data source uses Grafana's admin APIs for reading users which\ndoes not currently work with API Tokens. You must use basic auth.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as grafana from \"@pulumi/grafana\";\nimport * as grafana from \"@pulumiverse/grafana\";\n\nconst test = new grafana.oss.User(\"test\", {\n email: \"test.datasource@example.com\",\n login: \"test-datasource\",\n password: \"my-password\",\n isAdmin: true,\n});\nconst fromId = grafana.oss.getUserOutput({\n userId: test.userId,\n});\nconst fromEmail = grafana.oss.getUserOutput({\n email: test.email,\n});\nconst fromLogin = test.login.apply(login =\u003e grafana.oss.getUserOutput({\n login: login,\n}));\n```\n```python\nimport pulumi\nimport pulumi_grafana as grafana\nimport pulumiverse_grafana as grafana\n\ntest = grafana.oss.User(\"test\",\n email=\"test.datasource@example.com\",\n login=\"test-datasource\",\n password=\"my-password\",\n is_admin=True)\nfrom_id = grafana.oss.get_user_output(user_id=test.user_id)\nfrom_email = grafana.oss.get_user_output(email=test.email)\nfrom_login = test.login.apply(lambda login: grafana.oss.get_user_output(login=login))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Grafana = Pulumi.Grafana;\nusing Grafana = Pulumiverse.Grafana;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Grafana.Oss.User(\"test\", new()\n {\n Email = \"test.datasource@example.com\",\n Login = \"test-datasource\",\n Password = \"my-password\",\n IsAdmin = true,\n });\n\n var fromId = Grafana.Oss.GetUser.Invoke(new()\n {\n UserId = test.UserId,\n });\n\n var fromEmail = Grafana.Oss.GetUser.Invoke(new()\n {\n Email = test.Email,\n });\n\n var fromLogin = Grafana.Oss.GetUser.Invoke(new()\n {\n Login = test.Login,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-grafana/sdk/go/grafana/oss\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := oss.NewUser(ctx, \"test\", \u0026oss.UserArgs{\n\t\t\tEmail: pulumi.String(\"test.datasource@example.com\"),\n\t\t\tLogin: pulumi.String(\"test-datasource\"),\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t\tIsAdmin: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tUserId: test.UserId,\n\t\t}, nil)\n\t\t_ = oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\tEmail: test.Email,\n\t\t}, nil)\n\t\t_ = test.Login.ApplyT(func(login *string) (oss.GetUserResult, error) {\n\t\t\treturn oss.GetUserResult(interface{}(oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{\n\t\t\t\tLogin: login,\n\t\t\t}, nil))), nil\n\t\t}).(oss.GetUserResultOutput)\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.grafana.oss.User;\nimport com.pulumi.grafana.oss.UserArgs;\nimport com.pulumi.grafana.oss.OssFunctions;\nimport com.pulumi.grafana.oss.inputs.GetUserArgs;\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 test = new User(\"test\", UserArgs.builder()\n .email(\"test.datasource@example.com\")\n .login(\"test-datasource\")\n .password(\"my-password\")\n .isAdmin(true)\n .build());\n\n final var fromId = OssFunctions.getUser(GetUserArgs.builder()\n .userId(test.userId())\n .build());\n\n final var fromEmail = OssFunctions.getUser(GetUserArgs.builder()\n .email(test.email())\n .build());\n\n final var fromLogin = OssFunctions.getUser(GetUserArgs.builder()\n .login(test.login())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: grafana:oss:User\n properties:\n email: test.datasource@example.com\n login: test-datasource\n password: my-password\n isAdmin: true\nvariables:\n fromId:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n userId: ${test.userId}\n fromEmail:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n email: ${test.email}\n fromLogin:\n fn::invoke:\n Function: grafana:oss:getUser\n Arguments:\n login: ${test.login}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getUser.\n", "properties": { diff --git a/provider/go.mod b/provider/go.mod index 18a2d91b..a5fc012f 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -8,9 +8,9 @@ replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraf require ( github.com/grafana/terraform-provider-grafana/v3 v3.2.1 - github.com/pulumi/pulumi-terraform-bridge/pf v0.37.0 - github.com/pulumi/pulumi-terraform-bridge/v3 v3.84.0 - github.com/pulumi/pulumi/sdk/v3 v3.118.0 + github.com/pulumi/pulumi-terraform-bridge/pf v0.41.0 + github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 ) require ( @@ -22,9 +22,9 @@ require ( cloud.google.com/go/longrunning v0.5.5 // indirect cloud.google.com/go/storage v1.39.1 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect @@ -67,7 +67,7 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.24.2 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect github.com/cheekybits/genny v1.0.0 // indirect github.com/cheggaaa/pb v1.0.29 // indirect @@ -85,7 +85,6 @@ require ( github.com/ettle/strcase v0.1.1 // indirect github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect github.com/getkin/kin-openapi v0.124.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect @@ -137,7 +136,7 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect - github.com/hashicorp/go-getter v1.7.1 // indirect + github.com/hashicorp/go-getter v1.7.5 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect @@ -153,7 +152,7 @@ require ( github.com/hashicorp/hcl/v2 v2.21.0 // indirect github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect github.com/hashicorp/logutils v1.0.0 // indirect - github.com/hashicorp/terraform-plugin-framework v1.9.0 // indirect + github.com/hashicorp/terraform-plugin-framework v1.10.0 // indirect github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 // indirect github.com/hashicorp/terraform-plugin-go v0.23.0 // indirect github.com/hashicorp/terraform-plugin-log v0.9.0 // indirect @@ -221,11 +220,12 @@ require ( github.com/prometheus/common v0.53.0 // indirect github.com/prometheus/procfs v0.14.0 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.6.2 // indirect + github.com/pulumi/esc v0.9.1 // indirect + github.com/pulumi/inflector v0.1.1 // indirect github.com/pulumi/pulumi-java/pkg v0.11.0 // indirect github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8 // indirect - github.com/pulumi/pulumi-yaml v1.7.0 // indirect - github.com/pulumi/pulumi/pkg/v3 v3.118.0 // indirect + github.com/pulumi/pulumi-yaml v1.9.1 // indirect + github.com/pulumi/pulumi/pkg/v3 v3.126.0 // indirect github.com/pulumi/schema-tools v0.1.2 // indirect github.com/pulumi/terraform-diff-reader v0.0.2 // indirect github.com/rivo/uniseg v0.4.4 // indirect @@ -280,7 +280,7 @@ require ( gocloud.dev v0.37.0 // indirect gocloud.dev/secrets/hashivault v0.37.0 // indirect golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect diff --git a/provider/go.sum b/provider/go.sum index 716377cf..876abe05 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1151,12 +1151,12 @@ dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0 h1:n1DH8TPV4qqPTje2RcUBYwtrTWlabVp4n46+74X2pn4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.10.0/go.mod h1:HDcZnuGbiyppErN6lB+idp4CKhjbc8gwjto6OPpyggM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2 h1:LqbJ/WzJUwBf8UiaSzgX7aMclParm9/5Vgp+TY51uBQ= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.2/go.mod h1:yInRyqWXAuaPrgI7p70+lDDgh3mlBohis29jGMISnmc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= @@ -1305,8 +1305,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= @@ -1357,8 +1357,6 @@ github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJ github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= -github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= @@ -1409,8 +1407,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 h1:Uc+IZ7gYqAf/rSGFplbWBSHaGolEQlNLgMgSE3ccnIQ= -github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813/go.mod h1:P+oSoE9yhSRvsmYyZsshflcR6ePWYLql6UU1amW13IM= github.com/getkin/kin-openapi v0.124.0 h1:VSFNMB9C9rTKBnQ/fpyDU8ytMTr4dWI9QovSKj9kz/M= github.com/getkin/kin-openapi v0.124.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -1681,8 +1677,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= -github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= -github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= @@ -1744,8 +1740,8 @@ github.com/hashicorp/terraform-json v0.19.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2D github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= -github.com/hashicorp/terraform-plugin-framework v1.9.0 h1:caLcDoxiRucNi2hk8+j3kJwkKfvHznubyFsJMWfZqKU= -github.com/hashicorp/terraform-plugin-framework v1.9.0/go.mod h1:qBXLDn69kM97NNVi/MQ9qgd1uWWsVftGSnygYG1tImM= +github.com/hashicorp/terraform-plugin-framework v1.10.0 h1:xXhICE2Fns1RYZxEQebwkB2+kXouLC932Li9qelozrc= +github.com/hashicorp/terraform-plugin-framework v1.10.0/go.mod h1:qBXLDn69kM97NNVi/MQ9qgd1uWWsVftGSnygYG1tImM= github.com/hashicorp/terraform-plugin-framework-validators v0.12.0 h1:HOjBuMbOEzl7snOdOoUfE2Jgeto6JOjLVQ39Ls2nksc= github.com/hashicorp/terraform-plugin-framework-validators v0.12.0/go.mod h1:jfHGE/gzjxYz6XoUwi/aYiiKrJDeutQNUtGQXkaHklg= github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE= @@ -2033,24 +2029,26 @@ github.com/prometheus/procfs v0.14.0 h1:Lw4VdGGoKEZilJsayHf0B+9YgLGREba2C6xr+Fdf github.com/prometheus/procfs v0.14.0/go.mod h1:XL+Iwz8k8ZabyZfMFHPiilCniixqQarAy5Mu67pHlNQ= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= -github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/providertest v0.0.11 h1:mg8MQ7Cq7+9XlHIkBD+aCqQO4mwAJEISngZgVdnQUe8= -github.com/pulumi/providertest v0.0.11/go.mod h1:HsxjVsytcMIuNj19w1lT2W0QXY0oReXl1+h6eD2JXP8= +github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= +github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= +github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+SobA= +github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY= +github.com/pulumi/providertest v0.0.14 h1:5QlAPAAs82jkQraHsJvq1xgVfC7xtW8sFJwv2pHgxQ8= +github.com/pulumi/providertest v0.0.14/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0= github.com/pulumi/pulumi-java/pkg v0.11.0 h1:Jw9gBvyfmfOMq/EkYDm9+zGPxsDAA8jfeMpHmtZ+1oA= github.com/pulumi/pulumi-java/pkg v0.11.0/go.mod h1:sXAk25P47AQVQL6ilAbFmRNgZykC7og/+87ihnqzFTc= -github.com/pulumi/pulumi-terraform-bridge/pf v0.37.0 h1:cpPdMg2d1EZFsJYnV4eNbFdAFVzI27Xfw8UuobXE2vM= -github.com/pulumi/pulumi-terraform-bridge/pf v0.37.0/go.mod h1:pM6IkUAZrdu0GE4U+7uUQ65iqTm2AZ6eQm4WnBwsZw4= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.84.0 h1:WgRvBOGMkuUE6XLq0wzp27RkWuucrKLRPVB/5+7tBwU= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.84.0/go.mod h1:ju1Cn9qmqkStWP0Hyfzt3NOm+PnaiWnodXGx3TYaGyU= +github.com/pulumi/pulumi-terraform-bridge/pf v0.41.0 h1:nSXm/mV699EtAXLoA/XrDkFyoyWPFyfcMqk/SGCuH2M= +github.com/pulumi/pulumi-terraform-bridge/pf v0.41.0/go.mod h1:vGN8Ab6u/dxRE1Byqo6dXQE/loVbe9hYqiiHqm00hV4= +github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0 h1:0W2Y3Fk7VAWHpjD3FwzVnqWo7g1hD+96C0YDobMnvDU= +github.com/pulumi/pulumi-terraform-bridge/v3 v3.88.0/go.mod h1:QSDiqiCMMbfzrsp3oyRPWgSVE/dkVH5ujxoFappqjdo= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8 h1:mav2tSitA9BPJPLLahKgepHyYsMzwaTm4cvp0dcTMYw= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.8/go.mod h1:qUYk2c9i/yqMGNj9/bQyXpS39BxNDSXYjVN1njnq0zY= -github.com/pulumi/pulumi-yaml v1.7.0 h1:SbFSaqkH8UiMEy0ZSH9sHLQlmV8so0iCLfvLbPtVP7s= -github.com/pulumi/pulumi-yaml v1.7.0/go.mod h1:pCfYHSRmdl+5dM/7eT2uDQS528YOhAhiqbn9pwRzW20= -github.com/pulumi/pulumi/pkg/v3 v3.118.0 h1:i2OJe0Rl6BDxupJ0ix9HczAGKUsc6H6cU9svwDe1TYk= -github.com/pulumi/pulumi/pkg/v3 v3.118.0/go.mod h1:fbDHFdEJtFRkHu3Q6Sd7X3PalUsIXLbHT/pHfsbldlo= -github.com/pulumi/pulumi/sdk/v3 v3.118.0 h1:NboaaB4cNuehzsax38PO1jZOS6Mzbx/jNaDNaHPmg4c= -github.com/pulumi/pulumi/sdk/v3 v3.118.0/go.mod h1:kNea72+FQk82OjZ3yEP4dl6nbAl2ngE8PDBc0iFAaHg= +github.com/pulumi/pulumi-yaml v1.9.1 h1:JPeI80M23SPactxgnCFS1casZlSr7ZhAXwSx4H55QQ4= +github.com/pulumi/pulumi-yaml v1.9.1/go.mod h1:OH0R34yJxA5u6zjYBN4JXcWoEvfkRoOVWi6viu8buoA= +github.com/pulumi/pulumi/pkg/v3 v3.126.0 h1:XaZU1ehjHN2I5ihkfwxK/UFMDiCDM9FSt2TBnbldAx4= +github.com/pulumi/pulumi/pkg/v3 v3.126.0/go.mod h1:1P4/oK9zceOJUm48QQl/TqjDN68lfsdnTR1FITTFddw= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k= github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI= @@ -2305,8 +2303,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= -golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= diff --git a/sdk/dotnet/ServiceAccountToken.cs b/sdk/dotnet/ServiceAccountToken.cs index aaa0c2dc..a8cc51e6 100644 --- a/sdk/dotnet/ServiceAccountToken.cs +++ b/sdk/dotnet/ServiceAccountToken.cs @@ -26,23 +26,28 @@ namespace Pulumiverse.Grafana /// /// return await Deployment.RunAsync(() => /// { - /// var admin = new Grafana.Oss.ServiceAccount("admin", new() + /// var test = new Grafana.Oss.ServiceAccount("test", new() /// { - /// IsDisabled = false, - /// Role = "Admin", + /// Role = "Viewer", /// }); /// - /// }); - /// ``` - /// - /// ## Import + /// var foo = new Grafana.Oss.ServiceAccountToken("foo", new() + /// { + /// ServiceAccountId = test.Id, + /// }); /// - /// ```sh - /// $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ id }}" - /// ``` + /// var bar = new Grafana.Oss.ServiceAccountToken("bar", new() + /// { + /// ServiceAccountId = test.Id, + /// SecondsToLive = 30, + /// }); /// - /// ```sh - /// $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ orgID }}:{{ id }}" + /// return new Dictionary<string, object?> + /// { + /// ["serviceAccountTokenFooKeyOnly"] = foo.Key, + /// ["serviceAccountTokenBar"] = bar, + /// }; + /// }); /// ``` /// [Obsolete(@"grafana.index/serviceaccounttoken.ServiceAccountToken has been deprecated in favor of grafana.oss/serviceaccounttoken.ServiceAccountToken")] @@ -68,15 +73,13 @@ public partial class ServiceAccountToken : global::Pulumi.CustomResource public Output Key { get; private set; } = null!; /// - /// The name of the service account. + /// The name of the service account token. /// [Output("name")] public Output Name { get; private set; } = null!; /// - /// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - /// is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - /// never expire. + /// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. /// [Output("secondsToLive")] public Output SecondsToLive { get; private set; } = null!; @@ -143,15 +146,13 @@ public static ServiceAccountToken Get(string name, Input id, ServiceAcco public sealed class ServiceAccountTokenArgs : global::Pulumi.ResourceArgs { /// - /// The name of the service account. + /// The name of the service account token. /// [Input("name")] public Input? Name { get; set; } /// - /// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - /// is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - /// never expire. + /// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. /// [Input("secondsToLive")] public Input? SecondsToLive { get; set; } @@ -199,15 +200,13 @@ public Input? Key } /// - /// The name of the service account. + /// The name of the service account token. /// [Input("name")] public Input? Name { get; set; } /// - /// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - /// is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - /// never expire. + /// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. /// [Input("secondsToLive")] public Input? SecondsToLive { get; set; } diff --git a/sdk/go.mod b/sdk/go.mod index 8f6c3c16..22c756d7 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -4,11 +4,12 @@ go 1.22 require ( github.com/blang/semver v3.5.1+incompatible - github.com/pulumi/pulumi/sdk/v3 v3.118.0 + github.com/pulumi/pulumi/sdk/v3 v3.126.0 ) require ( dario.cat/mergo v1.0.0 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect @@ -17,7 +18,7 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect - github.com/charmbracelet/bubbletea v0.24.2 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/circl v1.3.7 // indirect @@ -56,7 +57,7 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pkg/term v1.1.0 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.6.2 // indirect + github.com/pulumi/esc v0.9.1 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect @@ -73,15 +74,15 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/zclconf/go-cty v1.13.2 // indirect go.uber.org/atomic v1.9.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.15.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect diff --git a/sdk/go.sum b/sdk/go.sum index eee4f15a..7c377224 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -1,5 +1,7 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -26,8 +28,8 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= @@ -146,10 +148,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= -github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/pulumi/sdk/v3 v3.118.0 h1:NboaaB4cNuehzsax38PO1jZOS6Mzbx/jNaDNaHPmg4c= -github.com/pulumi/pulumi/sdk/v3 v3.118.0/go.mod h1:kNea72+FQk82OjZ3yEP4dl6nbAl2ngE8PDBc0iFAaHg= +github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= +github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= +github.com/pulumi/pulumi/sdk/v3 v3.126.0 h1:6GQVhwG2jgnG7wjRiWgrq0/sU39onctAiBcvTlqb20s= +github.com/pulumi/pulumi/sdk/v3 v3.126.0/go.mod h1:p1U24en3zt51agx+WlNboSOV8eLlPWYAkxMzVEXKbnY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= @@ -205,18 +207,18 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= -golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= +golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -228,15 +230,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -257,15 +259,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -273,8 +275,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -283,8 +285,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/sdk/go/grafana/getUser.go b/sdk/go/grafana/getUser.go index 033fd73b..d7bdffa8 100644 --- a/sdk/go/grafana/getUser.go +++ b/sdk/go/grafana/getUser.go @@ -47,9 +47,9 @@ import ( // Email: test.Email, // }, nil) // _ = test.Login.ApplyT(func(login *string) (oss.GetUserResult, error) { -// return oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{ +// return oss.GetUserResult(interface{}(oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{ // Login: login, -// }, nil), nil +// }, nil))), nil // }).(oss.GetUserResultOutput) // return nil // }) diff --git a/sdk/go/grafana/oss/getUser.go b/sdk/go/grafana/oss/getUser.go index 120fe612..a328b999 100644 --- a/sdk/go/grafana/oss/getUser.go +++ b/sdk/go/grafana/oss/getUser.go @@ -47,9 +47,9 @@ import ( // Email: test.Email, // }, nil) // _ = test.Login.ApplyT(func(login *string) (oss.GetUserResult, error) { -// return oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{ +// return oss.GetUserResult(interface{}(oss.LookupUserOutput(ctx, oss.GetUserOutputArgs{ // Login: login, -// }, nil), nil +// }, nil))), nil // }).(oss.GetUserResultOutput) // return nil // }) diff --git a/sdk/go/grafana/serviceAccountToken.go b/sdk/go/grafana/serviceAccountToken.go index 5371d8e6..4da3407e 100644 --- a/sdk/go/grafana/serviceAccountToken.go +++ b/sdk/go/grafana/serviceAccountToken.go @@ -31,29 +31,33 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := oss.NewServiceAccount(ctx, "admin", &oss.ServiceAccountArgs{ -// IsDisabled: pulumi.Bool(false), -// Role: pulumi.String("Admin"), +// test, err := oss.NewServiceAccount(ctx, "test", &oss.ServiceAccountArgs{ +// Role: pulumi.String("Viewer"), // }) // if err != nil { // return err // } +// foo, err := oss.NewServiceAccountToken(ctx, "foo", &oss.ServiceAccountTokenArgs{ +// ServiceAccountId: test.ID(), +// }) +// if err != nil { +// return err +// } +// bar, err := oss.NewServiceAccountToken(ctx, "bar", &oss.ServiceAccountTokenArgs{ +// ServiceAccountId: test.ID(), +// SecondsToLive: pulumi.Int(30), +// }) +// if err != nil { +// return err +// } +// ctx.Export("serviceAccountTokenFooKeyOnly", foo.Key) +// ctx.Export("serviceAccountTokenBar", bar) // return nil // }) // } // // ``` // -// ## Import -// -// ```sh -// $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ id }}" -// ``` -// -// ```sh -// $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ orgID }}:{{ id }}" -// ``` -// // Deprecated: grafana.index/serviceaccounttoken.ServiceAccountToken has been deprecated in favor of grafana.oss/serviceaccounttoken.ServiceAccountToken type ServiceAccountToken struct { pulumi.CustomResourceState @@ -64,11 +68,9 @@ type ServiceAccountToken struct { HasExpired pulumi.BoolOutput `pulumi:"hasExpired"` // The key of the service account token. Key pulumi.StringOutput `pulumi:"key"` - // The name of the service account. + // The name of the service account token. Name pulumi.StringOutput `pulumi:"name"` - // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - // is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - // expire. + // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. SecondsToLive pulumi.IntPtrOutput `pulumi:"secondsToLive"` // The ID of the service account to which the token belongs. ServiceAccountId pulumi.StringOutput `pulumi:"serviceAccountId"` @@ -123,11 +125,9 @@ type serviceAccountTokenState struct { HasExpired *bool `pulumi:"hasExpired"` // The key of the service account token. Key *string `pulumi:"key"` - // The name of the service account. + // The name of the service account token. Name *string `pulumi:"name"` - // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - // is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - // expire. + // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. SecondsToLive *int `pulumi:"secondsToLive"` // The ID of the service account to which the token belongs. ServiceAccountId *string `pulumi:"serviceAccountId"` @@ -140,11 +140,9 @@ type ServiceAccountTokenState struct { HasExpired pulumi.BoolPtrInput // The key of the service account token. Key pulumi.StringPtrInput - // The name of the service account. + // The name of the service account token. Name pulumi.StringPtrInput - // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - // is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - // expire. + // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. SecondsToLive pulumi.IntPtrInput // The ID of the service account to which the token belongs. ServiceAccountId pulumi.StringPtrInput @@ -155,11 +153,9 @@ func (ServiceAccountTokenState) ElementType() reflect.Type { } type serviceAccountTokenArgs struct { - // The name of the service account. + // The name of the service account token. Name *string `pulumi:"name"` - // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - // is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - // expire. + // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. SecondsToLive *int `pulumi:"secondsToLive"` // The ID of the service account to which the token belongs. ServiceAccountId string `pulumi:"serviceAccountId"` @@ -167,11 +163,9 @@ type serviceAccountTokenArgs struct { // The set of arguments for constructing a ServiceAccountToken resource. type ServiceAccountTokenArgs struct { - // The name of the service account. + // The name of the service account token. Name pulumi.StringPtrInput - // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - // is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - // expire. + // The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. SecondsToLive pulumi.IntPtrInput // The ID of the service account to which the token belongs. ServiceAccountId pulumi.StringInput @@ -279,14 +273,12 @@ func (o ServiceAccountTokenOutput) Key() pulumi.StringOutput { return o.ApplyT(func(v *ServiceAccountToken) pulumi.StringOutput { return v.Key }).(pulumi.StringOutput) } -// The name of the service account. +// The name of the service account token. func (o ServiceAccountTokenOutput) Name() pulumi.StringOutput { return o.ApplyT(func(v *ServiceAccountToken) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) } -// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it -// is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never -// expire. +// The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. func (o ServiceAccountTokenOutput) SecondsToLive() pulumi.IntPtrOutput { return o.ApplyT(func(v *ServiceAccountToken) pulumi.IntPtrOutput { return v.SecondsToLive }).(pulumi.IntPtrOutput) } diff --git a/sdk/nodejs/serviceAccountToken.ts b/sdk/nodejs/serviceAccountToken.ts index e74721ed..216ac609 100644 --- a/sdk/nodejs/serviceAccountToken.ts +++ b/sdk/nodejs/serviceAccountToken.ts @@ -16,20 +16,14 @@ import * as utilities from "./utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as grafana from "@pulumiverse/grafana"; * - * const admin = new grafana.oss.ServiceAccount("admin", { - * isDisabled: false, - * role: "Admin", + * const test = new grafana.oss.ServiceAccount("test", {role: "Viewer"}); + * const foo = new grafana.oss.ServiceAccountToken("foo", {serviceAccountId: test.id}); + * const bar = new grafana.oss.ServiceAccountToken("bar", { + * serviceAccountId: test.id, + * secondsToLive: 30, * }); - * ``` - * - * ## Import - * - * ```sh - * $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ id }}" - * ``` - * - * ```sh - * $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ orgID }}:{{ id }}" + * export const serviceAccountTokenFooKeyOnly = foo.key; + * export const serviceAccountTokenBar = bar; * ``` * * @deprecated grafana.index/serviceaccounttoken.ServiceAccountToken has been deprecated in favor of grafana.oss/serviceaccounttoken.ServiceAccountToken @@ -76,13 +70,11 @@ export class ServiceAccountToken extends pulumi.CustomResource { */ public /*out*/ readonly key!: pulumi.Output; /** - * The name of the service account. + * The name of the service account token. */ public readonly name!: pulumi.Output; /** - * The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - * is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - * expire. + * The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. */ public readonly secondsToLive!: pulumi.Output; /** @@ -150,13 +142,11 @@ export interface ServiceAccountTokenState { */ key?: pulumi.Input; /** - * The name of the service account. + * The name of the service account token. */ name?: pulumi.Input; /** - * The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - * is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - * expire. + * The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. */ secondsToLive?: pulumi.Input; /** @@ -170,13 +160,11 @@ export interface ServiceAccountTokenState { */ export interface ServiceAccountTokenArgs { /** - * The name of the service account. + * The name of the service account token. */ name?: pulumi.Input; /** - * The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - * is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never - * expire. + * The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `apiKeyMaxSecondsToLive` configuration option is set) the key will never expire. */ secondsToLive?: pulumi.Input; /** diff --git a/sdk/python/pulumiverse_grafana/_utilities.py b/sdk/python/pulumiverse_grafana/_utilities.py index b7a29b8a..e1b33722 100644 --- a/sdk/python/pulumiverse_grafana/_utilities.py +++ b/sdk/python/pulumiverse_grafana/_utilities.py @@ -4,6 +4,7 @@ import asyncio +import functools import importlib.metadata import importlib.util import inspect @@ -11,14 +12,19 @@ import os import sys import typing +import warnings +import base64 import pulumi import pulumi.runtime from pulumi.runtime.sync_await import _sync_await +from pulumi.runtime.proto import resource_pb2 from semver import VersionInfo as SemverVersion from parver import Version as PEP440Version +C = typing.TypeVar("C", bound=typing.Callable) + def get_env(*args): for v in args: @@ -96,10 +102,6 @@ def _get_semver_version(): _version = _get_semver_version() _version_str = str(_version) - -def get_version(): - return _version_str - def get_resource_opts_defaults() -> pulumi.ResourceOptions: return pulumi.ResourceOptions( version=get_version(), @@ -287,5 +289,39 @@ async def _await_output(o: pulumi.Output[typing.Any]) -> typing.Tuple[object, bo await o._resources, ) + +# This is included to provide an upgrade path for users who are using a version +# of the Pulumi SDK (<3.121.0) that does not include the `deprecated` decorator. +def deprecated(message: str) -> typing.Callable[[C], C]: + """ + Decorator to indicate a function is deprecated. + + As well as inserting appropriate statements to indicate that the function is + deprecated, this decorator also tags the function with a special attribute + so that Pulumi code can detect that it is deprecated and react appropriately + in certain situations. + + message is the deprecation message that should be printed if the function is called. + """ + + def decorator(fn: C) -> C: + if not callable(fn): + raise TypeError("Expected fn to be callable") + + @functools.wraps(fn) + def deprecated_fn(*args, **kwargs): + warnings.warn(message) + pulumi.warn(f"{fn.__name__} is deprecated: {message}") + + return fn(*args, **kwargs) + + deprecated_fn.__dict__["_pulumi_deprecated_callable"] = fn + return typing.cast(C, deprecated_fn) + + return decorator + def get_plugin_download_url(): return "github://api.github.com/pulumiverse" + +def get_version(): + return _version_str diff --git a/sdk/python/pulumiverse_grafana/oncall/escalation.py b/sdk/python/pulumiverse_grafana/oncall/escalation.py index 77009bf8..d475d4be 100644 --- a/sdk/python/pulumiverse_grafana/oncall/escalation.py +++ b/sdk/python/pulumiverse_grafana/oncall/escalation.py @@ -470,7 +470,7 @@ def __init__(__self__, import pulumi_grafana as grafana import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) alex = grafana.onCall.get_user(username="alex") # Notify step example_notify_step_escalation = grafana.on_call.Escalation("exampleNotifyStepEscalation", @@ -532,7 +532,7 @@ def __init__(__self__, import pulumi_grafana as grafana import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) alex = grafana.onCall.get_user(username="alex") # Notify step example_notify_step_escalation = grafana.on_call.Escalation("exampleNotifyStepEscalation", diff --git a/sdk/python/pulumiverse_grafana/oncall/escalation_chain.py b/sdk/python/pulumiverse_grafana/oncall/escalation_chain.py index 083ad654..76f97850 100644 --- a/sdk/python/pulumiverse_grafana/oncall/escalation_chain.py +++ b/sdk/python/pulumiverse_grafana/oncall/escalation_chain.py @@ -108,7 +108,7 @@ def __init__(__self__, import pulumi import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import @@ -137,7 +137,7 @@ def __init__(__self__, import pulumi import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import diff --git a/sdk/python/pulumiverse_grafana/oncall/outgoing_webhook.py b/sdk/python/pulumiverse_grafana/oncall/outgoing_webhook.py index 9fa1daf5..7fdeb9ff 100644 --- a/sdk/python/pulumiverse_grafana/oncall/outgoing_webhook.py +++ b/sdk/python/pulumiverse_grafana/oncall/outgoing_webhook.py @@ -504,7 +504,7 @@ def __init__(__self__, import pulumiverse_grafana as grafana test_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook("test-acc-outgoingWebhook", url="https://example.com/", - opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import @@ -546,7 +546,7 @@ def __init__(__self__, import pulumiverse_grafana as grafana test_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook("test-acc-outgoingWebhook", url="https://example.com/", - opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import diff --git a/sdk/python/pulumiverse_grafana/oncall_escalation.py b/sdk/python/pulumiverse_grafana/oncall_escalation.py index 2494d30b..ef1e5f6d 100644 --- a/sdk/python/pulumiverse_grafana/oncall_escalation.py +++ b/sdk/python/pulumiverse_grafana/oncall_escalation.py @@ -475,7 +475,7 @@ def __init__(__self__, import pulumi_grafana as grafana import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) alex = grafana.onCall.get_user(username="alex") # Notify step example_notify_step_escalation = grafana.on_call.Escalation("exampleNotifyStepEscalation", @@ -537,7 +537,7 @@ def __init__(__self__, import pulumi_grafana as grafana import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) alex = grafana.onCall.get_user(username="alex") # Notify step example_notify_step_escalation = grafana.on_call.Escalation("exampleNotifyStepEscalation", diff --git a/sdk/python/pulumiverse_grafana/oncall_escalation_chain.py b/sdk/python/pulumiverse_grafana/oncall_escalation_chain.py index 726641db..6259388f 100644 --- a/sdk/python/pulumiverse_grafana/oncall_escalation_chain.py +++ b/sdk/python/pulumiverse_grafana/oncall_escalation_chain.py @@ -113,7 +113,7 @@ def __init__(__self__, import pulumi import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import @@ -142,7 +142,7 @@ def __init__(__self__, import pulumi import pulumiverse_grafana as grafana - default = grafana.on_call.EscalationChain("default", opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + default = grafana.on_call.EscalationChain("default", opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import diff --git a/sdk/python/pulumiverse_grafana/oncall_outgoing_webhook.py b/sdk/python/pulumiverse_grafana/oncall_outgoing_webhook.py index 3f99ddab..6b68f6ab 100644 --- a/sdk/python/pulumiverse_grafana/oncall_outgoing_webhook.py +++ b/sdk/python/pulumiverse_grafana/oncall_outgoing_webhook.py @@ -509,7 +509,7 @@ def __init__(__self__, import pulumiverse_grafana as grafana test_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook("test-acc-outgoingWebhook", url="https://example.com/", - opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import @@ -551,7 +551,7 @@ def __init__(__self__, import pulumiverse_grafana as grafana test_acc_outgoing_webhook = grafana.on_call.OutgoingWebhook("test-acc-outgoingWebhook", url="https://example.com/", - opts=pulumi.ResourceOptions(provider=grafana["oncall"])) + opts = pulumi.ResourceOptions(provider=grafana["oncall"])) ``` ## Import diff --git a/sdk/python/pulumiverse_grafana/service_account_token.py b/sdk/python/pulumiverse_grafana/service_account_token.py index 53a6696d..99dbd023 100644 --- a/sdk/python/pulumiverse_grafana/service_account_token.py +++ b/sdk/python/pulumiverse_grafana/service_account_token.py @@ -20,10 +20,8 @@ def __init__(__self__, *, """ The set of arguments for constructing a ServiceAccountToken resource. :param pulumi.Input[str] service_account_id: The ID of the service account to which the token belongs. - :param pulumi.Input[str] name: The name of the service account. - :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + :param pulumi.Input[str] name: The name of the service account token. + :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. """ pulumi.set(__self__, "service_account_id", service_account_id) if name is not None: @@ -47,7 +45,7 @@ def service_account_id(self, value: pulumi.Input[str]): @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: """ - The name of the service account. + The name of the service account token. """ return pulumi.get(self, "name") @@ -59,9 +57,7 @@ def name(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="secondsToLive") def seconds_to_live(self) -> Optional[pulumi.Input[int]]: """ - The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. """ return pulumi.get(self, "seconds_to_live") @@ -84,10 +80,8 @@ def __init__(__self__, *, :param pulumi.Input[str] expiration: The expiration date of the service account token. :param pulumi.Input[bool] has_expired: The status of the service account token. :param pulumi.Input[str] key: The key of the service account token. - :param pulumi.Input[str] name: The name of the service account. - :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + :param pulumi.Input[str] name: The name of the service account token. + :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. :param pulumi.Input[str] service_account_id: The ID of the service account to which the token belongs. """ if expiration is not None: @@ -143,7 +137,7 @@ def key(self, value: Optional[pulumi.Input[str]]): @pulumi.getter def name(self) -> Optional[pulumi.Input[str]]: """ - The name of the service account. + The name of the service account token. """ return pulumi.get(self, "name") @@ -155,9 +149,7 @@ def name(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="secondsToLive") def seconds_to_live(self) -> Optional[pulumi.Input[int]]: """ - The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. """ return pulumi.get(self, "seconds_to_live") @@ -204,27 +196,19 @@ def __init__(__self__, import pulumi import pulumiverse_grafana as grafana - admin = grafana.oss.ServiceAccount("admin", - is_disabled=False, - role="Admin") - ``` - - ## Import - - ```sh - $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ id }}" - ``` - - ```sh - $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ orgID }}:{{ id }}" + test = grafana.oss.ServiceAccount("test", role="Viewer") + foo = grafana.oss.ServiceAccountToken("foo", service_account_id=test.id) + bar = grafana.oss.ServiceAccountToken("bar", + service_account_id=test.id, + seconds_to_live=30) + pulumi.export("serviceAccountTokenFooKeyOnly", foo.key) + pulumi.export("serviceAccountTokenBar", bar) ``` :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[str] name: The name of the service account. - :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + :param pulumi.Input[str] name: The name of the service account token. + :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. :param pulumi.Input[str] service_account_id: The ID of the service account to which the token belongs. """ ... @@ -245,19 +229,13 @@ def __init__(__self__, import pulumi import pulumiverse_grafana as grafana - admin = grafana.oss.ServiceAccount("admin", - is_disabled=False, - role="Admin") - ``` - - ## Import - - ```sh - $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ id }}" - ``` - - ```sh - $ pulumi import grafana:index/serviceAccountToken:ServiceAccountToken name "{{ orgID }}:{{ id }}" + test = grafana.oss.ServiceAccount("test", role="Viewer") + foo = grafana.oss.ServiceAccountToken("foo", service_account_id=test.id) + bar = grafana.oss.ServiceAccountToken("bar", + service_account_id=test.id, + seconds_to_live=30) + pulumi.export("serviceAccountTokenFooKeyOnly", foo.key) + pulumi.export("serviceAccountTokenBar", bar) ``` :param str resource_name: The name of the resource. @@ -326,10 +304,8 @@ def get(resource_name: str, :param pulumi.Input[str] expiration: The expiration date of the service account token. :param pulumi.Input[bool] has_expired: The status of the service account token. :param pulumi.Input[str] key: The key of the service account token. - :param pulumi.Input[str] name: The name of the service account. - :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + :param pulumi.Input[str] name: The name of the service account token. + :param pulumi.Input[int] seconds_to_live: The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. :param pulumi.Input[str] service_account_id: The ID of the service account to which the token belongs. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -372,7 +348,7 @@ def key(self) -> pulumi.Output[str]: @pulumi.getter def name(self) -> pulumi.Output[str]: """ - The name of the service account. + The name of the service account token. """ return pulumi.get(self, "name") @@ -380,9 +356,7 @@ def name(self) -> pulumi.Output[str]: @pulumi.getter(name="secondsToLive") def seconds_to_live(self) -> pulumi.Output[Optional[int]]: """ - The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it - is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will - never expire. + The key expiration in seconds. It is optional. If it is a positive number an expiration date for the key is set. If it is null, zero or is omitted completely (unless `api_key_max_seconds_to_live` configuration option is set) the key will never expire. """ return pulumi.get(self, "seconds_to_live") diff --git a/sdk/python/pulumiverse_grafana/synthetic_monitoring_installation.py b/sdk/python/pulumiverse_grafana/synthetic_monitoring_installation.py index d9d463b7..cf9f7a03 100644 --- a/sdk/python/pulumiverse_grafana/synthetic_monitoring_installation.py +++ b/sdk/python/pulumiverse_grafana/synthetic_monitoring_installation.py @@ -183,7 +183,7 @@ def __init__(__self__, sm_stack_stack = grafana.cloud.Stack("smStackStack", slug=stack_slug, region_slug=cloud_region, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 2: Install Synthetic Monitoring on the stack sm_metrics_publish_access_policy = grafana.cloud.AccessPolicy("smMetricsPublishAccessPolicy", region=cloud_region, @@ -197,15 +197,15 @@ def __init__(__self__, type="stack", identifier=sm_stack_stack.id, )], - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken("smMetricsPublishAccessPolicyToken", region=cloud_region, access_policy_id=sm_metrics_publish_access_policy.policy_id, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_stack_installation = grafana.synthetic_monitoring.Installation("smStackInstallation", stack_id=sm_stack_stack.id, metrics_publisher_key=sm_metrics_publish_access_policy_token.token, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 3: Interact with Synthetic Monitoring sm = grafana.Provider("sm", sm_access_token=sm_stack_installation.sm_access_token, @@ -257,7 +257,7 @@ def __init__(__self__, sm_stack_stack = grafana.cloud.Stack("smStackStack", slug=stack_slug, region_slug=cloud_region, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 2: Install Synthetic Monitoring on the stack sm_metrics_publish_access_policy = grafana.cloud.AccessPolicy("smMetricsPublishAccessPolicy", region=cloud_region, @@ -271,15 +271,15 @@ def __init__(__self__, type="stack", identifier=sm_stack_stack.id, )], - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken("smMetricsPublishAccessPolicyToken", region=cloud_region, access_policy_id=sm_metrics_publish_access_policy.policy_id, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_stack_installation = grafana.synthetic_monitoring.Installation("smStackInstallation", stack_id=sm_stack_stack.id, metrics_publisher_key=sm_metrics_publish_access_policy_token.token, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 3: Interact with Synthetic Monitoring sm = grafana.Provider("sm", sm_access_token=sm_stack_installation.sm_access_token, diff --git a/sdk/python/pulumiverse_grafana/syntheticmonitoring/installation.py b/sdk/python/pulumiverse_grafana/syntheticmonitoring/installation.py index 1bace605..fb3a84f3 100644 --- a/sdk/python/pulumiverse_grafana/syntheticmonitoring/installation.py +++ b/sdk/python/pulumiverse_grafana/syntheticmonitoring/installation.py @@ -178,7 +178,7 @@ def __init__(__self__, sm_stack_stack = grafana.cloud.Stack("smStackStack", slug=stack_slug, region_slug=cloud_region, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 2: Install Synthetic Monitoring on the stack sm_metrics_publish_access_policy = grafana.cloud.AccessPolicy("smMetricsPublishAccessPolicy", region=cloud_region, @@ -192,15 +192,15 @@ def __init__(__self__, type="stack", identifier=sm_stack_stack.id, )], - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken("smMetricsPublishAccessPolicyToken", region=cloud_region, access_policy_id=sm_metrics_publish_access_policy.policy_id, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_stack_installation = grafana.synthetic_monitoring.Installation("smStackInstallation", stack_id=sm_stack_stack.id, metrics_publisher_key=sm_metrics_publish_access_policy_token.token, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 3: Interact with Synthetic Monitoring sm = grafana.Provider("sm", sm_access_token=sm_stack_installation.sm_access_token, @@ -252,7 +252,7 @@ def __init__(__self__, sm_stack_stack = grafana.cloud.Stack("smStackStack", slug=stack_slug, region_slug=cloud_region, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 2: Install Synthetic Monitoring on the stack sm_metrics_publish_access_policy = grafana.cloud.AccessPolicy("smMetricsPublishAccessPolicy", region=cloud_region, @@ -266,15 +266,15 @@ def __init__(__self__, type="stack", identifier=sm_stack_stack.id, )], - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_metrics_publish_access_policy_token = grafana.cloud.AccessPolicyToken("smMetricsPublishAccessPolicyToken", region=cloud_region, access_policy_id=sm_metrics_publish_access_policy.policy_id, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) sm_stack_installation = grafana.synthetic_monitoring.Installation("smStackInstallation", stack_id=sm_stack_stack.id, metrics_publisher_key=sm_metrics_publish_access_policy_token.token, - opts=pulumi.ResourceOptions(provider=grafana["cloud"])) + opts = pulumi.ResourceOptions(provider=grafana["cloud"])) # Step 3: Interact with Synthetic Monitoring sm = grafana.Provider("sm", sm_access_token=sm_stack_installation.sm_access_token,