1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/ecloud/requests/compute/node_service_create.rb
2012-06-07 12:50:11 -04:00

45 lines
1.4 KiB
Ruby

module Fog
module Compute
class Ecloud
module Shared
def validate_node_service_data(service_data)
required_opts = [:name, :port, :enabled, :ip_address]
unless required_opts.all? { |opt| service_data.has_key?(opt) }
raise ArgumentError.new("Required Internet Service data missing: #{(required_opts - service_data.keys).map(&:inspect).join(", ")}")
end
end
end
class Real
include Shared
def node_service_create(service_data)
validate_node_service_data(service_data)
request(
:body => generate_node_service_request(service_data),
:expects => 201,
:method => "POST",
:headers => {},
:uri => service_data[:uri],
:parse => true
)
end
private
def generate_node_service_request(service_data)
xml = Builder::XmlMarkup.new
xml.CreateNodeService(:name => service_data[:name]) do
xml.IpAddress(:href => service_data[:ip_address], :name => service_data[:ip_address].scan(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)[0])
xml.Port service_data[:port]
xml.Enabled service_data[:enabled]
if service_data[:description]
xml.Description service_data[:description]
end
end
end
end
end
end
end