Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / cyclades_settings.py @ 57c57b88

History | View | Annotate | Download (4.6 kB)

1 e3ff6830 Georgios D. Tsoukalas
# Copyright 2013 GRNET S.A. All rights reserved.
2 e3ff6830 Georgios D. Tsoukalas
#
3 e3ff6830 Georgios D. Tsoukalas
# Redistribution and use in source and binary forms, with or
4 e3ff6830 Georgios D. Tsoukalas
# without modification, are permitted provided that the following
5 e3ff6830 Georgios D. Tsoukalas
# conditions are met:
6 e3ff6830 Georgios D. Tsoukalas
#
7 e3ff6830 Georgios D. Tsoukalas
#   1. Redistributions of source code must retain the above
8 e3ff6830 Georgios D. Tsoukalas
#      copyright notice, this list of conditions and the following
9 e3ff6830 Georgios D. Tsoukalas
#      disclaimer.
10 e3ff6830 Georgios D. Tsoukalas
#
11 e3ff6830 Georgios D. Tsoukalas
#   2. Redistributions in binary form must reproduce the above
12 e3ff6830 Georgios D. Tsoukalas
#      copyright notice, this list of conditions and the following
13 e3ff6830 Georgios D. Tsoukalas
#      disclaimer in the documentation and/or other materials
14 e3ff6830 Georgios D. Tsoukalas
#      provided with the distribution.
15 e3ff6830 Georgios D. Tsoukalas
#
16 e3ff6830 Georgios D. Tsoukalas
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 e3ff6830 Georgios D. Tsoukalas
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 e3ff6830 Georgios D. Tsoukalas
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 e3ff6830 Georgios D. Tsoukalas
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 e3ff6830 Georgios D. Tsoukalas
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 e3ff6830 Georgios D. Tsoukalas
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 e3ff6830 Georgios D. Tsoukalas
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 e3ff6830 Georgios D. Tsoukalas
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 e3ff6830 Georgios D. Tsoukalas
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 e3ff6830 Georgios D. Tsoukalas
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 e3ff6830 Georgios D. Tsoukalas
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 e3ff6830 Georgios D. Tsoukalas
# POSSIBILITY OF SUCH DAMAGE.
28 e3ff6830 Georgios D. Tsoukalas
#
29 e3ff6830 Georgios D. Tsoukalas
# The views and conclusions contained in the software and
30 e3ff6830 Georgios D. Tsoukalas
# documentation are those of the authors and should not be
31 e3ff6830 Georgios D. Tsoukalas
# interpreted as representing official policies, either expressed
32 e3ff6830 Georgios D. Tsoukalas
# or implied, of GRNET S.A.
33 e3ff6830 Georgios D. Tsoukalas
34 e3ff6830 Georgios D. Tsoukalas
from django.conf import settings
35 e3ff6830 Georgios D. Tsoukalas
from synnefo.lib import join_urls, parse_base_url
36 4d6a9408 Kostas Papadimitriou
from synnefo.util.keypath import get_path, set_path
37 3ab15f84 Georgios D. Tsoukalas
from synnefo.api.services import cyclades_services as vanilla_cyclades_services
38 4080a1df Georgios D. Tsoukalas
from synnefo.lib.services import fill_endpoints
39 e407f159 Ilias Tsitsimpis
from astakosclient import AstakosClient
40 3ab15f84 Georgios D. Tsoukalas
41 3ab15f84 Georgios D. Tsoukalas
from copy import deepcopy
42 e3ff6830 Georgios D. Tsoukalas
43 00d2a0ee Georgios D. Tsoukalas
44 e407f159 Ilias Tsitsimpis
# --------------------------------------------------------------------
45 00d2a0ee Georgios D. Tsoukalas
# Process Cyclades settings
46 00d2a0ee Georgios D. Tsoukalas
47 e3ff6830 Georgios D. Tsoukalas
BASE_URL = getattr(settings, 'CYCLADES_BASE_URL',
48 e3ff6830 Georgios D. Tsoukalas
                   'https://compute.example.synnefo.org/compute/')
49 e3ff6830 Georgios D. Tsoukalas
BASE_HOST, BASE_PATH = parse_base_url(BASE_URL)
50 e407f159 Ilias Tsitsimpis
SERVICE_TOKEN = getattr(settings, 'CYCLADES_SERVICE_TOKEN', "")
51 e3ff6830 Georgios D. Tsoukalas
52 3ab15f84 Georgios D. Tsoukalas
CUSTOMIZE_SERVICES = getattr(settings, 'CYCLADES_CUSTOMIZE_SERVICES', ())
53 3ab15f84 Georgios D. Tsoukalas
cyclades_services = deepcopy(vanilla_cyclades_services)
54 4080a1df Georgios D. Tsoukalas
fill_endpoints(cyclades_services, BASE_URL)
55 3ab15f84 Georgios D. Tsoukalas
for path, value in CUSTOMIZE_SERVICES:
56 3ab15f84 Georgios D. Tsoukalas
    set_path(cyclades_services, path, value, createpath=True)
57 3ab15f84 Georgios D. Tsoukalas
58 3ab15f84 Georgios D. Tsoukalas
COMPUTE_PREFIX = get_path(cyclades_services, 'cyclades_compute.prefix')
59 cdd6fc06 Christos Stavrakakis
NETWORK_PREFIX = get_path(cyclades_services, 'cyclades_network.prefix')
60 3ab15f84 Georgios D. Tsoukalas
VMAPI_PREFIX = get_path(cyclades_services, 'cyclades_vmapi.prefix')
61 3ab15f84 Georgios D. Tsoukalas
PLANKTON_PREFIX = get_path(cyclades_services, 'cyclades_plankton.prefix')
62 3ab15f84 Georgios D. Tsoukalas
HELPDESK_PREFIX = get_path(cyclades_services, 'cyclades_helpdesk.prefix')
63 3ab15f84 Georgios D. Tsoukalas
UI_PREFIX = get_path(cyclades_services, 'cyclades_ui.prefix')
64 3ab15f84 Georgios D. Tsoukalas
USERDATA_PREFIX = get_path(cyclades_services, 'cyclades_userdata.prefix')
65 4a8667dc Christos Stavrakakis
ADMIN_PREFIX = get_path(cyclades_services, 'cyclades_admin.prefix')
66 3ab15f84 Georgios D. Tsoukalas
67 00d2a0ee Georgios D. Tsoukalas
COMPUTE_ROOT_URL = join_urls(BASE_URL, COMPUTE_PREFIX)
68 00d2a0ee Georgios D. Tsoukalas
69 00d2a0ee Georgios D. Tsoukalas
70 e407f159 Ilias Tsitsimpis
# --------------------------------------------------------------------
71 00d2a0ee Georgios D. Tsoukalas
# Process Astakos settings
72 00d2a0ee Georgios D. Tsoukalas
73 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_URL = getattr(
74 e407f159 Ilias Tsitsimpis
    settings, 'ASTAKOS_AUTH_URL',
75 6ce03057 Giorgos Korfiatis
    'https://accounts.example.synnefo.org/astakos/identity/v2.0')
76 e407f159 Ilias Tsitsimpis
77 e407f159 Ilias Tsitsimpis
78 e407f159 Ilias Tsitsimpis
# --------------------------------------
79 e407f159 Ilias Tsitsimpis
# Define a LazyAstakosUrl
80 e407f159 Ilias Tsitsimpis
class LazyAstakosUrl(object):
81 e407f159 Ilias Tsitsimpis
    def __init__(self, endpoints_name):
82 e407f159 Ilias Tsitsimpis
        self.endpoints_name = endpoints_name
83 e407f159 Ilias Tsitsimpis
84 e407f159 Ilias Tsitsimpis
    def __str__(self):
85 e407f159 Ilias Tsitsimpis
        if not hasattr(self, 'str'):
86 e407f159 Ilias Tsitsimpis
            try:
87 e407f159 Ilias Tsitsimpis
                astakos_client = \
88 e407f159 Ilias Tsitsimpis
                    AstakosClient(SERVICE_TOKEN, ASTAKOS_AUTH_URL)
89 e407f159 Ilias Tsitsimpis
                self.str = getattr(astakos_client, self.endpoints_name)
90 e407f159 Ilias Tsitsimpis
            except:
91 e407f159 Ilias Tsitsimpis
                return None
92 e407f159 Ilias Tsitsimpis
        return self.str
93 e407f159 Ilias Tsitsimpis
94 e407f159 Ilias Tsitsimpis
# --------------------------------------
95 e407f159 Ilias Tsitsimpis
# Define ASTAKOS_UI_URL and ASTAKOS_ACCOUNT_URL as LazyAstakosUrl
96 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_URL = LazyAstakosUrl('account_url')
97 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_URL = LazyAstakosUrl('ui_url')
98 e407f159 Ilias Tsitsimpis
99 e407f159 Ilias Tsitsimpis
# --------------------------------------
100 e407f159 Ilias Tsitsimpis
# Define Astakos prefixes
101 e407f159 Ilias Tsitsimpis
ASTAKOS_PROXY_PREFIX = getattr(settings, 'CYCLADES_PROXY_PREFIX', '_astakos')
102 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'identity')
103 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'account')
104 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'ui')
105 e407f159 Ilias Tsitsimpis
106 e407f159 Ilias Tsitsimpis
# --------------------------------------
107 e407f159 Ilias Tsitsimpis
# Define Astakos proxy paths
108 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_AUTH_PREFIX)
109 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_ACCOUNT_PREFIX)
110 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_UI_PREFIX)