Skip to content

Commit

Permalink
Merge pull request #187 from mbacovsky/12751_plugin_rename
Browse files Browse the repository at this point in the history
Fixes #12751 - --plugin-name renamed to --provider
  • Loading branch information
Tomas Strachota committed Dec 10, 2015
2 parents 31b7822 + abb67f8 commit f282725
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 72 deletions.
2 changes: 1 addition & 1 deletion lib/hammer_cli/defaults.rb
Expand Up @@ -15,7 +15,7 @@ def initialize(settings, file_path = nil)
end

def register_provider(provider)
providers[provider.plugin_name.to_s] = provider
providers[provider.provider_name.to_s] = provider
end

def providers
Expand Down
39 changes: 18 additions & 21 deletions lib/hammer_cli/defaults_commands.rb
Expand Up @@ -2,23 +2,19 @@
require 'yaml'
module HammerCLI
class BaseDefaultsProvider
def self.plugin_name
self.name.split('::').first.gsub(/^HammerCLI/, '').underscore
end

def self.register_provider
HammerCLI.defaults.register_provider(self)
end
attr_reader :provider_name, :supported_defaults, :description

def self.support?
raise NotImplementedError
def initialize
@provider_name = nil
@supported_defaults = nil
@description = 'Abstract provider'
end

def self.supported_defaults
raise NotImplementedError
def param_supported?(param)
@supported_defaults.nil? || @supported_defaults.any? {|s| s.to_s == param}
end

def self.get_defaults
def get_defaults
raise NotImplementedError
end
end
Expand All @@ -32,13 +28,15 @@ def execute
data = context[:defaults].providers.map do |key, val|
{
:provider => key.to_s,
:defaults => (val.supported_defaults || ['*']).map(&:to_s)
:defaults => (val.supported_defaults || ['*']).map(&:to_s),
:description => val.description
}
end

fields = HammerCLI::Output::Dsl.new.build do
field :provider, _('Provider')
field :defaults, _('Supported defaults'), Fields::List
field :description, _('Description')
end

definition = HammerCLI::Output::Definition.new
Expand Down Expand Up @@ -105,19 +103,19 @@ class AddDefaultsCommand < HammerCLI::DefaultsCommand
desc _('Add a default parameter to config')
option "--param-name", "OPTION_NAME", _("The name of the default option (e.g. organization_id)."), :required => true
option "--param-value", "OPTION_VALUE", _("The value for the default option")
option "--plugin-name", "OPTION_PLUGIN_NAME", _("The name of the provider providing the value. For list available providers see `hammer defaults providers`.")
option "--provider", "OPTION_PROVIDER", _("The name of the provider providing the value. For list available providers see `hammer defaults providers`.")

def execute
if option_plugin_name.nil? && option_param_value.nil? || !option_plugin_name.nil? && !option_param_value.nil?
if option_provider.nil? && option_param_value.nil? || !option_provider.nil? && !option_param_value.nil?
bad_input
HammerCLI::EX_USAGE
else
if option_plugin_name
namespace = option_plugin_name
if option_provider
namespace = option_provider
if !context[:defaults].providers.key?(namespace)
plugin_prob_message(namespace)
provider_prob_message(namespace)
return HammerCLI::EX_USAGE
elsif !context[:defaults].providers[namespace].support?(option_param_name)
elsif !context[:defaults].providers[namespace].param_supported?(option_param_name)
defaults_not_supported_by_provider
return HammerCLI::EX_CONFIG
end
Expand All @@ -137,7 +135,7 @@ def added_default_message(key, value)
print_message(_("Added %{key_val} default-option with value %{val_val}.") % {:key_val => key.to_s, :val_val => value.to_s}) unless value.nil?
end

def plugin_prob_message(namespace)
def provider_prob_message(namespace)
print_message(_("Provider #{namespace} was not found. See `hammer defaults providers` for available providers."))
end

Expand All @@ -160,4 +158,3 @@ def variable_not_found
autoload_subcommands
end
end

69 changes: 20 additions & 49 deletions test/functional/defaults_test.rb
Expand Up @@ -2,36 +2,29 @@
describe 'commands' do

class TestProvider < HammerCLI::BaseDefaultsProvider
def self.support?(param)
param.to_s == 'organization_id'

def initialize
@provider_name = 'foreman'
@supported_defaults = ['organization_id']
@description = 'Descr'
end

def self.get_defaults(param)
32
end

def self.supported_defaults
['organization_id']
end
end

before do
settings = YAML::load(File.open(FILEPATH))
@defaults = HammerCLI::Defaults.new(settings[:defaults], FILEPATH)
@defaults.stubs(:write_to_file).returns true
@defaults.stubs(:providers).returns({
'foreman' => TestProvider
})
@defaults.stubs(:providers).returns({ 'foreman' => TestProvider.new() })

@context = {
:defaults => @defaults
}
end

def expected_message(header, data = [])
(header.join("\n") + data.join("\n"))
end

def run_cmd(cmd_class, options)
capture_io do
cmd_class.run('hammer', options, @context)
Expand All @@ -41,11 +34,7 @@ def run_cmd(cmd_class, options)
describe 'defaults list' do

it 'it prints all defaults' do
header = ['----------------|----------------------------------------',
'PARAMETER | VALUE ',
'----------------|----------------------------------------',
''
]
header = 'Parameter,Value'
default_values = {
:organization_id => {
:value => 3,
Expand All @@ -55,55 +44,39 @@ def run_cmd(cmd_class, options)
}
}
@defaults.stubs(:defaults_settings).returns(default_values)
data = [
'organization_id | 3 ',
'location_id | Provided by: Hammercliforeman::defaults',
'----------------|----------------------------------------',
''
]

out, err = run_cmd(HammerCLI::DefaultsCommand::ListDefaultsCommand, [])
assert_equal "", err
assert_equal expected_message(header, data), out
assert_match /PARAMETER[ |]*VALUE/, out
assert_match /organization_id[ |]*3/, out
assert_match /location_id[ |]*Provided by: Hammercliforeman::defaults/, out
end

it 'prints empty defaults' do
header = ['----------|------',
'PARAMETER | VALUE',
'----------|------',
''
]
@defaults.stubs(:defaults_settings).returns({})

out, err = run_cmd(HammerCLI::DefaultsCommand::ListDefaultsCommand, [])
assert_equal "", err
assert_equal expected_message(header), out
assert_match /PARAMETER[ |]*VALUE/, out
end
end

describe 'defaults providers' do
header = ['---------|-------------------',
'PROVIDER | SUPPORTED DEFAULTS',
'---------|-------------------',
''
]
header = /PROVIDER[ |]*SUPPORTED DEFAULTS[ |]*DESCRIPTION/

it 'prints all providers and their supported defaults' do
data = ['foreman | organization_id ',
'---------|-------------------',
''
]
out, err = run_cmd(HammerCLI::DefaultsCommand::ProvidersDefaultsCommand, [])
assert_equal "", err
assert_equal expected_message(header, data), out
assert_match header, out
assert_match /foreman[ |]*organization_id[ |]*Descr/, out
end

it 'prints empty providers' do
@defaults.stubs(:providers).returns({})
out, err = run_cmd(HammerCLI::DefaultsCommand::ProvidersDefaultsCommand, [])
assert_equal "", err
assert_equal expected_message(header), out
assert_match header, out
end

end


Expand All @@ -119,7 +92,7 @@ def run_cmd(cmd_class, options)
end

it 'adds default from provider' do
options = ['--param-name=organization_id', '--plugin-name=foreman']
options = ['--param-name=organization_id', '--provider=foreman']

@defaults.expects(:add_defaults_to_conf).with({'organization_id' => nil}, 'foreman').once

Expand All @@ -129,8 +102,7 @@ def run_cmd(cmd_class, options)
end

it 'reports unsupported option' do
options = ['--param-name=unsupported', '--plugin-name=foreman']

options = ['--param-name=unsupported', '--provider=foreman']
out, err = run_cmd(HammerCLI::DefaultsCommand::AddDefaultsCommand, options)
assert_equal "", err
assert_equal "The param name is not supported by provider. See `hammer defaults providers` for supported params.\n", out
Expand All @@ -154,8 +126,8 @@ def run_cmd(cmd_class, options)
assert_match "You must specify value or a provider name, cant specify both.", out
end

it 'reports unknown plugin' do
options = ['--param-name=organization_id', '--plugin-name=unknown']
it 'reports unknown provider' do
options = ['--param-name=organization_id', '--provider=unknown']

out, err = run_cmd(HammerCLI::DefaultsCommand::AddDefaultsCommand, options)
assert_equal "", err
Expand Down Expand Up @@ -203,4 +175,3 @@ def run_cmd(cmd_class, options)
end

end

2 changes: 1 addition & 1 deletion test/unit/defaults_test.rb
Expand Up @@ -31,7 +31,7 @@

it "should get the default param, with provider" do
fake_provider = mock()
fake_provider.stubs(:plugin_name).returns(:foreman)
fake_provider.stubs(:provider_name).returns(:foreman)
fake_provider.expects(:get_defaults).with(:organization_id).returns(3)
@defaults.register_provider(fake_provider)
assert_equal 3, @defaults.get_defaults("organization_id")
Expand Down

0 comments on commit f282725

Please sign in to comment.