Restore server console
[kamaki] / docs / commands.rst
1 List of commands
2 ================
3
4 Kamaki commands follow this scheme::
5
6     [kamaki] <object> <action> [identifiers] [non-positional arguments]
7
8 In this context, objects are not services, but virtual objects like a server, a
9 file or an image. The action concerns objects of the specified type. Some
10 actions (e.g. "delete" or "info") need to operate on an existing object. The
11 identifiers strictly identify this object and they should have the form of an id
12 (e.g., `server delete <SERVER_ID>`).
13
14 The examples bellow showcase some commands. The kamaki-shell (check
15 `Usage section <usage.html#interactive-shell>`_ for details) is chosen as the
16 execution environment.
17
18
19 user (Identity/Astakos)
20 -----------------------
21
22 .. code-block:: text
23
24     info          Get info for (current) session user
25     uuid2name     Get user name(s) from uuid(s)
26     authenticate  Authenticate a user and get all authentication information
27     list          List (cached) session users
28     add           Authenticate user by token and add to kamaki session (cache)
29     name2uuid     Get user uuid(s) from name(s)
30     select        Select user from the (cached) list as current session user
31     delete        Delete user (token) from the (cached) list of session users
32
33 Showcase: get user information
34 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
35
36 In the following, cloud URL and TOKEN were set in a previous step (see
37 `setup section <setup.html>`_ or the
38 `quick setup guide <usage.html#quick-setup>`_)
39
40 .. code-block:: console
41     :emphasize-lines: 1,4
42
43     * Enter user context *
44     [kamaki]: user
45
46     * Authenticate user *
47     [user]: info
48     ...
49     name:  My Real Name
50     id:  ab1cde23-45fg-6h7i-8j9k-10l1m11no2pq
51
52     [user]: exit
53     [kamaki]:
54
55 project (Astakos)
56 -----------------
57
58 .. code-block:: text
59
60     info          Get details for a project
61     unsuspend     Resume a suspended project (special privileges needed)
62     suspend       Suspend a project (special privileges needed)
63     list          List all projects
64     create        Apply for a new project
65     modify        Modify a project
66     terminate     Terminate a project (special privileges needed)
67     application   Application management commands
68     reinstate     Reinstate a terminated project (special privileges needed)
69
70 membership (Astakos)
71 --------------------
72
73 .. code-block:: text
74
75     info    Details on a membership
76     enroll  Enroll somebody to a project you manage
77     join    Join a project
78     list    List all memberships
79     accept  Accept a membership for a project you manage
80     leave   Leave a project you have membership to
81     remove  Remove a membership for a project you manage
82     reject  Reject a membership for a project you manage
83     cancel  Cancel your (probably pending) membership to a project
84
85 quota (Account/Astakos)
86 -----------------------
87
88 .. code-block:: text
89
90     list          Get user quotas
91     info          Get quota for a service (cyclades, pithos, astakos)
92
93 resource (Astakos)
94 ------------------
95
96 .. code-block:: text
97
98     list          List user resources
99
100 flavor (Compute/Cyclades)
101 -------------------------
102
103 .. code-block:: text
104
105     info:  Get flavor details
106     list:  List flavors
107
108 Showcase: show details for flavor with id 43
109 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
110
111 .. code-block:: console
112     :emphasize-lines: 1,4
113
114     * Enter flavor context *
115     [kamaki]: flavor
116
117     * Get details about flavor with id 43 *
118     [flavor]: info 43
119     SNF:disk_template:  drbd
120     cpu:  4
121     disk:  10
122     id:  43
123     name:  C4R2048D10
124     ram:  2048
125
126 image (Image/Plankton)
127 ----------------------
128
129 .. code-block:: text
130
131     info          Get image metadata
132     list          List images accessible by user
133     register      (Re)Register an image file to an Image service
134     modify        Add / update metadata and properties for an image
135     unregister    Unregister an image (does not delete the image file)
136
137 Showcase: Pick an image and list the properties
138 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
139
140 .. code-block:: console
141     :emphasize-lines: 1,4,18
142
143     * Enter image context *
144     [kamaki]: image
145
146     * list all available images *
147     [image]: list
148     926ab1c5-2d85-49d4-aebe-0fce712789b9 Windows Server 2008
149      container_format:  bare
150      disk_format:  diskdump
151      id:  926ab1c5-2d85-49d4-aebe-0fce712789b9
152      size:  11917066240
153      status:  available
154     78262ee7-949e-4d70-af3a-85360c3de57a Windows Server 2012
155      container_format:  bare
156      disk_format:  diskdump
157      id:  78262ee7-949e-4d70-af3a-85360c3de57a
158      size:  11697913856
159      status:  available
160     5ed5a29b-292c-4fe0-b32c-2e2b65628635 ubuntu
161      container_format:  bare
162      disk_format:  diskdump
163      id:  5ed5a29b-292c-4fe0-b32c-2e2b65628635
164      size:  2578100224
165      status:  available
166     1f8454f0-8e3e-4b6c-ab8e-5236b728dffe Debian_Wheezy_Base
167      container_format:  bare
168      disk_format:  diskdump
169      id:  1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
170      size:  795107328
171      status:  available
172
173     * Get details for image with id 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe *
174     [image]: info 1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
175      name: Debian_Wheezy_Base
176      container_format:  bare
177      disk_format:  diskdump
178      id:  1f8454f0-8e3e-4b6c-ab8e-5236b728dffe
179      size:  795107328
180      status:  available
181      owner:  s0m3-u53r-1d (user@example.com)
182         DESCRIPTION:  Debian Wheezy Base (Stable)
183         GUI:  No GUI
184         KERNEL:  2.6.32
185         OS:  debian
186         OSFAMILY:  linux
187         ROOT_PARTITION:  1
188         SORTORDER:  1
189         USERS:  root
190
191 imagecompute (Compute/Cyclades)
192 -------------------------------
193
194 .. code-block:: text
195
196     info      Get detailed information on an image
197     list      List images
198     modify    Modify image properties (metadata)
199     delete    Delete an image (WARNING: image file is also removed)
200
201 server (Compute/Cyclades)
202 -------------------------
203
204 .. code-block:: text
205
206     info      Detailed information on a Virtual Machine
207     modify    Modify attributes of a virtual server
208     create    Create a server (aka Virtual Machine)
209     list      List virtual servers accessible by user
210     reboot    Reboot a virtual server
211     start     Start an existing virtual server
212     shutdown  Shutdown an active virtual server
213     delete    Delete a virtual server
214     console   Create a VMC console and show connection information
215     wait      Wait for server to finish [BUILD, STOPPED, REBOOT, ACTIVE]
216
217 Showcase: Create a server
218 ^^^^^^^^^^^^^^^^^^^^^^^^^
219
220 .. code-block:: console
221     :emphasize-lines: 1,4,21,35,44,62
222
223     [kamaki]: server
224
225     [server]: create -h
226     usage: create --name NAME --flavor-id FLAVOR_ID --image-id IMAGE_ID
227             [--personality PERSONALITY] [-h] [--config CONFIG] [--cloud CLOUD]
228
229     Create a server
230
231     optional arguments:
232       -v, --verbose         More info at response
233       --personality PERSONALITY
234                             add a personality file
235       -d, --debug           Include debug output
236       -h, --help            Show help message
237       -i, --include         Include protocol headers in the output
238       --config CONFIG       Path to configuration file
239       -s, --silent          Do not output anything
240       --cloud CLOUD         Chose a cloud to connect to
241
242     * List all available images *
243     [server]: /image compute list
244     1395fdfb-51b4-419f-bb02-f7d632860611 Ubuntu Desktop LTS
245     1580deb4-edb3-4496-a27f-7a246c4c0528 Ubuntu Desktop
246     18a82962-43eb-4b32-8e28-8f8880af89d7 Kubuntu LTS
247     6aa6eafd-dccb-422d-a904-67fe2bdde87e Debian Desktop
248     6b5681e4-7502-46ae-b1e9-9fd837932095 maelstrom
249     78262ee7-949e-4d70-af3a-85360c3de57a Windows Server 2012
250     86bc2414-0fb3-4898-a637-240292243302 Fedora
251     926ab1c5-2d85-49d4-aebe-0fce712789b9 Windows Server 2008
252     b2dffe52-64a4-48c3-8a4c-8214cc3165cf Debian Base
253     baf2321c-57a0-4a69-825d-49f49cea163a CentOS
254     c1d27b46-d875-4f5c-b7f1-f39b5af62905 Kubuntu
255
256     * See details of flavor with id 1 *
257     [server]: /flavor info 1
258     SNF:disk_template:  drbd
259     cpu              :  1
260     disk             :  20
261     id               :  1
262     name             :  C1R1024D20
263     ram              :  1024
264
265     * Create a debian server named 'My Small Debian Server'
266     [server]: create --name='My Small Debian Server' --flavor-id=1 --image-id=b2dffe52-64a4-48c3-8a4c-8214cc3165cf
267     adminPass:  L8gu2wbZ94
268     created  :  2012-11-23T16:56:04.190813+00:00
269     flavorRef:  1
270     hostId   :  
271     id       :  11687
272     imageRef :  b2dffe52-64a4-48c3-8a4c-8214cc3165cf
273     metadata : 
274                os   :  debian
275                users:  root
276     name     :  My Small Debian Server
277     progress :  0
278     status   :  BUILD
279     suspended:  False
280     updated  :  2012-11-23T16:56:04.761962+00:00
281
282     * wait for server to build (optional) *
283     [server]: wait 11687
284     Server 11687 still in BUILD mode |||||||||||||||||    | 80%
285     Server 11687 is now in ACTIVE mode
286
287 .. Note:: In kamaki shell, / is used to access commands from top-level
288
289 ip (Network/Cyclades)
290 ---------------------
291
292 .. code-block:: text
293
294     info      Get details on a floating IP
295     create    Reserve an IP on a network
296     list      List reserved floating IPs
297     delete    Unreserve an IP (also delete the port, if attached)
298     attach    Attach an IP on a virtual server
299     detach    Detach an IP from a virtual server
300
301 port (Network/Cyclades)
302 -----------------------
303
304 .. code-block:: text
305
306     info      Get details about a port
307     list      List all ports
308     create    Create a new port (== connect server to network)
309     modify    Modify the attributes of a port
310     delete    Delete a port (== disconnect server from network)
311     wait      Wait for port to finish [ACTIVE, DOWN, BUILD, ERROR]
312
313 Showcase: Reserve and attach IP to server
314 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
315
316 .. code-block:: text
317
318     * Enter port context *
319     [kamaki]: port
320
321     * Reserve an IP and see servers and networks*
322     [port]: /ip create
323     123.456.78.9
324     [port]: /server list
325     42   My Windows Server
326     43   My Linux Server
327     [port]: /network list
328     101  My Network 1
329     102  My Network 2
330
331     * Attach IP to server
332     [port]: port create --device-id=43 --network-id=101 --ip-address=123.456.78.9 --wait
333     Creating new port 7 between server 43 and network 101
334     Port 7 still in BUILD mode |||||||||||||||||    | 80%
335     Port 7 is now in ACTIVE mode
336
337 .. Note:: In kamaki shell, / is used to access top-level command groups while
338     working in command group contexts
339
340 network (Network/Cyclades)
341 --------------------------
342
343 .. code-block:: text
344
345     info        Get details about a network
346     disconnect  Disconnect a network from a device
347     modify      Modify network attributes
348     create      Create a new network
349     list        List networks
350     connect     Connect a network with a device (server or router)
351     delete      Delete a network
352
353 Showcase: Connect a network to a VM
354 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
355
356 .. code-block:: console
357     :emphasize-lines: 1,4,9,24,27,44
358
359     * Enter network context *
360     [kamaki]: network
361
362     * List user-owned VMs *
363     [network]: /server list
364     11687 (My Small Debian Server)
365     11688 (An Ubuntu server)
366
367     * Try network-connect (to get help) *
368     [network]: connect 
369     Syntax error
370     usage: connect <network id> --device-id <DEVICE_ID> [-s] [-h] [-i] [--config CONFIG]
371
372     Connect a server to a network
373
374     Syntax: connect  <server id> <network id>
375       --config    :  Path to configuration file
376       -d,--debug  :  Include debug output
377       -h,--help   :  Show help message
378       -i,--include:  Include protocol headers in the output
379       -s,--silent :  Do not output anything
380       -v,--verbose:  More info at response
381
382     * Connect VM with id 11687 to network with id 1409
383     [network]: connect 11687 --device-id=1409 --wait
384     Creating port between network 1409 and server 11687
385     New port: 8
386
387     * Get details on network with id 1409
388     [network]: info 1409
389       attachments:
390                 8
391       cidr    :  192.168.1.0/24
392       cidr6   :  None
393       created :  2012-11-23T17:17:20.560098+00:00
394       dhcp    :  True
395       gateway :  None
396       gateway6:  None
397       id      :  1409
398       name    :  my network
399       public  :  False
400       status  :  ACTIVE
401       type    :  MAC_FILTERED
402       updated :  2012-11-23T17:18:25.095225+00:00
403
404     * Get connectivity details on VM with id 11687 *
405     [network]: /server info 11687 --nics 
406     nic-11687-1
407         ipv4       :  192.168.1.1
408         ipv6       :  None
409         mac_address:  aa:0f:c2:0b:0e:85
410         network_id :  1409
411         firewallProfile:  DISABLED
412     nic-11687-0
413         ipv4           :  83.212.106.111
414         ipv6           :  2001:648:2ffc:1116:a80c:f2ff:fe12:a9e
415         mac_address    :  aa:0c:f2:12:0a:9e
416         network_id     :  1369
417
418 .. Note:: In kamaki shell, / is used to access top-level command groups while working in command group contexts
419
420 container (Storage/Pithos+)
421 ---------------------------
422
423 .. code-block:: text
424
425     info      Get information about a container
426     modify    Modify the properties of a container
427     create    Create a new container
428     list      List all containers, or their contents
429     empty     Empty a container
430     delete    Delete a container
431
432 group (Storage/Pithos+)
433 -----------------------
434
435 .. code-block:: text
436
437     create    Create a group of users
438     list      List all groups and group members
439     delete    Delete a user group
440
441 sharer (Storage/Pithos+)
442 ------------------------
443
444 .. code-block:: text
445
446     info      Details on a Pithos+ sharer account (default: current account)
447     list      List accounts who share file objects with current user
448
449 file (Storage/Pithos+)
450 ----------------------
451
452 .. code-block:: text
453
454     info      Get information/details about a file
455     truncate  Truncate remote file up to size
456     mkdir     Create a directory
457     create    Create an empty file
458     move      Move objects, even between different accounts or containers
459     list      List all objects in a container or a directory object
460     upload    Upload a file
461     cat       Fetch remote file contents
462     modify    Modify the attributes of a file or directory object
463     append    Append local file to (existing) remote object
464     download  Download a remove file or directory object to local file system
465     copy      Copy objects, even between different accounts or containers
466     overwrite Overwrite part of a remote file
467     delete    Delete a file or directory object
468
469 Showcase: Upload and download a file
470 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
471
472 .. code-block:: console
473     :emphasize-lines: 1,7,11,16,21,29,33,37,41,44,51,55,60,64
474
475     * Create a random binarry file at current OS path *
476     [kamaki]: !dd bs=4M if=/dev/zero of=rndm_local.file count=5
477     5+0 records in
478     5+0 records out
479     20971520 bytes (21 MB) copied, 0.016162 s, 1.3 GB/s
480
481     * Enter file context *
482     [kamaki]: file
483
484
485     * Check local file *
486     [file]: !ls -lh rndm_local.file
487     -rw-rw-r-- 1 ******** ******** 20M Nov 26 15:36 rndm_local.file
488
489
490     * Create two containers *
491     [file]: /container create mycont1
492     [file]: /container create mycont2
493
494
495     * List accessible containers *    
496     [file]: /container list
497     1. mycont1 (0B, 0 objects)
498     2. mycont2 (0B, 0 objects)
499     3. pithos (0B, 0 objects)
500     4. trash (0B, 0 objects)
501
502
503     * Upload local file to 1st container *
504     [file]: upload /mycont1/rndm_local.file
505
506
507     * Check if file has been uploaded *
508     [file]: list /mycont1
509     1.    20M rndm_local.file
510
511     * Create directory mydir on second container *
512     [file]: mkdir /mycont2/mydir
513
514     * Move file from 1st to 2nd container (and in the directory) *
515     [file]: move /mycont1/rndm_local.file /mycont2/mydir/rndm_local.file
516
517     * Check contents of both containers *
518     [file]: list /mycont1
519     [file]: list /mycont2
520     1.      D mydir/
521     2.    20M mydir/rndm_local.file
522
523     * Copy file from 2nd to 1st container, with a new name *
524     [file]: copy /mycont2/mydir/rndm_local.file /mycont1/rndm_remote.file
525
526     * Check pasted file *
527     [file]: list /mycont1
528     1.    20M rndm_remote.file
529
530     * Download pasted file to local file system *
531     [file]: download /mycont1/rndm_remote.file
532     Downloading: |||||||||||||||||   | 72%
533
534     * Check if file is downloaded and if it is the same to original *
535     [file]: !ls -lh *.file
536     -rw-rw-r-- 1 ******** ******** 20M Nov 26 15:36 rndm_local.file
537     -rw-rw-r-- 1 ******** ******** 20M Nov 26 15:42 rndm_remote.file
538     [file]: !diff rndm_local.file rndm_remote.file
539
540 .. Note:: In kamaki shell, ! is used to execute OS shell commands (e.g., bash)