Hi Milindu,
All the requests sent to Stratos needs an username and a password for > authentications, right? I was thinking if I can create a python decorator ( > maybe as @auth ) to check if the username and password is known before > sending the request. If we use a decorator, for each api call username and password will be checked. I think it is fine when CLI is running in non-interactive mode. But in interactive mode we can check username and password when starting CLI and store those values. WDYT ? I have to add a POM to the Python CLI component. What I should include in > it? You have to link CLI with Startos as a child component. You can have look at python agent pom.xml [1]. [1] https://github.com/apache/stratos/blob/master/components/org.apache.stratos.python.cartridge.agent/pom.xml On Thu, May 28, 2015 at 11:31 AM, Milindu Sanoj Kumarage < agentmili...@gmail.com> wrote: > Hi, > > I came up with this structure after studying the needs. > > Main.py, CLI.py and Stratos.py would be same as of our previous > discussions. > > Configs.py would hold configurations, etc. It would be like > the CliConstants.java and holds the default Stratos directory, Stratos > prompt string, etc. And it is reading the environment variables, like > username, password, etc. > > Logging.py would handle everything about logging. Setting the logging > file, creating the logging file's directory if not exists, and setting > logging level etc. > > Utils.py would hold the utility methods. Currently it holds codes for > pretty printing of tables and trees. > > [image: Inline image 1] > > > I pushed my commits to my fork. ( > https://github.com/agentmilindu/stratos/tree/python-cli/components/org.apache.stratos.python.cli/src/main/python/cli > ) > > I have some questions, > > All the requests sent to Stratos needs an username and a password for > authentications, right? I was thinking if I can create a python decorator ( > maybe as @auth ) to check if the username and password is known before > sending the request. > > @auth > def do_deploy_service(self, line , opts=None): > #codes of the deploy_service def > > where @auth checks either, > if the opts list contains username and password, > else if environment variables are set for username and password. > > Reason is, if we have to do a change in the username and password > checking logic, then we have to change only one place. > What you think about this approach? > Is there any way keeping a session like, if one successfully authenticated > request got a response, the subsequent requests need not to have to reenter > the username/password ? > > I have to add a POM to the Python CLI component. What I should include in > it? > > I think our foundation parts are done now. We have to start coding the > each actions. > I will send my first pull request once we are done with the above :) > > > On Sun, May 10, 2015 at 10:32 PM, Chamila De Alwis <chami...@wso2.com> > wrote: > >> Hi Milindu, >> >> We should always log enough information to a log file. In fact,* >> .stratos* folder in the Java CLI is used to store the *stratos-cli.log* >> file. INFO level logs should be used to log important messages, while DEBUG >> level should be verbose enough to pinpoint an error. >> >> The other use of the* .stratos* folder is to store the command history. >> You can verify this by checking the files in ~/.stratos folder. >> >> >> >> >> Regards, >> Chamila de Alwis >> Software Engineer | WSO2 | +94772207163 >> Blog: code.chamiladealwis.com >> >> >> >> On Sun, May 10, 2015 at 9:26 PM, Milindu Sanoj Kumarage < >> agentmili...@gmail.com> wrote: >> >>> Hi, >>> >>> Thanks Chamila, I will update the setup.py with these info. >>> I too taught of using 'stratos-cli' first, but doubted you wouldn't >>> like that because the user has to type this when working with Single >>> Command Line Mode. But if you think that would not be a problem, then >>> let's change that as 'stratos-cli' :) >>> >>> Thanks Imesh, I will update the name as StratosApiClient then. >>> >>> I have few more questions, >>> >>> 1. We have to do logging, right? Log important events always ( to a >>> file? ) or log only in debug mode ( directly to the cmd? )? >>> 2. I saw Java CLI creating a dir named '.stratos', for what that dir >>> is used to? >>> >>> >>> >>> On Sat, May 9, 2015 at 10:16 PM, Imesh Gunaratne <im...@apache.org> >>> wrote: >>> >>>> Hi Milindu, >>>> >>>> On Sat, May 9, 2015 at 9:37 PM, Milindu Sanoj Kumarage < >>>> agentmili...@gmail.com> wrote: >>>>> >>>>> >>>>> 1. Main.py - This contains the entry point, it does the initializing >>>>> parts, creates a CLI instance and runs the loop and other stuffs. >>>>> >>>> +1 >>>> >>>>> >>>>> 2. CLI.py - This is the actual CLI that extends Cmd2. This contains >>>>> the command to def mappings, argument and flag handling, printing outputs, >>>>> etc. >>>>> >>>> +1 >>>> >>>>> >>>>> 3. Stratos.py - This contains the actual business logic, that is, >>>>> which REST end point to call, and do what with the response, what to show, >>>>> what not, etc. At the end, this would be like a Python API for Stratos in >>>>> a >>>>> way. >>>>> >>>>> IMO Stratos is too generic for a class name. Shall we rename this to >>>> something like StratosApiClient? >>>> >>>> Thanks >>>> >>>> -- >>>> Imesh Gunaratne >>>> >>>> Senior Technical Lead, WSO2 >>>> Committer & PMC Member, Apache Stratos >>>> >>> >>> >> > -- *Thanks and Regards,* Anuruddha Lanka Liyanarachchi Software Engineer - WSO2 Mobile : +94 (0) 712762611 Tel : +94 112 145 345 a <thili...@wso2.com>nurudd...@wso2.com