Пример #1
0
    def _go(nodes):
#         lg.out(_DebugLevel, 'Connected nodes: %r' % nodes)
#         lg.out(_DebugLevel, 'DHT node is active, ID=[%s]' % base64.b64encode(node().id))
        try:
            if len(args) == 0:
                pass

            elif len(args) > 0:

                def _r(x):
                    lg.info(x)
                    # reactor.stop()  #@UndefinedVariable

                cmd = args[0]
                if cmd == 'get':
                    get_value(args[1]).addBoth(_r)
                elif cmd == 'set':
                    set_value(args[1], args[2], expire=int(args[3])).addBoth(_r)
                elif cmd == 'get_json':
                    get_json_value(args[1]).addBoth(_r)
                elif cmd == 'set_json':
                    set_json_value(args[1], jsn.loads(args[2]),
                                   expire=(int(args[3]) if len(args)>=4 else 9999)).addBoth(_r)
                elif cmd == 'get_valid_data':
                    get_valid_data(args[1], rules=jsn.loads(args[2]), return_details=True).addBoth(_r)
                elif cmd == 'set_valid_data':
                    set_valid_data(args[1], jsn.loads(args[2]),
                                   expire=(int(args[3]) if len(args)>=4 else 9999),
                                   rules=jsn.loads(args[4])).addBoth(_r)
                elif cmd == 'read_customer_suppliers':
                    dht_relations.read_customer_suppliers(args[1]).addBoth(_r)
                elif cmd == 'write_customer_suppliers':
                    dht_relations.write_customer_suppliers(args[1], args[2].split(',')).addBoth(_r)
                elif cmd == 'write_verify_republish':
                    write_verify_republish_data(args[1], args[2], expire=int(args[3])).addBoth(_r)
                elif cmd == 'find':
                    find_node(key_to_hash(args[1])).addBoth(_r)
                elif cmd == 'ping':
                    find_node(random_key()).addBoth(_r)
                elif cmd == 'get_node_data':
                    pprint.pprint(get_node_data(args[1]))
                elif cmd == 'observe_data':
                    def _p(val, n):
                        print('observed', n, val)
                    def _o(result):
                        for n in result:
                            d = n.request(args[2])
                            d.addCallback(_p, n)
                    d = find_node(key_to_hash(args[1]))
                    d.addErrback(_r)
                    d.addCallback(_o)
                elif cmd == 'discover':
                    def _l(x):
                        lg.info(x)
                        find_node(random_key()).addBoth(_l)
                    _l('')
                elif cmd == 'dump_db':
                    pprint.pprint(dump_local_db(value_as_json=True))
        except:
            lg.exc()
Пример #2
0
    def _go(nodes):
        #         lg.out(_DebugLevel, 'Connected nodes: %r' % nodes)
        #         lg.out(_DebugLevel, 'DHT node is active, ID=[%s]' % base64.b64encode(node().id))
        try:
            if len(args) == 0:
                pass

            elif len(args) > 0:

                def _r(x):
                    lg.info(x)
                    reactor.stop()  #@UndefinedVariable

                cmd = args[0]
                if cmd == 'get':
                    get_value(args[1]).addBoth(_r)
                elif cmd == 'set':
                    set_value(args[1], args[2],
                              expire=int(args[3])).addBoth(_r)
                elif cmd == 'get_json':
                    get_json_value(args[1]).addBoth(_r)
                elif cmd == 'set_json':
                    set_json_value(args[1], args[2],
                                   expire=int(args[3])).addBoth(_r)
                elif cmd == 'get_valid_data':
                    get_valid_data(args[1],
                                   rules=json.loads(args[2])).addBoth(_r)
                elif cmd == 'set_valid_data':
                    set_valid_data(args[1],
                                   json.loads(args[2]),
                                   expire=int(args[3]),
                                   rules=json.loads(args[4])).addBoth(_r)
                elif cmd == 'read_customer_suppliers':
                    dht_relations.read_customer_suppliers(args[1]).addBoth(_r)
                elif cmd == 'write_customer_suppliers':
                    dht_relations.write_customer_suppliers(
                        args[1], args[2].split(',')).addBoth(_r)
                elif cmd == 'write_verify_republish':
                    write_verify_republish_data(args[1],
                                                args[2],
                                                expire=int(
                                                    args[3])).addBoth(_r)
                elif cmd == 'find':
                    find_node(key_to_hash(args[1])).addBoth(_r)
                elif cmd == 'ping':
                    find_node(random_key()).addBoth(_r)
                elif cmd == 'discover':

                    def _l(x):
                        lg.info(x)
                        find_node(random_key()).addBoth(_l)

                    _l('')
        except:
            lg.exc()
Пример #3
0
 def doDHTRead(self, *args, **kwargs):
     """
     Action method.
     """
     d = dht_relations.read_customer_suppliers(self.customer_idurl)
     d.addCallback(self._on_dht_read_success)
     d.addErrback(self._on_dht_read_failed)
Пример #4
0
 def doDHTLookupSuppliers(self, *args, **kwargs):
     """
     Action method.
     """
     d = dht_relations.read_customer_suppliers(self.customer_idurl)
     # TODO: add more validations of dht_result
     d.addCallback(self._on_read_customer_suppliers)
     d.addErrback(lambda err: self.automat('fail', err))
Пример #5
0
 def doDHTReadSuppliers(self, *args, **kwargs):
     """
     Action method.
     """
     d = dht_relations.read_customer_suppliers(
         customer_idurl=self.queue_owner_idurl, use_cache=True)
     d.addCallback(self._on_read_queue_owner_suppliers_success)
     d.addErrback(self._on_read_queue_owner_suppliers_failed)
Пример #6
0
 def _do_cleanup_dht_suppliers(self):
     from logs import lg
     from services import driver
     if driver.is_on('service_entangled_dht'):
         from dht import dht_relations
         from userid import my_id
         d = dht_relations.read_customer_suppliers(my_id.getLocalID())
         d.addCallback(self._on_my_dht_relations_discovered)
         d.addErrback(self._on_my_dht_relations_failed)
     else:
         lg.warn('service service_entangled_dht is OFF')
Пример #7
0
 def doDHTReadMySuppliers(self, *args, **kwargs):
     """
     Action method.
     """
     known_suppliers = len(contactsdb.suppliers())
     if known_suppliers > 0:
         lg.warn(
             'skip reading my suppliers from DHT, currently known %d suppliers already'
             % known_suppliers)
         self.automat('suppliers-read-ok')
         return
     d = dht_relations.read_customer_suppliers(my_id.getIDURL(),
                                               use_cache=False)
     d.addCallback(self._on_my_dht_relations_discovered)
     d.addErrback(self._on_my_dht_relations_failed)