Skip to content

Commit ac827bb

Browse files
committed
feat: support IAM policies
Signed-off-by: Nicolas FOURNIER <[email protected]>
1 parent ae5cc1b commit ac827bb

File tree

71 files changed

+1445
-222
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1445
-222
lines changed

Diff for: go.mod

+2-4
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ require (
77
github.com/hashicorp/go-version v1.6.0
88
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0
99
github.com/mitchellh/go-homedir v1.1.0
10-
github.com/ovh/go-ovh v1.3.0
10+
github.com/ovh/go-ovh v1.4.1
1111
github.com/ybriffa/rfc3339 v0.0.0-20220203155318-1789e3fd6e70
1212
golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2
13-
gopkg.in/ini.v1 v1.57.0
13+
gopkg.in/ini.v1 v1.67.0
1414
gopkg.in/yaml.v3 v3.0.1
1515
)
1616

@@ -21,7 +21,6 @@ require (
2121
github.com/davecgh/go-spew v1.1.1 // indirect
2222
github.com/fatih/color v1.13.0 // indirect
2323
github.com/golang/protobuf v1.5.2 // indirect
24-
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect
2524
github.com/hashicorp/errwrap v1.0.0 // indirect
2625
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
2726
github.com/hashicorp/go-hclog v1.2.1 // indirect
@@ -46,7 +45,6 @@ require (
4645
github.com/mitchellh/mapstructure v1.5.0 // indirect
4746
github.com/mitchellh/reflectwalk v1.0.2 // indirect
4847
github.com/oklog/run v1.0.0 // indirect
49-
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 // indirect
5048
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
5149
github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
5250
github.com/vmihailenco/tagparser v0.1.1 // indirect

Diff for: go.sum

+7-16
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,6 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
8585
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
8686
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
8787
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
88-
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
89-
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg=
90-
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
9188
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
9289
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
9390
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -136,12 +133,11 @@ github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1
136133
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
137134
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
138135
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
136+
github.com/jarcoal/httpmock v1.3.0 h1:2RJ8GP0IIaWwcC9Fp2BmVi8Kog3v2Hn7VXM3fTd+nuc=
139137
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
140138
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
141139
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
142140
github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE=
143-
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
144-
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
145141
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck=
146142
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
147143
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -161,6 +157,7 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb
161157
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
162158
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
163159
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
160+
github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g=
164161
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
165162
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
166163
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
@@ -177,8 +174,8 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA
177174
github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758=
178175
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
179176
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
180-
github.com/ovh/go-ovh v1.3.0 h1:mvZaddk4E4kLcXhzb+cxBsMPYp2pHqiQpWYkInsuZPQ=
181-
github.com/ovh/go-ovh v1.3.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA=
177+
github.com/ovh/go-ovh v1.4.1 h1:VBGa5wMyQtTP7Zb+w97zRCh9sLtM/2YKRyy+MEJmWaM=
178+
github.com/ovh/go-ovh v1.4.1/go.mod h1:6bL6pPyUT7tBfI0pqOegJgRjgjuO+mOo+MyXd1EEC0M=
182179
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
183180
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
184181
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -189,20 +186,15 @@ github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdk
189186
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
190187
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
191188
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
192-
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
193-
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PXuP99tXNrhbq2BaPz9B+jNAvH1JPQQpG/9GCXY=
194-
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
195-
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
196-
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
197189
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
198190
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
199191
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
200192
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
201193
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
202194
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
203195
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
204-
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
205196
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
197+
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
206198
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
207199
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
208200
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
@@ -293,7 +285,6 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
293285
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
294286
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
295287
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
296-
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
297288
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
298289
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
299290
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -337,8 +328,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
337328
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
338329
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
339330
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
340-
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
341-
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
331+
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
332+
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
342333
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
343334
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
344335
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

Diff for: ovh/config.go

+24-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
var providerVersion, providerCommit string
1515

1616
type Config struct {
17+
Account string
18+
Plate string
1719
Endpoint string
1820
ApplicationKey string
1921
ApplicationSecret string
@@ -63,15 +65,21 @@ func (c *Config) loadAndValidate() error {
6365
}
6466

6567
if !c.authenticated {
66-
var cred OvhAuthCurrentCredential
67-
if err := c.OVHClient.Get("/auth/currentCredential", &cred); err != nil {
68+
var me MeResponse
69+
if err := c.OVHClient.Get("/me", &me); err != nil {
6870
c.authFailed = fmt.Errorf("OVH client seems to be misconfigured: %q\n", err)
6971
return c.authFailed
7072
}
7173

7274
log.Printf("[DEBUG] Logged in on OVH API")
75+
c.Account = me.Nichandle
7376
c.authenticated = true
7477
}
78+
79+
if c.Plate == "" {
80+
c.Plate = plateFromEndpoint(c.Endpoint)
81+
}
82+
7583
return nil
7684
}
7785

@@ -106,3 +114,17 @@ func (c *Config) load() error {
106114

107115
return nil
108116
}
117+
118+
var plateMapping map[string]string = map[string]string{
119+
"ovh-eu": "eu",
120+
"ovh-ca": "ca",
121+
"ovh-us": "us",
122+
"kimsufi-eu": "eu",
123+
"kimsufi-ca": "ca",
124+
"soyoustart-eu": "eu",
125+
"soyoustart-ca": "ca",
126+
}
127+
128+
func plateFromEndpoint(endpoint string) string {
129+
return plateMapping[endpoint]
130+
}

Diff for: ovh/data_dbaas_logs_cluster.go

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"net/url"
77

88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
910
)
1011

1112
func dataSourceDbaasLogsCluster() *schema.Resource {
@@ -20,6 +21,10 @@ func dataSourceDbaasLogsCluster() *schema.Resource {
2021
Required: true,
2122
},
2223
// Computed
24+
"urn": {
25+
Type: schema.TypeString,
26+
Computed: true,
27+
},
2328
"cluster_type": {
2429
Type: schema.TypeString,
2530
Description: "Cluster type",
@@ -114,6 +119,7 @@ func dataSourceDbaasLogsClusterRead(d *schema.ResourceData, meta interface{}) er
114119
}
115120

116121
d.SetId(cluster_id)
122+
d.Set("urn", helpers.ServiceURN(config.Plate, "ldp", serviceName))
117123

118124
endpoint := fmt.Sprintf(
119125
"/dbaas/logs/%s/cluster/%s",

Diff for: ovh/data_dedicated_ceph.go

+5
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ func dataSourceDedicatedCeph() *schema.Resource {
2020
Type: schema.TypeString,
2121
},
2222
},
23+
"urn": {
24+
Type: schema.TypeString,
25+
Computed: true,
26+
},
2327
"ceph_version": {
2428
Type: schema.TypeString,
2529
Optional: true,
@@ -84,6 +88,7 @@ func dataSourceDedicatedCephRead(d *schema.ResourceData, meta interface{}) error
8488
}
8589
log.Printf("[DEBUG] CEPH is %v", ceph.CephMonitors)
8690
d.SetId(ceph.ServiceName)
91+
d.Set("urn", helpers.ServiceURN(config.Plate, "dedicatedCeph", ceph.ServiceName))
8792
d.Set("service_name", ceph.ServiceName)
8893
d.Set("ceph_mons", ceph.CephMonitors)
8994
d.Set("ceph_version", ceph.CephVersion)

Diff for: ovh/data_dedicated_nasha.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package ovh
33
import (
44
"context"
55
"fmt"
6-
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
76
"net/url"
87

8+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
10+
911
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1012
)
1113

@@ -20,6 +22,10 @@ func dataSourceDedicatedNasha() *schema.Resource {
2022
},
2123

2224
// Computed
25+
"urn": {
26+
Type: schema.TypeString,
27+
Computed: true,
28+
},
2329
"can_create_partition": {
2430
Type: schema.TypeBool,
2531
Computed: true,
@@ -86,6 +92,7 @@ func dataSourceDedicatedNashaRead(c context.Context, d *schema.ResourceData, met
8692
}
8793

8894
d.SetId(ds.ServiceName)
95+
d.Set("urn", helpers.ServiceURN(config.Plate, "nasHA", ds.ServiceName))
8996
d.Set("service_name", ds.ServiceName)
9097
d.Set("monitored", ds.Monitored)
9198
d.Set("zpool_size", ds.ZpoolSize)

Diff for: ovh/data_dedicated_server.go

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"net/url"
77

88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
910
)
1011

1112
func dataSourceDedicatedServer() *schema.Resource {
@@ -18,6 +19,10 @@ func dataSourceDedicatedServer() *schema.Resource {
1819
},
1920

2021
// Computed
22+
"urn": {
23+
Type: schema.TypeString,
24+
Computed: true,
25+
},
2126
"boot_id": {
2227
Type: schema.TypeInt,
2328
Computed: true,
@@ -196,6 +201,7 @@ func dataSourceDedicatedServerRead(d *schema.ResourceData, meta interface{}) err
196201
}
197202

198203
d.SetId(ds.Name)
204+
d.Set("urn", helpers.ServiceURN(config.Plate, "dedicatedServer", ds.Name))
199205
d.Set("boot_id", ds.BootId)
200206
d.Set("commercial_range", ds.CommercialRange)
201207
d.Set("datacenter", ds.Datacenter)

Diff for: ovh/data_domain_zone.go

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55

66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
78
)
89

910
func dataSourceDomainZone() *schema.Resource {
@@ -16,6 +17,10 @@ func dataSourceDomainZone() *schema.Resource {
1617
},
1718

1819
// Computed
20+
"urn": {
21+
Type: schema.TypeString,
22+
Computed: true,
23+
},
1924
"has_dns_anycast": {
2025
Type: schema.TypeBool,
2126
Computed: true,
@@ -55,5 +60,7 @@ func dataSourceDomainZoneRead(d *schema.ResourceData, meta interface{}) error {
5560
d.Set("last_update", dz.LastUpdate)
5661
d.Set("name_servers", dz.NameServers)
5762

63+
d.Set("urn", helpers.ServiceURN(config.Plate, "domain", zoneName))
64+
5865
return nil
5966
}

Diff for: ovh/data_hosting_privatedatabase.go

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"net/url"
66

77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
"github.com/ovh/terraform-provider-ovh/ovh/helpers"
89
)
910

1011
func dataSourceHostingPrivateDatabase() *schema.Resource {
@@ -17,6 +18,10 @@ func dataSourceHostingPrivateDatabase() *schema.Resource {
1718
},
1819

1920
// Computed
21+
"urn": {
22+
Type: schema.TypeString,
23+
Computed: true,
24+
},
2025
"cpu": {
2126
Type: schema.TypeInt,
2227
Computed: true,
@@ -138,6 +143,7 @@ func dataSourceHostingPrivateDatabaseRead(d *schema.ResourceData, meta interface
138143
}
139144
}
140145
d.SetId(ds.ServiceName)
146+
d.Set("urn", helpers.ServiceURN(config.Plate, "webCloudDatabases", ds.ServiceName))
141147

142148
return nil
143149
}

Diff for: ovh/data_iam_policies.go

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package ovh
2+
3+
import (
4+
"context"
5+
"sort"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/ovh/terraform-provider-ovh/ovh/helpers/hashcode"
10+
)
11+
12+
func dataSourceIamPolicies() *schema.Resource {
13+
return &schema.Resource{
14+
Schema: map[string]*schema.Schema{
15+
"policies": {
16+
Type: schema.TypeSet,
17+
Computed: true,
18+
Elem: &schema.Schema{
19+
Type: schema.TypeString,
20+
},
21+
},
22+
},
23+
ReadContext: datasourceIamPoliciesRead,
24+
}
25+
}
26+
27+
func datasourceIamPoliciesRead(ctx context.Context, d *schema.ResourceData, meta any) diag.Diagnostics {
28+
config := meta.(*Config)
29+
30+
var policies []IamPolicy
31+
err := config.OVHClient.GetWithContext(ctx, "/v2/iam/policy", &policies)
32+
if err != nil {
33+
return diag.FromErr(err)
34+
}
35+
36+
var polIDs []string
37+
for _, p := range policies {
38+
polIDs = append(polIDs, p.Id)
39+
}
40+
41+
d.Set("policies", polIDs)
42+
43+
sort.Strings(polIDs)
44+
d.SetId(hashcode.Strings(polIDs))
45+
return nil
46+
}

0 commit comments

Comments
 (0)