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 <im...@apache.org> 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 <
> agentmili...@gmail.com> 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 <im...@apache.org> 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 <
>>> agentmili...@gmail.com> 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 <
>>>> agentmili...@gmail.com> 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 <im...@apache.org>
>>>>> 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 <
>>>>>> agentmili...@gmail.com> 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 <
>>>>>>> agentmili...@gmail.com> 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 <
>>>>>>>> chami...@wso2.com> 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" <
>>>>>>>>> agentmili...@gmail.com> 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
>

Reply via email to