Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / cyclades_settings.py @ 1ec2f17e

History | View | Annotate | Download (4.7 kB)

1 ff5edb80 Giorgos Korfiatis
# Copyright 2013-2014 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 3ab15f84 Georgios D. Tsoukalas
from synnefo.api.services import cyclades_services as vanilla_cyclades_services
39 4080a1df Georgios D. Tsoukalas
from synnefo.lib.services import fill_endpoints
40 e407f159 Ilias Tsitsimpis
from astakosclient import AstakosClient
41 3ab15f84 Georgios D. Tsoukalas
42 3ab15f84 Georgios D. Tsoukalas
from copy import deepcopy
43 e3ff6830 Georgios D. Tsoukalas
44 00d2a0ee Georgios D. Tsoukalas
45 74c62d99 Ilias Tsitsimpis
logger = logging.getLogger(__name__)
46 74c62d99 Ilias Tsitsimpis
47 e407f159 Ilias Tsitsimpis
# --------------------------------------------------------------------
48 00d2a0ee Georgios D. Tsoukalas
# Process Cyclades settings
49 00d2a0ee Georgios D. Tsoukalas
50 e3ff6830 Georgios D. Tsoukalas
BASE_URL = getattr(settings, 'CYCLADES_BASE_URL',
51 e3ff6830 Georgios D. Tsoukalas
                   'https://compute.example.synnefo.org/compute/')
52 e3ff6830 Georgios D. Tsoukalas
BASE_HOST, BASE_PATH = parse_base_url(BASE_URL)
53 e407f159 Ilias Tsitsimpis
SERVICE_TOKEN = getattr(settings, 'CYCLADES_SERVICE_TOKEN', "")
54 e3ff6830 Georgios D. Tsoukalas
55 3ab15f84 Georgios D. Tsoukalas
cyclades_services = deepcopy(vanilla_cyclades_services)
56 4080a1df Georgios D. Tsoukalas
fill_endpoints(cyclades_services, BASE_URL)
57 9c6d629f Giorgos Korfiatis
58 9c6d629f Giorgos Korfiatis
COMPUTE_PREFIX = cyclades_services['cyclades_compute']['prefix']
59 9c6d629f Giorgos Korfiatis
NETWORK_PREFIX = cyclades_services['cyclades_network']['prefix']
60 9c6d629f Giorgos Korfiatis
VMAPI_PREFIX = cyclades_services['cyclades_vmapi']['prefix']
61 9c6d629f Giorgos Korfiatis
PLANKTON_PREFIX = cyclades_services['cyclades_plankton']['prefix']
62 9c6d629f Giorgos Korfiatis
HELPDESK_PREFIX = cyclades_services['cyclades_helpdesk']['prefix']
63 9c6d629f Giorgos Korfiatis
UI_PREFIX = cyclades_services['cyclades_ui']['prefix']
64 9c6d629f Giorgos Korfiatis
USERDATA_PREFIX = cyclades_services['cyclades_userdata']['prefix']
65 9c6d629f Giorgos Korfiatis
ADMIN_PREFIX = 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 74c62d99 Ilias Tsitsimpis
# This is used to define ASTAKOS_ACCOUNT_URL and
81 74c62d99 Ilias Tsitsimpis
# ASTAKOS_UI_URL and should never be used as is.
82 e407f159 Ilias Tsitsimpis
class LazyAstakosUrl(object):
83 e407f159 Ilias Tsitsimpis
    def __init__(self, endpoints_name):
84 e407f159 Ilias Tsitsimpis
        self.endpoints_name = endpoints_name
85 e407f159 Ilias Tsitsimpis
86 e407f159 Ilias Tsitsimpis
    def __str__(self):
87 e407f159 Ilias Tsitsimpis
        if not hasattr(self, 'str'):
88 e407f159 Ilias Tsitsimpis
            try:
89 e407f159 Ilias Tsitsimpis
                astakos_client = \
90 e407f159 Ilias Tsitsimpis
                    AstakosClient(SERVICE_TOKEN, ASTAKOS_AUTH_URL)
91 e407f159 Ilias Tsitsimpis
                self.str = getattr(astakos_client, self.endpoints_name)
92 74c62d99 Ilias Tsitsimpis
            except Exception as excpt:
93 74c62d99 Ilias Tsitsimpis
                logger.exception(
94 74c62d99 Ilias Tsitsimpis
                    "Could not retrieve endpoints from Astakos url %s: %s",
95 74c62d99 Ilias Tsitsimpis
                    ASTAKOS_AUTH_URL, excpt)
96 74c62d99 Ilias Tsitsimpis
                return ""
97 e407f159 Ilias Tsitsimpis
        return self.str
98 e407f159 Ilias Tsitsimpis
99 e407f159 Ilias Tsitsimpis
# --------------------------------------
100 e407f159 Ilias Tsitsimpis
# Define ASTAKOS_UI_URL and ASTAKOS_ACCOUNT_URL as LazyAstakosUrl
101 74c62d99 Ilias Tsitsimpis
# These are used to define the proxy paths.
102 74c62d99 Ilias Tsitsimpis
# These have to be resolved lazily (by the proxy function) so
103 74c62d99 Ilias Tsitsimpis
# they should not be used as is.
104 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_URL = LazyAstakosUrl('account_url')
105 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_URL = LazyAstakosUrl('ui_url')
106 e407f159 Ilias Tsitsimpis
107 e407f159 Ilias Tsitsimpis
# --------------------------------------
108 e407f159 Ilias Tsitsimpis
# Define Astakos prefixes
109 e407f159 Ilias Tsitsimpis
ASTAKOS_PROXY_PREFIX = getattr(settings, 'CYCLADES_PROXY_PREFIX', '_astakos')
110 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'identity')
111 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'account')
112 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PREFIX = join_urls('/', ASTAKOS_PROXY_PREFIX, 'ui')
113 e407f159 Ilias Tsitsimpis
114 e407f159 Ilias Tsitsimpis
# --------------------------------------
115 e407f159 Ilias Tsitsimpis
# Define Astakos proxy paths
116 e407f159 Ilias Tsitsimpis
ASTAKOS_AUTH_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_AUTH_PREFIX)
117 e407f159 Ilias Tsitsimpis
ASTAKOS_ACCOUNT_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_ACCOUNT_PREFIX)
118 e407f159 Ilias Tsitsimpis
ASTAKOS_UI_PROXY_PATH = join_urls(BASE_PATH, ASTAKOS_UI_PREFIX)