status doc, better determination of is_first_run

-add skipped_components to status response
-re-add run_reflector_server to settings
This commit is contained in:
Jack Robison 2018-07-23 16:15:12 -04:00
parent b06dcf0a0d
commit 13bf8125e3
No known key found for this signature in database
GPG key ID: DF25C68FE0239BB2
2 changed files with 44 additions and 17 deletions

View file

@ -285,6 +285,7 @@ ADJUSTABLE_SETTINGS = {
'peer_port': (int, 3333), 'peer_port': (int, 3333),
'pointtrader_server': (str, 'http://127.0.0.1:2424'), 'pointtrader_server': (str, 'http://127.0.0.1:2424'),
'reflector_port': (int, 5566), 'reflector_port': (int, 5566),
'run_reflector_server': (bool, False), # adds `reflector` to components_to_skip unless True
# if reflect_uploads is True, send files to reflector after publishing (as well as a periodic check in the # if reflect_uploads is True, send files to reflector after publishing (as well as a periodic check in the
# event the initial upload failed or was disconnected part way through, provided the auto_re_reflect_interval > 0) # event the initial upload failed or was disconnected part way through, provided the auto_re_reflect_interval > 0)
'reflect_uploads': (bool, True), 'reflect_uploads': (bool, True),
@ -302,7 +303,7 @@ ADJUSTABLE_SETTINGS = {
'lbryum_servers': (list, [('lbryumx1.lbry.io', 50001), ('lbryumx2.lbry.io', 'lbryum_servers': (list, [('lbryumx1.lbry.io', 50001), ('lbryumx2.lbry.io',
50001)], server_list, server_list_reverse), 50001)], server_list, server_list_reverse),
's3_headers_depth': (int, 96 * 10), # download headers from s3 when the local height is more than 10 chunks behind 's3_headers_depth': (int, 96 * 10), # download headers from s3 when the local height is more than 10 chunks behind
'components_to_skip': (list, ['reflector']) # components which will be skipped during start-up of daemon 'components_to_skip': (list, []) # components which will be skipped during start-up of daemon
} }

View file

@ -147,6 +147,16 @@ def sort_claim_results(claims):
return claims return claims
def is_first_run():
if os.path.isfile(conf.settings.get_db_revision_filename()):
return False
if os.path.isfile(os.path.join(conf.settings['data_dir'], 'lbrynet.sqlite')):
return False
if os.path.isfile(os.path.join(conf.settings['lbryum_wallet_dir'], 'blockchain_headers')):
return False
return True
class Daemon(AuthJSONRPCServer): class Daemon(AuthJSONRPCServer):
""" """
LBRYnet daemon, a jsonrpc interface to lbry functions LBRYnet daemon, a jsonrpc interface to lbry functions
@ -157,10 +167,14 @@ class Daemon(AuthJSONRPCServer):
self.looping_call_manager = LoopingCallManager({ self.looping_call_manager = LoopingCallManager({
Checker.INTERNET_CONNECTION: LoopingCall(CheckInternetConnection(self)), Checker.INTERNET_CONNECTION: LoopingCall(CheckInternetConnection(self)),
}) })
to_skip = list(conf.settings['components_to_skip'])
if 'reflector' not in to_skip and not conf.settings['run_reflector_server']:
to_skip.append('reflector')
self.component_manager = component_manager or ComponentManager( self.component_manager = component_manager or ComponentManager(
analytics_manager=self.analytics_manager, analytics_manager=self.analytics_manager,
skip_components=conf.settings['components_to_skip'] skip_components=to_skip
) )
self.is_first_run = is_first_run()
self._component_setup_deferred = None self._component_setup_deferred = None
# TODO: move this to a component # TODO: move this to a component
@ -661,32 +675,43 @@ class Daemon(AuthJSONRPCServer):
Returns: Returns:
(dict) lbrynet-daemon status (dict) lbrynet-daemon status
{ {
'installation_id': installation id - base58, 'installation_id': (str) installation id - base58,
'is_running': bool, 'is_running': (bool),
'is_first_run': bool, 'is_first_run': bool,
'startup_status': { 'skipped_components': (list) [names of skipped components (str)],
(str) component_name: (bool) True if running else False, 'startup_status': { Does not include components which have been skipped
'database': (bool),
'wallet': (bool),
'session': (bool),
'dht': (bool),
'hash_announcer': (bool),
'stream_identifier': (bool),
'file_manager': (bool),
'peer_protocol_server': (bool),
'reflector': (bool),
'upnp': (bool),
'exchange_rate_manager': (bool),
}, },
'connection_status': { 'connection_status': {
'code': connection status code, 'code': (str) connection status code,
'message': connection status message 'message': (str) connection status message
}, },
'blockchain_status': { 'blockchain_status': {
'blocks': local blockchain height, 'blocks': (int) local blockchain height,
'blocks_behind': remote_height - local_height, 'blocks_behind': (int) remote_height - local_height,
'best_blockhash': block hash of most recent block, 'best_blockhash': (str) block hash of most recent block,
}, },
'dht_node_status': { 'dht_node_status': {
'node_id': (str) lbry dht node id - hex encoded, 'node_id': (str) lbry dht node id - hex encoded,
'peers_in_routing_table': (int) the number of peers in the routing table, 'peers_in_routing_table': (int) the number of peers in the routing table,
}, },
'wallet_is_encrypted': bool, 'wallet_is_encrypted': (bool),
If given the session status option: If given the session status option:
'session_status': { 'session_status': {
'managed_blobs': count of blobs in the blob manager, 'managed_blobs': (int) count of blobs in the blob manager,
'managed_streams': count of streams in the file manager 'managed_streams': (int) count of streams in the file manager,
'announce_queue_size': number of blobs currently queued to be announced 'announce_queue_size': (int) number of blobs currently queued to be announced,
'should_announce_blobs': number of blobs that should be announced 'should_announce_blobs': (int) number of blobs that should be announced,
} }
} }
""" """
@ -703,7 +728,8 @@ class Daemon(AuthJSONRPCServer):
response = { response = {
'installation_id': conf.settings.installation_id, 'installation_id': conf.settings.installation_id,
'is_running': all(self.component_manager.get_components_status().values()), 'is_running': all(self.component_manager.get_components_status().values()),
'is_first_run': self.wallet.is_first_run if has_wallet else None, 'is_first_run': self.is_first_run,
'skipped_components': self.component_manager.skip_components,
'startup_status': self.component_manager.get_components_status(), 'startup_status': self.component_manager.get_components_status(),
'connection_status': { 'connection_status': {
'code': connection_code, 'code': connection_code,