Example #1
0
def NormalizeGlobalID(inp, detect_version=False, as_field=True):
    """
    Input `inp` is a string or glob_path_id dict.
    This will fill out missed/empty fields from existing data.
    Such an order:
        1. if no idurl : use my local identity,
        2. if no customer : use idurl
        3. if no user : use customer
        4. if no key alias : use "master"
        5. if no idhost : use idurl
    """
    from userid import my_id
    if isinstance(inp, dict):
        g = inp
    else:
        g = ParseGlobalID(inp, detect_version=detect_version)
    if not g['idurl']:
        g['idurl'] = my_id.getIDURL().to_bin()
    if as_field:
        from userid import id_url
        g['idurl'] = id_url.field(g['idurl'])
    if not g['customer']:
        g['customer'] = UrlToGlobalID(g['idurl'])
    if not g['user']:
        g['user'] = g['customer'].split('@')[0]
    if not g['key_alias']:
        g['key_alias'] = 'master'
    if not g['idhost']:
        from lib import nameurl
        g['idhost'] = nameurl.GetHost(g['idurl'])
    if not g['key_id']:
        g['key_id'] = MakeGlobalKeyID(g['key_alias'], g['customer'])
    return g
Example #2
0
 def doInit(self, event, *args, **kwargs):
     """
     Action method.
     """
     self.result_defer = kwargs.get('result_defer')
     self.check_only = False
     if event == 'check':
         self.check_only = True
     self.alive_idurls = []
     self.old_sources = my_id.getLocalIdentity().getSources(
         as_originals=True)
     self.known_servers = known_servers.by_host()
     self.preferred_servers = kwargs.get('preferred_servers', {})
     self.possible_sources = []
     if _Debug:
         lg.args(_DebugLevel, preferred_servers=self.preferred_servers)
     self.force = kwargs.get('force', False)
     self.new_revision = kwargs.get('new_revision')
     self.rotated = False
     if not self.preferred_servers:
         try:
             for srv in strng.to_text(config.conf().getData(
                     'services/identity-propagate/known-servers')).split(
                         ','):
                 if srv.strip():
                     host, web_port, tcp_port = srv.strip().split(':')
                     self.preferred_servers[host] = (
                         int(web_port),
                         int(tcp_port),
                     )
         except:
             lg.exc()
     self.preferred_servers = {
         strng.to_bin(k): v
         for k, v in self.preferred_servers.items()
     }
     self.current_servers = []
     for idurl in my_id.getLocalIdentity().getSources(as_originals=True):
         self.current_servers.append(strng.to_bin(nameurl.GetHost(idurl)))
     if _Debug:
         lg.args(_DebugLevel,
                 known_servers=self.known_servers,
                 preferred_servers=self.preferred_servers,
                 current_servers=self.current_servers)
Example #3
0
def NormalizeGlobalID(inp, detect_version=False):
    """
    """
    from userid import my_id
    if isinstance(inp, dict):
        g = inp
    else:
        g = ParseGlobalID(inp, detect_version=detect_version)
    if not g['idurl']:
        g['idurl'] = my_id.getLocalID()
    if not g['customer']:
        g['customer'] = UrlToGlobalID(g['idurl'])
    if not g['user']:
        g['user'] = g['customer'].split('@')[0]
    if not g['key_alias']:
        g['key_alias'] = 'master'
    if not g['idhost']:
        from lib import nameurl
        g['idhost'] = nameurl.GetHost(g['idurl'])
    return g