Skip to content

Commit

Permalink
Fix: Undefined method "merge" on LabelSelector (#488)
Browse files Browse the repository at this point in the history
* Convert selector to hash before reverse merging

Fixes "undefined method `merge` for KubernetesDeploy::LabelSelector"

* Require ActiveSupport's `reverse_merge`

Fixes "undefined method `reverse_merge`" on hash
  • Loading branch information
ramontayag authored and dturn committed May 27, 2019
1 parent 29b7096 commit 8b9ac93
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
1 change: 1 addition & 0 deletions lib/kubernetes-deploy.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# frozen_string_literal: true

require 'active_support/core_ext/object/blank'
require 'active_support/core_ext/hash/reverse_merge'
require 'active_support/core_ext/hash/slice'
require 'active_support/core_ext/numeric/time'
require 'active_support/core_ext/string/inflections'
Expand Down
2 changes: 1 addition & 1 deletion lib/kubernetes-deploy/ejson_secret_provisioner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def generate_secret_resource(secret_name, secret_type, data)
end

labels = { "name" => secret_name }
labels.reverse_merge!(@selector) if @selector
labels.reverse_merge!(@selector.to_h) if @selector

secret = {
'kind' => 'Secret',
Expand Down
15 changes: 13 additions & 2 deletions test/unit/kubernetes-deploy/ejson_secret_provisioner_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,16 @@ def test_proactively_validates_resulting_resources_and_raises_without_logging
refute_logs_match("Secret")
end

def test_run_with_selector_does_not_raise_exception
stub_ejson_keys_get_request
stub_dry_run_validation_request.times(3) # there are three secrets in the ejson
provisioner = build_provisioner(
fixture_path('ejson-cloud'),
selector: KubernetesDeploy::LabelSelector.new("app" => "yay")
)
refute_empty(provisioner.resources)
end

private

def stub_ejson_keys_get_request
Expand Down Expand Up @@ -162,14 +172,15 @@ def dummy_secret_hash(name: SecureRandom.hex(4), data: {}, ejson: true)
secret
end

def build_provisioner(dir = nil)
def build_provisioner(dir = nil, selector: nil)
dir ||= fixture_path('ejson-cloud')
KubernetesDeploy::EjsonSecretProvisioner.new(
namespace: 'test',
context: KubeclientHelper::TEST_CONTEXT,
template_dir: dir,
logger: logger,
statsd_tags: []
statsd_tags: [],
selector: selector,
)
end
end

0 comments on commit 8b9ac93

Please sign in to comment.