class Dslimple::Applier
Constants
- OPERATION_COLORS
Attributes
client[R]
options[R]
shell[R]
Public Class Methods
new(client, shell, options = {})
click to toggle source
# File lib/dslimple/applier.rb, line 13 def initialize(client, shell, options = {}) @client = client @shell = shell @options = options end
Public Instance Methods
apply(queries)
click to toggle source
# File lib/dslimple/applier.rb, line 56 def apply(queries) shell.say('Apply', :bold) queries.each do |query| show_query(query) query.execute(client, client.account_id) end end
execute()
click to toggle source
# File lib/dslimple/applier.rb, line 19 def execute dsl = Dslimple::DSL.new(options[:file], options) dsl.execute expected_zones = dsl.transform expected_zones.select! { |zone| options[:only].include?(zone.name) } unless options[:only].empty? @buildler = Dslimple::QueryBuilder.new(fetch_zones, expected_zones, options) @buildler.execute queries = @buildler.filtered_queries(options) if queries.empty? shell.say('No Changes', :bold) return end show_plan(queries) return if options[:dry_run] || !(options[:yes] || shell.yes?("Apply #{queries.size} changes. OK?(y/n) >")) apply(queries) end
fetch_zones()
click to toggle source
# File lib/dslimple/applier.rb, line 43 def fetch_zones zones = client.all_zones(with_records: true) zones.select! { |zone| options[:only].include?(zone.name) } if options[:only].any? zones end
show_plan(queries)
click to toggle source
# File lib/dslimple/applier.rb, line 49 def show_plan(queries) shell.say('Changes', :bold) queries.each do |query| show_query(query) end end
show_query(query)
click to toggle source
# File lib/dslimple/applier.rb, line 64 def show_query(query) shell.say("#{shell.set_color(query.operation.to_s[0..2], OPERATION_COLORS[query.operation])} #{query}") end