Class: VagrantPlugins::ProviderZone::QGA::NetworkManagerBackend
- Inherits:
-
BaseBackend
- Object
- BaseBackend
- VagrantPlugins::ProviderZone::QGA::NetworkManagerBackend
- Defined in:
- lib/vagrant-zones/qga/network_manager_backend.rb
Overview
Writes per-NIC keyfiles under /etc/NetworkManager/system-connections/ and reloads via ‘nmcli connection reload`.
Constant Summary collapse
- KEYFILE_DIR =
'/etc/NetworkManager/system-connections'- NMCLI_BIN =
'/usr/bin/nmcli'
Instance Method Summary collapse
Methods inherited from BaseBackend
Instance Method Details
#apply(uii, qga, nics, _ctx) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/vagrant-zones/qga/network_manager_backend.rb', line 24 def apply(uii, qga, nics, _ctx) nics.each do |entry| keyfile = render_keyfile(entry) path = "#{KEYFILE_DIR}/#{entry[:vnic_name]}.nmconnection" write_result = qga.exec('/bin/sh', args: ['-c', "mkdir -p #{KEYFILE_DIR} && cat > #{path} && chmod 600 #{path}"], input_data: keyfile, timeout: 30) raise Errors::QGAError, message: "NM keyfile write failed for #{path}: #{write_result[:stderr]}" if write_result[:exitcode] != 0 uii.info("#{I18n.t('vagrant_zones.qga_backend_apply')} NetworkManager #{path}") end reload = qga.exec(NMCLI_BIN, args: %w[connection reload], timeout: 30) raise Errors::QGAError, message: "nmcli connection reload failed: #{reload[:stderr]}" if reload[:exitcode] != 0 nics.each do |entry| qga.exec(NMCLI_BIN, args: ['connection', 'up', entry[:vnic_name]], timeout: 30) end end |
#cleanup(uii, qga, nics) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/vagrant-zones/qga/network_manager_backend.rb', line 44 def cleanup(uii, qga, nics) nics.each do |entry| qga.exec('/bin/rm', args: ['-f', "#{KEYFILE_DIR}/#{entry[:vnic_name]}.nmconnection"], timeout: 10) end qga.exec(NMCLI_BIN, args: %w[connection reload], timeout: 30) uii.info("#{I18n.t('vagrant_zones.qga_backend_cleanup')} NetworkManager") end |
#detect?(qga) ⇒ Boolean
15 16 17 18 19 20 21 22 |
# File 'lib/vagrant-zones/qga/network_manager_backend.rb', line 15 def detect?(qga) return false unless qga.exec('/usr/bin/test', args: ['-x', NMCLI_BIN], timeout: 10)[:exitcode].zero? result = qga.exec('/usr/bin/systemctl', args: %w[is-active NetworkManager], timeout: 10) result[:stdout].to_s.strip == 'active' rescue StandardError false end |