On 11/08/16 17:46, Ian Booth wrote:
> 
> On 11/08/16 17:03, John Meinel wrote:
>> On Thu, Aug 11, 2016 at 9:30 AM, Ian Booth <ian.bo...@canonical.com> wrote:
>>
>>> A few things have been irking me with some aspects of Juju's CLI. Here's a
>>> few
>>> thoughts from a user perspective (well, me as user, YMMV).
>>>
>>> The following pain points mainly revolve around commands that operate on a
>>> controller rather than a model.
>>>
>>> eg
>>>
>>> $ juju login [-c controllername] fred
>>> $ juju logout [-c controllername]
>>>
>>
>> I would agree with 'juju login' as it really seems you have to supply the
>> controller, especially since we explicitly disallow logging into the same
>> controller twice. The only case is 'juju logout && juju login'. Or the 'I
>> have to refresh my macaroon' but in that case couldn't we just do "juju
>> login" with no args at all?
>>
>>
>>
>>>
>>> I really think the -c arg is not that natural here.
>>>
>>> $ juju login controllername fred
>>> $ juju logout controllername
>>>
>>> seem a lot more natural and also explicit, because....
>>> I know without args, the "current" controller will be used...
>>> but it's not in your face what that is without running list-controllers
>>> first,
>>> and so it's too easy to logout of the wrong controller accidentally. Having
>>> positional args solves that.
>>>
>>
>> I'm fine with an optional positional arg and "juju logout" removes you from
>> the current controller. As it isn't destructive (you can always login
>> again), as long as the command lets you know *what* you just logged out of,
>> you can undo your mistake. Vs "destroy-controller" which is significantly
>> more permanent when it finishes.
>>
>>
>>
>>>
>>> The same would then apply to other controller commands, like eg add-model
>>>
>>> $ juju add-model mycontroller mymodel
>>>
>>> One thing that might be an issue for people is if they only have one
>>> controller,
>>> then
>>>
>>> $ juju logout
>>> or
>>> $ juju add-model
>>>
>>> would just work and requiring a controller name is more typing.
>>>
>>
>> I disagree on 'juju add-model', as I think we have a very good concept of
>> "current context" and adding another model to your current controller is a
>> natural event.
>>
> 
> Fair point.
> 
>>
>>>
>>> But 2 points there:
>>> 1. as we move forward, people reasonably have more than one controller on
>>> the go
>>> at any time, and being explicit about what controller you are wanting to
>>> use is
>>> a good thing
>>> 2. in the one controller case, we could simply make the controller name
>>> optional
>>> so juju logout just works
>>>
>>> We already use a positional arg for destroy-controller - it just seems
>>> natural
>>> to do it everywhere for all controller commands.
>>>
>>
>> destroy-controller was always a special case because it is an unrecoverable
>> operation. Almost everything else you can use current context and if it was
>> a mistake you can easily recover.
>>
>>
>>>
>>> Anyways, I'd like to see what others think, mine is just the perspective
>>> of one
>>> user. I'd be happy to do a snap and put it out there to get feedback.
>>>
>>> --
>>>
>>> Another issue - I would really, really like a "juju whoami" command. We
>>> used to
>>> use juju switch-user without args for that, but now it's gone.
>>>
>>> When you are staring at a command prompt and you know you have several
>>> controllers and different logins active, I really want to just go:
>>>
>>> $ juju whoami
>>> Currently active as fred@controller2
>>
>>
>> I'd say you'd want what your current user, controller and model is, as that
>> is the current 'context' for commands.
>>
> 
> Agreed, adding model would be necessary.
> 

And as Rick pointed out, this mirrors charm whoami nicely too. So we get that
level of consistency across our Juju commands.

>>
>>>
>>
>>
>>> Just to get a quick reminder of what controller I am operating on and who
>>> I am
>>> logged in as on the controller.  I know we have a way of doing that via
>>> list
>>> controllers, but if there's a few, or even if not, you still need to scan
>>> your
>>> eyes down a table and look for the one wit the * to see the current one
>>> and then
>>> scan across and get see the user etc. It's all a lot harder than just a
>>> whoami
>>> command IMO.
>>>
>>> --
>>>
>>> We will need a juju shares command to show who has access to a controller,
>>> now
>>> that we have controller permissions login, addmodel, superuser.
>>>
>>> For models, we support:
>>>
>>> $ juju shares -m model
>>> $ juju shares (for the default model)
>>>
>>> What do we want for controller shares?
>>>
>>> $ juju shares-controller  ?
>>>
>>
>> It would certainly at least be "controller-shares" (and
>> list-controller-shares) not "shares-controller".
>>
> 
> Bah, had a dyslexic moment. Yes, controller-shares
> 

Rick brought up a great suggestion - we should just add the access level to
list-users. This then fits in with the same approach below for list controllers
and list models.


>>
>>>
>>> which would support positional arg
>>>
>>> $ juju shares-controller mycontroller   ?
>>>
>>
>> Again, current context is perfectly ok here. We use current context for all
>> model commands (juju status doesn't require you to specify the model each
>> time). And arguably you're switching controller far less often than you
>> would be switching models.
>>
>> I wonder if we could roll controller shares just into the same command.
>>
> 
> I think that could work, a single juju shares command shows the shares for the
> current context (controller and model) in a tabular display with a 
> [CONTROLLER]
> and a [MODEL] section. And yaml/json would work nicely too.
> 
>>
>>> --
>>>
>>> On the subject of shares, the shares command shows all users with access
>>> to a
>>> model (or soon a controller as per above). That's great for admins to see
>>> who
>>> they are sharing their stuff with. What I'd like as a user is a command to
>>> tell
>>> me what level of access I have to various controllers and models. I'd like
>>> this
>>> in list-controllers and list-models.
>>>
>>> $ juju list-controllers
>>>
>>> CONTROLLER       MODEL    USER         CLOUD/REGION   ACCESS
>>> fredcontroller*  foo      fred@local                  addmodel
>>> ian              default  admin@local  lxd/localhost  superuser
>>>
>>
>> FWIW, we're really trying to get rid of the @local syntax, as you're either
>> a local user or a user in the external IDM, but we only support a single
>> external, so we don't have to distinguish between them.
>>
> 
> Yeah, I just cut and pasted from a running Juju beta14. Clearly there's a bug
> there to clean up that output. I thought we had such a bug raised already, 
> I'll
> have to go try and find it.
> 
>>
>>>
>>> $ juju list-models
>>>
>>> MODEL  OWNER       STATUS     ACCESS  LAST CONNECTION
>>> foo*   fred@local  available  write   5 minutes ago
>>>
>>> The above would make it much easier to see if I could add a model or
>>> deploy an
>>> application etc. And I don't get to see who else has access like with juju
>>> shares, just my own access levels. Thoughts?
>>>
>>>
>> "juju models" and "juju controllers" does indeed seem a good place to list
>> your username and your access level.
>>
>> John
>> =:->
>>
> 
> 

-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to