pyegeria 0.7.18__py3-none-any.whl → 0.7.20__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,135 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ SPDX-License-Identifier: Apache-2.0
4
+ Copyright Contributors to the ODPi Egeria project.
5
+
6
+ A simple viewer for project dependencies - provide the root and we display the dependency tree
7
+
8
+ """
9
+
10
+ import argparse
11
+ import os
12
+
13
+ from rich import print
14
+ from rich.console import Console
15
+ from rich.markdown import Markdown
16
+ from rich.panel import Panel
17
+ from rich.prompt import Prompt
18
+ from rich.tree import Tree
19
+
20
+ from pyegeria import (ProjectManager, UserNotAuthorizedException, PropertyServerException, InvalidParameterException)
21
+ from pyegeria._exceptions import (print_exception_response, )
22
+
23
+ disable_ssl_warnings = True
24
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
25
+ EGERIA_KAFKA_ENDPOINT = os.environ.get('KAFKA_ENDPOINT', 'localhost:9092')
26
+ EGERIA_PLATFORM_URL = os.environ.get('EGERIA_PLATFORM_URL', 'https://localhost:9443')
27
+ EGERIA_VIEW_SERVER = os.environ.get('VIEW_SERVER', 'view-server')
28
+ EGERIA_VIEW_SERVER_URL = os.environ.get('EGERIA_VIEW_SERVER_URL', 'https://localhost:9443')
29
+ EGERIA_INTEGRATION_DAEMON = os.environ.get('INTEGRATION_DAEMON', 'integration-daemon')
30
+ EGERIA_ADMIN_USER = os.environ.get('ADMIN_USER', 'garygeeke')
31
+ EGERIA_ADMIN_PASSWORD = os.environ.get('ADMIN_PASSWORD', 'secret')
32
+ EGERIA_USER = os.environ.get('EGERIA_USER', 'erinoverview')
33
+ EGERIA_USER_PASSWORD = os.environ.get('EGERIA_USER_PASSWORD', 'secret')
34
+ EGERIA_JUPYTER = bool(os.environ.get('EGERIA_JUPYTER', 'False'))
35
+ EGERIA_WIDTH = int(os.environ.get('EGERIA_WIDTH', '200'))
36
+
37
+
38
+ def project_dependency_viewer(root: str, server_name: str, platform_url: str, user: str, user_password: str,
39
+ jupyter: bool = EGERIA_JUPYTER, width: int = EGERIA_WIDTH, timeout: int = 30):
40
+ """ A simple collection viewer"""
41
+
42
+ def walk_project_hierarchy(project_client: ProjectManager, project_name: str, tree: Tree,
43
+ root: bool = False) -> None:
44
+ """Recursively build a Tree with collection contents."""
45
+ t = None
46
+ style = "bright_white on black"
47
+
48
+ project = project_client.get_projects_by_name(project_name)
49
+ if type(project) is list:
50
+ proj_guid = project[0]['elementHeader']['guid']
51
+ proj_props = project[0]['properties']
52
+
53
+ proj_type = proj_props.get('typeName', '---')
54
+ proj_unique = proj_props.get('qualifiedName', '---')
55
+ proj_identifier = proj_props.get('identifier', '---')
56
+ proj_name = proj_props.get('name', '---')
57
+ proj_desc = proj_props.get('description', '---')
58
+ proj_status = proj_props.get('projectStatus', '---')
59
+ proj_priority = proj_props.get('priority', '---')
60
+ proj_start = proj_props.get('startDate', '---')[:-10]
61
+ proj_props_md = (f"* Name: {proj_name}\n"
62
+ f"* Identifier: {proj_identifier}\n"
63
+ f"* Type: {proj_type}\n"
64
+ f"* Status: {proj_status}\n"
65
+ f"* priority: {proj_priority}\n"
66
+ f"* Start: {proj_start}\n"
67
+ f"* Description: {proj_desc}\n"
68
+ f"* GUID: {proj_guid}")
69
+ else:
70
+ return
71
+
72
+ team = project_client.get_project_team(proj_guid)
73
+ member_md = ""
74
+ if type(team) is list:
75
+ for member in team:
76
+ member_guid = member['member']['guid']
77
+ member_unique = member['member']['uniqueName']
78
+ member_md += f"* Member Unique Name: {member_unique}\n* Member GUID: {member_guid}"
79
+ proj_props_md += f"\n### Team Members\n {member_md}"
80
+
81
+ proj_props_out = Markdown(proj_props_md)
82
+ p = Panel.fit(proj_props_out, style=style, title=project_name)
83
+ t = tree.add(p)
84
+
85
+ linked_projects = project_client.get_linked_projects(proj_guid)
86
+ if type(linked_projects) is list:
87
+ for proj in linked_projects:
88
+ child_md = ""
89
+ child_guid = proj['elementHeader']['guid']
90
+ child_name = proj['properties']['name']
91
+ relationship = proj['relatedElement']['relationshipHeader']['type']['typeName']
92
+ if relationship != 'ProjectDependency':
93
+ continue
94
+ walk_project_hierarchy(project_client, child_name, t)
95
+
96
+ else:
97
+ return t
98
+
99
+ try:
100
+ console = Console(width=width, force_terminal=not jupyter)
101
+ tree = Tree(f"[bold bright green on black]{root}", guide_style="bold bright_blue")
102
+ p_client = ProjectManager(server_name, platform_url, user_id=user)
103
+
104
+ token1 = p_client.create_egeria_bearer_token(user, user_password)
105
+
106
+ walk_project_hierarchy(p_client, root, tree, root=True)
107
+ print(tree)
108
+
109
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
110
+ print_exception_response(e)
111
+
112
+
113
+ def main():
114
+ parser = argparse.ArgumentParser()
115
+
116
+ parser.add_argument("--server", help="Name of the server to display status for")
117
+ parser.add_argument("--url", help="URL Platform to connect to")
118
+ parser.add_argument("--userid", help="User Id")
119
+ parser.add_argument("--password", help="User Password")
120
+ args = parser.parse_args()
121
+
122
+ server = args.server if args.server is not None else EGERIA_VIEW_SERVER
123
+ url = args.url if args.url is not None else EGERIA_PLATFORM_URL
124
+ userid = args.userid if args.userid is not None else EGERIA_USER
125
+ user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
126
+
127
+ try:
128
+ root_project = Prompt.ask("Enter the Root Project to start from:", default="Sustainability Campaign")
129
+ project_dependency_viewer(root_project, server, url, userid, user_pass)
130
+ except (KeyboardInterrupt):
131
+ pass
132
+
133
+
134
+ if __name__ == "__main__":
135
+ main()
@@ -88,6 +88,9 @@ def project_structure_viewer(root: str, server_name: str, platform_url: str, use
88
88
  child_md = ""
89
89
  child_guid = proj['elementHeader']['guid']
90
90
  child_name = proj['properties']['name']
91
+ relationship = proj['relatedElement']['relationshipHeader']['type']['typeName']
92
+ if relationship != 'ProjectHierarchy':
93
+ continue
91
94
  walk_project_hierarchy(project_client, child_name, t)
92
95
 
93
96
  else:
@@ -15,6 +15,7 @@ import time
15
15
 
16
16
  from rich import box
17
17
  from rich.console import Console
18
+ from rich.markdown import Markdown
18
19
  from rich.prompt import Prompt
19
20
  from rich.table import Table
20
21
 
@@ -40,7 +41,7 @@ EGERIA_USER_PASSWORD = os.environ.get('EGERIA_USER_PASSWORD', 'secret')
40
41
  EGERIA_JUPYTER = bool(os.environ.get('EGERIA_JUPYTER', 'False'))
41
42
  EGERIA_WIDTH = int(os.environ.get('EGERIA_WIDTH', '200'))
42
43
 
43
- def display_to_dos(search_string: str, server: str, url: str, username: str, user_pass:str,
44
+ def display_to_dos(search_string: str, status_filter: str, server: str, url: str, username: str, user_pass:str,
44
45
  jupyter:bool=EGERIA_JUPYTER, width:int = EGERIA_WIDTH):
45
46
 
46
47
  m_client = MyProfile(server, url, user_id=username)
@@ -60,15 +61,16 @@ def display_to_dos(search_string: str, server: str, url: str, username: str, use
60
61
 
61
62
  table.add_column("Name")
62
63
  table.add_column("Type Name")
63
-
64
+ table.add_column("GUID", no_wrap=True)
64
65
  table.add_column("Created")
65
66
  table.add_column("Priority")
66
67
  table.add_column("Due")
67
68
  table.add_column("Completion")
68
69
  table.add_column("Status")
69
70
  table.add_column("Sponsor")
71
+ table.add_column("Assigned")
70
72
 
71
- todo_items = m_client.find_to_do(search_string)
73
+ todo_items = m_client.find_to_do(search_string,status = status_filter)
72
74
 
73
75
  if type(todo_items) is str:
74
76
  name = " "
@@ -80,18 +82,27 @@ def display_to_dos(search_string: str, server: str, url: str, username: str, use
80
82
 
81
83
  status = " "
82
84
  sponsor = " "
85
+ assigned_out = ''
83
86
  else:
84
87
  for item in todo_items:
88
+ guid = item['elementHeader']['guid']
85
89
  props = item["properties"]
86
90
  name = props["name"]
87
91
  type_name = props.get("toDoType", " ")
88
- created = props.get("creationTime", " ")
92
+ created = props.get("creationTime", " ")[:-19]
89
93
  priority = str(props.get("priority", " "))
90
- due = props.get("dueTime", " ")
91
- completed = props.get("completionTime", " ")
92
- status = props.get("status")
93
- # assigned_actors = item["assignedActors"]
94
- # sponsor = assigned_actors[0].get("uniqueName", " ")
94
+ due = props.get("dueTime", " ")[:-19]
95
+ completed = props.get("completionTime", " ")[:-10]
96
+ status = props.get("toDoStatus")
97
+
98
+ assigned_out = ''
99
+ assigned_actors = item["assignedActors"]
100
+ if type(assigned_actors) is list:
101
+ assigned_md = ''
102
+ for actor in assigned_actors:
103
+ assigned_md += f"* {actor['uniqueName'].split(',')[0]}\n"
104
+ assigned_out = Markdown(assigned_md)
105
+
95
106
  sponsor = "erinoverview"
96
107
  if status in ("WAITING", "OPEN"):
97
108
  status = f"[yellow]{status}"
@@ -101,7 +112,7 @@ def display_to_dos(search_string: str, server: str, url: str, username: str, use
101
112
  status = f"[red]{status}"
102
113
 
103
114
  table.add_row(
104
- name, type_name, created, priority, due, completed, status, sponsor
115
+ name, type_name, guid, created, priority, due, completed, status, sponsor, assigned_out
105
116
  )
106
117
 
107
118
  m_client.close_session()
@@ -140,8 +151,10 @@ def main():
140
151
  userid = args.userid if args.userid is not None else EGERIA_USER
141
152
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
142
153
  try:
143
- search_string = Prompt.ask("Enter the ToDo you are searching for:", default="*")
144
- display_to_dos(search_string, server, url, userid, user_pass)
154
+ search_string = Prompt.ask("Enter the ToDo you are searching for", default="*")
155
+ status_filter = Prompt.ask("Enter an optional status filter ['OPEN','IN_PROGRESS','WAITING','COMPLETE',"
156
+ "'ABANDONED', 'None']", default=None)
157
+ display_to_dos(search_string, status_filter,server, url, userid, user_pass)
145
158
  except KeyboardInterrupt:
146
159
  pass
147
160
 
@@ -0,0 +1,119 @@
1
+ """This creates a templates guid file from the core metadata archive"""
2
+ from rich.markdown import Markdown
3
+ from rich.prompt import Prompt
4
+ import os
5
+ import argparse
6
+ import time
7
+ import sys
8
+ from rich import box
9
+ from rich.console import Console
10
+ from rich.table import Table
11
+
12
+ from pyegeria import (
13
+ InvalidParameterException,
14
+ PropertyServerException,
15
+ UserNotAuthorizedException,
16
+ print_exception_response,
17
+ ClassificationManager
18
+ )
19
+
20
+
21
+ console = Console()
22
+ EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
23
+ EGERIA_KAFKA_ENDPOINT = os.environ.get('KAFKA_ENDPOINT', 'localhost:9092')
24
+ EGERIA_PLATFORM_URL = os.environ.get('EGERIA_PLATFORM_URL', 'https://localhost:9443')
25
+ EGERIA_VIEW_SERVER = os.environ.get('VIEW_SERVER', 'view-server')
26
+ EGERIA_VIEW_SERVER_URL = os.environ.get('EGERIA_VIEW_SERVER_URL', 'https://localhost:9443')
27
+ EGERIA_INTEGRATION_DAEMON = os.environ.get('INTEGRATION_DAEMON', 'integration-daemon')
28
+ EGERIA_ADMIN_USER = os.environ.get('ADMIN_USER', 'garygeeke')
29
+ EGERIA_ADMIN_PASSWORD = os.environ.get('ADMIN_PASSWORD', 'secret')
30
+ EGERIA_USER = os.environ.get('EGERIA_USER', 'erinoverview')
31
+ EGERIA_USER_PASSWORD = os.environ.get('EGERIA_USER_PASSWORD', 'secret')
32
+ EGERIA_JUPYTER = bool(os.environ.get('EGERIA_JUPYTER', 'False'))
33
+ EGERIA_WIDTH = int(os.environ.get('EGERIA_WIDTH', '200'))
34
+
35
+
36
+
37
+ def list_user_ids(server: str,
38
+ url: str, username: str, password: str, jupyter:bool=EGERIA_JUPYTER, width:int = EGERIA_WIDTH
39
+ ):
40
+
41
+ c_client = ClassificationManager(server, url, user_id=username, user_pwd=password)
42
+ token = c_client.create_egeria_bearer_token()
43
+ elements = c_client.get_elements('UserIdentity')
44
+
45
+ def generate_table() -> Table:
46
+ """Make a new table."""
47
+ table = Table(
48
+ caption=f"Metadata Elements for: {url} - {server} @ {time.asctime()}",
49
+ style="bold bright_white on black",
50
+ row_styles=["bold bright_white on black"],
51
+ header_style="white on dark_blue",
52
+ title_style="bold bright_white on black",
53
+ caption_style="white on black",
54
+ show_lines=True,
55
+ box=box.ROUNDED,
56
+ title=f"Elements for Open Metadata Type: 'User Identities' ",
57
+ expand=True,
58
+ # width=500
59
+ )
60
+
61
+ table.add_column("Qualified Name")
62
+ table.add_column("Created")
63
+ table.add_column("GUID", width = 38,no_wrap=True)
64
+ table.add_column("UserId")
65
+
66
+
67
+ if type(elements) is list:
68
+ for element in elements:
69
+ header = element['elementHeader']
70
+ el_q_name = element['properties'].get('qualifiedName',"---")
71
+ el_create_time = header['versions']['createTime'][:-10]
72
+ el_guid = header['guid']
73
+ el_user_id = element['properties'].get('userId',"---")
74
+
75
+ table.add_row(el_q_name, el_create_time, el_guid, el_user_id)
76
+
77
+ return table
78
+ else:
79
+ print("No instances found")
80
+ sys.exit(1)
81
+
82
+ try:
83
+ console = Console(width=width, force_terminal=not jupyter)
84
+
85
+ with console.pager(styles=True):
86
+ console.print(generate_table())
87
+
88
+ except (InvalidParameterException, PropertyServerException, UserNotAuthorizedException) as e:
89
+ print_exception_response(e)
90
+ print("Perhaps the type name isn't known")
91
+ finally:
92
+ c_client.close_session()
93
+
94
+
95
+ def main():
96
+ parser = argparse.ArgumentParser()
97
+ parser.add_argument("--server", help="Name of the server to display status for")
98
+ parser.add_argument("--url", help="URL Platform to connect to")
99
+ parser.add_argument("--userid", help="User Id")
100
+ parser.add_argument("--password", help="Password")
101
+
102
+ args = parser.parse_args()
103
+
104
+ server = args.server if args.server is not None else EGERIA_VIEW_SERVER
105
+ url = args.url if args.url is not None else EGERIA_PLATFORM_URL
106
+ userid = args.userid if args.userid is not None else EGERIA_USER
107
+ password = args.password if args.password is not None else EGERIA_USER_PASSWORD
108
+
109
+ try:
110
+ list_user_ids(server, url, userid, password)
111
+ except(KeyboardInterrupt):
112
+ pass
113
+
114
+
115
+ if __name__ == "__main__":
116
+ main()
117
+
118
+
119
+
@@ -13,6 +13,7 @@ import click
13
13
  from trogon import tui
14
14
 
15
15
  from examples.widgets.cat.get_project_structure import project_structure_viewer
16
+ from examples.widgets.cat.get_project_dependencies import project_dependency_viewer
16
17
  from examples.widgets.cat.list_cert_types import display_certifications
17
18
  from examples.widgets.cat.get_asset_graph import asset_viewer
18
19
  from examples.widgets.cat.get_collection import collection_viewer
@@ -22,12 +23,13 @@ from examples.widgets.cat.list_assets import display_assets
22
23
  from examples.widgets.cat.list_glossary import display_glossary_terms
23
24
  from examples.widgets.cat.list_projects import display_project_list
24
25
  from examples.widgets.cat.list_tech_types import display_tech_types
25
- from examples.widgets.cat.list_todos import display_to_dos
26
+ from examples.widgets.cat.list_todos import display_to_dos as list_todos
26
27
  from examples.widgets.cli.ops_config import Config
27
28
  from examples.widgets.cat.list_relationships import list_relationships
29
+ from examples.widgets.cat.list_user_ids import list_user_ids
28
30
 
29
- from examples.widgets.ops.engine_actions import start_server as start_engine_host, \
30
- stop_server as stop_engine_host
31
+ from examples.widgets.ops.engine_actions import start_daemon as start_engine_host, \
32
+ stop_daemon as stop_engine_host
31
33
  from examples.widgets.ops.integration_daemon_actions import (add_catalog_target, remove_catalog_target,
32
34
  update_catalog_target, stop_server, start_server)
33
35
  from examples.widgets.ops.list_catalog_targets import display_catalog_targets
@@ -415,11 +417,23 @@ def show_certification_types(ctx, search_string):
415
417
  help="Enter the root project to start from")
416
418
  @click.pass_context
417
419
  def show_project_structure(ctx, project):
418
- """Show the structure of the project starting from a root project"""
420
+ """Show the organization structure of the project starting from a root project"""
419
421
  c = ctx.obj
420
422
  project_structure_viewer(project, c.view_server, c.view_server_url, c.userid,
421
423
  c.password, c.jupyter, c.width, c.timeout)
422
424
 
425
+ @show.command('project-dependencies')
426
+ @click.option('--project', default = 'Clinical Trials Management',
427
+ help="Enter the root project to start from")
428
+ @click.pass_context
429
+ def show_project_dependencies(ctx, project):
430
+ """Show the dependencies of a project starting from a root project"""
431
+ c = ctx.obj
432
+ project_dependency_viewer(project, c.view_server, c.view_server_url, c.userid,
433
+ c.password, c.jupyter, c.width, c.timeout)
434
+
435
+
436
+
423
437
  @show.command('relationships')
424
438
  @click.option('--relationship', default = 'Certification',
425
439
  help="Relationship type name to search for.")
@@ -500,11 +514,21 @@ def show_projects(ctx, search_string):
500
514
  @show.command('to-dos')
501
515
  @click.option('--search-string', default='*',
502
516
  help='View the list of To-Do items')
517
+ @click.option('--status', type=click.Choice(['OPEN','IN_PROGRESS','WAITING','COMPLETE', 'ABANDONED', 'None'],
518
+ case_sensitive='False'), help = 'Enter an optional status filter', required=False, default=None)
519
+ @click.pass_context
520
+ def show_todos(ctx, search_string, status):
521
+ """Display a tree graph of information about an asset """
522
+ c = ctx.obj
523
+ list_todos(search_string, status, c.view_server, c.view_server_url, c.userid,
524
+ c.password, c.jupyter, c.width)
525
+
526
+ @show.command('user-ids')
503
527
  @click.pass_context
504
- def show_todos(ctx, search_string):
528
+ def show_todos(ctx):
505
529
  """Display a tree graph of information about an asset """
506
530
  c = ctx.obj
507
- display_to_dos(search_string, c.view_server, c.view_server_url, c.userid,
531
+ list_user_ids( c.view_server, c.view_server_url, c.userid,
508
532
  c.password, c.jupyter, c.width)
509
533
 
510
534
 
@@ -20,10 +20,12 @@ from examples.widgets.cat.list_assets import display_assets
20
20
  from examples.widgets.cat.list_glossary import display_glossary_terms
21
21
  from examples.widgets.cat.list_tech_types import display_tech_types
22
22
  from examples.widgets.cat.list_projects import display_project_list
23
- from examples.widgets.cat.list_todos import display_to_dos
23
+ from examples.widgets.cat.list_todos import display_to_dos as list_todos
24
24
  from examples.widgets.cat.get_project_structure import project_structure_viewer
25
+ from examples.widgets.cat.get_project_dependencies import project_dependency_viewer
25
26
  from examples.widgets.cat.list_cert_types import display_certifications
26
27
  from examples.widgets.cat.list_relationships import list_relationships
28
+ from examples.widgets.cat.list_user_ids import list_user_ids
27
29
 
28
30
  # from pyegeria import ServerOps
29
31
  from examples.widgets.cli.ops_config import Config
@@ -207,11 +209,23 @@ def show_certification_types(ctx, search_string):
207
209
  help="Enter the root project to start from")
208
210
  @click.pass_context
209
211
  def show_project_structure(ctx, project):
210
- """Show the structure of the project starting from a root project"""
212
+ """Show the organization structure of the project starting from a root project"""
211
213
  c = ctx.obj
212
214
  project_structure_viewer(project, c.view_server, c.view_server_url, c.userid,
213
215
  c.password, c.jupyter, c.width, c.timeout)
214
216
 
217
+ @show.command('project-dependencies')
218
+ @click.option('--project', default = 'Clinical Trials Management',
219
+ help="Enter the root project to start from")
220
+ @click.pass_context
221
+ def show_project_dependencies(ctx, project):
222
+ """Show the dependencies of a project starting from a root project"""
223
+ c = ctx.obj
224
+ project_dependency_viewer(project, c.view_server, c.view_server_url, c.userid,
225
+ c.password, c.jupyter, c.width, c.timeout)
226
+
227
+
228
+
215
229
  @show.command('relationships')
216
230
  @click.option('--relationship', default = 'Certification',
217
231
  help="Relationship type name to search for.")
@@ -227,12 +241,22 @@ def show_relationships(ctx, relationship):
227
241
  @show.command('to-dos')
228
242
  @click.option('--search-string', default='*',
229
243
  help='View the list of To-Do items')
244
+ @click.option('--status', type=click.Choice(['OPEN','IN_PROGRESS','WAITING','COMPLETE', 'ABANDONED', 'None'],
245
+ case_sensitive='False'), help = 'Enter an optional status filter', required=False, default=None)
230
246
  @click.pass_context
231
- def show_todos(ctx, search_string):
247
+ def show_todos(ctx, search_string, status):
232
248
  """Display a tree graph of information about an asset """
233
249
  c = ctx.obj
234
- display_to_dos(search_string, c.view_server, c.view_server_url, c.userid,
235
- c.password, c.jupyter, c.width)
250
+ list_todos(search_string, status, c.view_server, c.view_server_url, c.userid,
251
+ c.password, c.jupyter, c.width)
252
+
253
+ @show.command('user-ids')
254
+ @click.pass_context
255
+ def show_todos(ctx):
256
+ """Display a tree graph of information about an asset """
257
+ c = ctx.obj
258
+ list_user_ids( c.view_server, c.view_server_url, c.userid,
259
+ c.password, c.jupyter, c.width)
236
260
 
237
261
  #
238
262
  # Tell
@@ -12,13 +12,15 @@ This is an emerging capability based on the **click** package. Feedback welcome!
12
12
  import click
13
13
  from trogon import tui
14
14
 
15
+ from examples.widgets.cat import list_todos
15
16
  from examples.widgets.cli.ops_config import Config
16
17
 
17
18
  from examples.widgets.my.monitor_open_todos import display_todos
18
19
  from examples.widgets.my.monitor_my_todos import display_my_todos
19
20
  from examples.widgets.my.list_my_profile import display_my_profile
20
21
  from examples.widgets.my.list_my_roles import display_my_roles
21
-
22
+ from examples.widgets.my.todo_actions import create_todo, delete_todo, change_todo_status, mark_todo_complete, \
23
+ reassign_todo
22
24
 
23
25
 
24
26
  # class Config(object):
@@ -148,6 +150,11 @@ def show_open_todos(ctx):
148
150
  def tell(ctx):
149
151
  """Perform actions an Egeria Objects"""
150
152
  pass
153
+ tell.add_command(create_todo)
154
+ tell.add_command(delete_todo)
155
+ tell.add_command(change_todo_status)
156
+ tell.add_command(mark_todo_complete)
157
+ tell.add_command(reassign_todo)
151
158
 
152
159
 
153
160
  if __name__ == '__main__':
@@ -14,8 +14,8 @@ from trogon import tui
14
14
 
15
15
  # from pyegeria import ServerOps
16
16
  from examples.widgets.cli.ops_config import Config
17
- from examples.widgets.ops.engine_actions import start_server as start_engine_host, \
18
- stop_server as stop_engine_host
17
+ from examples.widgets.ops.engine_actions import start_daemon as start_engine_host, \
18
+ stop_daemon as stop_engine_host
19
19
  from examples.widgets.ops.integration_daemon_actions import (add_catalog_target, remove_catalog_target,
20
20
  update_catalog_target, stop_server, start_server)
21
21
  from examples.widgets.ops.list_catalog_targets import display_catalog_targets