-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
118 lines (104 loc) · 6.88 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
- 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.