# # Copyright 2014 Budapest University of Technology and Economics (BME IK)
# #
# # This file is part of CIRCLE Cloud.
# #
# # CIRCLE is free software: you can redistribute it and/or modify it under
# # the terms of the GNU General Public License as published by the Free
# # Software Foundation, either version 3 of the License, or (at your option)
# # any later version.
# #
# # CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# # FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# # details.
# #
# # You should have received a copy of the GNU General Public License along
# # with CIRCLE.  If not, see <http://www.gnu.org/licenses/>.
#
# from celery import Celery
# from celery.signals import worker_ready
# from datetime import timedelta
# from kombu import Queue, Exchange
# from os import getenv
#
# HOSTNAME = "localhost"
# QUEUE_NAME = HOSTNAME + '.monitor'
#
# celery = Celery('monitor',
#                 broker=getenv("AMQP_URI"),
#                 include=['vm.tasks.local_periodic_tasks',
#                          'monitor.tasks.local_periodic_tasks',
#                          ])
#
# celery.conf.update(
#     CELERY_RESULT_BACKEND='amqp',
#     CELERY_TASK_RESULT_EXPIRES=300,
#     CELERY_QUEUES=(
#         Queue(QUEUE_NAME, Exchange('monitor', type='direct'),
#               routing_key="monitor"),
#     ),
#     CELERYBEAT_SCHEDULE={
#         'vm.update_domain_states': {
#             'task': 'vm.tasks.local_periodic_tasks.update_domain_states',
#             'schedule': timedelta(seconds=10),
#             'options': {'queue': 'localhost.monitor'}
#         },
#         'monitor.measure_response_time': {
#             'task': 'monitor.tasks.local_periodic_tasks.'
#                     'measure_response_time',
#             'schedule': timedelta(seconds=30),
#             'options': {'queue': 'localhost.monitor'}
#         },
#         'monitor.check_celery_queues': {
#             'task': 'monitor.tasks.local_periodic_tasks.'
#                     'check_celery_queues',
#             'schedule': timedelta(seconds=60),
#             'options': {'queue': 'localhost.monitor'}
#         },
#         'monitor.instance_per_template': {
#             'task': 'monitor.tasks.local_periodic_tasks.'
#                     'instance_per_template',
#             'schedule': timedelta(seconds=30),
#             'options': {'queue': 'localhost.monitor'}
#         },
#         'monitor.allocated_memory': {
#             'task': 'monitor.tasks.local_periodic_tasks.'
#                     'allocated_memory',
#             'schedule': timedelta(seconds=30),
#             'options': {'queue': 'localhost.monitor'}
#         },
#     }
#
# )
#
#
# @worker_ready.connect()
# def cleanup_tasks(conf=None, **kwargs):
#     '''Discard all task and clean up activity.'''
#     from vm.models.activity import cleanup
#     cleanup(queue_name=QUEUE_NAME)
