Class: VagrantPlugins::ProviderZone::QGA::IfupdownBackend
- Inherits:
-
BaseBackend
- Object
- BaseBackend
- VagrantPlugins::ProviderZone::QGA::IfupdownBackend
- Defined in:
- lib/vagrant-zones/qga/ifupdown_backend.rb
Overview
Rewrites a managed block in /etc/network/interfaces and brings interfaces up. Block is delimited by BEGIN/END marker comments so subsequent applies stay idempotent.
Constant Summary collapse
- IFACES_PATH =
'/etc/network/interfaces'- BEGIN_MARKER =
'# BEGIN vagrant-zones managed block'- END_MARKER =
'# END vagrant-zones managed block'
Instance Method Summary collapse
Methods inherited from BaseBackend
Instance Method Details
#apply(uii, qga, nics, _ctx) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/vagrant-zones/qga/ifupdown_backend.rb', line 22 def apply(uii, qga, nics, _ctx) block = render_block(nics) remove_existing_block(qga) append_result = qga.exec('/bin/sh', args: ['-c', "cat >> #{IFACES_PATH}"], input_data: block, timeout: 30) raise Errors::QGAError, message: "ifupdown append failed: #{append_result[:stderr]}" if append_result[:exitcode] != 0 uii.info("#{I18n.t('vagrant_zones.qga_backend_apply')} ifupdown") nics.each do |entry| qga.exec('/sbin/ifdown', args: [entry[:vnic_name]], timeout: 30) up = qga.exec('/sbin/ifup', args: [entry[:vnic_name]], timeout: 60) raise Errors::QGAError, message: "ifup #{entry[:vnic_name]} failed: #{up[:stderr]}" if up[:exitcode] != 0 end end |
#cleanup(uii, qga, _nics) ⇒ Object
37 38 39 40 |
# File 'lib/vagrant-zones/qga/ifupdown_backend.rb', line 37 def cleanup(uii, qga, _nics) remove_existing_block(qga) uii.info("#{I18n.t('vagrant_zones.qga_backend_cleanup')} ifupdown") end |
#detect?(qga) ⇒ Boolean
15 16 17 18 19 20 |
# File 'lib/vagrant-zones/qga/ifupdown_backend.rb', line 15 def detect?(qga) qga.exec('/usr/bin/test', args: ['-f', IFACES_PATH], timeout: 10)[:exitcode].zero? && qga.exec('/usr/bin/test', args: ['-x', '/sbin/ifup'], timeout: 10)[:exitcode].zero? rescue StandardError false end |