Пример #1
0
 def _on_my_dht_relations_discovered(self, discovered_suppliers_list):
     from p2p import p2p_service
     from contacts import contactsdb
     from logs import lg
     suppliers_to_be_dismissed = set()
     # clean up old suppliers
     for idurl in discovered_suppliers_list:
         if not idurl:
             continue
         if not contactsdb.is_supplier(idurl):
             lg.warn('dht relation with %s is not valid anymore' % idurl)
             suppliers_to_be_dismissed.add(idurl)
     for idurl in suppliers_to_be_dismissed:
         p2p_service.SendCancelService(
             remote_idurl=idurl,
             service_name='service_supplier',
         )
         p2p_service.SendCancelService(
             remote_idurl=idurl,
             service_name='service_supplier_relations',
         )
     if suppliers_to_be_dismissed:
         lg.info(
             'found %d suppliers to be cleaned and sent CancelService() packets'
             % len(suppliers_to_be_dismissed))
 def doDisconnectMiner(self, arg):
     """
     Action method.
     """
     if self.connected_miner:
         p2p_service.SendCancelService(self.connected_miner, 'service_miner')
     self.connected_miner = None
 def doDisconnectAccountants(self, arg):
     """
     Action method.
     """
     for idurl in self.connected_accountants:
         p2p_service.SendCancelService(idurl, 'service_accountant')
     self.connected_accountants = []
Пример #4
0
 def doCancelServiceQueue(self, *args, **kwargs):
     """
     Action method.
     """
     service_info = {
         'items': [{
             'scope': 'consumer',
             'action': 'unsubscribe',
             'consumer_id': strng.to_text(my_id.getGlobalID()),
             'queue_id': global_id.MakeGlobalQueueID(
                 queue_alias='supplier-file-modified',
                 owner_id=my_id.getGlobalID(),
                 supplier_id=global_id.MakeGlobalID(idurl=self.supplier_idurl),
             ),
         }, {
             'scope': 'consumer',
             'action': 'remove_callback',
             'consumer_id': strng.to_text(my_id.getGlobalID()),
             'method': strng.to_text(my_id.getLocalID()),
         }, {
             'scope': 'consumer',
             'action': 'stop',
             'consumer_id': strng.to_text(my_id.getGlobalID()),
         }, ],
     }
     p2p_service.SendCancelService(
         remote_idurl=self.supplier_idurl,
         service_name='service_p2p_notifications',
         json_payload=service_info,
         callbacks={
             commands.Ack(): self._supplier_acked,
             commands.Fail(): self._supplier_failed,
         },
     )
Пример #5
0
    def _on_my_dht_relations_discovered(self, dht_result):
        from p2p import p2p_service
        from contacts import contactsdb
        from logs import lg
        if not (dht_result and isinstance(dht_result, dict) and len(dht_result.get('suppliers', [])) > 0):
            lg.warn('no dht records found for my customer family')
            return
        suppliers_to_be_dismissed = set()
        # clean up old suppliers
        for idurl in dht_result['suppliers']:
            if not idurl:
                continue
            if not contactsdb.is_supplier(idurl):
                lg.warn('dht relation with %s is not valid anymore' % idurl)
                suppliers_to_be_dismissed.add(idurl)
        for supplier_idurl in suppliers_to_be_dismissed:
            p2p_service.SendCancelService(
                remote_idurl=supplier_idurl,
                service_name='service_supplier',
            )
#             p2p_service.SendCancelService(
#                 remote_idurl=idurl,
#                 service_name='service_p2p_notifications',
#             )
        if suppliers_to_be_dismissed:
            lg.info('found %d suppliers to be cleaned and sent CancelService() packets' % len(suppliers_to_be_dismissed))
Пример #6
0
 def doCancelService(self, *args, **kwargs):
     """
     Action method.
     """
     service_info = {}
     my_customer_key_id = my_id.getGlobalID(key_alias='customer')
     if my_keys.is_key_registered(my_customer_key_id):
         service_info['customer_public_key'] = my_keys.get_key_info(
             key_id=my_customer_key_id,
             include_private=False,
             include_signature=False,
             generate_signature=False,
         )
     ecc_map = kwargs.get('ecc_map')
     if ecc_map:
         service_info['ecc_map'] = ecc_map
     request = p2p_service.SendCancelService(
         remote_idurl=self.supplier_idurl,
         service_name='service_supplier',
         json_payload=service_info,
         callbacks={
             commands.Ack(): self._supplier_service_acked,
             commands.Fail(): self._supplier_service_failed,
         },
     )
     self.request_packet_id = request.PacketID
Пример #7
0
 def doCancelService(self, arg):
     """
     Action method.
     """
     request = p2p_service.SendCancelService(
         remote_idurl=self.supplier_idurl,
         service_name='service_supplier',
         callbacks={
             commands.Ack(): self._supplier_acked,
             commands.Fail(): self._supplier_failed,
         },
     )
     self.request_packet_id = request.PacketID
Пример #8
0
 def doCancelService(self, event, *args, **kwargs):
     """
     Action method.
     """
     if event == 'leave':
         for broker_idurl in self.connected_brokers.values():
             if not broker_idurl:
                 continue
             p2p_service.SendCancelService(
                 remote_idurl=broker_idurl,
                 service_name='service_message_broker',
                 json_payload=self._do_prepare_service_request_params(
                     broker_idurl, action='queue-disconnect'),
             )
Пример #9
0
 def _on_my_dht_relations_discovered(self, dht_result):
     from p2p import p2p_service
     from contacts import contactsdb
     from userid import my_id
     from userid import id_url
     from crypt import my_keys
     from logs import lg
     if not (dht_result and isinstance(dht_result, dict)
             and len(dht_result.get('suppliers', [])) > 0):
         lg.warn('no dht records found for my customer family')
         return
     if id_url.is_some_empty(contactsdb.suppliers()):
         lg.warn(
             'some of my suppliers are not hired yet, skip doing any changes'
         )
         return
     suppliers_to_be_dismissed = set()
     dht_suppliers = id_url.to_bin_list(dht_result['suppliers'])
     # clean up old suppliers
     for idurl in dht_suppliers:
         if not idurl:
             continue
         if not contactsdb.is_supplier(idurl):
             lg.warn('dht relation with %r is not valid anymore' % idurl)
             suppliers_to_be_dismissed.add(idurl)
     for supplier_idurl in suppliers_to_be_dismissed:
         service_info = {}
         my_customer_key_id = my_id.getGlobalID(key_alias='customer')
         if my_keys.is_key_registered(my_customer_key_id):
             service_info['customer_public_key'] = my_keys.get_key_info(
                 key_id=my_customer_key_id,
                 include_private=False,
                 include_signature=False,
                 generate_signature=False,
             )
         p2p_service.SendCancelService(
             remote_idurl=supplier_idurl,
             service_name='service_supplier',
             json_payload=service_info,
         )
     if suppliers_to_be_dismissed:
         lg.info(
             'found %d suppliers to be cleaned and sent CancelService() packets'
             % len(suppliers_to_be_dismissed))