Revision bed5a8c1

b/docs/collection_of_examples/examples.rst
1 1

  
2
Image register
3
--------------
4

  
5
Upload and register image
6
^^^^^^^^^^^^^^^^^^^^^^^^^
7

  
8
Register with metadata template
9
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10

  
11
Upload and register multiple images
12
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
13

  
14 2
virtual machines
15 3
----------------
16 4

  
b/docs/collection_of_examples/imageregister.rst
1
Image registration
2
==================
3

  
4
In Synnefo, an image is loaded as a file to the storage service (Pithos+), and
5
then is registered to the image service (Plankton). The image location at the
6
storage server is unique through out a deployment and also necessary for the
7
image to exist.
8

  
9
The image location format::
10

  
11
    pithos://<user id>/<container>/<object path>
12

  
13
    e.g.:
14

  
15
    pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump
16

  
17

  
18
Register an image
19
-----------------
20

  
21
Let the image file `debian_base3.diskdump` be a debian image located at the
22
current directory.
23

  
24
Upload the image to container `pithos`
25

  
26
.. code-block:: console
27

  
28
    [kamaki]: file upload debian_base3.diskdump pithos
29
    Uploading /home/someuser/debian_base3.diskdump --> pithos:debian_base3.diskdump
30
    Done
31
    [kamaki]:
32

  
33
Register the image object with the name 'Debian Base Alpha'
34

  
35
.. code-block:: console
36

  
37
    [kamaki]: image register 'Debian Base Alpha' pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump
38
    checksum:         3cb03556ec971f...e8dd6190443b560cb7
39
    container-format: bare
40
    created-at:       2013-06-19 08:00:22
41
    deleted-at:       
42
    disk-format:      diskdump
43
    id:               7h1rd-1m4g3-1d
44
    is-public:        False
45
    location:         pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump
46
    name:             Debian Base Alpha
47
    owner:            s0m3-u53r-1d
48
    properties:      
49
    size:             903471104
50
    status:           available
51
    updated-at:       2013-06-19 08:01:00
52
    Metadata file uploaded as pithos:debian_base3.diskdump.meta (version 1352)
53
    [kamaki]:
54

  
55
.. note:: The `image register` command automatically create a meta file and
56
    uploads it to the same location as the image. The meta file can be
57
    downloaded and reused for more image registrations.
58

  
59
Read the metafile
60

  
61
.. code-block:: console
62

  
63
    [kamaki]: file cat pithos:debian_base3.diskdump
64
    {
65
      "status": "available", 
66
      "name": "Debian Base Gama", 
67
      "checksum": "3cb03556ec971f...e8dd6190443b560cb7", 
68
      "id": "7h1rd-1m4g3-1d2", 
69
      "updated-at": "2013-06-19 08:01:00", 
70
      "created-at": "2013-06-19 08:00:22", 
71
      "properties": {}, 
72
      "location": "pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump", 
73
      "is-public": "False", 
74
      "owner": "s0m3-u53r-1d", 
75
      "disk-format": "diskdump", 
76
      "size": "903471104", 
77
      "deleted-at": "", 
78
      "container-format": "bare"
79
    }
80
    [kamaki]:
81

  
82
Images registered by me
83
-----------------------
84

  
85
List all images, then list only images owned by the user with id s0m3-u53r-1d
86

  
87
.. code-block:: console
88

  
89
    [kamaki]: image list
90
    f1r57-1m4g3-1d Debian Base Alpha
91
        container_format: bare
92
        disk_format:      diskdump
93
        size:             474066944
94
        status:           available
95
    53c0nd-1m4g3-1d Beta Debian Base
96
        container_format: bare
97
        disk_format:      diskdump
98
        size:             474066944
99
        status:           available
100
    7h1rd-1m4g3-1d Debian Base Gama
101
        container_format: bare
102
        disk_format:      diskdump
103
        size:             474066944
104
        status:           available
105
    [kamaki]: image list --owner=s0m3-u53r-1d
106
    7h1rd-1m4g3-1d Debian Base Gama
107
        container_format: bare
108
        disk_format:      diskdump
109
        size:             474066944
110
        status:           available
111
    [kamaki]:
112

  
113
.. note:: To get the current user id, use `user authenticate` in kamaki
114

  
115
Unregister an image
116
-------------------
117

  
118
An image can be unregistered by its image id, but only if the current user is
119
also the image owner. In this example, there is only one image owned by current
120
user.
121

  
122
Unregister image owned by current user 
123

  
124
.. code-block:: console
125

  
126
    [kamaki]: image unregister 7h1rd-1m4g3-1d
127
    [kamaki]:
128

  
129
Check if the image is deleted
130

  
131
.. code-block:: console
132

  
133
    [kamaki]: image list --owner=s0m3-u53r-1d
134
    [kamaki]:
135

  
136
Attempt to unregister an image of another user
137

  
138
.. code-block:: console
139

  
140
    [kamaki]: image unregister f1r57-1m4g3-1d
141
    (403) FORBIDDEN forbidden ()
142
    [kamaki]:
143

  
144
Register with properties
145
------------------------
146

  
147
The image will be registered again, but with some custom properties::
148

  
149
    OS: Linux
150
    user: someuser
151

  
152
These properties can be added freely by the user, and they have no significance
153
for the image server, but they could be used to help using the image more
154
efficiently.
155

  
156
Attempt to register with properties
157

  
158
.. code-block:: console
159

  
160
    [kamaki]: image register 'Debian Base Gama' pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump -p OS=Linux -p user=someuser
161
    Metadata file pithos:debian_base3.diskdump.meta already exists
162
    [kamaki]:
163

  
164
It's true that the metafile is already there, but we can override it (**-f**)
165

  
166
.. code-block:: console
167

  
168
    [kamaki]: image register -f 'Debian Base Gama' pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump -p OS=Linux -p user=someuser
169
    [kamaki]:
170

  
171
Register with a meta file
172
-------------------------
173

  
174
Download the meta file of the image (it was uploaded recently)
175

  
176
.. code-block:: console
177

  
178
    [kamaki]: file download pithos:debian_base3.diskdump.meta
179
    Downloading pithos:debian_base3.diskdump.meta --> /home/someuser/debian_base3.diskdump.meta
180
    Done
181
    [kamaki]:
182

  
183
The metadata file can be edited. Let's edit the file, by adding properties::
184

  
185
    OS: Linux
186
    user: root
187

  
188
The resulting file will look like this:
189

  
190
.. code-block:: javascript
191

  
192
    {
193
      "status": "available", 
194
      "name": "Debian Base Gama", 
195
      "checksum": "3cb03556ec971f...e8dd6190443b560cb7", 
196
      "id": "7h1rd-1m4g3-1d2", 
197
      "updated-at": "2013-06-19 08:01:00", 
198
      "created-at": "2013-06-19 08:00:22", 
199
      "properties": {
200
        "OS": "Linux",
201
        "USER": "root"
202
      }, 
203
      "location": "pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump", 
204
      "is-public": "False", 
205
      "owner": "s0m3-u53r-1d", 
206
      "disk-format": "diskdump", 
207
      "size": "903471104", 
208
      "deleted-at": "", 
209
      "container-format": "bare"
210
    }
211

  
212
.. warning:: make sure the file is in a valid json format, otherwise image
213
    register will fail
214

  
215
In the following registration, a different name will be used for the image.
216

  
217
Register the image (don't forget the -f parameter, to override the metafile).
218

  
219
.. code-block:: console
220

  
221
    [kamaki]: image register -f 'Debian Base Delta' pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump --metafile=debian_base3.diskdump.meta
222
    checksum:         3cb03556ec971f...e8dd6190443b560cb7
223
    container-format: bare
224
    created-at:       2013-06-19 08:00:22
225
    deleted-at:       
226
    disk-format:      diskdump
227
    id:               7h1rd-1m4g3-1d
228
    is-public:        False
229
    location:         pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump
230
    name:             Debian Base Delta
231
    owner:            s0m3-u53r-1d
232
    properties:      
233
            OS:     Linux
234
            USER:   root
235
    size:             903471104
236
    status:           available
237
    updated-at:       2013-06-19 08:01:00
238
    Metadata file uploaded as pithos:debian_base3.diskdump.meta (version 1359)
239
    [kamaki]:
240

  
241
Reregistration: priorities and overrides
242
----------------------------------------
243

  
244
Let's review the examples presented above::
245

  
246
    - Register an image with name `Debian Base Gama`
247
    - Unregister the image
248
    - Register a new image of the uploaded image object, with custom properties
249
    - Reregister the image with a meta file and modified properties and name
250

  
251
**The image id is related to the image object**
252

  
253
Although the image was unregistered and reregistered, the image id, that is
254
produced automatically at the server side, was the same. This is due to the
255
fact that image ids are 1 to 1 related to image objects uploaded to Pithos+
256

  
257
**An explicit name overrides the metafile**
258

  
259
Each image needs a name and this is given as the first argument of the
260
`register` command. This name overrides the name in the metafile.
261

  
262
**Reregistration is not update, but an override**
263

  
264
The property `user: root` won over `user: someuser`, because it was set last.
265
Actually, all properties were replaced by the new ones, when the image was
266
reregistered, and the same holds with all customizable attributes of the image.
267

  
268
Command line wins the metafile
269
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
270

  
271
Let's compine the metafile with a command line attribute `user: admin`
272

  
273
.. code-block:: console
274

  
275
    [kamaki]: image register -f 'Debian Base Delta' pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump --metafile=debian_base3.diskdump.meta
276
    checksum:         3cb03556ec971f...e8dd6190443b560cb7
277
    container-format: bare
278
    created-at:       2013-06-19 08:00:22
279
    deleted-at:       
280
    disk-format:      diskdump
281
    id:               7h1rd-1m4g3-1d
282
    is-public:        False
283
    location:         pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump
284
    name:             Debian Base Delta
285
    owner:            s0m3-u53r-1d
286
    properties:      
287
            OS:     Linux
288
            USER:   root
289
    size:             903471104
290
    status:           available
291
    updated-at:       2013-06-19 08:01:00
292
    Metadata file uploaded as pithos:debian_base3.diskdump.meta (version 1377)
293
    [kamaki]:
294

  
295
Although the property `OS` was read from the metafile, the property `USER` was
296
set by the command line property to `admin`.
297

  
298
.. note:: This feature allows the use of a metafile as a template for uploading
299
    multiple images with many common attributes but slight modifications per
300
    image
301

  
302
Multiple metafile versions
303
--------------------------
304

  
305
.. warning:: Make sure your container is set to auto, otherwise, there will be
306
    no object versions
307

  
308
    .. code-block:: console
309

  
310
        [kamaki]: file versioning get pithos
311
        x-container-policy-versioning: auto
312
        [kamaki]:
313

  
314
    To set versioning to auto
315

  
316
    .. code-block:: console
317

  
318
        [kamaki]: file versioning set auto pithos
319
        [kamaki]:
320

  
321
In the above examples, the image was registered many times by overriding the
322
metafile. It is possible to avoid writing a metafile, as well as accessing
323
older versions of the file.
324

  
325
Register the image without uploading a metafile
326

  
327
.. code-block:: console
328

  
329
    [kamaki]: image register 'Debian Base Delta' pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump --metafile=debian_base3.diskdump.meta --no-metafile-upload
330
    checksum:         3cb03556ec971f...e8dd6190443b560cb7
331
    container-format: bare
332
    created-at:       2013-06-19 08:00:22
333
    deleted-at:       
334
    disk-format:      diskdump
335
    id:               7h1rd-1m4g3-1d
336
    is-public:        False
337
    location:         pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump
338
    name:             Debian Base Delta
339
    owner:            s0m3-u53r-1d
340
    properties:      
341
            OS:     Linux
342
            USER:   root
343
    size:             903471104
344
    status:           available
345
    updated-at:       2013-06-19 08:01:00
346
    [kamaki]:
347

  
348
Uploaded metafiles are kept in versions, thanks to Pithos+ versioning support
349

  
350
.. code-block:: console
351

  
352
    [kamaki]: file versions pithos:debian_base3.diskdump.meta
353
    1352
354
     created: 19-06-2013 11:00:22
355
    1359
356
     created: 19-06-2013 11:01:00
357
    1377
358
     created: 19-06-2013 11:34:37
359
    [kamaki]:
360

  
361
Consult the first version of the metafile
362

  
363
.. code-block:: console
364

  
365
    [kamaki]: file cat --object-version=1352 pithos:debian_base3.diskdump.meta
366
    {
367
      "status": "available", 
368
      "name": "Debian Base Gama", 
369
      "checksum": "3cb03556ec971f...e8dd6190443b560cb7", 
370
      "id": "7h1rd-1m4g3-1d2", 
371
      "updated-at": "2013-06-19 08:01:00", 
372
      "created-at": "2013-06-19 08:00:22", 
373
      "properties": {}, 
374
      "location": "pithos://s0m3-u53r-1d/pithos/debian_base3.diskdump", 
375
      "is-public": "False", 
376
      "owner": "s0m3-u53r-1d", 
377
      "disk-format": "diskdump", 
378
      "size": "903471104", 
379
      "deleted-at": "", 
380
      "container-format": "bare"
381
    }
382
    [kamaki]:
383

  
384
Download the second version
385

  
386
.. code-block:: console
387

  
388
    [kamaki]: file download --object-version=1359 pithos:debian_base3.diskdump.meta debian_base3.diskdump.meta.v1359
389
    Downloading pithos:debian_base3.diskdump.meta --> /home/someuser/debian_base3.diskdump.meta.v1359
390
    Done
391
    [kamaki]:
392

  
393
Batch image upload
394
------------------
395

  
396
Let a directory at /home/someuser/images with a variety of images needed to be
397
uploaded and registered.
398

  
399
Batch-upload the images
400

  
401
.. code-block:: console
402

  
403
    [kamaki]: file upload -R images pithos
404
    mkdir pithos:images
405
    Uploading /home/someuser/images/debian.diskdump --> pithos:images/debian.diskdump
406
    Uploading /home/someuser/images/win8.diskdump --> pithos:images/win8.diskdump
407
    ...
408
    Done
409
    [kamaki]:
410

  
411
Make sure the images are uploaded to pithos:images/ remote directory object
412

  
413
.. code-block:: console
414

  
415
    [kamaki]: file list pithos:images/
416
    D       images/
417
    983MB   images/debian.diskdump
418
    2.2GB   images/win8.diskdump
419
    ...
420
    [kamaki]:
421

  
422
Use the host shell capabilities to streamline the registration, so exit kamaki
423

  
424
.. code-block:: console
425

  
426
    [kamaki]: /exit
427

  
428
The following is a bash script that attempts to register the already uploaded
429
images:
430

  
431
.. code-block:: bash
432

  
433
    #!/bin/bash
434

  
435
    userid=... # e.g. s0m3-u53r-1d
436
    container=... # e.g. pithos
437

  
438
    for path in images/*.diskdump; do
439
        location=pithos://$userid/$container/${path}
440
        kamaki image register $path $location
441
    done
442

  
443
Let's use the script (enriched with a separator message) to batch-register the
444
images (all images will be named after their relative paths).
445

  
446
Also, let the registered images be public (accessible to all users for creating
447
VMs) by adding the **--public** flag argument when calling `image register`.
448

  
449
.. code-block:: console
450

  
451
    $ for path in images/*.diskdump; do
452
        location=pithos://s0m3-u53r-1d/pithos/${path}
453
        echo "- - - Register ${path} - - -"
454
        kamaki image register $path $location --public
455
    done
456
    - - - Register images/debian.diskdump ---
457
    checksum:         3cb03556ec971f...e8dd6190443b560cb7
458
    container-format: bare
459
    created-at:       2013-06-19 08:00:22
460
    deleted-at:       
461
    disk-format:      diskdump
462
    id:               d3b14n-1m4g3-1d
463
    is-public:        False
464
    location:         pithos://s0m3-u53r-1d/pithos/images/debian.diskdump
465
    name:             images/debian.diskdump
466
    owner:            s0m3-u53r-1d
467
    properties:
468
    size:             903471104
469
    status:           available
470
    updated-at:       2013-06-19 08:01:00
471
    Metadata file uploaded as pithos:images/debian.diskdump.meta (version 4201)
472
    - - - Register images/win8.diskdump ---
473
    checksum:         4cb03556ec971f...e8dd6190443b560cb6
474
    container-format: bare
475
    created-at:       2013-06-19 08:00:22
476
    deleted-at:       
477
    disk-format:      diskdump
478
    id:               w1nd0w5-1m4g3-1d
479
    is-public:        False
480
    location:         pithos://s0m3-u53r-1d/pithos/images/win8.diskdump
481
    name:             images/win8.diskdump
482
    owner:            s0m3-u53r-1d
483
    properties:
484
    size:             2103471104
485
    status:           available
486
    updated-at:       2013-06-19 08:01:00
487
    Metadata file uploaded as pithos:images/debian.diskdump.meta (version 4301)
488
    ...
489
    $
490

  
491
.. note:: All images can be re-registered, either individually or with a batch
492
    process.
493

  
494

  
b/docs/collection_of_examples/listing.rst
509 509

  
510 510
    [image]: list -l
511 511
    f1r57-1m4g3-1d Debian Base Alpha
512
        checksum:         9344d77620cde1dd77da556e5f72ed4de8533931f86c857b70badda34b26d782
512
        checksum:         9344d77620cde1dd77da...7b70badda34b26d782
513 513
        container_format: bare
514 514
        created_at:       2013-06-03 16:44:16
515 515
        deleted_at:       
516 516
        disk_format:      diskdump
517 517
        is_public:        True
518
        location:         pithos://s0m3-u53r-1d/pithos/debian_base1.diskdump
519
        owner:            s0m3-u53r-1d
518
        location:         pithos://s0m3-5up3r-u53r-1d/pithos/debian_base1.diskdump
519
        owner:            s0m3-5up3r-u53r-1d
520 520
        properties:      
521 521
                    description:    Debian 6.0.6 (Squeeze) Base System
522 522
                    gui:            No GUI
......
530 530
        status:           available
531 531
        updated_at:       2013-06-03 16:44:16
532 532
    53c0nd-1m4g3-1d Beta Debian Base
533
        checksum:         9344d77620cde1dd77da556e5f72ed4de8533931f86c857b70badda34b26d782
533
        checksum:         9344d77620cde1dd77da...7b70badda34b26d782
534 534
        container_format: bare
535 535
        created_at:       2013-06-03 16:44:16
536 536
        deleted_at:       
537 537
        disk_format:      diskdump
538 538
        is_public:        True
539
        location:         pithos://s0m3-u53r-1d/pithos/debian_base2.diskdump
540
        owner:            s0m3-u53r-1d
539
        location:         pithos://s0m3-5up3r-u53r-1d/pithos/debian_base2.diskdump
540
        owner:            s0m3-5up3r-u53r-1d
541 541
        properties:      
542 542
                    description:    Debian 6.0.6 (Squeeze) Base System
543 543
                    gui:            No GUI
......
573 573
          users:          root
574 574
        progress:  100
575 575
        status:    ACTIVE
576
        tenant_id: s0m3-u53r-1d
576
        tenant_id: s0m3-5up3r-u53r-1d
577 577
        updated:   2013-06-03T16:21:53+00:00
578
        user_id:   s0m3-u53r-1d
578
        user_id:   s0m3-5up3r-u53r-1d
579 579
    53c0nd-1m4g3-1d Beta Debian Base
580 580
        created:   2013-06-03T16:21:53+00:00
581 581
        links:    
......
598 598
          users:          root
599 599
        progress:  100
600 600
        status:    ACTIVE
601
        tenant_id: s0m3-u53r-1d
601
        tenant_id: s0m3-5up3r-u53r-1d
602 602
        updated:   2013-06-03T16:21:53+00:00
603
        user_id:   s0m3-u53r-1d
603
        user_id:   s0m3-5up3r-u53r-1d
604 604
    [image]:
605 605

  
606 606
Filter listing by prefix, suffix or words in image names
b/docs/examples.rst
9 9
    collection_of_examples/listing
10 10
    collection_of_examples/updownload
11 11
    collection_of_examples/sharing
12
    collection_of_examples/imageregister
b/kamaki/cli/commands/image.py
438 438
                print('Metadata file uploaded as %s:%s (version %s)' % (
439 439
                    container, meta_path, meta_headers['x-object-version']))
440 440

  
441
    def main(self, name, location=None):
441
    def main(self, name, location):
442 442
        super(self.__class__, self)._run()
443 443
        self._run(name, location)
444 444

  

Also available in: Unified diff