diff --git a/jujuna/__main__.py b/jujuna/__main__.py index d4f8842..4d830d1 100644 --- a/jujuna/__main__.py +++ b/jujuna/__main__.py @@ -6,7 +6,7 @@ import argcomplete import async_timeout -from juju import loop +from juju import jasyncio from jujuna.helper import log_traceback @@ -201,7 +201,7 @@ def main(): action, timeout, args = parse_args(sys.argv[1:]) try: - ret = loop.run( + ret = jasyncio.run( run_action(action, timeout, args) ) except Exception as e: diff --git a/jujuna/clean.py b/jujuna/clean.py index 0f7d147..bc86197 100644 --- a/jujuna/clean.py +++ b/jujuna/clean.py @@ -6,6 +6,7 @@ from jujuna.helper import connect_juju, log_traceback from juju.errors import JujuError from juju.client import client +from juju import jasyncio # create logger @@ -18,6 +19,9 @@ async def wait_until(model, *conditions, log_time=5, timeout=None, wait_period=0 """ log_count = 0 + if not loop: + loop = jasyncio.get_running_loop() + def _disconnected(): return not (model.is_connected() and model.connection().is_open) @@ -110,7 +114,6 @@ async def clean( await wait_until( model, lambda: model.applications == {} and model.machines == {}, - loop=model.loop ) except JujuError as e: diff --git a/jujuna/deploy.py b/jujuna/deploy.py index e36f229..f0d4989 100644 --- a/jujuna/deploy.py +++ b/jujuna/deploy.py @@ -40,7 +40,7 @@ async def deploy( """ ret = 0 log.info('Reading bundle: {}'.format(bundle_file.name)) - entity_url = 'local:' + bundle_file.name.replace('/bundle.yaml', '') + entity_url = 'local:{}'.format(bundle_file.name.replace('/bundle.yaml', '')) controller, model = await connect_juju( ctrl_name, @@ -65,7 +65,6 @@ async def deploy( model, deployed_apps, log, - loop=model.loop, error_timeout=error_timeout ) else: diff --git a/jujuna/helper.py b/jujuna/helper.py index 4d33a7b..5a88614 100644 --- a/jujuna/helper.py +++ b/jujuna/helper.py @@ -8,6 +8,7 @@ from juju.controller import Controller from juju.model import Model +from juju import jasyncio from theblues.charmstore import CharmStore @@ -102,6 +103,9 @@ async def wait_until(model, apps, logger, log_time=5, timeout=None, wait_period= """ log_count = 0 + if not loop: + loop = jasyncio.get_running_loop() + def _disconnected(): return not (model.is_connected() and model.connection().is_open) diff --git a/jujuna/upgrade.py b/jujuna/upgrade.py index d5a891c..3124370 100644 --- a/jujuna/upgrade.py +++ b/jujuna/upgrade.py @@ -10,6 +10,7 @@ from jujuna.settings import ORIGIN_KEYS, SERVICES from juju.errors import JujuError +from juju import jasyncio # create logger @@ -145,7 +146,6 @@ async def ocata_relation_patch(model, dry_run, cinder_ceph): model, model.applications.values(), timeout=1800, - loop=model.loop ) log.info('Completed addition of relation') except Exception as e: @@ -207,7 +207,6 @@ async def upgrade_services(model, upgraded, origin, origin_keys, upgrade_action, model, model.applications.values(), timeout=1800, - loop=model.loop ) sl_after = get_service_list(model, upgraded) @@ -296,7 +295,6 @@ async def upgrade_charms(model, apps, dry_run, ignore_errors): model, list(model.applications.values()), timeout=1800, - loop=model.loop ) log.info('Collecting final workload status') @@ -333,6 +331,9 @@ async def wait_until(model, apps, log_time=10, timeout=None, wait_period=0.5, lo """ log_count = 0 + if not loop: + loop = jasyncio.get_running_loop() + def _disconnected(): return not (model.is_connected() and model.connection().is_open) diff --git a/requirements.txt b/requirements.txt index 357b08d..7fb3aa9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ pip>=19 -pyyaml<6.0.0,>=5.1.2 +pyyaml>=5.1.2,<=6.0.0 async-timeout<4.0.0,>=2.0.1 tox>=3.14.1 -juju<2.9.0,>=2.8.4 -argcomplete==1.10.0 -theblues<1.0,>=0.5.2 +juju>=2.9.7,<2.10.0 +argcomplete>=1.10.0,<2.0.0 +theblues>=0.5.2,<1.0 diff --git a/setup.py b/setup.py index 86710f0..501e259 100644 --- a/setup.py +++ b/setup.py @@ -32,19 +32,20 @@ "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX :: Linux", "Environment :: Console" ], 'install_requires': [ - 'async-timeout<4.0.0,>=2.0.1', - 'argcomplete==1.10.0', - 'theblues<1.0.0,>=0.5.2' + 'async-timeout>=2.0.1,<4.0.0', + 'argcomplete>=1.10.0,<2.0.0', + 'theblues>=0.5.2,<1.0' ], 'extras_require': { ":python_version>'3.5.2'": [ - 'juju<2.9.0,>=2.8.0', - 'pyyaml<6.0,>=3.0', + 'juju>=2.9.7,<2.10.0', + 'pyyaml>=5.1.2,<=6.0.0', ], ":python_version<='3.5.2'": [ 'juju<1.0.0,>=0.11.7',