Skip to content

Commit

Permalink
feat: allow to opt out of aws accounts variable (#1002)
Browse files Browse the repository at this point in the history
* feat: allow to opt out of aws accounts variable

* revert

* commit from ci -- updated golden files

* revert

* sum

---------

Co-authored-by: jakeyheath <jakeyheath@users.noreply.github.com>
  • Loading branch information
jakeyheath and jakeyheath committed Feb 18, 2024
1 parent 144aaa0 commit 12b407f
Show file tree
Hide file tree
Showing 16 changed files with 42 additions and 137 deletions.
17 changes: 9 additions & 8 deletions config/v2/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,15 @@ type TFE struct {
}

type Common struct {
Backend *Backend `yaml:"backend,omitempty"`
ExtraVars map[string]string `yaml:"extra_vars,omitempty"`
Owner *string `yaml:"owner,omitempty"`
Project *string `yaml:"project,omitempty"`
Providers *Providers `yaml:"providers,omitempty"`
DependsOn *DependsOn `yaml:"depends_on,omitempty"`
TerraformVersion *string `yaml:"terraform_version,omitempty"`
Tools *Tools `yaml:"tools,omitempty"`
Backend *Backend `yaml:"backend,omitempty"`
ExtraVars map[string]string `yaml:"extra_vars,omitempty"`
Owner *string `yaml:"owner,omitempty"`
Project *string `yaml:"project,omitempty"`
Providers *Providers `yaml:"providers,omitempty"`
DependsOn *DependsOn `yaml:"depends_on,omitempty"`
TerraformVersion *string `yaml:"terraform_version,omitempty"`
Tools *Tools `yaml:"tools,omitempty"`
NeedsAWSAccountsVariable *bool `yaml:"needs_aws_accounts_variable,omitempty"`
}

type Defaults struct {
Expand Down
15 changes: 15 additions & 0 deletions config/v2/resolvers.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,21 @@ func ResolveGithubProvider(commons ...Common) *GithubProvider {
}
}

func AWSAccountsNeededGetter(comm Common) *bool {
if comm.NeedsAWSAccountsVariable != nil {
return comm.NeedsAWSAccountsVariable
}
return nil
}

func ResolveAWSAccountsNeeded(commons ...Common) bool {
accountsNeeded := lastNonNilBool(AWSAccountsNeededGetter, commons...)
if accountsNeeded == nil {
return true
}
return *accountsNeeded
}

func ResolveSnowflakeProvider(commons ...Common) *SnowflakeProvider {
account := lastNonNil(SnowflakeProviderAccountGetter, commons...)
role := lastNonNil(SnowflakeProviderRoleGetter, commons...)
Expand Down
26 changes: 14 additions & 12 deletions plan/plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,18 @@ type Common struct {
type ComponentCommon struct {
Common `yaml:",inline"`

AccountBackends map[string]Backend `yaml:"account_backends"`
Accounts map[string]*json.Number `yaml:"all_accounts"`
Backend Backend `yaml:"backend"`
ComponentBackends map[string]Backend `yaml:"comonent_backends"`
Env string ` yaml:"env"`
ExtraVars map[string]string `yaml:"extra_vars"`
Name string `yaml:"name"`
Owner string `yaml:"owner"`
Project string `yaml:"project"`
ProviderConfiguration ProviderConfiguration `yaml:"providers_configuration"`
ProviderVersions map[string]ProviderVersion `yaml:"provider_versions"`
AccountBackends map[string]Backend `yaml:"account_backends"`
Accounts map[string]*json.Number `yaml:"all_accounts"`
Backend Backend `yaml:"backend"`
ComponentBackends map[string]Backend `yaml:"comonent_backends"`
Env string ` yaml:"env"`
ExtraVars map[string]string `yaml:"extra_vars"`
Name string `yaml:"name"`
Owner string `yaml:"owner"`
Project string `yaml:"project"`
ProviderConfiguration ProviderConfiguration `yaml:"providers_configuration"`
ProviderVersions map[string]ProviderVersion `yaml:"provider_versions"`
NeedsAWSAccountsVariable bool `yaml:"needs_aws_accounts_variable"`

TfLint TfLint `yaml:"tf_lint"`

Expand Down Expand Up @@ -1254,7 +1255,8 @@ func resolveComponentCommon(commons ...v2.Common) ComponentCommon {
}

return ComponentCommon{
Backend: backend,
NeedsAWSAccountsVariable: v2.ResolveAWSAccountsNeeded(commons...),
Backend: backend,
ProviderConfiguration: ProviderConfiguration{
Assert: assertPlan,
Auth0: auth0Plan,
Expand Down
2 changes: 2 additions & 0 deletions templates/templates/component/terraform/fogg.tf.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ data "terraform_remote_state" "{{ $name }}" {
}
{{ end }}

{{ if .NeedsAWSAccountsVariable }}
# tflint-ignore: terraform_unused_declarations
variable "aws_accounts" {
type = map(string)
Expand All @@ -210,3 +211,4 @@ variable "aws_accounts" {
{{ end }}
}
}
{{end}}
2 changes: 2 additions & 0 deletions testdata/v2_full_yaml/fogg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ accounts:
version: 0.4.2
aws_region: us-west-2
foo:
needs_aws_accounts_variable: true
providers:
aws:
account_id: 123
Expand All @@ -39,6 +40,7 @@ accounts:
accounts: []
components: []
defaults:
needs_aws_accounts_variable: false
backend:
bucket: buck
profile: profile
Expand Down
11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/accounts/bar/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/prod/datadog/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/prod/hero/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/prod/okta/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/prod/sentry/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/prod/vpc/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/staging/comp1/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/staging/comp2/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/staging/k8s-comp/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 0 additions & 11 deletions testdata/v2_full_yaml/terraform/envs/staging/vpc/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions testdata/v2_full_yaml/terraform/global/fogg.tf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 12b407f

Please sign in to comment.