lib/kakine/adapter/real.rb in kakine-0.2.0 vs lib/kakine/adapter/real.rb in kakine-0.3.0

- old
+ new

@@ -1,34 +1,53 @@ +require 'json' module Kakine class Adapter class Real - def create_rule(security_group_id, direction, attributes) - attributes.delete("direction") - if attributes["port"] - attributes["port_range_max"] = attributes["port_range_min"] = attributes.delete("port") + def create_rule(security_group_id, direction, security_rule) + attributes = {} + %w(protocol port_range_max port_range_min remote_ip ethertype).each do |k| + attributes[k] = eval("security_rule.#{k}") end if attributes["remote_ip"] attributes["remote_ip_prefix"] = attributes.delete("remote_ip") end data = {} attributes.each{|k,v| data[k.to_sym] = v} - Fog::Network[:openstack].create_security_group_rule(security_group_id, direction, data) + begin + Fog::Network[:openstack].create_security_group_rule(security_group_id, direction, data) + rescue Excon::Errors::Conflict => e + JSON.parse(e.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" } + rescue Excon::Errors::BadRequest => e + JSON.parse(e.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" } + end end def delete_rule(security_group_rule_id) Fog::Network[:openstack].delete_security_group_rule(security_group_rule_id) end def create_security_group(attributes) data = {} attributes.each{|k,v| data[k.to_sym] = v} - response = Fog::Network[:openstack].create_security_group(data) - response.data[:body]["security_group"]["id"] + begin + response = Fog::Network[:openstack].create_security_group(data) + response.data[:body]["security_group"]["id"] + rescue Excon::Errors::Conflict => e + JSON.parse(e.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" } + rescue Excon::Errors::BadRequest => e + JSON.parse(e.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" } + end end def delete_security_group(security_group_id) - Fog::Network[:openstack].delete_security_group(security_group_id) + begin + Fog::Network[:openstack].delete_security_group(security_group_id) + rescue Excon::Errors::Conflict => e + JSON.parse(e.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" } + rescue Excon::Errors::BadRequest => e + JSON.parse(e.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" } + end end end end end