19 from future
import standard_library
20 standard_library.install_aliases()
21 from builtins
import map
22 from builtins
import str
23 from builtins
import object
27 sys.path.extend(list(map(os.path.abspath, [
'../../'])))
28 from smolt_config
import get_config_attr
29 from request
import Request
35 return '%s__%s' % (hw_uuid, host)
56 self.
_config = configparser.RawConfigParser()
58 if not self.
_config.has_section(_SECTION):
59 self.
_config.add_section(_SECTION)
64 smolt_user_config_dir = os.path.expanduser(
'~/.smolt/')
65 if not os.path.exists(smolt_user_config_dir):
66 os.mkdir(smolt_user_config_dir, 0o700)
71 logging.error(
'Flushing UUID database failed')
76 logging.info(
'Public UUID "%s" read from database' % pub_uuid)
78 except configparser.NoOptionError:
81 pudict = json.loads(req.open().
read())
83 return pudict[
'pub_uuid']
84 except Exception
as e:
85 error(
_(
'Error determining public UUID: %s') % e)
86 sys.stderr.write(
_(
"Unable to determine Public UUID! This could be a network error or you've\n"))
87 sys.stderr.write(
_(
"not submitted your profile yet.\n"))
91 for i
in (hw_uuid, host, pub_uuid):
93 raise Exception(
'No parameter is allowed to be None')
95 logging.info(
'Public UUID "%s" written to database' % pub_uuid)
100 with open(
'/proc/sys/kernel/random/uuid')
as rand_uuid:
101 rand_uuid_string = rand_uuid.read().strip()
102 return rand_uuid_string
108 raise UUIDError(
'Could not generate new UUID!')
116 self.
hw_uuid = hwuuidfile.read().strip()
121 raise UUIDError(
'Unable to determine UUID of system!')
126 except Exception
as e:
131 _uuid_db_instance =
None
133 """Simple singleton wrapper with lazy initialization"""
134 global _uuid_db_instance
135 if _uuid_db_instance
is None:
137 from smolt
import get_config_attr
139 return _uuid_db_instance