def remind_about_instances(): """Run periodically to send reminding emails""" cs = admin_client_set() server_mgr = cs.compute.servers user_mgr = cs.identity_admin.users for instance_data in InstanceDataDAO.remind_list(datetime.utcnow()): try: try: server = server_mgr.get(instance_data.instance_id) except osc_exc.NotFound: InstanceDataDAO.delete(instance_data.instance_id) continue try: user = user_mgr.get(server.user_id) except osc_exc.NotFound: pass else: send_instance_reminder(user.email, server.name, server.id, instance_data.expires_at, greeting=getattr(user, 'fullname', '')) InstanceDataDAO.update(instance_data.instance_id, remind_at=None) except Exception: current_app.logger.exception( 'Failed to send reminder email about instance %r' % instance_data.instance_id)
def test_remind_list_empty(self): one_day_before = self.remind_at - timedelta(days=1) l = list(InstanceDataDAO.remind_list(one_day_before)) self.assertEquals(l, [])
def test_remind_list(self): l = list(InstanceDataDAO.remind_list(self.remind_at)) self.assertEquals(l, [InstanceDataDAO.get(self.instance_id)])