Class | VirtP2V::NetworkDevice |
In: |
lib/virt-p2v/netdevice.rb
lib/virt-p2v/netdevice.rb |
Parent: | Object |
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 |
activated | [R] | |
activated | [R] | |
connected | [R] | |
connected | [R] | |
mac | [R] | |
mac | [R] | |
name | [R] | |
name | [R] | |
state | [R] | |
state | [R] |
# File lib/virt-p2v/netdevice.rb, line 97 97: def self.add_listener(cb) 98: @@listeners.push(cb) 99: end
# File lib/virt-p2v/netdevice.rb, line 97 97: def self.add_listener(cb) 98: @@listeners.push(cb) 99: end
# 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
# 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
# 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
# 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