Revision a6370d73 docs/usage.rst

b/docs/usage.rst
1 1
Usage
2 2
=====
3 3

  
4
Kamaki offers two command line interfaces: an one-command tool and an interactive shell. Both systems implement the exact same command specifications. A detailed list of the command specifications can be found in `Commands <commands.html>`_ section. This guide covers the generic usage of both interfaces.
4
Kamaki offers command line interfaces that implement specific command specifications. A detailed list of the command specifications can be found in `Commands <commands.html>`_ section. This guide covers the generic usage of both interfaces.
5 5

  
6 6
What's more, kamaki offers a clients API that allows the developement of external applications for synnefo. The clients API is listed in the `Clients lib <clients.html>`_ section. The recomended method of utilizing this API is explained in the present.
7 7

  
8 8
Setup
9 9
-----
10 10

  
11
Kamaki interfaces rely on a list of configuration options. In the initial state, kamaki is configured to communicate with the Okenos IaaS. A detailed guide for setting up kamaki can be found in the `Setup <setup.rst>`_ section.
11
Kamaki interfaces rely on a list of configuration options. In the initial state, kamaki is configured to communicate with the Okenos IaaS. A detailed guide for setting up kamaki can be found in the `Setup <setup.html>`_ section.
12 12

  
13 13
Quick guide
14 14
^^^^^^^^^^^
......
22 22

  
23 23
    Example 1.1.1: Set user token to myt0k3n==
24 24

  
25
To use the storage service, a user should also provide the username:
25
To use the storage service, a user should also provide the corresponding username:
26 26

  
27 27
.. code-block:: console
28 28

  
......
31 31

  
32 32
    Example 1.1.2: Set user name to user@domain.com
33 33

  
34
Command line interfaces
35
-----------------------
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.
37

  
38
Shell vs one-command
39
^^^^^^^^^^^^^^^^^^^^
40
In favor of interactive shell behavior:
41

  
42
* tab completion for commands
43
* session history with "up"/"down" keys
44
* shorter commants with command namespace switching
45

  
46
In favor of one-command behavior:
47

  
48
* can be used along with advanced shell features (pipelines, redirection, etc.)
49
* can be used in shell scripts
50
* prints debug and verbose messages if needed
51

  
34 52
Run as shell
35 53
""""""""""""
36
Call kamaki
54
To use kamaki as a shell, run:
37 55

  
38 56
* without any parameters or arguments
39 57

  
......
42 60
    $ kamaki
43 61

  
44 62

  
45
    Example 1.2.1: Running kamaki shell
63
    Example 2.2.1: Running kamaki shell
46 64

  
47 65

  
48 66
* with any kind of '-' prefixed arguments, except '-h', '--help'.
......
52 70
    $ kamaki --config myconfig.file
53 71

  
54 72
   
55
    Example 1.2.2: Running kamaki shell with custom configuration file
73
    Example 2.2.2: Running kamaki shell with custom configuration file
56 74

  
57 75

  
58 76
Run as one-command
59 77
""""""""""""""""""
60
Call kamaki:
78
To use kamaki as an one-command tool, run:
61 79

  
62 80
* with the '-h' or '--help' arguments (help for kamaki one-command)
63 81

  
......
66 84
    $kamaki -h
67 85

  
68 86

  
69
    Example 1.3.1: Kamaki help
87
    Example 2.3.1: Kamaki help
70 88

  
71 89
* with one or more command parameters:
72 90

  
......
75 93
    $ kamaki server list
76 94

  
77 95

  
78
    Example 1.3.2: List VMs managed by user
96
    Example 2.3.2: List VMs managed by user
79 97

  
80
Command parameters
81
""""""""""""""""""
98
Commands
99
^^^^^^^^
82 100

  
83 101
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.
84 102

  
......
87 105
    $ kamaki store list mycontainer
88 106

  
89 107

  
90
    Example 1.4.1: List stored files in container mycontainer
108
    Example 3.1.1: List stored files in container mycontainer
91 109

  
92
E.g. in example 1.3.2, the group is "server", the command is "list" and there are no parameters. Example 6 is another example using the "server" command group.
110
Example 2.3.2 showcases a command without parameters (the group is "server", the command is "list").
111

  
112
The "server" command group is also refered in the following example.
93 113

  
94 114
.. code-block:: console
95 115

  
96 116
    $ kamaki server info 42
97 117

  
98 118

  
99
    Example 1.4.2: Show information about a user-managed VM with id 42
119
    Example 3.1.2: Show information about a user-managed VM with id 42
120

  
121
Client commands can feature an arbitarry number of terms:
122

  
123
.. code-block:: text
124

  
125
    kamaki <group> <cmd term 1> <cmd term 2> ... <cmd term N> [arguments]
126

  
127
Although there are no multi-termed client commands until version 0.6.1 , the feature is supported and might be used in feature extentions.
128

  
129
The following pattern applies to all client commands up to version 0.6.1:
130

  
131
.. code-block:: text
132

  
133
    kamaki <group> <command> [arguments]
134

  
135
The commands supported in version 0.6.1 are described bellow, grouped by service:
136

  
137
astakos (Identity Manager)
138
""""""""""""""""""""""""""
139

  
140
.. code-block:: text
141

  
142
    authenticate:  Authenticate a user
143

  
144
flavor (Compute/Cyclades)
145
"""""""""""""""""""""""""
146

  
147
.. code-block:: text
148

  
149
    info:  Get flavor details
150
    list:  List flavors
151

  
152
image (Compute/Cyclades + Glance)
153
""""""""""""""""""""""""""""""""""
154

  
155
.. code-block:: text
156

  
157
    addmember  :  Add a member to an image
158
    addproperty:  Add an image property
159
    delete     :  Delete image
160
    delmember  :  Remove a member from an image
161
    delproperty:  Delete an image property
162
    info       :  Get image details
163
    list       :  List images
164
    members    :  Get image members
165
    meta       :  Get image metadata
166
    properties :  Get image properties
167
    public     :  List public images
168
    register   :  (Re)Register an image
169
    setmembers :  Set the members of an image
170
    setproperty:  Update an image property
171
    shared     :  List shared images
172

  
173
network (Compute/Cyclades)
174
""""""""""""""""""""""""""
175

  
176
.. code-block:: text
177

  
178
    connect   :  Connect a server to a network
179
    create    :  Create a network
180
    delete    :  Delete a network
181
    disconnect:  Disconnect a nic of a server to a network
182
    info      :  Get network details
183
    list      :  List networks
184
    rename    :  Update network name
185

  
186
server (Compute/Cyclades)
187
"""""""""""""""""""""""""
188

  
189
.. code-block:: text
190

  
191
    addmeta :  Add server metadata
192
    addr    :  List a server's nic address
193
    console :  Get a VNC console
194
    create  :  Create a server
195
    delete  :  Delete a server
196
    delmeta :  Delete server metadata
197
    firewall:  Set the server's firewall profile
198
    info    :  Get server details
199
    list    :  List servers
200
    meta    :  Get a server's metadata
201
    reboot  :  Reboot a server
202
    rename  :  Update a server's name
203
    setmeta :  Update server's metadata
204
    shutdown:  Shutdown a server
205
    start   :  Start a server
206
    stats   :  Get server statistics
207
    wait    :  Wait for server to finish
208

  
209
store (Storage/Pithos+)
210
"""""""""""""""""""""""
211

  
212
.. code-block:: text
213

  
214
    append        :  Append local file to remote
215
    cat           :  Print a file to console
216
    copy          :  Copy an object
217
    create        :  Create a container or a directory object
218
    delete        :  Delete a container [or an object]
219
    delgroup      :  Delete a user group on an account
220
    delmeta       :  Delete an existing metadatum of account [, container [or object]]
221
    delpermissions:  Delete all sharing permissions
222
    download      :  Download a file
223
    group         :  Get user groups details for account
224
    hashmap       :  Get the hashmap of an object
225
    info          :  Get information for account [, container [or object]]
226
    list          :  List containers, object trees or objects in a directory
227
    manifest      :  Create a remote file with uploaded parts by manifestation
228
    meta          :  Get custom meta-content for account [, container [or object]]
229
    mkdir         :  Create a directory
230
    move          :  Copy an object
231
    overwrite     :  Overwrite part (from start to end) of a remote file
232
    permissions   :  Get object read/write permissions
233
    publish       :  Publish an object
234
    purge         :  Purge a container
235
    quota         :  Get  quota for account [or container]
236
    setgroup      :  Create/update a new user group on account
237
    setmeta       :  Set a new metadatum for account [, container [or object]]
238
    setpermissions:  Set sharing permissions
239
    setquota      :  Set new quota (in KB) for account [or container]
240
    setversioning :  Set new versioning (auto, none) for account [or container]
241
    sharers       :  List the accounts that share objects with default account
242
    truncate      :  Truncate remote file up to a size
243
    unpublish     :  Unpublish an object
244
    upload        :  Upload a file
245
    versioning    :  Get  versioning for account [or container ]
246
    versions      :  Get the version list of an object
100 247

  
101 248
One-command interface
102
---------------------
249
^^^^^^^^^^^^^^^^^^^^^
250

  
251
Kamaki usage as a one-command tool is detailed in this section
252

  
253
Using help
254
""""""""""
255

  
256
Kamaki help is used to see available commands, with description, syntax and their corresponding optional arguments.
257

  
258
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.
259

  
260
.. code-block:: console
261

  
262
    $ kamaki -h
263
    usage: kamaki <cmd_group> [<cmd_subbroup> ...] <cmd> [-v] [-s] [-V] [-d] [-i]
264
                                                     [--config CONFIG]
265
                                                     [-o OPTIONS] [-h]
266

  
267
    optional arguments:
268
      -v, --verbose         More info at response
269
      -s, --silent          Do not output anything
270
      -V, --version         Print current version
271
      -d, --debug           Include debug output
272
      -i, --include         Include protocol headers in the output
273
      --config CONFIG       Path to configuration file
274
      -o OPTIONS, --options OPTIONS
275
                            Override a config value
276
      -h, --help            Show help message
277

  
278
    Options:
279
     - - - -
280
    astakos:  Astakos API commands
281
    config :  Configuration commands
282
    flavor :  Compute/Cyclades API flavor commands
283
    history:  Command history
284
    image  :  Compute/Cyclades or Glance API image commands
285
    network:  Compute/Cyclades API network commands
286
    server :  Compute/Cyclades API server commands
287
    store  :  Pithos+ storage commands
288

  
289

  
290
    Example 4.1.1: kamaki help shows available parameters and command groups
291

  
292
.. code-block:: console
293

  
294
    $ kamaki cyclades -h
295
    usage: kamaki server <...> [-v] [-s] [-V] [-d] [-i] [--config CONFIG]
296
                               [-o OPTIONS] [-h]
297

  
298
    optional arguments:
299
      -v, --verbose         More info at response
300
      -s, --silent          Do not output anything
301
      -V, --version         Print current version
302
      -d, --debug           Include debug output
303
      -i, --include         Include protocol headers in the output
304
      --config CONFIG       Path to configuration file
305
      -o OPTIONS, --options OPTIONS
306
                            Override a config value
307
      -h, --help            Show help message
308

  
309
    Options:
310
     - - - -
311
    addmeta :  Add server metadata
312
    addr    :  List a server's nic address
313
    console :  Get a VNC console
314
    create  :  Create a server
315
    delete  :  Delete a server
316
    delmeta :  Delete server metadata
317
    firewall:  Set the server's firewall profile
318
    info    :  Get server details
319
    list    :  List servers
320
    meta    :  Get a server's metadata
321
    reboot  :  Reboot a server
322
    rename  :  Update a server's name
323
    setmeta :  Update server's metadata
324
    shutdown:  Shutdown a server
325
    start   :  Start a server
326
    stats   :  Get server statistics
327
    wait    :  Wait for server to finish [BUILD, STOPPED, REBOOT, ACTIVE]
328

  
329

  
330
    Example 4.1.2: Cyclades help contains all first-level commands of cyclades command group
331

  
332
.. code-block:: console
333

  
334
    $ kamaki server list -h
335
    usage: kamaki server list  [-v] [-s] [-V] [-d] [-i] [--config CONFIG]
336
                               [-o OPTIONS] [-h] [-l]
337

  
338
    List servers
339

  
340
    optional arguments:
341
      -v, --verbose         More info at response
342
      -s, --silent          Do not output anything
343
      -V, --version         Print current version
344
      -d, --debug           Include debug output
345
      -i, --include         Include protocol headers in the output
346
      --config CONFIG       Path to configuration file
347
      -o OPTIONS, --options OPTIONS
348
                            Override a config value
349
      -h, --help            Show help message
350
      -l                    show detailed output
351

  
352

  
353
      Example 4.1.3: Help for command "server list" with syntax, description and avaiable user options
354

  
355
Using history
356
"""""""""""""
357

  
358
Kamaki command history is stored in a file at user home (".kamaki.history" by default). To set a custom history file path users must set the history.file config option (see `available config options <setup.html#editing-options>`_).
359

  
360
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:
361

  
362
.. code-block:: console
363

  
364
    $ kamaki history -h
365
    ...
366
    clean:  Clean up history
367
    show :  Show history
368

  
369

  
370
    Example 4.2.1: Available history options
371

  
372
The following example showcases how to use history in kamaki
373

  
374
.. code-block:: console
375

  
376
    $ kamaki history clean --match clean
377
    $ kamaki server list
378
    ...
379
    $ kamaki history show
380
    1.  kamaki server list
381
    2.  kamaki history show
382
    $ kamaki history show --match server
383
    1. kamaki server list
384
    3. kamaki history show --match server
385

  
386

  
387
    Example 4.2.2: Clean up everything, run a kamaki command, show full and filtered history
388

  
389
Debug
390
"""""
391

  
392
In case of errors, kamaki in debug mode shows usefull debug information, like the stack trace, instead of a user-friendly error message. Kamaki also suppresses various warning messages that are also allowed in debug mode.
393

  
394
To run kamaki in debug mode use the -d or --debug option
395

  
396
Verbose
397
"""""""
398

  
399
Most kamaki commands are translated into http requests. Kamaki clients API translated the semantics to REST and handles the response. Users who need to have access to these commands can use the verbose mode that presentes the HTTP Request details as well as the full server response.
400

  
401
To run kamaki in verbose mode use the -v or --verbose option
402

  
403
Client commands
404
"""""""""""""""
405

  
406
Client commands are grouped by service (see example 3.1.1 for how to list availabel groups). Commands behavior is as uniform as possible, but there are still differences between groups due to the special nature of each service and server-side implementation.
407

  
408
Kamaki commands can be used along with advanced shell features.
409

  
410
.. code-block:: console
411

  
412
    $ kamaki server list -l > vmlist.txt
413

  
414

  
415
    Example 4.4.1: Store a vm list in file vmlist.txt in a unix shell
103 416

  
417
In that case, kamaki modifies the output (e.g. removes colors - if enabled)
104 418

  
105 419
Interactive shell
106
-----------------
420
^^^^^^^^^^^^^^^^^
107 421

  
108 422
Creating applications over the Clients API
109 423
------------------------------------------

Also available in: Unified diff