Sample command usage and output interpretation

This section seeks to clarify the meaning of the output to some commands and how other commands can alter that output.

Consider the following output to juju controllers on some given system:

CONTROLLER         MODEL        USER         SERVER
local.lxd-trusty*  lxd-staging  admin@local
lxd-jim            -            jim@local
lxd-rod            lxd-pilot    rod@local
lxd-sam            -            -  


  • Controller 'lxd-trusty' is a controller that is local to the client system (prefix 'local.'). It was bootstrapped there.
  • The other 3 controllers are due to users being registered to the same remote controller with IP address Each user decided to base the name of "their" controller on their name (i.e. 'lxd-jim').
  • The "current" controller, model, and user are 'lxd-trusty', 'lxd-staging', and 'admin' respectively (the * character denotes this). These will be used as the defaults in many commands.
  • Users 'admin', 'jim', and 'rod' are logged in.
  • User 'jim' has not been granted access to a model.
  • An administrator on the remote controller has granted user 'rod' access to model 'lxd-pilot'.
  • The user (presumably 'sam') who named their controller 'lxd-sam' is logged out and may, or may not, have access to a model.

Let's see how the above output is altered if we have user 'sam' log in to their controller. Before doing so, we list users to ensure 'sam' is the actual user and switch to his controller:

juju users
juju switch lxd-sam
juju login -u sam

The output becomes:

CONTROLLER        MODEL        USER         SERVER
local.lxd-trusty  lxd-staging  admin@local
lxd-jim           -            jim@local
lxd-rod           lxd-pilot    rod@local
lxd-sam*          lxd-prod     sam@local


  • User 'sam' has indeed been granted access to a model ('lxd-prod').
  • The "current" controller, model, and user are now 'lxd-sam', 'lxd-prod', and 'sam' respectively.

Note that a login cannot occur if there is an ongoing user session with that same controller. An error will be emitted. The other user will need to log out first.

After login, it is a good idea for the user to list the models available to him:

juju models

Also, if the model is granted after user registration it may not show up upon login. In that case, the user will need to switch to the model:

juju switch <model name>

The juju switch command can refer to <controller name>, <model name>, or
<controller name>:<model name>.