Hi,
On Fri, May 10, 2013 at 5:09 AM, Lahiru Sandaruwan <lahi...@wso2.com> wrote: > Hi Isuru, > > +1 for the improvements. > > Find my comments inline > > > On Thu, May 9, 2013 at 9:53 PM, Isuru Perera <isu...@wso2.com> wrote: > >> Hi, >> >> For Stratos 2.0 release, we are planning to improve the existing CLI Tool >> [1]. >> >> We are planning to support following features in Stratos2 CLI Tool >> >> >> - Command history [2] >> - Auto-completion of commands >> - Character masking (for passwords) [3] >> >> >> For above features, we are planning to use jline2 library [4]. >> >> *Existing Design* >> >> Currently the CLI tool has two modes. (Stratos2 CLI source can be found >> at [5]) >> >> 1. Interactive Mode - In this mode, user is logged in by passing only >> username & password as arguments. >> >> $stratos <username> <password> >> After successful login, the user get a prompt as "stratos>" >> > > We gave up -u, -p for passing credentials as they were mandatory. > Since we are improving it to mask password its good to have the options > model back. > +1 > > We used Apache commons cli library to achieve that as for all other > optional inouts. Same library may help to add it again if we continue to > use that library. > My current plan is to use Apache Commons CLI library as it is. It can be used to parse command line arguments. However I need to figure out how to use that library effectively in Interactive Mode. Currently, the CLI tool just uses string comparisons/manipulations in the interactive mode [1]. I think we should improve that as well. > >> 2. Single Command Line Mode - In this mode, all the commands are passed >> as arguments including username and password >> >> $stratos <username> <password> list >> This will list all the cartridges. >> >> AFAIK, we can support above features only when the CLI tool is in prompt >> mode. >> > Normal command features are supported in this mode(e.g. History) as we run > them in terminal, not in an our prompt. > Yes. As I mentioned, we can use jline2 to provide above features in Interactive Mode. In single command line mode, we can use history in the terminal. Only problem is auto completing options. > > >> In order to provide auto-complete features at the terminal, we need to >> use OS specific functions, for example /etc/bash_completion [6] >> >> > The single line mode was introduced later for the requirement of scripting > Stratos commands. > Eg. To write a bash script to do any Stratos operations. > Make sure we have a way to achieve that with new improvements. > +1 I will not change existing modes. i.e. Interactive Mode & Single command line mode. > > *Drawbacks of existing Beta 2 CLI Tool & Possible Solutions* >> >> 1. A drawback of existing design is that we have to login every time the >> stratos command is executed. >> > > This is true for Single line commands. But since we use Basic Auth, AFAIK > we do not login every time for prompt mode. > Yes. In Interactive Mode, we need to login to enter the prompt. If we can save authentication details, we do not have to login at this time also. > > >> >> Solution: Login only once. The back-end service is an admin service and >> we login as a tenant. I'm thinking of a way to save session in the file >> system. For example inside <user.home>/.stratos/ >> >> If we can save the session id, then we use the same for authenticate next >> requests. In this way, the user can use the CLI tool, until the session >> times out. >> >> Or else we can keep the username and password cached (encrypted form). In >> this way, user can keep using the tool without worrying about the session >> time out. >> >> Which is the better way? >> >> 2. Currently the password is entered in the command line itself >> >> Solution: With jline2, we can use masking for password input. >> >> 3. Command history not support. >> >> Solution: jline2 can provide command history. Additionally if we can >> login only once, user can execute commands directly in terminal and use the >> history available in the terminal environment. >> >> *New Design* >> >> I'm going to introduce following commands to the tool >> > So are we planning to ship as Jar and script file as we had before? > Yes. We need to provide wrappers, eg. script files for different environments. Any suggestions? > > Thanks. > [1] https://svn.wso2.org/repos/wso2/carbon/platform/branches/4.1.0/components/stratos/artifact-deployment-coordinator/org.wso2.carbon.adc.mgt.cli/2.1.1/src/main/java/org/wso2/carbon/adc/mgt/cli/parsers/LineParser.java > >> 1. $stratos setup >> This will prompt for Stratos Controller hostname & port. These values >> will be saved in <user.home>/.stratos/stratos.config >> >> 2. $stratos login >> This will have arguments for username and password. Password will be >> prompted with masked character. Authentication details will be saved in >> <user.home>/.stratos/ >> >> 3. $stratos logout >> Logout user. >> >> After successful login, user can go into interactive mode by just >> entering "stratos" or user can execute commands in single line. For example >> "stratos list", "stratos subscribe" etc. >> >> CLI Tool will also be improved to use a single '-' for short option names >> and '--' for longer option names [7]. >> >> WDYT? >> >> [1] https://wso2.org/jira/browse/SPI-234 >> [2] https://wso2.org/jira/browse/SPI-111 >> [3] https://wso2.org/jira/browse/SPI-241 >> [4] http://jline.github.io/jline2/ >> [5] >> https://svn.wso2.org/repos/wso2/carbon/platform/branches/4.1.0/components/stratos/artifact-deployment-coordinator/org.wso2.carbon.adc.mgt.cli/2.1.1 >> [6] http://www.debian-administration.org/articles/316 >> [7] https://wso2.org/jira/browse/SPI-240 >> >> -- >> Isuru Perera >> Senior Software Engineer | WSO2, Inc. | http://wso2.com/ >> Lean . Enterprise . Middleware >> >> Twitter: http://twitter.com/chrishantha | LinkedIn: >> http://lk.linkedin.com/in/chrishantha/ >> >> _______________________________________________ >> Architecture mailing list >> Architecture@wso2.org >> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >> >> > > > -- > -- > Lahiru Sandaruwan > Software Engineer, > Platform Technologies, > WSO2 Inc., http://wso2.com > lean.enterprise.middleware > > email: lahi...@wso2.com cell: (+94) 773 325 954 > blog: http://lahiruwrites.blogspot.com/ > twitter: http://twitter.com/lahirus > linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146 > > > _______________________________________________ > Architecture mailing list > Architecture@wso2.org > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > > -- Isuru Perera Senior Software Engineer | WSO2, Inc. | http://wso2.com/ Lean . Enterprise . Middleware Twitter: http://twitter.com/chrishantha | LinkedIn: http://lk.linkedin.com/in/chrishantha/
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture