pyegeria 0.8.4.18__py3-none-any.whl → 0.8.4.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.
- {examples/widgets → commands}/cli/egeria.py +43 -43
- {examples/widgets → commands}/cli/egeria_cat.py +16 -16
- commands/cli/egeria_my.py +269 -0
- {examples/widgets → commands}/cli/egeria_ops.py +22 -23
- {examples/widgets → commands}/cli/egeria_tech.py +13 -13
- commands/ops/engine_actions.py +131 -0
- {examples/widgets → commands}/ops/integration_daemon_actions.py +33 -33
- commands/ops/refresh_integration_daemon.py +85 -0
- commands/ops/restart_integration_daemon.py +86 -0
- pyegeria/runtime_manager_omvs.py +951 -263
- {pyegeria-0.8.4.18.dist-info → pyegeria-0.8.4.20.dist-info}/METADATA +1 -1
- pyegeria-0.8.4.20.dist-info/RECORD +99 -0
- pyegeria-0.8.4.20.dist-info/entry_points.txt +60 -0
- examples/widgets/cli/egeria_my.py +0 -161
- examples/widgets/ops/engine_actions.py +0 -83
- examples/widgets/ops/refresh_integration_daemon.py +0 -73
- examples/widgets/ops/restart_integration_daemon.py +0 -73
- pyegeria-0.8.4.18.dist-info/RECORD +0 -99
- pyegeria-0.8.4.18.dist-info/entry_points.txt +0 -60
- {examples/widgets → commands}/cat/README.md +0 -0
- {examples/widgets → commands}/cat/__init__.py +0 -0
- {examples/widgets → commands}/cat/get_asset_graph.py +0 -0
- {examples/widgets → commands}/cat/get_collection.py +0 -0
- {examples/widgets → commands}/cat/get_project_dependencies.py +0 -0
- {examples/widgets → commands}/cat/get_project_structure.py +0 -0
- {examples/widgets → commands}/cat/get_tech_type_elements.py +0 -0
- {examples/widgets → commands}/cat/get_tech_type_template.py +0 -0
- {examples/widgets → commands}/cat/list_archives.py +0 -0
- {examples/widgets → commands}/cat/list_assets.py +0 -0
- {examples/widgets → commands}/cat/list_cert_types.py +0 -0
- {examples/widgets → commands}/cat/list_glossary.py +0 -0
- {examples/widgets → commands}/cat/list_projects.py +0 -0
- {examples/widgets → commands}/cat/list_relationships.py +0 -0
- {examples/widgets → commands}/cat/list_tech_types.py +0 -0
- {examples/widgets → commands}/cat/list_todos.py +0 -0
- {examples/widgets → commands}/cat/list_user_ids.py +0 -0
- {examples/widgets → commands}/cli/__init__.py +0 -0
- {examples/widgets → commands}/cli/ops_config.py +0 -0
- {examples/widgets → commands}/my/README.md +0 -0
- {examples/widgets → commands}/my/__init__.py +0 -0
- {examples/widgets → commands}/my/list_my_profile.py +0 -0
- {examples/widgets → commands}/my/list_my_roles.py +0 -0
- {examples/widgets → commands}/my/monitor_my_todos.py +0 -0
- {examples/widgets → commands}/my/monitor_open_todos.py +0 -0
- {examples/widgets → commands}/my/my_profile_actions.py +0 -0
- {examples/widgets → commands}/my/todo_actions.py +0 -0
- {examples/widgets → commands}/ops/README.md +0 -0
- {examples/widgets → commands}/ops/__init__.py +0 -0
- {examples/widgets → commands}/ops/list_catalog_targets.py +0 -0
- {examples/widgets → commands}/ops/load_archive.py +0 -0
- {examples/widgets → commands}/ops/monitor_asset_events.py +0 -0
- {examples/widgets → commands}/ops/monitor_coco_status.py +0 -0
- {examples/widgets → commands}/ops/monitor_engine_activity.py +0 -0
- {examples/widgets → commands}/ops/monitor_engine_activity_c.py +0 -0
- {examples/widgets → commands}/ops/monitor_gov_eng_status.py +0 -0
- {examples/widgets → commands}/ops/monitor_integ_daemon_status.py +0 -0
- {examples/widgets → commands}/ops/monitor_platform_status.py +0 -0
- {examples/widgets → commands}/ops/monitor_server_list.py +0 -0
- {examples/widgets → commands}/ops/monitor_server_status.py +0 -0
- {examples/widgets → commands}/tech/README.md +0 -0
- {examples/widgets → commands}/tech/__init__.py +0 -0
- {examples/widgets → commands}/tech/get_element_info.py +0 -0
- {examples/widgets → commands}/tech/get_guid_info.py +0 -0
- {examples/widgets → commands}/tech/get_tech_details.py +0 -0
- {examples/widgets → commands}/tech/list_asset_types.py +0 -0
- {examples/widgets → commands}/tech/list_elements.py +0 -0
- {examples/widgets → commands}/tech/list_elements_x.py +0 -0
- {examples/widgets → commands}/tech/list_registered_services.py +0 -0
- {examples/widgets → commands}/tech/list_related_specification.py +0 -0
- {examples/widgets → commands}/tech/list_relationship_types.py +0 -0
- {examples/widgets → commands}/tech/list_tech_templates.py +0 -0
- {examples/widgets → commands}/tech/list_valid_metadata_values.py +0 -0
- {examples/widgets → commands}/tech/x_list_related_elements.py +0 -0
- {pyegeria-0.8.4.18.dist-info → pyegeria-0.8.4.20.dist-info}/LICENSE +0 -0
- {pyegeria-0.8.4.18.dist-info → pyegeria-0.8.4.20.dist-info}/WHEEL +0 -0
pyegeria/runtime_manager_omvs.py
CHANGED
@@ -50,15 +50,18 @@ class RuntimeManager(Client):
|
|
50
50
|
"Default Local OMAG Server Platform" # this from the core content archive
|
51
51
|
)
|
52
52
|
|
53
|
+
#
|
54
|
+
# Cohorts
|
55
|
+
#
|
53
56
|
async def _async_connect_to_cohort(
|
54
57
|
self,
|
55
58
|
server_guid: str,
|
56
59
|
cohort_name: str,
|
57
60
|
) -> None:
|
58
61
|
"""A new server needs to register the metadataCollectionId for its metadata repository with the other servers
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
in the open metadata repository. It only needs to do this once and uses a timestamp to record that the
|
63
|
+
registration event has been sent. If the server has already registered in the past, it sends a
|
64
|
+
reregistration request. Async version.
|
62
65
|
|
63
66
|
https://egeria-project.org/concepts/cohort-member/
|
64
67
|
|
@@ -94,9 +97,9 @@ class RuntimeManager(Client):
|
|
94
97
|
cohort_name: str,
|
95
98
|
) -> None:
|
96
99
|
"""A new server needs to register the metadataCollectionId for its metadata repository with the other servers
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
+
in the open metadata repository. It only needs to do this once and uses a timestamp to record that the
|
101
|
+
registration event has been sent. If the server has already registered in the past, it sends a
|
102
|
+
reregistration request.
|
100
103
|
|
101
104
|
https://egeria-project.org/concepts/cohort-member/
|
102
105
|
|
@@ -128,7 +131,9 @@ class RuntimeManager(Client):
|
|
128
131
|
cohort_name: str,
|
129
132
|
) -> None:
|
130
133
|
"""Disconnect communications from a specific cohort. Async version.
|
134
|
+
|
131
135
|
https://egeria-project.org/concepts/cohort-member/
|
136
|
+
|
132
137
|
Parameters
|
133
138
|
----------
|
134
139
|
server_guid : str
|
@@ -155,22 +160,842 @@ class RuntimeManager(Client):
|
|
155
160
|
await self._async_make_request("GET", url)
|
156
161
|
return
|
157
162
|
|
158
|
-
def disconnect_from_cohort(
|
159
|
-
self,
|
160
|
-
server_guid: str,
|
161
|
-
cohort_name: str,
|
162
|
-
) -> None:
|
163
|
-
"""Disconnect communications from a specific cohort.
|
164
|
-
|
163
|
+
def disconnect_from_cohort(
|
164
|
+
self,
|
165
|
+
server_guid: str,
|
166
|
+
cohort_name: str,
|
167
|
+
) -> None:
|
168
|
+
"""Disconnect communications from a specific cohort.
|
169
|
+
|
170
|
+
https://egeria-project.org/concepts/cohort-member/
|
171
|
+
|
172
|
+
Parameters
|
173
|
+
----------
|
174
|
+
server_guid: str
|
175
|
+
Identity of the server to act on.
|
176
|
+
cohort_name: str
|
177
|
+
Name of the cohort to join
|
178
|
+
|
179
|
+
Returns
|
180
|
+
-------
|
181
|
+
None
|
182
|
+
|
183
|
+
Raises
|
184
|
+
------
|
185
|
+
InvalidParameterException
|
186
|
+
PropertyServerException
|
187
|
+
UserNotAuthorizedException
|
188
|
+
|
189
|
+
"""
|
190
|
+
loop = asyncio.get_event_loop()
|
191
|
+
loop.run_until_complete(
|
192
|
+
self._async_disconnect_from_cohort(server_guid, cohort_name)
|
193
|
+
)
|
194
|
+
return
|
195
|
+
|
196
|
+
async def _async_unregister_from_cohort(
|
197
|
+
self,
|
198
|
+
server_guid: str,
|
199
|
+
cohort_name: str,
|
200
|
+
) -> None:
|
201
|
+
"""Unregister from a specific cohort and disconnect from cohort communications. Async version.
|
202
|
+
|
203
|
+
https://egeria-project.org/concepts/cohort-member/
|
204
|
+
|
205
|
+
Parameters
|
206
|
+
----------
|
207
|
+
server_guid : str
|
208
|
+
Identity of the server to act on.
|
209
|
+
cohort_name : str
|
210
|
+
Name of the cohort to join
|
211
|
+
|
212
|
+
Returns
|
213
|
+
-------
|
214
|
+
None
|
215
|
+
|
216
|
+
Raises
|
217
|
+
------
|
218
|
+
InvalidParameterException
|
219
|
+
PropertyServerException
|
220
|
+
UserNotAuthorizedException
|
221
|
+
|
222
|
+
"""
|
223
|
+
|
224
|
+
url = (
|
225
|
+
f"{self.cur_command_root}/cohort-members/"
|
226
|
+
f"{server_guid}/cohorts/{cohort_name}/unregister"
|
227
|
+
)
|
228
|
+
await self._async_make_request("GET", url)
|
229
|
+
return
|
230
|
+
|
231
|
+
def unregister_from_cohort(
|
232
|
+
self,
|
233
|
+
server_guid: str,
|
234
|
+
cohort_name: str,
|
235
|
+
) -> None:
|
236
|
+
"""Unregister from a specific cohort and disconnect from cohort communications.
|
237
|
+
https://egeria-project.org/concepts/cohort-member/
|
238
|
+
|
239
|
+
Parameters
|
240
|
+
----------
|
241
|
+
server_guid: str
|
242
|
+
Identity of the server to act on.
|
243
|
+
cohort_name: str
|
244
|
+
Name of the cohort to join
|
245
|
+
|
246
|
+
Returns
|
247
|
+
-------
|
248
|
+
None
|
249
|
+
|
250
|
+
Raises
|
251
|
+
------
|
252
|
+
InvalidParameterException
|
253
|
+
PropertyServerException
|
254
|
+
UserNotAuthorizedException
|
255
|
+
|
256
|
+
"""
|
257
|
+
loop = asyncio.get_event_loop()
|
258
|
+
loop.run_until_complete(
|
259
|
+
self._async_disconnect_from_cohort(server_guid, cohort_name)
|
260
|
+
)
|
261
|
+
return
|
262
|
+
|
263
|
+
#
|
264
|
+
# Governance Engines
|
265
|
+
#
|
266
|
+
|
267
|
+
async def _async_refresh_gov_eng_config(
|
268
|
+
self,
|
269
|
+
server_guid: str,
|
270
|
+
gov_engine_name: str = None,
|
271
|
+
) -> None:
|
272
|
+
"""Request that the governance engine refresh its configuration by calling the metadata server. This request is
|
273
|
+
useful if the metadata server has an outage, particularly while the governance server is initializing.
|
274
|
+
This request just ensures that the latest configuration is in use. Async version.
|
275
|
+
|
276
|
+
https://egeria-project.org/concepts/governance-engine-definition/
|
277
|
+
|
278
|
+
Parameters
|
279
|
+
----------
|
280
|
+
server_guid : str
|
281
|
+
Identity of the server to act on.
|
282
|
+
gov_engine_name : str, Opt
|
283
|
+
Name of the governance engine to refresh. If None, then all governance engines will be refreshed.
|
284
|
+
|
285
|
+
Returns
|
286
|
+
-------
|
287
|
+
None
|
288
|
+
|
289
|
+
Raises
|
290
|
+
------
|
291
|
+
InvalidParameterException
|
292
|
+
PropertyServerException
|
293
|
+
UserNotAuthorizedException
|
294
|
+
|
295
|
+
"""
|
296
|
+
|
297
|
+
url = (
|
298
|
+
f"{self.cur_command_root}/engine-hosts/"
|
299
|
+
f"{server_guid}/governance_engines/{gov_engine_name}/refresh-config"
|
300
|
+
)
|
301
|
+
await self._async_make_request("GET", url)
|
302
|
+
return
|
303
|
+
|
304
|
+
def refresh_gov_eng_config(
|
305
|
+
self,
|
306
|
+
server_guid: str,
|
307
|
+
gov_engine_name: str = None,
|
308
|
+
) -> None:
|
309
|
+
"""Request that the governance engine refresh its configuration by calling the metadata server. This request is
|
310
|
+
useful if the metadata server has an outage, particularly while the governance server is initializing.
|
311
|
+
This request just ensures that the latest configuration is in use.
|
312
|
+
|
313
|
+
https://egeria-project.org/concepts/governance-engine-definition/
|
314
|
+
|
315
|
+
Parameters
|
316
|
+
----------
|
317
|
+
server_guid : str
|
318
|
+
Identity of the server to act on.
|
319
|
+
gov_engine_name : str
|
320
|
+
Name of the governance engine to refresh. If None, then all governance engines will be refreshed.
|
321
|
+
|
322
|
+
Returns
|
323
|
+
-------
|
324
|
+
None
|
325
|
+
|
326
|
+
Raises
|
327
|
+
------
|
328
|
+
InvalidParameterException
|
329
|
+
PropertyServerException
|
330
|
+
UserNotAuthorizedException
|
331
|
+
|
332
|
+
"""
|
333
|
+
loop = asyncio.get_event_loop()
|
334
|
+
loop.run_until_complete(
|
335
|
+
self._async_refresh_gov_eng_config(server_guid, gov_engine_name)
|
336
|
+
)
|
337
|
+
return
|
338
|
+
|
339
|
+
#
|
340
|
+
# Integration Connector Methods
|
341
|
+
#
|
342
|
+
async def _async_get_integ_connector_config_properties(
|
343
|
+
self,
|
344
|
+
server_guid: str,
|
345
|
+
connector_name: str,
|
346
|
+
) -> dict | str:
|
347
|
+
"""Retrieve the configuration properties of the named integration connector running in the integration daemon.
|
348
|
+
Async version.
|
349
|
+
|
350
|
+
https://egeria-project.org/concepts/integration-connector/
|
351
|
+
|
352
|
+
Parameters
|
353
|
+
----------
|
354
|
+
server_guid : str
|
355
|
+
Identity of the server to act on.
|
356
|
+
connector_name : str
|
357
|
+
Name of the integration connector to retrieve properties for.
|
358
|
+
|
359
|
+
Returns
|
360
|
+
-------
|
361
|
+
Dict of the connector configuration properties.
|
362
|
+
|
363
|
+
Raises
|
364
|
+
------
|
365
|
+
InvalidParameterException
|
366
|
+
PropertyServerException
|
367
|
+
UserNotAuthorizedException
|
368
|
+
|
369
|
+
"""
|
370
|
+
|
371
|
+
url = (
|
372
|
+
f"{self.cur_command_root}/integration-daemons/"
|
373
|
+
f"{server_guid}/integration-connectors/{connector_name}/configuration-properties"
|
374
|
+
)
|
375
|
+
response = await self._async_make_request("GET", url)
|
376
|
+
return response.json().get("properties", "No pproperties found")
|
377
|
+
|
378
|
+
def get_integ_connector_config_properties(
|
379
|
+
self,
|
380
|
+
server_guid: str,
|
381
|
+
connector_name: str,
|
382
|
+
) -> dict | str:
|
383
|
+
"""Retrieve the configuration properties of the named integration connector running in the integration daemon.
|
384
|
+
Async version.
|
385
|
+
|
386
|
+
https://egeria-project.org/concepts/integration-connector/
|
387
|
+
|
388
|
+
Parameters
|
389
|
+
----------
|
390
|
+
server_guid : str
|
391
|
+
Identity of the server to act on.
|
392
|
+
connector_name : str
|
393
|
+
Name of the integration connector to retrieve properties for.
|
394
|
+
Returns
|
395
|
+
-------
|
396
|
+
None
|
397
|
+
|
398
|
+
Raises
|
399
|
+
------
|
400
|
+
InvalidParameterException
|
401
|
+
PropertyServerException
|
402
|
+
UserNotAuthorizedException
|
403
|
+
|
404
|
+
"""
|
405
|
+
loop = asyncio.get_event_loop()
|
406
|
+
response = loop.run_until_complete(
|
407
|
+
self._async_get_integ_connector_config_properties(
|
408
|
+
server_guid, connector_name
|
409
|
+
)
|
410
|
+
)
|
411
|
+
return response
|
412
|
+
|
413
|
+
async def _async_update_connector_connection(
|
414
|
+
self,
|
415
|
+
server_guid: str,
|
416
|
+
connector_name: str,
|
417
|
+
merge_update: bool = False,
|
418
|
+
config_properties: dict = None,
|
419
|
+
) -> None:
|
420
|
+
"""Update the configuration properties of the integration connectors, or specific integration connector
|
421
|
+
if a connector name is supplied. This update is in memory and will not persist over a server restart.
|
422
|
+
Async version.
|
423
|
+
|
424
|
+
https://egeria-project.org/concepts/integration-connector/
|
425
|
+
|
426
|
+
Parameters
|
427
|
+
----------
|
428
|
+
server_guid : str
|
429
|
+
Identity of the server to act on.
|
430
|
+
connector_name : str
|
431
|
+
Name of the integration connector to retrieve properties for.
|
432
|
+
merge_update : bool, optional, default = False
|
433
|
+
Specifies whether properties should be over-written or completely replace existing properties. If False
|
434
|
+
the values will be replaced; if True, they will be merged.
|
435
|
+
config_properties : dict, optional, default = None
|
436
|
+
A dict of Property Name, Property Value pairs.
|
437
|
+
|
438
|
+
Returns
|
439
|
+
-------
|
440
|
+
None
|
441
|
+
|
442
|
+
Raises
|
443
|
+
------
|
444
|
+
InvalidParameterException
|
445
|
+
PropertyServerException
|
446
|
+
UserNotAuthorizedException
|
447
|
+
|
448
|
+
"""
|
449
|
+
|
450
|
+
url = (
|
451
|
+
f"{self.cur_command_root}/integration-daemons/"
|
452
|
+
f"{server_guid}/integration-connectors/{connector_name}/configuration-properties"
|
453
|
+
)
|
454
|
+
|
455
|
+
body = {
|
456
|
+
"class": "ConnectorConfigPropertiesRequestBody",
|
457
|
+
"connectorName": connector_name,
|
458
|
+
"mergeUpdate": merge_update,
|
459
|
+
"configurationProperties": config_properties,
|
460
|
+
}
|
461
|
+
await self._async_make_request("POST", url, body)
|
462
|
+
return
|
463
|
+
|
464
|
+
def update_connector_connection(
|
465
|
+
self,
|
466
|
+
server_guid: str,
|
467
|
+
connector_name: str,
|
468
|
+
merge_update: bool = False,
|
469
|
+
config_properties: dict = None,
|
470
|
+
) -> None:
|
471
|
+
"""Update the configuration properties of the integration connectors, or specific integration connector
|
472
|
+
if a connector name is supplied. This update is in memory and will not persist over a server restart.
|
473
|
+
|
474
|
+
https://egeria-project.org/concepts/integration-connector/
|
475
|
+
|
476
|
+
Parameters
|
477
|
+
----------
|
478
|
+
server_guid : str
|
479
|
+
Identity of the server to act on.
|
480
|
+
connector_name : str
|
481
|
+
Name of the integration connector to retrieve properties for.
|
482
|
+
merge_update : bool, optional, default = False
|
483
|
+
Specifies whether properties should be over-written or completely replace existing properties. If False
|
484
|
+
the values will be replaced; if True, they will be merged.
|
485
|
+
config_properties : dict, optional, default = None
|
486
|
+
A dict of Property Name, Property Value pairs.
|
487
|
+
|
488
|
+
Returns
|
489
|
+
-------
|
490
|
+
None
|
491
|
+
|
492
|
+
Raises
|
493
|
+
------
|
494
|
+
InvalidParameterException
|
495
|
+
PropertyServerException
|
496
|
+
UserNotAuthorizedException
|
497
|
+
|
498
|
+
"""
|
499
|
+
loop = asyncio.get_event_loop()
|
500
|
+
loop.run_until_complete(
|
501
|
+
self._async_update_connector_connection(
|
502
|
+
server_guid, connector_name, merge_update, config_properties
|
503
|
+
)
|
504
|
+
)
|
505
|
+
return
|
506
|
+
|
507
|
+
async def _async_update_endpoint_address(
|
508
|
+
self, server_guid: str, connector_name: str, endpoint_address: str
|
509
|
+
) -> None:
|
510
|
+
"""Update the endpoint network address for a specific integration connector. Typically used for discovery.
|
511
|
+
This update is in memory and will not persist over a server restart. Async version.
|
512
|
+
|
513
|
+
https://egeria-project.org/concepts/integration-connector/
|
514
|
+
|
515
|
+
Parameters
|
516
|
+
----------
|
517
|
+
server_guid : str
|
518
|
+
Identity of the server to act on.
|
519
|
+
connector_name : str
|
520
|
+
Name of the integration connector to retrieve properties for.
|
521
|
+
endpoint_address : str
|
522
|
+
Specifies the new network endpoint address. This is the full address string - can include protocol,
|
523
|
+
port, operation, etc.
|
524
|
+
|
525
|
+
Returns
|
526
|
+
-------
|
527
|
+
None
|
528
|
+
|
529
|
+
Raises
|
530
|
+
------
|
531
|
+
InvalidParameterException
|
532
|
+
PropertyServerException
|
533
|
+
UserNotAuthorizedException
|
534
|
+
|
535
|
+
"""
|
536
|
+
|
537
|
+
url = (
|
538
|
+
f"{self.cur_command_root}/integration-daemons/"
|
539
|
+
f"{server_guid}/integration-connectors/{connector_name}/endpoint-network-address"
|
540
|
+
)
|
541
|
+
|
542
|
+
body = {
|
543
|
+
"class": "StringRequestBody",
|
544
|
+
"string": endpoint_address,
|
545
|
+
}
|
546
|
+
await self._async_make_request("POST", url, body)
|
547
|
+
return
|
548
|
+
|
549
|
+
def update_endpoint_address(
|
550
|
+
self, server_guid: str, connector_name: str, endpoint_address: str
|
551
|
+
) -> None:
|
552
|
+
"""Update the endpoint network address for a specific integration connector. Typically used for discovery.
|
553
|
+
This update is in memory and will not persist over a server restart. Async version.
|
554
|
+
|
555
|
+
https://egeria-project.org/concepts/integration-connector/
|
556
|
+
|
557
|
+
Parameters
|
558
|
+
----------
|
559
|
+
server_guid : str
|
560
|
+
Identity of the server to act on.
|
561
|
+
connector_name : str
|
562
|
+
Name of the integration connector to retrieve properties for.
|
563
|
+
endpoint_address : str
|
564
|
+
Specifies the new network endpoint address. This is the full address string - can include protocol,
|
565
|
+
port, operation, etc.
|
566
|
+
|
567
|
+
Returns
|
568
|
+
-------
|
569
|
+
None
|
570
|
+
|
571
|
+
Raises
|
572
|
+
------
|
573
|
+
InvalidParameterException
|
574
|
+
PropertyServerException
|
575
|
+
UserNotAuthorizedException
|
576
|
+
|
577
|
+
"""
|
578
|
+
loop = asyncio.get_event_loop()
|
579
|
+
loop.run_until_complete(
|
580
|
+
self._async_update_endpoint_address(
|
581
|
+
server_guid, connector_name, endpoint_address
|
582
|
+
)
|
583
|
+
)
|
584
|
+
return
|
585
|
+
|
586
|
+
async def _async_refresh_integration_connectors(
|
587
|
+
self, server_guid: str, connector_name: str = None
|
588
|
+
) -> None:
|
589
|
+
"""Issue a refresh() request on all connectors running in the integration daemon, or a specific connector if
|
590
|
+
the connector name is specified. Async version.
|
591
|
+
|
592
|
+
https://egeria-project.org/concepts/integration-connector/
|
593
|
+
|
594
|
+
Parameters
|
595
|
+
----------
|
596
|
+
server_guid : str
|
597
|
+
Identity of the server to act on.
|
598
|
+
connector_name : str, opt
|
599
|
+
Name of the integration connector to retrieve properties for. If None, all connectors refreshed.
|
600
|
+
|
601
|
+
Returns
|
602
|
+
-------
|
603
|
+
None
|
604
|
+
|
605
|
+
Raises
|
606
|
+
------
|
607
|
+
InvalidParameterException
|
608
|
+
PropertyServerException
|
609
|
+
UserNotAuthorizedException
|
610
|
+
|
611
|
+
"""
|
612
|
+
|
613
|
+
url = (
|
614
|
+
f"{self.cur_command_root}/integration-daemons/"
|
615
|
+
f"{server_guid}/integration-connectors/refresh"
|
616
|
+
)
|
617
|
+
|
618
|
+
body = {
|
619
|
+
"class": "NameRequestBody",
|
620
|
+
"string": connector_name,
|
621
|
+
}
|
622
|
+
await self._async_make_request("POST", url, body_slimmer(body))
|
623
|
+
return
|
624
|
+
|
625
|
+
def refresh_integration_connectors(
|
626
|
+
self, server_guid: str, connector_name: str = None
|
627
|
+
) -> None:
|
628
|
+
"""Issue a refresh() request on all connectors running in the integration daemon, or a specific connector if
|
629
|
+
the connector name is specified.
|
630
|
+
|
631
|
+
https://egeria-project.org/concepts/integration-connector/
|
632
|
+
|
633
|
+
Parameters
|
634
|
+
----------
|
635
|
+
server_guid : str
|
636
|
+
Identity of the server to act on.
|
637
|
+
connector_name : str, opt
|
638
|
+
Name of the integration connector to retrieve properties for. If None, all connectors refreshed.
|
639
|
+
|
640
|
+
Returns
|
641
|
+
-------
|
642
|
+
None
|
643
|
+
|
644
|
+
Raises
|
645
|
+
------
|
646
|
+
InvalidParameterException
|
647
|
+
PropertyServerException
|
648
|
+
UserNotAuthorizedException
|
649
|
+
|
650
|
+
"""
|
651
|
+
loop = asyncio.get_event_loop()
|
652
|
+
loop.run_until_complete(
|
653
|
+
self._async_refresh_integration_connectors(server_guid, connector_name)
|
654
|
+
)
|
655
|
+
return
|
656
|
+
|
657
|
+
async def _async_restart_integration_connectors(
|
658
|
+
self, server_guid: str, connector_name: str = None
|
659
|
+
) -> None:
|
660
|
+
"""Issue a restart() request on all connectors running in the integration daemon, or a specific connector if
|
661
|
+
the connector name is specified. Async version.
|
662
|
+
|
663
|
+
https://egeria-project.org/concepts/integration-connector/
|
664
|
+
|
665
|
+
Parameters
|
666
|
+
----------
|
667
|
+
server_guid : str
|
668
|
+
Identity of the server to act on.
|
669
|
+
connector_name : str, opt
|
670
|
+
Name of the integration connector to retrieve properties for. If None, all connectors restarted.
|
671
|
+
|
672
|
+
Returns
|
673
|
+
-------
|
674
|
+
None
|
675
|
+
|
676
|
+
Raises
|
677
|
+
------
|
678
|
+
InvalidParameterException
|
679
|
+
PropertyServerException
|
680
|
+
UserNotAuthorizedException
|
681
|
+
|
682
|
+
"""
|
683
|
+
|
684
|
+
url = (
|
685
|
+
f"{self.cur_command_root}/integration-daemons/"
|
686
|
+
f"{server_guid}/integration-connectors/restart"
|
687
|
+
)
|
688
|
+
|
689
|
+
body = {
|
690
|
+
"class": "NameRequestBody",
|
691
|
+
"string": connector_name,
|
692
|
+
}
|
693
|
+
await self._async_make_request("POST", url, body_slimmer(body))
|
694
|
+
return
|
695
|
+
|
696
|
+
def restart_integration_connectors(
|
697
|
+
self, server_guid: str, connector_name: str = None
|
698
|
+
) -> None:
|
699
|
+
"""Issue a restart() request on all connectors running in the integration daemon, or a specific connector if
|
700
|
+
the connector name is specified.
|
701
|
+
|
702
|
+
https://egeria-project.org/concepts/integration-connector/
|
703
|
+
|
704
|
+
Parameters
|
705
|
+
----------
|
706
|
+
server_guid : str
|
707
|
+
Identity of the server to act on.
|
708
|
+
connector_name : str, opt
|
709
|
+
Name of the integration connector to retrieve properties for. If None, all connectors restarted.
|
710
|
+
|
711
|
+
Returns
|
712
|
+
-------
|
713
|
+
None
|
714
|
+
|
715
|
+
Raises
|
716
|
+
------
|
717
|
+
InvalidParameterException
|
718
|
+
PropertyServerException
|
719
|
+
UserNotAuthorizedException
|
720
|
+
|
721
|
+
"""
|
722
|
+
loop = asyncio.get_event_loop()
|
723
|
+
loop.run_until_complete(
|
724
|
+
self._async_restart_integration_connectors(server_guid, connector_name)
|
725
|
+
)
|
726
|
+
return
|
727
|
+
|
728
|
+
async def _async_refresh_integ_group_config(
|
729
|
+
self, server_guid: str, integ_group_name: str = None
|
730
|
+
) -> None:
|
731
|
+
"""Request that the integration group refresh its configuration by calling the metadata access server.
|
732
|
+
Changes to the connector configuration will result in the affected connectors being restarted.
|
733
|
+
This request is useful if the metadata access server has an outage, particularly while the integration
|
734
|
+
daemon is initializing. This request just ensures that the latest configuration is in use. Async version.
|
735
|
+
|
736
|
+
https://egeria-project.org/concepts/integration-connector/
|
737
|
+
|
738
|
+
Parameters
|
739
|
+
----------
|
740
|
+
server_guid : str
|
741
|
+
Identity of the server to act on.
|
742
|
+
integ_group_name : str, opt, default = None
|
743
|
+
Name of the integration group to refresh. If None, all groups are refreshed.
|
744
|
+
|
745
|
+
Returns
|
746
|
+
-------
|
747
|
+
None
|
748
|
+
|
749
|
+
Raises
|
750
|
+
------
|
751
|
+
InvalidParameterException
|
752
|
+
PropertyServerException
|
753
|
+
UserNotAuthorizedException
|
754
|
+
|
755
|
+
"""
|
756
|
+
|
757
|
+
url = (
|
758
|
+
f"{self.cur_command_root}/integration-daemons/"
|
759
|
+
f"{server_guid}/integration-groups/{integ_group_name}/refresh-config"
|
760
|
+
)
|
761
|
+
|
762
|
+
await self._async_make_request("GET", url)
|
763
|
+
return
|
764
|
+
|
765
|
+
def refresh_integ_group_config(
|
766
|
+
self, server_guid: str, integ_group_name: str = None
|
767
|
+
) -> None:
|
768
|
+
"""Request that the integration group refresh its configuration by calling the metadata access server.
|
769
|
+
Changes to the connector configuration will result in the affected connectors being restarted.
|
770
|
+
This request is useful if the metadata access server has an outage, particularly while the integration
|
771
|
+
daemon is initializing. This request just ensures that the latest configuration is in use.
|
772
|
+
|
773
|
+
https://egeria-project.org/concepts/integration-connector/
|
774
|
+
|
775
|
+
Parameters
|
776
|
+
----------
|
777
|
+
server_guid : str
|
778
|
+
Identity of the server to act on.
|
779
|
+
integ_group_name : str, opt, default = None
|
780
|
+
Name of the integration group to refresh. If None, all groups are refreshed.
|
781
|
+
|
782
|
+
Returns
|
783
|
+
-------
|
784
|
+
None
|
785
|
+
|
786
|
+
Raises
|
787
|
+
------
|
788
|
+
InvalidParameterException
|
789
|
+
PropertyServerException
|
790
|
+
UserNotAuthorizedException
|
791
|
+
|
792
|
+
"""
|
793
|
+
loop = asyncio.get_event_loop()
|
794
|
+
loop.run_until_complete(
|
795
|
+
self._async_refresh_integ_group_config(server_guid, integ_group_name)
|
796
|
+
)
|
797
|
+
return
|
798
|
+
|
799
|
+
#
|
800
|
+
# Open Lineage & Archives
|
801
|
+
#
|
802
|
+
async def _async_publish_open_lineage_event(
|
803
|
+
self, server_guid: str, ol_event: dict
|
804
|
+
) -> None:
|
805
|
+
"""Send an Open Lineage event to the integration daemon. It will pass it on to the integration connectors that
|
806
|
+
have registered a listener for open lineage events. Async version.
|
807
|
+
|
808
|
+
https://egeria-project.org/features/lineage-management/overview/#the-openlineage-standard
|
809
|
+
|
810
|
+
Parameters
|
811
|
+
----------
|
812
|
+
server_guid : str
|
813
|
+
Identity of the server to act on.
|
814
|
+
ol_event : dict
|
815
|
+
Dict containing the user specified Open Lineage event.
|
816
|
+
|
817
|
+
Returns
|
818
|
+
-------
|
819
|
+
None
|
820
|
+
|
821
|
+
Raises
|
822
|
+
------
|
823
|
+
InvalidParameterException
|
824
|
+
PropertyServerException
|
825
|
+
UserNotAuthorizedException
|
826
|
+
|
827
|
+
"""
|
828
|
+
|
829
|
+
url = (
|
830
|
+
f"{self.cur_command_root}/integration-daemons/"
|
831
|
+
f"{server_guid}/integration-daemons/{server_guid}/open-lineage-events/publish"
|
832
|
+
)
|
833
|
+
|
834
|
+
await self._async_make_request("POST", url, ol_event)
|
835
|
+
return
|
836
|
+
|
837
|
+
def publish_open_lineage_event(self, server_guid: str, ol_event: dict) -> None:
|
838
|
+
"""Send an Open Lineage event to the integration daemon. It will pass it on to the integration connectors that
|
839
|
+
have registered a listener for open lineage events.
|
840
|
+
|
841
|
+
https://egeria-project.org/features/lineage-management/overview/#the-openlineage-standard
|
842
|
+
|
843
|
+
Parameters
|
844
|
+
----------
|
845
|
+
server_guid : str
|
846
|
+
Identity of the server to act on.
|
847
|
+
ol_event : dict
|
848
|
+
Dict containing the user specified Open Lineage event.
|
849
|
+
|
850
|
+
Returns
|
851
|
+
-------
|
852
|
+
None
|
853
|
+
|
854
|
+
Raises
|
855
|
+
------
|
856
|
+
InvalidParameterException
|
857
|
+
PropertyServerException
|
858
|
+
UserNotAuthorizedException
|
859
|
+
|
860
|
+
"""
|
861
|
+
loop = asyncio.get_event_loop()
|
862
|
+
loop.run_until_complete(
|
863
|
+
self._async_publish_open_lineage_event(server_guid, ol_event)
|
864
|
+
)
|
865
|
+
return
|
866
|
+
|
867
|
+
async def _async_add_archive_content(
|
868
|
+
self, server_guid: str, archive_content: dict
|
869
|
+
) -> None:
|
870
|
+
"""An open metadata archive contains metadata types and instances.
|
871
|
+
This operation loads the supplied open metadata archive into the local repository. It can be used with OMAG
|
872
|
+
servers that are of type Open Metadata Store. Async version.
|
873
|
+
|
874
|
+
https://egeria-project.org/concepts/open-metadata-archives/
|
875
|
+
|
876
|
+
Parameters
|
877
|
+
----------
|
878
|
+
server_guid : str
|
879
|
+
Identity of the server to act on.
|
880
|
+
archive_content : dict
|
881
|
+
A dict containing the content of the archive to load.
|
882
|
+
|
883
|
+
Returns
|
884
|
+
-------
|
885
|
+
None
|
886
|
+
|
887
|
+
Raises
|
888
|
+
------
|
889
|
+
InvalidParameterException
|
890
|
+
PropertyServerException
|
891
|
+
UserNotAuthorizedException
|
892
|
+
|
893
|
+
"""
|
894
|
+
|
895
|
+
url = (
|
896
|
+
f"{self.cur_command_root}/metadata-access-stores/{server_guid}/instance/load/open-metadata-archives/"
|
897
|
+
f"archive-content"
|
898
|
+
)
|
899
|
+
|
900
|
+
await self._async_make_request("POST", url, archive_content)
|
901
|
+
return
|
902
|
+
|
903
|
+
def add_archive_content(self, server_guid: str, archive_content: dict) -> None:
|
904
|
+
"""An open metadata archive contains metadata types and instances.
|
905
|
+
This operation loads the supplied open metadata archive into the local repository. It can be used with OMAG
|
906
|
+
servers that are of type Open Metadata Store.
|
907
|
+
|
908
|
+
https://egeria-project.org/concepts/open-metadata-archives/
|
909
|
+
|
910
|
+
Parameters
|
911
|
+
----------
|
912
|
+
server_guid : str
|
913
|
+
Identity of the server to act on.
|
914
|
+
archive_content : dict
|
915
|
+
A dict containing the content of the archive to load.
|
916
|
+
|
917
|
+
Returns
|
918
|
+
-------
|
919
|
+
None
|
920
|
+
|
921
|
+
Raises
|
922
|
+
------
|
923
|
+
InvalidParameterException
|
924
|
+
PropertyServerException
|
925
|
+
UserNotAuthorizedException
|
926
|
+
|
927
|
+
"""
|
928
|
+
loop = asyncio.get_event_loop()
|
929
|
+
loop.run_until_complete(
|
930
|
+
self._async_add_archive_content(server_guid, archive_content)
|
931
|
+
)
|
932
|
+
return
|
933
|
+
|
934
|
+
async def _async_add_archive_file(
|
935
|
+
self,
|
936
|
+
archive_file: str,
|
937
|
+
server_guid: str,
|
938
|
+
time_out: int = 60,
|
939
|
+
) -> None:
|
940
|
+
"""Add a new open metadata archive to running OMAG Server's repository.
|
941
|
+
An open metadata archive contains metadata types and instances. This operation loads an open metadata archive
|
942
|
+
that is stored in the named file. It can be used with OMAG servers that are of type Open Metadata Store.
|
943
|
+
Async version.
|
944
|
+
|
945
|
+
https://egeria-project.org/concepts/open-metadata-archives/
|
946
|
+
|
947
|
+
Parameters
|
948
|
+
----------
|
949
|
+
archive_file: str
|
950
|
+
Open metadata archive file to load.
|
951
|
+
server_guid: str
|
952
|
+
GUID of the server to load the file into.
|
953
|
+
time_out: int, optional
|
954
|
+
Time out for the rest call.
|
955
|
+
|
956
|
+
Returns
|
957
|
+
-------
|
958
|
+
Response
|
959
|
+
None
|
960
|
+
|
961
|
+
Raises
|
962
|
+
------
|
963
|
+
InvalidParameterException
|
964
|
+
PropertyServerException
|
965
|
+
UserNotAuthorizedException
|
966
|
+
|
967
|
+
"""
|
968
|
+
|
969
|
+
url = f"{self.cur_command_root}/metadata-access-stores/{server_guid}/instance/load/open-metadata-archives/file"
|
970
|
+
|
971
|
+
await self._async_make_request(
|
972
|
+
"POST-DATA", url, archive_file, time_out=time_out
|
973
|
+
)
|
974
|
+
return
|
975
|
+
|
976
|
+
def add_archive_file(
|
977
|
+
self,
|
978
|
+
archive_file: str,
|
979
|
+
server_guid: str,
|
980
|
+
time_out: int = 60,
|
981
|
+
) -> None:
|
982
|
+
"""Add a new open metadata archive to running OMAG Server's repository.
|
983
|
+
An open metadata archive contains metadata types and instances. This operation loads an open metadata archive
|
984
|
+
that is stored in the named file. It can be used with OMAG servers that are of type Open Metadata Store.
|
985
|
+
|
986
|
+
https://egeria-project.org/concepts/open-metadata-archives/
|
987
|
+
|
165
988
|
Parameters
|
166
989
|
----------
|
990
|
+
archive_file: str
|
991
|
+
Open metadata archive file to load.
|
167
992
|
server_guid: str
|
168
|
-
|
169
|
-
|
170
|
-
Name of the cohort to join
|
993
|
+
GUID of the server to load the file into.
|
994
|
+
time_out: int, optional, default = 60 seconds
|
171
995
|
|
172
996
|
Returns
|
173
997
|
-------
|
998
|
+
Response
|
174
999
|
None
|
175
1000
|
|
176
1001
|
Raises
|
@@ -180,28 +1005,28 @@ class RuntimeManager(Client):
|
|
180
1005
|
UserNotAuthorizedException
|
181
1006
|
|
182
1007
|
"""
|
1008
|
+
|
183
1009
|
loop = asyncio.get_event_loop()
|
184
1010
|
loop.run_until_complete(
|
185
|
-
self.
|
1011
|
+
self._async_add_archive_file(archive_file, server_guid, time_out)
|
186
1012
|
)
|
187
1013
|
return
|
188
1014
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
1015
|
+
#
|
1016
|
+
# Server & Platform admin
|
1017
|
+
#
|
1018
|
+
async def _async_shutdown_and_unregister_server(self, server_guid: str) -> None:
|
1019
|
+
"""Shutdown the named OMAG server. The server will also be removed from any open metadata repository cohorts
|
1020
|
+
it has registered with. Async version.
|
1021
|
+
|
196
1022
|
Parameters
|
197
1023
|
----------
|
198
1024
|
server_guid : str
|
199
1025
|
Identity of the server to act on.
|
200
|
-
cohort_name : str
|
201
|
-
Name of the cohort to join
|
202
1026
|
|
203
1027
|
Returns
|
204
1028
|
-------
|
1029
|
+
Response
|
205
1030
|
None
|
206
1031
|
|
207
1032
|
Raises
|
@@ -212,30 +1037,24 @@ class RuntimeManager(Client):
|
|
212
1037
|
|
213
1038
|
"""
|
214
1039
|
|
215
|
-
url =
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
await self._async_make_request("GET", url)
|
1040
|
+
url = f"{self.cur_command_root}/omag-servers/{server_guid}"
|
1041
|
+
|
1042
|
+
await self._async_make_request("DELETE", url)
|
1043
|
+
|
220
1044
|
return
|
221
1045
|
|
222
|
-
def
|
223
|
-
|
224
|
-
|
225
|
-
cohort_name: str,
|
226
|
-
) -> None:
|
227
|
-
"""Unregister from a specific cohort and disconnect from cohort communications.
|
228
|
-
https://egeria-project.org/concepts/cohort-member/
|
1046
|
+
def shutdown_and_unregister_server(self, server_guid: str) -> None:
|
1047
|
+
"""Shutdown the named OMAG server. The server will also be removed from any open metadata repository cohorts
|
1048
|
+
it has registered with.
|
229
1049
|
|
230
1050
|
Parameters
|
231
1051
|
----------
|
232
|
-
server_guid: str
|
233
|
-
|
234
|
-
cohort_name: str
|
235
|
-
Name of the cohort to join
|
1052
|
+
server_guid : str
|
1053
|
+
Identity of the server to act on.
|
236
1054
|
|
237
1055
|
Returns
|
238
1056
|
-------
|
1057
|
+
Response
|
239
1058
|
None
|
240
1059
|
|
241
1060
|
Raises
|
@@ -246,28 +1065,19 @@ class RuntimeManager(Client):
|
|
246
1065
|
|
247
1066
|
"""
|
248
1067
|
loop = asyncio.get_event_loop()
|
249
|
-
loop.run_until_complete(
|
250
|
-
self._async_disconnect_from_cohort(server_guid, cohort_name)
|
251
|
-
)
|
1068
|
+
loop.run_until_complete(self._async_shutdown_and_unregister_server(server_guid))
|
252
1069
|
return
|
253
1070
|
|
254
|
-
async def
|
255
|
-
|
256
|
-
|
257
|
-
gov_engine_name: str,
|
258
|
-
) -> None:
|
259
|
-
"""Request that the governance engine refresh its configuration by calling the metadata server. This request is
|
260
|
-
useful if the metadata server has an outage, particularly while the governance server is initializing.
|
261
|
-
This request just ensures that the latest configuration is in use. Async version.
|
1071
|
+
async def _async_activate_server_with_stored_config(self, server_guid: str) -> None:
|
1072
|
+
"""Activate the named OMAG server using the appropriate configuration document found in the
|
1073
|
+
configuration store. Async version.
|
262
1074
|
|
263
|
-
|
1075
|
+
https://egeria-project.org/concepts/configuration-document
|
264
1076
|
|
265
1077
|
Parameters
|
266
1078
|
----------
|
267
1079
|
server_guid : str
|
268
1080
|
Identity of the server to act on.
|
269
|
-
gov_engine_name : str
|
270
|
-
Name of the governance engine to refresh.
|
271
1081
|
|
272
1082
|
Returns
|
273
1083
|
-------
|
@@ -281,30 +1091,21 @@ class RuntimeManager(Client):
|
|
281
1091
|
|
282
1092
|
"""
|
283
1093
|
|
284
|
-
url =
|
285
|
-
|
286
|
-
|
287
|
-
)
|
288
|
-
await self._async_make_request("GET", url)
|
1094
|
+
url = f"{self.cur_command_root}/omag-servers/{server_guid}/instance"
|
1095
|
+
|
1096
|
+
await self._async_make_request("POST", url)
|
289
1097
|
return
|
290
1098
|
|
291
|
-
def
|
292
|
-
|
293
|
-
|
294
|
-
gov_engine_name: str,
|
295
|
-
) -> None:
|
296
|
-
"""Request that the governance engine refresh its configuration by calling the metadata server. This request is
|
297
|
-
useful if the metadata server has an outage, particularly while the governance server is initializing.
|
298
|
-
This request just ensures that the latest configuration is in use.
|
1099
|
+
def activate_server_with_stored_config(self, server_guid: str) -> None:
|
1100
|
+
"""Activate the named OMAG server using the appropriate configuration document found in the
|
1101
|
+
configuration store.
|
299
1102
|
|
300
|
-
|
1103
|
+
https://egeria-project.org/concepts/configuration-document
|
301
1104
|
|
302
1105
|
Parameters
|
303
1106
|
----------
|
304
1107
|
server_guid : str
|
305
1108
|
Identity of the server to act on.
|
306
|
-
gov_engine_name : str
|
307
|
-
Name of the governance engine to refresh.
|
308
1109
|
|
309
1110
|
Returns
|
310
1111
|
-------
|
@@ -319,30 +1120,22 @@ class RuntimeManager(Client):
|
|
319
1120
|
"""
|
320
1121
|
loop = asyncio.get_event_loop()
|
321
1122
|
loop.run_until_complete(
|
322
|
-
self.
|
1123
|
+
self._async_activate_server_with_stored_config(server_guid)
|
323
1124
|
)
|
324
1125
|
return
|
325
1126
|
|
326
|
-
async def
|
327
|
-
|
328
|
-
server_guid: str,
|
329
|
-
connector_name: str,
|
330
|
-
) -> dict | str:
|
331
|
-
"""Retrieve the configuration properties of the named integration connector running in the integration daemon.
|
332
|
-
Async version.
|
333
|
-
|
334
|
-
https://egeria-project.org/concepts/integration-connector/
|
1127
|
+
async def _async_shutdown_server(self, server_guid: str) -> None:
|
1128
|
+
"""Temporarily shutdown the named OMAG server. This server can be restarted as a later time. Async version.
|
335
1129
|
|
336
1130
|
Parameters
|
337
1131
|
----------
|
338
1132
|
server_guid : str
|
339
1133
|
Identity of the server to act on.
|
340
|
-
connector_name : str
|
341
|
-
Name of the integration connector to retrieve properties for.
|
342
1134
|
|
343
1135
|
Returns
|
344
1136
|
-------
|
345
|
-
|
1137
|
+
Response
|
1138
|
+
None
|
346
1139
|
|
347
1140
|
Raises
|
348
1141
|
------
|
@@ -352,31 +1145,23 @@ class RuntimeManager(Client):
|
|
352
1145
|
|
353
1146
|
"""
|
354
1147
|
|
355
|
-
url =
|
356
|
-
f"{self.cur_command_root}/integration-daemons/"
|
357
|
-
f"{server_guid}/integration-connectors/{connector_name}/configuration-properties"
|
358
|
-
)
|
359
|
-
response = await self._async_make_request("GET", url)
|
360
|
-
return response.json().get("properties", "No pproperties found")
|
1148
|
+
url = f"{self.cur_command_root}/omag-servers/{server_guid}/instance"
|
361
1149
|
|
362
|
-
|
363
|
-
self,
|
364
|
-
server_guid: str,
|
365
|
-
connector_name: str,
|
366
|
-
) -> dict | str:
|
367
|
-
"""Retrieve the configuration properties of the named integration connector running in the integration daemon.
|
368
|
-
Async version.
|
1150
|
+
await self._async_make_request("DELETE", url)
|
369
1151
|
|
370
|
-
|
1152
|
+
return
|
1153
|
+
|
1154
|
+
def shutdown_server(self, server_guid: str) -> None:
|
1155
|
+
"""Temporarily shutdown the named OMAG server. This server can be restarted as a later time.
|
371
1156
|
|
372
1157
|
Parameters
|
373
1158
|
----------
|
374
1159
|
server_guid : str
|
375
1160
|
Identity of the server to act on.
|
376
|
-
|
377
|
-
Name of the integration connector to retrieve properties for.
|
1161
|
+
|
378
1162
|
Returns
|
379
1163
|
-------
|
1164
|
+
Response
|
380
1165
|
None
|
381
1166
|
|
382
1167
|
Raises
|
@@ -387,29 +1172,27 @@ class RuntimeManager(Client):
|
|
387
1172
|
|
388
1173
|
"""
|
389
1174
|
loop = asyncio.get_event_loop()
|
390
|
-
|
391
|
-
|
392
|
-
)
|
393
|
-
return response
|
1175
|
+
loop.run_until_complete(self._async_shutdown_server(server_guid))
|
1176
|
+
return
|
394
1177
|
|
395
|
-
|
1178
|
+
def get_platforms_by_name(
|
396
1179
|
self,
|
397
1180
|
filter: str = None,
|
398
1181
|
effective_time: str = None,
|
399
1182
|
start_from: int = 0,
|
400
1183
|
page_size: int = max_paging_size,
|
401
1184
|
) -> str | list:
|
402
|
-
"""Returns the list of platforms with a particular name. The name is specified in the filter.
|
1185
|
+
"""Returns the list of platforms with a particular name. The name is specified in the filter.
|
1186
|
+
|
403
1187
|
Parameters
|
404
1188
|
----------
|
405
1189
|
filter : str, opt
|
406
1190
|
Filter specifies the display name or qualified name of the platforms to return information for. If the
|
407
1191
|
value is None, we will default to the default_platform_name that comes from the core content pack.
|
408
1192
|
effective_time: str, optional
|
409
|
-
|
1193
|
+
Timeframe to return information for. Time format is "YYYY-MM-DDTHH:MM:SS" (ISO 8601).
|
410
1194
|
start_from : int, optional
|
411
1195
|
The index from which to start fetching the engine actions. Default is 0.
|
412
|
-
|
413
1196
|
page_size : int, optional
|
414
1197
|
The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
|
415
1198
|
|
@@ -423,33 +1206,23 @@ class RuntimeManager(Client):
|
|
423
1206
|
InvalidParameterException
|
424
1207
|
PropertyServerException
|
425
1208
|
UserNotAuthorizedException
|
426
|
-
|
427
1209
|
"""
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/runtime-manager/platforms/by-name?"
|
434
|
-
f"startFrom={start_from}&pageSize={page_size}"
|
1210
|
+
loop = asyncio.get_event_loop()
|
1211
|
+
response = loop.run_until_complete(
|
1212
|
+
self._async_get_platforms_by_name(
|
1213
|
+
filter, effective_time, start_from, page_size
|
1214
|
+
)
|
435
1215
|
)
|
436
|
-
|
437
|
-
body = {"filter": filter, "effectiveTime": effective_time}
|
438
|
-
else:
|
439
|
-
body = {"filter": filter}
|
440
|
-
|
441
|
-
response = await self._async_make_request("POST", url, body)
|
442
|
-
|
443
|
-
return response.json().get("elementList", "No platforms found")
|
1216
|
+
return response
|
444
1217
|
|
445
|
-
def
|
1218
|
+
async def _async_get_platforms_by_name(
|
446
1219
|
self,
|
447
1220
|
filter: str = None,
|
448
1221
|
effective_time: str = None,
|
449
1222
|
start_from: int = 0,
|
450
1223
|
page_size: int = max_paging_size,
|
451
1224
|
) -> str | list:
|
452
|
-
"""Returns the list of platforms with a particular name. The name is specified in the filter.
|
1225
|
+
"""Returns the list of platforms with a particular name. The name is specified in the filter. Async version.
|
453
1226
|
|
454
1227
|
Parameters
|
455
1228
|
----------
|
@@ -457,9 +1230,10 @@ class RuntimeManager(Client):
|
|
457
1230
|
Filter specifies the display name or qualified name of the platforms to return information for. If the
|
458
1231
|
value is None, we will default to the default_platform_name that comes from the core content pack.
|
459
1232
|
effective_time: str, optional
|
460
|
-
|
1233
|
+
Timeframe to return information for. Time format is "YYYY-MM-DDTHH:MM:SS" (ISO 8601).
|
461
1234
|
start_from : int, optional
|
462
1235
|
The index from which to start fetching the engine actions. Default is 0.
|
1236
|
+
|
463
1237
|
page_size : int, optional
|
464
1238
|
The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
|
465
1239
|
|
@@ -473,14 +1247,24 @@ class RuntimeManager(Client):
|
|
473
1247
|
InvalidParameterException
|
474
1248
|
PropertyServerException
|
475
1249
|
UserNotAuthorizedException
|
1250
|
+
|
476
1251
|
"""
|
477
|
-
|
478
|
-
|
479
|
-
self.
|
480
|
-
|
481
|
-
|
1252
|
+
|
1253
|
+
if filter is None:
|
1254
|
+
filter = self.default_platform_name
|
1255
|
+
|
1256
|
+
url = (
|
1257
|
+
f"{self.cur_command_root}/platforms/by-name?"
|
1258
|
+
f"startFrom={start_from}&pageSize={page_size}"
|
482
1259
|
)
|
483
|
-
|
1260
|
+
if effective_time is not None:
|
1261
|
+
body = {"filter": filter, "effectiveTime": effective_time}
|
1262
|
+
else:
|
1263
|
+
body = {"filter": filter}
|
1264
|
+
|
1265
|
+
response = await self._async_make_request("POST", url, body)
|
1266
|
+
|
1267
|
+
return response.json().get("elements", "No platforms found")
|
484
1268
|
|
485
1269
|
async def _async_get_platforms_by_type(
|
486
1270
|
self,
|
@@ -490,7 +1274,7 @@ class RuntimeManager(Client):
|
|
490
1274
|
page_size: int = max_paging_size,
|
491
1275
|
) -> str | list:
|
492
1276
|
"""Returns the list of platforms with a particular deployed implementation type. The value is specified in
|
493
|
-
|
1277
|
+
the filter. If it is null, or no request body is supplied, all platforms are returned. Async version.
|
494
1278
|
|
495
1279
|
Parameters
|
496
1280
|
----------
|
@@ -521,7 +1305,7 @@ class RuntimeManager(Client):
|
|
521
1305
|
filter = "OMAG Server Platform"
|
522
1306
|
|
523
1307
|
url = (
|
524
|
-
f"{self.
|
1308
|
+
f"{self.cur_command_root}/platforms/"
|
525
1309
|
f"by-deployed-implementation-type?startFrom={start_from}&pageSize={page_size}"
|
526
1310
|
)
|
527
1311
|
|
@@ -541,7 +1325,7 @@ class RuntimeManager(Client):
|
|
541
1325
|
page_size: int = max_paging_size,
|
542
1326
|
) -> str | list:
|
543
1327
|
"""Returns the list of platforms with a particular deployed implementation type. The value is specified in
|
544
|
-
|
1328
|
+
the filter. If it is null, or no request body is supplied, all platforms are returned.
|
545
1329
|
|
546
1330
|
Parameters
|
547
1331
|
----------
|
@@ -583,8 +1367,8 @@ class RuntimeManager(Client):
|
|
583
1367
|
page_size: int = max_paging_size,
|
584
1368
|
) -> str | list:
|
585
1369
|
"""Returns the list of platform templates for a particular deployed implementation type. The value is
|
586
|
-
|
587
|
-
|
1370
|
+
specified in the filter. If it is null, or no request body is supplied, all platforms are returned.
|
1371
|
+
Async version.
|
588
1372
|
|
589
1373
|
Parameters
|
590
1374
|
----------
|
@@ -615,7 +1399,7 @@ class RuntimeManager(Client):
|
|
615
1399
|
filter = "OMAG Server Platform"
|
616
1400
|
|
617
1401
|
url = (
|
618
|
-
f"{self.
|
1402
|
+
f"{self.cur_command_root}/platforms/"
|
619
1403
|
f"by-deployed-implementation-type?startFrom={start_from}&pageSize={page_size}&getTemplates=true"
|
620
1404
|
)
|
621
1405
|
|
@@ -635,7 +1419,7 @@ class RuntimeManager(Client):
|
|
635
1419
|
page_size: int = max_paging_size,
|
636
1420
|
) -> str | list:
|
637
1421
|
"""Returns the list of platform templates with a particular deployed implementation type. The value is
|
638
|
-
|
1422
|
+
specified in the filter. If it is null, or no request body is supplied, all platforms are returned.
|
639
1423
|
|
640
1424
|
Parameters
|
641
1425
|
----------
|
@@ -690,7 +1474,7 @@ class RuntimeManager(Client):
|
|
690
1474
|
|
691
1475
|
"""
|
692
1476
|
|
693
|
-
url = f"{self.
|
1477
|
+
url = f"{self.cur_command_root}/platforms/{platform_guid}/report"
|
694
1478
|
|
695
1479
|
response = await self._async_make_request("GET", url)
|
696
1480
|
|
@@ -744,7 +1528,7 @@ class RuntimeManager(Client):
|
|
744
1528
|
|
745
1529
|
"""
|
746
1530
|
|
747
|
-
url = f"{self.
|
1531
|
+
url = f"{self.cur_command_root}/platforms/{platform_guid}"
|
748
1532
|
|
749
1533
|
if effective_time is not None:
|
750
1534
|
body = {"effectiveTime": effective_time}
|
@@ -812,7 +1596,7 @@ class RuntimeManager(Client):
|
|
812
1596
|
|
813
1597
|
"""
|
814
1598
|
|
815
|
-
url = f"{self.
|
1599
|
+
url = f"{self.cur_command_root}/software-servers/{server_guid}"
|
816
1600
|
|
817
1601
|
if effective_time is not None:
|
818
1602
|
body = {"effectiveTime": effective_time}
|
@@ -888,7 +1672,7 @@ class RuntimeManager(Client):
|
|
888
1672
|
"""
|
889
1673
|
|
890
1674
|
url = (
|
891
|
-
f"{self.
|
1675
|
+
f"{self.cur_command_root}/software-servers/by-name?"
|
892
1676
|
f"startFrom={start_from}&pageSize={page_size}"
|
893
1677
|
)
|
894
1678
|
|
@@ -939,8 +1723,8 @@ class RuntimeManager(Client):
|
|
939
1723
|
page_size: int = max_paging_size,
|
940
1724
|
) -> str | list:
|
941
1725
|
"""Returns the list of servers with a particular deployed implementation type. The value is specified
|
942
|
-
|
943
|
-
|
1726
|
+
in the filter. If it is null, or no request body is supplied, all servers are returned.
|
1727
|
+
Async version.
|
944
1728
|
|
945
1729
|
Parameters
|
946
1730
|
----------
|
@@ -971,7 +1755,7 @@ class RuntimeManager(Client):
|
|
971
1755
|
filter = None
|
972
1756
|
|
973
1757
|
url = (
|
974
|
-
f"{self.
|
1758
|
+
f"{self.cur_command_root}/software-servers/"
|
975
1759
|
f"by-deployed-implementation-type?startFrom={start_from}&pageSize={page_size}"
|
976
1760
|
)
|
977
1761
|
|
@@ -989,8 +1773,8 @@ class RuntimeManager(Client):
|
|
989
1773
|
page_size: int = max_paging_size,
|
990
1774
|
) -> str | list:
|
991
1775
|
"""Returns the list of servers with a particular deployed implementation type.
|
992
|
-
|
993
|
-
|
1776
|
+
The value is specified in the filter. If it is null, or no request body is supplied,
|
1777
|
+
all servers are returned.
|
994
1778
|
|
995
1779
|
Parameters
|
996
1780
|
----------
|
@@ -1031,9 +1815,9 @@ class RuntimeManager(Client):
|
|
1031
1815
|
start_from: int = 0,
|
1032
1816
|
page_size: int = max_paging_size,
|
1033
1817
|
) -> str | list:
|
1034
|
-
"""Returns the list of
|
1035
|
-
|
1036
|
-
|
1818
|
+
"""Returns the list of server templates with a particular deployed implementation type. The value is
|
1819
|
+
specified in the filter. If it is null, or no request body is supplied, all servers are returned.
|
1820
|
+
Async version.
|
1037
1821
|
|
1038
1822
|
Parameters
|
1039
1823
|
----------
|
@@ -1064,7 +1848,7 @@ class RuntimeManager(Client):
|
|
1064
1848
|
filter = None
|
1065
1849
|
|
1066
1850
|
url = (
|
1067
|
-
f"{self.
|
1851
|
+
f"{self.cur_command_root}/software-servers/"
|
1068
1852
|
f"by-deployed-implementation-type?startFrom={start_from}&pageSize={page_size}&getTemplates=true"
|
1069
1853
|
)
|
1070
1854
|
|
@@ -1081,9 +1865,9 @@ class RuntimeManager(Client):
|
|
1081
1865
|
start_from: int = 0,
|
1082
1866
|
page_size: int = max_paging_size,
|
1083
1867
|
) -> str | list:
|
1084
|
-
"""Returns the list of
|
1085
|
-
|
1086
|
-
|
1868
|
+
"""Returns the list of server templates with a particular deployed implementation type.
|
1869
|
+
The value is specified in the filter. If it is null, or no request body is supplied,
|
1870
|
+
all servers are returned.
|
1087
1871
|
|
1088
1872
|
Parameters
|
1089
1873
|
----------
|
@@ -1123,7 +1907,7 @@ class RuntimeManager(Client):
|
|
1123
1907
|
Parameters
|
1124
1908
|
----------
|
1125
1909
|
server_guid: str
|
1126
|
-
Identity of the
|
1910
|
+
Identity of the server to report on.
|
1127
1911
|
|
1128
1912
|
Returns
|
1129
1913
|
-------
|
@@ -1138,25 +1922,19 @@ class RuntimeManager(Client):
|
|
1138
1922
|
|
1139
1923
|
"""
|
1140
1924
|
|
1141
|
-
url = f"{self.
|
1925
|
+
url = f"{self.cur_command_root}/omag-servers/{server_guid}/instance/report"
|
1142
1926
|
|
1143
1927
|
response = await self._async_make_request("GET", url)
|
1144
1928
|
|
1145
|
-
return response.json().get("elements", "No
|
1929
|
+
return response.json().get("elements", "No server found")
|
1146
1930
|
|
1147
|
-
def get_server_report(
|
1148
|
-
self, server_guid: str = None, view_server: str = None
|
1149
|
-
) -> str | list:
|
1931
|
+
def get_server_report(self, server_guid: str = None) -> str | list:
|
1150
1932
|
"""Returns details about the running server.
|
1151
1933
|
|
1152
1934
|
Parameters
|
1153
1935
|
----------
|
1154
1936
|
server_guid: str
|
1155
|
-
Identity of the
|
1156
|
-
|
1157
|
-
view_server : str, optional
|
1158
|
-
The name of the view_server to get governance engine summaries from. If not provided, the default view_server name
|
1159
|
-
will be used.
|
1937
|
+
Identity of the server to report on.
|
1160
1938
|
|
1161
1939
|
Returns
|
1162
1940
|
-------
|
@@ -1171,107 +1949,21 @@ class RuntimeManager(Client):
|
|
1171
1949
|
|
1172
1950
|
"""
|
1173
1951
|
loop = asyncio.get_event_loop()
|
1174
|
-
response = loop.run_until_complete(
|
1175
|
-
self._async_get_server_report(server_guid, view_server)
|
1176
|
-
)
|
1952
|
+
response = loop.run_until_complete(self._async_get_server_report(server_guid))
|
1177
1953
|
return response
|
1178
1954
|
|
1179
|
-
async def _async_add_archive_file(
|
1180
|
-
self,
|
1181
|
-
archive_file: str,
|
1182
|
-
server_guid: str,
|
1183
|
-
time_out: int = 60,
|
1184
|
-
) -> None:
|
1185
|
-
"""Add a new open metadata archive to running OMAG Server's repository.
|
1186
|
-
An open metadata archive contains metadata types and instances. This operation loads an open metadata archive
|
1187
|
-
that is stored in the named file. It can be used with OMAG servers that are of type Open Metadata Store.
|
1188
|
-
Async version.
|
1189
|
-
|
1190
|
-
https://egeria-project.org/concepts/open-metadata-archives/
|
1191
|
-
|
1192
|
-
Parameters
|
1193
|
-
----------
|
1194
|
-
archive_file: str
|
1195
|
-
Open metadata archive file to load.
|
1196
|
-
server_guid: str
|
1197
|
-
GUID of the view_server to load the file into.
|
1198
|
-
time_out: int, optional
|
1199
|
-
Time out for the rest call.
|
1200
|
-
|
1201
|
-
Returns
|
1202
|
-
-------
|
1203
|
-
Response
|
1204
|
-
None
|
1205
|
-
|
1206
|
-
Raises
|
1207
|
-
------
|
1208
|
-
InvalidParameterException
|
1209
|
-
PropertyServerException
|
1210
|
-
UserNotAuthorizedException
|
1211
|
-
|
1212
|
-
"""
|
1213
|
-
|
1214
|
-
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/runtime-manager/omag-servers/{server_guid}/instance/load/open-metadata-archives/file"
|
1215
|
-
|
1216
|
-
await self._async_make_request(
|
1217
|
-
"POST-DATA", url, archive_file, time_out=time_out
|
1218
|
-
)
|
1219
|
-
return
|
1220
|
-
|
1221
|
-
def add_archive_file(
|
1222
|
-
self,
|
1223
|
-
archive_file: str,
|
1224
|
-
server_guid: str,
|
1225
|
-
time_out: int = 60,
|
1226
|
-
) -> None:
|
1227
|
-
"""Add a new open metadata archive to running OMAG Server's repository.
|
1228
|
-
An open metadata archive contains metadata types and instances. This operation loads an open metadata archive
|
1229
|
-
that is stored in the named file. It can be used with OMAG servers that are of type Open Metadata Store.
|
1230
|
-
|
1231
|
-
https://egeria-project.org/concepts/open-metadata-archives/
|
1232
|
-
|
1233
|
-
Parameters
|
1234
|
-
----------
|
1235
|
-
archive_file: str
|
1236
|
-
Open metadata archive file to load.
|
1237
|
-
server_guid: str
|
1238
|
-
GUID of the view_server to load the file into.
|
1239
|
-
|
1240
|
-
Returns
|
1241
|
-
-------
|
1242
|
-
Response
|
1243
|
-
None
|
1244
|
-
|
1245
|
-
Raises
|
1246
|
-
------
|
1247
|
-
InvalidParameterException
|
1248
|
-
PropertyServerException
|
1249
|
-
UserNotAuthorizedException
|
1250
|
-
|
1251
|
-
"""
|
1252
|
-
|
1253
|
-
loop = asyncio.get_event_loop()
|
1254
|
-
loop.run_until_complete(
|
1255
|
-
self._async_add_archive_file(archive_file, server_guid, time_out)
|
1256
|
-
)
|
1257
|
-
return
|
1258
|
-
|
1259
1955
|
#
|
1260
1956
|
# Activate
|
1261
1957
|
#
|
1262
1958
|
|
1263
1959
|
async def _async_activate_with_stored_config(self, server_guid: str) -> None:
|
1264
|
-
"""Activate the Open Metadata and Governance (OMAG)
|
1265
|
-
|
1960
|
+
"""Activate the Open Metadata and Governance (OMAG) server using the configuration document stored for this
|
1961
|
+
server. Async Version
|
1266
1962
|
|
1267
1963
|
Parameters
|
1268
1964
|
----------
|
1269
1965
|
server_guid: str
|
1270
|
-
Identity of the
|
1271
|
-
|
1272
|
-
view_server : str, optional
|
1273
|
-
The name of the view_server to get governance engine summaries from. If not provided, the default view_server name
|
1274
|
-
will be used.
|
1966
|
+
Identity of the server to activate.
|
1275
1967
|
|
1276
1968
|
Returns
|
1277
1969
|
-------
|
@@ -1289,17 +1981,13 @@ class RuntimeManager(Client):
|
|
1289
1981
|
|
1290
1982
|
def activate_with_stored_config(self, server_guid: str) -> None:
|
1291
1983
|
"""Activate the Open Metadata and Governance (OMAG) server using the configuration document stored for this
|
1292
|
-
|
1984
|
+
server.
|
1293
1985
|
|
1294
1986
|
Parameters
|
1295
1987
|
----------
|
1296
1988
|
server_guid: str
|
1297
1989
|
Identity of the server to activate.
|
1298
1990
|
|
1299
|
-
view_server : str, optional
|
1300
|
-
The name of the view_server to get governance engine summaries from. If not provided, the default view_server name
|
1301
|
-
will be used.
|
1302
|
-
|
1303
1991
|
Returns
|
1304
1992
|
-------
|
1305
1993
|
None
|