root / snf-cyclades-app / synnefo / volume / util.py @ 58194535
History | View | Annotate | Download (2.4 kB)
1 | dec501fa | Christos Stavrakakis | from synnefo.db import models |
---|---|---|---|
2 | dec501fa | Christos Stavrakakis | from snf_django.lib.api import faults |
3 | e7953d63 | Christos Stavrakakis | from synnefo.api.util import get_image_dict, get_vm, image_backend |
4 | 5f90e24c | Christos Stavrakakis | from synnefo.cyclades_settings import cyclades_services, BASE_HOST |
5 | 5f90e24c | Christos Stavrakakis | from synnefo.lib import join_urls |
6 | 5f90e24c | Christos Stavrakakis | from synnefo.lib.services import get_service_path |
7 | dec501fa | Christos Stavrakakis | |
8 | dec501fa | Christos Stavrakakis | |
9 | dec501fa | Christos Stavrakakis | def get_volume(user_id, volume_id, for_update=False, |
10 | dec501fa | Christos Stavrakakis | exception=faults.ItemNotFound): |
11 | dec501fa | Christos Stavrakakis | volumes = models.Volume.objects |
12 | dec501fa | Christos Stavrakakis | if for_update:
|
13 | dec501fa | Christos Stavrakakis | volumes = volumes.select_for_update() |
14 | dec501fa | Christos Stavrakakis | try:
|
15 | dec501fa | Christos Stavrakakis | return volumes.get(id=volume_id, userid=user_id)
|
16 | dec501fa | Christos Stavrakakis | except models.Volume.DoesNotExist:
|
17 | dec501fa | Christos Stavrakakis | raise exception("Volume %s not found" % volume_id) |
18 | dec501fa | Christos Stavrakakis | |
19 | dec501fa | Christos Stavrakakis | |
20 | dec501fa | Christos Stavrakakis | def get_snapshot(user_id, snapshot_id, exception=faults.ItemNotFound): |
21 | 63338c2d | Christos Stavrakakis | try:
|
22 | 63338c2d | Christos Stavrakakis | with image_backend(user_id) as b: |
23 | 63338c2d | Christos Stavrakakis | return b.get_snapshot(user_id, snapshot_id)
|
24 | 63338c2d | Christos Stavrakakis | except faults.ItemNotFound:
|
25 | 63338c2d | Christos Stavrakakis | raise exception("Snapshot %s not found" % snapshot_id) |
26 | dec501fa | Christos Stavrakakis | |
27 | dec501fa | Christos Stavrakakis | |
28 | dec501fa | Christos Stavrakakis | def get_image(user_id, image_id, exception=faults.ItemNotFound): |
29 | dec501fa | Christos Stavrakakis | try:
|
30 | dec501fa | Christos Stavrakakis | return get_image_dict(image_id, user_id)
|
31 | dec501fa | Christos Stavrakakis | except faults.ItemNotFound:
|
32 | dec501fa | Christos Stavrakakis | raise exception("Image %s not found" % image_id) |
33 | dec501fa | Christos Stavrakakis | |
34 | dec501fa | Christos Stavrakakis | |
35 | dec501fa | Christos Stavrakakis | def get_server(user_id, server_id, for_update=False, |
36 | dec501fa | Christos Stavrakakis | exception=faults.ItemNotFound): |
37 | dec501fa | Christos Stavrakakis | try:
|
38 | dec501fa | Christos Stavrakakis | return get_vm(server_id, user_id, for_update=for_update,
|
39 | dec501fa | Christos Stavrakakis | non_deleted=True, non_suspended=True) |
40 | dec501fa | Christos Stavrakakis | except faults.ItemNotFound:
|
41 | dec501fa | Christos Stavrakakis | raise exception("Server %s not found" % server_id) |
42 | 5f90e24c | Christos Stavrakakis | |
43 | 5f90e24c | Christos Stavrakakis | |
44 | 5f90e24c | Christos Stavrakakis | VOLUME_URL = \ |
45 | 5f90e24c | Christos Stavrakakis | join_urls(BASE_HOST, |
46 | 5f90e24c | Christos Stavrakakis | get_service_path(cyclades_services, "volume", version="v2.0")) |
47 | 5f90e24c | Christos Stavrakakis | |
48 | 5f90e24c | Christos Stavrakakis | VOLUMES_URL = join_urls(VOLUME_URL, "volumes/")
|
49 | 5f90e24c | Christos Stavrakakis | SNAPSHOTS_URL = join_urls(VOLUME_URL, "snapshots/")
|
50 | 5f90e24c | Christos Stavrakakis | |
51 | 5f90e24c | Christos Stavrakakis | |
52 | 5f90e24c | Christos Stavrakakis | def volume_to_links(volume_id): |
53 | 5f90e24c | Christos Stavrakakis | href = join_urls(VOLUMES_URL, str(volume_id))
|
54 | 5f90e24c | Christos Stavrakakis | return [{"rel": rel, "href": href} for rel in ("self", "bookmark")] |
55 | 5f90e24c | Christos Stavrakakis | |
56 | 5f90e24c | Christos Stavrakakis | |
57 | 5f90e24c | Christos Stavrakakis | def snapshot_to_links(snapshot_id): |
58 | 5f90e24c | Christos Stavrakakis | href = join_urls(SNAPSHOTS_URL, str(snapshot_id))
|
59 | 5f90e24c | Christos Stavrakakis | return [{"rel": rel, "href": href} for rel in ("self", "bookmark")] |
60 | 58194535 | Christos Stavrakakis | |
61 | 58194535 | Christos Stavrakakis | |
62 | 58194535 | Christos Stavrakakis | def get_disk_template_provider(disk_template): |
63 | 58194535 | Christos Stavrakakis | """Extract provider from disk template.
|
64 | 58194535 | Christos Stavrakakis |
|
65 | 58194535 | Christos Stavrakakis | Provider for `ext` disk_template is encoded in the disk template
|
66 | 58194535 | Christos Stavrakakis | name, which is formed `ext_<provider_name>`. Provider is None
|
67 | 58194535 | Christos Stavrakakis | for all other disk templates.
|
68 | 58194535 | Christos Stavrakakis |
|
69 | 58194535 | Christos Stavrakakis | """
|
70 | 58194535 | Christos Stavrakakis | provider = None
|
71 | 58194535 | Christos Stavrakakis | if disk_template.startswith("ext") and "_" in disk_template: |
72 | 58194535 | Christos Stavrakakis | disk_template, provider = disk_template.split("_", 1) |
73 | 58194535 | Christos Stavrakakis | return disk_template, provider |