Ack On 02/24/2012 03:31 PM, Scott Seago wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=796781
lib/aeolus_cli/command/config_parser.rb | 11 +++++++---- lib/aeolus_cli/command/import_command.rb | 5 +++-- man/aeolus-image-import.1 | 8 +++++++- spec/command/import_command_spec.rb | 15 +++++++++++++-- 4 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/lib/aeolus_cli/command/config_parser.rb b/lib/aeolus_cli/command/config_parser.rb index 1401870..de9689a 100644 --- a/lib/aeolus_cli/command/config_parser.rb +++ b/lib/aeolus_cli/command/config_parser.rb @@ -151,7 +151,7 @@ module Aeolus opts.on('-T', '--target TARGET1,TARGET2', Array, 'provider type (ec2, rackspace, rhevm, etc)') do |name| @options[:target] = name end
opts.on('-E', '--environment ENVIRONMENT', 'Limit image list to environment') do |environment|
opts.on('-E', '--environment ENVIRONMENT', 'environment to build for') do |environment| @options[:environment] = environment end opts.on( '-h', '--help', 'Get usage information for this command')
@@ -233,13 +233,16 @@ module Aeolus opts.on('-A', '--account NAME,NAME', Array, 'name of specific account to import to') do |name| @options[:provider_account] = name end
opts.on('-E', '--environment ENVIRONMENT', 'environment to import into') do |environment|
@options[:environment] = environment
end opts.on( '-h', '--help', 'Get usage information for this command') opts.separator "" opts.separator "Examples:"
opts.separator "aeolus-image import --account my-ec2 --id $ami_id # import an AMI from the specified provider"
opts.separator "aeolus-image import --account my-ec2 --id $ami_id --description '<image><name>My Image</name></image>' # import an AMI from the specified provider"
opts.separator "aeolus-image import --account my-ec2 --id $ami_id --description<path_to_xml_file> # import an AMI from the specified provider"
opts.separator "aeolus-image import --account my-ec2 --id $ami_id --environment default # import an AMI from the specified provider"
opts.separator "aeolus-image import --account my-ec2 --id $ami_id --environment default --description '<image><name>My Image</name></image>' # import an AMI from the specified provider"
opts.separator "aeolus-image import --account my-ec2 --id $ami_id --environment default --description<path_to_xml_file> # import an AMI from the specified provider" opts.separator "" opts.separator "RHEV:" opts.separator "Enter the template id for the provider image id. The template id can be found through the RHEV REST API."
diff --git a/lib/aeolus_cli/command/import_command.rb b/lib/aeolus_cli/command/import_command.rb index c53d749..63ee873 100644 --- a/lib/aeolus_cli/command/import_command.rb +++ b/lib/aeolus_cli/command/import_command.rb @@ -34,7 +34,8 @@ module Aeolus
image = Aeolus::CLI::Image.new({:target_identifier => @options[:id], :image_descriptor => @options[:description],
:provider_account_name => @options[:provider_account].first})
:provider_account_name => @options[:provider_account].first,
:environment => @options[:environment]}) image.save! headers = ActiveSupport::OrderedHash.new
@@ -68,7 +69,7 @@ module Aeolus raise ArgumentError, "params should not contain nil" end
required_keys = [:id, :provider_account]
required_keys = [:id, :provider_account, :environment] optional_keys = [:description] isect = params.keys& required_keys
diff --git a/man/aeolus-image-import.1 b/man/aeolus-image-import.1 index 33a7653..8772798 100644 --- a/man/aeolus-image-import.1 +++ b/man/aeolus-image-import.1 @@ -2,7 +2,7 @@ .SH NAME aeolus-image import - command for importing existing provider images into aeolus .SH SYNOPSIS -.B aeolus-image import [-h|--help] [-u|--username] [-w|--password] [-A|--account [account-name]] [--id [provider-image-id]] [--description [path-to-file|xml string]] [-d|--daemon] +.B aeolus-image import [-h|--help] [-u|--username] [-w|--password] [-A|--account [account-name]] [--id [provider-image-id]] [-E|--environment] [--description [path-to-file|xml string]] [-d|--daemon] .SH DESCRIPTION aeolus-image import allows users to import pre-existing images that exist in cloud provders for example AMI from EC2, into aeolus. .SH OPTIONS @@ -19,6 +19,9 @@ The provider account name as it exists in Conductor from where the importing ima --id<provider-image-id> The providers ID given to the importing image .TP +-E, --environment +Limit image list to environment +.TP --description<path-to-xml-description|xml string> A user defined description to associate with the importing image .TP @@ -33,17 +36,20 @@ Import the AMI ami-1234567 from the provider account my-ec2 into aeolus .B aeolus-image import --account my-ec2 --id ami-1234567 +--environment default .TP Import the AMI ami-1234567 from the provider account my-ec2 into aeolus with a given xml description .B aeolus-image import --account my-ec2 --id ami-1234567 +--environment default --description '<image><name>myAMI</name></image>' .TP Import the AMI ami-1234567 from the provider account my-ec2 into aeolus providing a path to the description XML file .B aeolus-image import --account my-ec2 --id ami-1234567 +--environment default --description /foo/bar/description.xml .SH RHEV .TP diff --git a/spec/command/import_command_spec.rb b/spec/command/import_command_spec.rb index a221b4e..01c57a6 100644 --- a/spec/command/import_command_spec.rb +++ b/spec/command/import_command_spec.rb @@ -20,13 +20,15 @@ module Aeolus let( :description ) { "<image><name>MyImage</name></image>" } let( :options ) { { :id => "ami-5592553c", :provider_account => ["ec2-us-east-1"],
:environment => "default", :description => description } } let( :importc ) { ImportCommand.new( options ) } describe "#import_image" do context "without description parameter" do let( :options ) { { :id => "ami-5592553c",
:provider_account => ["ec2-us-east-1"] } }
:provider_account => ["ec2-us-east-1"],
:environment => "default" } } it "should import an image with default description value" do VCR.use_cassette('command/import_command/import_image_default') do
@@ -166,7 +168,8 @@ module Aeolus context "correct params" do let( :params ) { { :id => "ami-5592553c", :provider_account => ["ec2-us-east-1"],
:description => description } }
:description => description,
:environment => "default" } } it { subject.call.should be_true } end
@@ -176,10 +179,18 @@ module Aeolus it { should raise_error(ArgumentError, /missing/) } end
context "missing environment" do
let( :params ) { { :id => "ami-5592553c",
:description => description,
:provider_account => ["ec2-us-east-1"]} }
it { should raise_error(ArgumentError, /missing environment/) }
end
context "unexpected parameter" do let( :params ) { { :id => "ami-5592553c", :provider_account => ["ec2-us-east-1"], :other_parameter => "other_value",
:environment => "default", :description => description } } it { should raise_error(ArgumentError, /unexpected/) } end