Sha256: dcd671be2243dabe924c01489fee73aecfc9f7c4d7387b64c337ea57f6843e36
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
require 'ridley' require 'set' class SyncServers attr_reader :status def initialize knives @knives = knives @started = Time.now @status = sync_servers.merge \ elapsed: Time.now - @started end private def ridleys @ridleys ||= @knives.map do |knife| Ridley.from_chef_config(knife) end end def all_nodes @all_nodes ||= ridleys.flat_map do |ridley| ridley.partial_search(:node, '*:*', %w[ ohai_time ]) end end def merged_nodes @merged_nodes ||= all_nodes.group_by(&:name).pmap do |name, copies| copies.sort_by { |c| c.automatic.ohai_time }.last end end def sync_servers nodes = merged_nodes failures = Set.new nodes.peach(8) do |n| n.reload ridleys.peach(4) do |ridley| ridley.node.create(n) \ rescue ridley.node.update(n) \ rescue failures << n.name end puts 'Synced node "%s"' % n.name end return { failures: failures, num_successes: nodes.length - failures.length, num_failures: failures.length, num_nodes: nodes.length } rescue return nil end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kitchen_hooks-1.7.0 | lib/kitchen_hooks/helpers/sync_servers.rb |