check every 30 minutes for a new ui version
-previously the check for a new ui version was only at startup, which resulted in bugs persisting after they’d been fixed -add option to skip requirements check -try to load an existing ui if it can’t be obtained from github
This commit is contained in:
parent
a79af11371
commit
8b1d75ea98
3 changed files with 43 additions and 18 deletions
|
@ -4,5 +4,5 @@ log = logging.getLogger(__name__)
|
||||||
logging.getLogger(__name__).addHandler(logging.NullHandler())
|
logging.getLogger(__name__).addHandler(logging.NullHandler())
|
||||||
log.setLevel(logging.ERROR)
|
log.setLevel(logging.ERROR)
|
||||||
|
|
||||||
__version__ = "0.3.3"
|
__version__ = "0.3.4"
|
||||||
version = tuple(__version__.split('.'))
|
version = tuple(__version__.split('.'))
|
|
@ -430,7 +430,7 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
||||||
log.error(failure)
|
log.error(failure)
|
||||||
return jsonrpclib.Fault(self.FAILURE, "error")
|
return jsonrpclib.Fault(self.FAILURE, "error")
|
||||||
|
|
||||||
def setup(self, branch=DEFAULT_UI_BRANCH, user_specified=False, branch_specified=False):
|
def setup(self, branch=DEFAULT_UI_BRANCH, user_specified=False, branch_specified=False, host_ui=True):
|
||||||
def _log_starting_vals():
|
def _log_starting_vals():
|
||||||
log.info("Starting balance: " + str(self.session.wallet.wallet_balance))
|
log.info("Starting balance: " + str(self.session.wallet.wallet_balance))
|
||||||
return defer.succeed(None)
|
return defer.succeed(None)
|
||||||
|
@ -473,11 +473,14 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
||||||
self.internet_connection_checker.start(3600)
|
self.internet_connection_checker.start(3600)
|
||||||
self.version_checker.start(3600 * 12)
|
self.version_checker.start(3600 * 12)
|
||||||
self.connection_problem_checker.start(1)
|
self.connection_problem_checker.start(1)
|
||||||
|
if host_ui:
|
||||||
|
self.lbry_ui_manager.update_checker.start(1800, now=False)
|
||||||
|
|
||||||
d = defer.Deferred()
|
d = defer.Deferred()
|
||||||
d.addCallback(lambda _: self.lbry_ui_manager.setup(branch=branch,
|
if host_ui:
|
||||||
user_specified=user_specified,
|
d.addCallback(lambda _: self.lbry_ui_manager.setup(branch=branch,
|
||||||
branch_specified=branch_specified))
|
user_specified=user_specified,
|
||||||
|
branch_specified=branch_specified))
|
||||||
d.addCallback(lambda _: self._initial_setup())
|
d.addCallback(lambda _: self._initial_setup())
|
||||||
d.addCallback(lambda _: threads.deferToThread(self._setup_data_directory))
|
d.addCallback(lambda _: threads.deferToThread(self._setup_data_directory))
|
||||||
d.addCallback(lambda _: self._check_db_migration())
|
d.addCallback(lambda _: self._check_db_migration())
|
||||||
|
@ -563,8 +566,8 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
||||||
def _get_lbrynet_version():
|
def _get_lbrynet_version():
|
||||||
try:
|
try:
|
||||||
r = urlopen("https://raw.githubusercontent.com/lbryio/lbry/master/lbrynet/__init__.py").read().split('\n')
|
r = urlopen("https://raw.githubusercontent.com/lbryio/lbry/master/lbrynet/__init__.py").read().split('\n')
|
||||||
vs = next(i for i in r if 'version =' in i).split("=")[1].replace(" ", "")
|
vs = next(i for i in r if '__version__ =' in i).split("=")[1].replace(" ", "")
|
||||||
vt = tuple(int(x) for x in vs[1:-1].split(','))
|
vt = tuple(int(x) for x in vs[1:-1].split('.'))
|
||||||
vr = ".".join([str(x) for x in vt])
|
vr = ".".join([str(x) for x in vt])
|
||||||
log.info("remote lbrynet " + str(vr) + " > local lbrynet " + str(lbrynet_version) + " = " + str(
|
log.info("remote lbrynet " + str(vr) + " > local lbrynet " + str(lbrynet_version) + " = " + str(
|
||||||
vr > lbrynet_version))
|
vr > lbrynet_version))
|
||||||
|
@ -700,6 +703,8 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
||||||
self.version_checker.stop()
|
self.version_checker.stop()
|
||||||
if self.connection_problem_checker.running:
|
if self.connection_problem_checker.running:
|
||||||
self.connection_problem_checker.stop()
|
self.connection_problem_checker.stop()
|
||||||
|
if self.lbry_ui_manager.update_checker.running:
|
||||||
|
self.lbry_ui_manager.update_checker.stop()
|
||||||
|
|
||||||
d = self._upload_log(log_type="close", exclude_previous=False if self.first_run else True)
|
d = self._upload_log(log_type="close", exclude_previous=False if self.first_run else True)
|
||||||
d.addCallback(lambda _: self._stop_server())
|
d.addCallback(lambda _: self._stop_server())
|
||||||
|
@ -2248,12 +2253,17 @@ class LBRYDaemon(jsonrpc.JSONRPC):
|
||||||
'path': path to a ui folder
|
'path': path to a ui folder
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if 'path' in p.keys():
|
if 'check_requirements' in p:
|
||||||
d = self.lbry_ui_manager.setup(user_specified=p['path'])
|
check_require = p['check_requirements']
|
||||||
elif 'branch' in p.keys():
|
|
||||||
d = self.lbry_ui_manager.setup(branch=p['branch'])
|
|
||||||
else:
|
else:
|
||||||
d = self.lbry_ui_manager.setup()
|
check_require = True
|
||||||
|
|
||||||
|
if 'path' in p:
|
||||||
|
d = self.lbry_ui_manager.setup(user_specified=p['path'], check_requirements=check_require)
|
||||||
|
elif 'branch' in p:
|
||||||
|
d = self.lbry_ui_manager.setup(branch=p['branch'], check_requirements=check_require)
|
||||||
|
else:
|
||||||
|
d = self.lbry_ui_manager.setup(check_requirements=check_require)
|
||||||
d.addCallback(lambda r: self._render_response(r, OK_CODE))
|
d.addCallback(lambda r: self._render_response(r, OK_CODE))
|
||||||
|
|
||||||
return d
|
return d
|
||||||
|
|
|
@ -8,6 +8,7 @@ from urllib2 import urlopen
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
from twisted.web import static
|
from twisted.web import static
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
from twisted.internet.task import LoopingCall
|
||||||
from lbrynet.conf import DEFAULT_UI_BRANCH, LOG_FILE_NAME
|
from lbrynet.conf import DEFAULT_UI_BRANCH, LOG_FILE_NAME
|
||||||
from lbrynet import __version__ as lbrynet_version
|
from lbrynet import __version__ as lbrynet_version
|
||||||
from lbryum.version import LBRYUM_VERSION as lbryum_version
|
from lbryum.version import LBRYUM_VERSION as lbryum_version
|
||||||
|
@ -52,9 +53,12 @@ class LBRYUIManager(object):
|
||||||
self.config = os.path.join(self.ui_root, "active.json")
|
self.config = os.path.join(self.ui_root, "active.json")
|
||||||
self.update_requires = os.path.join(self.update_dir, "requirements.txt")
|
self.update_requires = os.path.join(self.update_dir, "requirements.txt")
|
||||||
self.requirements = {}
|
self.requirements = {}
|
||||||
|
self.check_requirements = True
|
||||||
self.ui_dir = self.active_dir
|
self.ui_dir = self.active_dir
|
||||||
self.git_version = None
|
self.git_version = None
|
||||||
self.root = root
|
self.root = root
|
||||||
|
self.branch = None
|
||||||
|
self.update_checker = LoopingCall(self.setup)
|
||||||
|
|
||||||
if not os.path.isfile(os.path.join(self.config)):
|
if not os.path.isfile(os.path.join(self.config)):
|
||||||
self.loaded_git_version = None
|
self.loaded_git_version = None
|
||||||
|
@ -73,8 +77,11 @@ class LBRYUIManager(object):
|
||||||
self.loaded_branch = None
|
self.loaded_branch = None
|
||||||
self.loaded_requirements = None
|
self.loaded_requirements = None
|
||||||
|
|
||||||
def setup(self, branch=DEFAULT_UI_BRANCH, user_specified=None, branch_specified=False):
|
def setup(self, branch=DEFAULT_UI_BRANCH, user_specified=None, branch_specified=False, check_requirements=None):
|
||||||
self.branch = branch
|
if check_requirements is not None:
|
||||||
|
self.check_requirements = check_requirements
|
||||||
|
if self.branch is not None:
|
||||||
|
self.branch = branch
|
||||||
if user_specified:
|
if user_specified:
|
||||||
if os.path.isdir(user_specified):
|
if os.path.isdir(user_specified):
|
||||||
log.info("Checking user specified UI directory: " + str(user_specified))
|
log.info("Checking user specified UI directory: " + str(user_specified))
|
||||||
|
@ -84,7 +91,7 @@ class LBRYUIManager(object):
|
||||||
d.addCallback(lambda _: self._load_ui())
|
d.addCallback(lambda _: self._load_ui())
|
||||||
return d
|
return d
|
||||||
else:
|
else:
|
||||||
log.info("User specified UI directory doesn't exist, using " + branch)
|
log.info("User specified UI directory doesn't exist, using " + self.branch)
|
||||||
elif self.loaded_branch == "user-specified" and not branch_specified:
|
elif self.loaded_branch == "user-specified" and not branch_specified:
|
||||||
log.info("Loading user provided UI")
|
log.info("Loading user provided UI")
|
||||||
d = self._load_ui()
|
d = self._load_ui()
|
||||||
|
@ -113,8 +120,12 @@ class LBRYUIManager(object):
|
||||||
log.info("UI updates available, checking if installation meets requirements")
|
log.info("UI updates available, checking if installation meets requirements")
|
||||||
return defer.succeed(False)
|
return defer.succeed(False)
|
||||||
|
|
||||||
|
def _use_existing():
|
||||||
|
log.info("Failed to check for new ui version, trying to use cached ui")
|
||||||
|
return defer.succeed(True)
|
||||||
|
|
||||||
d = _get_git_info()
|
d = _get_git_info()
|
||||||
d.addCallback(_set_git)
|
d.addCallbacks(_set_git, lambda _: _use_existing)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def migrate_ui(self, source=None):
|
def migrate_ui(self, source=None):
|
||||||
|
@ -127,6 +138,10 @@ class LBRYUIManager(object):
|
||||||
source_dir = source
|
source_dir = source
|
||||||
delete_source = False
|
delete_source = False
|
||||||
|
|
||||||
|
def _skip_requirements():
|
||||||
|
log.info("Skipping ui requirement check")
|
||||||
|
return defer.succeed(True)
|
||||||
|
|
||||||
def _check_requirements():
|
def _check_requirements():
|
||||||
if not os.path.isfile(requires_file):
|
if not os.path.isfile(requires_file):
|
||||||
log.info("No requirements.txt file, rejecting request to migrate this UI")
|
log.info("No requirements.txt file, rejecting request to migrate this UI")
|
||||||
|
@ -197,7 +212,7 @@ class LBRYUIManager(object):
|
||||||
self.loaded_requirements = loaded_ui['requirements']
|
self.loaded_requirements = loaded_ui['requirements']
|
||||||
return defer.succeed(True)
|
return defer.succeed(True)
|
||||||
|
|
||||||
d = _check_requirements()
|
d = _check_requirements() if self.check_requirements else _skip_requirements()
|
||||||
d.addCallback(lambda r: _do_migrate() if r else _disp_failure())
|
d.addCallback(lambda r: _do_migrate() if r else _disp_failure())
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue