Class: Phut::VirtualLink

Inherits:
Object
  • Object
show all
Includes:
ShellRunner
Defined in:
lib/phut/virtual_link.rb

Overview

Network virtual link.

Defined Under Namespace

Classes: NetworkDeviceName

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ShellRunner

#sh

Constructor Details

#initialize(name_a, name_b, logger = NullLogger.new) ⇒ VirtualLink

Returns a new instance of VirtualLink.



34
35
36
37
38
39
40
41
# File 'lib/phut/virtual_link.rb', line 34

def initialize(name_a, name_b, logger = NullLogger.new)
  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_aObject (readonly)

Returns the value of attribute device_a.



31
32
33
# File 'lib/phut/virtual_link.rb', line 31

def device_a
  @device_a
end

#device_bObject (readonly)

Returns the value of attribute device_b.



32
33
34
# File 'lib/phut/virtual_link.rb', line 32

def device_b
  @device_b
end

#name_aObject (readonly)

Returns the value of attribute name_a.



29
30
31
# File 'lib/phut/virtual_link.rb', line 29

def name_a
  @name_a
end

#name_bObject (readonly)

Returns the value of attribute name_b.



30
31
32
# File 'lib/phut/virtual_link.rb', line 30

def name_b
  @name_b
end

Instance Method Details

#find_network_device_by_name(name) ⇒ Object



64
65
66
# File 'lib/phut/virtual_link.rb', line 64

def find_network_device_by_name(name)
  [@device_a, @device_b].find { |each| each.name == name }
end

#maybe_stopObject



55
56
57
58
# File 'lib/phut/virtual_link.rb', line 55

def maybe_stop
  return unless up?
  stop
end

#runObject



43
44
45
46
47
# File 'lib/phut/virtual_link.rb', line 43

def run
  stop if up?
  add
  up
end

#stopObject



49
50
51
52
53
# File 'lib/phut/virtual_link.rb', line 49

def stop
  sh "sudo ip link delete #{@device_a}"
rescue
  raise "link #{@name_a} #{@name_b} does not exist!"
end

#up?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/phut/virtual_link.rb', line 60

def up?
  /^#{@device_a}\s+Link encap:Ethernet/ =~ `ifconfig -a`
end