Skip to content

Commit

Permalink
Merge pull request #138 from Scalr/feature/SCALRCORE-21901 into epic/…
Browse files Browse the repository at this point in the history
…SCALRCORE-17959

SCALRCORE-21901 Scalr Provider > Finalize AWS provider configuration
  • Loading branch information
DayS1eeper committed Jun 8, 2022
2 parents 3d59018 + f1df2d2 commit 204f07e
Show file tree
Hide file tree
Showing 8 changed files with 291 additions and 202 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/default.yml
Expand Up @@ -54,6 +54,10 @@ jobs:
env:
SCALR_HOSTNAME: ${{ steps.create.outputs.hostname }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TEST_AWS_ACCESS_KEY: ${{ secrets.TEST_AWS_ACCESS_KEY }}
TEST_AWS_SECRET_KEY: ${{ secrets.TEST_AWS_SECRET_KEY }}
TEST_AWS_ROLE_ARN: ${{ secrets.TEST_AWS_ROLE_ARN }}
TEST_AWS_EXTERNAL_ID: ${{ secrets.TEST_AWS_EXTERNAL_ID }}
run: make testacc
- name: Install goveralls
env:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/upstream.yml
Expand Up @@ -39,6 +39,10 @@ jobs:
env:
SCALR_HOSTNAME: ${{ steps.create.outputs.hostname }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TEST_AWS_ACCESS_KEY: ${{ secrets.TEST_AWS_ACCESS_KEY }}
TEST_AWS_SECRET_KEY: ${{ secrets.TEST_AWS_SECRET_KEY }}
TEST_AWS_ROLE_ARN: ${{ secrets.TEST_AWS_ROLE_ARN }}
TEST_AWS_EXTERNAL_ID: ${{ secrets.TEST_AWS_EXTERNAL_ID }}
run: make testacc
- name: Delete container
id: delete
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -5,7 +5,7 @@ require (
github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce
github.com/hashicorp/terraform-plugin-sdk v1.17.2
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734
github.com/scalr/go-scalr v0.0.0-20220608123910-33a0d7a3eecc
github.com/scalr/go-scalr v0.0.0-20220608124001-8936d4d98f86
)

require (
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Expand Up @@ -300,8 +300,8 @@ github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6D
github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/scalr/go-scalr v0.0.0-20220608123910-33a0d7a3eecc h1:Du4s+lkdhf4P3LhK0V6thdAOu3fbLNXWwJCxspp/ej0=
github.com/scalr/go-scalr v0.0.0-20220608123910-33a0d7a3eecc/go.mod h1:xMnwfer9UxugeNITZjTpQBwQ/4bw6/JdyDLpGdmyorE=
github.com/scalr/go-scalr v0.0.0-20220608124001-8936d4d98f86 h1:0ziZdhPEalwKqOcq4Kf+t5NjXyJXK6M0NHu3nLQmUQA=
github.com/scalr/go-scalr v0.0.0-20220608124001-8936d4d98f86/go.mod h1:xMnwfer9UxugeNITZjTpQBwQ/4bw6/JdyDLpGdmyorE=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
Expand Down
102 changes: 40 additions & 62 deletions scalr/data_source_scalr_provider_configuration_test.go
Expand Up @@ -7,88 +7,66 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)

func TestAccScalrProviderConfigurationDataSource_name(t *testing.T) {
func TestAccScalrProviderConfigurationDataSource(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccScalrProviderConfigurationAwsDataSourceInitConfig, // depends_on works improperly with data sources
Config: testAccScalrProviderConfigurationDataSourceInitConfig, // depends_on works improperly with data sources
},
{
Config: testAccScalrProviderConfigurationAwsDataSourceConfig,
Config: testAccScalrProviderConfigurationDataSourceConfig,
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckEqualID("data.scalr_provider_configuration.aws", "scalr_provider_configuration.aws"),
testAccCheckEqualID("data.scalr_provider_configuration.kubernetes", "scalr_provider_configuration.kubernetes"),
testAccCheckEqualID("data.scalr_provider_configuration.consul", "scalr_provider_configuration.consul"),
),
},
{
Config: testAccScalrProviderConfigurationAwsDataSourceInitConfig,
},
},
})
}
func TestAccScalrProviderConfigurationDataSource_provider_name(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccScalrProviderConfigurationGoogleDataSourceInitConfig,
},
{
Config: testAccScalrProviderConfigurationGoogleDataSourceConfig,
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckEqualID("data.scalr_provider_configuration.google", "scalr_provider_configuration.google"),
),
},
{
Config: testAccScalrProviderConfigurationAwsDataSourceInitConfig,
Config: testAccScalrProviderConfigurationDataSourceInitConfig,
},
},
})
}

var testAccScalrProviderConfigurationAwsDataSourceInitConfig = fmt.Sprintf(`
resource "scalr_provider_configuration" "google" {
name = "google_pcfg"
var testAccScalrProviderConfigurationDataSourceInitConfig = fmt.Sprintf(`
resource "scalr_provider_configuration" "kubernetes" {
name = "kubernetes1"
account_id = "%[1]s"
google {
project = "my-new-project"
credentials = "my-new-credentials"
custom {
provider_name = "kubernetes"
argument {
name = "host"
value = "my-host"
}
argument {
name = "username"
value = "my-username"
}
}
}
resource "scalr_provider_configuration" "aws" {
name = "aws_pcfg"
account_id = "%[1]s"
aws {
secret_key = "my-new-secret-key"
access_key = "my-new-access-key"
resource "scalr_provider_configuration" "consul" {
name = "consul"
account_id = "%[1]s"
custom {
provider_name = "consul"
argument {
name = "address"
value = "demo.consul.io:80"
}
argument {
name = "datacenter"
value = "nyc1"
}
}
}`, defaultAccount)
var testAccScalrProviderConfigurationAwsDataSourceConfig = testAccScalrProviderConfigurationAwsDataSourceInitConfig + `
data "scalr_provider_configuration" "aws" {
name = scalr_provider_configuration.aws.name
}
`
`, defaultAccount)

var testAccScalrProviderConfigurationGoogleDataSourceInitConfig = fmt.Sprintf(`
resource "scalr_provider_configuration" "google" {
name = "google_pcfg"
account_id = "%[1]s"
google {
project = "my-new-project"
credentials = "my-new-credentials"
}
var testAccScalrProviderConfigurationDataSourceConfig = testAccScalrProviderConfigurationDataSourceInitConfig + `
data "scalr_provider_configuration" "kubernetes" {
name = scalr_provider_configuration.kubernetes.name
}
resource "scalr_provider_configuration" "aws" {
name = "aws_pcfg"
account_id = "%[1]s"
aws {
secret_key = "my-new-secret-key"
access_key = "my-new-access-key"
}
}`, defaultAccount)
var testAccScalrProviderConfigurationGoogleDataSourceConfig = testAccScalrProviderConfigurationGoogleDataSourceInitConfig + `
data "scalr_provider_configuration" "google" {
provider_name = "google"
}`
data "scalr_provider_configuration" "consul" {
provider_name = "consul"
}
`
137 changes: 56 additions & 81 deletions scalr/data_source_scalr_provider_configurations_test.go
Expand Up @@ -8,50 +8,32 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/terraform"
)

func TestAccScalrProviderConfigurationsDataSource_name(t *testing.T) {
func TestAccScalrProviderConfigurationsDataSource(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccScalrProviderConfigurationsAwsDataSourceInitConfig, // depends_on works improperly with data sources
Config: testAccScalrProviderConfigurationsDataSourceInitConfig, // depends_on works improperly with data sources
},
{
Config: testAccScalrProviderConfigurationsAwsDataSourceConfig,
Config: testAccScalrProviderConfigurationsDataSourceConfig,
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckProviderConfigurationsDataSourceNameFilter(),
),
},
{
Config: testAccScalrProviderConfigurationsAwsDataSourceInitConfig, // depends_on works improperly with data sources
},
},
})
}
func TestAccScalrProviderConfigurationsDataSource_provider_name(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccScalrProviderConfigurationsGoogleDataSourceInitConfig,
},
{
Config: testAccScalrProviderConfigurationsGoogleDataSourceConfig,
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckProviderConfigurationsDataSourceTypeFilter(),
),
},
{
Config: testAccScalrProviderConfigurationsGoogleDataSourceInitConfig,
Config: testAccScalrProviderConfigurationsDataSourceInitConfig, // depends_on works improperly with data sources
},
},
})
}

func testAccCheckProviderConfigurationsDataSourceNameFilter() resource.TestCheckFunc {
return func(s *terraform.State) error {
var expectedIds []string
resourceNames := []string{"aws", "aws2"}
resourceNames := []string{"kubernetes2", "consul"}
for _, name := range resourceNames {
rsName := "scalr_provider_configuration." + name
rs, ok := s.RootModule().Resources[rsName]
Expand All @@ -61,9 +43,9 @@ func testAccCheckProviderConfigurationsDataSourceNameFilter() resource.TestCheck
expectedIds = append(expectedIds, rs.Primary.ID)

}
dataSource, ok := s.RootModule().Resources["data.scalr_provider_configurations.aws"]
dataSource, ok := s.RootModule().Resources["data.scalr_provider_configurations.kubernetes2consul"]
if !ok {
return fmt.Errorf("Not found: data.scalr_provider_configurations.aws")
return fmt.Errorf("Not found: data.scalr_provider_configurations.kubernetes2consul")
}
if dataSource.Primary.Attributes["ids.#"] != "2" {
return fmt.Errorf("Bad provider configuration ids, expected: %#v, got: %#v", expectedIds, dataSource.Primary.Attributes["ids"])
Expand All @@ -90,7 +72,7 @@ func testAccCheckProviderConfigurationsDataSourceNameFilter() resource.TestCheck
func testAccCheckProviderConfigurationsDataSourceTypeFilter() resource.TestCheckFunc {
return func(s *terraform.State) error {
var expectedIds []string
resourceNames := []string{"google", "google2"}
resourceNames := []string{"kubernetes1", "kubernetes2"}
for _, name := range resourceNames {
rsName := "scalr_provider_configuration." + name
rs, ok := s.RootModule().Resources[rsName]
Expand All @@ -100,9 +82,9 @@ func testAccCheckProviderConfigurationsDataSourceTypeFilter() resource.TestCheck
expectedIds = append(expectedIds, rs.Primary.ID)

}
dataSource, ok := s.RootModule().Resources["data.scalr_provider_configurations.google"]
dataSource, ok := s.RootModule().Resources["data.scalr_provider_configurations.kubernetes"]
if !ok {
return fmt.Errorf("Not found: data.scalr_provider_configurations.google")
return fmt.Errorf("Not found: data.scalr_provider_configurations.kubernetes")
}
if dataSource.Primary.Attributes["ids.#"] != "2" {
return fmt.Errorf("Bad provider configuration ids, expected: %#v, got: %#v", expectedIds, dataSource.Primary.Attributes["ids"])
Expand All @@ -121,69 +103,62 @@ func testAccCheckProviderConfigurationsDataSourceTypeFilter() resource.TestCheck
return fmt.Errorf("Bad provider configuration ids, expected: %#v, got: %#v", expectedIds, resultIds)
}
}

return nil
}
}

var testAccScalrProviderConfigurationsAwsDataSourceInitConfig = fmt.Sprintf(`
resource "scalr_provider_configuration" "google" {
name = "google_pcfg"
var testAccScalrProviderConfigurationsDataSourceInitConfig = fmt.Sprintf(`
resource "scalr_provider_configuration" "kubernetes1" {
name = "kubernetes1"
account_id = "%[1]s"
google {
project = "my-new-project"
credentials = "my-new-credentials"
}
}
resource "scalr_provider_configuration" "aws" {
name = "aws_pcfg"
account_id = "%[1]s"
aws {
secret_key = "my-new-secret-key"
access_key = "my-new-access-key"
}
}
resource "scalr_provider_configuration" "aws2" {
name = "aws2_pcfg"
account_id = "%[1]s"
aws {
secret_key = "my-new-secret-key"
access_key = "my-new-access-key"
custom {
provider_name = "kubernetes"
argument {
name = "host"
value = "my-host"
}
argument {
name = "username"
value = "my-username"
}
}
}`, defaultAccount)
var testAccScalrProviderConfigurationsAwsDataSourceConfig = testAccScalrProviderConfigurationsAwsDataSourceInitConfig + `
data "scalr_provider_configurations" "aws" {
name = "in:aws_pcfg,aws2_pcfg"
}
`

var testAccScalrProviderConfigurationsGoogleDataSourceInitConfig = fmt.Sprintf(`
resource "scalr_provider_configuration" "google" {
name = "google_pcfg"
resource "scalr_provider_configuration" "kubernetes2" {
name = "kubernetes2"
account_id = "%[1]s"
google {
project = "my-new-project"
credentials = "my-new-credentials"
custom {
provider_name = "kubernetes"
argument {
name = "host"
value = "my-host2"
}
argument {
name = "username"
value = "my-username2"
}
}
}
resource "scalr_provider_configuration" "google2" {
name = "google2_pcfg"
resource "scalr_provider_configuration" "consul" {
name = "consul"
account_id = "%[1]s"
google {
project = "my-new-project"
credentials = "my-new-credentials"
}
}
resource "scalr_provider_configuration" "aws" {
name = "aws_pcfg"
account_id = "%[1]s"
aws {
secret_key = "my-new-secret-key"
access_key = "my-new-access-key"
custom {
provider_name = "consul"
argument {
name = "address"
value = "demo.consul.io:80"
}
argument {
name = "datacenter"
value = "nyc1"
}
}
}`, defaultAccount)

var testAccScalrProviderConfigurationsGoogleDataSourceConfig = testAccScalrProviderConfigurationsGoogleDataSourceInitConfig + `
data "scalr_provider_configurations" "google" {
provider_name = "google"
}`
var testAccScalrProviderConfigurationsDataSourceConfig = testAccScalrProviderConfigurationsDataSourceInitConfig + `
data "scalr_provider_configurations" "kubernetes2consul" {
name = "in:kubernetes2,consul"
}
data "scalr_provider_configurations" "kubernetes" {
provider_name = "kubernetes"
}
`

0 comments on commit 204f07e

Please sign in to comment.