From: Martyn Taylor <mtaylor(a)redhat.com>
---
lib/aeolus_cli/command/delete_command.rb | 42 ++++++++++---------
spec/command/delete_command_spec.rb | 41 +++++++++++++++++++
.../delete_build_no_provider_content.yml | 42 ++++++++++++++++++++
.../delete_image_no_provider_content.yml | 42 ++++++++++++++++++++
.../delete_target_image_no_provider_content.yml | 42 ++++++++++++++++++++
5 files changed, 189 insertions(+), 20 deletions(-)
create mode 100644
spec/vcr/cassettes/command/delete_command/delete_build_no_provider_content.yml
create mode 100644
spec/vcr/cassettes/command/delete_command/delete_image_no_provider_content.yml
create mode 100644
spec/vcr/cassettes/command/delete_command/delete_target_image_no_provider_content.yml
diff --git a/lib/aeolus_cli/command/delete_command.rb
b/lib/aeolus_cli/command/delete_command.rb
index 54de83f..7343262 100644
--- a/lib/aeolus_cli/command/delete_command.rb
+++ b/lib/aeolus_cli/command/delete_command.rb
@@ -70,36 +70,38 @@ module Aeolus
print_provider_content(response.body)
exit(0)
end
+
rescue => e
- handle_exception(e)
+ exit(1)
end
end
private
def print_provider_content(content_xml)
h = Hash.from_xml(content_xml)
- provider_content =
h[h.keys.first]["content"]["provider_content"]
- content = provider_content.instance_of?(Array) ? provider_content :
[provider_content]
- if content.size > 0
- widths = calculate_widths(content)
- puts "N.B. The following provider content must be manually removed"
- puts ""
-
- # Print Headers
- printf("%-#{widths[:provider] + 5}s", "Provider")
- printf("%-#{widths[:id] + 5}s", "ID")
- puts ""
+ if provider_content =
h[h.keys.first]["content"]["provider_content"]
+ content = provider_content.instance_of?(Array) ? provider_content :
[provider_content]
+ if content.size > 0
+ widths = calculate_widths(content)
+ puts "N.B. The following provider content must be manually
removed"
+ puts ""
- # Print Column Lines
- printf("%-#{widths[:provider] + 5}s", "-" *
widths[:provider])
- printf("%-#{widths[:id] + 5}s", "-" * widths[:id])
- puts ""
+ # Print Headers
+ printf("%-#{widths[:provider] + 5}s", "Provider")
+ printf("%-#{widths[:id] + 5}s", "ID")
+ puts ""
- # Print Content
- content.each do |pc|
- printf("%-#{widths[:provider] + 5}s", pc["provider"])
- printf("%-#{widths[:id] + 5}s", pc["target_identifier"])
+ # Print Column Lines
+ printf("%-#{widths[:provider] + 5}s", "-" *
widths[:provider])
+ printf("%-#{widths[:id] + 5}s", "-" * widths[:id])
puts ""
+
+ # Print Content
+ content.each do |pc|
+ printf("%-#{widths[:provider] + 5}s", pc["provider"])
+ printf("%-#{widths[:id] + 5}s",
pc["target_identifier"])
+ puts ""
+ end
end
end
end
diff --git a/spec/command/delete_command_spec.rb b/spec/command/delete_command_spec.rb
index 7325161..a15ac39 100644
--- a/spec/command/delete_command_spec.rb
+++ b/spec/command/delete_command_spec.rb
@@ -73,6 +73,47 @@ module Aeolus
end
end
+ context "Delete with no Provider Content" do
+ it "should correctly return when deleting an image with no Provider
Images" do
+
VCR.use_cassette('command/delete_command/delete_image_no_provider_content') do
+ @options = {:image => "af1b3773-b229-406a-b59c-f5f96ebc2d0b"}
+ dc = DeleteCommand.new(@options)
+ begin
+ dc.image
+ rescue SystemExit => e
+ e.status.should == 0
+ end
+ $stdout.string.should include("Image:
af1b3773-b229-406a-b59c-f5f96ebc2d0b Deleted Successfully")
+ end
+ end
+
+ it "should correctly return when deleting build with no Provider
Images" do
+
VCR.use_cassette('command/delete_command/delete_build_no_provider_content') do
+ @options = {:build => "85e1efd5-890a-422f-adfa-d340ddcae187"}
+ dc = DeleteCommand.new(@options)
+ begin
+ dc.build
+ rescue SystemExit => e
+ e.status.should == 0
+ end
+ $stdout.string.should include("Build:
85e1efd5-890a-422f-adfa-d340ddcae187 Deleted Successfully")
+ end
+ end
+
+ it "should correctly return when deleting a target image with no Provider
Images" do
+
VCR.use_cassette('command/delete_command/delete_target_image_no_provider_content')
do
+ @options = {:targetimage =>
"93bc6d11-6b09-4b1c-92a3-c580ca4f6f3b"}
+ dc = DeleteCommand.new(@options)
+ begin
+ dc.target_image
+ rescue SystemExit => e
+ e.status.should == 0
+ end
+ $stdout.string.should include("Target Image:
93bc6d11-6b09-4b1c-92a3-c580ca4f6f3b Deleted Successfully")
+ end
+ end
+ end
+
context "Delete Failed Not Found" do
it "should display an appropriate message when the given image is not
found" do
VCR.use_cassette('command/delete_command/delete_image_not_found') do
diff --git
a/spec/vcr/cassettes/command/delete_command/delete_build_no_provider_content.yml
b/spec/vcr/cassettes/command/delete_command/delete_build_no_provider_content.yml
new file mode 100644
index 0000000..854f6ef
--- /dev/null
+++ b/spec/vcr/cassettes/command/delete_command/delete_build_no_provider_content.yml
@@ -0,0 +1,42 @@
+---
+- !ruby/struct:VCR::HTTPInteraction
+ request: !ruby/struct:VCR::Request
+ method: :delete
+ uri:
https://admin:password@localhost:443/conductor/api/builds/85e1efd5-890a-4...
+ body:
+ headers:
+ accept-language:
+ - en
+ accept:
+ - application/xml
+ response: !ruby/struct:VCR::Response
+ status: !ruby/struct:VCR::ResponseStatus
+ code: 200
+ message: OK
+ headers:
+ x-ua-compatible:
+ - IE=Edge,chrome=1
+ etag:
+ - "\"d27ce6cf60644af5736fff88e6d73dda\""
+ content-type:
+ - application/xml; charset=utf-8
+ server:
+ - thin 1.2.11 codename Bat-Shit Crazy
+ date:
+ - Tue, 20 Dec 2011 14:35:06 GMT
+ x-runtime:
+ - "0.258616"
+ set-cookie:
+ -
_session_id=BAh7CCIPc2Vzc2lvbl9pZCIlZDJkYWI3NDcwZGRlNjdiMTM3ODhjYzJhNjMwMmVjMTgiGXdhcmRlbi51c2VyLnVzZXIua2V5aQYiEGJyZWFkY3J1bWJzWwA%3D--cdf1db4ad503e7a2177a113543adc7d62c73cd51;
path=/; HttpOnly
+ cache-control:
+ - max-age=0, private, must-revalidate
+ transfer-encoding:
+ - chunked
+ body: |
+ <build
href='https://localhost/conductor/api/images/85e1efd5-890a-422f-adfa-d340ddcae187'
id='85e1efd5-890a-422f-adfa-d340ddcae187'>
+ <status>DELETED</status>
+ <content>
+ </content>
+ </build>
+
+ http_version: "1.1
\ No newline at end of file
diff --git
a/spec/vcr/cassettes/command/delete_command/delete_image_no_provider_content.yml
b/spec/vcr/cassettes/command/delete_command/delete_image_no_provider_content.yml
new file mode 100644
index 0000000..c9f7b16
--- /dev/null
+++ b/spec/vcr/cassettes/command/delete_command/delete_image_no_provider_content.yml
@@ -0,0 +1,42 @@
+---
+- !ruby/struct:VCR::HTTPInteraction
+ request: !ruby/struct:VCR::Request
+ method: :delete
+ uri:
https://admin:password@localhost:443/conductor/api/images/af1b3773-b229-4...
+ body:
+ headers:
+ accept-language:
+ - en
+ accept:
+ - application/xml
+ response: !ruby/struct:VCR::Response
+ status: !ruby/struct:VCR::ResponseStatus
+ code: 200
+ message: OK
+ headers:
+ x-ua-compatible:
+ - IE=Edge,chrome=1
+ etag:
+ - "\"5d1bc3e7c96eba873098df89f4af1ee2\""
+ content-type:
+ - application/xml; charset=utf-8
+ server:
+ - thin 1.2.11 codename Bat-Shit Crazy
+ date:
+ - Tue, 20 Dec 2011 14:30:22 GMT
+ x-runtime:
+ - "0.309692"
+ set-cookie:
+ -
_session_id=BAh7CCIPc2Vzc2lvbl9pZCIlZTJjNTVhZDliMTljMzUyOTZiMDFiOWZlYWVlNTU2OTgiGXdhcmRlbi51c2VyLnVzZXIua2V5aQYiEGJyZWFkY3J1bWJzWwA%3D--7db888b26ee555c9d51cad92eec0f20f725fd6f3;
path=/; HttpOnly
+ cache-control:
+ - max-age=0, private, must-revalidate
+ transfer-encoding:
+ - chunked
+ body: |
+ <image
href='https://localhost/conductor/api/images/af1b3773-b229-406a-b59c-f5f96ebc2d0b'
id='af1b3773-b229-406a-b59c-f5f96ebc2d0b'>
+ <status>DELETED</status>
+ <content>
+ </content>
+ </image>
+
+ http_version: "1.1"
\ No newline at end of file
diff --git
a/spec/vcr/cassettes/command/delete_command/delete_target_image_no_provider_content.yml
b/spec/vcr/cassettes/command/delete_command/delete_target_image_no_provider_content.yml
new file mode 100644
index 0000000..717757b
--- /dev/null
+++
b/spec/vcr/cassettes/command/delete_command/delete_target_image_no_provider_content.yml
@@ -0,0 +1,42 @@
+---
+- !ruby/struct:VCR::HTTPInteraction
+ request: !ruby/struct:VCR::Request
+ method: :delete
+ uri:
https://admin:password@localhost:443/conductor/api/target_images/93bc6d11...
+ body:
+ headers:
+ accept-language:
+ - en
+ accept:
+ - application/xml
+ response: !ruby/struct:VCR::Response
+ status: !ruby/struct:VCR::ResponseStatus
+ code: 200
+ message: OK
+ headers:
+ x-ua-compatible:
+ - IE=Edge,chrome=1
+ etag:
+ - "\"641448cca5a5780b18b324c7308ff65a\""
+ content-type:
+ - application/xml; charset=utf-8
+ server:
+ - thin 1.2.11 codename Bat-Shit Crazy
+ date:
+ - Tue, 20 Dec 2011 14:39:50 GMT
+ x-runtime:
+ - "0.204005"
+ set-cookie:
+ -
_session_id=BAh7CCIPc2Vzc2lvbl9pZCIlNTNkZGFmNGNkOGZhNjQxZmI1Nzc5MTM3OTQxN2VjNTYiGXdhcmRlbi51c2VyLnVzZXIua2V5aQYiEGJyZWFkY3J1bWJzWwA%3D--b59985e00d69a7903bc134a51a9f1cd00edc276d;
path=/; HttpOnly
+ cache-control:
+ - max-age=0, private, must-revalidate
+ transfer-encoding:
+ - chunked
+ body: |
+ <target_image
href='https://localhost/conductor/api/images/93bc6d11-6b09-4b1c-92a3-c580ca4f6f3b'
id='93bc6d11-6b09-4b1c-92a3-c580ca4f6f3b'>
+ <status>DELETED</status>
+ <content>
+ </content>
+ </target_image>
+
+ http_version: "1.1"
\ No newline at end of file
--
1.7.6.4