1. Connects to current controller.
2. Creates a new model.
3. Deploys an application on the new model.
-
-Note: 'cloudcred' format to add a model should be:
-cloudcred-<cloudname>_<user>_<credentialname>
+4. Disconnects from the model
+5. Destroys the model
"""
import asyncio
import logging
-from juju.model import Model, ModelObserver
from juju.controller import Controller
+from juju import loop
-class MyModelObserver(ModelObserver):
- async def on_change(self, delta, old, new, model):
- pass
-
-
-async def run():
+async def main():
controller = Controller()
await controller.connect_current()
model = await controller.add_model(
- 'libjuju-test',
- 'cloud-aws',
- 'cloudcred-aws_tvansteenburgh_external@aws-tim',
+ 'my-test-model',
+ 'aws',
+ 'aws-tim',
)
await model.deploy(
'ubuntu-0',
- service_name='ubuntu',
+ application_name='ubuntu',
series='trusty',
channel='stable',
)
await model.disconnect()
+ await controller.destroy_model(model.info.uuid)
await controller.disconnect()
- model.loop.stop()
-logging.basicConfig(level=logging.DEBUG)
-ws_logger = logging.getLogger('websockets.protocol')
-ws_logger.setLevel(logging.INFO)
-loop = asyncio.get_event_loop()
-loop.set_debug(False)
-loop.create_task(run())
-loop.run_forever()
+if __name__ == '__main__':
+ logging.basicConfig(level=logging.DEBUG)
+ ws_logger = logging.getLogger('websockets.protocol')
+ ws_logger.setLevel(logging.INFO)
+ loop.run(main())