Пример #1
0
 def per_vm_operation(job, period):
     disp = periodic.VmDispatcher(
         self._cif.getVMs, self._executor,
         lambda vm: job(vm, self),
         _TASK_TIMEOUT)
     return periodic.Operation(
         disp, period, self._scheduler, timeout=_TASK_TIMEOUT,
         executor=self._executor)
Пример #2
0
    def test_dispatch_fails(self):
        """
        make sure that VmDispatcher attempts to dispatch work
        for every registered VMs, and doesn't exit prematurely
        when one dispatch() fails.
        """
        exc = _FakeExecutor(fail=True)

        op = periodic.VmDispatcher(self.cif.getVMs, exc, _Nop, 0)

        skipped = op()

        self.assertEqual(set(skipped), set(self.cif.getVMs().keys()))
Пример #3
0
    def _check_dispatching(self, skip_ids):
        op = periodic.VmDispatcher(self.cif.getVMs, _FakeExecutor(), _Visitor,
                                   0)
        # we don't care about executor (hence the simplistic fake)
        op()

        for vm_id in skip_ids:
            self.assertNotIn(_fake_vm_id(vm_id), _Visitor.VMS)

        vms = self.cif.getVMs()

        expected = (set(vms.keys()) - set(_fake_vm_id(i) for i in skip_ids))
        for vm_id in expected:
            self.assertEqual(_Visitor.VMS.get(vm_id), 1)
Пример #4
0
    def test_dispatch(self, failed_ids):
        for i in failed_ids:
            with self.cif.vmContainerLock:
                vm_id = _fake_vm_id(i)
                self.cif.vmContainer[vm_id].fail_required = True

        op = periodic.VmDispatcher(self.cif.getVMs, _FakeExecutor(), _Visitor,
                                   0)
        # we don't care about executor (hence the simplistic fake)
        op()

        vms = self.cif.getVMs()
        expected = (set(vms.keys()) - set(_fake_vm_id(i) for i in failed_ids))
        for vm_id in expected:
            self.assertEqual(_Visitor.VMS.get(vm_id), 1)

        for vm_id in failed_ids:
            self.assertEqual(_Visitor.VMS.get(vm_id), None)