Пример #1
0
    def test_error_snapshot(self, pithos_backend, client):
        vm = mfactory.VirtualMachineFactory()
        disks = [
            (0, {"snapshot_info": json.dumps({"snapshot_id":
                                              "test_snapshot_id"})})
        ]
        msg = self.create_msg(operation='OP_INSTANCE_SNAPSHOT',
                              instance=vm.backend_vm_id,
                              job_fields={'disks': disks},
                              status="running")
        update_db(client, msg)
        self.assertEqual(pithos_backend().update_object_status.mock_calls, [])

        msg = self.create_msg(operation='OP_INSTANCE_SNAPSHOT',
                              instance=vm.backend_vm_id,
                              job_fields={'disks': disks},
                              event_time=split_time(time()),
                              status="error")
        update_db(client, msg)

        pithos_backend().update_object_status\
                        .assert_called_once_with("test_snapshot_id", state=-1)

        pithos_backend.reset_mock()
        msg = self.create_msg(operation='OP_INSTANCE_SNAPSHOT',
                              instance=vm.backend_vm_id,
                              job_fields={'disks': disks},
                              event_time=split_time(time()),
                              status="success")
        update_db(client, msg)
        pithos_backend().update_object_status\
                        .assert_called_once_with("test_snapshot_id", state=1)
Пример #2
0
def main():

    usage = "Usage: %s <instance_name>\n" % PROGNAME

    if len(sys.argv) != 2:
        sys.stderr.write(usage)
        return 1

    instance_name = sys.argv[1]

    # WARNING: This assumes that instance names
    # are of the form prefix-id, and uses prefix to
    # determine the routekey for AMPQ
    prefix = instance_name.split('-')[0]
    routekey = "ganeti.%s.event.progress" % prefix
    amqp_client = AMQPClient(confirm_buffer=10)
    amqp_client.connect()
    amqp_client.exchange_declare(settings.EXCHANGE_GANETI, "topic")

    for msg in jsonstream(sys.stdin):
        msg['event_time'] = split_time(time.time())
        msg['instance'] = instance_name

        # log to stderr
        sys.stderr.write("[MONITOR] %s\n" % json.dumps(msg))

        # then send it over AMQP
        amqp_client.basic_publish(exchange=settings.EXCHANGE_GANETI,
                                  routing_key=routekey,
                                  body=json.dumps(msg))

    amqp_client.close()
    return 0
Пример #3
0
def main():

    usage = "Usage: %s <instance_name>\n" % PROGNAME

    if len(sys.argv) != 2:
        sys.stderr.write(usage)
        return 1

    instance_name = sys.argv[1]

    # WARNING: This assumes that instance names
    # are of the form prefix-id, and uses prefix to
    # determine the routekey for AMPQ
    prefix = instance_name.split('-')[0]
    routekey = "ganeti.%s.event.progress" % prefix
    amqp_client = AMQPClient(confirm_buffer=10)
    amqp_client.connect()
    amqp_client.exchange_declare(settings.EXCHANGE_GANETI, "topic")

    for msg in jsonstream(sys.stdin):
        msg['event_time'] = split_time(time.time())
        msg['instance'] = instance_name

        # log to stderr
        sys.stderr.write("[MONITOR] %s\n" % json.dumps(msg))

        # then send it over AMQP
        amqp_client.basic_publish(exchange=settings.EXCHANGE_GANETI,
                                  routing_key=routekey,
                                  body=json.dumps(msg))

    amqp_client.close()
    return 0
Пример #4
0
 def create_msg(self, **kwargs):
     """Create snf-progress-monitor message"""
     msg = {'event_time': split_time(time())}
     msg['type'] = 'image-copy-progress'
     msg['progress'] = 0
     for key, val in kwargs.items():
         msg[key] = val
     message = {'body': json.dumps(msg)}
     return message
Пример #5
0
 def create_msg(self, **kwargs):
     """Create snf-progress-monitor message"""
     msg = {'event_time': split_time(time())}
     msg['type'] = 'image-copy-progress'
     msg['progress'] = 0
     for key, val in kwargs.items():
         msg[key] = val
     message = {'body': json.dumps(msg)}
     return message
Пример #6
0
 def create_msg(self, **kwargs):
     """Create snf-ganeti-eventd message"""
     msg = {'event_time': split_time(time())}
     msg['type'] = 'ganeti-op-status'
     msg['status'] = 'success'
     msg['jobId'] = 1
     msg['logmsg'] = 'Dummy Log'
     for key, val in kwargs.items():
         msg[key] = val
     message = {'body': json.dumps(msg)}
     return message
Пример #7
0
 def create_msg(self, **kwargs):
     """Create snf-ganeti-eventd message"""
     msg = {'event_time': split_time(time())}
     msg['type'] = 'ganeti-network-status'
     msg['status'] = 'success'
     msg['jobId'] = 1
     msg['logmsg'] = 'Dummy Log'
     for key, val in kwargs.items():
         msg[key] = val
     message = {'body': json.dumps(msg)}
     return message
Пример #8
0
 def create_msg(self, **kwargs):
     """Create snf-ganeti-hook message"""
     msg = {'event_time': split_time(time())}
     msg['type'] = 'ganeti-op-status'
     msg['operation'] = 'OP_INSTANCE_SET_PARAMS'
     msg['status'] = 'success'
     msg['jobId'] = 1
     msg['logmsg'] = 'Dummy Log'
     for key, val in kwargs.items():
         msg[key] = val
     message = {'body': json.dumps(msg)}
     return message
Пример #9
0
 def test_old_msg(self, client):
     from time import sleep
     from datetime import datetime
     old_time = time()
     sleep(0.01)
     new_time = datetime.fromtimestamp(time())
     vm = mfactory.VirtualMachineFactory(backendtime=new_time)
     vm.operstate = 'STOPPED'
     vm.save()
     msg = self.create_msg(operation='OP_INSTANCE_STARTUP',
                           event_time=split_time(old_time),
                           instance=vm.backend_vm_id)
     update_db(client, msg)
     self.assertTrue(client.basic_ack.called)
     db_vm = VirtualMachine.objects.get(id=vm.id)
     self.assertEquals(db_vm.operstate, "STOPPED")
     self.assertEquals(db_vm.backendtime, new_time)
Пример #10
0
 def test_old_msg(self, client):
     from time import sleep
     from datetime import datetime
     old_time = time()
     sleep(0.01)
     new_time = datetime.fromtimestamp(time())
     vm = mfactory.VirtualMachineFactory(backendtime=new_time)
     vm.operstate = 'STOPPED'
     vm.save()
     msg = self.create_msg(operation='OP_INSTANCE_STARTUP',
                           event_time=split_time(old_time),
                           instance=vm.backend_vm_id)
     update_db(client, msg)
     self.assertTrue(client.basic_ack.called)
     db_vm = VirtualMachine.objects.get(id=vm.id)
     self.assertEquals(db_vm.operstate, "STOPPED")
     self.assertEquals(db_vm.backendtime, new_time)