Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package terragrunt for openSUSE:Factory checked in at 2023-05-05 15:59:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/terragrunt (Old) and /work/SRC/openSUSE:Factory/.terragrunt.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "terragrunt" Fri May 5 15:59:19 2023 rev:42 rq:1085038 version:0.45.9 Changes: -------- --- /work/SRC/openSUSE:Factory/terragrunt/terragrunt.changes 2023-05-02 16:23:49.551518062 +0200 +++ /work/SRC/openSUSE:Factory/.terragrunt.new.1533/terragrunt.changes 2023-05-05 15:59:36.684884806 +0200 @@ -1,0 +2,8 @@ +Fri May 05 10:42:22 UTC 2023 - ka...@b1-systems.de + +- Update to version 0.45.9: + * Fix parsing output when AWS CSM is enabled (#2554) + * Moved issue template files to ISSUE_TEMPLATE directory (#2555) + * Add issues templates (#2553) + +------------------------------------------------------------------- Old: ---- terragrunt-0.45.8.obscpio New: ---- terragrunt-0.45.9.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ terragrunt.spec ++++++ --- /var/tmp/diff_new_pack.RYV09d/_old 2023-05-05 15:59:37.572889894 +0200 +++ /var/tmp/diff_new_pack.RYV09d/_new 2023-05-05 15:59:37.576889917 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: terragrunt -Version: 0.45.8 +Version: 0.45.9 Release: 0 Summary: Thin wrapper for Terraform for working with multiple Terraform modules License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.RYV09d/_old 2023-05-05 15:59:37.628890215 +0200 +++ /var/tmp/diff_new_pack.RYV09d/_new 2023-05-05 15:59:37.636890260 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/gruntwork-io/terragrunt</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.45.8</param> + <param name="revision">v0.45.9</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.RYV09d/_old 2023-05-05 15:59:37.660890398 +0200 +++ /var/tmp/diff_new_pack.RYV09d/_new 2023-05-05 15:59:37.668890444 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/gruntwork-io/terragrunt</param> - <param name="changesrevision">4427ecc0434cd18837b4e849f4b93a57d793890b</param></service></servicedata> + <param name="changesrevision">0652685815e3a319a1c4e54d5b7bf10e52c44f8c</param></service></servicedata> (No newline at EOF) ++++++ terragrunt-0.45.8.obscpio -> terragrunt-0.45.9.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/.github/ISSUE_TEMPLATE/bug_report.md new/terragrunt-0.45.9/.github/ISSUE_TEMPLATE/bug_report.md --- old/terragrunt-0.45.8/.github/ISSUE_TEMPLATE/bug_report.md 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.45.9/.github/ISSUE_TEMPLATE/bug_report.md 2023-05-05 12:00:09.000000000 +0200 @@ -0,0 +1,33 @@ +--- +name: Bug report +about: Create a bug report to help us improve Terragrunt. +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior, code snippets and examples which can be used to reproduce the issue. + +```hcl +// paste code snippets here +``` + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Nice to have** +- [ ] Terminal output +- [ ] Screenshots + +**Versions** +- Terragrunt version: +- Terraform version: +- Environment details (Ubuntu 20.04, Windows 10, etc.): + +**Additional context** +Add any other context about the problem here. \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/.github/ISSUE_TEMPLATE/feature_request.md new/terragrunt-0.45.9/.github/ISSUE_TEMPLATE/feature_request.md --- old/terragrunt-0.45.8/.github/ISSUE_TEMPLATE/feature_request.md 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.45.9/.github/ISSUE_TEMPLATE/feature_request.md 2023-05-05 12:00:09.000000000 +0200 @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Submit a feature request to improve Terragrunt. +title: '' +labels: enhancement +assignees: '' + +--- + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/config/dependency.go new/terragrunt-0.45.9/config/dependency.go --- old/terragrunt-0.45.8/config/dependency.go 2023-05-01 23:12:59.000000000 +0200 +++ new/terragrunt-0.45.9/config/dependency.go 2023-05-05 12:00:09.000000000 +0200 @@ -50,10 +50,11 @@ // DeepMerge will deep merge two Dependency configs, updating the target. Deep merge for Dependency configs is defined // as follows: -// - For simple attributes (bools and strings), the source will override the target. -// - For MockOutputs, the two maps will be deeply merged together. This means that maps are recursively merged, while -// lists are concatenated together. -// - For MockOutputsAllowedTerraformCommands, the source will be concatenated to the target. +// - For simple attributes (bools and strings), the source will override the target. +// - For MockOutputs, the two maps will be deeply merged together. This means that maps are recursively merged, while +// lists are concatenated together. +// - For MockOutputsAllowedTerraformCommands, the source will be concatenated to the target. +// // Note that RenderedOutputs is ignored in the deep merge operation. func (targetDepConfig *Dependency) DeepMerge(sourceDepConfig Dependency) error { if sourceDepConfig.ConfigPath != "" { @@ -145,7 +146,8 @@ // resulting map as a cty.Value object. // TODO: In the future, consider allowing importing dependency blocks from included config // NOTE FOR MAINTAINER: When implementing importation of other config blocks (e.g referencing inputs), carefully -// consider whether or not the implementation of the cyclic dependency detection still makes sense. +// +// consider whether or not the implementation of the cyclic dependency detection still makes sense. func decodeAndRetrieveOutputs( file *hcl.File, filename string, @@ -262,8 +264,9 @@ // Encode the list of dependency blocks into a single cty.Value object that maps the dependency block name to the // encoded dependency mapping. The encoded dependency mapping should have the attributes: -// - outputs: The map of outputs of the corresponding terraform module that lives at the target config of the -// dependency. +// - outputs: The map of outputs of the corresponding terraform module that lives at the target config of the +// dependency. +// // This routine will go through the process of obtaining the outputs using `terragrunt output` from the target config. func dependencyBlocksToCtyValue(dependencyConfigs []Dependency, terragruntOptions *options.TerragruntOptions) (*cty.Value, error) { paths := []string{} @@ -322,9 +325,9 @@ // This will attempt to get the outputs from the target terragrunt config if it is applied. If it is not applied, the // behavior is different depending on the configuration of the dependency: -// - If the dependency block indicates a mock_outputs attribute, this will return that. -// If the dependency block indicates a mock_outputs_merge_strategy_with_state attribute, mock_outputs and state outputs will be merged following the merge strategy -// - If the dependency block does NOT indicate a mock_outputs attribute, this will return an error. +// - If the dependency block indicates a mock_outputs attribute, this will return that. +// If the dependency block indicates a mock_outputs_merge_strategy_with_state attribute, mock_outputs and state outputs will be merged following the merge strategy +// - If the dependency block does NOT indicate a mock_outputs attribute, this will return an error. func getTerragruntOutputIfAppliedElseConfiguredDefault(dependencyConfig Dependency, terragruntOptions *options.TerragruntOptions) (*cty.Value, error) { if dependencyConfig.shouldGetOutputs() { outputVal, isEmpty, err := getTerragruntOutput(dependencyConfig, terragruntOptions) @@ -452,6 +455,14 @@ if err != nil { return nil, err } + + // When AWS Client Side Monitoring (CSM) is enabled the aws-sdk-go displays log as a plaintext "Enabling CSM" to stdout, even if the `output -json` flag is specified. The final output looks like this: "2023/05/04 20:22:43 Enabling CSM{...omitted json string...}", and and prevents proper json parsing. Since there is no way to disable this log, the only way out is to filter. + // Related AWS code: https://github.com/aws/aws-sdk-go/blob/81d1cbbc6a2028023aff7bcab0fe1be320cd39f7/aws/session/session.go#L444 + // Related issues: https://github.com/gruntwork-io/terragrunt/issues/2233 https://github.com/hashicorp/terraform-provider-aws/issues/23620 + if index := bytes.IndexByte(newJsonBytes, byte('{')); index > 0 { + newJsonBytes = newJsonBytes[index:] + } + jsonOutputCache.Store(targetConfig, newJsonBytes) return newJsonBytes, nil } @@ -820,6 +831,7 @@ Value json.RawMessage `json:"value"` } var outputs map[string]OutputMeta + err := json.Unmarshal(jsonBytes, &outputs) if err != nil { return nil, errors.WithStackTrace(TerragruntOutputParsingError{Path: targetConfig, Err: err}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/test/fixture-output-from-dependency/app/terragrunt.hcl new/terragrunt-0.45.9/test/fixture-output-from-dependency/app/terragrunt.hcl --- old/terragrunt-0.45.8/test/fixture-output-from-dependency/app/terragrunt.hcl 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.45.9/test/fixture-output-from-dependency/app/terragrunt.hcl 2023-05-05 12:00:09.000000000 +0200 @@ -0,0 +1,11 @@ +dependencies { + paths = ["../dependency"] +} + +dependency "test" { + config_path = "../dependency" +} + +inputs = { + vpc_config = dependency.test.outputs +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/test/fixture-output-from-dependency/dependency/outputs.tf new/terragrunt-0.45.9/test/fixture-output-from-dependency/dependency/outputs.tf --- old/terragrunt-0.45.8/test/fixture-output-from-dependency/dependency/outputs.tf 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.45.9/test/fixture-output-from-dependency/dependency/outputs.tf 2023-05-05 12:00:09.000000000 +0200 @@ -0,0 +1,4 @@ +output "foo" { + value = var.foo + description = "Test foo value" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/test/fixture-output-from-dependency/dependency/terragrunt.hcl new/terragrunt-0.45.9/test/fixture-output-from-dependency/dependency/terragrunt.hcl --- old/terragrunt-0.45.8/test/fixture-output-from-dependency/dependency/terragrunt.hcl 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.45.9/test/fixture-output-from-dependency/dependency/terragrunt.hcl 2023-05-05 12:00:09.000000000 +0200 @@ -0,0 +1,16 @@ +# Configure Terragrunt to automatically store tfstate files in an S3 bucket +remote_state { + backend = "s3" + + generate = { + path = "backend.tf" + if_exists = "overwrite" + } + + config = { + encrypt = true + bucket = "__FILL_IN_BUCKET_NAME__" + key = "${path_relative_to_include()}/terraform.tfstate" + region = "__FILL_IN_REGION__" + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/test/fixture-output-from-dependency/dependency/variables.tf new/terragrunt-0.45.9/test/fixture-output-from-dependency/dependency/variables.tf --- old/terragrunt-0.45.8/test/fixture-output-from-dependency/dependency/variables.tf 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.45.9/test/fixture-output-from-dependency/dependency/variables.tf 2023-05-05 12:00:09.000000000 +0200 @@ -0,0 +1,5 @@ +variable "foo" { + description = "The value to be returned from the module" + type = string + default = "test-foo-value" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.45.8/test/integration_test.go new/terragrunt-0.45.9/test/integration_test.go --- old/terragrunt-0.45.8/test/integration_test.go 2023-05-01 23:12:59.000000000 +0200 +++ new/terragrunt-0.45.9/test/integration_test.go 2023-05-05 12:00:09.000000000 +0200 @@ -59,6 +59,7 @@ TEST_FIXTURE_GRAPH_DEPENDENCIES = "fixture-graph-dependencies" TEST_FIXTURE_OUTPUT_ALL = "fixture-output-all" TEST_FIXTURE_OUTPUT_FROM_REMOTE_STATE = "fixture-output-from-remote-state" + TEST_FIXTURE_OUTPUT_FROM_DEPENDENCY = "fixture-output-from-dependency" TEST_FIXTURE_STDOUT = "fixture-download/stdout-test" TEST_FIXTURE_EXTRA_ARGS_PATH = "fixture-extra-args/" TEST_FIXTURE_ENV_VARS_BLOCK_PATH = "fixture-env-vars-block/" @@ -873,6 +874,34 @@ assert.True(t, (strings.Index(output, "app3 output") < strings.Index(output, "app1 output")) && (strings.Index(output, "app1 output") < strings.Index(output, "app2 output"))) } + +func TestTerragruntOutputFromDependency(t *testing.T) { + // t.Parallel() cannot be used together with t.Setenv() + + s3BucketName := fmt.Sprintf("terragrunt-test-bucket-%s", strings.ToLower(uniqueId())) + defer deleteS3Bucket(t, TERRAFORM_REMOTE_STATE_S3_REGION, s3BucketName) + + tmpEnvPath := copyEnvironment(t, TEST_FIXTURE_OUTPUT_FROM_DEPENDENCY) + + rootTerragruntPath := util.JoinPath(tmpEnvPath, TEST_FIXTURE_OUTPUT_FROM_DEPENDENCY) + depTerragruntConfigPath := util.JoinPath(rootTerragruntPath, "dependency", config.DefaultTerragruntConfigPath) + + copyTerragruntConfigAndFillPlaceholders(t, depTerragruntConfigPath, depTerragruntConfigPath, s3BucketName, "not-used", TERRAFORM_REMOTE_STATE_S3_REGION) + + var ( + stdout bytes.Buffer + stderr bytes.Buffer + ) + + t.Setenv("AWS_CSM_ENABLED", "true") + + err := runTerragruntCommand(t, fmt.Sprintf("terragrunt run-all apply -auto-approve --terragrunt-non-interactive --terragrunt-working-dir %s --terragrunt-log-level debug", rootTerragruntPath), &stdout, &stderr) + assert.NoError(t, err) + + output := stderr.String() + assert.NotContains(t, output, "invalid character") +} + func TestTerragruntValidateAllCommand(t *testing.T) { t.Parallel() ++++++ terragrunt.obsinfo ++++++ --- /var/tmp/diff_new_pack.RYV09d/_old 2023-05-05 15:59:38.456894959 +0200 +++ /var/tmp/diff_new_pack.RYV09d/_new 2023-05-05 15:59:38.460894981 +0200 @@ -1,5 +1,5 @@ name: terragrunt -version: 0.45.8 -mtime: 1682975579 -commit: 4427ecc0434cd18837b4e849f4b93a57d793890b +version: 0.45.9 +mtime: 1683280809 +commit: 0652685815e3a319a1c4e54d5b7bf10e52c44f8c ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/terragrunt/vendor.tar.gz /work/SRC/openSUSE:Factory/.terragrunt.new.1533/vendor.tar.gz differ: char 5, line 1