Hi Milindu, Your project proposal looks good. Shall we have a quick Google Hangout to discuss this? Will you be able to make it today the 24th March at 2.30 PM IST?
Thanks On Tue, Mar 24, 2015 at 5:55 AM, Milindu Sanoj Kumarage < [email protected]> wrote: > Hi, > > I started writing the proposal, here I have attached it. I would be > thankful if you can help me improve it. > > Proposal : Python based Command Line Tool (CLI) for Stratos > <https://docs.google.com/document/d/1ORkVPtFnJQi6szswKaim8ZCIKMHi3d3eCVOuA18GOG4/edit?usp=drive_web> > > > On Wed, Mar 11, 2015 at 12:57 AM, Imesh Gunaratne <[email protected]> > wrote: > >> Hi Milindu, >> >> Yes you seems to be on track. Please use Kubernetes getting started guide >> here: >> https://gist.github.com/imesh/b8f81fac8de39183a504 >> >> Thanks >> >> >> On Mon, Mar 9, 2015 at 8:22 PM, Milindu Sanoj Kumarage < >> [email protected]> wrote: >> >>> Hi, >>> >>> I could fix that "-" problem, everything is now works exactly as Java >>> CLI. I think I can do a demo app with some functionality, then we can >>> discuss further, right? >>> >>> And I'm currently setting up the Stratos on my machine, it seems setting >>> up OpenStack ( DevStack ) is not easy, I found that Kubernetes Vagrant >>> Setup, trying it, and seems it is working fine. Going on that path would >>> not be a problem, right? >>> >>> >>> >>> On Fri, Mar 6, 2015 at 9:37 AM, Imesh Gunaratne <[email protected]> >>> wrote: >>> >>>> Great! Nice to hear that. We might not need to use "_", it would be >>>> better if auto completion could also use commands with "-" pattern. >>>> >>>> At the moment we do not have much client side validations, most of them >>>> are done in server. You could refer [1] for this. >>>> >>>> [1] https://cwiki.apache.org/confluence/display/STRATOS/4.1.0+CLI+Guide >>>> >>>> On Thu, Mar 5, 2015 at 6:23 PM, Milindu Sanoj Kumarage < >>>> [email protected]> wrote: >>>> >>>>> Hi, >>>>> >>>>> With this workaround ( actually it is not a workaround, Cmd2 really >>>>> has aliases feature! but in different name ) we can have both " >>>>> list-tenants" and "list_tenants" working without a problem. Therefor >>>>> the Single command line mode would work exactly like the Java CLI, and >>>>> also the Interactive mode. But in Interactive mode, auto-complete still >>>>> suggests "list_tenants" instead of "list-tenants". we can change >>>>> that too if you really need, but needs some alternations that may not be >>>>> very beautiful, but not ugly too. >>>>> >>>>> one more question, we have to validate the parameters before sending >>>>> to the REST API, right? Do we have any document for these validations, or >>>>> is it the codes I have to follow? >>>>> >>>>> >>>>> >>>>> On Thu, Mar 5, 2015 at 3:50 AM, Imesh Gunaratne <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi Milindu, >>>>>> >>>>>> Great work! We will have a look at this and get back to you. In the >>>>>> mean time can you provide some details on this sample? >>>>>> >>>>>> Thanks >>>>>> >>>>>> On Thu, Mar 5, 2015 at 12:12 AM, Milindu Sanoj Kumarage < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Hi, >>>>>>> I spend last few days investigating a workarounds to solve that '-' >>>>>>> problem :) It seems it is possible. >>>>>>> >>>>>>> BTW, I checked the possibility of uploading the final product to Pip >>>>>>> where anyone can install Stratos CLI using Pip like >>>>>>> $Pip install stratos >>>>>>> >>>>>>> and then run like >>>>>>> >>>>>>> $ stratos -u abcdef >>>>>>> >>>>>>> What's your idea on that? ( We can also provide python script with a >>>>>>> wrapper for Windows and Linux ) >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Fri, Feb 27, 2015 at 9:45 PM, Milindu Sanoj Kumarage < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> the reason is Cmd2 ( and most of the python CLI frameworks ) uses >>>>>>>> function mapping to CLI commands, that is, >>>>>>>> >>>>>>>> // stratos>greet >>>>>>>> def do_greet(): >>>>>>>> print("hi") >>>>>>>> >>>>>>>> will become the 'greet' command. >>>>>>>> >>>>>>>> But if we need, >>>>>>>> >>>>>>>> 'list-tenants' we have to code it as >>>>>>>> >>>>>>>> def do_list-tenants: >>>>>>>> #codes of list tenant command >>>>>>>> >>>>>>>> But using '-' in names of functions ( def*enitions* ) in Python is >>>>>>>> not allowed. >>>>>>>> What shall we do? I'm okay even to write it from the scratch. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Feb 27, 2015 at 9:29 PM, Imesh Gunaratne <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi Milindu, >>>>>>>>> >>>>>>>>> Is there any way of using "-" in the CLI commands. I did not get >>>>>>>>> why a CLI framework would block "-" character. >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> >>>>>>>>> On Fri, Feb 27, 2015 at 2:49 PM, Milindu Sanoj Kumarage < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> Then shall we go with Cmd2 python package? Only change we have to >>>>>>>>>> do is call CLI commands with '_ ' instead '-', like 'list_tenants' >>>>>>>>>> instead >>>>>>>>>> of 'list-tenants'. >>>>>>>>>> >>>>>>>>>> And for HTTP request/response handling, we can use either >>>>>>>>>> Python's urllib3 or Requests, a wrapper around urllib3 which gives >>>>>>>>>> much >>>>>>>>>> simpler API that leads to cleaner codes. It's been praised in the >>>>>>>>>> community from the beginning. >>>>>>>>>> >>>>>>>>>> Licence: Apache2 >>>>>>>>>> >>>>>>>>>> http://docs.python-requests.org/en/latest/# >>>>>>>>>> >>>>>>>>>> On Wed, Feb 25, 2015 at 3:26 PM, Milindu Sanoj Kumarage < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> Here I have included the licences of each framework :) >>>>>>>>>>> >>>>>>>>>>> *Cement *(6/10) >>>>>>>>>>> A complex framework, every CLI commands is bound to a separate >>>>>>>>>>> Python class that acts like an controller, and each controller have >>>>>>>>>>> several >>>>>>>>>>> functions. But no 'Interactive Mode' support, just 'Single command >>>>>>>>>>> line >>>>>>>>>>> mode'. Supports having '-' in CLI Commands ( like 'create-tenant' ) >>>>>>>>>>> via aliases. But no much developments in Github repo recently. >>>>>>>>>>> >>>>>>>>>>> http://cement.readthedocs.org/ >>>>>>>>>>> >>>>>>>>>>> Licence : http://cement.readthedocs.org/en/latest/license/ >>>>>>>>>>> Redistribution and use in source and binary forms, with or >>>>>>>>>>> without modification, are permitted under given conditions. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *Click *(7/10) >>>>>>>>>>> Rich with features, uses Python Decorators to bind CLI commands >>>>>>>>>>> to functions. But no 'Interactive Mode' support, just 'Single >>>>>>>>>>> command line >>>>>>>>>>> mode'. >>>>>>>>>>> >>>>>>>>>>> http://click.pocoo.org/3/ >>>>>>>>>>> >>>>>>>>>>> Licence : http://click.pocoo.org/3/license/ >>>>>>>>>>> three-clause BSD License >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *Plac *(4/10) >>>>>>>>>>> A scaled down version of Python argparse package. Uses set of >>>>>>>>>>> if else statements to process the commands. But no 'Interactive >>>>>>>>>>> Mode' >>>>>>>>>>> support. >>>>>>>>>>> >>>>>>>>>>> http://plac.googlecode.com/hg/doc/plac.html >>>>>>>>>>> >>>>>>>>>>> Licence: http://plac.googlecode.com/hg/doc/plac.html >>>>>>>>>>> BSD license >>>>>>>>>>> >>>>>>>>>>> *Cliapp *(3/10) >>>>>>>>>>> No 'Interactive Mode' support. >>>>>>>>>>> >>>>>>>>>>> http://code.liw.fi/cliapp/docs/ >>>>>>>>>>> >>>>>>>>>>> Licence : https://github.com/rshk/CliApp/blob/master/LICENSE >>>>>>>>>>> Apache License >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *pyCLI *(3/10) >>>>>>>>>>> No 'Interactive Mode' support. >>>>>>>>>>> >>>>>>>>>>> http://pythonhosted.org//pyCLI/ >>>>>>>>>>> >>>>>>>>>>> Licence: http://sourceforge.net/projects/pycli/ >>>>>>>>>>> GNU General Public License version 2.0 (GPLv2) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *Cliff *(9/10) >>>>>>>>>>> A framework for building command line programs by OpenStack. It >>>>>>>>>>> uses plugins to define sub-commands, output formatters, and other >>>>>>>>>>> extensions. >>>>>>>>>>> Supports 'Interactive Mode' using 'cmd2' and 'cmd' >>>>>>>>>>> >>>>>>>>>>> http://docs.openstack.org/developer/cliff/index.html >>>>>>>>>>> >>>>>>>>>>> Licence: https://launchpad.net/python-cliff >>>>>>>>>>> Apache Licence >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *cmd *(8/10) >>>>>>>>>>> Python in built packages for 'Interactive Mode' applications. >>>>>>>>>>> Maps CLI commands to functions by function name, as def >>>>>>>>>>> do_<whatever the command name> ( eg: def do_command1 is for >>>>>>>>>>> command1 ). Support only arguments but no support for Unix-style >>>>>>>>>>> flags. >>>>>>>>>>> Have features like automatic command completion in 'Interactive >>>>>>>>>>> Mode'. >>>>>>>>>>> >>>>>>>>>>> https://docs.python.org/2/library/cmd.html >>>>>>>>>>> >>>>>>>>>>> Licence: https://docs.python.org/2/license.html >>>>>>>>>>> GPL compatible >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> *cmd2 *(9/10) >>>>>>>>>>> Extends the Python Standard Library’s cmd package. Can handle >>>>>>>>>>> arguments and flags. Supports for Output Redirection and Piping ( >>>>>>>>>>> As in a >>>>>>>>>>> Unix shell ). Searchable command history ( bash-like history list >>>>>>>>>>> editing >>>>>>>>>>> ), can get last commands with arrow keys. Able to perform shell >>>>>>>>>>> commands >>>>>>>>>>> while in Interactive mode. ( eg: stratos>!ls or stratos>shell ls ) >>>>>>>>>>> output >>>>>>>>>>> can be colored. >>>>>>>>>>> >>>>>>>>>>> https://pythonhosted.org/cmd2 >>>>>>>>>>> >>>>>>>>>>> Licence: https://pypi.python.org/pypi/cmd2/0.6.8 >>>>>>>>>>> MIT License >>>>>>>>>>> >>>>>>>>>>> On Wed, Feb 25, 2015 at 10:29 AM, Chamila De Alwis < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Great work Milindu. It would be better to add the licenses for >>>>>>>>>>>> each library too, in case any non-compatible or ambiguous ones >>>>>>>>>>>> might be >>>>>>>>>>>> there. >>>>>>>>>>>> >>>>>>>>>>>> IMO using a framework from the standard library would be >>>>>>>>>>>> better, since the pre-requisites will be minimal. >>>>>>>>>>>> On Feb 25, 2015 9:55 AM, "Milindu Sanoj Kumarage" < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> Here is the JIRA issue on this, >>>>>>>>>>>>> https://issues.apache.org/jira/browse/STRATOS-1187 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Here I have added some of the Python CLI frameworks I checked, >>>>>>>>>>>>> I have added a brief for each of them. I also have state a score >>>>>>>>>>>>> out of 10 >>>>>>>>>>>>> to indicate how best they matches for our need. ( But they are as >>>>>>>>>>>>> of my >>>>>>>>>>>>> understanding! I may not be very correct in some cases. Because >>>>>>>>>>>>> some of >>>>>>>>>>>>> the ones I could write some codes and check, but for some I could >>>>>>>>>>>>> not, >>>>>>>>>>>>> manly because of errors ) >>>>>>>>>>>>> >>>>>>>>>>>>> *Cement *(6/10) >>>>>>>>>>>>> A complex framework, every CLI commands is bound to a separate >>>>>>>>>>>>> Python class that acts like an controller, and each controller >>>>>>>>>>>>> have several >>>>>>>>>>>>> functions. But no 'Interactive Mode' support, just 'Single >>>>>>>>>>>>> command line >>>>>>>>>>>>> mode'. Supports having '-' in CLI Commands ( like >>>>>>>>>>>>> 'create-tenant' ) >>>>>>>>>>>>> via aliases. But no much developments in Github repo recently. >>>>>>>>>>>>> >>>>>>>>>>>>> http://cement.readthedocs.org/ >>>>>>>>>>>>> >>>>>>>>>>>>> *Click *(7/10) >>>>>>>>>>>>> Rich with features, uses Python Decorators to bind CLI >>>>>>>>>>>>> commands to functions. But no 'Interactive Mode' support, just >>>>>>>>>>>>> 'Single >>>>>>>>>>>>> command line mode'. >>>>>>>>>>>>> >>>>>>>>>>>>> http://click.pocoo.org/3/ >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> *Plac *(4/10) >>>>>>>>>>>>> A scaled down version of Python argparse package. Uses set of >>>>>>>>>>>>> if else statements to process the commands. But no 'Interactive >>>>>>>>>>>>> Mode' >>>>>>>>>>>>> support. >>>>>>>>>>>>> >>>>>>>>>>>>> http://plac.googlecode.com/hg/doc/plac.html >>>>>>>>>>>>> >>>>>>>>>>>>> *Cliapp *(3/10) >>>>>>>>>>>>> No 'Interactive Mode' support. >>>>>>>>>>>>> >>>>>>>>>>>>> http://code.liw.fi/cliapp/docs/ >>>>>>>>>>>>> >>>>>>>>>>>>> *pyCLI *(3/10) >>>>>>>>>>>>> No 'Interactive Mode' support. >>>>>>>>>>>>> >>>>>>>>>>>>> http://pythonhosted.org//pyCLI/ >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> *Cliff *(9/10) >>>>>>>>>>>>> A framework for building command line programs by OpenStack. >>>>>>>>>>>>> It uses plugins to define sub-commands, output formatters, and >>>>>>>>>>>>> other >>>>>>>>>>>>> extensions. >>>>>>>>>>>>> Supports 'Interactive Mode' using 'cmd2' and 'cmd' >>>>>>>>>>>>> >>>>>>>>>>>>> http://docs.openstack.org/developer/cliff/index.html >>>>>>>>>>>>> >>>>>>>>>>>>> *cmd *(8/10) >>>>>>>>>>>>> Python in built packages for 'Interactive Mode' applications. >>>>>>>>>>>>> Maps CLI commands to functions by function name, as def >>>>>>>>>>>>> do_<whatever the command name> ( eg: def do_command1 is for >>>>>>>>>>>>> command1 ). Support only arguments but no support for Unix-style >>>>>>>>>>>>> flags. >>>>>>>>>>>>> Have features like automatic command completion in 'Interactive >>>>>>>>>>>>> Mode'. >>>>>>>>>>>>> >>>>>>>>>>>>> https://docs.python.org/2/library/cmd.html >>>>>>>>>>>>> >>>>>>>>>>>>> *cmd2 *(9/10) >>>>>>>>>>>>> Extends the Python Standard Library’s cmd package. Can handle >>>>>>>>>>>>> arguments and flags. Supports for Output Redirection and Piping >>>>>>>>>>>>> ( As in a >>>>>>>>>>>>> Unix shell ). Searchable command history ( bash-like history >>>>>>>>>>>>> list editing >>>>>>>>>>>>> ), can get last commands with arrow keys. Able to perform shell >>>>>>>>>>>>> commands >>>>>>>>>>>>> while in Interactive mode. ( eg: stratos>!ls or stratos>shell ls >>>>>>>>>>>>> ) output >>>>>>>>>>>>> can be colored. >>>>>>>>>>>>> >>>>>>>>>>>>> https://pythonhosted.org/cmd2 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Imesh Gunaratne >>>>>>>>> >>>>>>>>> Technical Lead, WSO2 >>>>>>>>> Committer & PMC Member, Apache Stratos >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Imesh Gunaratne >>>>>> >>>>>> Technical Lead, WSO2 >>>>>> Committer & PMC Member, Apache Stratos >>>>>> >>>>> >>>>> >>>> >>>> >>>> -- >>>> Imesh Gunaratne >>>> >>>> Technical Lead, WSO2 >>>> Committer & PMC Member, Apache Stratos >>>> >>> >>> >> >> >> -- >> Imesh Gunaratne >> >> Technical Lead, WSO2 >> Committer & PMC Member, Apache Stratos >> > > -- Imesh Gunaratne Technical Lead, WSO2 Committer & PMC Member, Apache Stratos
