+++ /dev/null
-"""
-This example:
-
-1. Creates a model on the current controller
-2. Deploys a charm to it.
-3. Attempts to ssh into the charm
-
-"""
-from juju import loop
-from juju import utils
-from juju.controller import Controller
-import asyncio
-from logging import getLogger
-import uuid
-
-LOG = getLogger(__name__)
-
-
-async def main():
- controller = Controller()
- print("Connecting to controller")
- # connect to current controller with current user, per Juju CLI
- await controller.connect()
-
- try:
- model_name = "addmodeltest-{}".format(uuid.uuid4())
- print("Adding model {}".format(model_name))
- model = await controller.add_model(model_name)
-
- print('Deploying ubuntu')
- application = await model.deploy(
- 'ubuntu-10',
- application_name='ubuntu',
- series='trusty',
- channel='stable',
- )
-
- print('Waiting for active')
- await asyncio.sleep(10)
- await model.block_until(
- lambda: all(unit.workload_status == 'active'
- for unit in application.units))
-
- print("Verifying that we can ssh into the created model")
- ret = await utils.execute_process(
- 'juju', 'ssh', '-m', model_name, 'ubuntu/0', 'ls /', log=LOG)
- assert ret
-
- print('Removing ubuntu')
- await application.remove()
-
- print("Destroying model")
- await controller.destroy_model(model.info.uuid)
-
- except Exception:
- LOG.exception(
- "Test failed! Model {} may not be cleaned up".format(model_name))
-
- finally:
- print('Disconnecting from controller')
- if model:
- await model.disconnect()
- await controller.disconnect()
-
-
-if __name__ == '__main__':
- loop.run(main())