diff --git a/lib/fog/rackspace/load_balancers.rb b/lib/fog/rackspace/load_balancers.rb index e961bebe9..82c696a67 100644 --- a/lib/fog/rackspace/load_balancers.rb +++ b/lib/fog/rackspace/load_balancers.rb @@ -62,6 +62,9 @@ module Fog request :remove_monitor request :get_usage request :get_load_balancer_usage + request :get_error_page + request :set_error_page + request :remove_error_page module Shared diff --git a/lib/fog/rackspace/requests/load_balancers/get_error_page.rb b/lib/fog/rackspace/requests/load_balancers/get_error_page.rb new file mode 100644 index 000000000..ff7f34321 --- /dev/null +++ b/lib/fog/rackspace/requests/load_balancers/get_error_page.rb @@ -0,0 +1,15 @@ +module Fog + module Rackspace + class LoadBalancers + class Real + def get_error_page(load_balancer_id) + request( + :expects => 200, + :path => "loadbalancers/#{load_balancer_id}/errorpage", + :method => 'GET' + ) + end + end + end + end +end diff --git a/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb b/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb new file mode 100644 index 000000000..f36d82741 --- /dev/null +++ b/lib/fog/rackspace/requests/load_balancers/remove_error_page.rb @@ -0,0 +1,15 @@ +module Fog + module Rackspace + class LoadBalancers + class Real + def remove_error_page(load_balancer_id) + request( + :expects => [200, 202], + :path => "loadbalancers/#{load_balancer_id}/errorpage", + :method => 'DELETE' + ) + end + end + end + end +end diff --git a/lib/fog/rackspace/requests/load_balancers/set_error_page.rb b/lib/fog/rackspace/requests/load_balancers/set_error_page.rb new file mode 100644 index 000000000..bbfb548a0 --- /dev/null +++ b/lib/fog/rackspace/requests/load_balancers/set_error_page.rb @@ -0,0 +1,21 @@ +module Fog + module Rackspace + class LoadBalancers + class Real + def set_error_page(load_balancer_id, content) + data = { + 'errorpage' => { + 'content' => content + } + } + request( + :body => MultiJson.encode(data), + :expects => [200, 202], + :path => "loadbalancers/#{load_balancer_id}/errorpage", + :method => 'PUT' + ) + end + end + end + end +end diff --git a/tests/rackspace/requests/load_balancers/error_page_tests.rb b/tests/rackspace/requests/load_balancers/error_page_tests.rb new file mode 100644 index 000000000..f0eef81c9 --- /dev/null +++ b/tests/rackspace/requests/load_balancers/error_page_tests.rb @@ -0,0 +1,31 @@ +Shindo.tests('Fog::Rackspace::LoadBalancers | error_page', ['rackspace', 'loadbalancers']) do + + pending if Fog.mocking? + + given_a_load_balancer_service do + given_a_load_balancer do + tests('success') do + + @lb.wait_for { ready? } + tests("#get_error_page(#{@lb.id})").formats(ERROR_PAGE_FORMAT) do + @service.get_error_page(@lb.id).body + end + + @lb.wait_for { ready? } + tests("#set_error_page(#{@lb.id}, 'hi!')").succeeds do + @service.set_error_page(@lb.id, 'hi!') + end + + @lb.wait_for { ready? } + tests("#get_error_page(#{@lb.id})").formats(ERROR_PAGE_FORMAT) do + @service.get_error_page(@lb.id).body + end + + @lb.wait_for { ready? } + tests("#remove_error_page()").succeeds do + @service.remove_error_page(@lb.id) + end + end + end + end +end diff --git a/tests/rackspace/requests/load_balancers/helper.rb b/tests/rackspace/requests/load_balancers/helper.rb index e38876c61..ff0205575 100644 --- a/tests/rackspace/requests/load_balancers/helper.rb +++ b/tests/rackspace/requests/load_balancers/helper.rb @@ -131,3 +131,9 @@ LOAD_BALANCER_FORMAT = { 'updated' => { 'time' => String }, }.merge(CONNECTION_LOGGING_FORMAT) } + +ERROR_PAGE_FORMAT = { + 'errorpage' => { + 'content' => String + } +}