Sha256: e6f39805e02eb9b301ca1956414e2b44de00d34726715d8dd2948822e3762e0a
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
require 'forwardable' require 'phut/null_logger' require 'phut/open_vswitch' module Phut # Parsed DSL data. class Configuration extend Forwardable def_delegators :@all, :fetch def initialize(logger = NullLogger.new) @all = {} @logger = logger end def vswitches @all.values.select { |each| each.is_a? OpenVswitch } end def vhosts @all.values.select { |each| each.is_a? Vhost } end def links @all.values.select { |each| each.is_a? VirtualLink } end def run links.each(&:run) vswitches.each(&:run) vhosts.each { |each| each.run vhosts } end def stop vswitches.each(&:maybe_stop) vhosts.each(&:maybe_stop) links.each(&:maybe_stop) end def add_vswitch(name, attrs) check_name_conflict name @all[name] = OpenVswitch.new(attrs[:dpid], name, @logger) end def add_vhost(name, attrs) check_name_conflict name @all[name] = Vhost.new(attrs[:ip], attrs[:mac], attrs[:promisc], name, @logger) end # This method smells of :reek:LongParameterList def add_link(name_a, device_a, name_b, device_b) @all[[name_a, name_b]] = VirtualLink.new(name_a, device_a, name_b, device_b, @logger) end private def check_name_conflict(name) conflict = @all[name] fail "The name #{name} conflicts with #{conflict}." if conflict end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
phut-0.2.2 | lib/phut/configuration.rb |