Skip to content

Commit bbee6c3

Browse files
authored
feat(interlink): add partner datasources (#3874)
* feat(interlink): add partner datasources * fix * docs * fixes
1 parent 3ad4137 commit bbee6c3

21 files changed

Lines changed: 1196 additions & 0 deletions

.github/workflows/acceptance-tests.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ jobs:
3131
- iam
3232
- inference
3333
- instance
34+
- interlink
3435
- iot
3536
- ipam
3637
- jobs

.github/workflows/nightly.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ jobs:
3333
- iam
3434
- inference
3535
- instance
36+
- interlink
3637
- iot
3738
- ipam
3839
- jobs
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
subcategory: "Interlink"
3+
page_title: "Scaleway: scaleway_interlink_partner"
4+
---
5+
6+
# scaleway_interlink_partner (Data Source)
7+
8+
Gets information about an Interlink Partner.
9+
10+
A partner is an organization that provides shared connections at PoPs, allowing you to create hosted links without owning physical infrastructure.
11+
12+
## Example Usage
13+
14+
```terraform
15+
# Retrieve a partner by its ID
16+
data "scaleway_interlink_partner" "by_id" {
17+
partner_id = "fr-par/11111111-1111-1111-1111-111111111111"
18+
}
19+
```
20+
21+
```terraform
22+
# Retrieve a partner by name
23+
data "scaleway_interlink_partner" "by_name" {
24+
name = "FreePro"
25+
}
26+
```
27+
28+
29+
30+
## Argument Reference
31+
32+
- `partner_id` - (Optional) The ID of the partner. Can be a plain UUID or a regional ID. Conflicts with `name`.
33+
- `name` - (Optional) The name of the partner to filter for. Conflicts with `partner_id`.
34+
- `region` - (Defaults to [provider](../index.md#region) `region`) The [region](../guides/regions_and_zones.md#regions) in which the partner operates.
35+
36+
## Attributes Reference
37+
38+
In addition to all arguments above, the following attributes are exported:
39+
40+
- `id` - The ID of the partner.
41+
- `contact_email` - Contact email address of the partner.
42+
- `logo_url` - URL of the partner's logo.
43+
- `portal_url` - URL of the partner's portal.
44+
- `created_at` - Creation date of the partner.
45+
- `updated_at` - Last update date of the partner.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
subcategory: "Interlink"
3+
page_title: "Scaleway: scaleway_interlink_partners"
4+
---
5+
6+
# scaleway_interlink_partners (Data Source)
7+
8+
Gets information about multiple Interlink Partners.
9+
10+
A partner is an organization that provides shared connections at PoPs. Use this data source to list and filter available partners for creating hosted links.
11+
12+
## Example Usage
13+
14+
```terraform
15+
# List all partners in a region
16+
data "scaleway_interlink_partners" "all" {
17+
region = "fr-par"
18+
}
19+
20+
# List partners available at specific PoPs
21+
data "scaleway_interlink_partners" "at_pops" {
22+
pop_ids = [
23+
data.scaleway_interlink_pop.main.id,
24+
]
25+
}
26+
```
27+
28+
29+
30+
## Argument Reference
31+
32+
- `pop_ids` - (Optional) Filter for partners present (offering a connection) in one of these PoPs.
33+
- `region` - (Defaults to [provider](../index.md#region) `region`) The [region](../guides/regions_and_zones.md#regions) to list partners from.
34+
35+
## Attributes Reference
36+
37+
- `partners` - List of partners matching the filters. Each entry contains:
38+
- `id` - ID of the partner.
39+
- `name` - Name of the partner.
40+
- `contact_email` - Contact email address.
41+
- `logo_url` - URL of the partner's logo.
42+
- `portal_url` - URL of the partner's portal.
43+
- `created_at` - Creation date.
44+
- `updated_at` - Last update date.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Retrieve a partner by its ID
2+
data "scaleway_interlink_partner" "by_id" {
3+
partner_id = "fr-par/11111111-1111-1111-1111-111111111111"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Retrieve a partner by name
2+
data "scaleway_interlink_partner" "by_name" {
3+
name = "FreePro"
4+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# List all partners in a region
2+
data "scaleway_interlink_partners" "all" {
3+
region = "fr-par"
4+
}
5+
6+
# List partners available at specific PoPs
7+
data "scaleway_interlink_partners" "at_pops" {
8+
pop_ids = [
9+
data.scaleway_interlink_pop.main.id,
10+
]
11+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Gets information about an Interlink Partner.
2+
3+
A partner is an organization that provides shared connections at PoPs, allowing you to create hosted links without owning physical infrastructure.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Gets information about multiple Interlink Partners.
2+
3+
A partner is an organization that provides shared connections at PoPs. Use this data source to list and filter available partners for creating hosted links.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package interlink
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
5+
interlink "github.com/scaleway/scaleway-sdk-go/api/interlink/v1beta1"
6+
"github.com/scaleway/scaleway-sdk-go/scw"
7+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
8+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
9+
)
10+
11+
func interlinkAPIWithRegion(d *schema.ResourceData, m any) (*interlink.API, scw.Region, error) {
12+
interlinkAPI := interlink.NewAPI(meta.ExtractScwClient(m))
13+
14+
region, err := meta.ExtractRegion(d, m)
15+
if err != nil {
16+
return nil, "", err
17+
}
18+
19+
return interlinkAPI, region, err
20+
}
21+
22+
func NewAPIWithRegionAndID(m any, id string) (*interlink.API, scw.Region, string, error) {
23+
interlinkAPI := interlink.NewAPI(meta.ExtractScwClient(m))
24+
25+
region, ID, err := regional.ParseID(id)
26+
if err != nil {
27+
return nil, "", "", err
28+
}
29+
30+
return interlinkAPI, region, ID, err
31+
}

0 commit comments

Comments
 (0)