service_info.py 2.52 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
#  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


Mark Hewitt's avatar
Mark Hewitt committed
21
22
23
24
25
26
27
28
def info(
    state: State,
    name: str,
    config_url_key: str,
    status_path: str,
    swagger_path: str,
    documentation: str = None,
) -> dict:
Mark Hewitt's avatar
Mark Hewitt committed
29
30
31
32
33
34
35
36
    """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
Mark Hewitt's avatar
Mark Hewitt committed
37
        documentation (str): Link to documentaion about the underlying service
Mark Hewitt's avatar
Mark Hewitt committed
38
39
40
41
42
43
44
45
46
47
48
49

    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")
Mark Hewitt's avatar
Mark Hewitt committed
50
51
52
53
54

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

Mark Hewitt's avatar
Mark Hewitt committed
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    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")

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

Mark Hewitt's avatar
Mark Hewitt committed
69
70
71
        if documentation:
            print("Documentation:", documentation)

Mark Hewitt's avatar
Mark Hewitt committed
72
73
74
    return (
        None
        if state.is_user_friendly_mode()
Mark Hewitt's avatar
Mark Hewitt committed
75
76
77
78
79
80
        else {
            "status": status,
            "version": version,
            "swagger": swagger_path_expanded,
            "documentation": documentation,
        }
Mark Hewitt's avatar
Mark Hewitt committed
81
    )