<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br></div><div><br>On Nov 10, 2013, at 3:47 PM, Paul Belanger <<a href="mailto:paul.belanger@polybeacon.com">paul.belanger@polybeacon.com</a>> wrote:<br><br></div><blockquote type="cite"><div><span>On 13-11-10 12:36 PM, Jay Pipes wrote:</span><br><blockquote type="cite"><span>On 11/10/2013 10:15 AM, Noorul Islam K M wrote:</span><br></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>Hello all,</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span></span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>I registered a new blueprint [1] for command line client interface for</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>Solum. We need to decide whether we should have a separate repository</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>for this or go with new unified CLI framework [2]. Since Solum is not</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>part of OpenStack I think it is not the right time to go with the</span><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span>unified CLI.</span><br></blockquote></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>I think a separate repository (python-solumclient) is appropriate.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>There are two main camps of client tool programming: using the cliff</span><br></blockquote><blockquote type="cite"><span>library [1] and using the framework that was originally used for the</span><br></blockquote><blockquote type="cite"><span>Rackspace Cloud Servers CLI tool and library.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Example of the cliff style is python-neutronclient [2]. Example of the</span><br></blockquote><blockquote type="cite"><span>other style is the current python-novaclient [3].</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>I actually would love to see the Solum client take the best of both of</span><br></blockquote><blockquote type="cite"><span>the styles and create a client library that uses the cliff library for</span><br></blockquote><blockquote type="cite"><span>the underlying CLI plumbing and use the object-oriented style of</span><br></blockquote><blockquote type="cite"><span>python-novaclient that returns Resource objects instead of raw dicts</span><br></blockquote><blockquote type="cite"><span>like python-neutronclient does...</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Best,</span><br></blockquote><blockquote type="cite"><span>-jay</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>[1] <a href="https://cliff.readthedocs.org/en/latest/">https://cliff.readthedocs.org/en/latest/</a></span><br></blockquote><blockquote type="cite"><span>[2] <a href="https://github.com/openstack/python-neutronclient">https://github.com/openstack/python-neutronclient</a></span><br></blockquote><blockquote type="cite"><span>[3] <a href="https://github.com/openstack/python-novaclient">https://github.com/openstack/python-novaclient</a></span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><span>+1 to cliff. I've used cliff a few times now for some CLI clients and it works very well.</span><br></div></blockquote><div><br></div><div>Even though it'll be a long time (maybe never) before Solum is a core project, it'd be good to track the CLI work going on in the common client [1]. The session at the design summit [2] definitely conveyed a broad agreement on this direction (ie common client is mostly inevitable), so being cognizant of the plugin pattern they have going is smart. We could potentially ship an isolated common client (ie based on that code) that used only a Solum plugin, so in the future we would have the option to switch to being integrated.</div><div><br></div><div>[1] <a href="https://github.com/openstack/python-openstackclient">https://github.com/openstack/python-openstackclient</a></div><div><br></div><div>[2] <a href="https://etherpad.openstack.org/p/icehouse-oslo-openstack-client-update">https://etherpad.openstack.org/p/icehouse-oslo-openstack-client-update</a></div></body></html>