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

Add ability to specify 'backend' in runner options #196

Closed
Closed
Show file tree
Hide file tree
Changes from all 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
6 changes: 6 additions & 0 deletions lib/kitchen/verifier/inspec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,12 @@ def runner_options(transport, state = {}, platform = nil, suite = nil) # rubocop
# default to false until we default to true in inspec
runner_options[:backend_cache] = false
end

if config[:backend]
runner_options[:backend] = config[:backend]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we sure backend is enough? This would only work if we use the user defaults. Is there a case where users configure different credentials for gcp, azure and aws?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm. Maybe? :D

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very much so - which would actually be the production use case to have different creds

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what you want to do here. Do you want to remove it?
If so, why treating config[:backend] differently than config[:backend_config]? Shouldn't they both go?

else
runner_options[:backend] = 'ssh'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we setting this as default?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that's the current default isn't it?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think explicitly setting it here is surprising, however. If config[:backend] is unset, let's just leave runner_options[:backend] unset, and it will determine its own default.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please see previous comment

end
end
end

Expand Down
22 changes: 22 additions & 0 deletions spec/kitchen/verifier/inspec_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
kitchen_root: kitchen_root,
test_base_path: File.join(kitchen_root, "test", "integration"),
backend_cache: true,
backend: 'gcp',
reporter: [
"cli",
"junit:path/to/results/%{platform}_%{suite}_inspec.xml",
Expand Down Expand Up @@ -118,6 +119,27 @@
config = verifier.send(:runner_options, transport)
expect(config.to_hash).to include(backend_cache: false)
end

it "inspec version warn for backend_cache" do
config[:backend_cache] = true
stub_const("Inspec::VERSION", "1.46.0")
expect_any_instance_of(Logger).to receive(:warn).
with("backend_cache requires InSpec version >= 1.47.0").
and_return("captured")
config = verifier.send(:runner_options, transport)
expect(config.to_hash).to include(backend_cache: true)
end

it 'backend option sets to gcp' do
config = verifier.send(:runner_options, transport)
expect(config.to_hash).to include(backend: 'gcp')
end

it 'backend option defaults to ssh' do
config[:backend] = nil
config = verifier.send(:runner_options, transport)
expect(config.to_hash).to include(backend: 'ssh')
end
end

describe "#finalize_config!" do
Expand Down