From 17f6dc89f4f5d043e86f42550b53237b67a1d448 Mon Sep 17 00:00:00 2001 From: Josh Yotty Date: Thu, 28 Feb 2013 18:24:11 -0800 Subject: [PATCH] [bluebox|blb] add_machine --- lib/fog/bluebox/blb.rb | 8 +++++ lib/fog/bluebox/models/blb/lb_application.rb | 5 +++ .../blb/add_machine_to_application.rb | 34 +++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 lib/fog/bluebox/requests/blb/add_machine_to_application.rb diff --git a/lib/fog/bluebox/blb.rb b/lib/fog/bluebox/blb.rb index 20a5d15f4..f54fe26ee 100644 --- a/lib/fog/bluebox/blb.rb +++ b/lib/fog/bluebox/blb.rb @@ -30,6 +30,14 @@ module Fog request :get_lb_backend request :get_lb_backends + request :add_machine_to_application + + request :add_machine_to_backend + + request :remove_machine_from_backend + + request :update_machine + class Mock end diff --git a/lib/fog/bluebox/models/blb/lb_application.rb b/lib/fog/bluebox/models/blb/lb_application.rb index a9472efc1..079f22696 100644 --- a/lib/fog/bluebox/models/blb/lb_application.rb +++ b/lib/fog/bluebox/models/blb/lb_application.rb @@ -13,6 +13,11 @@ module Fog attribute :description attribute :created, :aliases => 'created_at' + def add_machine(lb_machine_id, options) + requires :id + service.add_machine_to_application(id, lb_machine_id, options) + end + def lb_services Fog::Bluebox::BLB::LbServices.new({ :service => service, diff --git a/lib/fog/bluebox/requests/blb/add_machine_to_application.rb b/lib/fog/bluebox/requests/blb/add_machine_to_application.rb new file mode 100644 index 000000000..90440dafb --- /dev/null +++ b/lib/fog/bluebox/requests/blb/add_machine_to_application.rb @@ -0,0 +1,34 @@ +module Fog + module Bluebox + class BLB + class Real + # Add machine to default lb_backend for each lb_service + # in the application. + # + # === Parameters + # * lb_application_id<~String> - ID of application + # * lb_machine_id<~String> - ID of machine + # * options<~Hash>: + # * port<~Integer> - port machine listens on; defaults to service listening port + # * maxconn<~Integer> - maximum number of connections server can be sent + # * backup<~Boolean> - only send traffic to machine if all others are down + # + def add_machine_to_application(lb_application_id, lb_machine_id, options = {}) + # convert to CGI array args + body = Hash[options.map {|k,v| ["lb_options[#{k}]", v] }] + body['lb_machine'] = lb_machine_id + request( + :expects => 200, + :method => 'POST', + :path => "/api/lb_applications/add_machine/#{lb_application_id}.json", + :body => body.map {|k,v| "#{CGI.escape(k)}=#{CGI.escape(v.to_s)}"}.join('&') + ) + + end + end + + class Mock + end + end + end +end