Sha256: 7151fadbb9c48ee0beb13f19dddea01dea67c0f6b0b3ec2bb569da08ae19ec0b

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

module Kakine
  module Adapter
    class Real
      include Kakine::Adapter::Base
      def create_rule(security_group_id, direction, security_rule)
        begin
          security_rule = symbolized_rule(security_rule)
          Yao::SecurityGroupRule.create(security_rule.merge({'security_group_id' => security_group_id, 'direction' => direction}))
        rescue Yao::Conflict, Yao::BadRequest => e
          error_message(e.message)
        rescue Kakine::SecurityRuleError => e
          puts e
        end
      end

      def delete_rule(security_group_rule_id)
        Yao::SecurityGroupRule.destroy(security_group_rule_id)
      end

      def create_security_group(attributes)
        begin
          security_group = Yao::SecurityGroup.create(symbolized_group(attributes))
          {"id" => security_group.id}
        rescue Yao::Conflict, Yao::BadRequest => e
          error_message(e.message)
        end
      end

      def delete_security_group(security_group_id)
        begin
          Yao::SecurityGroup.destroy(security_group_id)
        rescue Yao::Conflict, Yao::BadRequest => e
          error_message(e.message)
        end
      end

      private

      def error_message(errors)
        if errors.kind_of?(JSON)
          JSON.parse(errors.response[:body]).each { |e,m| puts "#{e}:#{m["message"]}" }
        else
          puts errors
        end
      end

      def symbolized_group(attributes)
        attributes.inject({}){|data,(k,v)|data[k.to_sym] = v; data }
      end

      def symbolized_rule(security_rule)
        attributes = {}
        %w(protocol port_range_max port_range_min remote_ip ethertype).each do |k|
          attributes[k.to_sym] = security_rule.send(k)
        end

        if security_rule.remote_group
          attributes[:remote_group_id] = security_rule.remote_group_id
        else
          attributes[:remote_ip_prefix] = attributes.delete(:remote_ip) if attributes[:remote_ip]
        end
        attributes
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kakine-0.6.1 lib/kakine/adapter/real.rb