Sha256: 14046288310078b4d301e17870c6af059f784611b48ee2dfc2710b02344488af
Contents?: true
Size: 1.6 KB
Versions: 1
Compression:
Stored size: 1.6 KB
Contents
require 'piculet' require 'tempfile' require 'json' require 'aws-sdk-v1' module Sgupdater class Updater def initialize(options = {}) @options = options.dup @options[:without_convert] = true @options[:format] = :json AWS.config(@options) @client = Piculet::Client.new(@options) @exported = @client.export(without_convert: true) end def replace(from, to) @exported.each do |vpc, sgs| sgs.each do |sg, props| props[:ingress].each do |ing| ing[:ip_ranges].each_with_index do |cidr, i| if cidr == from ing[:ip_ranges][i] = to puts [vpc ? vpc : 'classic', sg, props[:name], ing[:protocol], ing[:port_range], ing[:ip_rages], ing[:groups], cidr].join("\t") end end end end end end def add(from, to) @exported.each do |vpc, sgs| sgs.each do |sg, props| props[:ingress].each do |ing| ing[:ip_ranges].each do |cidr| if cidr == from ing[:ip_ranges] << to puts [vpc ? vpc : '(classic)', sg, props[:name], ing[:protocol], ing[:port_range], ing[:ip_ranges], ing[:groups]].join("\t") end end end end end end def update exported = JSON.pretty_generate(@exported) file = Tempfile.new('exported') begin file.puts exported file.rewind file.rewind updated = @client.apply(file) ensure file.close file.unlink end updated end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sgupdater-0.2.0 | lib/sgupdater/updater.rb |