Then you cite a wrong example in your former mail. You stated:

> > > Seems doesn't support auto-completion for api parameters?
> > >
> > > 🙉 cloudmonkey> api listUsers

This is running in cloudmonkey's terminal, what xe does is in native bash 
terminal.
if you want native command line, bash-auto-completion is your friend. But my 
reply is for your former mail which refers to cloudmonkey's terminal.

> -----Original Message-----
> From: Edison Su [mailto:edison...@citrix.com]
> Sent: Wednesday, October 31, 2012 2:46 PM
> To: cloudstack-dev@incubator.apache.org
> Subject: RE: CLI for CloudStack: cloudmonkey
> 
> Xenserver xe cli works great, and it uses bash auto completion. I don't see
> any difference between xe cli and cloudstack cli from the auto completion
> point view. If it can work for ocaml, it should work for python.
>  If there are python library can get it done, that's fine.
> 
> > -----Original Message-----
> > From: Frank Zhang [mailto:frank.zh...@citrix.com]
> > Sent: Wednesday, October 31, 2012 2:37 PM
> > To: cloudstack-dev@incubator.apache.org
> > Subject: RE: CLI for CloudStack: cloudmonkey
> >
> > No.  I don't think so
> > bash auto completion is not for this purpose. You cannot run it in
> > your terminal as you grab the stdin by readline.
> > Bash-auto-completion essentially using compgen and several built-in
> > array must run in native bash terminal, otherwise you have to
> > complexly redirect user input from your terminal to a fake terminal and
> parse the output.
> > I am sure there must be some python library supporting auto-completion
> > in own terminal, no needs to make your hands dirty with the obscured
> > bash- auto-completion
> >
> > > -----Original Message-----
> > > From: Edison Su [mailto:edison...@citrix.com]
> > > Sent: Wednesday, October 31, 2012 2:25 PM
> > > To: cloudstack-dev@incubator.apache.org
> > > Subject: RE: CLI for CloudStack: cloudmonkey
> > >
> > > For a better auto completion support, you may take a look at bash
> > > auto
> > > completion(http://info2html.sourceforge.net/cgi-bin/info2html-
> > > demo/info2html?%28bash.info.gz%29Programmable%2520Completion),
> > and
> > > there is a great example written by xenserver guys:
> > > https://github.com/xen-org/xen-api/tree/master/ocaml/xe-cli
> > >
> > > > -----Original Message-----
> > > > From: Rohit Yadav [mailto:rohit.ya...@citrix.com]
> > > > Sent: Wednesday, October 31, 2012 12:27 PM
> > > > To: cloudstack-dev@incubator.apache.org
> > > > Subject: RE: CLI for CloudStack: cloudmonkey
> > > >
> > > > I did an autocompletion fix for Mac OSX (10.8 in my case, you have
> > > > to have
> > > > readline) and it works for me.
> > > >
> > > > Are you using Windows or Linux, I have n't tested on Linux/Windows?
> > > >
> > > > Check following code for your os?
> > > >         # Fix autocompletion issue
> > > >         if sys.platform == "darwin":
> > > >             readline.parse_and_bind("bind ^I rl_complete")
> > > >         else:
> > > >             readline.parse_and_bind("tab: complete")
> > > >
> > > > Yes, help/doc and completion for parameters and parsing input is
> > > > tricky but I'm working on it, any help welcome!
> > > >
> > > > ________________________________________
> > > > From: Edison Su [edison...@citrix.com]
> > > > Sent: Thursday, November 01, 2012 12:25 AM
> > > > To: cloudstack-dev@incubator.apache.org
> > > > Subject: RE: CLI for CloudStack: cloudmonkey
> > > >
> > > > Seems doesn't support auto-completion for api parameters?
> > > >
> > > > 🙉 cloudmonkey> api listUsers
> > > >
> > > > The ideal cli should list all the parameter names for listUsers
> > > > api, if I type "tab" at the end of listUsers.
> > > > > -----Original Message-----
> > > > > From: Rohit Yadav [mailto:rohit.ya...@citrix.com]
> > > > > Sent: Wednesday, October 31, 2012 11:10 AM
> > > > > To: cloudstack-dev@incubator.apache.org
> > > > > Subject: CLI for CloudStack: cloudmonkey
> > > > >
> > > > > Hi,
> > > > >
> > > > > I was working on a CLI for cloudstack, it's based on Marvin (the
> > > > > neglected
> > > > > robot) and called cloudmonkey after our beloved mascot :D
> > > > >
> > > > > I've committed that on master, please review:
> > > > > https://git-wip-us.apache.org/repos/asf?p=incubator-
> > > > >
> > >
> cloudstack.git;a=commit;h=2ceaa3911e792dbeb6c40dfb70961008a01f7e3c
> > > > >
> > > > > Features:
> > > > > - it's a shell and also a terminal tool, accepts file
> > > > > redirection and pipes
> > > > > - scalable to find and run old and new APIs
> > > > > - intuitive grammar and verbs
> > > > > - autocompletion (functional hack)
> > > > > - shell execution using ! or shell
> > > > > - cfg support: user defined variables, like prompt, ruler, host, port 
> > > > > etc.
> > > > > - history
> > > > > - colors (disable using set color false)
> > > > > - dynamic API loading and rule generation
> > > > > - leverages Marvin to get latest autogenerated APIs
> > > > > - emacs like shortcuts on prompt
> > > > > - uses apiKey and secretKey to interact with mgmt server
> > > > > - logs all client commands
> > > > > - PEP-8 compliant code
> > > > >
> > > > > FIXMEs:
> > > > > - Reverse search over history
> > > > > - Fix input and output processing
> > > > >
> > > > > It requires python and clint;
> > > > > pip install clint (or if you have to easy_install clint) mvn
> > > > > clean install -P developer cd tools/cli/cloudmonkey python
> > > > > cloudmonkey.py
> > > > >
> > > > > If you want to have the terminal tool installed; cd tools/cli
> > > > > python setup.py sdist cd dist pip install
> > > > > cloudmonkey-0.0.4.tar.gz (or easy_install etc.)
> > > > >
> > > > > You can do stuff like;
> > > > > cloudmonkey < file-with-commands, or cloudmonkey list Users, or
> > > > > as shell;
> > > > >
> > > > > (If you see unicode chars cloud and monkey below, yes they were
> > > > > put intentionally :)
> > > > >
> > > > > $ cloudmonkey
> > > > > ☁ Apache CloudStack CLI. Type help or ? to list commands.
> > > > > 🙉 cloudmonkey>  set apiKey <your key here>
> > > > > 🙉 cloudmonkey>  set secretKey <your key here>
> > > > > 🙉 cloudmonkey>  <tab><tab>
> > > > > add      api      create   delete   disable  enable   help     list   
> > > > >   quit
> remove
> > > > set
> > > > > shell    update
> > > > > 🙉 cloudmonkey>  list <tab><tab>
> > > > > Accounts                   Alerts                     AsyncJobs       
> > > > >            Capabilities
> > > > > Capacity                   Clusters                   Configurations
> > > > > DiskOfferings              DomainChildren             Domains         
> > > > >            Events
> > > > > EventTypes                 FirewallRules              Hosts
> > > > > HypervisorCapabilities     Hypervisors                InstanceGroups
> > > > > IpForwardingRules          IsoPermissions             Isos
> > > > > LBStickinessPolicies
> > > > > LoadBalancerRuleInstances  LoadBalancerRules          NetworkACLs
> > > > > NetworkDevice              NetworkOfferings           Networks
> > > > > NetworkServiceProviders
> > > > > OsCategories               OsTypes                    
> > > > > PhysicalNetworks           Pods
> > > > > PortForwardingRules        PrivateGateways            ProjectAccounts
> > > > > ProjectInvitations         Projects                   
> > > > > PublicIpAddresses
> > > > > RemoteAccessVpns           ResourceLimits             Routers
> > > > > SecurityGroups
> > > > > ServiceOfferings           SnapshotPolicies           Snapshots
> > > > SSHKeyPairs
> > > > > StaticRoutes               StorageNetworkIpRange      StoragePools
> > > > > SupportedNetworkServices   Swifts                     SystemVms
> Tags
> > > > > TemplatePermissions        Templates
> TrafficTypeImplementors
> > > > > TrafficTypes               Users                      VirtualMachines
> > > > > VirtualRouterElements      VlanIpRanges               Volumes
> > > > > VPCOfferings
> > > > > VPCs                       VpnConnections             
> > > > > VpnCustomerGateways
> > > > > VpnGateways                VpnUsers                   Zones
> > > > > 🙉 cloudmonkey>  list Users
> > > > > …
> > > > > 🙉 cloudmonkey>  !ls
> > > > > # this give you a shell too and one can do things like
> > > > > 🙉 cloudmonkey>  !for i in Users Account; do echo `cloudmonkey
> > > > > list $i
> > > > > | grep id`; done;
> > > > >
> > > > > Example commands to deploy a datacenter; (fill in dynamic ids
> > > > > etc.) create Zone dns1=8.8.8.8 internaldns1=10.147.28.6
> > > > > name=Zone1 networktype=Basic create PhysicalNetwork
> > > > > name=test-network
> > zoneid=
> > > > add
> > > > > TrafficType traffictype=Guest physicalnetworkid= add TrafficType
> > > > > traffictype=Management physicalnetworkid= update
> PhysicalNetwork
> > > > > state=Enabled id= list NetworkServiceProviders
> > > > > name=VirtualRouter physicalNetworkId= list VirtualRouterElements
> > > > > nspid= api configureVirtualRouterElement enabled=true id= update
> > > > > NetworkServiceProvider state=Enabled id= list
> > > > > NetworkServiceProviders name=SecurityGroupProvider
> > > > > physicalNetworkId= update NetworkServiceProvider state=Enabled
> > > > > id= create Network zoneid= name=guestNetworkForBasicZone
> > > > > displaytext=guestNetworkForBasicZone
> > > > > networkofferingid= create Pod zoneid= name=Pod1
> > > gateway=10.147.28.1
> > > > > netmask=255.255.255.0
> > > > > startip=10.147.28.220 endip=10.147.28.235 create VlanIpRange
> > > > > podid= networkid= gateway=10.147.28.1 netmask=255.255.255.0
> > > > > startip=10.147.28.236 endip=10.147.28.250
> > > > > forVirtualNetwork=false add Cluster zoneid= hypervisor=XenServer
> > > > > clustertype=CloudManaged podid=
> > > > > clustername=Cluster1 add Host zoneid= podid= clusterid=
> > > > > hypervisor=XenServer clustertype=CloudManaged username=root
> > > > > password=password url=http://10.147.28.60 create StoragePool
> > > > > zoneid= clusterid= name=NFS1
> > > > > url=nfs://10.147.28.7/export/home/rohit/primary
> > > > > add SecondaryStorage zoneId=
> > > > > url=nfs://10.147.28.7/export/home/rohit/secondary
> > > > > update Zone allocationstate=Enabled id=
> > > > >
> > > > > After some stabilisation, I can put it on pypi so any user can
> > > > > just do pip install cloudmonkey to get the CLI.
> > > > >
> > > > > Regards.
> > > > > PS. Marvin the neglected robot and hipster cloudmonkey should
> > > > > rule the world :D

Reply via email to