Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / volume / util.py @ 63338c2d

History | View | Annotate | Download (1.3 kB)

1
from synnefo.db import models
2
from snf_django.lib.api import faults
3
from synnefo.api.util import get_image_dict, get_vm, image_backend
4

    
5

    
6
def get_volume(user_id, volume_id, for_update=False,
7
               exception=faults.ItemNotFound):
8
    volumes = models.Volume.objects
9
    if for_update:
10
        volumes = volumes.select_for_update()
11
    try:
12
        return volumes.get(id=volume_id, userid=user_id)
13
    except models.Volume.DoesNotExist:
14
        raise exception("Volume %s not found" % volume_id)
15

    
16

    
17
def get_snapshot(user_id, snapshot_id, exception=faults.ItemNotFound):
18
    try:
19
        with image_backend(user_id) as b:
20
            return b.get_snapshot(user_id, snapshot_id)
21
    except faults.ItemNotFound:
22
        raise exception("Snapshot %s not found" % snapshot_id)
23

    
24

    
25
def get_image(user_id, image_id, exception=faults.ItemNotFound):
26
    try:
27
        return get_image_dict(image_id, user_id)
28
    except faults.ItemNotFound:
29
        raise exception("Image %s not found" % image_id)
30

    
31

    
32
def get_server(user_id, server_id, for_update=False,
33
               exception=faults.ItemNotFound):
34
    try:
35
        return get_vm(server_id, user_id, for_update=for_update,
36
                      non_deleted=True, non_suspended=True)
37
    except faults.ItemNotFound:
38
        raise exception("Server %s not found" % server_id)