[openstack-dev] [Solum] Command Line Interface for Solum

Doug Hellmann doug.hellmann at dreamhost.com
Fri Nov 15 20:00:29 UTC 2013


On Thu, Nov 14, 2013 at 2:28 AM, Adrian Otto <adrian.otto at rackspace.com>wrote:

>  Doug,
>
>  On Nov 13, 2013, at 9:28 AM, Doug Hellmann <doug.hellmann at dreamhost.com>
> wrote:
>
>
>
>
> On Sun, Nov 10, 2013 at 10:15 AM, Noorul Islam K M <noorul at noorul.com>wrote:
>
>>
>> Hello all,
>>
>> I registered a new blueprint [1] for command line client interface for
>> Solum. We need to decide whether we should have a separate repository
>> for this or go with new unified CLI framework [2]. Since Solum is not
>> part of OpenStack I think it is not the right time to go with the
>> unified CLI.
>>
>
>  One of the key features of the cliff framework used for the unified
> command line app is that the subcommands can be installed independently of
> the main program. So you can write plugins that work with the openstack
> client, but put them in the solum client library package (and source
> repository). That would let you, for example:
>
>    $ pip install python-solumclient
>   $ pip install python-openstackclient
>   $ openstack solum make me a paas
>
>  Dean has done a lot of work to design a consistent
> "noun-followed-by-verb" command structure, so please look at that work when
> picking subcommand names (for example, you shouldn't use solum as a prefix
> as I did in my example above, since we are removing the project names from
> the commands).
>
>
>  Are you referring to "openstack solum …" in your suggestion of what not
> to do? If there is no project name in there, how would it work? Would we
> have a flat global namespace for all verbs?
>
>  I could imagine the following verb/noun combinations off the bat:
>
>  deploy app
>
>  list assemblies
> list plans
> list services
>
>  get assembly <assembly_name|uri>
> get plan <plan_name|uri>
> get service <service_name|uri>
>
>  scale assembly <assembly_name|uri> (+|-n)
> resize du <assembly_name|uri>
>  start assembly
> stop assembly
>
>  delete assembly
> delete app
>
>  What about using combined noun+verb combinations, so you would end up
> with commands like:
>
>  deploy_app
>
>  …etc. That might be more specific and require less processing logic.
>

There is a namespace for the nouns, and each noun has a namespace with
verbs. So you might say "openstack app deploy", "openstack assembly show",
etc.
 Placing the noun first lets us use tab completion to help the user figure
out what options they have ("openstack assembly <tab>" would show scale,
resize, start, and stop as completion options).


As far as processing logic, that's all handled by the framework already.
The commands are registered as multi-word names pointing to a single class,
and cliff figures out which one to run based on the input command line.

Doug



>
>  Thanks,
>
>  Adrian
>
>
>
>
>  Doug
>   _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20131115/1e0cc5b2/attachment.html>


More information about the OpenStack-dev mailing list