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