aboutsummaryrefslogtreecommitdiffstats
path: root/osdf/utils/api_data_utils.py
blob: a7a4c12fa5bcaf4404ae48eb14d83ec62e219c6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# -------------------------------------------------------------------------
#   Copyright (c) 2015-2017 AT&T Intellectual Property
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
# -------------------------------------------------------------------------
#

from collections import defaultdict
from osdf.logging.osdf_logging import debug_log
from osdf.config.base import osdf_config


def retrieve_version_info(request, request_id):
    version_info_dict = defaultdict(dict)
    config = osdf_config.deployment 
    placement_ver_enabled = config.get('placementVersioningEnabled', False)

    if placement_ver_enabled: 
        placement_major_version = config.get('placementMajorVersion', None)
        placement_minor_version = config.get('placementMinorVersion', None)  
        placement_patch_version = config.get('placementPatchVersion', None)
        
        http_header = request.headers.environ
        http_x_minorversion = http_header.get("HTTP_X_MINORVERSION")
        http_x_patchversion = http_header.get("HTTP_X_PATCHVERSION")
        http_x_latestversion = http_header.get("HTTP_X_LATESTVERSION")
        
        debug_log.debug("Versions sent in HTTP header for request ID {} are: X-MinorVersion: {}  X-PatchVersion: {}  X-LatestVersion: {}"
                        .format(request_id, http_x_minorversion, http_x_patchversion, http_x_latestversion))
        debug_log.debug("latest versions specified in osdf config file are: placementMajorVersion: {}  placementMinorVersion: {}  placementPatchVersion: {}"
                        .format(placement_major_version, placement_minor_version, placement_patch_version))
    else:
        placement_major_version = config.get('placementDefaultMajorVersion', "1")
        placement_minor_version = config.get('placementDefaultMinorVersion', "0")
        placement_patch_version = config.get('placementDefaultPatchVersion', "0")
        
        debug_log.debug("Default versions specified in osdf config file are: placementDefaultMajorVersion: {}  placementDefaultMinorVersion: {}  placementDefaultPatchVersion: {}"
                        .format(placement_major_version, placement_minor_version, placement_patch_version))
        
    version_info_dict.update({
                               'placementVersioningEnabled': placement_ver_enabled,
                               'placementMajorVersion': str(placement_major_version),
                               'placementMinorVersion': str(placement_minor_version),
                               'placementPatchVersion': str( placement_patch_version)
                              })
    
    return version_info_dict