incubator-cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rohit Yadav <rohit.ya...@citrix.com>
Subject Re: CLI for CloudStack: cloudmonkey
Date Fri, 16 Nov 2012 16:52:57 GMT
Okay fixed, just do this:

sudo pip uninstall cloudmonkey
sudo pip install cloudmonkey

in your config add timeout = 3600 and asyncblock = true, cloudmonkey will guide you where to do it.

Checkout bug issue, or commit on usage.

Regards.

On 16-Nov-2012, at 1:49 PM, Dave Cahill <dcahill@midokura.jp> wrote:

> Fantastic, thanks Rohit. I have saved a bunch of time already using
> CloudMonkey!
>
>
> On Fri, Nov 16, 2012 at 5:17 PM, Rohit Yadav <rohit.yadav@citrix.com> wrote:
>
>> Thanks Dave for filing the issue, will try to fix this by end of the day.
>> If not, I will post my solution on the issue.
>> Regards.
>> On 16-Nov-2012, at 1:19 PM, Dave Cahill <dcahill@midokura.jp> wrote:
>>
>>> Thanks Rohit - filed this bug to track the issue:
>>> https://issues.apache.org/jira/browse/CLOUDSTACK-499
>>>
>>> If you have time to write a description of how you're planning to fix
>> it, I
>>> could take a look at it - I have my setup 99% automated, just need to get
>>> this param passing working. :)
>>>
>>> Thanks,
>>> Dave.
>>>
>>>
>>> On Thu, Nov 15, 2012 at 11:20 PM, Rohit Yadav <rohit.yadav@citrix.com
>>> wrote:
>>>
>>>>
>>>> On 15-Nov-2012, at 3:26 PM, Dave Cahill <dcahill@midokura.jp> wrote:
>>>>
>>>>> Hi Rohit,
>>>>>
>>>>> I've been using cloudmonkey to script my CloudStack setup process in
>> dev,
>>>>> and had one question.
>>>>>
>>>>> How do we pass complex (MAP) parameters to cloudmonkey? For example,
>> when
>>>>> setting up a networkoffering, there's a serviceProviderList parameter
>>>> which
>>>>> is a list of items, each of which has several key value pairs. I tried
>> a
>>>>> couple of syntaxes to pass this parameter, but didn't come across the
>>>>> correct one yet - can you enlighten me? ;)
>>>>
>>>> Hi Dave, thanks for catching the bug. The way maps are handled in url
>> are
>>>> very different than how cloudmonkey parses and passing key,values.
>>>> This actually needs to be fixed in Marvin, I've figured out a way but it
>>>> may cause issues with marvin, will discuss with Prasanna and fix it
>> soon.
>>>>
>>>> You may file an issues if you want to.
>>>>
>>>> Regards.
>>>>
>>>>>
>>>>> Thanks for your work on this, very useful.
>>>>>
>>>>> Thanks,
>>>>> Dave.
>>>>>
>>>>>
>>>>> On Mon, Nov 12, 2012 at 7:01 PM, Rohit Yadav <rohit.yadav@citrix.com>
>>>> wrote:
>>>>>
>>>>>> Hi Charles,
>>>>>>
>>>>>> Karaf seems nice, and no worries I don't see any suggestions as flames
>>>> or
>>>>>> war. I would anytime throw away any code for something better, so feel
>>>> free
>>>>>> to start writing your own client and share with us. Patches welcome!
>>>>>>
>>>>>> Let me share why I wrote it in Python:
>>>>>>
>>>>>> - First of all the CLI is not even a client to start with, I mean I've
>>>>>> totally based it off marvin. It's a small wrapper I would say around
>>>> marvin.
>>>>>> - Python because, the environment is preinstalled on Macs and almost
>> all
>>>>>> Linux distros.
>>>>>> - Scripting environment that Python provides so one can fork and edit
>>>>>> their own versions of cloudmonkey CLI, this saves the user from
>>>>>> hack->compile->build->run loop; one can just hack and run.
>>>>>> - The best part again is marvin as dependency, you write javadocs etc.
>>>> in
>>>>>> your java code, apidocs gets interface definition and requirements
>> from
>>>> the
>>>>>> java code, the commands.xml created in the process is used by marvin's
>>>>>> codegenerator  which generates api modules with Cmd and Response
>>>> classes.
>>>>>> The generated cloudstackAPI is used by both marvin clients and the
>> CLI.
>>>> The
>>>>>> CLI which is about 400 lines of Python, in turn loads these modules
>> and
>>>>>> generates grammar and command handlers on the fly using some
>> functional
>>>>>> magic (injects functions into the classes), I don't think this kind of
>>>>>> programming is even possible with Java, they don't have functions as
>>>> first
>>>>>> class citizens.
>>>>>>
>>>>>> What does the last statement mean for the developers:
>>>>>> So, if a developer simply adds a new API which is java code, with
>>>> required
>>>>>> docs etc. apidocs will pick it up automatically and in turn marvin
>> (and
>>>>>> it's test clients) will get new cloudstackAPI and CLI too gets the new
>>>> APIs
>>>>>> on the fly. The functional closures in CLI will make sure the new APIs
>>>> and
>>>>>> its handlers are created with grammar rules. The developer won't need
>> to
>>>>>> change apidocs, marvin or CLI. I think this is one of my best hacks
>> [0]
>>>>>> which leverages on existing code and I think it would be very
>>>> maintainable
>>>>>> in future.
>>>>>>
>>>>>> Sorry everyone, I'm caught up with some other issues, I want to post a
>>>>>> screencast and blog explaining the CLI but only after I finalize the
>>>> specs
>>>>>> for the CLI. Thanks for the feedback so far.
>>>>>> The top TODOs left now are:
>>>>>> - Reverse search
>>>>>> - Bash/zsh completion
>>>>>>
>>>>>> Regards.
>>>>>> PS. Just in case you're curious:
>>>>>> [0] https://github.com/bhaisaab/hacktools
>>>>>>
>>>>>> ________________________________________
>>>>>> From: Charles Moulliard [ch007m@gmail.com]
>>>>>> Sent: Monday, November 12, 2012 12:49 PM
>>>>>> To: cloudstack-dev
>>>>>> Subject: Re: CLI for CloudStack: cloudmonkey
>>>>>>
>>>>>> 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 <imusayev@webmd.net>
>>>> wrote:
>>>>>>
>>>>>>> I guess mine got wiped somehow...
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Musayev, Ilya [mailto:imusayev@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:runseb@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.Kavala@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" <runseb@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 <runseb@gmail.com>
>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Nov 8, 2012, at 3:28 PM, Rohit Yadav <rohit.yadav@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 [runseb@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.yadav@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 [imusayev@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.yadav@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.su@citrix.com>
>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>> From: Rohit Yadav [mailto:rohit.yadav@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.su@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:shadowsor@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.su@citrix.com
>>>>>>>
>>>>>>> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>>>> From: Rohit Yadav [mailto:rohit.yadav@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.childers@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.yadav@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
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Thanks,
>>>>> Dave.
>>>>
>>>>
>>>
>>>
>>> --
>>> Thanks,
>>> Dave.
>>
>>
>
>
> --
> Thanks,
> Dave.

Mime
View raw message