service_info.py 2.26 KB
Newer Older
Mark Hewitt's avatar
Mark Hewitt committed
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
60
61
62
63
64
65
#  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.

"""Service information"""

from osducli.click_cli import State
from osducli.cliclient import CliOsduClient
from osducli.commands.status.status import check_status
from osducli.commands.version.version import get_api_info


def info(state: State, name: str, config_url_key: str, status_path: str, swagger_path: str) -> dict:
    """Return information about the service

    Args:
        state (State): Global state
        name (str): Name of the service
        config_url_key (str): Config url key
        status_path (str): Path to status service
        swagger_path (str): Swagger path

    Returns:
        dict: Response from service
    """
    connection = CliOsduClient(state.config)

    status = check_status(connection, name, config_url_key, status_path)
    if state.is_user_friendly_mode():
        print("Status:", status["status"])
        print("Reason:", status["reason"])

    version = get_api_info(connection, config_url_key, "info")
    if state.is_user_friendly_mode():
        if version:
            print("Version:", version["version"])
            print("Build Time:", version["buildTime"])
            print("Branch:", version["branch"])
            print("Commit Id:", version["commitId"])
        else:
            print("No version information available")

    swagger_path_expanded = (
        connection.url_from_config(config_url_key, swagger_path) if swagger_path else None
    )

    if state.is_user_friendly_mode():
        if swagger_path_expanded:
            print("Swagger:", swagger_path_expanded)
        else:
            print("Swagger path unknown")

    return (
        None
        if state.is_user_friendly_mode()
        else {"status": status, "version": version, "swagger": swagger_path_expanded}
    )