Revision 36d450e8

b/snf-cyclades-app/synnefo/logic/callbacks.py
34 34
import json
35 35
from functools import wraps
36 36

  
37
from django.db import transaction
37 38
from synnefo.db.models import Backend, VirtualMachine, Network, BackendNetwork
38
from synnefo.logic import utils, backend
39
from synnefo.logic import utils, backend_mod
39 40

  
40 41
from synnefo.lib.utils import merge_time
41 42

  
......
172 173

  
173 174
    nics = msg.get("nics", None)
174 175
    beparams = msg.get("beparams", None)
175
    backend.process_op_status(vm, event_time, msg['jobId'], msg['operation'],
176
                              msg['status'], msg['logmsg'], nics=nics,
177
                              beparams=beparams)
176
    backend_mod.process_op_status(vm, event_time, msg['jobId'],
177
                                  msg['operation'], msg['status'],
178
                                  msg['logmsg'], nics=nics,
179
                                  beparams=beparams)
178 180

  
179 181
    log.debug("Done processing ganeti-op-status msg for vm %s.",
180 182
              msg['instance'])
......
195 197
    jobid = msg['jobId']
196 198

  
197 199
    if opcode == "OP_NETWORK_SET_PARAMS":
198
        backend.process_network_modify(network, event_time, jobid, opcode,
199
                                       status, msg['add_reserved_ips'],
200
                                       msg['remove_reserved_ips'])
200
        backend_mod.process_network_modify(network, event_time, jobid, opcode,
201
                                           status, msg['add_reserved_ips'],
202
                                           msg['remove_reserved_ips'])
201 203
    else:
202
        backend.process_network_status(network, event_time, jobid, opcode,
203
                                       status, msg['logmsg'])
204
        backend_mod.process_network_status(network, event_time, jobid, opcode,
205
                                           status, msg['logmsg'])
204 206

  
205 207
    log.debug("Done processing ganeti-network-status msg for network %s.",
206 208
              msg['network'])
......
221 223
        return
222 224

  
223 225
    if msg['type'] == 'image-copy-progress':
224
        backend.process_create_progress(vm, event_time, msg['progress'])
226
        backend_mod.process_create_progress(vm, event_time, msg['progress'])
225 227
        # we do not add diagnostic messages for copy-progress messages
226 228
        return
227 229

  
......
261 263
        message = " ".join(source.split("-")).capitalize()
262 264

  
263 265
    # create the diagnostic entry
264
    backend.create_instance_diagnostic(vm, message, source, level, event_time,
265
                                       details=details)
266
    backend_mod.create_instance_diagnostic(vm, message, source, level,
267
                                           event_time, details=details)
266 268

  
267 269
    log.debug("Done processing ganeti-create-progress msg for vm %s.",
268 270
              msg['instance'])
269 271

  
270 272

  
273
@transaction.commit_on_success()
274
def update_cluster(msg):
275
    clustername = msg.get("cluster")
276
    if clustername is None:
277
        return
278
    backend = Backend.objects.select_for_update().get(clustername=clustername)
279
    backend_mod.update_backend_disk_templates(backend)
280
    backend_mod.update_backend_resources(backend)
281

  
282

  
271 283
def dummy_proc(client, message, *args, **kwargs):
272 284
    try:
273 285
        log.debug("Msg: %s", message['body'])
b/snf-cyclades-app/synnefo/logic/management/commands/backend-update-status.py
45 45
    help = HELP_MSG
46 46

  
47 47
    def handle(self, **options):
48
        for backend in Backend.objects.filter(offline=False):
48
        for backend in Backend.objects.select_for_update()\
49
                                      .filter(offline=False):
49 50
            backend_mod.update_backend_disk_templates(backend)
50 51
            backend_mod.update_backend_resources(backend)
51 52
            self.stdout.write("Successfully updated backend '%s'\n" % backend)
b/snf-cyclades-app/synnefo/logic/queues.py
43 43
QUEUE_OP = "%s-events-op" % prefix
44 44
QUEUE_NETWORK = "%s-events-network" % prefix
45 45
QUEUE_PROGRESS = "%s-events-progress" % prefix
46
QUEUE_CLUSTER = "%s-events-cluster" % prefix
46 47

  
47 48

  
48 49
QUEUES = (QUEUE_OP,
......
56 57
KEY_NETWORK = 'ganeti.%s.event.network' % prefix
57 58
# notifications of type "ganeti-create-progress"
58 59
KEY_PROGRESS = 'ganeti.%s.event.progress' % prefix
60
KEY_CLUSTER = 'ganeti.event.cluster'
59 61

  
60 62
# BINDINGS:
61 63
BINDINGS = (
......
63 65
    (QUEUE_OP,        EXCHANGE_GANETI,  KEY_OP,       'update_db'),
64 66
    (QUEUE_NETWORK,   EXCHANGE_GANETI,  KEY_NETWORK,  'update_network'),
65 67
    (QUEUE_PROGRESS,  EXCHANGE_GANETI,  KEY_PROGRESS, 'update_build_progress'),
68
    (QUEUE_CLUSTER,   EXCHANGE_GANETI,  KEY_CLUSTER,  'update_cluster'),
66 69
)
67 70

  
68 71

  
b/snf-cyclades-gtools/synnefo/ganeti/eventd.py
188 188
        self.client.exchange_declare(settings.EXCHANGE_GANETI, type='topic')
189 189

  
190 190
        self.op_handlers = {"INSTANCE": self.process_instance_op,
191
                            "NETWORK": self.process_network_op}
191
                            "NETWORK": self.process_network_op,
192
                            "CLUSTER": self.process_cluster_op}
192 193
                            # "GROUP": self.process_group_op}
193 194

  
194 195
    def process_IN_CLOSE_WRITE(self, event):
......
329 330

  
330 331
        return msg, routekey
331 332

  
333
    def process_cluster_op(self, op, job_id):
334
        """ Process OP_CLUSTER_* opcodes.
332 335

  
333
    # def process_group_op(self, op, job_id):
334
    #     """ Process OP_GROUP_* opcodes.
336
        """
337

  
338
        input = op.input
339
        op_id = input.OP_ID
340

  
341
        self.logger.debug("Job: %d: %s %s", job_id, op_id, op.status)
335 342

  
336
    #     """
337
    #     return None, None
343
        msg = {'operation':    op_id,
344
               'type':         "ganeti-cluster-status"}
345

  
346
        routekey = "ganeti.event.cluster"
347

  
348
        return msg, routekey
338 349

  
339 350

  
340 351
def find_cluster_name():

Also available in: Unified diff