Fix ready command
This commit is contained in:
parent
d14fba7ec1
commit
171aa76043
@ -84,13 +84,11 @@ def list_updates():
|
|||||||
else:
|
else:
|
||||||
print('No applications packages installed.')
|
print('No applications packages installed.')
|
||||||
|
|
||||||
def install_app(app):
|
def run_install_action(action, app):
|
||||||
pm = PkgMgr()
|
|
||||||
app = App(app)
|
|
||||||
with ThreadPoolExecutor() as executor:
|
with ThreadPoolExecutor() as executor:
|
||||||
future = executor.submit(pm.install_app, app)
|
future = executor.submit(action, app)
|
||||||
while not future.done():
|
while not future.done():
|
||||||
time.sleep(1)
|
time.sleep(0.25)
|
||||||
print_install_status(app)
|
print_install_status(app)
|
||||||
# Get the result of the future and let it raise exception, if there was any
|
# Get the result of the future and let it raise exception, if there was any
|
||||||
data = future.result()
|
data = future.result()
|
||||||
@ -108,16 +106,23 @@ def print_install_status(app):
|
|||||||
print('\x1b[KInstalling...', end='\r')
|
print('\x1b[KInstalling...', end='\r')
|
||||||
elif app.stage == Stage.UNINSTALL:
|
elif app.stage == Stage.UNINSTALL:
|
||||||
print('\x1b[KUninstalling...', end='\r')
|
print('\x1b[KUninstalling...', end='\r')
|
||||||
|
elif app.stage == Stage.UPDATE:
|
||||||
|
print('\x1b[KUpdating...', end='\r')
|
||||||
elif app.stage == Stage.DONE:
|
elif app.stage == Stage.DONE:
|
||||||
print('\x1b[KDone.')
|
print('\x1b[KDone.')
|
||||||
|
|
||||||
|
def install_app(app):
|
||||||
|
pm = PkgMgr()
|
||||||
|
app = App(app)
|
||||||
|
run_install_action(pm.install_app, app)
|
||||||
|
|
||||||
def update_app(app):
|
def update_app(app):
|
||||||
pm = PkgMgr()
|
pm = PkgMgr()
|
||||||
pm.update_app(app)
|
run_install_action(pm.update_app, app)
|
||||||
|
|
||||||
def uninstall_app(app):
|
def uninstall_app(app):
|
||||||
pm = PkgMgr()
|
pm = PkgMgr()
|
||||||
pm.uninstall_app(app)
|
run_install_action(pm.uninstall_app, app)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
if not hasattr(args, 'action'):
|
if not hasattr(args, 'action'):
|
||||||
|
@ -21,7 +21,8 @@ class Stage(Enum):
|
|||||||
UNPACK = 3
|
UNPACK = 3
|
||||||
INSTALL = 4
|
INSTALL = 4
|
||||||
UNINSTALL = 5
|
UNINSTALL = 5
|
||||||
DONE = 6
|
UPDATE = 6
|
||||||
|
DONE = 7
|
||||||
|
|
||||||
class RepoUnauthorized(Exception):
|
class RepoUnauthorized(Exception):
|
||||||
pass
|
pass
|
||||||
@ -215,7 +216,7 @@ class PkgMgr:
|
|||||||
image = self.online_packages['images'][image].copy()
|
image = self.online_packages['images'][image].copy()
|
||||||
if 'mounts' in self.online_packages['apps'][app]['containers'][container]:
|
if 'mounts' in self.online_packages['apps'][app]['containers'][container]:
|
||||||
image['mounts'] = self.online_packages['apps'][app]['containers'][container]['mounts']
|
image['mounts'] = self.online_packages['apps'][app]['containers'][container]['mounts']
|
||||||
if 'depends' in self.online_packages['apps'][app]['containers'][container]
|
if 'depends' in self.online_packages['apps'][app]['containers'][container]:
|
||||||
image['depends'] = self.online_packages['apps'][app]['containers'][container]['depends']
|
image['depends'] = self.online_packages['apps'][app]['containers'][container]['depends']
|
||||||
lxcmgr.create_container(container, image)
|
lxcmgr.create_container(container, image)
|
||||||
svcmgr.create_service(app, container, image)
|
svcmgr.create_service(app, container, image)
|
||||||
@ -224,12 +225,15 @@ class PkgMgr:
|
|||||||
def uninstall_app(self, app):
|
def uninstall_app(self, app):
|
||||||
# Main uninstallation function. Wrapper for uninstall script and filesystem purge
|
# Main uninstallation function. Wrapper for uninstall script and filesystem purge
|
||||||
if app not in self.installed_packages['apps']:
|
if app not in self.installed_packages['apps']:
|
||||||
|
app.stage = Stage.DONE
|
||||||
return
|
return
|
||||||
|
app.stage = Stage.UNINSTALL
|
||||||
self.run_uninstall_script(app)
|
self.run_uninstall_script(app)
|
||||||
self.destroy_containers(app)
|
self.destroy_containers(app)
|
||||||
self.purge_scripts(app)
|
self.purge_scripts(app)
|
||||||
self.unregister_app(app)
|
self.unregister_app(app)
|
||||||
self.purge_unused_layers()
|
self.purge_unused_layers()
|
||||||
|
app.stage = Stage.DONE
|
||||||
|
|
||||||
def destroy_containers(self, app):
|
def destroy_containers(self, app):
|
||||||
# Destroy LXC containers
|
# Destroy LXC containers
|
||||||
@ -255,6 +259,7 @@ class PkgMgr:
|
|||||||
# TODO: Implement actual update
|
# TODO: Implement actual update
|
||||||
uninstall_app(app)
|
uninstall_app(app)
|
||||||
install_app(app, item)
|
install_app(app, item)
|
||||||
|
app.stage = Stage.DONE
|
||||||
|
|
||||||
def has_update(self, app):
|
def has_update(self, app):
|
||||||
# Check if online repository list a newer version of app
|
# Check if online repository list a newer version of app
|
||||||
|
@ -8,9 +8,9 @@ from .templates import SERVICE
|
|||||||
|
|
||||||
def create_service(app, container, image):
|
def create_service(app, container, image):
|
||||||
depends = ' '.join(image['depends']) if 'depends' in image else ''
|
depends = ' '.join(image['depends']) if 'depends' in image else ''
|
||||||
check = 'lxc-execute {} -- sh -c \'until $({}); do sleep 0.1; done\''.format(container, image['check']) if 'check' in image else ''
|
ready = 'lxc-attach {} -- sh -c \'until $({}); do sleep 0.1; done\''.format(container, image['ready']) if 'ready' in image else ''
|
||||||
with open(os.path.join(SERVICE_DIR, container), 'w') as f:
|
with open(os.path.join(SERVICE_DIR, container), 'w') as f:
|
||||||
f.write(SERVICE.format(app=app, container=container, depends=depends, check=check))
|
f.write(SERVICE.format(app=app, container=container, depends=depends, ready=ready))
|
||||||
update_services()
|
update_services()
|
||||||
|
|
||||||
def delete_service(service):
|
def delete_service(service):
|
||||||
|
@ -63,7 +63,7 @@ start() {{
|
|||||||
}}
|
}}
|
||||||
|
|
||||||
start_post() {{
|
start_post() {{
|
||||||
{check}
|
{ready}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
stop() {{
|
stop() {{
|
||||||
|
Loading…
Reference in New Issue
Block a user