Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / vmapi / __init__.py @ ce55f724

History | View | Annotate | Download (2.1 kB)

1 724e17a6 Kostas Papadimitriou
# Copyright 2012 GRNET S.A. All rights reserved.
2 724e17a6 Kostas Papadimitriou
#
3 724e17a6 Kostas Papadimitriou
# Redistribution and use in source and binary forms, with or
4 724e17a6 Kostas Papadimitriou
# without modification, are permitted provided that the following
5 724e17a6 Kostas Papadimitriou
# conditions are met:
6 724e17a6 Kostas Papadimitriou
#
7 724e17a6 Kostas Papadimitriou
#   1. Redistributions of source code must retain the above
8 724e17a6 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
9 724e17a6 Kostas Papadimitriou
#      disclaimer.
10 724e17a6 Kostas Papadimitriou
#
11 724e17a6 Kostas Papadimitriou
#   2. Redistributions in binary form must reproduce the above
12 724e17a6 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
13 724e17a6 Kostas Papadimitriou
#      disclaimer in the documentation and/or other materials
14 724e17a6 Kostas Papadimitriou
#      provided with the distribution.
15 724e17a6 Kostas Papadimitriou
#
16 724e17a6 Kostas Papadimitriou
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 724e17a6 Kostas Papadimitriou
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 724e17a6 Kostas Papadimitriou
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 724e17a6 Kostas Papadimitriou
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 724e17a6 Kostas Papadimitriou
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 724e17a6 Kostas Papadimitriou
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 724e17a6 Kostas Papadimitriou
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 724e17a6 Kostas Papadimitriou
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 724e17a6 Kostas Papadimitriou
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 724e17a6 Kostas Papadimitriou
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 724e17a6 Kostas Papadimitriou
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 724e17a6 Kostas Papadimitriou
# POSSIBILITY OF SUCH DAMAGE.
28 724e17a6 Kostas Papadimitriou
#
29 724e17a6 Kostas Papadimitriou
# The views and conclusions contained in the software and
30 724e17a6 Kostas Papadimitriou
# documentation are those of the authors and should not be
31 724e17a6 Kostas Papadimitriou
# interpreted as representing official policies, either expressed
32 724e17a6 Kostas Papadimitriou
# or implied, of GRNET S.A.
33 724e17a6 Kostas Papadimitriou
34 724e17a6 Kostas Papadimitriou
from uuid import uuid4
35 724e17a6 Kostas Papadimitriou
36 724e17a6 Kostas Papadimitriou
from django.core.cache import get_cache
37 724e17a6 Kostas Papadimitriou
from django.core import signals
38 724e17a6 Kostas Papadimitriou
39 027e437a Kostas Papadimitriou
from synnefo.vmapi.settings import CACHE_KEY_PREFIX, CACHE_BACKEND
40 724e17a6 Kostas Papadimitriou
41 68b952f9 Christos Stavrakakis
42 724e17a6 Kostas Papadimitriou
def get_uuid():
43 724e17a6 Kostas Papadimitriou
    return str(uuid4())
44 724e17a6 Kostas Papadimitriou
45 68b952f9 Christos Stavrakakis
46 724e17a6 Kostas Papadimitriou
def get_key(*args):
47 724e17a6 Kostas Papadimitriou
    args = map(str, filter(bool, list(args)))
48 724e17a6 Kostas Papadimitriou
    args.insert(0, CACHE_KEY_PREFIX)
49 724e17a6 Kostas Papadimitriou
    return "_".join(args)
50 724e17a6 Kostas Papadimitriou
51 724e17a6 Kostas Papadimitriou
# initialize serverparams cache backend
52 724e17a6 Kostas Papadimitriou
backend = get_cache(CACHE_BACKEND)
53 724e17a6 Kostas Papadimitriou
54 724e17a6 Kostas Papadimitriou
# Some caches -- pythont-memcached in particular -- need to do a cleanup at the
55 724e17a6 Kostas Papadimitriou
# end of a request cycle. If the cache provides a close() method, wire it up
56 724e17a6 Kostas Papadimitriou
# here.
57 724e17a6 Kostas Papadimitriou
if hasattr(backend, 'close'):
58 724e17a6 Kostas Papadimitriou
    signals.request_finished.connect(backend.close)