Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/parsers/terraform/tfplan.rb')
-rw-r--r--lib/gitlab/ci/parsers/terraform/tfplan.rb24
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/gitlab/ci/parsers/terraform/tfplan.rb b/lib/gitlab/ci/parsers/terraform/tfplan.rb
index 26a18c6603e..19f724b79af 100644
--- a/lib/gitlab/ci/parsers/terraform/tfplan.rb
+++ b/lib/gitlab/ci/parsers/terraform/tfplan.rb
@@ -8,15 +8,11 @@ module Gitlab
TfplanParserError = Class.new(Gitlab::Ci::Parsers::ParserError)
def parse!(json_data, terraform_reports, artifact:)
- tfplan = Gitlab::Json.parse(json_data).tap do |parsed_data|
- parsed_data['job_path'] = Gitlab::Routing.url_helpers.project_job_path(
- artifact.job.project, artifact.job
- )
- end
+ plan_data = Gitlab::Json.parse(json_data)
- raise TfplanParserError, 'Tfplan missing required key' unless valid_supported_keys?(tfplan)
+ raise TfplanParserError, 'Tfplan missing required key' unless has_required_keys?(plan_data)
- terraform_reports.add_plan(artifact.filename, tfplan)
+ terraform_reports.add_plan(artifact.job.id.to_s, tfplan(plan_data, artifact.job))
rescue JSON::ParserError
raise TfplanParserError, 'JSON parsing failed'
rescue
@@ -25,8 +21,18 @@ module Gitlab
private
- def valid_supported_keys?(tfplan)
- tfplan.keys == %w[create update delete job_path]
+ def has_required_keys?(plan_data)
+ (%w[create update delete] - plan_data.keys).empty?
+ end
+
+ def tfplan(plan_data, artifact_job)
+ {
+ 'create' => plan_data['create'].to_i,
+ 'delete' => plan_data['delete'].to_i,
+ 'job_name' => artifact_job.options.dig(:artifacts, :name).to_s,
+ 'job_path' => Gitlab::Routing.url_helpers.project_job_path(artifact_job.project, artifact_job),
+ 'update' => plan_data['update'].to_i
+ }
end
end
end