On Tue, 2011-06-14 at 15:55 +0100, mtaylor@redhat.com wrote:
From: Martyn Taylor mtaylor@redhat.com
.../image_factory/aeolus-image/lib/base_command.rb | 55 ++++++++++++++++++++ .../aeolus-image/sample_data/aeolus-cli | 8 +++ .../aeolus-image/spec/base_command_spec.rb | 24 +++++++++ .../aeolus-image/spec/sample_data/aeolus-cli | 7 +++ .../image_factory/aeolus-image/spec/spec_helper.rb | 9 +++- 5 files changed, 102 insertions(+), 1 deletions(-) create mode 100644 services/image_factory/aeolus-image/sample_data/aeolus-cli create mode 100644 services/image_factory/aeolus-image/spec/base_command_spec.rb create mode 100644 services/image_factory/aeolus-image/spec/sample_data/aeolus-cli
Couple minor nits inline that can be cleaned up and pushed w/o another review. As discussed in irc, we'll revisit some of our more major differences of opinion in an upcoming sprint, if either of us can convince the other to change their mind :)
diff --git a/services/image_factory/aeolus-image/lib/base_command.rb b/services/image_factory/aeolus-image/lib/base_command.rb index 4d4fa42..ab93353 100644 --- a/services/image_factory/aeolus-image/lib/base_command.rb +++ b/services/image_factory/aeolus-image/lib/base_command.rb @@ -1,11 +1,17 @@ +require 'yaml' +require 'rest_client' +require 'nokogiri'
module Aeolus module Image #This will house some methods that multiple Command classes need to use. class BaseCommand attr_accessor :options
def initialize(opts={}, logger=nil) logger(logger) @options = opts
@config = load_config end protected
@@ -19,6 +25,55 @@ module Aeolus return @logger end
def iwhd
createResource('iwhd')
end
def conductor
createResource('conductor')
end
private
def load_config
begin
@config_location = ENV['HOME'] + "/.aeolus-cli"
YAML::load(File.open(@config_location))
rescue Errno::ENOENT
#TODO: Create a custom exception to wrap CLI Exceptions
raise "Unable to locate configuration file: \"" + @config_location + "\""
end
end
def createResource(resource_name)
You were going to update this method to have a less java-y name ^
# Check to see if config has a resource with this name
if !@config.has_key?(resource_name)
raise "Unable to determine resource: " + resource_name + " from configuraion file. Please check: " + @config_location
Minor spelling error s/configuraion/configuration
return
end
#Use command line arguments for username/password
if @options.has_key?('username')
if @options.has_key?('password')
RestClient::Resource.new(@config[resource_name]['url'], :user => @options['username'], :password => @options['password'])
else
#TODO: Create a custom exception to wrap CLI Exceptions
raise "Password not found for user: " + @options['username']
end
#Use config for username/password
elsif @config[resource_name].has_key?('username')
if @config[resource_name].has_key?('password')
RestClient::Resource.new(@config[resource_name]['url'], :user => @config[resource_name]['username'], :password => @config[resource_name]['password'])
else
#TODO: Create a custom exception to wrap CLI Exceptions
raise "Password not found for user: " + @config[resource_name]['username']
end
# Do not use authentication
else
RestClient::Resource.new(@config[resource_name]['url'])
end
end endend
end diff --git a/services/image_factory/aeolus-image/sample_data/aeolus-cli b/services/image_factory/aeolus-image/sample_data/aeolus-cli new file mode 100644 index 0000000..5b69e21 --- /dev/null +++ b/services/image_factory/aeolus-image/sample_data/aeolus-cli @@ -0,0 +1,8 @@ +# Place this file in: ~/.imagefactory-cli
Update directions to have correct path ^
+iwhd:
+conductor:
- url: http://localhost:3000/conductor
- username: admin
- password: password
diff --git a/services/image_factory/aeolus-image/spec/base_command_spec.rb b/services/image_factory/aeolus-image/spec/base_command_spec.rb new file mode 100644 index 0000000..69e0697 --- /dev/null +++ b/services/image_factory/aeolus-image/spec/base_command_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper'
+module Aeolus
- module Image
- describe BaseCommand do
describe BaseCommand do
it "should determine the correct credentials for HTTP Authentication" do
basec = BaseCommand.new
iwhd = basec.send :iwhd
iwhd.user.should == nil
conductor = basec.send :conductor
conductor.user.should == "admin"
conductor.password.should == "password"
basec = BaseCommand.new({'username' => "testusername", 'password'=> "testpassword"})
conductor = basec.send :conductor
conductor.user.should == "testusername"
conductor.password.should == "testpassword"
end
end
- end
- end
+end \ No newline at end of file diff --git a/services/image_factory/aeolus-image/spec/sample_data/aeolus-cli b/services/image_factory/aeolus-image/spec/sample_data/aeolus-cli new file mode 100644 index 0000000..574a233 --- /dev/null +++ b/services/image_factory/aeolus-image/spec/sample_data/aeolus-cli @@ -0,0 +1,7 @@ +iwhd:
+conductor:
- url: http://localhost:3000/conductor
- username: admin
- password: password
\ No newline at end of file diff --git a/services/image_factory/aeolus-image/spec/spec_helper.rb b/services/image_factory/aeolus-image/spec/spec_helper.rb index d3adf8d..ad0b5cc 100644 --- a/services/image_factory/aeolus-image/spec/spec_helper.rb +++ b/services/image_factory/aeolus-image/spec/spec_helper.rb @@ -32,4 +32,11 @@ end
Spec::Runner.configure do |config| config.include Helpers -end
- config.before(:all) do
- Aeolus::Image::BaseCommand.class_eval do
def load_config
YAML::load(File.open(File.join(File.dirname(__FILE__), "sample_data/aeolus-cli")))
end
- end
- end
+end \ No newline at end of file