Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / cyclades_settings.py @ c204fcff

History | View | Annotate | Download (5.1 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 4d6a9408 Kostas Papadimitriou
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 3ab15f84 Georgios D. Tsoukalas
    set_path(cyclades_services, path, value, createpath=True)
61 3ab15f84 Georgios D. Tsoukalas
62 3ab15f84 Georgios D. Tsoukalas
COMPUTE_PREFIX = get_path(cyclades_services, 'cyclades_compute.prefix')
63 cdd6fc06 Christos Stavrakakis
NETWORK_PREFIX = get_path(cyclades_services, 'cyclades_network.prefix')
64 3ab15f84 Georgios D. Tsoukalas
VMAPI_PREFIX = get_path(cyclades_services, 'cyclades_vmapi.prefix')
65 3ab15f84 Georgios D. Tsoukalas
PLANKTON_PREFIX = get_path(cyclades_services, 'cyclades_plankton.prefix')
66 3ab15f84 Georgios D. Tsoukalas
HELPDESK_PREFIX = get_path(cyclades_services, 'cyclades_helpdesk.prefix')
67 c204fcff Alex Pyrgiotis
ADMIN_INTERFACE_PREFIX = get_path(cyclades_services, 'cyclades_admin_interface.prefix')
68 3ab15f84 Georgios D. Tsoukalas
UI_PREFIX = get_path(cyclades_services, 'cyclades_ui.prefix')
69 3ab15f84 Georgios D. Tsoukalas
USERDATA_PREFIX = get_path(cyclades_services, 'cyclades_userdata.prefix')
70 4a8667dc Christos Stavrakakis
ADMIN_PREFIX = get_path(cyclades_services, 'cyclades_admin.prefix')
71 3ab15f84 Georgios D. Tsoukalas
72 00d2a0ee Georgios D. Tsoukalas
COMPUTE_ROOT_URL = join_urls(BASE_URL, COMPUTE_PREFIX)
73 00d2a0ee Georgios D. Tsoukalas
74 00d2a0ee Georgios D. Tsoukalas
75 e407f159 Ilias Tsitsimpis
# --------------------------------------------------------------------
76 00d2a0ee Georgios D. Tsoukalas
# Process Astakos settings
77 00d2a0ee Georgios D. Tsoukalas
78 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_URL = getattr(
79 e407f159 Ilias Tsitsimpis
    settings, 'ASTAKOS_AUTH_URL',
80 6ce03057 Giorgos Korfiatis
    'https://accounts.example.synnefo.org/astakos/identity/v2.0')
81 e407f159 Ilias Tsitsimpis
82 e407f159 Ilias Tsitsimpis
83 e407f159 Ilias Tsitsimpis
# --------------------------------------
84 e407f159 Ilias Tsitsimpis
# Define a LazyAstakosUrl
85 74c62d99 Ilias Tsitsimpis
# This is used to define ASTAKOS_ACCOUNT_URL and
86 74c62d99 Ilias Tsitsimpis
# ASTAKOS_UI_URL and should never be used as is.
87 e407f159 Ilias Tsitsimpis
class LazyAstakosUrl(object):
88 e407f159 Ilias Tsitsimpis
    def __init__(self, endpoints_name):
89 e407f159 Ilias Tsitsimpis
        self.endpoints_name = endpoints_name
90 e407f159 Ilias Tsitsimpis
91 e407f159 Ilias Tsitsimpis
    def __str__(self):
92 e407f159 Ilias Tsitsimpis
        if not hasattr(self, 'str'):
93 e407f159 Ilias Tsitsimpis
            try:
94 e407f159 Ilias Tsitsimpis
                astakos_client = \
95 e407f159 Ilias Tsitsimpis
                    AstakosClient(SERVICE_TOKEN, ASTAKOS_AUTH_URL)
96 e407f159 Ilias Tsitsimpis
                self.str = getattr(astakos_client, self.endpoints_name)
97 74c62d99 Ilias Tsitsimpis
            except Exception as excpt:
98 74c62d99 Ilias Tsitsimpis
                logger.exception(
99 74c62d99 Ilias Tsitsimpis
                    "Could not retrieve endpoints from Astakos url %s: %s",
100 74c62d99 Ilias Tsitsimpis
                    ASTAKOS_AUTH_URL, excpt)
101 74c62d99 Ilias Tsitsimpis
                return ""
102 e407f159 Ilias Tsitsimpis
        return self.str
103 e407f159 Ilias Tsitsimpis
104 e407f159 Ilias Tsitsimpis
# --------------------------------------
105 e407f159 Ilias Tsitsimpis
# Define ASTAKOS_UI_URL and ASTAKOS_ACCOUNT_URL as LazyAstakosUrl
106 74c62d99 Ilias Tsitsimpis
# These are used to define the proxy paths.
107 74c62d99 Ilias Tsitsimpis
# These have to be resolved lazily (by the proxy function) so
108 74c62d99 Ilias Tsitsimpis
# they should not be used as is.
109 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_URL = LazyAstakosUrl('account_url')
110 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_URL = LazyAstakosUrl('ui_url')
111 e407f159 Ilias Tsitsimpis
112 e407f159 Ilias Tsitsimpis
# --------------------------------------
113 e407f159 Ilias Tsitsimpis
# Define Astakos prefixes
114 e407f159 Ilias Tsitsimpis
ASTAKOS_PROXY_PREFIX = getattr(settings, 'CYCLADES_PROXY_PREFIX', '_astakos')
115 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'identity')
116 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'account')
117 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'ui')
118 e407f159 Ilias Tsitsimpis
119 e407f159 Ilias Tsitsimpis
# --------------------------------------
120 e407f159 Ilias Tsitsimpis
# Define Astakos proxy paths
121 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_AUTH_PREFIX)
122 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_ACCOUNT_PREFIX)
123 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_UI_PREFIX)