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

Reply via email to