Exemplo n.º 1
0
    def run_periodic_tasks(self, context, raise_on_error=False):
        """Tasks to be run at a periodic interval."""
        idle_for = DEFAULT_INTERVAL
        for task_name, task in self._periodic_tasks:
            full_task_name = '.'.join([self.__class__.__name__, task_name])

            now = timeutils.utcnow()
            spacing = self._periodic_spacing[task_name]
            last_run = self._periodic_last_run[task_name]

            # If a periodic task is _nearly_ due, then we'll run it early
            if spacing is not None and last_run is not None:
                due = last_run + datetime.timedelta(seconds=spacing)
                if not timeutils.is_soon(due, 0.2):
                    idle_for = min(idle_for, timeutils.delta_seconds(now, due))
                    continue

            if spacing is not None:
                idle_for = min(idle_for, spacing)

            LOG.debug(_("Running periodic task %(full_task_name)s"),
                      {"full_task_name": full_task_name})
            self._periodic_last_run[task_name] = timeutils.utcnow()

            try:
                task(self, context)
            except Exception as e:
                if raise_on_error:
                    raise
                LOG.exception(_("Error during %(full_task_name)s: %(e)s"),
                              {"full_task_name": full_task_name, "e": e})
            time.sleep(0)

        return idle_for
Exemplo n.º 2
0
        def _inner():
            if initial_delay:
                greenthread.sleep(initial_delay)

            try:
                while self._running:
                    start = timeutils.utcnow()
                    self.f(*self.args, **self.kw)
                    end = timeutils.utcnow()
                    if not self._running:
                        break
                    delay = interval - timeutils.delta_seconds(start, end)
                    print "## delay=%s" % delay
                    if delay <= 0:
                        LOG.warn(
                            _('task run outlasted interval by %s sec') %
                            -delay)
                    greenthread.sleep(delay if delay > 0 else 0)
            except LoopingCallDone as e:
                print "#### exception=%s" % e.retvalue
                self.stop()
                done.send(e.retvalue)
            except Exception:
                LOG.exception(_('in fixed duration looping call'))
                done.send_exception(*sys.exc_info())
                return
            else:
                done.send(True)
Exemplo n.º 3
0
    def run_periodic_tasks(self, context, raise_on_error=False):
        """Tasks to be run at a periodic interval."""
        idle_for = DEFAULT_INTERVAL
        for task_name, task in self._periodic_tasks:
            full_task_name = '.'.join([self.__class__.__name__, task_name])

            now = timeutils.utcnow()
            spacing = self._periodic_spacing[task_name]
            last_run = self._periodic_last_run[task_name]

            # If a periodic task is _nearly_ due, then we'll run it early
            if spacing is not None and last_run is not None:
                due = last_run + datetime.timedelta(seconds=spacing)
                if not timeutils.is_soon(due, 0.2):
                    idle_for = min(idle_for, timeutils.delta_seconds(now, due))
                    continue

            if spacing is not None:
                idle_for = min(idle_for, spacing)

            LOG.debug(_("Running periodic task %(full_task_name)s"), locals())
            self._periodic_last_run[task_name] = timeutils.utcnow()

            try:
                task(self, context)
            except Exception as e:
                if raise_on_error:
                    raise
                LOG.exception(_("Error during %(full_task_name)s: %(e)s"),
                              locals())
            time.sleep(0)

        return idle_for
Exemplo n.º 4
0
        def _inner():
            if initial_delay:
                greenthread.sleep(initial_delay)

            try:
                while self._running:
                    start = timeutils.utcnow()
                    self.f(*self.args, **self.kw)
                    end = timeutils.utcnow()
                    if not self._running:
                        break
                    delay = interval - timeutils.delta_seconds(start, end)
                    if delay <= 0:
                        LOG.warn(_('task run outlasted interval by %s sec') %
                                 -delay)
                    greenthread.sleep(delay if delay > 0 else 0)
            except LoopingCallDone as e:
                self.stop()
                done.send(e.retvalue)
            except Exception:
                LOG.exception(_('in fixed duration looping call'))
                done.send_exception(*sys.exc_info())
                return
            else:
                done.send(True)
Exemplo n.º 5
0
 def _test_create_time(self, func, resource, resources=None):
     if not resources:
         resources = resource + "s"
     _now = timeutils.utcnow()
     with func() as obj:
         _obj = self._show(resources, obj[resource]['id'])
         c_time = _obj[resource]['created_at']
         _c = timeutils.parse_strtime(c_time)
     delta = timeutils.delta_seconds(_now, _c)
     self.assertTrue(delta > 0)
Exemplo n.º 6
0
 def _test_create_time(self, func, resource, resources=None):
     if not resources:
         resources = resource + "s"
     _now = timeutils.utcnow()
     with func() as obj:
         _obj = self._show(resources, obj[resource]['id'])
         c_time = _obj[resource]['created_at']
         _c = timeutils.parse_strtime(c_time)
     delta = timeutils.delta_seconds(_now, _c)
     self.assertTrue(delta > 0)
Exemplo n.º 7
0
 def _get_cached_vswitch_existence(self, host):
     """Returns cached existence. Old and non-cached raise ValueError."""
     entry = self.ivs_host_cache.get(host)
     if not entry:
         raise ValueError(_('No cache entry for host %s') % host)
     diff = timeutils.delta_seconds(entry['timestamp'],
                                    datetime.datetime.now())
     if diff > CACHE_VSWITCH_TIME:
         self.ivs_host_cache.pop(host)
         raise ValueError(_('Expired cache entry for host %s') % host)
     return entry['exists']
Exemplo n.º 8
0
 def _get_eligible_ovs_vapp_agent(self, old_agent):
     chosen_agent = None
     latest_time = old_agent['heartbeat_timestamp']
     cluster_id = old_agent['configurations'].get('cluster_id')
     for agent in self.agents:
         agent_cluster_id = agent['configurations'].get('cluster_id')
         if cluster_id != agent_cluster_id:
             continue
         delta = timeutils.delta_seconds(latest_time,
                                         agent['heartbeat_timestamp'])
         if delta > 0:
             latest_time = agent['heartbeat_timestamp']
             chosen_agent = agent
     return chosen_agent
 def test_router_create(self):
     name = 'router1'
     tenant_id = _uuid()
     expected_value = [('name', name), ('tenant_id', tenant_id),
                       ('admin_state_up', True), ('status', 'ACTIVE'),
                       ('external_gateway_info', None)]
     _now = timeutils.utcnow()
     with self.router(name='router1', admin_state_up=True,
                      tenant_id=tenant_id) as router:
         for k, v in expected_value:
             self.assertEqual(router['router'][k], v)
         _created = timeutils.parse_strtime(router['router']['created_at'])
         delta = timeutils.delta_seconds(_now, _created)
         self.assertTrue(delta > 0)
Exemplo n.º 10
0
 def test_router_create(self):
     name = 'router1'
     tenant_id = _uuid()
     expected_value = [('name', name), ('tenant_id', tenant_id),
                       ('admin_state_up', True), ('status', 'ACTIVE'),
                       ('external_gateway_info', None)]
     _now = timeutils.utcnow()
     with self.router(name='router1',
                      admin_state_up=True,
                      tenant_id=tenant_id) as router:
         for k, v in expected_value:
             self.assertEqual(router['router'][k], v)
         _created = timeutils.parse_strtime(router['router']['created_at'])
         delta = timeutils.delta_seconds(_now, _created)
         self.assertTrue(delta > 0)
Exemplo n.º 11
0
Arquivo: db.py Projeto: dlq84/neutron
 def get_agent_uptime(self, agent):
     return timeutils.delta_seconds(agent.started_at,
                                    agent.heartbeat_timestamp)