def test_spawn_netinject_file(self): FLAGS.xenapi_image_service = 'glance' db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _tee_handler(cmd, **kwargs): input = kwargs.get('process_input', None) self.assertNotEqual(input, None) config = [line.strip() for line in input.split("\n")] # Find the start of eth0 configuration and check it index = config.index('auto eth0') self.assertEquals(config[index + 1:index + 8], [ 'iface eth0 inet static', 'address 192.168.0.100', 'netmask 255.255.255.0', 'broadcast 192.168.0.255', 'gateway 192.168.0.1', 'dns-nameservers 192.168.0.1', '']) self._tee_executed = True return '', '' fake_utils.fake_execute_set_repliers([ # Capture the sudo tee .../etc/network/interfaces command (r'(sudo\s+)?tee.*interfaces', _tee_handler), ]) FLAGS.xenapi_image_service = 'glance' self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE, glance_stubs.FakeGlance.IMAGE_KERNEL, glance_stubs.FakeGlance.IMAGE_RAMDISK, check_injection=True) self.assertTrue(self._tee_executed)
def test_spawn_netinject_xenstore(self): FLAGS.xenapi_image_service = 'glance' db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _mount_handler(cmd, *ignore_args, **ignore_kwargs): # When mounting, create real files under the mountpoint to simulate # files in the mounted filesystem # mount point will be the last item of the command list self._tmpdir = cmd[len(cmd) - 1] LOG.debug( _('Creating files in %s to simulate guest agent' % self._tmpdir)) os.makedirs(os.path.join(self._tmpdir, 'usr', 'sbin')) # Touch the file using open open( os.path.join(self._tmpdir, 'usr', 'sbin', 'xe-update-networking'), 'w').close() return '', '' def _umount_handler(cmd, *ignore_args, **ignore_kwargs): # Umount would normall make files in the m,ounted filesystem # disappear, so do that here LOG.debug( _('Removing simulated guest agent files in %s' % self._tmpdir)) os.remove( os.path.join(self._tmpdir, 'usr', 'sbin', 'xe-update-networking')) os.rmdir(os.path.join(self._tmpdir, 'usr', 'sbin')) os.rmdir(os.path.join(self._tmpdir, 'usr')) return '', '' def _tee_handler(cmd, *ignore_args, **ignore_kwargs): self._tee_executed = True return '', '' fake_utils.fake_execute_set_repliers([ (r'(sudo\s+)?mount', _mount_handler), (r'(sudo\s+)?umount', _umount_handler), (r'(sudo\s+)?tee.*interfaces', _tee_handler) ]) self._test_spawn(1, 2, 3, check_injection=True) # tee must not run in this case, where an injection-capable # guest agent is detected self.assertFalse(self._tee_executed)
def test_spawn_netinject_xenstore(self): FLAGS.xenapi_image_service = 'glance' db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _mount_handler(cmd, *ignore_args, **ignore_kwargs): # When mounting, create real files under the mountpoint to simulate # files in the mounted filesystem # mount point will be the last item of the command list self._tmpdir = cmd[len(cmd) - 1] LOG.debug(_('Creating files in %s to simulate guest agent' % self._tmpdir)) os.makedirs(os.path.join(self._tmpdir, 'usr', 'sbin')) # Touch the file using open open(os.path.join(self._tmpdir, 'usr', 'sbin', 'xe-update-networking'), 'w').close() return '', '' def _umount_handler(cmd, *ignore_args, **ignore_kwargs): # Umount would normall make files in the m,ounted filesystem # disappear, so do that here LOG.debug(_('Removing simulated guest agent files in %s' % self._tmpdir)) os.remove(os.path.join(self._tmpdir, 'usr', 'sbin', 'xe-update-networking')) os.rmdir(os.path.join(self._tmpdir, 'usr', 'sbin')) os.rmdir(os.path.join(self._tmpdir, 'usr')) return '', '' def _tee_handler(cmd, *ignore_args, **ignore_kwargs): self._tee_executed = True return '', '' fake_utils.fake_execute_set_repliers([ (r'(sudo\s+)?mount', _mount_handler), (r'(sudo\s+)?umount', _umount_handler), (r'(sudo\s+)?tee.*interfaces', _tee_handler)]) self._test_spawn(1, 2, 3, check_injection=True) # tee must not run in this case, where an injection-capable # guest agent is detected self.assertFalse(self._tee_executed)
def test_spawn_netinject_file(self): FLAGS.xenapi_image_service = "glance" db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _tee_handler(cmd, **kwargs): input = kwargs.get("process_input", None) self.assertNotEqual(input, None) config = [line.strip() for line in input.split("\n")] # Find the start of eth0 configuration and check it index = config.index("auto eth0") self.assertEquals( config[index + 1 : index + 8], [ "iface eth0 inet static", "address 10.0.0.3", "netmask 255.255.255.0", "broadcast 10.0.0.255", "gateway 10.0.0.1", "dns-nameservers 10.0.0.2", "", ], ) self._tee_executed = True return "", "" fake_utils.fake_execute_set_repliers( [ # Capture the sudo tee .../etc/network/interfaces command (r"(sudo\s+)?tee.*interfaces", _tee_handler) ] ) FLAGS.xenapi_image_service = "glance" self._test_spawn( glance_stubs.FakeGlance.IMAGE_MACHINE, glance_stubs.FakeGlance.IMAGE_KERNEL, glance_stubs.FakeGlance.IMAGE_RAMDISK, check_injection=True, ) self.assertTrue(self._tee_executed)
def test_spawn_netinject_xenstore(self): db_fakes.stub_out_db_instance_api(self.stubs, injected=True) self._tee_executed = False def _mount_handler(cmd, *ignore_args, **ignore_kwargs): # When mounting, create real files under the mountpoint to simulate # files in the mounted filesystem # mount point will be the last item of the command list self._tmpdir = cmd[len(cmd) - 1] LOG.debug(_("Creating files in %s to simulate guest agent" % self._tmpdir)) os.makedirs(os.path.join(self._tmpdir, "usr", "sbin")) # Touch the file using open open(os.path.join(self._tmpdir, "usr", "sbin", "xe-update-networking"), "w").close() return "", "" def _umount_handler(cmd, *ignore_args, **ignore_kwargs): # Umount would normall make files in the m,ounted filesystem # disappear, so do that here LOG.debug(_("Removing simulated guest agent files in %s" % self._tmpdir)) os.remove(os.path.join(self._tmpdir, "usr", "sbin", "xe-update-networking")) os.rmdir(os.path.join(self._tmpdir, "usr", "sbin")) os.rmdir(os.path.join(self._tmpdir, "usr")) return "", "" def _tee_handler(cmd, *ignore_args, **ignore_kwargs): self._tee_executed = True return "", "" fake_utils.fake_execute_set_repliers( [(r"mount", _mount_handler), (r"umount", _umount_handler), (r"tee.*interfaces", _tee_handler)] ) self._test_spawn(1, 2, 3, check_injection=True) # tee must not run in this case, where an injection-capable # guest agent is detected self.assertFalse(self._tee_executed)