Hi, I am testing the cli and I have the weirdest issue. When I set the apikey or secretkey, the lower case 'b' letter does not print at the prompt. So if my keys contain 'b' they don't work..
I tried all the other letters and they work. Anyone seeing this, -Sebastien On Nov 7, 2012, at 7:25 PM, Rohit Yadav <rohit.ya...@citrix.com> wrote: > yes, I think I'd mentioned in the thread or somewhere. Just use pip or > easy_install (apt-get install python-setuptools on ubuntu, install python2.6 > or above and pip if you don't have it); > > sudo pip install cloudmonkey > > or sudo easy_install cloudmonkey > > now start cloudmonkey: > $ cloudmonkey > ... > > Will post a blog/screencast this weekend and update doc so everyone can get > help on its usage, though it's pretty intuitive. > ________________________________________ > From: Musayev, Ilya [imusa...@webmd.net] > Sent: Wednesday, November 07, 2012 11:41 PM > To: cloudstack-dev@incubator.apache.org > Subject: RE: CLI for CloudStack: cloudmonkey > > Rohit, > > Can I get the CLI only without going through the whole source code maven > install? Is it part of any RPM? > > Thanks > ilya > > -----Original Message----- > From: Rohit Yadav [mailto:rohit.ya...@citrix.com] > Sent: Monday, November 05, 2012 11:35 AM > To: cloudstack-dev@incubator.apache.org > Subject: Re: CLI for CloudStack: cloudmonkey > > Checkout latest code. Few changes to share: > > - All lowercase now > - Tab tab over verbs to see list of params for that api, example list users > <tab><tab> > - This needs improvement but help string, using --help: list user --help > - Caching to speedup runtime > - Color and Parsing fixes > > Last, I'm now able to get the doc strings for each attribute/param, will see > this tomorrow. > > Need your help, just incase you want to contribute, these are the TODOs: > > - search over history > - fix parsing > - doc strings for parameters > - testing for various kinds of apis (I'm able to deploy a zone with this, but > needs testing) > - unicode char monkey, used in prompt may mess up history searching and text > display > > > Regards. > > On 02-Nov-2012, at 4:58 AM, Edison Su <edison...@citrix.com> wrote: > >> >> >>> -----Original Message----- >>> From: Rohit Yadav [mailto:rohit.ya...@citrix.com] >>> Sent: Thursday, November 01, 2012 2:23 PM >>> To: cloudstack-dev@incubator.apache.org >>> Subject: RE: CLI for CloudStack: cloudmonkey >>> >>> After you install the tool, so that cloudmonkey is in your >>> /usr/local/bin or in $PATH... >>> >>> Two ways; >>> 1. As command line tool, on bash/zsh, use the BNF grammar; <command >>> line tool >>> name>:<separator>:<verb>:<separator>:<action>:<separator>:<params> >>> <command line tool name>={'cloudmonkey'} <separator>={' '} >>> <verb>={'list', 'create', 'delete', 'update'.... etc.} >>> <action>={'Users'... etc.} <params>={'listall=#'... etc.} So; $ >>> cloudmonkey list Users >> >> >> Got it, thanks! >> >>> >>> 2. file redirector: >>> >>> $ cat test-file: >>> list Users >>> list <some other action> >>> <some verb> <some action> >>> >>> $ cloudmonkey < test-file >>> >>> Note, I'll change the actions (Users, VirtualMachine etc.) to >>> lowercase (users, virtualmachine etc.) if that's okay? >> >> Please do, nobody wants to type extra keystroke, if it's not necessary. >>> >>> Regards. >>> >>> ________________________________________ >>> From: Edison Su [edison...@citrix.com] >>> Sent: Friday, November 02, 2012 1:55 AM >>> To: cloudstack-dev@incubator.apache.org >>> Subject: RE: CLI for CloudStack: cloudmonkey >>> >>> Oh, it reminds me that how to use the CLI on the bash command line? >>> I think admin may want to call cloudstack API in a bash script, how >>> can I do that? >>> >>>> -----Original Message----- >>>> From: Marcus Sorensen [mailto:shadow...@gmail.com] >>>> Sent: Thursday, November 01, 2012 1:11 PM >>>> To: cloudstack-dev@incubator.apache.org >>>> Subject: Re: CLI for CloudStack: cloudmonkey >>>> >>>> Yes, I look forward to using it instead of local curl calls on the >>>> command line :-) >>>> >>>> On Thu, Nov 1, 2012 at 2:02 PM, Edison Su <edison...@citrix.com> wrote: >>>>> >>>>> >>>>>> -----Original Message----- >>>>>> From: Rohit Yadav [mailto:rohit.ya...@citrix.com] >>>>>> Sent: Thursday, November 01, 2012 11:45 AM >>>>>> To: cloudstack-dev@incubator.apache.org >>>>>> Subject: RE: CLI for CloudStack: cloudmonkey >>>>>> >>>>>> Hi Chip, please go ahead if we can fix the http/s issue. The >>>>>> connection is based on marvin, I'm sure using CLI we'll find out >>>>>> more bugs and fix anything in marvin thereby help maintain >>>>>> marvin->tests and >>>> CLI. >>>>>> Please hack that up on tools/marvin/marvin/cloudstackConnection.py >>>>>> >>>>>> Edison, yes I'm working on the completedefault, I've figured a >>>>>> solution to the parsing and tabbing issue to show params for any >>>>>> api and added more verbs to the grammar like deploy, start etc. >>>>>> In the new approach doc strings and params needed for an api are >>>>>> fetched and cached in the class locally to speed up the loading process. >>>>>> Till it gets committed, cloudmonkey (now) will keep telling the >>>>>> user what params they are missing until it gets all the required ones. >>>>> >>>>> Great! Thanks for your awesome CLI, people will like it. >>>>> >>>>>> >>>>>> One more thing, for people who may not have unicode support the >>>>>> prompt may appear weird and history search (up, down ) can mess up >>>>>> the visuals. For example on Mac it appears as a colorful emoji, >>>>>> but I found that it looks weird on other platforms. Will probably >>>>>> remove it, or the user can custom set their prompt, using: set >>>>>> prompt >>>>>> myprompt> >>>>>> >>>>>> Regards. >>>>>> PS. the set command is full of (fun :) hacks because of >>>>>> funtional/generic programming, it basically can set any attribute >>>>>> on the class, so one can do something like creating something >>>>>> (var, func). For example set ruler # (so instead of - you will >>>>>> have a # >>>>>> separator) >>>>>> >>>>>> ________________________________________ >>>>>> From: Chip Childers [chip.child...@sungard.com] >>>>>> Sent: Thursday, November 01, 2012 11:15 PM >>>>>> To: cloudstack-dev@incubator.apache.org >>>>>> Subject: Re: CLI for CloudStack: cloudmonkey >>>>>> >>>>>> On Wed, Oct 31, 2012 at 2:10 PM, Rohit Yadav >>>>>> <rohit.ya...@citrix.com> >>>>>> wrote: >>>>>>> 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.gi >>>>>>> t; a=c ommit;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 >>>>>> >>>>>> Rohit, >>>>>> >>>>>> This is really really cool. It puts the "fun" in managing >>>>>> instances from a command line. I've been testing it against a >>>>>> production CloudStack environment, and it's working pretty well. >>>>>> >>>>>> If you don't mind, I might hack at the code a bit to fill in some >>>>>> gaps that I'm seeing. First example is that it assumes http, >>>>>> which doesn't work in a public deployment where the endpoint is over >>>>>> https. >>>>>> >>>>>> -chip >