class Topo::Topology

Attributes

driver[RW]
format[RW]
network[RW]
nodes[RW]
provisioning[RW]
raw_data[R]
services[RW]

Public Class Methods

new(raw_data) click to toggle source
# File lib/topo/topology.rb, line 27
def initialize(raw_data)
  @raw_data = raw_data
   
   data = Marshal.load(Marshal.dump(raw_data))
   @provisioning = data['provisioning'] || {}
   if @provisioning['driver']
     @driver = @provisioning['driver'].split(":",2)[0]
   else
     @driver = "default"
   end
   @nodes = data['nodes'] || []
   @services = data['services'] || []
   @network = data['network'] || []

   @nodes.each do |node|
     parse_node node
   end      
end

Public Instance Methods

parse_node(node) click to toggle source
# File lib/topo/topology.rb, line 46
 def parse_node(node)
  node['attributes'] = node['normal'] if node['normal']
  node['attributes'] ||= {}
  
  node['lazy_attributes'] ||= {}
end
to_file(file) click to toggle source
# File lib/topo/topology.rb, line 53
def to_file(file)
  begin
    File.open(file, 'w') { |f| f.write(JSON.pretty_generate(@raw_data)) }    
  rescue => e
    STDERR.puts "ERROR: Cannot write to topology export file #{file} - #{e.message}"
  end
end