Esempio n. 1
0
def main(log_dir, node, cluster):
    loop = asyncio.new_event_loop()

    raftos.configure({
        'log_path': log_dir,
        'serializer': raftos.serializers.JSONSerializer,
        'loop': loop
    })

    loop.run_until_complete(run(loop, node, cluster))
Esempio n. 2
0
    def test_configure(self):
        raftos.configure({
            'log_path': '/test_path/',
            'serializer': 'TestSerializer',
            'heartbeat_interval': 0.2,
            'election_interval': (0.8, 2)
        })

        self.assertEqual(raftos.config.log_path, '/test_path/')
        self.assertEqual(raftos.config.serializer, 'TestSerializer')
        self.assertEqual(raftos.config.heartbeat_interval, 0.2)
        self.assertEqual(raftos.config.election_interval, (0.8, 2))
Esempio n. 3
0
 def __init__(self):
     raftos.configure({
         'log_path': '/tmp',
         'serializer': raftos.serializers.JSONSerializer
     })
     self.conf = common.CLUSTER_CONF
     self.clusters = [
         '{}:{}'.format(cluster, self.conf.get('raft_port'))
         for cluster in self.conf.get('raft_cluster_machines')
         if cluster != common.vip.ip
     ]
     self.node = '{}:{}'.format(common.vip.ip, self.conf.get('raft_port'))
     self.raft_thread = None
     self.monitor_thread = None
Esempio n. 4
0
    def test_configure(self):
        raftos.configure({
            'log_path': '/test_path/',
            'serializer': 'TestSerializer',
            'secret_key': b'raftos test secret key',
            'salt': b'raftos test salt'
        })

        self.assertEqual(raftos.config.log_path, '/test_path/')
        self.assertEqual(raftos.config.serializer, 'TestSerializer')
        self.assertEqual(
            raftos.config.secret_key,
            b'raftos test secret key',
        )
        self.assertEqual(raftos.config.salt, b'raftos test salt')
Esempio n. 5
0
    def __init__(self, num_nodes, node_id, start_time):
        # Add member
        self.num_nodes = num_nodes
        self.node_id = node_id
        self.start_time = start_time

        # RaftOS can perform callbacks for the same request
        # So we add a time -> request dict for quick replicate lookup
        self.registry = AtomicDict()

        # Submitted requests via Rest API
        # self.api_queue -> [{'time': str, 'request': str}]
        self.api_queue = AtomicQueue()
        # Requests to send to Clipper
        # self.clipper_queue -> [str]
        self.clipper_queue = AtomicQueue()

        # Retrieve asyncio loop
        self.loop = asyncio.get_event_loop()

        # Configure raftos

        self.raft_node = '127.0.0.1:{}'.format(8000 + self.node_id)
        self.raft_cluster = [
            '127.0.0.1:{}'.format(8000 + i) for i in range(num_nodes)
            if i != self.node_id
        ]

        self.timestamp = start_time.strftime('%Y-%m-%d-%H-%M-%S')

        self.log_dir = './logs/{}'.format(self.timestamp)
        os.makedirs('./logs', exist_ok=True)
        os.makedirs(self.log_dir, exist_ok=True)

        raftos.configure({
            'log_path':
            self.log_dir,
            'serializer':
            raftos.serializers.JSONSerializer,
            'on_receive_append_entries_callback':
            self.on_receive_append_entries_callback
        })

        # Configure REST API
        self.rest_api = BoatAPI(self, '127.0.0.1', 8080 + self.node_id)
Esempio n. 6
0
def main():
    args = get_args()
    # setup_logging(args)  # FIXME this should work!!! but it doesn't yet

    setup_intercepts()
    raftos.configure({
        "on_leader": partial(log_state, "leader"),
        "on_follower": partial(log_state, "follower"),
    })

    loop = asyncio.get_event_loop()
    try:
        loop.create_task(register_raftos(args.cluster_id, args.cluster))
        loop.create_task(watch_nodes())
        loop.run_forever()
    except KeyboardInterrupt:
        log.info("Service process interrupted")
    finally:
        loop.close()
        log.info("Successful shutdown of Raftos-based service.")
Esempio n. 7
0
    def _get_signature(self, params=None):
        if params is None:
            params = {}

        msg = ''.join(map(str, sorted(params.values()))).encode()
        return hmac.new(self.key.encode(), msg=msg).hexdigest()


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--conf')
    parser.add_argument('--node')
    parser.add_argument('--cluster')
    args = parser.parse_args()

    cluster = ['127.0.0.1:{}'.format(port) for port in args.cluster.split()]
    node = '127.0.0.1:{}'.format(args.node)

    beatle = Beatle(config_path=args.conf, beatle_id=node)
    logger.info('Starting beatle node: {}'.format(node))

    loop = asyncio.get_event_loop()
    loop.create_task(raftos.register(node, cluster=cluster))
    raftos.configure({
        'log_path': '/var/log/beatle/',
        'serializer': raftos.serializers.JSONSerializer,
        'on_leader': beatle.on_leader
    })
    loop.run_until_complete(beatle.run())
Esempio n. 8
0
        current_id = random.randint(1, 1000)
        data_map = {
            str(current_id): {
                'created_at': datetime.now().strftime('%d/%m/%y %H:%M')
            }
        }

        await data_id.set(current_id)
        await data.update(data_map)
        await data_list.append(data_map)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--node')
    parser.add_argument('--cluster')
    args = parser.parse_args()

    cluster = ['127.0.0.1:{}'.format(port) for port in args.cluster.split()]
    node = '127.0.0.1:{}'.format(args.node)

    raftos.configure({
        'log_path': './',
        'serializer': raftos.serializers.JSONSerializer
    })

    loop = asyncio.get_event_loop()
    loop.create_task(raftos.register(node, cluster=cluster))
    loop.run_until_complete(run(node))
Esempio n. 9
0
    async def alarm(self, future):
        chat_id = await future
        if chat_id:
            await self.sendMessage(chat_id, 'Here you go!')
            await self.alarms.delete(chat_id)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--node')
    parser.add_argument('--cluster')
    args = parser.parse_args()

    cluster = ['127.0.0.1:{}'.format(port) for port in args.cluster.split()]
    node_id = '127.0.0.1:{}'.format(args.node)

    bot = RelyBot(open('token').readline().strip())

    raftos.configure({
        'log_path': './',
        'serializer': raftos.serializers.JSONSerializer,

        'on_leader': bot.start,
        'on_follower': bot.stop
    })

    loop = asyncio.get_event_loop()
    loop.create_task(raftos.register(node_id, cluster=cluster))
    loop.run_until_complete(bot.idle())
Esempio n. 10
0
class Class:
    data = raftos.Replicated(name='data')


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--node')
    parser.add_argument('--cluster')
    args = parser.parse_args()

    cluster = ['127.0.0.1:{}'.format(port) for port in args.cluster.split()]
    node = '127.0.0.1:{}'.format(args.node)

    raftos.configure({
        'log_path': './'
    })
    raftos.register(node, cluster=cluster)

    obj = Class()
    while True:
        loop = asyncio.get_event_loop()
        loop.run_until_complete(asyncio.sleep(5))

        try:
            obj.data = {
                'id': random.randint(1, 1000),
                'data': {
                    'amount': random.randint(1, 1000) * 1000,
                    'created_at': datetime.now().strftime('%d/%m/%y %H:%M')
                }