Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make driftctl SSO ready #708

Merged
merged 3 commits into from
Jun 30, 2021
Merged
Show file tree
Hide file tree
Changes from 2 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
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/cloudskiff/driftctl
go 1.16

require (
github.com/aws/aws-sdk-go v1.34.2
github.com/aws/aws-sdk-go v1.38.68
github.com/bmatcuk/doublestar/v4 v4.0.1
github.com/eapache/go-resiliency v1.2.0
github.com/fatih/color v1.9.0
Expand All @@ -16,7 +16,7 @@ require (
github.com/hashicorp/terraform v0.14.0
github.com/hashicorp/terraform-exec v0.12.0
github.com/jarcoal/httpmock v1.0.6
github.com/jmespath/go-jmespath v0.3.0
github.com/jmespath/go-jmespath v0.4.0
github.com/joho/godotenv v1.3.0
github.com/mattn/go-colorable v0.1.7 // indirect
github.com/mattn/go-isatty v0.0.12
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3A
github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
github.com/aws/aws-sdk-go v1.34.2 h1:9vCknCdTAmmV4ht7lPuda7aJXzllXwEQyCMZKJHjBrM=
github.com/aws/aws-sdk-go v1.34.2/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
github.com/aws/aws-sdk-go v1.38.68 h1:aOG8geU4SohNp659eKBHRBgbqSrZ6jNZlfimIuJAwL8=
github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible h1:Ppm0npCCsmuR9oQaBtRuZcmILVE74aXE+AmrJj8L2ns=
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA=
Expand Down Expand Up @@ -541,6 +543,9 @@ github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyX
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc=
github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
Expand Down Expand Up @@ -1033,6 +1038,7 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777 h1:003p0dJM77cxMSyCPFphvZf/Y5/NXf5fzg6ufd1/Oew=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/cloudfront_distribution_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,21 @@ import (
type CloudfrontDistributionSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.CloudfrontRepository
repository repository.CloudfrontRepository
runner *terraform.ParallelResourceReader
}

func NewCloudfrontDistributionSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.CloudfrontRepository) *CloudfrontDistributionSupplier {
func NewCloudfrontDistributionSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.CloudfrontRepository) *CloudfrontDistributionSupplier {
return &CloudfrontDistributionSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *CloudfrontDistributionSupplier) Resources() ([]resource.Resource, error) {
distributions, err := s.client.ListAllDistributions()
distributions, err := s.repository.ListAllDistributions()
if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, aws.AwsCloudfrontDistributionResourceType)
}
Expand Down
13 changes: 6 additions & 7 deletions pkg/remote/aws/cloudfront_distribution_supplier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import (
remoteerror "github.com/cloudskiff/driftctl/pkg/remote/error"
resourceaws "github.com/cloudskiff/driftctl/pkg/resource/aws"

"github.com/cloudskiff/driftctl/mocks"
"github.com/cloudskiff/driftctl/pkg/parallel"
"github.com/cloudskiff/driftctl/pkg/resource"

Expand All @@ -31,21 +30,21 @@ func TestCloudfrontDistributionSupplier_Resources(t *testing.T) {
cases := []struct {
test string
dirName string
mocks func(client *mocks.CloudfrontRepository)
mocks func(client *repository.MockCloudfrontRepository)
err error
}{
{
test: "no cloudfront distribution",
dirName: "cloudfront_distribution_empty",
mocks: func(client *mocks.CloudfrontRepository) {
mocks: func(client *repository.MockCloudfrontRepository) {
client.On("ListAllDistributions").Return([]*cloudfront.DistributionSummary{}, nil)
},
err: nil,
},
{
test: "one cloudfront distribution",
dirName: "cloudfront_distribution_one",
mocks: func(client *mocks.CloudfrontRepository) {
mocks: func(client *repository.MockCloudfrontRepository) {
client.On("ListAllDistributions").Return([]*cloudfront.DistributionSummary{
{Id: aws.String("E1M9CNS0XSHI19")},
}, nil)
Expand All @@ -55,7 +54,7 @@ func TestCloudfrontDistributionSupplier_Resources(t *testing.T) {
{
test: "cannot list cloudfront distributions",
dirName: "cloudfront_distribution_empty",
mocks: func(client *mocks.CloudfrontRepository) {
mocks: func(client *repository.MockCloudfrontRepository) {
client.On("ListAllDistributions").Return(nil, awserr.NewRequestFailure(nil, 403, ""))
},
err: remoteerror.NewResourceEnumerationError(awserr.NewRequestFailure(nil, 403, ""), resourceaws.AwsCloudfrontDistributionResourceType),
Expand All @@ -77,11 +76,11 @@ func TestCloudfrontDistributionSupplier_Resources(t *testing.T) {
if err != nil {
t.Fatal(err)
}
supplierLibrary.AddSupplier(NewCloudfrontDistributionSupplier(provider, deserializer, repository.NewCloudfrontClient(provider.session, cache.New(0))))
supplierLibrary.AddSupplier(NewCloudfrontDistributionSupplier(provider, deserializer, repository.NewCloudfrontRepository(provider.session, cache.New(0))))
}

t.Run(c.test, func(tt *testing.T) {
fakeCloudfront := mocks.CloudfrontRepository{}
fakeCloudfront := repository.MockCloudfrontRepository{}
c.mocks(&fakeCloudfront)
provider := testmocks.NewMockedGoldenTFProvider(c.dirName, providerLibrary.Provider(terraform.AWS), shouldUpdate)
s := &CloudfrontDistributionSupplier{
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/db_instance_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,22 @@ import (
type DBInstanceSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.RDSRepository
repository repository.RDSRepository
runner *terraform.ParallelResourceReader
}

func NewDBInstanceSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.RDSRepository) *DBInstanceSupplier {
func NewDBInstanceSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.RDSRepository) *DBInstanceSupplier {
return &DBInstanceSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *DBInstanceSupplier) Resources() ([]resource.Resource, error) {

resourceList, err := s.client.ListAllDBInstances()
resourceList, err := s.repository.ListAllDBInstances()

if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, resourceaws.AwsDbInstanceResourceType)
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/db_subnet_group_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@ import (
type DBSubnetGroupSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.RDSRepository
repository repository.RDSRepository
runner *terraform.ParallelResourceReader
}

func NewDBSubnetGroupSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.RDSRepository) *DBSubnetGroupSupplier {
func NewDBSubnetGroupSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.RDSRepository) *DBSubnetGroupSupplier {
return &DBSubnetGroupSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *DBSubnetGroupSupplier) Resources() ([]resource.Resource, error) {

subnetGroups, err := s.client.ListAllDbSubnetGroups()
subnetGroups, err := s.repository.ListAllDbSubnetGroups()

if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, aws.AwsDbSubnetGroupResourceType)
Expand Down
4 changes: 2 additions & 2 deletions pkg/remote/aws/dynamodb_table_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ type DynamoDBTableSupplier struct {
runner *terraform.ParallelResourceReader
}

func NewDynamoDBTableSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.DynamoDBRepository) *DynamoDBTableSupplier {
func NewDynamoDBTableSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.DynamoDBRepository) *DynamoDBTableSupplier {
return &DynamoDBTableSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}
Expand Down
12 changes: 5 additions & 7 deletions pkg/remote/aws/dynamodb_table_supplier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"

"github.com/cloudskiff/driftctl/mocks"

"github.com/cloudskiff/driftctl/pkg/resource"
"github.com/cloudskiff/driftctl/pkg/terraform"
"github.com/cloudskiff/driftctl/test"
Expand All @@ -34,21 +32,21 @@ func TestDynamoDBTableSupplier_Resources(t *testing.T) {
cases := []struct {
test string
dirName string
mocks func(client *mocks.DynamoDBRepository)
mocks func(client *repository.MockDynamoDBRepository)
err error
}{
{
test: "no DynamoDB Table",
dirName: "dynamodb_table_empty",
mocks: func(client *mocks.DynamoDBRepository) {
mocks: func(client *repository.MockDynamoDBRepository) {
client.On("ListAllTables").Return([]*string{}, nil)
},
err: nil,
},
{
test: "Multiple DynamoDB Table",
dirName: "dynamodb_table_multiple",
mocks: func(client *mocks.DynamoDBRepository) {
mocks: func(client *repository.MockDynamoDBRepository) {
client.On("ListAllTables").Return([]*string{
aws.String("GameScores"),
aws.String("example"),
Expand All @@ -59,7 +57,7 @@ func TestDynamoDBTableSupplier_Resources(t *testing.T) {
{
test: "cannot list DynamoDB Table",
dirName: "dynamodb_table_list",
mocks: func(client *mocks.DynamoDBRepository) {
mocks: func(client *repository.MockDynamoDBRepository) {
client.On("ListAllTables").Return(nil, awserr.NewRequestFailure(awserr.New("AccessDeniedException", "", errors.New("")), 400, ""))
},
err: remoteerror.NewResourceEnumerationError(awserr.NewRequestFailure(awserr.New("AccessDeniedException", "", errors.New("")), 400, ""), resourceaws.AwsDynamodbTableResourceType),
Expand Down Expand Up @@ -87,7 +85,7 @@ func TestDynamoDBTableSupplier_Resources(t *testing.T) {
}

t.Run(c.test, func(tt *testing.T) {
fakeClient := mocks.DynamoDBRepository{}
fakeClient := repository.MockDynamoDBRepository{}
c.mocks(&fakeClient)
provider := mocks2.NewMockedGoldenTFProvider(c.dirName, providerLibrary.Provider(terraform.AWS), shouldUpdate)
s := &DynamoDBTableSupplier{
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/ec2_ami_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,21 @@ import (
type EC2AmiSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.EC2Repository
repository repository.EC2Repository
runner *terraform.ParallelResourceReader
}

func NewEC2AmiSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.EC2Repository) *EC2AmiSupplier {
func NewEC2AmiSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.EC2Repository) *EC2AmiSupplier {
return &EC2AmiSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *EC2AmiSupplier) Resources() ([]resource.Resource, error) {
images, err := s.client.ListAllImages()
images, err := s.repository.ListAllImages()
if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, resourceaws.AwsAmiResourceType)
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/ec2_ebs_snapshot_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@ import (
type EC2EbsSnapshotSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.EC2Repository
repository repository.EC2Repository
runner *terraform.ParallelResourceReader
}

func NewEC2EbsSnapshotSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.EC2Repository) *EC2EbsSnapshotSupplier {
func NewEC2EbsSnapshotSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.EC2Repository) *EC2EbsSnapshotSupplier {
return &EC2EbsSnapshotSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *EC2EbsSnapshotSupplier) Resources() ([]resource.Resource, error) {
snapshots, err := s.client.ListAllSnapshots()
snapshots, err := s.repository.ListAllSnapshots()
if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, resourceaws.AwsEbsSnapshotResourceType)
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/ec2_ebs_volume_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@ import (
type EC2EbsVolumeSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.EC2Repository
repository repository.EC2Repository
runner *terraform.ParallelResourceReader
}

func NewEC2EbsVolumeSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.EC2Repository) *EC2EbsVolumeSupplier {
func NewEC2EbsVolumeSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.EC2Repository) *EC2EbsVolumeSupplier {
return &EC2EbsVolumeSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *EC2EbsVolumeSupplier) Resources() ([]resource.Resource, error) {
volumes, err := s.client.ListAllVolumes()
volumes, err := s.repository.ListAllVolumes()
if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, resourceaws.AwsEbsVolumeResourceType)
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/ec2_eip_association_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,20 @@ import (
type EC2EipAssociationSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.EC2Repository
repository repository.EC2Repository
runner *terraform.ParallelResourceReader
}

func NewEC2EipAssociationSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repo repository.EC2Repository) *EC2EipAssociationSupplier {
func NewEC2EipAssociationSupplier(provider *AWSTerraformProvider, deserializer *resource.Deserializer, repository repository.EC2Repository) *EC2EipAssociationSupplier {
return &EC2EipAssociationSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner())}
}

func (s *EC2EipAssociationSupplier) Resources() ([]resource.Resource, error) {
associationIds, err := s.client.ListAllAddressesAssociation()
associationIds, err := s.repository.ListAllAddressesAssociation()
if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, resourceaws.AwsEipAssociationResourceType)
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/remote/aws/ec2_eip_supplier.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@ import (
type EC2EipSupplier struct {
reader terraform.ResourceReader
deserializer *resource.Deserializer
client repository.EC2Repository
repository repository.EC2Repository
runner *terraform.ParallelResourceReader
}

func NewEC2EipSupplier(provider *AWSTerraformProvider, repo repository.EC2Repository, deserializer *resource.Deserializer) *EC2EipSupplier {
func NewEC2EipSupplier(provider *AWSTerraformProvider, repository repository.EC2Repository, deserializer *resource.Deserializer) *EC2EipSupplier {
return &EC2EipSupplier{
provider,
deserializer,
repo,
repository,
terraform.NewParallelResourceReader(provider.Runner().SubRunner()),
}
}

func (s *EC2EipSupplier) Resources() ([]resource.Resource, error) {
addresses, err := s.client.ListAllAddresses()
addresses, err := s.repository.ListAllAddresses()
if err != nil {
return nil, remoteerror.NewResourceEnumerationError(err, resourceaws.AwsEipResourceType)
}
Expand Down
Loading