X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=README.md;h=37ec4618ab100267a26aa2fc0305d68027b386f1;hb=8ffeaa57dd88940c1b21028fbee3fc17dae72d5e;hp=075a9ec4dcb6c101b386e41b9dd76882933f123d;hpb=7fb6b71a8ad5352d15c9a60136962452280917ab;p=osm%2FN2VC.git diff --git a/README.md b/README.md index 075a9ec..37ec461 100644 --- a/README.md +++ b/README.md @@ -2,30 +2,50 @@ A python library for Juju. -NOTE: There is no implementation here yet. It is simply a mocked out -design of what this library might look like. The design itself is not -complete. Comments on the design, good or bad, are welcomed. Use cases -are also appreciated as they will shape the design. +NOTE: This is early work-in-progress, pre-alpha software. There is very little +implementation here yet. The design itself is not complete. Comments on the +design, good or bad, are welcomed. Use cases are also appreciated as they will +shape the design. -The goal is to end up with a feature-full and officially supported -python library for Juju. +The goal is to end up with a feature-full and officially supported python +library for Juju. The focus right now is on Juju 2+ only. -# Design Ideas +# Design Notes -* Present an object-oriented interface to all the features of the Juju - CLI +* Require python3.5+ (async/await) and juju-2.0+ +* Auto-generate async (and sync? see below) websocket client from juju golang code +* Present an object-oriented interface to all the features of the Juju CLI * Do as much as possible through the API so that the library can be used - without actually installing Juju + without actually installing Juju + +# Implementation Status + +There is an async websocket client that is auto-generated (indirectly) from the +juju golang code so that the entire api is supported. This is mostly working. +There will probably a synchronous client as well because why not. + +On top of that will be an object-oriented layer that supports the full range of +operations that one could perform with the CLI (at least), which uses the +websocket client underneath but presents a friendlier interface. One advantage +of using an async client is that we can have a live-updating object layer, +where user code is informed of changes that are occurring to the underlying +juju model in real time. There is an example of what this might look like in +examples/livemodel.py. # Example Use Cases -Please add more! +See the `examples/` directory for some simple working examples. ## Simple bootstrap/deploy ```python +""" +This doesn't work yet! It's an example of what usage might +look like in the future. + +""" from juju import Juju juju = Juju() @@ -36,6 +56,7 @@ model = controller.get_model('default') # We might want an async and blocking version of deploy()? model.deploy('mediawiki-single') -mediawiki = model.get_service('mediawiki') +mediawiki = model.get_application('mediawiki') mediawiki.expose() + ```