Fix identity prefix resolving
[pithos-web-client] / snf-pithos-webclient / pithos_webclient / settings.py
1 # Copyright 2013 GRNET S.A. All rights reserved.
2 #
3 # Redistribution and use in source and binary forms, with or
4 # without modification, are permitted provided that the following
5 # conditions are met:
6 #
7 #   1. Redistributions of source code must retain the above
8 #      copyright notice, this list of conditions and the following
9 #      disclaimer.
10 #
11 #   2. Redistributions in binary form must reproduce the above
12 #      copyright notice, this list of conditions and the following
13 #      disclaimer in the documentation and/or other materials
14 #      provided with the distribution.
15 #
16 # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 # POSSIBILITY OF SUCH DAMAGE.
28 #
29 # The views and conclusions contained in the software and
30 # documentation are those of the authors and should not be
31 # interpreted as representing official policies, either expressed
32 # or implied, of GRNET S.A.
33
34 from django.conf import settings
35 from synnefo.lib import join_urls, parse_base_url
36 from synnefo.util.keypath import get_path
37 from pithos.api.services import pithos_services as vanilla_pithos_services
38 from astakosclient import astakos_services as vanilla_astakos_services
39 from synnefo.lib.services import get_public_endpoint, fill_endpoints
40
41 from copy import deepcopy
42
43 # Process Pithos settings. This code is shared between snf-pithos-app and
44 # snf-pithos-webclient since they share the PITHOS_ settings prefix for most
45 # of their settings.
46 BASE_URL = getattr(settings, 'PITHOS_BASE_URL',
47                    "https://object-store.example.synnefo.org/pithos/")
48
49 BASE_HOST, BASE_PATH = parse_base_url(BASE_URL)
50
51 # Process Astakos settings
52 ASTAKOS_BASE_URL = getattr(settings, 'ASTAKOS_BASE_URL',
53                            'https://accounts.example.synnefo.org/astakos/')
54 ASTAKOS_BASE_HOST, ASTAKOS_BASE_PATH = parse_base_url(ASTAKOS_BASE_URL)
55
56 pithos_services = deepcopy(vanilla_pithos_services)
57 fill_endpoints(pithos_services, BASE_URL)
58 PITHOS_PREFIX = get_path(pithos_services, 'pithos_object-store.prefix')
59 PUBLIC_PREFIX = get_path(pithos_services, 'pithos_public.prefix')
60 UI_PREFIX = get_path(pithos_services, 'pithos_ui.prefix')
61
62 astakos_services = deepcopy(vanilla_astakos_services)
63 fill_endpoints(astakos_services, ASTAKOS_BASE_URL)
64 CUSTOMIZE_ASTAKOS_SERVICES = \
65         getattr(settings, 'PITHOS_CUSTOMIZE_ASTAKOS_SERVICES', ())
66 for path, value in CUSTOMIZE_ASTAKOS_SERVICES:
67     set_path(astakos_services, path, value, createpath=True)
68
69 ASTAKOS_ACCOUNTS_PREFIX = get_path(astakos_services, 'astakos_account.prefix')
70 ASTAKOS_VIEWS_PREFIX = get_path(astakos_services, 'astakos_ui.prefix')
71 ASTAKOS_IDENTITY_PREFIX = get_path(astakos_services, 'astakos_identity.prefix')
72
73 BASE_ASTAKOS_PROXY_PATH = getattr(settings, 'PITHOS_BASE_ASTAKOS_PROXY_PATH',
74                                   ASTAKOS_BASE_PATH)
75 BASE_ASTAKOS_PROXY_PATH = join_urls(BASE_PATH, BASE_ASTAKOS_PROXY_PATH)
76 BASE_ASTAKOS_PROXY_PATH = BASE_ASTAKOS_PROXY_PATH.strip('/')
77
78 PROXY_USER_SERVICES = getattr(settings, 'PITHOS_PROXY_USER_SERVICES', True)
79
80 if not BASE_PATH.startswith("/"):
81     BASE_PATH = "/" + BASE_PATH
82
83 PITHOS_URL = get_public_endpoint(pithos_services, 'object-store', 'v1')
84 ASTAKOS_UI_URL = get_public_endpoint(astakos_services, 'astakos_ui', '')
85
86 if PROXY_USER_SERVICES:
87     ACCOUNT_URL = join_urls('/', BASE_ASTAKOS_PROXY_PATH,
88                             ASTAKOS_ACCOUNTS_PREFIX, 'v1.0')
89 else:
90     ACCOUNT_URL = get_public_endpoint(astakos_services, 'account', 'v1.0')
91
92
93 USER_CATALOG_URL = join_urls(ACCOUNT_URL, 'user_catalogs')
94 FEEDBACK_URL = join_urls(ACCOUNT_URL, 'feedback')
95 LOGIN_URL = join_urls(ASTAKOS_UI_URL, 'login?next=')
96
97 AUTH_COOKIE_NAME = getattr(settings, 'PITHOS_UI_AUTH_COOKIE_NAME',
98                            '_pithos2_a')
99
100 CLOUDBAR_ACTIVE_SERVICE = getattr(
101     settings,
102     'PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE',
103     'pithos')