<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
I have updated the blueprint for this feature, and approved the direction for the v0.1 milestone:
<div><br>
<div><a href="https://blueprints.launchpad.net/solum/+spec/command-line">https://blueprints.launchpad.net/solum/+spec/command-line</a></div>
<div><br>
</div>
<div>The specification for the CLI is not intended to be complete at this stage. It only specified what I expect we will need for v0.1. Additional commands can be added as we add support for additional features in subsequent releases.</div>
<div><br>
</div>
<div>Adrian</div>
<div><br>
</div>
<div>
<div>
<div>On Nov 15, 2013, at 12:00 PM, Doug Hellmann <<a href="mailto:doug.hellmann@dreamhost.com">doug.hellmann@dreamhost.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_default" style="font-size:small"><br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Thu, Nov 14, 2013 at 2:28 AM, Adrian Otto <span dir="ltr">
<<a href="mailto:adrian.otto@rackspace.com" target="_blank">adrian.otto@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">Doug,
<div><br>
<div>
<div>
<div class="h5">
<div>On Nov 13, 2013, at 9:28 AM, Doug Hellmann <<a href="mailto:doug.hellmann@dreamhost.com" target="_blank">doug.hellmann@dreamhost.com</a>> wrote:</div>
<br>
<blockquote type="cite">
<div dir="ltr"><br>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Sun, Nov 10, 2013 at 10:15 AM, Noorul Islam K M <span dir="ltr">
<<a href="mailto:noorul@noorul.com" target="_blank">noorul@noorul.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Hello all,<br>
<br>
I registered a new blueprint [1] for command line client interface for<br>
Solum. We need to decide whether we should have a separate repository<br>
for this or go with new unified CLI framework [2]. Since Solum is not<br>
part of OpenStack I think it is not the right time to go with the<br>
unified CLI.<br>
</blockquote>
<div><br>
</div>
<div>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:</div>
<div><br>
</div>
<div>  $ pip install python-solumclient</div>
<div>  $ pip install python-openstackclient</div>
<div>  $ openstack solum make me a paas</div>
<div><br>
</div>
<div>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).</div>
</div>
</div>
</div>
</blockquote>
<div><br>
</div>
</div>
</div>
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?</div>
<div><br>
</div>
<div>I could imagine the following verb/noun combinations off the bat:</div>
<div><br>
</div>
<div>deploy app</div>
<div><br>
</div>
<div>list assemblies</div>
<div>list plans</div>
<div>list services</div>
<div><br>
</div>
<div>get assembly <assembly_name|uri></div>
<div>get plan <plan_name|uri></div>
<div>get service <service_name|uri></div>
<div><br>
</div>
<div>scale assembly <assembly_name|uri> (+|-n)</div>
<div>resize du <assembly_name|uri></div>
<div>
<div>start assembly</div>
<div>stop assembly</div>
<div><br>
</div>
</div>
<div>delete assembly</div>
<div>delete app</div>
<div><br>
</div>
<div>What about using combined noun+verb combinations, so you would end up with commands like:</div>
<div><br>
</div>
<div>deploy_app</div>
<div><br>
</div>
<div>…etc. That might be more specific and require less processing logic.</div>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>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.
<div class="gmail_default" style="font-size:small;display:inline">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).</div>
<br>
</div>
<div><br>
</div>
<div>
<div class="gmail_default" style="font-size:small">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.</div>
<br>
</div>
<div>
<div class="gmail_default" style="font-size:small">Doug</div>
<br>
</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">
<div>
<div><br>
</div>
<div>Thanks,</div>
<div><br>
</div>
<div>Adrian</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div>Doug</div>
</div>
</div>
</div>
<div class="im">_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev<br>
</blockquote>
</div>
<br>
</div>
</div>
</body>
</html>