pyegeria 0.3.3__py3-none-any.whl → 0.3.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,120 @@
1
+ #!python
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Unit tests for the Utils helper functions using the Pytest framework.
7
+
8
+
9
+ A simple status display for Governance Actions
10
+ """
11
+
12
+ import time
13
+ import json
14
+ import argparse
15
+
16
+ from pyegeria import (
17
+ InvalidParameterException,
18
+ PropertyServerException,
19
+ UserNotAuthorizedException,
20
+ print_exception_response,
21
+ )
22
+ from rich.table import Table
23
+ from rich.live import Live
24
+ from rich import box
25
+ from rich import console
26
+
27
+ from pyegeria.server_operations import ServerOps
28
+ from pyegeria.gov_engine import GovEng
29
+
30
+ disable_ssl_warnings = True
31
+
32
+ good_platform1_url = "https://127.0.0.1:9443"
33
+ good_platform2_url = "https://egeria.pdr-associates.com:7443"
34
+ bad_platform1_url = "https://localhost:9443"
35
+
36
+ # good_platform1_url = "https://127.0.0.1:30080"
37
+ # good_platform2_url = "https://127.0.0.1:30081"
38
+ # bad_platform1_url = "https://localhost:9443"
39
+
40
+ good_user_1 = "garygeeke"
41
+ good_user_2 = "erinoverview"
42
+ bad_user_1 = "eviledna"
43
+ bad_user_2 = ""
44
+
45
+ good_server_1 = "active-metadata-store"
46
+ good_server_2 = "simple-metadata-store"
47
+ good_server_3 = "engine-host"
48
+ good_server_4 = "engine-host"
49
+ bad_server_1 = "coco"
50
+ bad_server_2 = ""
51
+
52
+
53
+ def display_gov_actions_status(server: str = good_server_3, url: str = good_platform1_url, username: str = good_user_1):
54
+ server_name = server
55
+ s_client = ServerOps(server_name, url, username)
56
+
57
+ def generate_table() -> Table:
58
+ """Make a new table."""
59
+ table = Table(
60
+ title=f"Governance Engine Status @ {time.asctime()}",
61
+ # style = "black on grey66",
62
+ header_style="white on dark_blue",
63
+ show_lines=True,
64
+ box=box.ROUNDED,
65
+ caption=f"Server: '{server_name}' running on {url}",
66
+ expand=True
67
+ )
68
+ # table.footer: f"Server {server_name} on Platform {good_platform1_url}"
69
+ table.add_column("Gov Engine")
70
+ table.add_column("Gov Engine Type")
71
+ table.add_column("Gov Engine Desc")
72
+ table.add_column("Engine Status")
73
+ table.add_column("Request Types")
74
+
75
+ gov_eng_status = s_client.get_governance_engine_summaries()
76
+ for engine in gov_eng_status:
77
+ gov_eng = engine["governanceEngineName"]
78
+ eng_type = engine["governanceEngineTypeName"]
79
+
80
+ eng_desc = engine["governanceEngineDescription"]
81
+ eng_req_type = json.dumps(engine["governanceRequestTypes"], indent = 2)
82
+ status = engine["governanceEngineStatus"]
83
+ if status in ("RUNNING"):
84
+ eng_status = f"[green]{status}"
85
+ elif status in ("FAILED"):
86
+ eng_status = f"[red]{status}"
87
+ else: eng_status = f"[yellow]{status}"
88
+
89
+ table.add_row(
90
+ gov_eng, eng_type, eng_desc, eng_status,eng_req_type
91
+ )
92
+
93
+ table.caption = f"Server {server_name} running on {url}"
94
+ return table
95
+
96
+ try:
97
+ with Live(generate_table(), refresh_per_second=1, screen=True, vertical_overflow="visible") as live:
98
+ while True:
99
+ time.sleep(2)
100
+ live.update(generate_table())
101
+
102
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
103
+ print_exception_response(e)
104
+ assert e.related_http_code != "200", "Invalid parameters"
105
+
106
+ finally:
107
+ s_client.close_session()
108
+
109
+
110
+ if __name__ == "__main__":
111
+ parser = argparse.ArgumentParser()
112
+ parser.add_argument("--server", help="Name of the server to display status for")
113
+ parser.add_argument("--url", help="URL Platform to connect to")
114
+ parser.add_argument("--userid", help="User Id")
115
+ args = parser.parse_args()
116
+
117
+ server = args.server if args.server is not None else "engine-host"
118
+ url = args.url if args.url is not None else "https://localhost:9443"
119
+ userid = args.userid if args.userid is not None else 'garygeeke'
120
+ display_gov_actions_status(server=server, url=url, username=userid)
@@ -0,0 +1,130 @@
1
+ #!python
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Unit tests for the Utils helper functions using the Pytest framework.
7
+
8
+
9
+ A simple status display for Engine Actions
10
+ """
11
+
12
+ import argparse
13
+ import json
14
+ import time
15
+
16
+ from rich import box
17
+ from rich.live import Live
18
+ from rich.table import Table
19
+ from rich import console
20
+
21
+ from pyegeria._exceptions import (
22
+ InvalidParameterException,
23
+ PropertyServerException,
24
+ UserNotAuthorizedException,
25
+ print_exception_response,
26
+ )
27
+ from pyegeria.server_operations import ServerOps
28
+
29
+ disable_ssl_warnings = True
30
+
31
+ good_platform1_url = "https://127.0.0.1:9443"
32
+ good_platform2_url = "https://egeria.pdr-associates.com:7443"
33
+ bad_platform1_url = "https://localhost:9443"
34
+
35
+ good_user_1 = "garygeeke"
36
+ good_user_2 = "erinoverview"
37
+ bad_user_1 = "eviledna"
38
+ bad_user_2 = ""
39
+
40
+ good_server_1 = "active-metadata-store"
41
+ good_server_2 = "simple-metadata-store"
42
+ good_server_3 = "view-server"
43
+ good_server_4 = "engine-host"
44
+ bad_server_1 = "coco"
45
+ bad_server_2 = ""
46
+
47
+
48
+ def display_integration_daemon_status(server: str = good_server_4, url: str = good_platform1_url,
49
+ user: str = good_user_1):
50
+ s_client = ServerOps(server, url, user)
51
+
52
+ def generate_table() -> Table:
53
+ """Make a new table."""
54
+ table = Table(
55
+ title=f"Integration Daemon Status @ {time.asctime()}",
56
+ # style = "black on grey66",
57
+ header_style="white on dark_blue",
58
+ show_lines=True,
59
+ box=box.ROUNDED,
60
+ caption=f"Integration Daemon Status for Server '{server}' @ Platform - {url}",
61
+ expand=True
62
+ )
63
+ table.add_column("Connector Name")
64
+ table.add_column("Connector Status")
65
+
66
+ table.add_column("Last Refresh Time")
67
+ table.add_column("Minimum Refresh Interval (min)")
68
+ table.add_column("Target Element")
69
+ table.add_column("Exception Message")
70
+
71
+ daemon_status = s_client.get_integration_daemon_status()
72
+ connector_reports = daemon_status["integrationConnectorReports"]
73
+ for connector in connector_reports:
74
+ connector_name = connector["connectorName"]
75
+ connector_status = connector["connectorStatus"]
76
+ last_refresh_time = connector.get("lastRefreshTime","---")
77
+ refresh_interval = str(connector.get("minMinutesBetweenRefresh","---"))
78
+ target_element = " "
79
+ exception_msg = " "
80
+
81
+ if connector_name is None:
82
+ connector_name = "connector name"
83
+ if connector_status is None:
84
+ connector_status = "connector status"
85
+
86
+ if connector_status in ("RUNNING", "REFRESHING", "WAITING"):
87
+ connector_status = f"[green]{connector_status}"
88
+ elif connector_status in ("INITIALIZE FAILED","CONFIG_FAILED","FAILED"):
89
+ connector_status = f"[red]{connector_status}"
90
+ else:
91
+ connector_status = f"[yellow]{connector_status}"
92
+
93
+ # target= action.get("actionTargetElements","Empty")
94
+ # if type(target) is list:
95
+ # target_element = json.dumps(target[0]["targetElement"]["elementProperties"]["propertiesAsStrings"])
96
+ # else:
97
+ # target_element = " "
98
+
99
+ table.add_row(
100
+ connector_name,connector_status,last_refresh_time,refresh_interval,
101
+ target_element, exception_msg
102
+ )
103
+ return table
104
+
105
+ try:
106
+ with Live(generate_table(), refresh_per_second=4, screen=True) as live:
107
+ while True:
108
+ time.sleep(2)
109
+ live.update(generate_table())
110
+ live.console.pager()
111
+
112
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
113
+ print_exception_response(e)
114
+ assert e.related_http_code != "200", "Invalid parameters"
115
+
116
+ finally:
117
+ s_client.close_session()
118
+
119
+
120
+ if __name__ == "__main__":
121
+ parser = argparse.ArgumentParser()
122
+ parser.add_argument("--server", help="Name of the server to display status for")
123
+ parser.add_argument("--url", help="URL Platform to connect to")
124
+ parser.add_argument("--userid", help="User Id")
125
+ args = parser.parse_args()
126
+
127
+ server = args.server if args.server is not None else "integration-daemon"
128
+ url = args.url if args.url is not None else "https://localhost:9443"
129
+ userid = args.userid if args.userid is not None else 'garygeeke'
130
+ display_integration_daemon_status(server=server, url=url, user=userid)
@@ -0,0 +1,114 @@
1
+ #!python
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Unit tests for the Utils helper functions using the Pytest framework.
7
+
8
+
9
+ A simple display for my profile
10
+ """
11
+
12
+ import argparse
13
+ import time
14
+
15
+ from rich import box
16
+ from rich.console import Console
17
+ from rich.table import Table
18
+
19
+ from pyegeria import (
20
+ InvalidParameterException,
21
+ PropertyServerException,
22
+ UserNotAuthorizedException,
23
+ print_exception_response,
24
+ RegisteredInfo
25
+ )
26
+
27
+ disable_ssl_warnings = True
28
+
29
+ good_platform1_url = "https://127.0.0.1:9443"
30
+ good_platform2_url = "https://egeria.pdr-associates.com:7443"
31
+ bad_platform1_url = "https://localhost:9443"
32
+
33
+ # good_platform1_url = "https://127.0.0.1:30080"
34
+ # good_platform2_url = "https://127.0.0.1:30081"
35
+ # bad_platform1_url = "https://localhost:9443"
36
+
37
+ good_user_1 = "garygeeke"
38
+ good_user_2 = "erinoverview"
39
+ bad_user_1 = "eviledna"
40
+ bad_user_2 = ""
41
+
42
+ good_server_1 = "active-metadata-store"
43
+ good_server_2 = "simple-metadata-store"
44
+ good_server_3 = "view-server"
45
+ good_server_4 = "engine-host"
46
+ bad_server_1 = "coco"
47
+ bad_server_2 = ""
48
+
49
+
50
+ def display_asset_types(server: str = good_server_3, url: str = good_platform1_url, username: str = good_user_2):
51
+ r_client = RegisteredInfo(good_platform1_url, good_user_2, "secret",
52
+ server_name=good_server_3, )
53
+ token = r_client.create_egeria_bearer_token(good_user_2, "secret")
54
+ asset_types = r_client.list_asset_types()
55
+
56
+ def generate_table() -> Table:
57
+ """Make a new table."""
58
+ table = Table(
59
+ title=f"Asset Types for: {good_platform1_url} @ {time.asctime()}",
60
+ # style = "black on grey66",
61
+ header_style="white on dark_blue",
62
+ show_lines=True,
63
+ box=box.ROUNDED,
64
+ caption=f"Asset Types from Server '{server}' @ Platform - {url}",
65
+ expand=True
66
+ )
67
+
68
+ table.add_column("Name")
69
+ table.add_column("Description")
70
+ table.add_column("SuperType")
71
+ table.add_column("Version")
72
+
73
+ name = " "
74
+ description = " "
75
+ version = " "
76
+ super_type = " "
77
+ if len(asset_types) > 0:
78
+ for a_type in asset_types:
79
+ name = a_type.get("name", "none")
80
+ description = a_type.get("description", "none")
81
+ version = a_type.get("version", " ")
82
+ super_type = a_type.get("superType", "none")
83
+ table.add_row(
84
+ name, description, str(version), super_type
85
+ )
86
+ return table
87
+
88
+ try:
89
+ console = Console()
90
+ with console.pager():
91
+ console.print(generate_table())
92
+
93
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
94
+ print_exception_response(e)
95
+ assert e.related_http_code != "200", "Invalid parameters"
96
+ finally:
97
+ r_client.close_session()
98
+
99
+
100
+ if __name__ == "__main__":
101
+ parser = argparse.ArgumentParser()
102
+ parser.add_argument("--server", help="Name of the server to display status for")
103
+ parser.add_argument("--url", help="URL Platform to connect to")
104
+ parser.add_argument("--userid", help="User Id")
105
+
106
+ args = parser.parse_args()
107
+
108
+ server = args.server if args.server is not None else "view-server"
109
+ url = args.url if args.url is not None else "https://localhost:9443"
110
+ userid = args.userid if args.userid is not None else 'erinoverview'
111
+ # guid = args.guid if args.guid is not None else None
112
+ guid = None
113
+
114
+ display_asset_types(server, url, userid)
@@ -0,0 +1,123 @@
1
+ #!python
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Unit tests for the Utils helper functions using the Pytest framework.
7
+
8
+
9
+ A simple server status display
10
+ """
11
+
12
+ import time
13
+ import argparse
14
+
15
+ from rich.box import Box
16
+
17
+ from pyegeria._exceptions import (
18
+ InvalidParameterException,
19
+ PropertyServerException,
20
+ UserNotAuthorizedException,
21
+ print_exception_response,
22
+ )
23
+ from rich.table import Table
24
+ from rich.live import Live
25
+ from rich import print
26
+ from rich.console import Group
27
+ from rich.panel import Panel
28
+ from rich import box, align
29
+ from rich.layout import Layout
30
+ import rich
31
+ from pyegeria.server_operations import ServerOps
32
+
33
+ disable_ssl_warnings = True
34
+
35
+ good_platform1_url = "https://127.0.0.1:9443"
36
+ good_platform2_url = "https://egeria.pdr-associates.com:9443"
37
+ bad_platform1_url = "https://localhost:9443"
38
+
39
+
40
+ good_user_1 = "garygeeke"
41
+ good_user_2 = "erinoverview"
42
+ bad_user_1 = "eviledna"
43
+ bad_user_2 = ""
44
+
45
+ good_server_1 = "active-metadata-store"
46
+ good_server_2 = "simple-metadata-store"
47
+ good_server_3 = "view-server"
48
+ good_server_4 = "engine-host"
49
+ bad_server_1 = "coco"
50
+ bad_server_2 = ""
51
+
52
+
53
+ def test_display_status(server: str = good_server_1, url: str = good_platform2_url, username: str = good_user_1):
54
+ layout = Layout()
55
+ print(layout)
56
+
57
+ print(layout)
58
+ p_client1 = ServerOps(server, "https://cray.local:9443", username)
59
+ p_client2 = ServerOps('ecosystem-monitor', "https://cray.local:9446", username)
60
+
61
+
62
+ def generate_table(p_client) -> Table:
63
+ """Make a new table."""
64
+ table = Table(
65
+ title=f"Server Status for Platform - {time.asctime()}",
66
+ # style = "black on grey66",
67
+ header_style="white on dark_blue",
68
+ caption=f"Server Status for Platform - '{url}'",
69
+ # show_lines=True,
70
+ )
71
+
72
+ table.add_column("Known Server")
73
+ table.add_column("Status")
74
+
75
+ known_server_list = p_client.get_known_servers()
76
+ active_server_list = p_client.get_active_server_list()
77
+ if len(known_server_list) == 0:
78
+ return table
79
+
80
+ for server in known_server_list:
81
+ if server in active_server_list:
82
+ status = "Active"
83
+ else:
84
+ status = "Inactive"
85
+
86
+ table.add_row(server,
87
+ "[red]Inactive" if status == "Inactive" else "[green]Active",
88
+ )
89
+ # p_client.close_session()
90
+ return table
91
+
92
+ try:
93
+ # panel_group = Group(
94
+ # rich.align.Align(Panel(, generate_table(p_client2)), box.ROUNDED))
95
+ #
96
+ # )
97
+ layout.split_row(
98
+ Layout(Panel(generate_table(p_client1), box.ROUNDED)),
99
+ Layout(Panel(generate_table(p_client2), box.ROUNDED))
100
+ )
101
+ with Live(layout, refresh_per_second=4, screen=True) as live:
102
+ while True:
103
+ time.sleep(2)
104
+ live.update(layout)
105
+
106
+
107
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
108
+ print_exception_response(e)
109
+ assert e.related_http_code != "200", "Invalid parameters"
110
+
111
+
112
+ if __name__ == "__main__":
113
+ parser = argparse.ArgumentParser()
114
+ parser.add_argument("--server", help="Name of the server to display status for")
115
+ parser.add_argument("--url", help="URL Platform to connect to")
116
+ parser.add_argument("--userid", help="User Id")
117
+ args = parser.parse_args()
118
+
119
+ server = args.server if args.server is not None else "active-metadata-store"
120
+ url = args.url if args.url is not None else "https://cray.local:9443"
121
+ userid = args.userid if args.userid is not None else 'garygeeke'
122
+
123
+ test_display_status(server, url, userid)
@@ -0,0 +1,162 @@
1
+ #!python
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ Unit tests for the Utils helper functions using the Pytest framework.
7
+
8
+
9
+ A simple status display of a user's todos
10
+ """
11
+
12
+ import argparse
13
+ import json
14
+ import time
15
+
16
+ from rich import box
17
+ from rich.live import Live
18
+ from rich.table import Table
19
+ from rich import console
20
+
21
+ from pyegeria import (
22
+ InvalidParameterException,
23
+ PropertyServerException,
24
+ UserNotAuthorizedException,
25
+ print_exception_response,
26
+ )
27
+ from pyegeria.gov_engine import GovEng
28
+ from pyegeria.my_profile_omvs import MyProfile
29
+ disable_ssl_warnings = True
30
+
31
+ good_platform1_url = "https://127.0.0.1:9443"
32
+ good_platform2_url = "https://egeria.pdr-associates.com:7443"
33
+ bad_platform1_url = "https://localhost:9443"
34
+
35
+ # good_platform1_url = "https://127.0.0.1:30080"
36
+ # good_platform2_url = "https://127.0.0.1:30081"
37
+ # bad_platform1_url = "https://localhost:9443"
38
+
39
+ good_user_1 = "garygeeke"
40
+ good_user_2 = "erinoverview"
41
+ bad_user_1 = "eviledna"
42
+ bad_user_2 = ""
43
+
44
+ good_server_1 = "active-metadata-store"
45
+ good_server_2 = "simple-metadata-store"
46
+ good_server_3 = "view-server"
47
+ good_server_4 = "engine-host"
48
+ bad_server_1 = "coco"
49
+ bad_server_2 = ""
50
+
51
+
52
+ def display_todos(server: str = good_server_4, url: str = good_platform1_url, user: str = good_user_1):
53
+ m_client = MyProfile(server, url, user_id=user)
54
+ token = m_client.create_egeria_bearer_token(user, "secret")
55
+
56
+ def add_rows(table: Table, guid: str, identity: str) -> None:
57
+ todo_items = m_client.get_assigned_actions(guid)
58
+ if type(todo_items) is str:
59
+ return
60
+
61
+ for item in todo_items:
62
+ assigned_actors = [" "]
63
+ if todo_items is None:
64
+ name = " "
65
+ type_name = " "
66
+ todo_guid = " "
67
+ created = " "
68
+ priority = " "
69
+ due = " "
70
+ completed = " "
71
+ status = " "
72
+ sponsor = " "
73
+ else:
74
+ props = item["properties"]
75
+ name = props["name"]
76
+ todo_type_name = props.get("toDoType", " ")
77
+ todo_guid = item["elementHeader"]["guid"]
78
+ created = props.get("creationTime", " ")
79
+ priority = str(props.get("priority", " "))
80
+ due = props.get("dueTime", " ")
81
+ completed = props.get("completionTime", " ")
82
+ status = props.get("status")
83
+
84
+ for actor in item["assignedActors"]:
85
+ assigned_actors.append(actor.get("uniqueName", "NoOne"))
86
+ if status in ("WAITING", "OPEN"):
87
+ status = f"[yellow]{status}"
88
+ elif status in ("INPROGRESS", "COMPLETE"):
89
+ status = f"[green]{status}"
90
+ else:
91
+ status = f"[red]{status}"
92
+
93
+ table.add_row(
94
+ str(identity), name, todo_type_name, todo_guid, created, priority, due,
95
+ completed, status, str(assigned_actors)
96
+ )
97
+
98
+ def generate_table() -> Table:
99
+ """Make a new table."""
100
+ table = Table(
101
+ title=f"Open ToDos for Platform {good_platform1_url} @ {time.asctime()}",
102
+ # style = "black on grey66",
103
+ header_style="white on dark_blue",
104
+ show_lines=True,
105
+ box=box.ROUNDED,
106
+ caption=f"ToDos for Server '{server}' @ Platform - {url}",
107
+ expand=True
108
+ )
109
+ table.add_column("Actor")
110
+ table.add_column("ToDo Name")
111
+ table.add_column("Type Name")
112
+ table.add_column("GUID")
113
+ table.add_column("Created")
114
+ table.add_column("Priority")
115
+ table.add_column("Due")
116
+ table.add_column("Completion")
117
+ table.add_column("Status")
118
+ table.add_column("Sponsor")
119
+
120
+ my_profile = m_client.get_my_profile()
121
+ my_guid = my_profile["elementHeader"]["guid"]
122
+ my_ids = my_profile["userIdentities"]
123
+ my_title = my_profile["profileProperties"].get("jobTitle", "No Title")
124
+ user_ids = []
125
+ for id in my_ids:
126
+ user_ids.append(id["userIdentity"]["properties"].get("userId", "NoOne"))
127
+ add_rows(table, my_guid, user_ids)
128
+
129
+ my_roles = my_profile["roles"]
130
+ if type(my_roles) is list:
131
+ for role in my_roles:
132
+ role_guid = role["elementHeader"]["guid"]
133
+ role_title = role["properties"].get("title","No Title")
134
+ add_rows(table,role_guid,role_title)
135
+
136
+ # m_client.close_session()
137
+ return table
138
+
139
+ try:
140
+ with Live(generate_table(), refresh_per_second=4, screen=True) as live:
141
+ while True:
142
+ time.sleep(2)
143
+ live.update(generate_table())
144
+ live.console.pager()
145
+
146
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
147
+ print_exception_response(e)
148
+ assert e.related_http_code != "200", "Invalid parameters"
149
+
150
+
151
+ if __name__ == "__main__":
152
+ parser = argparse.ArgumentParser()
153
+ parser.add_argument("--server", help="Name of the view server to connect to")
154
+ parser.add_argument("--url", help="URL Platform to connect to")
155
+ parser.add_argument("--userid", help="User Id")
156
+ args = parser.parse_args()
157
+
158
+ server = args.server if args.server is not None else "view-server"
159
+ url = args.url if args.url is not None else "https://localhost:9443"
160
+ userid = args.userid if args.userid is not None else 'erinoverview'
161
+ print(f"Starting display_todos with {server}, {url}, {userid}")
162
+ display_todos(server=server, url=url, user=userid)