Class: Phut::VirtualLink
Overview
Defined Under Namespace
Classes: NetworkDeviceName
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#sh
Constructor Details
#initialize(name_a, name_b, logger) ⇒ VirtualLink
Returns a new instance of VirtualLink.
49
50
51
52
53
54
55
56
|
# File 'lib/phut/virtual_link.rb', line 49
def initialize(name_a, name_b, logger)
fail if name_a == name_b
@name_a = name_a
@name_b = name_b
@device_a = NetworkDeviceName.new(name_a)
@device_b = NetworkDeviceName.new(name_b)
@logger = logger
end
|
Instance Attribute Details
#device_a ⇒ Object
Returns the value of attribute device_a.
46
47
48
|
# File 'lib/phut/virtual_link.rb', line 46
def device_a
@device_a
end
|
#device_b ⇒ Object
Returns the value of attribute device_b.
47
48
49
|
# File 'lib/phut/virtual_link.rb', line 47
def device_b
@device_b
end
|
#name_a ⇒ Object
Returns the value of attribute name_a.
44
45
46
|
# File 'lib/phut/virtual_link.rb', line 44
def name_a
@name_a
end
|
#name_b ⇒ Object
Returns the value of attribute name_b.
45
46
47
|
# File 'lib/phut/virtual_link.rb', line 45
def name_b
@name_b
end
|
Class Method Details
.create(name_a, name_b, logger = NullLogger.new) ⇒ Object
10
11
12
|
# File 'lib/phut/virtual_link.rb', line 10
def self.create(name_a, name_b, logger = NullLogger.new)
new(name_a, name_b, logger).tap { |vlink| all << vlink }
end
|
.each(&block) ⇒ Object
14
15
16
|
# File 'lib/phut/virtual_link.rb', line 14
def self.each(&block)
all.each(&block)
end
|
Instance Method Details
#==(other) ⇒ Object
58
59
60
61
62
63
|
# File 'lib/phut/virtual_link.rb', line 58
def ==(other)
@name_a == other.name_a &&
@name_b == other.name_b &&
@device_a == other.device_a &&
@device_b == other.device_b
end
|
#connect_to?(vswitch) ⇒ Boolean
86
87
88
|
# File 'lib/phut/virtual_link.rb', line 86
def connect_to?(vswitch)
find_network_device(vswitch) || false
end
|
#find_network_device(vswitch_or_vhost) ⇒ Object
90
91
92
93
94
|
# File 'lib/phut/virtual_link.rb', line 90
def find_network_device(vswitch_or_vhost)
[@device_a, @device_b].detect do |each|
each.name == vswitch_or_vhost.name
end
end
|
#run ⇒ Object
65
66
67
68
69
|
# File 'lib/phut/virtual_link.rb', line 65
def run
stop if up?
add
up
end
|
#stop ⇒ Object
71
72
73
74
|
# File 'lib/phut/virtual_link.rb', line 71
def stop
return unless up?
stop!
end
|
#stop! ⇒ Object
76
77
78
79
80
|
# File 'lib/phut/virtual_link.rb', line 76
def stop!
sh "sudo ip link delete #{@device_a}"
rescue
raise "link #{@name_a} #{@name_b} does not exist!"
end
|
#up? ⇒ Boolean
82
83
84
|
# File 'lib/phut/virtual_link.rb', line 82
def up?
/^#{@device_a}\s+Link encap:Ethernet/ =~ `LANG=C ifconfig -a` || false
end
|