Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / cyclades_settings.py @ 5858e64a

History | View | Annotate | Download (5 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 74c62d99 Ilias Tsitsimpis
import logging
35 74c62d99 Ilias Tsitsimpis
36 e3ff6830 Georgios D. Tsoukalas
from django.conf import settings
37 e3ff6830 Georgios D. Tsoukalas
from synnefo.lib import join_urls, parse_base_url
38 5858e64a Giorgos Korfiatis
from synnefo.util.keypath import get_path, set_path
39 3ab15f84 Georgios D. Tsoukalas
from synnefo.api.services import cyclades_services as vanilla_cyclades_services
40 4080a1df Georgios D. Tsoukalas
from synnefo.lib.services import fill_endpoints
41 e407f159 Ilias Tsitsimpis
from astakosclient import AstakosClient
42 3ab15f84 Georgios D. Tsoukalas
43 3ab15f84 Georgios D. Tsoukalas
from copy import deepcopy
44 e3ff6830 Georgios D. Tsoukalas
45 00d2a0ee Georgios D. Tsoukalas
46 74c62d99 Ilias Tsitsimpis
logger = logging.getLogger(__name__)
47 74c62d99 Ilias Tsitsimpis
48 e407f159 Ilias Tsitsimpis
# --------------------------------------------------------------------
49 00d2a0ee Georgios D. Tsoukalas
# Process Cyclades settings
50 00d2a0ee Georgios D. Tsoukalas
51 e3ff6830 Georgios D. Tsoukalas
BASE_URL = getattr(settings, 'CYCLADES_BASE_URL',
52 e3ff6830 Georgios D. Tsoukalas
                   'https://compute.example.synnefo.org/compute/')
53 e3ff6830 Georgios D. Tsoukalas
BASE_HOST, BASE_PATH = parse_base_url(BASE_URL)
54 e407f159 Ilias Tsitsimpis
SERVICE_TOKEN = getattr(settings, 'CYCLADES_SERVICE_TOKEN', "")
55 e3ff6830 Georgios D. Tsoukalas
56 3ab15f84 Georgios D. Tsoukalas
CUSTOMIZE_SERVICES = getattr(settings, 'CYCLADES_CUSTOMIZE_SERVICES', ())
57 3ab15f84 Georgios D. Tsoukalas
cyclades_services = deepcopy(vanilla_cyclades_services)
58 4080a1df Georgios D. Tsoukalas
fill_endpoints(cyclades_services, BASE_URL)
59 3ab15f84 Georgios D. Tsoukalas
for path, value in CUSTOMIZE_SERVICES:
60 5858e64a Giorgos Korfiatis
    set_path(cyclades_services, path, value, createpath=True)
61 5858e64a Giorgos Korfiatis
62 5858e64a Giorgos Korfiatis
COMPUTE_PREFIX = get_path(cyclades_services, 'cyclades_compute.prefix')
63 5858e64a Giorgos Korfiatis
NETWORK_PREFIX = get_path(cyclades_services, 'cyclades_network.prefix')
64 5858e64a Giorgos Korfiatis
VMAPI_PREFIX = get_path(cyclades_services, 'cyclades_vmapi.prefix')
65 5858e64a Giorgos Korfiatis
PLANKTON_PREFIX = get_path(cyclades_services, 'cyclades_plankton.prefix')
66 5858e64a Giorgos Korfiatis
HELPDESK_PREFIX = get_path(cyclades_services, 'cyclades_helpdesk.prefix')
67 5858e64a Giorgos Korfiatis
UI_PREFIX = get_path(cyclades_services, 'cyclades_ui.prefix')
68 5858e64a Giorgos Korfiatis
USERDATA_PREFIX = get_path(cyclades_services, 'cyclades_userdata.prefix')
69 5858e64a Giorgos Korfiatis
ADMIN_PREFIX = get_path(cyclades_services, 'cyclades_admin.prefix')
70 3ab15f84 Georgios D. Tsoukalas
71 00d2a0ee Georgios D. Tsoukalas
COMPUTE_ROOT_URL = join_urls(BASE_URL, COMPUTE_PREFIX)
72 00d2a0ee Georgios D. Tsoukalas
73 00d2a0ee Georgios D. Tsoukalas
74 e407f159 Ilias Tsitsimpis
# --------------------------------------------------------------------
75 00d2a0ee Georgios D. Tsoukalas
# Process Astakos settings
76 00d2a0ee Georgios D. Tsoukalas
77 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_URL = getattr(
78 e407f159 Ilias Tsitsimpis
    settings, 'ASTAKOS_AUTH_URL',
79 6ce03057 Giorgos Korfiatis
    'https://accounts.example.synnefo.org/astakos/identity/v2.0')
80 e407f159 Ilias Tsitsimpis
81 e407f159 Ilias Tsitsimpis
82 e407f159 Ilias Tsitsimpis
# --------------------------------------
83 e407f159 Ilias Tsitsimpis
# Define a LazyAstakosUrl
84 74c62d99 Ilias Tsitsimpis
# This is used to define ASTAKOS_ACCOUNT_URL and
85 74c62d99 Ilias Tsitsimpis
# ASTAKOS_UI_URL and should never be used as is.
86 e407f159 Ilias Tsitsimpis
class LazyAstakosUrl(object):
87 e407f159 Ilias Tsitsimpis
    def __init__(self, endpoints_name):
88 e407f159 Ilias Tsitsimpis
        self.endpoints_name = endpoints_name
89 e407f159 Ilias Tsitsimpis
90 e407f159 Ilias Tsitsimpis
    def __str__(self):
91 e407f159 Ilias Tsitsimpis
        if not hasattr(self, 'str'):
92 e407f159 Ilias Tsitsimpis
            try:
93 e407f159 Ilias Tsitsimpis
                astakos_client = \
94 e407f159 Ilias Tsitsimpis
                    AstakosClient(SERVICE_TOKEN, ASTAKOS_AUTH_URL)
95 e407f159 Ilias Tsitsimpis
                self.str = getattr(astakos_client, self.endpoints_name)
96 74c62d99 Ilias Tsitsimpis
            except Exception as excpt:
97 74c62d99 Ilias Tsitsimpis
                logger.exception(
98 74c62d99 Ilias Tsitsimpis
                    "Could not retrieve endpoints from Astakos url %s: %s",
99 74c62d99 Ilias Tsitsimpis
                    ASTAKOS_AUTH_URL, excpt)
100 74c62d99 Ilias Tsitsimpis
                return ""
101 e407f159 Ilias Tsitsimpis
        return self.str
102 e407f159 Ilias Tsitsimpis
103 e407f159 Ilias Tsitsimpis
# --------------------------------------
104 e407f159 Ilias Tsitsimpis
# Define ASTAKOS_UI_URL and ASTAKOS_ACCOUNT_URL as LazyAstakosUrl
105 74c62d99 Ilias Tsitsimpis
# These are used to define the proxy paths.
106 74c62d99 Ilias Tsitsimpis
# These have to be resolved lazily (by the proxy function) so
107 74c62d99 Ilias Tsitsimpis
# they should not be used as is.
108 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_URL = LazyAstakosUrl('account_url')
109 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_URL = LazyAstakosUrl('ui_url')
110 e407f159 Ilias Tsitsimpis
111 e407f159 Ilias Tsitsimpis
# --------------------------------------
112 e407f159 Ilias Tsitsimpis
# Define Astakos prefixes
113 e407f159 Ilias Tsitsimpis
ASTAKOS_PROXY_PREFIX = getattr(settings, 'CYCLADES_PROXY_PREFIX', '_astakos')
114 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'identity')
115 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'account')
116 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'ui')
117 e407f159 Ilias Tsitsimpis
118 e407f159 Ilias Tsitsimpis
# --------------------------------------
119 e407f159 Ilias Tsitsimpis
# Define Astakos proxy paths
120 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_AUTH_PREFIX)
121 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_ACCOUNT_PREFIX)
122 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_UI_PREFIX)