Skip to content

Commit 18ee75a

Browse files
committed
tasks(repackage_boshreleases_fallback): fix deserialization
As of Ruby 3.1, if you use YAML.load_file, you must explicitly list the classes that are allowed for deserialization. Otherwise, a `Psych::DisallowedClass` error will be thrown.
1 parent 33dffc3 commit 18ee75a

3 files changed

Lines changed: 29 additions & 1 deletion

File tree

concourse/tasks/repackage_boshreleases_fallback/repackage_releases_fallback.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class RepackageReleasesFallback
2323

2424
def initialize(repackaged_error_filepath = "")
2525
@repackaged_errors = if File.exist?(repackaged_error_filepath)
26-
YAML.load_file(repackaged_error_filepath, aliases: true) || {}
26+
YAML.load_file(repackaged_error_filepath, aliases: true, permitted_classes: [Tasks::Bosh::BoshCliError]) || {}
2727
else
2828
{}
2929
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
Bosh director: !ruby/exception:Tasks::Bosh::BoshCliError
3+
message: |-
4+
Stderr:
5+
Stdout:
6+
{
7+
"Tables": null,
8+
"Blocks": null,
9+
"Lines": [
10+
"Fetching info:\n Performing request GET 'https://192.168.116.158:25555/info':\n Performing GET request:\n Retry: Get \"https://192.168.116.158:25555/info\": dial tcp 192.168.116.158:25555: connect: connection refused",
11+
"Exit code 1"
12+
]
13+
}
14+
backtrace:
15+
- "/tmp/build/22f65861/cf-ops-automation/lib/tasks/bosh/executor.rb:39:in `handle_bosh_cli_response'"
16+
- "/tmp/build/22f65861/cf-ops-automation/lib/tasks/bosh/executor.rb:34:in `run_command'"
17+
- "/tmp/build/22f65861/cf-ops-automation/lib/tasks/bosh/list_releases.rb:7:in `execute'"
18+
- "/tmp/build/22f65861/cf-ops-automation/concourse/tasks/repackage_boshreleases/repackage_releases.rb:133:in `filter_releases'"
19+
- "/tmp/build/22f65861/cf-ops-automation/concourse/tasks/repackage_boshreleases/repackage_releases.rb:32:in `process'"
20+
- cf-ops-automation/concourse/tasks/repackage_boshreleases/run.rb:42:in `<main>'

spec/tasks/repackage_boshreleases_fallback/repackage_releases_fallback_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@
4242
context "when errors file contains errors" do
4343
let(:repackaged_releases_path) { File.join(basedir, 'download_failures') }
4444

45+
it "creates an object with errors" do
46+
expect(repackage_releases_fallback.has_errors?).to be_truthy
47+
end
48+
end
49+
50+
context "when bosh returns an errors" do
51+
let(:repackaged_releases_path) { File.join(basedir, 'bosh_connection_refused') }
52+
4553
it "creates an object with errors" do
4654
expect(repackage_releases_fallback.has_errors?).to be_truthy
4755
end

0 commit comments

Comments
 (0)