Updated examples to use juju.loop
[osm/N2VC.git] / examples / controller.py
index 7edf807..6002f68 100644 (file)
@@ -4,46 +4,38 @@ This example:
 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())