Skip to content

Commit 3dc4fed

Browse files
authored
Ft/region adjustment service enablement (#718)
* feat(serviceenablement): Region adjustment Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> * chore(ske): Remove deprecated ske project This resource was removed on October 10th 2024. Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> --------- Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de>
1 parent 646c15d commit 3dc4fed

File tree

15 files changed

+163
-514
lines changed

15 files changed

+163
-514
lines changed

docs/data-sources/ske_cluster.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ data "stackit_ske_cluster" "example" {
2727
- `name` (String) The cluster name.
2828
- `project_id` (String) STACKIT project ID to which the cluster is associated.
2929

30+
### Optional
31+
32+
- `region` (String) The resource region. If not defined, the provider region is used.
33+
3034
### Read-Only
3135

3236
- `allow_privileged_containers` (Boolean, Deprecated) DEPRECATED as of Kubernetes 1.25+

docs/data-sources/ske_project.md

Lines changed: 0 additions & 30 deletions
This file was deleted.

docs/resources/ske_cluster.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,12 @@ Deprecated as of Kubernetes 1.25 and later
5959
- `kubernetes_version_min` (String) The minimum Kubernetes version. This field will be used to set the minimum kubernetes version on creation/update of the cluster. If unset, the latest supported Kubernetes version will be used. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html). To get the current kubernetes version being used for your cluster, use the read-only `kubernetes_version_used` field.
6060
- `maintenance` (Attributes) A single maintenance block as defined below. (see [below for nested schema](#nestedatt--maintenance))
6161
- `network` (Attributes) Network block as defined below. (see [below for nested schema](#nestedatt--network))
62+
- `region` (String) The resource region. If not defined, the provider region is used.
6263

6364
### Read-Only
6465

6566
- `egress_address_ranges` (List of String) The outgoing network ranges (in CIDR notation) of traffic originating from workload on the cluster.
66-
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`name`".
67+
- `id` (String) Terraform's internal resource ID. It is structured as "`project_id`,`region`,`name`".
6768
- `kubernetes_version_used` (String) Full Kubernetes version used. For example, if 1.22 was set in `kubernetes_version_min`, this value may result to 1.22.15. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html).
6869

6970
<a id="nestedatt--node_pools"></a>

docs/resources/ske_project.md

Lines changed: 0 additions & 30 deletions
This file was deleted.

examples/data-sources/stackit_ske_project/data-source.tf

Lines changed: 0 additions & 3 deletions
This file was deleted.

examples/resources/stackit_ske_project/resource.tf

Lines changed: 0 additions & 3 deletions
This file was deleted.

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ require (
3030
github.com/stackitcloud/stackit-sdk-go/services/serverbackup v0.6.0
3131
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v0.5.0
3232
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.6.0
33-
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v0.5.0
33+
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.0.0
3434
github.com/stackitcloud/stackit-sdk-go/services/ske v0.22.0
3535
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.0.0
3636
github.com/teambition/rrule-go v1.8.2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,8 @@ github.com/stackitcloud/stackit-sdk-go/services/serverupdate v0.5.0 h1:TMUxDh8XG
191191
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v0.5.0/go.mod h1:giHnHz3kHeLY8Av9MZLsyJlaTXYz+BuGqdP/SKB5Vo0=
192192
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.6.0 h1:y+XzJcntHJ7M+IWWvAUkiVFA8op+jZxwHs3ktW2aLoA=
193193
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.6.0/go.mod h1:J/Wa67cbDI1wAyxib9PiEbNqGfIoFUH+DSLueVazQx8=
194-
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v0.5.0 h1:QG+rGBHsyXOlJ3ZIeOgExGqu9PoTlGY1rltW/VpG6lw=
195-
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v0.5.0/go.mod h1:16dOVT052cMuHhUJ3NIcPuY7TrpCr9QlxmvvfjLZubA=
194+
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.0.0 h1:Xxd5KUSWRt7FytnNWClLEa0n9GM6e5xAKo835ODSpAM=
195+
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.0.0/go.mod h1:EMqjiq/72WKXSwnJGLpumUJS4Uwlyhg5vtNg7qWoGtc=
196196
github.com/stackitcloud/stackit-sdk-go/services/ske v0.22.0 h1:3KUVls8zXsbT2tOYRSHyp3/l0Kpjl4f3INmQKYTe65Y=
197197
github.com/stackitcloud/stackit-sdk-go/services/ske v0.22.0/go.mod h1:63IvXpBJTIVONAnGPSDo0sRJ+6n6tzO918OLqfYBxto=
198198
github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex v1.0.0 h1:RYJO0rZea9+sxVfaJDWRo2zgfKNgiUcA5c0nbvZURiU=

stackit/internal/services/ske/cluster/datasource.go

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
1515
"github.com/stackitcloud/stackit-sdk-go/services/ske"
1616
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
17+
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/utils"
1718
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"
1819
)
1920

@@ -29,7 +30,8 @@ func NewClusterDataSource() datasource.DataSource {
2930

3031
// clusterDataSource is the data source implementation.
3132
type clusterDataSource struct {
32-
client *ske.APIClient
33+
client *ske.APIClient
34+
providerData core.ProviderData
3335
}
3436

3537
// Metadata returns the data source type name.
@@ -44,23 +46,24 @@ func (r *clusterDataSource) Configure(ctx context.Context, req datasource.Config
4446
return
4547
}
4648

47-
providerData, ok := req.ProviderData.(core.ProviderData)
49+
var ok bool
50+
r.providerData, ok = req.ProviderData.(core.ProviderData)
4851
if !ok {
4952
core.LogAndAddError(ctx, &resp.Diagnostics, "Error configuring API client", fmt.Sprintf("Expected configure type stackit.ProviderData, got %T", req.ProviderData))
5053
return
5154
}
5255

5356
var apiClient *ske.APIClient
5457
var err error
55-
if providerData.SKECustomEndpoint != "" {
58+
if r.providerData.SKECustomEndpoint != "" {
5659
apiClient, err = ske.NewAPIClient(
57-
config.WithCustomAuth(providerData.RoundTripper),
58-
config.WithEndpoint(providerData.SKECustomEndpoint),
60+
config.WithCustomAuth(r.providerData.RoundTripper),
61+
config.WithEndpoint(r.providerData.SKECustomEndpoint),
5962
)
6063
} else {
6164
apiClient, err = ske.NewAPIClient(
62-
config.WithCustomAuth(providerData.RoundTripper),
63-
config.WithRegion(providerData.GetRegion()),
65+
config.WithCustomAuth(r.providerData.RoundTripper),
66+
config.WithRegion(r.providerData.GetRegion()),
6467
)
6568
}
6669

@@ -319,6 +322,11 @@ func (r *clusterDataSource) Schema(_ context.Context, _ datasource.SchemaRequest
319322
},
320323
},
321324
},
325+
"region": schema.StringAttribute{
326+
// the region cannot be found, so it has to be passed
327+
Optional: true,
328+
Description: "The resource region. If not defined, the provider region is used.",
329+
},
322330
},
323331
}
324332
}
@@ -334,8 +342,15 @@ func (r *clusterDataSource) Read(ctx context.Context, req datasource.ReadRequest
334342

335343
projectId := state.ProjectId.ValueString()
336344
name := state.Name.ValueString()
345+
var region string
346+
if utils.IsUndefined(state.Region) {
347+
region = r.providerData.GetRegion()
348+
} else {
349+
region = state.Region.ValueString()
350+
}
337351
ctx = tflog.SetField(ctx, "project_id", projectId)
338352
ctx = tflog.SetField(ctx, "name", name)
353+
ctx = tflog.SetField(ctx, "region", region)
339354
clusterResp, err := r.client.GetCluster(ctx, projectId, name).Execute()
340355
if err != nil {
341356
oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped
@@ -346,7 +361,7 @@ func (r *clusterDataSource) Read(ctx context.Context, req datasource.ReadRequest
346361
return
347362
}
348363

349-
err = mapFields(ctx, clusterResp, &state)
364+
err = mapFields(ctx, clusterResp, &state, region)
350365
if err != nil {
351366
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading cluster", fmt.Sprintf("Processing API payload: %v", err))
352367
return

0 commit comments

Comments
 (0)