Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,18 @@

## Requirements

- [Terraform](https://www.terraform.io/downloads.html) 0.10.x
- [Go](https://golang.org/doc/install) 1.11 (to build the provider plugin)
- [Terraform](https://www.terraform.io/downloads.html) 1.0
- [Go](https://golang.org/doc/install) 1.25 (to build the provider plugin)

## Building The Provider

Clone repository to: `$GOPATH/src/github.com/scaleway/terraform-provider-scaleway`

```sh
$ mkdir -p $GOPATH/src/github.com/scaleway; cd $GOPATH/src/github.com/scaleway
$ git clone [email protected]:scaleway/terraform-provider-scaleway.git
```

Enter the provider directory and build the provider

```sh
$ cd $GOPATH/src/github.com/scaleway/terraform-provider-scaleway
$ make build
```

Expand Down
25 changes: 13 additions & 12 deletions internal/acctest/acctest.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package acctest

import (
"context"
"os"
"strconv"
"strings"
"testing"
"time"

"github.com/hashicorp/terraform-plugin-go/tfprotov5"
"github.com/hashicorp/terraform-plugin-mux/tf5muxserver"
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
"github.com/hashicorp/terraform-plugin-mux/tf6muxserver"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/env"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/meta"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/provider"
Expand All @@ -22,7 +21,7 @@ func PreCheck(_ *testing.T) {}
type TestTools struct {
T *testing.T
Meta *meta.Meta
ProviderFactories map[string]func() (tfprotov5.ProviderServer, error)
ProviderFactories map[string]func() (tfprotov6.ProviderServer, error)
Cleanup func()
}

Expand Down Expand Up @@ -66,14 +65,16 @@ func NewTestTools(t *testing.T) *TestTools {
return &TestTools{
T: t,
Meta: m,
ProviderFactories: map[string]func() (tfprotov5.ProviderServer, error){
"scaleway": func() (tfprotov5.ProviderServer, error) {
ctx := context.Background()
providers := provider.NewProviderList(&provider.Config{Meta: m})

muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...)
if err != nil {
return nil, err
ProviderFactories: map[string]func() (tfprotov6.ProviderServer, error){
"scaleway": func() (tfprotov6.ProviderServer, error) {
providers, errProvider := provider.NewProviderList(ctx, &provider.Config{Meta: m})
if errProvider != nil {
return nil, errProvider
}

muxServer, errMux := tf6muxserver.NewMuxServer(ctx, providers...)
if errMux != nil {
return nil, errMux
}

return muxServer.ProviderServer(), nil
Expand Down
21 changes: 12 additions & 9 deletions internal/acctest/fixtures.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package acctest
import (
"context"

"github.com/hashicorp/terraform-plugin-go/tfprotov5"
"github.com/hashicorp/terraform-plugin-mux/tf5muxserver"
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
"github.com/hashicorp/terraform-plugin-mux/tf6muxserver"
sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
"github.com/scaleway/scaleway-sdk-go/api/account/v3"
iam "github.com/scaleway/scaleway-sdk-go/api/iam/v1alpha1"
Expand All @@ -18,7 +18,7 @@ import (
// given project and API key as default profile configuration.
//
// This is useful to test resources that need to create resources in another project.
func FakeSideProjectProviders(ctx context.Context, tt *TestTools, project *account.Project, iamAPIKey *iam.APIKey) map[string]func() (tfprotov5.ProviderServer, error) {
func FakeSideProjectProviders(ctx context.Context, tt *TestTools, project *account.Project, iamAPIKey *iam.APIKey) map[string]func() (tfprotov6.ProviderServer, error) {
t := tt.T

metaSide, err := meta.NewMeta(ctx, &meta.Config{
Expand All @@ -31,13 +31,16 @@ func FakeSideProjectProviders(ctx context.Context, tt *TestTools, project *accou
})
require.NoError(t, err)

providers := map[string]func() (tfprotov5.ProviderServer, error){
"side": func() (tfprotov5.ProviderServer, error) {
providers := provider.NewProviderList(&provider.Config{Meta: metaSide})
providers := map[string]func() (tfprotov6.ProviderServer, error){
"side": func() (tfprotov6.ProviderServer, error) {
providers, errProvider := provider.NewProviderList(ctx, &provider.Config{Meta: metaSide})
if errProvider != nil {
return nil, errProvider
}

muxServer, err := tf5muxserver.NewMuxServer(ctx, providers...)
if err != nil {
return nil, err
muxServer, errMux := tf6muxserver.NewMuxServer(ctx, providers...)
if errMux != nil {
return nil, errMux
}

return muxServer.ProviderServer(), nil
Expand Down
27 changes: 20 additions & 7 deletions internal/provider/providers.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
package provider

import (
"context"

"github.com/hashicorp/terraform-plugin-framework/providerserver"
"github.com/hashicorp/terraform-plugin-go/tfprotov5"
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
"github.com/hashicorp/terraform-plugin-mux/tf5to6server"
)

func NewProviderList(config *Config) []func() tfprotov5.ProviderServer {
return []func() tfprotov5.ProviderServer{
// Provider using terraform-plugin-framework
providerserver.NewProtocol5(&ScalewayProvider{}),

// SDKProvider using terraform-plugin-sdk
func NewProviderList(ctx context.Context, config *Config) ([]func() tfprotov6.ProviderServer, error) {
// SDKProvider using terraform-plugin-sdk
upgradedSdkProvider, err := tf5to6server.UpgradeServer(
ctx,
SDKProvider(config)().GRPCProvider,
)
if err != nil {
return nil, err
}

return []func() tfprotov6.ProviderServer{
// Provider using terraform-plugin-framework
providerserver.NewProtocol6(&ScalewayProvider{}),

func() tfprotov6.ProviderServer {
return upgradedSdkProvider
},
}, nil
}
2 changes: 1 addition & 1 deletion internal/provider/providers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestMuxServer(t *testing.T) {
defer tt.Cleanup()

resource.Test(t, resource.TestCase{
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: `
Expand Down
8 changes: 4 additions & 4 deletions internal/services/account/project_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func TestAccDataSourceProject_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
isProjectDestroyed(tt),
),
Expand Down Expand Up @@ -62,7 +62,7 @@ func TestAccDataSourceProject_Default(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(`
Expand Down Expand Up @@ -106,7 +106,7 @@ func TestAccDataSourceProject_Extract(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: `data scaleway_account_project "project" {}`,
Expand All @@ -130,7 +130,7 @@ func TestAccDataSourceProject_List(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
isProjectDestroyed(tt),
),
Expand Down
4 changes: 2 additions & 2 deletions internal/services/account/project_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestAccProject_Basic(t *testing.T) {
defer tt.Cleanup()

resource.ParallelTest(t, resource.TestCase{
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: isProjectDestroyed(tt),
Steps: []resource.TestStep{
{
Expand Down Expand Up @@ -60,7 +60,7 @@ func TestAccProject_NoUpdate(t *testing.T) {
defer tt.Cleanup()

resource.ParallelTest(t, resource.TestCase{
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: isProjectDestroyed(tt),
Steps: []resource.TestStep{
{
Expand Down
8 changes: 4 additions & 4 deletions internal/services/applesilicon/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestAccServer_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: isServerDestroyed(tt),
Steps: []resource.TestStep{
{
Expand Down Expand Up @@ -71,7 +71,7 @@ func TestAccServer_EnableDisabledVPC(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: isServerDestroyed(tt),
Steps: []resource.TestStep{
{
Expand Down Expand Up @@ -126,7 +126,7 @@ func TestAccServer_EnableVPC(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: isServerDestroyed(tt),
Steps: []resource.TestStep{
{
Expand Down Expand Up @@ -271,7 +271,7 @@ func TestAccServer_Commitment(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: isServerDestroyed(tt),
Steps: []resource.TestStep{
{
Expand Down
2 changes: 1 addition & 1 deletion internal/services/autoscaling/instance_group_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestAccInstanceGroup_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: testAccCheckInstanceGroupDestroy(tt),
Steps: []resource.TestStep{
{
Expand Down
2 changes: 1 addition & 1 deletion internal/services/autoscaling/instance_policy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestAccInstancePolicy_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: testAccCheckInstancePolicyDestroy(tt),
Steps: []resource.TestStep{
{
Expand Down
4 changes: 2 additions & 2 deletions internal/services/autoscaling/instance_template_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestAccInstanceTemplate_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: testAccCheckInstanceTemplateDestroy(tt),
Steps: []resource.TestStep{
{
Expand Down Expand Up @@ -75,7 +75,7 @@ func TestAccInstanceTemplate_PrivateNetwork(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: testAccCheckInstanceTemplateDestroy(tt),
Steps: []resource.TestStep{
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestAccDataSourceAvailabilityZones_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: `
Expand Down
6 changes: 3 additions & 3 deletions internal/services/baremetal/offer_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func TestAccDataSourceOffer_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(`
Expand Down Expand Up @@ -70,7 +70,7 @@ func TestAccDataSourceOffer_SubscriptionPeriodHourly(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(`
Expand Down Expand Up @@ -120,7 +120,7 @@ func TestAccDataSourceOffer_SubscriptionPeriodMonthly(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(`
Expand Down
2 changes: 1 addition & 1 deletion internal/services/baremetal/option_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestAccDataSourceOption_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: baremetalchecks.CheckServerDestroy(tt),
Steps: []resource.TestStep{
{
Expand Down
2 changes: 1 addition & 1 deletion internal/services/baremetal/os_data_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestAccDataSourceOS_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: baremetalchecks.CheckServerDestroy(tt),
Steps: []resource.TestStep{
{
Expand Down
12 changes: 6 additions & 6 deletions internal/services/baremetal/partition_schema_source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func TestAccPartitionSchemaDataSource_Basic(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
baremetalchecks.CheckServerDestroy(tt),
),
Expand Down Expand Up @@ -98,7 +98,7 @@ func TestAccPartitionSchemaDataSource_WithoutExtraPart(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
baremetalchecks.CheckServerDestroy(tt),
),
Expand Down Expand Up @@ -165,7 +165,7 @@ func TestAccPartitionSchemaDataSource_WithoutSwapAndExtraPart(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
baremetalchecks.CheckServerDestroy(tt),
),
Expand Down Expand Up @@ -232,7 +232,7 @@ func TestAccPartitionSchemaDataSource_WithAlternateOffer(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
baremetalchecks.CheckServerDestroy(tt),
),
Expand Down Expand Up @@ -301,7 +301,7 @@ func TestAccPartitionSchemaDataSource_IncompatibleOS(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
baremetalchecks.CheckServerDestroy(tt),
),
Expand Down Expand Up @@ -363,7 +363,7 @@ func TestAccPartitionSchemaDataSource_IncompatibleOffer(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProtoV5ProviderFactories: tt.ProviderFactories,
ProtoV6ProviderFactories: tt.ProviderFactories,
CheckDestroy: resource.ComposeTestCheckFunc(
baremetalchecks.CheckServerDestroy(tt),
),
Expand Down
Loading
Loading