Statistics
| Branch: | Tag: | Revision:

root / flowspec / tasks.py @ 97e42c7d

History | View | Annotate | Download (3.1 kB)

1
from utils import proxy as PR
2
from celery.task import task
3
from celery.task.sets import subtask
4
import logging
5
import json
6

    
7
from celery.task.http import *
8
from flowspy.utils import beanstalkc
9
from django.conf import settings
10

    
11
FORMAT = '%(asctime)s %(levelname)s: %(message)s'
12
logging.basicConfig(format=FORMAT)
13
logger = logging.getLogger(__name__)
14
logger.setLevel(logging.DEBUG)
15

    
16
@task
17
def add(route, callback=None):
18
    applier = PR.Applier(route_object=route)
19
    commit, response = applier.apply()
20
    if commit:
21
        status = "ACTIVE"
22
    else:
23
        status = "ERROR"
24
    route.status = status
25
    route.response = response
26
    subtask(announce).delay("[%s] Route add: %s - Result: %s" %(route.applier, route.name, response), route.applier)
27
    route.save()
28

    
29
@task
30
def edit(route, callback=None):
31
    applier = PR.Applier(route_object=route)
32
    commit, response = applier.apply(operation="replace")
33
    if commit:
34
        status = "ACTIVE"
35
    else:
36
        status = "ERROR"
37
    route.status = status
38
    route.response = response
39
    route.save()
40
    subtask(announce).delay("[%s] Route edit: %s - Result: %s"%(route.applier, route.name, response), route.applier)
41

    
42

    
43

    
44
@task
45
def delete(route, callback=None):
46
    applier = PR.Applier(route_object=route)
47
    commit, response = applier.apply(operation="delete")
48
    if commit:
49
        status = "INACTIVE"
50
    else:
51
        status = "ERROR"
52
    route.status = status
53
    route.response = response
54
    route.save()
55
    subtask(announce).delay("[%s] Route delete: %s - Result %s" %(route.applier, route.name, response), route.applier)
56

    
57

    
58

    
59
@task
60
def announce(messg, user):
61
    messg = str(messg)
62
#    username = user.username
63
    username = user.get_profile().peer.domain_name
64
    b = beanstalkc.Connection()
65
    b.use(settings.POLLS_TUBE)
66
    tube_message = json.dumps({'message': messg, 'username':username})
67
    b.put(tube_message)
68
    b.close()
69

    
70
@task
71
def check_sync(route_name=None, selected_routes = []):
72
    if not selected_routes:
73
        routes = Route.objects.all()
74
    else:
75
        routes = selected_routes
76
    if route_name:
77
        routes = routes.filter(name=route_name)
78
    for route in roures:
79
        if route.is_synced():
80
            logger.info("Route %s is synced" %route.name)
81
        else:
82
            logger.warn("Route %s is out of sync" %route.name)
83
#def delete(route):
84
#    
85
#    applier = PR.Applier(route_object=route)
86
#    commit, response = applier.apply(configuration=applier.delete_routes())
87
#    if commit:
88
#            rows = queryset.update(is_online=False, is_active=False)
89
#            queryset.update(response="Successfully removed route from network")
90
#            self.message_user(request, "Successfully removed %s routes from network" % rows)
91
#        else:
92
#            self.message_user(request, "Could not remove routes from network")
93
#    if commit:
94
#        is_online = False
95
#        is_active = False
96
#        response = "Successfully removed route from network"
97
#    else:
98
#        is_online = False
99
#        is_active = True
100
#    route.is_online = is_online
101
#    route.is_active = is_active
102
#    route.response = response
103
#    route.save()