Class VirtP2V::NetworkDevice
In: lib/virt-p2v/netdevice.rb
lib/virt-p2v/netdevice.rb
Parent: Object

Methods

[]   []   activate   activate   add_listener   add_listener   all_devices   all_devices   new   new  

Included Modules

GetText GetText

Constants

CONNECTION = 'org.freedesktop.NetworkManagerSettings.Connection'.freeze   Some NetworkManager names, for convenience
DEVICE = 'org.freedesktop.NetworkManager.Device'.freeze
NETWORKMANAGER = 'org.freedesktop.NetworkManager'.freeze
PROPERTIES = 'org.freedesktop.DBus.Properties'.freeze
SETTINGS = 'org.freedesktop.NetworkManagerSettings'.freeze
WIRED = 'org.freedesktop.NetworkManager.Device.Wired'.freeze
TYPE_UNKNOWN = 0   NetworkManager device types projects.gnome.org/NetworkManager/developers/spec-08.html
TYPE_ETHERNET = 1
TYPE_WIFI = 2
TYPE_GSM = 3
TYPE_CDMA = 4
STATE_UNKNOWN = 0   NetworkManager device states
STATE_UNMANAGED = 1
STATE_UNAVAILABLE = 2
STATE_DISCONNECTED = 3
STATE_PREPARE = 4
STATE_CONFIG = 5
STATE_NEED_AUTH = 6
STATE_IP_CONFIG = 7
STATE_ACTIVATED = 8
STATE_FAILED = 9
STATES = { 0 => _('Unknown').freeze, # For completeness 1 => _('Unmanaged').freeze, # For completeness 2 => _('No cable connected').freeze, 3 => _('Not connected').freeze, 4 => _('Preparing to connect').freeze, 5 => _('Configuring').freeze, 6 => _('Waiting for authentication').freeze, 7 => _('Obtaining an IP address').freeze, 8 => _('Connected').freeze, 9 => _('Connection failed').freeze   Human readable descriptions of NetworkManager Device States
CONNECTION = 'org.freedesktop.NetworkManagerSettings.Connection'.freeze   Some NetworkManager names, for convenience
DEVICE = 'org.freedesktop.NetworkManager.Device'.freeze
NETWORKMANAGER = 'org.freedesktop.NetworkManager'.freeze
PROPERTIES = 'org.freedesktop.DBus.Properties'.freeze
SETTINGS = 'org.freedesktop.NetworkManagerSettings'.freeze
WIRED = 'org.freedesktop.NetworkManager.Device.Wired'.freeze
TYPE_UNKNOWN = 0   NetworkManager device types projects.gnome.org/NetworkManager/developers/spec-08.html
TYPE_ETHERNET = 1
TYPE_WIFI = 2
TYPE_GSM = 3
TYPE_CDMA = 4
STATE_UNKNOWN = 0   NetworkManager device states
STATE_UNMANAGED = 1
STATE_UNAVAILABLE = 2
STATE_DISCONNECTED = 3
STATE_PREPARE = 4
STATE_CONFIG = 5
STATE_NEED_AUTH = 6
STATE_IP_CONFIG = 7
STATE_ACTIVATED = 8
STATE_FAILED = 9
STATES = { 0 => _('Unknown').freeze, # For completeness 1 => _('Unmanaged').freeze, # For completeness 2 => _('No cable connected').freeze, 3 => _('Not connected').freeze, 4 => _('Preparing to connect').freeze, 5 => _('Configuring').freeze, 6 => _('Waiting for authentication').freeze, 7 => _('Obtaining an IP address').freeze, 8 => _('Connected').freeze, 9 => _('Connection failed').freeze   Human readable descriptions of NetworkManager Device States

Attributes

activated  [R] 
activated  [R] 
connected  [R] 
connected  [R] 
mac  [R] 
mac  [R] 
name  [R] 
name  [R] 
state  [R] 
state  [R] 

Public Class methods

[Source]

     # File lib/virt-p2v/netdevice.rb, line 101
101:     def self.[](name)
102:         @@devices[name]
103:     end

[Source]

     # File lib/virt-p2v/netdevice.rb, line 101
101:     def self.[](name)
102:         @@devices[name]
103:     end

[Source]

    # File lib/virt-p2v/netdevice.rb, line 97
97:     def self.add_listener(cb)
98:         @@listeners.push(cb)
99:     end

[Source]

    # File lib/virt-p2v/netdevice.rb, line 97
97:     def self.add_listener(cb)
98:         @@listeners.push(cb)
99:     end

[Source]

    # File lib/virt-p2v/netdevice.rb, line 93
93:     def self.all_devices()
94:         @@devices.values
95:     end

[Source]

    # File lib/virt-p2v/netdevice.rb, line 93
93:     def self.all_devices()
94:         @@devices.values
95:     end

[Source]

    # File lib/virt-p2v/netdevice.rb, line 69
69:     def initialize(obj, device, props)
70:         device.default_iface = WIRED
71: 
72:         @nm_obj = obj
73:         @name   = props.Get(DEVICE, 'Interface')[0]
74:         @mac    = props.Get(WIRED, 'HwAddress')[0]
75:         state   = props.Get(WIRED, 'State')[0]
76: 
77:         # Lookup by name
78:         @@devices[@name] = self
79: 
80:         state_updated(state)
81: 
82:         # Register a listener for state changes
83:         device.on_signal('PropertiesChanged') { |props|
84:             if props.has_key?('State') then
85:                 state_updated(props['State'])
86: 
87:                 # Notify registered state change handlers
88:                 @@listeners.each { |cb| cb.call(self) }
89:             end
90:         }
91:     end

[Source]

    # File lib/virt-p2v/netdevice.rb, line 69
69:     def initialize(obj, device, props)
70:         device.default_iface = WIRED
71: 
72:         @nm_obj = obj
73:         @name   = props.Get(DEVICE, 'Interface')[0]
74:         @mac    = props.Get(WIRED, 'HwAddress')[0]
75:         state   = props.Get(WIRED, 'State')[0]
76: 
77:         # Lookup by name
78:         @@devices[@name] = self
79: 
80:         state_updated(state)
81: 
82:         # Register a listener for state changes
83:         device.on_signal('PropertiesChanged') { |props|
84:             if props.has_key?('State') then
85:                 state_updated(props['State'])
86: 
87:                 # Notify registered state change handlers
88:                 @@listeners.each { |cb| cb.call(self) }
89:             end
90:         }
91:     end

Public Instance methods

[Source]

     # File lib/virt-p2v/netdevice.rb, line 105
105:     def activate(auto, ip, prefix, gateway, dns)
106:         # Get an IP config dependent on whether @ip_address is IPv4 or IPv6
107:         ip_config = auto ? get_config_auto :
108:                            ip.ipv4? ? get_config_ipv4() : get_config_ipv6()
109: 
110:         # Create a new NetworkManager connection object
111:         settings = @@nm_service.object(
112:             '/org/freedesktop/NetworkManagerSettings')
113:         settings.introspect()
114:         settings.default_iface = SETTINGS
115: 
116:         uuid = `uuidgen`.chomp
117:         settings.AddConnection(
118:             'connection' => {
119:                 'uuid' => uuid,
120:                 'id' => 'P2V',
121:                 'type' => '802-3-ethernet',
122:                 'autoconnect' => false
123:             },
124:             '802-3-ethernet' => {},
125:             'ipv4' => ip_config['ipv4'],
126:             'ipv6' => ip_config['ipv6']
127:         )
128: 
129:         # Find the connection we just created
130:         # XXX: There must be a better way to get this!
131:         conn = settings.ListConnections()[0].each { |i|
132:             conn = @@nm_service.object(i)
133:             conn.introspect
134:             conn.default_iface = CONNECTION
135: 
136:             break i if conn.GetSettings()[0]['connection']['uuid'] == uuid
137:         }
138: 
139:         nm = @@nm_service.object('/org/freedesktop/NetworkManager')
140:         nm.introspect
141:         nm.default_iface = NETWORKMANAGER
142:         nm.ActivateConnection('org.freedesktop.NetworkManagerSystemSettings',
143:                              conn, @nm_obj, '/')
144:     end

[Source]

     # File lib/virt-p2v/netdevice.rb, line 105
105:     def activate(auto, ip, prefix, gateway, dns)
106:         # Get an IP config dependent on whether @ip_address is IPv4 or IPv6
107:         ip_config = auto ? get_config_auto :
108:                            ip.ipv4? ? get_config_ipv4() : get_config_ipv6()
109: 
110:         # Create a new NetworkManager connection object
111:         settings = @@nm_service.object(
112:             '/org/freedesktop/NetworkManagerSettings')
113:         settings.introspect()
114:         settings.default_iface = SETTINGS
115: 
116:         uuid = `uuidgen`.chomp
117:         settings.AddConnection(
118:             'connection' => {
119:                 'uuid' => uuid,
120:                 'id' => 'P2V',
121:                 'type' => '802-3-ethernet',
122:                 'autoconnect' => false
123:             },
124:             '802-3-ethernet' => {},
125:             'ipv4' => ip_config['ipv4'],
126:             'ipv6' => ip_config['ipv6']
127:         )
128: 
129:         # Find the connection we just created
130:         # XXX: There must be a better way to get this!
131:         conn = settings.ListConnections()[0].each { |i|
132:             conn = @@nm_service.object(i)
133:             conn.introspect
134:             conn.default_iface = CONNECTION
135: 
136:             break i if conn.GetSettings()[0]['connection']['uuid'] == uuid
137:         }
138: 
139:         nm = @@nm_service.object('/org/freedesktop/NetworkManager')
140:         nm.introspect
141:         nm.default_iface = NETWORKMANAGER
142:         nm.ActivateConnection('org.freedesktop.NetworkManagerSystemSettings',
143:                              conn, @nm_obj, '/')
144:     end

[Validate]