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.



38
39
40
41
42
43
44
45
# File 'lib/phut/virtual_link.rb', line 38

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.



35
36
37
# File 'lib/phut/virtual_link.rb', line 35

def device_a
  @device_a
end

#device_bObject (readonly)

Returns the value of attribute device_b.



36
37
38
# File 'lib/phut/virtual_link.rb', line 36

def device_b
  @device_b
end

#name_aObject (readonly)

Returns the value of attribute name_a.



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

def name_a
  @name_a
end

#name_bObject (readonly)

Returns the value of attribute name_b.



34
35
36
# File 'lib/phut/virtual_link.rb', line 34

def name_b
  @name_b
end

Instance Method Details

#connect_to?(vswitch) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/phut/virtual_link.rb', line 68

def connect_to?(vswitch)
  find_network_device(vswitch) || false
end

#find_network_device(vswitch_or_vhost) ⇒ Object



72
73
74
75
76
# File 'lib/phut/virtual_link.rb', line 72

def find_network_device(vswitch_or_vhost)
  [@device_a, @device_b].detect do |each|
    each.name == vswitch_or_vhost.name
  end
end

#maybe_stopObject



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

def maybe_stop
  return unless up?
  stop
end

#runObject



47
48
49
50
51
# File 'lib/phut/virtual_link.rb', line 47

def run
  stop if up?
  add
  up
end

#stopObject



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

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

#up?Boolean

Returns:

  • (Boolean)


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

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