Skip to content

Commit 1d7349d

Browse files
authored
Merge branch 'master' into fix/cockpit_add_grafana_url_manual_creation
2 parents e3f24f6 + 980722b commit 1d7349d

File tree

70 files changed

+57261
-36140
lines changed

Some content is hidden

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

70 files changed

+57261
-36140
lines changed

docs/resources/instance_server.md

+16-1
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,20 @@ resource "scaleway_instance_server" "from_snapshot" {
163163
}
164164
```
165165

166+
#### Using Scaleway Block Storage (SBS) volume
167+
168+
```terraform
169+
resource "scaleway_instance_server" "server" {
170+
type = "PLAY2-MICRO"
171+
image = "ubuntu_jammy"
172+
root_volume {
173+
volume_type = "sbs_volume"
174+
sbs_iops = 15000
175+
size_in_gb = 50
176+
}
177+
}
178+
```
179+
166180
## Argument Reference
167181

168182
The following arguments are supported:
@@ -198,8 +212,9 @@ To retrieve more information by label please use: ```scw marketplace image get l
198212
To find the right size use [this endpoint](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances) and
199213
check the `volumes_constraint.{min|max}_size` (in bytes) for your `commercial_type`.
200214
Updates to this field will recreate a new resource.
201-
- `volume_type` - (Optional) Volume type of root volume, can be `b_ssd` or `l_ssd`, default value depends on server type
215+
- `volume_type` - (Optional) Volume type of root volume, can be `b_ssd`, `l_ssd` or `sbs_volume`, default value depends on server type
202216
- `delete_on_termination` - (Defaults to `true`) Forces deletion of the root volume on instance termination.
217+
- `sbs_iops` - (Optional) Choose IOPS of your sbs volume, has to be used with `sbs_volume` for root volume type.
203218

204219
~> **Important:** Updates to `root_volume.size_in_gb` will be ignored after the creation of the server.
205220

docs/resources/tem_domain.md

+17
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,21 @@ resource "scaleway_domain_record" "dmarc" {
5858
}
5959
```
6060

61+
### Automatically Configure DNS Settings for Your Domain
62+
63+
```terraform
64+
variable "domain_name" {
65+
type = string
66+
}
67+
68+
resource "scaleway_tem_domain" "main" {
69+
name = var.domain_name
70+
accept_tos = true
71+
autoconfig = true
72+
}
73+
74+
```
75+
6176
### Configuring GitLab Project Variables
6277

6378
```terraform
@@ -101,6 +116,8 @@ The following arguments are supported:
101116

102117
- `project_id` - (Defaults to [provider](../index.md#project_id) `project_id`) The ID of the project the domain is associated with.
103118

119+
- `autoconfig` - (Defaults to `false`) Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.
120+
104121
## Attributes Reference
105122

106123
In addition to all arguments above, the following attributes are exported:

internal/services/account/helpers.go

+16
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package account
22

33
import (
4+
"errors"
5+
46
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
57
accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
8+
"github.com/scaleway/scaleway-sdk-go/scw"
69
"github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
710
"github.com/scaleway/terraform-provider-scaleway/v2/internal/types"
811
)
@@ -25,3 +28,16 @@ func GetOrganizationID(m interface{}, d *schema.ResourceData) *string {
2528

2629
return nil
2730
}
31+
32+
func isProjectNotUsableError(err error) bool {
33+
if err == nil {
34+
return false
35+
}
36+
37+
responseError := &scw.PreconditionFailedError{}
38+
if errors.As(err, &responseError) && responseError.Precondition == "resource_not_usable" {
39+
return true
40+
}
41+
42+
return false
43+
}

internal/services/account/project.go

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

66
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
89
accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
910
"github.com/scaleway/scaleway-sdk-go/scw"
@@ -131,10 +132,20 @@ func resourceAccountProjectUpdate(ctx context.Context, d *schema.ResourceData, m
131132
func resourceAccountProjectDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
132133
accountAPI := NewProjectAPI(m)
133134

134-
err := accountAPI.DeleteProject(&accountSDK.ProjectAPIDeleteProjectRequest{
135-
ProjectID: d.Id(),
136-
}, scw.WithContext(ctx))
137-
if err != nil && !httperrors.Is404(err) {
135+
err := retry.RetryContext(ctx, d.Timeout(schema.TimeoutDelete), func() *retry.RetryError {
136+
err := accountAPI.DeleteProject(&accountSDK.ProjectAPIDeleteProjectRequest{
137+
ProjectID: d.Id(),
138+
}, scw.WithContext(ctx))
139+
if err != nil && !httperrors.Is404(err) {
140+
if isProjectNotUsableError(err) {
141+
return retry.RetryableError(err)
142+
}
143+
144+
return retry.NonRetryableError(err)
145+
}
146+
return nil
147+
})
148+
if err != nil {
138149
return diag.FromErr(err)
139150
}
140151

internal/services/instance/helpers_instance_block.go

+15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
77
block "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
88
"github.com/scaleway/scaleway-sdk-go/api/instance/v1"
9+
"github.com/scaleway/scaleway-sdk-go/api/marketplace/v2"
910
"github.com/scaleway/scaleway-sdk-go/scw"
1011
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/zonal"
1112
"github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
@@ -29,6 +30,10 @@ type UnknownVolume struct {
2930
ServerID *string
3031
Boot *bool
3132

33+
// Iops is set for Block volume only, use IsBlockVolume
34+
// Can be nil if not available in the Block API.
35+
Iops *uint32
36+
3237
InstanceVolumeType instance.VolumeVolumeType
3338
}
3439

@@ -112,6 +117,9 @@ func (api *BlockAndInstanceAPI) GetUnknownVolume(req *GetUnknownVolumeRequest, o
112117
Size: &blockVolume.Size,
113118
InstanceVolumeType: instance.VolumeVolumeTypeSbsVolume,
114119
}
120+
if blockVolume.Specs != nil {
121+
vol.Iops = blockVolume.Specs.PerfIops
122+
}
115123
for _, ref := range blockVolume.References {
116124
if ref.ProductResourceType == "instance_server" {
117125
vol.ServerID = &ref.ProductResourceID
@@ -152,3 +160,10 @@ func instanceAndBlockAPIWithZoneAndID(m interface{}, zonedID string) (*BlockAndI
152160
blockAPI: blockAPI,
153161
}, zone, ID, nil
154162
}
163+
164+
func volumeTypeToMarketplaceFilter(volumeType any) marketplace.LocalImageType {
165+
if volumeType != nil && instance.VolumeVolumeType(volumeType.(string)) == instance.VolumeVolumeTypeSbsVolume {
166+
return marketplace.LocalImageTypeInstanceSbs
167+
}
168+
return marketplace.LocalImageTypeInstanceLocal
169+
}

0 commit comments

Comments
 (0)