Skip to content

heince/csapi-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

- updated and tested on CloudStack v3.0.2, for v2.x you may need to adjust id field since new version is using uuid
- support multiple connection profile
- support with apikey or through integration api port 8096 (without key)

(commands):
console             run interactively
cmd-list            list available commands
list                list    [--cmd-opt] (vm|account|site|diskoffering|svcoffering|
                                        template|user|job|zone|network|domain|project|
                                        projectIvt|projectAcc|router|fwrule|pfrule|publicip|
                                        host|capacity)
migrate             migrate [--cmd-opt] (vm)
deploy              deploy  [--cmd-opt] (vm)
destroy             destroy [--cmd-opt] (vm|router)
stop                stop    [--cmd-opt] (vm|router)
start               start   [--cmd-opt] (vm|router)
reboot              reboot  [--cmd-opt] (vm|router)
sync                sync    [--cmd-opt] (ldap)
set                 set     [--cmd-opt] (ldap)
remove              remove  [--cmd-opt] (ldap)
usage               usage -s 2012-05-01 -e 2012-06-01 -a 1 -type (1|2|6)
create              create  [--cmd-opt] (account|domain|project|fwrule|pfrule)
delete              delete  [--cmd-opt] (account|domain|project|projectIvt|accountfromproject|fwrule|pfrule)
update              update  [--cmd-opt] (account|domain|project|projectIvt)
suspend             suspend [--cmd-opt] project
activate            activate [--cmd-opt] project
disable             disable [--cmd-opt] account
enable              enable  [--cmd-opt] account
add                 add     [--cmd-opt] account

available cmd-opt on list command:
--ia                                                => 'use integration api url (legacy port 8096)'
-p | --param     [comma separated api param]        => 'parameter field'
-r | --response  [comma separated api response]     => 'response field'
--nh | --noheader                                   => 'do not print header'
--sp | --showparams                                 => 'print supported parameter'
--sr | --showresponses                              => 'print supported responses'
--json                                              => 'print output in json'
-s | --site      [site profile name]                => 'set site to be use'
-i | --id        [id|uuid]                          => 'set id or uuid for cmd-arg'
--geturl                                            => 'get api url'
--field          [comma separated field+value]      => 'custom field size'

example:
cloudcmd ls -a vm                                   => list all vm
cloudcmd ls --nh vm                                 => list vm without header
cloudcmd ls -p account=heince,domainid=2 vm         => list vm with specified API parameter
cloudcmd ls -r displayname,account,domain vm        => list vm with specified responses field
cloudcmd ls --sp vm                                 => list parameter supported on listing vm
cloudcmd ls --sr vm                                 => list response supported on listing vm
cloudcmd ls -i xxx job                              => query async job by jobid
cloudcmd ls -s office-admin vm                      => list vm using 'office-admin' site profile

More Example:
* cloudcmd ls -s branch-profile vm (listing vm using 'branch-profile' connection)
  output:
  DISPLAYNAME              STATE       ACCOUNT        DOMAIN         NIC-IP         

  HOST1                    Stopped     heince         DEV            192.168.89.134 
  VIEWPOINT                Running     heince         DEV            192.168.89.38  
  Cougar-c01               Running     heince         DEV            192.168.89.141

* cloudcmd set -H ldap.example.com -f "(&(uid=%u))" -b "ou=example,dc=com"
  -D "uid=user1,dc=example,dc=com"  -w "demo" --ia ldap
  
* #open source LDAP example (This will get all uid user, excluding batman,robin & mrbean)
  cloudcmd sync -d xxx -H ldap.example.com -b "dc=example,dc=com"
        -D "uid=admin,dc=example,dc=com" -w "mypass"
        -f "(uid=*)" -a "uid" -x "batman,robin,mrbean" --ia ldap
        
  #Microsoft AD example (This will get all user with 'user' and 'guest' prefix )
  cloudcmd sync -d xxx -H ldap.example.com -b "cn=users,dc=example,dc=com"
        -f "(|(sAMAccountName=guest*) (sAMAccountName=user*))"
        -D "cn=administrator,cn=users,dc=example,dc=com" -w "mypass"
        -a "sAMAccountName" --ia ldap
        
* cloudcmd deploy --soid xxx --tid xxx --zid xxx -n testvm1 -p networkids=xxx  vm
* cloudcmd start -i 1,3,6 vm (start vm with id 1,3 and 6)
* cloudcmd usage -s 2012-05-01 -e 2012-06-01 -a c6e3d03f-4337-44f2-af04-b4cf28709990 -type (1|2|6)
Account: heince         
Domain : DEV       
Period : 2012-02-29 to 2012-03-01

Details:
i-6-52-VM running time (ServiceOffering: 2) (Template: 226)     Total Hours = 24.00           
i-6-41-VM running time (ServiceOffering: 10) (Template: 226)    Total Hours = 24.00           
i-6-33-VM running time (ServiceOffering: 2) (Template: 4)       Total Hours = 24.00           
i-6-92-VM running time (ServiceOffering: 15) (Template: 250)    Total Hours = 11.10           
i-6-46-VM running time (ServiceOffering: 2) (Template: 226)     Total Hours = 24.00           
i-6-29-VM running time (ServiceOffering: 2) (Template: 4)       Total Hours = 24.00           
i-6-31-VM running time (ServiceOffering: 1) (Template: 4)       Total Hours = 24.00           
i-6-34-VM running time (ServiceOffering: 2) (Template: 220)     Total Hours = 24.00           
i-6-42-VM running time (ServiceOffering: 10) (Template: 226)    Total Hours = 24.00           

Summary:
Offering id : 1    Name: Small Instance     Hours : 24.00    Cost: $0.02 per hour          
Offering id : 10   Name: HA enabled VM      Hours : 48.00    Cost: $0.08 per hour          
Offering id : 2    Name: Medium Instance    Hours : 120.00   Cost: $0.05 per hour          
Offering id : 15   Name: 8 Cores Instance   Hours : 11.10    Cost: $1.00 per hour          

Total Hours : 203.1
Total Costs : $21.42

Requirements:
- minimum perl v5.10
- For RedHat / CentOS 6 x64, extract required perl lib from 'csapi_perl_lib_RedHat6.tgz', copy it over to
  /usr/local/lib64/perl5/ & /usr/local/share/perl5/, if it's a clean system run :
  'tar -xf csapi_perl_lib_RedHat6.tgz -C /'
- if you want to compile from cpan you will need libxml2-devel openssl-devel gcc make mysql-devel expat-devel
  then install required perl modules from cpan: perl install_prerequisites.pl
- on config/config.xml
  * set apikey,secretkey, profilename, integration api url, etc
  * set urlpath e.g(https://10.1.1.1/client/api? or http://10.1.1.1:8080/client/api?)
  * if using https, set sslverifyhostname (0 disable, 1 enable)
- set CSAPI_ROOT environment variable to install location, examples is under env/ directory
- to show running vm usage + costs, you need to edit the usage.xml for database configuration & the charging
  costs for each offering, make sure you can access the database remotely.

About

CloudStack command line tools

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published