Hi, I don't want to create a developer war or position a technology against another (python against java) but we could leverage Apache Karaf (OSGI runtime container) project to provide the cloudmonkey client. This work has already be done for jclouds (http://www.youtube.com/watch?v=EKVkm6AV19U, https://github.com/jclouds/jclouds-karaf) and could be easily created created for cloudmonkey. Karaf which is a shell environment proposes a lot of by default features (http://karaf.apache.org/ : ssh, jaas, provisioning, administration, history, config files support, ... - http://karaf.apache.org/manual/latest-2.3.x/developers-guide/index.html) that we could extend with cloudmonkey commands ( http://karaf.apache.org/manual/latest-2.3.x/developers-guide/extending-console.html) and rebrand Karaf into a cloudmonkey karaf container.
Regards, Charles On Fri, Nov 9, 2012 at 10:53 PM, Musayev, Ilya <imusa...@webmd.net> wrote: > I guess mine got wiped somehow... > > -----Original Message----- > From: Musayev, Ilya [mailto:imusa...@webmd.net] > Sent: Friday, November 09, 2012 4:51 PM > To: cloudstack-dev@incubator.apache.org > Subject: RE: CLI for CloudStack: cloudmonkey > > Rohit > > History seems to retain only last session and not previous - is this by > design? > > Thanks > ilya > > -----Original Message----- > From: sebgoa [mailto:run...@gmail.com] > Sent: Friday, November 09, 2012 4:52 AM > To: cloudstack-dev@incubator.apache.org > Subject: Re: CLI for CloudStack: cloudmonkey > > Using lower case commands solved the issue > > thanks, and happy Diwali > > -Sebastien > > On Nov 8, 2012, at 8:14 PM, Rohit Yadav wrote: > > > Oh, forgot to see that. Yes, now all the cmds are lowercase (except for > few params liks isAsync=) and tab completion is advised. > > > > Regards. > > ________________________________________ > > From: Kishan Kavala [kishan.kav...@citrix.com] > > Sent: Thursday, November 08, 2012 11:29 PM > > To: cloudstack-dev@incubator.apache.org > > Cc: cloudstack-dev@incubator.apache.org > > Subject: Re: CLI for CloudStack: cloudmonkey > > > > Sebastian, > > Try set apikey in lower case. Same with set secretkey. > > > > ~kishan > > > > On 08-Nov-2012, at 10:00 PM, "Sebastien Goasguen" <run...@gmail.com> > wrote: > > > >> Actually it does not work yet. > >> > >> Now I can type 'b' but it does not get passed properly: > >> > >> π cloudmonkey> set apiKey > >> KEbkKWtYIz_q_fnpOdwnHoZUJt5tiBNiHvf-oApytBd0adU-s-DRP3an1pqL6TutyUCzj > >> RB9UNrBybVr3kcZ6Q > >> > >> Gives: > >> > >> INFO [cloud.api.ApiServer] (92734721@qtp-1601733969-7:) apiKey does > >> not map to a valid user -- ignoring request, apiKey: > >> KEkKWtYIz_q_fnpOdwnHoZUJt5tiBNiHvf-oApytBd0adU-s-DRP3an1pqL6TutyUCzjR > >> B9UNrByVr3kcZ6Q > >> > >> On Nov 8, 2012, at 5:19 PM, Sebastien Goasguen <run...@gmail.com> > wrote: > >> > >>> > >>> On Nov 8, 2012, at 3:28 PM, Rohit Yadav <rohit.ya...@citrix.com> > wrote: > >>> > >>>> Hi Sebastien, > >>>> > >>>> Are you using it from pypi/pip, if so do this: > >>>> sudo pip uninstall cloudmonkey > >>>> sudo pip install cloudmonkey > >>> > >>> no, I am doing: sudo python ./setup.py install from the source tree > >>> > >>>> I've had this bug on mac osx, fixed it: > >>>> https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git; > >>>> a=commit;h=36e7a7884efef7c41ac369549b7bdb93e5122110 > >>> > >>> pulled that and reinstalledβ¦and it works. > >>> > >>> thanks > >>> > >>> -sebastien > >>> > >>> > >>>> If it still persists for you, checkout > >>>> http://superuser.com/questions/297527/cant-type-the-b-letter-in-pyt > >>>> hon-shell-in-os-x > >>>> > >>>> Let me know if this still fails then. > >>>> > >>>> Regards. > >>>> > >>>> ________________________________________ > >>>> From: Sebastien Goasguen [run...@gmail.com] > >>>> Sent: Thursday, November 08, 2012 5:37 PM > >>>> To: cloudstack-dev@incubator.apache.org > >>>> Subject: Re: CLI for CloudStack: cloudmonkey > >>>> > >>>> 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>:<param > >>>>>>> name>s> > >>>>>>> <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-cloudsta > >>>>>>>>>>> ck.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 > >> > > > -- Charles Moulliard Apache Committer / Sr. Enterprise Architect (RedHat) Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com