Metadata-Version: 1.1
Name: juju
Version: 0.4.2
Summary: Python library for Juju
Home-page: https://github.com/juju/python-libjuju
Author: Juju Ecosystem Engineering
Author-email: juju@lists.ubuntu.com
License: Apache 2
Description: A Python library for Juju
        =========================
        
        Source code: https://github.com/juju/python-libjuju
        
        Bug reports: https://github.com/juju/python-libjuju/issues
        
        Documentation: https://pythonhosted.org/juju/
        
        
        Requirements
        ------------
        
        * Python 3.5+
        * Juju 2.0+
        
        
        Design Notes
        ------------
        
        * Asynchronous - uses asyncio and async/await features of python 3.5
        * Websocket-level bindings are programmatically generated (indirectly) from the
          Juju golang code, ensuring full api coverage
        * Provides an OO layer which encapsulates much of the websocket api and
          provides familiar nouns and verbs (e.g. Model.deploy(), Application.add_unit(),
          etc.)
        
        
        Installation
        ------------
        
        .. code:: bash
        
          pip install juju
        
        
        Quickstart
        ----------
        Here's a simple example that shows basic usage of the library. The example
        connects to the currently active Juju model, deploys a single unit of the
        ubuntu charm, then exits.
        
        More examples can be found in the `examples/` directory of the source tree,
        and in the documentation.
        
        
        .. code:: python
        
          #!/usr/bin/python3.5
        
          import asyncio
          import logging
        
          from juju import loop
          from juju.model import Model
        
        
          async def deploy():
              # Create a Model instance. We need to connect our Model to a Juju api
              # server before we can use it.
              model = Model()
        
              # Connect to the currently active Juju model
              await model.connect_current()
        
              # Deploy a single unit of the ubuntu charm, using revision 0 from the
              # stable channel of the Charm Store.
              ubuntu_app = await model.deploy(
                  'ubuntu-0',
                  application_name='ubuntu',
                  series='xenial',
                  channel='stable',
              )
        
              # Disconnect from the api server and cleanup.
              model.disconnect()
        
        
          def main():
              # Set logging level to debug so we can see verbose output from the
              # juju library.
              logging.basicConfig(level=logging.DEBUG)
        
              # Quiet logging from the websocket library. If you want to see
              # everything sent over the wire, set this to DEBUG.
              ws_logger = logging.getLogger('websockets.protocol')
              ws_logger.setLevel(logging.INFO)
        
              # Run the deploy coroutine in an asyncio event loop, using a helper
              # that abstracts loop creation and teardown.
              loop.run(deploy())
        
        
          if __name__ == '__main__':
              main()
        
        
        Change Log
        ----------
        
        0.4.2
        ^^^^^
        Wed May 10 2017
        
        * Support (and prefer) per-controller macaroon files (#125)
        
        0.4.1
        ^^^^^
        Wed Apr 27 2017
        
        * Remove VERSION_MAP and rely on facade list from controller (#118)
        * Refactor connection task management to avoid cancels (#117)
        * Refactored login code to better handle redirects (#116)
        
        0.4.0
        ^^^^^
        Wed Apr 19 2017
        
        * Feature/api version support (#109)
        * Expanding controller.py with basic user functions, get_models and
          destroy (#89)
        * Added Monitor class to Connection. (#105)
        * Support placement lists (#103)
        * Include resources from store when deploying (#102)
        * Allow underscore to dash translation when accessing model
          attributes (#101)
        * Added controller to ssh fix. (#100)
        * Regen schema to pick up missing APIs
        * Improve error handling
        * Fix issue where we do not check to make sure that we are receiving the
          correct response.
        * Retry calls to charmstore and increase timeout to 5s
        * Make connect_model and deploy a bit more friendly
        * Fix model name not including user
        * Implement Model.get_status
        * Add integration tests.
        
        0.3.0
        ^^^^^
        Mon Feb 27 2017
        
        * Fix docstrings for placement directives.
        * Implement Model.add_machine()
        * Bug fix - "to" parameter to Model.deploy() was broken
        * Add docs and examples for adding machines and containers and deploying
          charms to them.
        * Make Machine.destroy() block the current coroutine, returning only after
          the machine is actually removed from the remote model. This is more
          consistent with the way the other apis work (e.g. Model.deploy(),
          Application.add_unit(), etc).
        * Raise NotImplementedError in all unimplemented method stubs instead of
          silently passing.
        
        0.2.0
        ^^^^^
        Thu Feb 16 2017
        
        * Add default ssh key to newly created model.
        * Add loop helpers and simplify examples/deploy.py
        * Add support for deploying local charms, and bundles containing local charm paths.
        * Add ability to get cloud name for controller.
        * Bug fix - fix wrong api used in Model.destroy_unit()
        * Add error detection in bundle deploy.
        
        0.1.2
        ^^^^^
        Thu Dec 22 2016
        
        * Bug fix - Include docs in package
        
        0.1.1
        ^^^^^
        Thu Dec 22 2016
        
        * Bug fix - Include VERSION file in package
        
        0.1.0
        ^^^^^
        Wed Dec 21 2016
        
        * Initial Release
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
