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

Reply via email to