Add spec for allowing name as positional argument
blueprint positional-name Change-Id: I75d14cc3de16810d57424ac9a0f66c7a66982f05
This commit is contained in:
parent
48ab123a6d
commit
8bf99f093d
|
@ -0,0 +1,116 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
=================================
|
||||||
|
Name as a Positional CLI Argument
|
||||||
|
=================================
|
||||||
|
|
||||||
|
Launchpad blueprint:
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/magnum/+spec/positional-name
|
||||||
|
|
||||||
|
Make the magnum CLI more user-friendly by allowing cluster and cluster template
|
||||||
|
names to be specified positionally.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
The shortest way to create a cluster using the magnum CLI is::
|
||||||
|
|
||||||
|
magnum cluster-create --cluster-template mytemplate
|
||||||
|
|
||||||
|
Since magnum is a service to manage clusters, users will issue sub-commands
|
||||||
|
such as `cluster-show`, `cluster-config` `cluster-update`, and
|
||||||
|
`cluster-delete`, which all take the form::
|
||||||
|
|
||||||
|
magnum cluster-{command} <name or UUID> ...
|
||||||
|
|
||||||
|
If the user didn't specify a name when creating their cluster, they will have
|
||||||
|
to use the autogenerated name or the UUID, which are neither personalized nor
|
||||||
|
memorable. So, many (or, in my opinion, virtually all) users are going to supply
|
||||||
|
a name, which is currently a flag::
|
||||||
|
|
||||||
|
magnum cluster-create --name mycluster --cluster-template mytemplate
|
||||||
|
|
||||||
|
The fact that users must specify the name using a flag on create and then
|
||||||
|
positionally for all other commands creates a small, but important, amount of
|
||||||
|
friction when interacting with magnum; it affects every user creating a
|
||||||
|
cluster, reading documentation, or watching a demo about how easy magnum is to
|
||||||
|
use.
|
||||||
|
|
||||||
|
Names as positional arguments are not unprecedented in OpenStack. In fact,
|
||||||
|
there are quite a few resources where the name is positional. For example,
|
||||||
|
nova servers and flavors, heat stacks, keystone users, swift containers, and
|
||||||
|
neutron networks, security groups, flavors, and routers.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Support `name` as a positional, optional CLI argument for the `cluster-create`
|
||||||
|
and `cluster-template-create` sub-commands::
|
||||||
|
|
||||||
|
magnum cluster-template-create [name] ...
|
||||||
|
|
||||||
|
magnum cluster-create [name] ...
|
||||||
|
|
||||||
|
For example::
|
||||||
|
|
||||||
|
magnum cluster-template-create mytemplate ...
|
||||||
|
|
||||||
|
magnum cluster-create mycluster --cluster-template mytemplate ...
|
||||||
|
|
||||||
|
Whether `[name]` can appear anywhere in the list of arguments can be
|
||||||
|
decided at implementation time. This spec proposes to support the argument at
|
||||||
|
least directly after the sub-command name.
|
||||||
|
|
||||||
|
Supplying a name will still be optional, and the `--name` flag version of the
|
||||||
|
command will still be valid so that all commands are backwards-compatible.
|
||||||
|
Whether `[name]` and `--name` are mutually exclusive or one should take
|
||||||
|
precedence if both are specified can be decided at implementation time.
|
||||||
|
|
||||||
|
This change will not affect the API.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
1. Make name positional and mandatory.
|
||||||
|
|
||||||
|
This would make the magnum CLI more like other OpenStack CLIs where the name
|
||||||
|
is required. However, it would be a breaking CLI change and would probably
|
||||||
|
only make sense if the API were to change too, which would mean it would be
|
||||||
|
a bigger breaking change.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Jason Dunsmore
|
||||||
|
|
||||||
|
Milestones
|
||||||
|
----------
|
||||||
|
|
||||||
|
Target Milestone for completion:
|
||||||
|
pike-1
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
1. Support `[name]` for `cluster-create`.
|
||||||
|
|
||||||
|
2. Support `[name]` for `cluster-template-create`.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security Impact
|
||||||
|
===============
|
||||||
|
|
||||||
|
None
|
Loading…
Reference in New Issue