Revision f3446cf0 docs/usage.rst
b/docs/usage.rst | ||
---|---|---|
16 | 16 |
It is essential for users to get a configuration token (to get in Okeanos.grnet.gr log `here <https://accounts.okeanos.grnet.gr/im/>`_) and provide it to kamaki: |
17 | 17 |
|
18 | 18 |
.. code-block:: console |
19 |
|
|
20 |
$ kamaki set token myt0k3n== |
|
21 |
|
|
19 |
:emphasize-lines: 1 |
|
22 | 20 |
|
23 | 21 |
Example 1.1.1: Set user token to myt0k3n== |
24 | 22 |
|
23 |
$ kamaki set token myt0k3n== |
|
24 |
|
|
25 | 25 |
To use the storage service, a user should also provide the corresponding username: |
26 | 26 |
|
27 | 27 |
.. code-block:: console |
28 |
|
|
29 |
$ kamaki set account user@domain.com |
|
30 |
|
|
28 |
:emphasize-lines: 1 |
|
31 | 29 |
|
32 | 30 |
Example 1.1.2: Set user name to user@domain.com |
33 | 31 |
|
32 |
$ kamaki set account user@domain.com |
|
33 |
|
|
34 | 34 |
Command line interfaces |
35 | 35 |
----------------------- |
36 | 36 |
Kamaki users can access synnefo services through either the interactive shell or the one-command behaviors. In practice, both systems relly on the same command set implementations and API clients, with identical responses and error messages. Still, there are some differenses. |
... | ... | |
56 | 56 |
* without any parameters or arguments |
57 | 57 |
|
58 | 58 |
.. code-block:: console |
59 |
:emphasize-lines: 1 |
|
59 | 60 |
|
60 |
$ kamaki |
|
61 |
|
|
62 |
|
|
63 |
Example 2.2.1: Running kamaki shell |
|
61 |
Example 2.2.1: Run kamaki shell |
|
64 | 62 |
|
63 |
$ kamaki |
|
65 | 64 |
|
66 | 65 |
* with any kind of '-' prefixed arguments, except '-h', '--help'. |
67 | 66 |
|
68 | 67 |
.. code-block:: console |
68 |
:emphasize-lines: 1 |
|
69 | 69 |
|
70 |
$ kamaki --config myconfig.file
|
|
70 |
Example 2.2.2: Run kamaki shell with custom configuration file
|
|
71 | 71 |
|
72 |
|
|
73 |
Example 2.2.2: Running kamaki shell with custom configuration file |
|
72 |
$ kamaki --config myconfig.file |
|
74 | 73 |
|
75 | 74 |
|
76 | 75 |
Run as one-command |
... | ... | |
80 | 79 |
* with the '-h' or '--help' arguments (help for kamaki one-command) |
81 | 80 |
|
82 | 81 |
.. code-block:: console |
83 |
|
|
84 |
$kamaki -h |
|
85 |
|
|
82 |
:emphasize-lines: 1 |
|
86 | 83 |
|
87 | 84 |
Example 2.3.1: Kamaki help |
88 | 85 |
|
86 |
$kamaki -h |
|
87 |
|
|
89 | 88 |
* with one or more command parameters: |
90 | 89 |
|
91 | 90 |
.. code-block:: console |
92 |
|
|
93 |
$ kamaki server list |
|
94 |
|
|
91 |
:emphasize-lines: 1 |
|
95 | 92 |
|
96 | 93 |
Example 2.3.2: List VMs managed by user |
97 | 94 |
|
95 |
$ kamaki server list |
|
96 |
|
|
98 | 97 |
Commands |
99 | 98 |
^^^^^^^^ |
100 | 99 |
|
... | ... | |
103 | 102 |
Typically, commands consist of a group name (e.g. store for storage commands) one or more terms (e.g. list for listing) and the command specific parameters (e.g. the name of the container), if any. |
104 | 103 |
|
105 | 104 |
.. code-block:: console |
106 |
|
|
107 |
$ kamaki store list mycontainer |
|
108 |
|
|
105 |
:emphasize-lines: 1 |
|
109 | 106 |
|
110 | 107 |
Example 3.1.1: List stored files in container mycontainer. |
111 | 108 |
|
109 |
$ kamaki store list mycontainer |
|
110 |
|
|
112 | 111 |
Example 2.3.2 showcases a command without parameters (the group is "server", the command is "list"). |
113 | 112 |
|
114 | 113 |
The "server" command group is also refered in the following example. |
115 | 114 |
|
116 | 115 |
.. code-block:: console |
117 |
|
|
118 |
$ kamaki server info 42 |
|
119 |
|
|
116 |
:emphasize-lines: 1 |
|
120 | 117 |
|
121 | 118 |
Example 3.1.2 Show information about a user-managed VM with id 42 |
122 | 119 |
|
120 |
$ kamaki server info 42 |
|
121 |
|
|
123 | 122 |
Client commands can feature an arbitarry number of terms: |
124 | 123 |
|
125 | 124 |
.. code-block:: text |
... | ... | |
146 | 145 |
Showcase: get user information, provided the token was set |
147 | 146 |
|
148 | 147 |
.. code-block:: console |
149 |
:emphasize-lines: 3-11
|
|
148 |
:emphasize-lines: 1,4
|
|
150 | 149 |
|
150 |
* Enter astakos context * |
|
151 | 151 |
[kamaki]:astakos |
152 |
|
|
153 |
* Authenticate user * |
|
152 | 154 |
[astakos]:authenticate |
153 | 155 |
auth_token : s0m3t0k3nth@t1sr3m0v3d== |
154 | 156 |
auth_token_created: 2012-11-13T14:12:40.917034 |
... | ... | |
159 | 161 |
has_signed_terms : True |
160 | 162 |
uniq : myaccount@grnet.gr |
161 | 163 |
username : 4215th3b357num9323v32 |
162 |
[astakos]: |
|
163 | 164 |
|
164 | 165 |
flavor (Compute/Cyclades) |
165 | 166 |
""""""""""""""""""""""""" |
... | ... | |
172 | 173 |
Showcase: show details for flavor with id 43 |
173 | 174 |
|
174 | 175 |
.. code-block:: console |
175 |
:emphasize-lines: 3-8
|
|
176 |
:emphasize-lines: 1,4
|
|
176 | 177 |
|
178 |
* Enter flavor context * |
|
177 | 179 |
[kamaki]: flavor |
180 |
|
|
181 |
* Get details about flavor with id 43 * |
|
178 | 182 |
[flavor]: info 43 |
179 | 183 |
SNF:disk_template: drbd |
180 | 184 |
cpu : 4 |
... | ... | |
182 | 186 |
id : 43 |
183 | 187 |
name : C4R2048D10 |
184 | 188 |
ram : 2048 |
185 |
[flavor]: |
|
186 | 189 |
|
187 | 190 |
image (Compute/Cyclades + Glance) |
188 | 191 |
"""""""""""""""""""""""""""""""""" |
... | ... | |
205 | 208 |
setproperty: Update an image property |
206 | 209 |
shared : List shared images |
207 | 210 |
|
208 |
Showcase: show a list of public images, list the properties of Debian Base
|
|
211 |
Showcase: Pick an image and list the properties
|
|
209 | 212 |
|
210 | 213 |
.. code-block:: console |
211 |
:emphasize-lines: 3-13,15-22
|
|
214 |
:emphasize-lines: 1,4,18
|
|
212 | 215 |
|
216 |
* Enter image context * |
|
213 | 217 |
[kamaki]:image |
218 |
|
|
219 |
* list all available images * |
|
214 | 220 |
[image]:list |
215 |
1395fdfb-51b4-419f-bb02-f7d632860611 (Ubuntu Desktop LTS (Long Term Support))
|
|
221 |
1395fdfb-51b4-419f-bb02-f7d632860611 (Ubuntu Desktop LTS) |
|
216 | 222 |
1580deb4-edb3-4496-a27f-7a246c4c0528 (Ubuntu Desktop) |
217 |
18a82962-43eb-4b32-8e28-8f8880af89d7 (Kubuntu LTS (Long Term Support))
|
|
223 |
18a82962-43eb-4b32-8e28-8f8880af89d7 (Kubuntu LTS) |
|
218 | 224 |
6aa6eafd-dccb-422d-a904-67fe2bdde87e (Debian Desktop) |
219 | 225 |
6b5681e4-7502-46ae-b1e9-9fd837932095 (maelstrom) |
220 | 226 |
78262ee7-949e-4d70-af3a-85360c3de57a (Windows Server 2012) |
... | ... | |
223 | 229 |
b2dffe52-64a4-48c3-8a4c-8214cc3165cf (Debian Base) |
224 | 230 |
baf2321c-57a0-4a69-825d-49f49cea163a (CentOS) |
225 | 231 |
c1d27b46-d875-4f5c-b7f1-f39b5af62905 (Kubuntu) |
232 |
|
|
233 |
* Get properties of image with id b2dffe52-64a4-48c3-8a4c-8214cc3165cf * |
|
226 | 234 |
[image]:properties b2dffe52-64a4-48c3-8a4c-8214cc3165cf |
227 | 235 |
description : Debian 6.0.6 (Squeeze) Base System |
228 | 236 |
gui : No GUI |
... | ... | |
232 | 240 |
root_partition: 1 |
233 | 241 |
sortorder : 1 |
234 | 242 |
users : root |
235 |
[image]: |
|
236 | 243 |
|
237 | 244 |
server (Compute/Cyclades) |
238 | 245 |
""""""""""""""""""""""""" |
... | ... | |
257 | 264 |
stats : Get server statistics |
258 | 265 |
wait : Wait for server to finish |
259 | 266 |
|
260 |
Showcase: Create a server: Show create help, find a flavor and an image make a server. Wait for server to be build, get server details. Note that the progress bar feature is optional (see )
|
|
267 |
Showcase: Create a server.
|
|
261 | 268 |
|
262 | 269 |
.. code-block:: console |
263 |
:emphasize-lines: 3-16,18-33,35-40,42-56,58,59,61-66
|
|
270 |
:emphasize-lines: 1,4,21,35,44,62
|
|
264 | 271 |
|
272 |
* Enter server context * |
|
265 | 273 |
[kamaki]:server |
274 |
|
|
275 |
* See server-create help * |
|
266 | 276 |
[server]:create -h |
267 | 277 |
usage: create <name> <flavor id> <image id> |
268 | 278 |
[--personality PERSONALITY] [-h] [--config CONFIG] |
... | ... | |
278 | 288 |
-i, --include Include protocol headers in the output |
279 | 289 |
--config CONFIG Path to configuration file |
280 | 290 |
-s, --silent Do not output anything |
291 |
|
|
292 |
* List all available images * |
|
281 | 293 |
[server]:/image list |
282 | 294 |
1395fdfb-51b4-419f-bb02-f7d632860611 (Ubuntu Desktop LTS) |
283 | 295 |
1580deb4-edb3-4496-a27f-7a246c4c0528 (Ubuntu Desktop) |
284 |
|18a82962-43eb-4b32-8e28-8f8880af89d7 (Kubuntu LTS) |
|
285 |
|6aa6eafd-dccb-422d-a904-67fe2bdde87e (Debian Desktop) |
|
286 |
|6b5681e4-7502-46ae-b1e9-9fd837932095 (maelstrom) |
|
287 |
|78262ee7-949e-4d70-af3a-85360c3de57a (Windows Server 2012) |
|
288 |
|86bc2414-0fb3-4898-a637-240292243302 (Fedora) |
|
289 |
|926ab1c5-2d85-49d4-aebe-0fce712789b9 (Windows Server 2008) |
|
290 |
|b2dffe52-64a4-48c3-8a4c-8214cc3165cf (Debian Base) |
|
291 |
|baf2321c-57a0-4a69-825d-49f49cea163a (CentOS) |
|
292 |
|c1d27b46-d875-4f5c-b7f1-f39b5af62905 (Kubuntu) |
|
296 |
18a82962-43eb-4b32-8e28-8f8880af89d7 (Kubuntu LTS) |
|
297 |
6aa6eafd-dccb-422d-a904-67fe2bdde87e (Debian Desktop) |
|
298 |
6b5681e4-7502-46ae-b1e9-9fd837932095 (maelstrom) |
|
299 |
78262ee7-949e-4d70-af3a-85360c3de57a (Windows Server 2012) |
|
300 |
86bc2414-0fb3-4898-a637-240292243302 (Fedora) |
|
301 |
926ab1c5-2d85-49d4-aebe-0fce712789b9 (Windows Server 2008) |
|
302 |
b2dffe52-64a4-48c3-8a4c-8214cc3165cf (Debian Base) |
|
303 |
baf2321c-57a0-4a69-825d-49f49cea163a (CentOS) |
|
304 |
c1d27b46-d875-4f5c-b7f1-f39b5af62905 (Kubuntu) |
|
305 |
|
|
306 |
* See details of flavor with id 1 * |
|
293 | 307 |
[server]:/flavor info 1 |
294 | 308 |
SNF:disk_template: drbd |
295 | 309 |
cpu : 1 |
... | ... | |
297 | 311 |
id : 1 |
298 | 312 |
name : C1R1024D20 |
299 | 313 |
ram : 1024 |
314 |
|
|
315 |
* Create a debian server named 'My Small Debian Server' |
|
300 | 316 |
[server]:create 'My Small Debian Server' 1 b2dffe52-64a4-48c3-8a4c-8214cc3165cf |
301 | 317 |
adminPass: L8gu2wbZ94 |
302 | 318 |
created : 2012-11-23T16:56:04.190813+00:00 |
... | ... | |
313 | 329 |
status : BUILD |
314 | 330 |
suspended: False |
315 | 331 |
updated : 2012-11-23T16:56:04.761962+00:00 |
332 |
|
|
333 |
* wait for server to build (optional) * |
|
316 | 334 |
[server]:wait 11687 |
317 | 335 |
Server 11687 still in BUILD mode ||||||||||||||||| | 80% - 3s |
318 | 336 |
Server 11687 is now in ACTIVE mode |
319 |
[server]: |
|
337 |
|
|
338 |
.. Note:: In kamaki shell, / is used to access top-level command groups while working in command group contexts |
|
320 | 339 |
|
321 | 340 |
network (Compute/Cyclades) |
322 | 341 |
"""""""""""""""""""""""""" |
... | ... | |
331 | 350 |
list : List networks |
332 | 351 |
rename : Update network name |
333 | 352 |
|
334 |
Showcase: Connect a network to a VM: create a network, list available VMs, connect to 'My Small Debian Server', check network info and server connectivity.
|
|
353 |
Showcase: Connect a network to a VM |
|
335 | 354 |
|
336 | 355 |
.. code-block:: console |
337 |
:emphasize-lines: 1, 2, 5, 14, 15, 30, 42
|
|
356 |
:emphasize-lines: 1,4,9,24,27,44
|
|
338 | 357 |
|
358 |
* Enter network context * |
|
339 | 359 |
[kamaki]:network |
360 |
|
|
361 |
* List user-owned VMs * |
|
340 | 362 |
[network]:/server list |
341 | 363 |
11687 (My Small Debian Server) |
342 | 364 |
11688 (An Ubuntu server) |
365 |
|
|
366 |
* Try network-connect (to get help) * |
|
343 | 367 |
[network]:connect |
368 |
Syntax error |
|
369 |
usage: connect <server id> <network id> [-s] [-h] [-i] [--config CONFIG] |
|
370 |
|
|
344 | 371 |
Connect a server to a network |
372 |
|
|
345 | 373 |
Syntax: connect <server id> <network id> |
346 | 374 |
--config : Path to configuration file |
347 | 375 |
-d,--debug : Include debug output |
... | ... | |
349 | 377 |
-i,--include: Include protocol headers in the output |
350 | 378 |
-s,--silent : Do not output anything |
351 | 379 |
-v,--verbose: More info at response |
380 |
|
|
381 |
* Connect VM with id 11687 to network with id 1409 |
|
352 | 382 |
[network]: connect 11687 1409 |
383 |
|
|
384 |
* Get details on network with id 1409 |
|
353 | 385 |
[network]:info 1409 |
354 | 386 |
attachments: |
355 | 387 |
nic-11687-1 |
... | ... | |
365 | 397 |
status : ACTIVE |
366 | 398 |
type : PRIVATE_MAC_FILTERED |
367 | 399 |
updated : 2012-11-23T17:18:25.095225+00:00 |
400 |
|
|
401 |
* Get connectivity details on VM with id 11687 * |
|
368 | 402 |
[network]:/server addr 11687 |
369 | 403 |
id: nic-11687-1 |
370 | 404 |
ipv4 : 192.168.1.1 |
... | ... | |
377 | 411 |
ipv6 : 2001:648:2ffc:1116:a80c:f2ff:fe12:a9e |
378 | 412 |
mac_address : aa:0c:f2:12:0a:9e |
379 | 413 |
network_id : 1369 |
380 |
[network]: |
|
381 |
|
|
382 | 414 |
|
415 |
.. Note:: In kamaki shell, / is used to access top-level command groups while working in command group contexts |
|
383 | 416 |
|
384 | 417 |
store (Storage/Pithos+) |
385 | 418 |
""""""""""""""""""""""" |
... | ... | |
420 | 453 |
versioning : Get versioning for account [or container ] |
421 | 454 |
versions : Get the version list of an object |
422 | 455 |
|
456 |
Showcase: Upload and download a file. |
|
457 |
|
|
458 |
.. code-block:: console |
|
459 |
:emphasize-lines: 1,7,11,16,21,29,33,37,41,44,51,55,60,64 |
|
460 |
|
|
461 |
* Create a random binarry file at current OS path * |
|
462 |
[kamaki]:!dd bs=4M if=/dev/zero of=rndm_local.file count=5 |
|
463 |
5+0 records in |
|
464 |
5+0 records out |
|
465 |
20971520 bytes (21 MB) copied, 0.016162 s, 1.3 GB/s |
|
466 |
|
|
467 |
* Enter store context * |
|
468 |
[kamaki]:store |
|
469 |
|
|
470 |
|
|
471 |
* Check local file * |
|
472 |
[store]:!ls -lh rndm_local.file |
|
473 |
-rw-rw-r-- 1 ******** ******** 20M Nov 26 15:36 rndm_local.file |
|
474 |
|
|
475 |
|
|
476 |
* Create two containers * |
|
477 |
[store]:create mycont1 |
|
478 |
[store]:create mycont2 |
|
479 |
|
|
480 |
|
|
481 |
* List accessible containers * |
|
482 |
[store]:list |
|
483 |
1. mycont1 (0B, 0 objects) |
|
484 |
2. mycont2 (0B, 0 objects) |
|
485 |
3. pithos (0B, 0 objects) |
|
486 |
4. trash (0B, 0 objects) |
|
487 |
|
|
488 |
|
|
489 |
* Upload local file to 1st container * |
|
490 |
[store]:upload rndm_local.file mycont1 |
|
491 |
|
|
492 |
|
|
493 |
* Check if file has been uploaded * |
|
494 |
[store]:list mycont1 |
|
495 |
1. 20M rndm_local.file |
|
496 |
|
|
497 |
* Create director mydir on second container * |
|
498 |
[store]:mkdir mycont2:mydir |
|
499 |
|
|
500 |
|
|
501 |
* Move file from 1st to 2nd container (and in the directory) * |
|
502 |
[store]:move mycont1:rndm_local.file mycont2:mydir/rndm_local.file |
|
503 |
|
|
504 |
* Check the container of both containers * |
|
505 |
[store]:list mycont1 |
|
506 |
[store]:list mycont2 |
|
507 |
1. D mydir/ |
|
508 |
2. 20M mydir/rndm_local.file |
|
509 |
|
|
510 |
|
|
511 |
* Copy file from 2nd to 1st container, with a new name * |
|
512 |
[store]:copy mycont2:mydir/rndm_local.file mycont1:rndm_remote.file |
|
513 |
|
|
514 |
|
|
515 |
* Check pasted file * |
|
516 |
[store]:list mycont1 |
|
517 |
1. 20M rndm_remote.file |
|
518 |
|
|
519 |
|
|
520 |
* Download pasted file to local filesystem * |
|
521 |
[store]:download mycont1:rndm_remote.file rndm_remote.file |
|
522 |
|
|
523 |
|
|
524 |
* Check if file is downloaded and if it is the same to original * |
|
525 |
[store]:!ls -lh *.file |
|
526 |
-rw-rw-r-- 1 ******** ******** 20M Nov 26 15:36 rndm_local.file |
|
527 |
-rw-rw-r-- 1 ******** ******** 20M Nov 26 15:42 rndm_remote.file |
|
528 |
[store]:!diff rndm_local.file rndm_remote.file |
|
529 |
|
|
530 |
.. Note:: In kamaki shell, ! is used to execute OS shell commands (bash in the above) |
|
531 |
|
|
423 | 532 |
One-command interface |
424 | 533 |
^^^^^^^^^^^^^^^^^^^^^ |
425 | 534 |
|
... | ... | |
433 | 542 |
To see the command groups, users should use -h or --help like in example 1.3.1. In the same way, help information for command groups and commands is printed. In the following examples, the help messages of kamaki, of a command group (server) and of a command in that group (list) are shown. |
434 | 543 |
|
435 | 544 |
.. code-block:: console |
545 |
:emphasize-lines: 1 |
|
546 |
|
|
547 |
Example 4.1.1: kamaki help shows available parameters and command groups |
|
548 |
|
|
436 | 549 |
|
437 | 550 |
$ kamaki -h |
438 |
usage: kamaki <cmd_group> [<cmd_subbroup> ...] <cmd> [-v] [-s] [-V] [-d] [-i] |
|
439 |
[--config CONFIG] |
|
440 |
[-o OPTIONS] [-h] |
|
551 |
usage: kamaki <cmd_group> [<cmd_subbroup> ...] <cmd> |
|
552 |
[-s] [-V] [-i] [--config CONFIG] [-o OPTIONS] [-h] |
|
441 | 553 |
|
442 | 554 |
optional arguments: |
443 | 555 |
-v, --verbose More info at response |
... | ... | |
461 | 573 |
server : Compute/Cyclades API server commands |
462 | 574 |
store : Pithos+ storage commands |
463 | 575 |
|
576 |
.. code-block:: console |
|
577 |
:emphasize-lines: 1 |
|
464 | 578 |
|
465 |
Example 4.1.1: kamaki help shows available parameters and command groups
|
|
579 |
Example 4.1.2: Cyclades help contains all first-level commands of cyclades command group
|
|
466 | 580 |
|
467 |
.. code-block:: console |
|
468 | 581 |
|
469 | 582 |
$ kamaki cyclades -h |
470 | 583 |
usage: kamaki server <...> [-v] [-s] [-V] [-d] [-i] [--config CONFIG] |
... | ... | |
501 | 614 |
stats : Get server statistics |
502 | 615 |
wait : Wait for server to finish [BUILD, STOPPED, REBOOT, ACTIVE] |
503 | 616 |
|
617 |
.. code-block:: console |
|
618 |
:emphasize-lines: 1 |
|
504 | 619 |
|
505 |
Example 4.1.2: Cyclades help contains all first-level commands of cyclades command group
|
|
620 |
Example 4.1.3: Help for command "server list" with syntax, description and avaiable user options
|
|
506 | 621 |
|
507 |
.. code-block:: console |
|
508 | 622 |
|
509 | 623 |
$ kamaki server list -h |
510 |
usage: kamaki server list [-v] [-s] [-V] [-d] [-i] [--config CONFIG] |
|
511 |
[-o OPTIONS] [-h] [-l] |
|
624 |
usage: kamaki server list [-V] [-i] [--config CONFIG] [-h] [-l] |
|
512 | 625 |
|
513 | 626 |
List servers |
514 | 627 |
|
... | ... | |
524 | 637 |
-h, --help Show help message |
525 | 638 |
-l show detailed output |
526 | 639 |
|
527 |
|
|
528 |
Example 4.1.3: Help for command "server list" with syntax, description and avaiable user options |
|
529 |
|
|
530 | 640 |
Using history |
531 | 641 |
""""""""""""" |
532 | 642 |
|
... | ... | |
535 | 645 |
Every syntactically correct command is appended at the end of that file. In order to see how to use history, use the kamaki help system: |
536 | 646 |
|
537 | 647 |
.. code-block:: console |
648 |
:emphasize-lines: 1 |
|
649 |
|
|
650 |
Example 4.2.1: Available history options |
|
651 |
|
|
538 | 652 |
|
539 | 653 |
$ kamaki history -h |
540 | 654 |
... |
541 | 655 |
clean: Clean up history |
542 | 656 |
show : Show history |
543 | 657 |
|
544 |
|
|
545 |
Example 4.2.1: Available history options |
|
546 |
|
|
547 | 658 |
The following example showcases how to use history in kamaki |
548 | 659 |
|
549 | 660 |
.. code-block:: console |
661 |
:emphasize-lines: 1 |
|
662 |
|
|
663 |
Example 4.2.2: Clean up everything, run a kamaki command, show full and filtered history |
|
664 |
|
|
550 | 665 |
|
551 | 666 |
$ kamaki history clean --match clean |
552 | 667 |
$ kamaki server list |
... | ... | |
558 | 673 |
1. kamaki server list |
559 | 674 |
3. kamaki history show --match server |
560 | 675 |
|
561 |
|
|
562 |
Example 4.2.2: Clean up everything, run a kamaki command, show full and filtered history |
|
563 |
|
|
564 | 676 |
Debug |
565 | 677 |
""""" |
566 | 678 |
|
... | ... | |
575 | 687 |
|
576 | 688 |
To run kamaki in verbose mode use the -v or --verbose option |
577 | 689 |
|
578 |
Client commands |
|
579 |
""""""""""""""" |
|
580 |
|
|
690 |
One-command features |
|
691 |
"""""""""""""""""""" |
|
581 | 692 |
|
582 | 693 |
Kamaki commands can be used along with advanced shell features. |
583 | 694 |
|
584 | 695 |
.. code-block:: console |
696 |
:emphasize-lines: 1 |
|
697 |
|
|
698 |
Example 4.4.1: Print username for token us3rt0k3n== using grep |
|
699 |
|
|
585 | 700 |
|
586 |
$ kamaki server list -l > vmlist.txt |
|
701 |
$ kamaki astakos authenticate -o token=us3rt0k3n== | grep uniq |
|
702 |
uniq : user@synnefo.org |
|
587 | 703 |
|
704 |
The -o argument can be used to overide temporarily various (set or unset) options. In one command, all -o options are forgoten just after the command had been completed, and the previous settings are restored (the configuration file is not modified). |
|
588 | 705 |
|
589 |
Example 4.4.1: Store a vm list in file vmlist.txt in a unix shell
|
|
706 |
The astakos-authenticate command in example 4.4.1 run against an explicitly provided token, which temporarily overode the token provided in the configuration file.
|
|
590 | 707 |
|
591 | 708 |
Interactive shell |
592 | 709 |
^^^^^^^^^^^^^^^^^ |
593 | 710 |
|
711 |
Kamaki interactive shell is details in this section |
|
712 |
|
|
713 |
Command Contexts |
|
714 |
"""""""""""""""" |
|
715 |
|
|
716 |
The kamaki interactive shell implements the notion of command contexts. Each command group is also a context where the users can **enter** by typing the group name. If the context switch is succesful, the kamaki shell prompt changes to present the new context ("store" in example 5.1.1). |
|
717 |
|
|
718 |
.. code-block:: console |
|
719 |
:emphasize-lines: 1 |
|
720 |
|
|
721 |
Example 5.1.1: Enter store commands context/group |
|
722 |
|
|
723 |
|
|
724 |
$ kamaki |
|
725 |
[kamaki]:store |
|
726 |
[store]: |
|
727 |
|
|
728 |
Type **exit** or **ctrl-D** to exit a context and return to the context of origin. If already at the top context (kamaki), an exit is equivalent to exiting the programm. |
|
729 |
|
|
730 |
.. code-block:: console |
|
731 |
:emphasize-lines: 1 |
|
732 |
|
|
733 |
Example 5.1.2: Exit store context and then exit kamaki |
|
734 |
|
|
735 |
[store]: exit |
|
736 |
[kamaki]: exit |
|
737 |
$ |
|
738 |
|
|
739 |
A user might **browse** through different contexts during one session. |
|
740 |
|
|
741 |
.. code-block:: console |
|
742 |
:emphasize-lines: 1 |
|
743 |
|
|
744 |
Example 5.1.3: Execute list command in different contexts |
|
745 |
|
|
746 |
$ kamaki |
|
747 |
[kamaki]:config |
|
748 |
[config]:list |
|
749 |
... (configuration options listing) ... |
|
750 |
[config]:exit |
|
751 |
[kamaki]:store |
|
752 |
[store]:list |
|
753 |
... (storage containers listing) ... |
|
754 |
[store]:exit |
|
755 |
[kamaki]:server |
|
756 |
[server]:list |
|
757 |
... (VMs listing) ... |
|
758 |
[server]: exit |
|
759 |
[kamaki]: |
|
760 |
|
|
761 |
Users have the option to avoid switching between contexts: all commands can run from the **top context**. As a result, examples 5.1.3 and 5.1.4 are equivalent. |
|
762 |
|
|
763 |
.. code-block:: console |
|
764 |
:emphasize-lines: 1 |
|
765 |
|
|
766 |
Example 5.1.4: Execute different "list" commands from top context |
|
767 |
|
|
768 |
|
|
769 |
[kamaki]:config list |
|
770 |
... (configuration options listing) ... |
|
771 |
[kamaki]:store list |
|
772 |
... (storage container listing) ... |
|
773 |
[kamaki]:server list |
|
774 |
... (VMs listing) ... |
|
775 |
[kamaki]: |
|
776 |
|
|
777 |
Help |
|
778 |
"""" |
|
779 |
|
|
780 |
There are two help mechanisms: a context-level and a command-level. |
|
781 |
|
|
782 |
**Context-level help** lists the available commands in a context and can also offer a short description for each command. |
|
783 |
|
|
784 |
Context-level help syntax:: |
|
785 |
|
|
786 |
* Show available commands in current context * |
|
787 |
[context]:help |
|
788 |
[context]:? |
|
789 |
|
|
790 |
* Show help for command cmd * |
|
791 |
[context]:help cmd |
|
792 |
[context]:?cmd |
|
793 |
|
|
794 |
The context-level help results change from context to context |
|
795 |
|
|
796 |
.. code-block:: console |
|
797 |
:emphasize-lines: 1 |
|
798 |
|
|
799 |
Example 5.2.1: Get available commands, pick a context and get help there as well |
|
800 |
|
|
801 |
|
|
802 |
[kamaki]:help |
|
803 |
|
|
804 |
kamaki commands: |
|
805 |
================ |
|
806 |
astakos config flavor history image network server store |
|
807 |
|
|
808 |
interactive shell commands: |
|
809 |
=========================== |
|
810 |
exit help shell |
|
811 |
|
|
812 |
[kamaki]:?config |
|
813 |
Configuration commands (config -h for more options) |
|
814 |
|
|
815 |
[kamaki]:config |
|
816 |
|
|
817 |
[config]:? |
|
818 |
|
|
819 |
config commands: |
|
820 |
================ |
|
821 |
delete get list set |
|
822 |
|
|
823 |
interactive shell commands: |
|
824 |
=========================== |
|
825 |
exit help shell |
|
826 |
|
|
827 |
[config]:help set |
|
828 |
Set a configuration option (set -h for more options) |
|
829 |
|
|
830 |
In context-level, there is a distinction between kamaki-commands and interactive shell commands. The former are available in one-command mode and are releated to the cloud client setup and use, while the later are context-shell functions. |
|
831 |
|
|
832 |
**Command-level help** prints the syntax, arguments and description of a specific (terminal) command |
|
833 |
|
|
834 |
Command-level help syntax:: |
|
835 |
|
|
836 |
* Get help for command cmd1 cmd2 ... cmdN * |
|
837 |
[context]:cmd1 cmd2 ... cmdN -h |
|
838 |
<syntax> |
|
839 |
|
|
840 |
<description> |
|
841 |
|
|
842 |
<arguments and possible extentions> |
|
843 |
|
|
844 |
Command-level help mechanism is exactly the same as the one used in one-command mode. For example, it is invoked by using the -h or --help parameter at any point. |
|
845 |
|
|
846 |
.. code-block:: console |
|
847 |
:emphasize-lines: 1 |
|
848 |
|
|
849 |
Example 5.2.2: Get command-level help for config and config-set |
|
850 |
|
|
851 |
|
|
852 |
[kamaki]:config --help |
|
853 |
config: Configuration commands |
|
854 |
delete: Delete a configuration option (and use the default value) |
|
855 |
get : Show a configuration option |
|
856 |
list : List configuration options |
|
857 |
set : Set a configuration option |
|
858 |
|
|
859 |
[kamaki]:config |
|
860 |
|
|
861 |
[config]:set -h |
|
862 |
usage: set <option> <value> [-v] [-d] [-h] [-i] [--config CONFIG] [-s] |
|
863 |
|
|
864 |
Set a configuration option |
|
865 |
|
|
866 |
optional arguments: |
|
867 |
-v, --verbose More info at response |
|
868 |
-d, --debug Include debug output |
|
869 |
-h, --help Show help message |
|
870 |
-i, --include Include protocol headers in the output |
|
871 |
--config CONFIG Path to configuration file |
|
872 |
-s, --silent Do not output anything |
|
873 |
|
|
874 |
There are many ways of producing a help message, as shown in example 5.2.3 |
|
875 |
|
|
876 |
.. code-block:: console |
|
877 |
:emphasize-lines: 1 |
|
878 |
|
|
879 |
Example 5.2.3: Equivalent calls of command-level help for config-set |
|
880 |
|
|
881 |
|
|
882 |
[config]:set -h |
|
883 |
[config]:set -help |
|
884 |
[kamaki]:config set -h |
|
885 |
[kamaki]:config set --help |
|
886 |
[store]:/config set -h |
|
887 |
[server]:/config set --help |
|
888 |
|
|
889 |
Accessing top-level commands |
|
890 |
"""""""""""""""""""""""""""" |
|
891 |
|
|
892 |
When working in a context, it is often usefull to access other contexts or top-level commands. Kamaki offers access to top-level commands by using the / prefix, as shown bellow:: |
|
893 |
|
|
894 |
* access a command "anothercontext cmd1 cmd2 ... cmdN" |
|
895 |
[context]:/anothercontext cmd1 cmd2 ... cmdN |
|
896 |
|
|
897 |
An example (5.3.1) that showcases how top-level access improves user experience is the creation of a VM. A VM is created with the command server-create. This command is called with three parameters: |
|
898 |
|
|
899 |
* the name of the new VM |
|
900 |
* the flavor id |
|
901 |
* the image id |
|
902 |
|
|
903 |
It is often the case that a user who works in the context command, needs to create a new VM, but doesn't know the flavor or image id of preference. Therefore, it is nessecary to list all available flavors (flavor-list) or images (image-list. Both commands belong to different contexts. |
|
904 |
|
|
905 |
.. code-block:: console |
|
906 |
:emphasize-lines: 1 |
|
907 |
|
|
908 |
Example 5.3.1: Create a VM from server context |
|
909 |
|
|
910 |
[server]:create -h |
|
911 |
create <name> <flavor id> <image id> ... |
|
912 |
... |
|
913 |
|
|
914 |
[server]:/flavor list |
|
915 |
... |
|
916 |
20. AFLAVOR |
|
917 |
SNF:disk_template: drbd |
|
918 |
cpu : 4 |
|
919 |
disk : 10 |
|
920 |
id : 43 |
|
921 |
ram : 2048 |
|
922 |
|
|
923 |
[server]:/image list |
|
924 |
1580deb4-edb3-7a246c4c0528 (Ubuntu Desktop) |
|
925 |
18a82962-43eb-8f8880af89d7 (Windows 7) |
|
926 |
531aa018-9a40-a4bfe6a0caff (Windows XP) |
|
927 |
6aa6eafd-dccb-67fe2bdde87e (Debian Desktop) |
|
928 |
|
|
929 |
[server]:create 'my debian' 43 6aa6eafd-dccb-67fe2bdde87e |
|
930 |
... |
|
931 |
|
|
932 |
An other example (5.3.2) showcases how to aquire and modify configuration settings from a different context. In this case, user token changes while the user is working, so a token modification is needed. |
|
933 |
|
|
934 |
.. code-block:: console |
|
935 |
:emphasize-lines: 1 |
|
936 |
|
|
937 |
Example 5.3.2: Set a new token from store context |
|
938 |
|
|
939 |
|
|
940 |
[store]:list |
|
941 |
(401) UNAUTHORIZED Access denied |
|
942 |
|
|
943 |
[store]:/astakos authenticate |
|
944 |
(401) UNAUTHORIZED Invalid X-Auth-Token |
|
945 |
|
|
946 |
[store]:/config get token |
|
947 |
my3xp1r3dt0k3n== |
|
948 |
|
|
949 |
[store]:/config set token myfr35ht0k3n== |
|
950 |
|
|
951 |
[store]:/config get token |
|
952 |
myfr35ht0k3n== |
|
953 |
|
|
954 |
[store]:list |
|
955 |
1. pithos (10MB, 2 objects) |
|
956 |
2. trash (0B, 0 objects) |
|
957 |
|
|
958 |
The following example presents some equivalent calls that call *astakos-authenticate* after a *store-list* 401 failure. |
|
959 |
|
|
960 |
.. code-block:: console |
|
961 |
:emphasize-lines: 1,3,10,17,28 |
|
962 |
|
|
963 |
Example 5.3.3: Equivalent astakos-authenticate calls after a store-list 401 failure |
|
964 |
|
|
965 |
* one-command * |
|
966 |
$ kamaki store list |
|
967 |
(401) UNAUTHORIZED Access denied |
|
968 |
$ kamaki astakos authenticate |
|
969 |
... |
|
970 |
$ |
|
971 |
|
|
972 |
* from top-level context * |
|
973 |
[kamaki]:store list |
|
974 |
(401) UNAUTHORIZED Access denied |
|
975 |
[kamaki]:astakos authenticate |
|
976 |
... |
|
977 |
[kamaki] |
|
978 |
|
|
979 |
* maximum typing * |
|
980 |
[store]:list |
|
981 |
(401) UNAUTHORIZED Access denied |
|
982 |
[store]:exit |
|
983 |
[kamaki]:astakos |
|
984 |
[astakos]:authenticate |
|
985 |
... |
|
986 |
[astakos]:exit |
|
987 |
[kamaki]:store |
|
988 |
[store]: |
|
989 |
|
|
990 |
* minimum typing * |
|
991 |
[store]: list |
|
992 |
(401) UNAUTHORIZED Access denied |
|
993 |
[store]:/astakos authenticate |
|
994 |
... |
|
995 |
[store]: |
|
996 |
|
|
997 |
Config |
|
998 |
"""""" |
|
999 |
|
|
1000 |
History |
|
1001 |
""""""" |
|
1002 |
|
|
1003 |
Tab completion |
|
1004 |
"""""""""""""" |
|
594 | 1005 |
|
1006 |
OS Shell integration |
|
1007 |
"""""""""""""""""""" |
|
595 | 1008 |
|
596 |
Creating applications over the Clients API
|
|
1009 |
Creating applications with the Clients API
|
|
597 | 1010 |
------------------------------------------ |
Also available in: Unified diff