Shindo.tests("Fog::Compute[:brightbox] | load balancer requests", ["brightbox"]) do tests("success") do unless Fog.mocking? @node = Brightbox::Compute::TestSupport.get_test_server node_id = @node.id end create_options = { :nodes => [{ :node => node_id }], :listeners => [{ :in => 80, :out => 8080, :protocol => "http" }], :healthcheck => { :type => "http", :port => 80 } } tests("#create_load_balancer(#{create_options.inspect})") do pending if Fog.mocking? result = Fog::Compute[:brightbox].create_load_balancer(create_options) @load_balancer_id = result["id"] data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end unless Fog.mocking? Fog::Compute[:brightbox].load_balancers.get(@load_balancer_id).wait_for { ready? } end tests("#list_load_balancers()") do pending if Fog.mocking? result = Fog::Compute[:brightbox].list_load_balancers data_matches_schema(Brightbox::Compute::Formats::Collection::LOAD_BALANCERS, :allow_extra_keys => true) { result } end tests("#get_load_balancer('#{@load_balancer_id}')") do pending if Fog.mocking? result = Fog::Compute[:brightbox].get_load_balancer(@load_balancer_id) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end update_options = { :name => "New name" } tests("#update_load_balancer('#{@load_balancer_id}', #{update_options.inspect})") do pending if Fog.mocking? result = Fog::Compute[:brightbox].update_load_balancer(@load_balancer_id, update_options) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end add_listeners_options = { :listeners => [{ :out => 28_080, :in => 8080, :protocol => "http" }] } tests("#add_listeners_load_balancer('#{@load_balancer_id}', #{add_listeners_options.inspect})") do pending if Fog.mocking? result = Fog::Compute[:brightbox].add_listeners_load_balancer(@load_balancer_id, add_listeners_options) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end remove_listeners_options = { :listeners => [{ :out => 28_080, :in => 8080, :protocol => "http" }] } tests("#remove_listeners_load_balancer('#{@load_balancer_id}', #{remove_listeners_options.inspect})") do pending if Fog.mocking? result = Fog::Compute[:brightbox].remove_listeners_load_balancer(@load_balancer_id, remove_listeners_options) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end unless Fog.mocking? @node2 = Brightbox::Compute::TestSupport.get_test_server second_node_id = @node2.id end # Can't remove the last node so we need to add a second... add_nodes_options = { :nodes => [{ :node => second_node_id }] } tests("#add_nodes_load_balancer('#{@load_balancer_id}', #{add_nodes_options.inspect})") do pending if Fog.mocking? result = Fog::Compute[:brightbox].add_nodes_load_balancer(@load_balancer_id, add_nodes_options) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end # ...before we can attempt to remove either remove_nodes_options = { :nodes => [{ :node => node_id }] } tests("#remove_nodes_load_balancer('#{@load_balancer_id}', #{remove_nodes_options.inspect})") do pending if Fog.mocking? result = Fog::Compute[:brightbox].remove_nodes_load_balancer(@load_balancer_id, remove_nodes_options) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end tests("#delete_load_balancer('#{@load_balancer_id}')") do pending if Fog.mocking? result = Fog::Compute[:brightbox].delete_load_balancer(@load_balancer_id) data_matches_schema(Brightbox::Compute::Formats::Full::LOAD_BALANCER, :allow_extra_keys => true) { result } end unless Fog.mocking? @node.destroy @node2.destroy end end tests("failure") do tests("#create_load_balancer").raises(ArgumentError) do pending if Fog.mocking? Fog::Compute[:brightbox].create_load_balancer end tests("#get_load_balancer('lba-00000')").raises(Excon::Errors::NotFound) do pending if Fog.mocking? Fog::Compute[:brightbox].get_load_balancer("lba-00000") end tests("#get_load_balancer").raises(ArgumentError) do pending if Fog.mocking? Fog::Compute[:brightbox].get_load_balancer end end end