X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Fdocs%2Fnarrative%2Fcontroller.rst;h=1d8632159caf30a9dddedb94c606cef3146b23f6;hp=2da0e7b68ea9e1728998945f83382dcf65b27461;hb=refs%2Fchanges%2F94%2F6394%2F1;hpb=421c4a23dc5e60db9596b79ea87cdc19cc463e9b diff --git a/modules/libjuju/docs/narrative/controller.rst b/modules/libjuju/docs/narrative/controller.rst index 2da0e7b..1d86321 100644 --- a/modules/libjuju/docs/narrative/controller.rst +++ b/modules/libjuju/docs/narrative/controller.rst @@ -6,9 +6,9 @@ these endpoints. Connecting to the controller endpoint is useful if you want to programmatically create a new model. If the model you want to use already exists, you can -connect directly to it (see :doc:`model`). +connect directly to it (see py:doc:`model`). -For api docs, see :class:`juju.controller.Controller`. +For API docs, see py:class:`juju.controller.Controller`. Connecting to the Current Controller @@ -21,7 +21,7 @@ Connect to the currently active Juju controller (the one returned by from juju.controller import Controller controller = Controller() - await controller.connect_current() + await controller.connect() Connecting to a Named Controller @@ -33,68 +33,60 @@ Connect to a controller by name. from juju.controller import Controller controller = Controller() - await controller.connect_controller('mycontroller') + await controller.connect('mycontroller') -Connecting with Username/Password Authentication ------------------------------------------------- -The most flexible, but also most verbose, way to connect is using the API -endpoint url and credentials directly. This method does NOT require the Juju -CLI client to be installed. +Connecting with Authentication +------------------------------ +You can control what user you are connecting with by specifying either a +username/password pair, or a macaroon or bakery client that can provide +a macaroon. -.. code:: python - from juju.controller import Controller +.. code:: python controller = Controller() + await controller.connect(username='admin', + password='f53f08cfc32a2e257fe5393271d89d62') + + # or with a macaroon + await controller.connect(macaroons=[ + { + "Name": "macaroon-218d87053ad19626bcd5a0eef0bc9ba8bd4fbd80a968f52a5fd430b2aa8660df", + "Value": "W3siY2F2ZWF0cyI6 ... jBkZiJ9XQ==", + "Domain": "10.130.48.27", + "Path": "/auth", + "Secure": false, + "HostOnly": true, + "Expires": "2018-03-07T22:07:23Z", + }, + ]) + + # or with a bakery client + from macaroonbakery.httpbakery import Client + from http.cookiejar import FileCookieJar + + bakery_client=Client() + bakery_client.cookies = FileCookieJar('cookies.txt') + controller = Controller() + await controller.connect(bakery_client=bakery_client) + - controller_endpoint = '10.0.4.171:17070' - username = 'admin' - password = 'f53f08cfc32a2e257fe5393271d89d62' - - # Left out for brevity, but if you have a cert string you should pass it in. - # You can copy the cert from the output of The `juju show-controller` - # command. - cacert = None - - await controller.connect( - controller_endpoint, - username, - password, - cacert, - ) - - -Connecting with Macaroon Authentication ---------------------------------------- -To connect to a shared controller, you'll need -to use macaroon authentication. The simplest example is shown below, and uses -already-discharged macaroons from the local filesystem. This will work if you -have the Juju CLI installed. - -.. note:: - The library does not yet contain support for fetching and discharging - macaroons. Until it does, if you want to use macaroon auth, you'll need - to supply already-discharged macaroons yourself. +Connecting with an Explicit Endpoint +------------------------------------ +The most flexible, but also most verbose, way to connect is using the API +endpoint url and credentials directly. This method does NOT require the +Juju CLI client to be installed. .. code:: python - from juju.client.connection import get_macaroons() - from juju.controller import Controller - controller = Controller() - - controller_endpoint = '10.0.4.171:17070' - username = None - password = None - cacert = None - macaroons = get_macaroons() - await controller.connect( - controller_endpoint, - username, - password, - cacert, - macaroons, + endpoint='10.0.4.171:17070', + username='admin', + password='f53f08cfc32a2e257fe5393271d89d62', + cacert=None, # Left out for brevity, but if you have a cert string you + # should pass it in. You can get the cert from the output + # of The `juju show-controller` command. )