pyegeria 5.3.3.14.dev3__py3-none-any.whl → 5.3.3.15__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.
- pyegeria/commands/cli/egeria.py +77 -0
- pyegeria/commands/cli/egeria_tech.py +79 -0
- pyegeria/commands/tech/list_information_supply_chains.py +2 -2
- pyegeria/commands/tech/list_solution_blueprints.py +30 -19
- pyegeria/commands/tech/list_solution_components.py +172 -0
- pyegeria/commands/tech/{list_solution_blueprints2.py → list_solution_roles.py} +55 -47
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Automated Manufacturing Control.html +121 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Clinical Trial Management Solution Blueprint.html +213 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Employee Management Solution Blueprint.html +124 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Hazardous Material Management Solution Blueprint.html +124 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Inventory Management.html +124 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Personalized Medicine Order Fulfillment Solution Blueprint.html +124 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/Sustainability Reporting Solution Blueprint.html +149 -0
- pyegeria/commands/tech/work/mermaid_graphs/blueprints/{{displayName}}.html +121 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Accounting ledgers.html +121 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Analyse Patient Data.html +133 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Assemble Treatment Assessment Report.html +129 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Certify Hospital.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Employee Expense Tool.html +121 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Goods Inventory.html +121 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Hazardous Materials (HazMat) Inventory.html +121 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Hospital Landing Area Folder.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Hospital Processes.html +129 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Landing Folder Cataloguer.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Nominate Hospital.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Onboard Hospital.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Populate Sandbox.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Set up Data Lake Folder.html +127 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Set up clinical trial.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Sustainability Calculators.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Sustainability Dashboards.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Sustainability Operational Data Store (ODS).html +141 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Treatment Assessment Report Validation and Delivery.html +129 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Treatment Efficacy Evidence.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Treatment Validation Sandbox.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Weekly Measurements Data Lake Folder.html +125 -0
- pyegeria/commands/tech/work/mermaid_graphs/components/Weekly Measurements Onboarding Pipeline.html +133 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AMS-DC-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AMS-DEPOT-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AMS-LAB-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AMS-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AMS-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AUS-DC-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AUS-FACTORY-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AUS-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/AUS-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/C-TRL-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/CAMP-CT:ProjectManager.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/CAMP-MM:ProjectManager.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/CertifiedDataEngineer.html +130 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ClinicalTrialManager.html +138 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ClinicalTrialParticipatingHospital.html +122 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ClinicalTrialParticipatingHospitalCoordinator.html +122 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ClinicalTrialSponsor.html +122 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/Community Leader.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/CommunityMember.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/DIST-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ED-DC-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ED-DEPOT-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ED-FACTORY-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ED-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/ED-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/FIN-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOVERNANCE_LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:0.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:1.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:2.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:3.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:4.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:5.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:6.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/GOV_OFFICER:7.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/HR-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/IT-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/KC-DEPOT-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/KC-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/KC-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/LDN-DC-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/LDN-LAB-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/LDN-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/LDN-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/MFG-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/NY-DC-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/NY-LAB-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/NY-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/NY-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/NewTreatmentDataScientist.html +122 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/NewTreatmentResearcher.html +122 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/PROJ-CT-TBDF-001:ProjectManager.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/PROJ-CT-TBDF-002:ProjectManager.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/PROJ-CT-TBDF-003:ProjectManager.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/PROJ-CT-TBDF:ProjectManager.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/RES-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/SALES-SUSTAINABILITY-CHAMP.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/SUSTAINABILITY-LEAD.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/SUSTAINABILITY-TECH-LEAD.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/SustainabilityChampion.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/SustainabilityExecutive.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/SustainabilityLeader.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0001.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0002.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0003.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0004.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0005.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0006.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0007.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0008.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0009.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0010.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0011.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0012.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0013.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0014.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0015.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0016.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0017.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0018.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0019.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0020.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0021.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0022.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0023.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:0024.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:2343.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:2373.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:3067.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:3082.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:4051.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:4302.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:4332.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:5656.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:6788.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:6877.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:7432.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9657.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9992.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9993.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9994.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9995.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9996.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9997.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9998.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamLeader:Department:9999.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0001.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0002.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0003.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0004.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0005.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0006.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0007.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0008.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0009.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0010.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0011.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0012.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0013.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0014.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0015.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0016.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0017.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0018.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0019.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0020.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0021.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0022.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0023.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:0024.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:2343.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:2373.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:3067.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:3082.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:4051.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:4302.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:4332.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:5656.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:6788.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:6877.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:7432.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9657.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9992.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9993.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9994.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9995.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9996.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9997.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9998.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/TeamMembers:Department:9999.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/WINCH-DC-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/WINCH-DEPOT-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/WINCH-FACTORY-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/WINCH-OFFICE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/roles/WINCH-SITE-LEADER.html +118 -0
- pyegeria/commands/tech/work/mermaid_graphs/{Clinical Trial Subject Onboarding.html → supply-chains/Clinical Trial Subject Onboarding.html } +18 -18
- pyegeria/commands/tech/work/mermaid_graphs/{Clinical Trial Treatment Validation.html → supply-chains/Clinical Trial Treatment Validation.html } +21 -21
- pyegeria/commands/tech/work/mermaid_graphs/{Employee Expense Payment.html → supply-chains/Employee Expense Payment.html } +7 -7
- pyegeria/commands/tech/work/mermaid_graphs/{New Drug Product Information Distribution.html → supply-chains/New Drug Product Information Distribution.html } +7 -7
- pyegeria/commands/tech/work/mermaid_graphs/{New Employee Onboarding.html → supply-chains/New Employee Onboarding.html } +6 -6
- pyegeria/commands/tech/work/mermaid_graphs/{Personalized Treatment Ordering.html → supply-chains/Personalized Treatment Ordering.html } +6 -6
- pyegeria/commands/tech/work/mermaid_graphs/{Physical Inventory Tracking.html → supply-chains/Physical Inventory Tracking.html } +10 -10
- pyegeria/commands/tech/work/mermaid_graphs/{Sustainability Reporting.html → supply-chains/Sustainability Reporting.html } +6 -6
- pyegeria/commands/tech/work/mermaid_graphs/{{{displayName}}.html → supply-chains/{{displayName}}.html} +4 -4
- pyegeria/mermaid_utilities.py +3 -2
- {pyegeria-5.3.3.14.dev3.dist-info → pyegeria-5.3.3.15.dist-info}/METADATA +1 -1
- {pyegeria-5.3.3.14.dev3.dist-info → pyegeria-5.3.3.15.dist-info}/RECORD +208 -97
- {pyegeria-5.3.3.14.dev3.dist-info → pyegeria-5.3.3.15.dist-info}/entry_points.txt +4 -1
- pyegeria/.DS_Store +0 -0
- pyegeria/commands/.DS_Store +0 -0
- pyegeria/commands/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/__pycache__/server_status_widget.cpython-312-pytest-7.4.4.pyc +0 -0
- pyegeria/commands/cat/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_asset_graph.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_collection.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_project_dependencies.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_project_structure.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/get_tech_type_elements.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/glossary_actions.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_assets.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_cert_types.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_collections.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_deployed_catalogs.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_deployed_database_schemas.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_deployed_databases.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_glossaries.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_projects.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_servers_deployed_imp.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_tech_type_elements.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_tech_types.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_terms.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_todos.cpython-312.pyc +0 -0
- pyegeria/commands/cat/__pycache__/list_user_ids.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/egeria_login_tui.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/egeria_ops.cpython-312.pyc +0 -0
- pyegeria/commands/cli/__pycache__/ops_config.cpython-312.pyc +0 -0
- pyegeria/commands/doc/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/.DS_Store +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/.DS_Store +0 -0
- pyegeria/commands/doc/glossary/.DS_Store +0 -0
- pyegeria/commands/doc/glossary/images/.DS_Store +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/.DS_Store +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/.DS_Store +0 -0
- pyegeria/commands/my/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/list_my_profile.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/list_my_roles.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/monitor_my_todos.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/monitor_open_todos.cpython-312.pyc +0 -0
- pyegeria/commands/my/__pycache__/todo_actions.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/gov_server_actions.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/list_archives.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/list_catalog_targets.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/load_archive.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_engine_activity.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_engine_activity_c.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_gov_eng_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_integ_daemon_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_platform_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_server_startup.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/monitor_server_status.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/refresh_integration_daemon.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/restart_integration_daemon.cpython-312.pyc +0 -0
- pyegeria/commands/ops/__pycache__/table_integ_daemon_status.cpython-312.pyc +0 -0
- pyegeria/commands/tech/.DS_Store +0 -0
- pyegeria/commands/tech/__pycache__/__init__.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_element_info.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_guid_info.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_tech_details.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/get_tech_type_template.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_anchored_elements.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_asset_types.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_elements_by_property_value.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_elements_for_classification.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_gov_action_processes.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_registered_services.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_related_specification.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_relationship_types.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_relationships.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_tech_templates.cpython-312.pyc +0 -0
- pyegeria/commands/tech/__pycache__/list_valid_metadata_values.cpython-312.pyc +0 -0
- /pyegeria/commands/cat/{link-test.py → link-check.py} +0 -0
- {pyegeria-5.3.3.14.dev3.dist-info → pyegeria-5.3.3.15.dist-info}/LICENSE +0 -0
- {pyegeria-5.3.3.14.dev3.dist-info → pyegeria-5.3.3.15.dist-info}/WHEEL +0 -0
pyegeria/commands/cli/egeria.py
CHANGED
@@ -56,6 +56,7 @@ from pyegeria.commands.cat.glossary_actions import (
|
|
56
56
|
)
|
57
57
|
from pyegeria.commands.cat.list_glossaries import display_glossaries
|
58
58
|
|
59
|
+
|
59
60
|
from pyegeria.commands.my.todo_actions import (
|
60
61
|
mark_todo_complete,
|
61
62
|
change_todo_status,
|
@@ -117,6 +118,12 @@ from pyegeria.commands.tech.list_tech_templates import display_templates_spec
|
|
117
118
|
from pyegeria.commands.tech.list_valid_metadata_values import display_metadata_values
|
118
119
|
from pyegeria.commands.tech.list_gov_action_processes import display_gov_processes
|
119
120
|
|
121
|
+
from pyegeria.commands.tech.list_information_supply_chains import supply_chain_viewer
|
122
|
+
from pyegeria.commands.tech.list_solution_roles import solution_role_list
|
123
|
+
from pyegeria.commands.tech.list_solution_blueprints import blueprint_list
|
124
|
+
from pyegeria.commands.tech.list_solution_components import solution_component_list
|
125
|
+
|
126
|
+
|
120
127
|
|
121
128
|
@tui()
|
122
129
|
# @tui('menu', 'menu', 'A textual command line interface')
|
@@ -371,6 +378,10 @@ def show_tech_type(ctx):
|
|
371
378
|
def show_elements(ctx):
|
372
379
|
"""Show information about Egeria elements"""
|
373
380
|
|
381
|
+
@show.group("supply-chains")
|
382
|
+
@click.pass_context
|
383
|
+
def show_supply_chains(ctx):
|
384
|
+
"""Show information about Information Supply Chainss"""
|
374
385
|
|
375
386
|
@show_elements.command("guid-info")
|
376
387
|
@click.argument("guid", nargs=1)
|
@@ -892,6 +903,72 @@ def get_element_info(ctx, om_type):
|
|
892
903
|
)
|
893
904
|
|
894
905
|
|
906
|
+
@show_supply_chains.command("supply-chains")
|
907
|
+
@click.option("--search-string", default="*", help="Search string")
|
908
|
+
@click.pass_context
|
909
|
+
def list_supply_chains(ctx, search_string):
|
910
|
+
"""Display supply chains"""
|
911
|
+
c = ctx.obj
|
912
|
+
supply_chain_viewer(
|
913
|
+
search_string,
|
914
|
+
c.view_server,
|
915
|
+
c.view_server_url,
|
916
|
+
c.userid,
|
917
|
+
c.password,
|
918
|
+
c.jupyter,
|
919
|
+
c.width,
|
920
|
+
)
|
921
|
+
|
922
|
+
|
923
|
+
@show_supply_chains.command("blueprints")
|
924
|
+
@click.option("--search-string", default="*", help="Search string")
|
925
|
+
@click.pass_context
|
926
|
+
def list_blueprints(ctx, search_string):
|
927
|
+
"""Display solution blueprints"""
|
928
|
+
c = ctx.obj
|
929
|
+
blueprint_list(
|
930
|
+
search_string,
|
931
|
+
c.view_server,
|
932
|
+
c.view_server_url,
|
933
|
+
c.userid,
|
934
|
+
c.password,
|
935
|
+
c.jupyter,
|
936
|
+
c.width,
|
937
|
+
)
|
938
|
+
|
939
|
+
@show_supply_chains.command("solution-roles")
|
940
|
+
@click.option("--search-string", default="*", help="Search string")
|
941
|
+
@click.pass_context
|
942
|
+
def list_solution_roles(ctx, search_string):
|
943
|
+
"""Display solution roles"""
|
944
|
+
c = ctx.obj
|
945
|
+
solution_component_list(
|
946
|
+
search_string,
|
947
|
+
c.view_server,
|
948
|
+
c.view_server_url,
|
949
|
+
c.userid,
|
950
|
+
c.password,
|
951
|
+
c.jupyter,
|
952
|
+
c.width,
|
953
|
+
)
|
954
|
+
|
955
|
+
@show_supply_chains.command("solution-components")
|
956
|
+
@click.option("--search-string", default="*", help="Search string")
|
957
|
+
@click.pass_context
|
958
|
+
def list_solution_components(ctx, search_string):
|
959
|
+
"""Display solution componentss"""
|
960
|
+
c = ctx.obj
|
961
|
+
solution_component_list(
|
962
|
+
search_string,
|
963
|
+
c.view_server,
|
964
|
+
c.view_server_url,
|
965
|
+
c.userid,
|
966
|
+
c.password,
|
967
|
+
c.jupyter,
|
968
|
+
c.width,
|
969
|
+
)
|
970
|
+
|
971
|
+
|
895
972
|
#
|
896
973
|
# Catalog User: Show
|
897
974
|
#
|
@@ -43,6 +43,12 @@ from pyegeria.commands.tech.list_elements_for_classification import (
|
|
43
43
|
from pyegeria.commands.tech.list_gov_action_processes import display_gov_processes
|
44
44
|
from pyegeria.commands.tech.get_tech_type_template import template_viewer
|
45
45
|
|
46
|
+
from pyegeria.commands.tech.list_information_supply_chains import supply_chain_viewer
|
47
|
+
from pyegeria.commands.tech.list_solution_roles import solution_role_list
|
48
|
+
from pyegeria.commands.tech.list_solution_blueprints import blueprint_list
|
49
|
+
from pyegeria.commands.tech.list_solution_components import solution_component_list
|
50
|
+
|
51
|
+
|
46
52
|
@tui()
|
47
53
|
@click.version_option("0.0.1", prog_name="egeria_ops")
|
48
54
|
@click.group()
|
@@ -199,6 +205,11 @@ def show_tech(ctx):
|
|
199
205
|
def show_elements(ctx):
|
200
206
|
"""Show information about Egeria elements"""
|
201
207
|
|
208
|
+
@show.group("supply-chains")
|
209
|
+
@click.pass_context
|
210
|
+
def show_supply_chains(ctx):
|
211
|
+
"""Show information about Information Supply Chainss"""
|
212
|
+
|
202
213
|
|
203
214
|
@show_elements.command("guid-info")
|
204
215
|
@click.argument("guid", nargs=1)
|
@@ -721,6 +732,74 @@ def list_all_om_type_elements(ctx, om_type, extended):
|
|
721
732
|
c.width
|
722
733
|
)
|
723
734
|
|
735
|
+
|
736
|
+
@show_supply_chains.command("supply-chains")
|
737
|
+
@click.option("--search-string", default="*", help="Search string")
|
738
|
+
@click.pass_context
|
739
|
+
def list_supply_chains(ctx, search_string):
|
740
|
+
"""Display supply chains"""
|
741
|
+
c = ctx.obj
|
742
|
+
supply_chain_viewer(
|
743
|
+
search_string,
|
744
|
+
c.view_server,
|
745
|
+
c.view_server_url,
|
746
|
+
c.userid,
|
747
|
+
c.password,
|
748
|
+
c.jupyter,
|
749
|
+
c.width,
|
750
|
+
)
|
751
|
+
|
752
|
+
|
753
|
+
@show_supply_chains.command("blueprints")
|
754
|
+
@click.option("--search-string", default="*", help="Search string")
|
755
|
+
@click.pass_context
|
756
|
+
def list_blueprints(ctx, search_string):
|
757
|
+
"""Display solution blueprints"""
|
758
|
+
c = ctx.obj
|
759
|
+
blueprint_list(
|
760
|
+
search_string,
|
761
|
+
c.view_server,
|
762
|
+
c.view_server_url,
|
763
|
+
c.userid,
|
764
|
+
c.password,
|
765
|
+
c.jupyter,
|
766
|
+
c.width,
|
767
|
+
)
|
768
|
+
|
769
|
+
@show_supply_chains.command("solution-roles")
|
770
|
+
@click.option("--search-string", default="*", help="Search string")
|
771
|
+
@click.pass_context
|
772
|
+
def list_solution_roles(ctx, search_string):
|
773
|
+
"""Display solution roles"""
|
774
|
+
c = ctx.obj
|
775
|
+
solution_component_list(
|
776
|
+
search_string,
|
777
|
+
c.view_server,
|
778
|
+
c.view_server_url,
|
779
|
+
c.userid,
|
780
|
+
c.password,
|
781
|
+
c.jupyter,
|
782
|
+
c.width,
|
783
|
+
)
|
784
|
+
|
785
|
+
@show_supply_chains.command("solution-components")
|
786
|
+
@click.option("--search-string", default="*", help="Search string")
|
787
|
+
@click.pass_context
|
788
|
+
def list_solution_components(ctx, search_string):
|
789
|
+
"""Display solution componentss"""
|
790
|
+
c = ctx.obj
|
791
|
+
solution_component_list(
|
792
|
+
search_string,
|
793
|
+
c.view_server,
|
794
|
+
c.view_server_url,
|
795
|
+
c.userid,
|
796
|
+
c.password,
|
797
|
+
c.jupyter,
|
798
|
+
c.width,
|
799
|
+
)
|
800
|
+
|
801
|
+
|
802
|
+
|
724
803
|
#
|
725
804
|
# Tell
|
726
805
|
#
|
@@ -100,11 +100,11 @@ def supply_chain_viewer(
|
|
100
100
|
sc_unique_name = f"{sc_qname}\n\n\t\t/\n\n{sc_guid}"
|
101
101
|
sc_mermaid = sc.get("mermaidGraph",'---')
|
102
102
|
if sc_mermaid != '---':
|
103
|
-
link = save_mermaid_html(sc_name, sc_mermaid, EGERIA_MERMAID_FOLDER )
|
103
|
+
link = save_mermaid_html(sc_name, sc_mermaid, f"{EGERIA_MERMAID_FOLDER}/supply-chains" )
|
104
104
|
sc_mermaid_link = f"file://:{link}"
|
105
105
|
# print("Visit my [link=https://www.willmcgugan.com]blog[/link]!")
|
106
106
|
# sc_scope = Text(f"{sc_scope}\n\t\t/\n{sc_mermaid_link}")
|
107
|
-
sc_scope =
|
107
|
+
sc_scope = f"{sc_scope}\n\t\t/\n"
|
108
108
|
# sc_scope.stylize("link =" + sc_mermaid_link)
|
109
109
|
|
110
110
|
table.add_row(sc_name, sc_unique_name, sc_purpose_str, sc_scope, sc_desc)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
SPDX-License-Identifier: Apache-2.0
|
4
4
|
Copyright Contributors to the ODPi Egeria project.
|
5
5
|
|
6
|
-
A simple viewer for Information
|
6
|
+
A simple viewer for Information Solution Blueprints
|
7
7
|
|
8
8
|
"""
|
9
9
|
|
@@ -19,12 +19,14 @@ from rich.prompt import Prompt
|
|
19
19
|
from rich.table import Table
|
20
20
|
from rich.text import Text
|
21
21
|
from rich.tree import Tree
|
22
|
+
|
23
|
+
from pyegeria.mermaid_utilities import EGERIA_MERMAID_FOLDER
|
22
24
|
from pyegeria.solution_architect_omvs import SolutionArchitect
|
23
25
|
from pyegeria import (
|
24
26
|
ProjectManager,
|
25
27
|
UserNotAuthorizedException,
|
26
28
|
PropertyServerException,
|
27
|
-
InvalidParameterException,
|
29
|
+
InvalidParameterException, save_mermaid_html,
|
28
30
|
)
|
29
31
|
|
30
32
|
from pyegeria._exceptions import (
|
@@ -46,7 +48,7 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
46
48
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
47
49
|
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
48
50
|
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "150"))
|
49
|
-
|
51
|
+
EGERIA_MERMAID_FOLDER = os.environ.get("EGERIA_MERMAID_FOLDER", "work/mermaid_graphs")
|
50
52
|
|
51
53
|
def blueprint_list(
|
52
54
|
search_string: str,
|
@@ -74,10 +76,10 @@ def blueprint_list(
|
|
74
76
|
caption=f"View Server '{server_name}' @ Platform - {platform_url}",
|
75
77
|
expand=True,
|
76
78
|
)
|
77
|
-
table.add_column("Blueprint Name")
|
78
|
-
table.add_column("Qualified Name
|
79
|
-
table.add_column("Description")
|
80
|
-
table.add_column("Solution Components")
|
79
|
+
table.add_column("Blueprint Name / Diagram Link", justify="center")
|
80
|
+
table.add_column("Qualified Name / GUID / Version", justify="center", width=38, no_wrap=False)
|
81
|
+
table.add_column("Description", justify="center")
|
82
|
+
table.add_column("Solution Components", justify="center")
|
81
83
|
|
82
84
|
blueprints = client.find_solution_blueprints(search_string)
|
83
85
|
if isinstance(blueprints, list) is False:
|
@@ -88,11 +90,18 @@ def blueprint_list(
|
|
88
90
|
bp_qname = bp["properties"].get("qualifiedName", '---')
|
89
91
|
bp_guid = bp["elementHeader"]["guid"]
|
90
92
|
bp_desc = bp["properties"].get("description",'---')
|
91
|
-
bp_unique_name = f"{bp_qname}\n\n
|
92
|
-
bp_mermaid = bp.get("
|
93
|
+
bp_unique_name = f"{bp_qname}\n\n--\n\n{bp_guid}"
|
94
|
+
bp_mermaid = bp.get("mermaidGraph",'---')
|
95
|
+
if bp_mermaid != '---':
|
96
|
+
link = save_mermaid_html(bp_name, bp_mermaid, f"{EGERIA_MERMAID_FOLDER}/blueprints")
|
97
|
+
link = f"file://:{link}"
|
98
|
+
bp_mermaid = Text(link, style="blue link " + link)
|
99
|
+
|
100
|
+
bp_mermaid_label = Text(f"{bp_name}\n\n--\n\n{bp_mermaid}")
|
93
101
|
|
94
102
|
bp_components = bp.get("solutionComponents",[])
|
95
|
-
|
103
|
+
comp_md=""
|
104
|
+
first_comp = True
|
96
105
|
for component in bp_components:
|
97
106
|
comp = component.get("solutionComponent","")
|
98
107
|
if isinstance(comp,dict) is False:
|
@@ -102,6 +111,7 @@ def blueprint_list(
|
|
102
111
|
comp_description = comp_props.get("description",'---')
|
103
112
|
comp_planned = comp_props['extendedProperties'].get("plannedDeployedImplementationType",'---')
|
104
113
|
comp_type = comp_props.get('solutionComponentType','---')
|
114
|
+
|
105
115
|
comp_actors = comp_props.get('actors', [])
|
106
116
|
comp_actors_list = ""
|
107
117
|
for actor in comp_actors:
|
@@ -111,15 +121,16 @@ def blueprint_list(
|
|
111
121
|
for prop in comp_actor_props.keys():
|
112
122
|
comp_actor_props_md += f"* {prop}: {comp_actor_props[prop]}\n"
|
113
123
|
comp_actors_list += comp_actor_props_md
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
124
|
+
if first_comp:
|
125
|
+
first_comp = False
|
126
|
+
else:
|
127
|
+
comp_md += "\n\n---\n\n"
|
128
|
+
comp_md = f"Solution Component {comp_name}\n\n"
|
129
|
+
comp_md += f"* Description: {comp_description}\n"
|
130
|
+
comp_md += f"* Planned Deployment: {comp_planned}\n"
|
131
|
+
comp_md += f"* Actors: {comp_actors_list}\n"
|
132
|
+
comp_out = Markdown(comp_md)
|
133
|
+
table.add_row(bp_mermaid_label, bp_unique_name, bp_desc, comp_out)
|
123
134
|
|
124
135
|
return table
|
125
136
|
|
@@ -0,0 +1,172 @@
|
|
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 Information Solution Components
|
7
|
+
|
8
|
+
"""
|
9
|
+
|
10
|
+
import argparse
|
11
|
+
import os
|
12
|
+
import time
|
13
|
+
|
14
|
+
from rich import print, box
|
15
|
+
from rich.console import Console
|
16
|
+
from rich.markdown import Markdown
|
17
|
+
from rich.panel import Panel
|
18
|
+
from rich.prompt import Prompt
|
19
|
+
from rich.table import Table
|
20
|
+
from rich.text import Text
|
21
|
+
from rich.tree import Tree
|
22
|
+
|
23
|
+
from pyegeria.mermaid_utilities import EGERIA_MERMAID_FOLDER
|
24
|
+
from pyegeria.solution_architect_omvs import SolutionArchitect
|
25
|
+
from pyegeria import (
|
26
|
+
ProjectManager,
|
27
|
+
UserNotAuthorizedException,
|
28
|
+
PropertyServerException,
|
29
|
+
InvalidParameterException, save_mermaid_html,
|
30
|
+
)
|
31
|
+
|
32
|
+
from pyegeria._exceptions import (
|
33
|
+
print_exception_response,
|
34
|
+
)
|
35
|
+
|
36
|
+
disable_ssl_warnings = True
|
37
|
+
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
38
|
+
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
|
39
|
+
EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
|
40
|
+
EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "qs-view-server")
|
41
|
+
EGERIA_VIEW_SERVER_URL = os.environ.get(
|
42
|
+
"EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
|
43
|
+
)
|
44
|
+
EGERIA_INTEGRATION_DAEMON = os.environ.get("INTEGRATION_DAEMON", "integration-daemon")
|
45
|
+
EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
|
46
|
+
EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
|
47
|
+
EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
48
|
+
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
49
|
+
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
50
|
+
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "150"))
|
51
|
+
EGERIA_MERMAID_FOLDER = os.environ.get("EGERIA_MERMAID_FOLDER", "work/mermaid_graphs")
|
52
|
+
|
53
|
+
def solution_component_list(
|
54
|
+
search_string: str,
|
55
|
+
server_name: str,
|
56
|
+
platform_url: str,
|
57
|
+
user: str,
|
58
|
+
user_password: str,
|
59
|
+
jupyter: bool = EGERIA_JUPYTER,
|
60
|
+
width: int = EGERIA_WIDTH,
|
61
|
+
timeout: int = 30,
|
62
|
+
):
|
63
|
+
"""A Solution Component viewer"""
|
64
|
+
client = SolutionArchitect(server_name, platform_url, user, user_password)
|
65
|
+
token = client.create_egeria_bearer_token()
|
66
|
+
|
67
|
+
def generate_table() -> Table | str:
|
68
|
+
table = Table(
|
69
|
+
title=f"Solution Components matching {search_string} @ {time.asctime()}",
|
70
|
+
style="bright_white on black",
|
71
|
+
header_style="bright_white on dark_blue",
|
72
|
+
title_style="bold white on black",
|
73
|
+
caption_style="white on black",
|
74
|
+
show_lines=True,
|
75
|
+
box=box.ROUNDED,
|
76
|
+
caption=f"View Server '{server_name}' @ Platform - {platform_url}",
|
77
|
+
expand=True,
|
78
|
+
)
|
79
|
+
table.add_column("Component Name / Diagram Link", justify="center", no_wrap=False)
|
80
|
+
table.add_column("Component Type / Planned Deployment Type", justify="center")
|
81
|
+
table.add_column("Qualified Name / GUID", justify="center", width=38, no_wrap=False)
|
82
|
+
table.add_column("Description / HeadCount", justify="center")
|
83
|
+
table.add_column("Sub-Components", justify="center")
|
84
|
+
|
85
|
+
components = client.find_solution_components(search_string)
|
86
|
+
if isinstance(components, list) is False:
|
87
|
+
return "No components found"
|
88
|
+
|
89
|
+
for component in components:
|
90
|
+
component_name = component["properties"].get("displayName", '---')
|
91
|
+
component_type = component["properties"].get("solutionComponentType", '---')
|
92
|
+
planned_deployment_type = component["properties"].get('extendedProperties',{}).get("plannedDeployedImplementationType", '---')
|
93
|
+
component_info = (f"Type: {component_type}\n\n--\n\nPlanned Deployment Type: {planned_deployment_type}")
|
94
|
+
|
95
|
+
component_qname = component["properties"].get("qualifiedName", '---')
|
96
|
+
component_guid = component["elementHeader"]["guid"]
|
97
|
+
component_unique_name = f"{component_qname}\n\n--\n\n{component_guid}"
|
98
|
+
|
99
|
+
component_desc = component["properties"].get("description",'---')
|
100
|
+
|
101
|
+
|
102
|
+
component_mermaid = component.get("mermaidGraph",'---')
|
103
|
+
if component_mermaid != '---':
|
104
|
+
link = save_mermaid_html(component_name, component_mermaid, f"{EGERIA_MERMAID_FOLDER}/components" )
|
105
|
+
link = f"file://:{link}"
|
106
|
+
component_mermaid = Text(link, style="blue link " + link)
|
107
|
+
|
108
|
+
component_mermaid_label = Text(f"{component_name}\n\n--\n\n{component_mermaid}")
|
109
|
+
|
110
|
+
component_components = component.get("solutionComponents",[])
|
111
|
+
comp_props_md=""
|
112
|
+
first_comp = True
|
113
|
+
for component in component_components:
|
114
|
+
comp = component.get("relatedElement","")
|
115
|
+
if isinstance(comp,dict) is False:
|
116
|
+
continue
|
117
|
+
comp_props = comp.get("properties",{})
|
118
|
+
comp_props_md = ""
|
119
|
+
for prop in comp_props.keys():
|
120
|
+
comp_props_md += f"* **{prop}**: {comp_props[prop]}\n"
|
121
|
+
|
122
|
+
if first_comp:
|
123
|
+
first_comp = False
|
124
|
+
else:
|
125
|
+
comp_props_md += "\n\n---\n\n"
|
126
|
+
|
127
|
+
comp_props_out = Markdown(comp_props_md)
|
128
|
+
table.add_row(component_mermaid_label, component_info, component_unique_name, component_desc, comp_props_out)
|
129
|
+
|
130
|
+
return table
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
try:
|
136
|
+
console = Console(width=width, force_terminal=not jupyter)
|
137
|
+
with console.pager():
|
138
|
+
console.print(generate_table())
|
139
|
+
|
140
|
+
except (
|
141
|
+
InvalidParameterException,
|
142
|
+
PropertyServerException,
|
143
|
+
UserNotAuthorizedException,
|
144
|
+
) as e:
|
145
|
+
print_exception_response(e)
|
146
|
+
|
147
|
+
|
148
|
+
def main():
|
149
|
+
parser = argparse.ArgumentParser()
|
150
|
+
|
151
|
+
parser.add_argument("--server", help="Name of the server to display status for")
|
152
|
+
parser.add_argument("--url", help="URL Platform to connect to")
|
153
|
+
parser.add_argument("--userid", help="User Id")
|
154
|
+
parser.add_argument("--password", help="User Password")
|
155
|
+
args = parser.parse_args()
|
156
|
+
|
157
|
+
server = args.server if args.server is not None else EGERIA_VIEW_SERVER
|
158
|
+
url = args.url if args.url is not None else EGERIA_PLATFORM_URL
|
159
|
+
userid = args.userid if args.userid is not None else EGERIA_USER
|
160
|
+
user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
|
161
|
+
|
162
|
+
try:
|
163
|
+
search_string = Prompt.ask(
|
164
|
+
"Enter a search string:", default="*"
|
165
|
+
)
|
166
|
+
solution_component_list(search_string, server, url, userid, user_pass)
|
167
|
+
except KeyboardInterrupt:
|
168
|
+
pass
|
169
|
+
|
170
|
+
|
171
|
+
if __name__ == "__main__":
|
172
|
+
main()
|
@@ -3,7 +3,7 @@
|
|
3
3
|
SPDX-License-Identifier: Apache-2.0
|
4
4
|
Copyright Contributors to the ODPi Egeria project.
|
5
5
|
|
6
|
-
A simple viewer for Information
|
6
|
+
A simple viewer for Information Solution Roles
|
7
7
|
|
8
8
|
"""
|
9
9
|
|
@@ -19,12 +19,14 @@ from rich.prompt import Prompt
|
|
19
19
|
from rich.table import Table
|
20
20
|
from rich.text import Text
|
21
21
|
from rich.tree import Tree
|
22
|
+
|
23
|
+
from pyegeria.mermaid_utilities import EGERIA_MERMAID_FOLDER
|
22
24
|
from pyegeria.solution_architect_omvs import SolutionArchitect
|
23
25
|
from pyegeria import (
|
24
26
|
ProjectManager,
|
25
27
|
UserNotAuthorizedException,
|
26
28
|
PropertyServerException,
|
27
|
-
InvalidParameterException,
|
29
|
+
InvalidParameterException, save_mermaid_html,
|
28
30
|
)
|
29
31
|
|
30
32
|
from pyegeria._exceptions import (
|
@@ -46,9 +48,9 @@ EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
46
48
|
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
47
49
|
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
48
50
|
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "150"))
|
51
|
+
EGERIA_MERMAID_FOLDER = os.environ.get("EGERIA_MERMAID_FOLDER", "work/mermaid_graphs")
|
49
52
|
|
50
|
-
|
51
|
-
def blueprint_list(
|
53
|
+
def solution_role_list(
|
52
54
|
search_string: str,
|
53
55
|
server_name: str,
|
54
56
|
platform_url: str,
|
@@ -64,7 +66,7 @@ def blueprint_list(
|
|
64
66
|
|
65
67
|
def generate_table() -> Table | str:
|
66
68
|
table = Table(
|
67
|
-
title=f"
|
69
|
+
title=f"Solution Roles matching {search_string} @ {time.asctime()}",
|
68
70
|
style="bright_white on black",
|
69
71
|
header_style="bright_white on dark_blue",
|
70
72
|
title_style="bold white on black",
|
@@ -74,54 +76,60 @@ def blueprint_list(
|
|
74
76
|
caption=f"View Server '{server_name}' @ Platform - {platform_url}",
|
75
77
|
expand=True,
|
76
78
|
)
|
77
|
-
table.add_column("
|
78
|
-
table.add_column("
|
79
|
-
table.add_column("
|
80
|
-
table.add_column("
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
79
|
+
table.add_column("Role Id / Diagram Link", justify="center", no_wrap=False)
|
80
|
+
table.add_column("Title / Type / Scope / HeadCount", justify="center")
|
81
|
+
table.add_column("Qualified Name / GUID", justify="center", width=38, no_wrap=False)
|
82
|
+
table.add_column("Description / HeadCount", justify="center")
|
83
|
+
table.add_column("Solution Components", justify="center")
|
84
|
+
|
85
|
+
roles = client.find_solution_roles(search_string)
|
86
|
+
if isinstance(roles, list) is False:
|
87
|
+
return "No Roles found"
|
88
|
+
|
89
|
+
for role in roles:
|
90
|
+
role_name = role["properties"].get("roleId", '---')
|
91
|
+
|
92
|
+
role_title = role["properties"].get("title", '---')
|
93
|
+
role_scope = role["properties"].get("scope", '---')
|
94
|
+
role_type = role["properties"].get("typeName", '---')
|
95
|
+
role_headcount = role["properties"].get("extendedProperties", {}).get("headCount", '---')
|
96
|
+
role_info = (f"Title: {role_title}\n\n--\n\nType: {role_type}\n\n--\n\n"
|
97
|
+
f"Scope: {role_scope}\n\n--\n\nHeadCount: {role_headcount}")
|
98
|
+
|
99
|
+
role_qname = role["properties"].get("qualifiedName", '---')
|
100
|
+
role_guid = role["elementHeader"]["guid"]
|
101
|
+
role_unique_name = f"{role_qname}\n\n--\n\n{role_guid}"
|
102
|
+
|
103
|
+
role_desc = role["properties"].get("description",'---')
|
104
|
+
|
105
|
+
|
106
|
+
role_mermaid = role.get("mermaidGraph",'---')
|
107
|
+
if role_mermaid != '---':
|
108
|
+
link = save_mermaid_html(role_name, role_mermaid, f"{EGERIA_MERMAID_FOLDER}/roles" )
|
109
|
+
link = f"file://:{link}"
|
110
|
+
role_mermaid = Text(link, style="blue link " + link)
|
111
|
+
|
112
|
+
role_mermaid_label = Text(f"{role_name}\n\n--\n\n{role_mermaid}")
|
113
|
+
|
114
|
+
role_components = role.get("solutionComponents",[])
|
115
|
+
comp_props_md=""
|
96
116
|
first_comp = True
|
97
|
-
for component in
|
98
|
-
comp = component.get("
|
117
|
+
for component in role_components:
|
118
|
+
comp = component.get("relatedElement","")
|
99
119
|
if isinstance(comp,dict) is False:
|
100
120
|
continue
|
101
121
|
comp_props = comp.get("properties",{})
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
comp_actors = comp_props.get('actors', [])
|
107
|
-
comp_actors_list = ""
|
108
|
-
for actor in comp_actors:
|
109
|
-
comp_actor_role = actor['relationshipProperties'].get('role','---')
|
110
|
-
comp_actor_props = actor['relatedElement'].get('properties',{})
|
111
|
-
comp_actor_props_md = f"* Role: {comp_actor_role}\n"
|
112
|
-
for prop in comp_actor_props.keys():
|
113
|
-
comp_actor_props_md += f"* {prop}: {comp_actor_props[prop]}\n"
|
114
|
-
comp_actors_list += comp_actor_props_md
|
122
|
+
comp_props_md = ""
|
123
|
+
for prop in comp_props.keys():
|
124
|
+
comp_props_md += f"* **{prop}**: {comp_props[prop]}\n"
|
125
|
+
|
115
126
|
if first_comp:
|
116
127
|
first_comp = False
|
117
128
|
else:
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
comp_md += f"* Actors: {comp_actors_list}\n"
|
123
|
-
comp_out = Markdown(comp_md)
|
124
|
-
table.add_row(bp_name, bp_unique_name, bp_desc, comp_out)
|
129
|
+
comp_props_md += "\n\n---\n\n"
|
130
|
+
|
131
|
+
comp_props_out = Markdown(comp_props_md)
|
132
|
+
table.add_row(role_mermaid_label, role_info, role_unique_name, role_desc, comp_props_out)
|
125
133
|
|
126
134
|
return table
|
127
135
|
|
@@ -159,7 +167,7 @@ def main():
|
|
159
167
|
search_string = Prompt.ask(
|
160
168
|
"Enter a search string:", default="*"
|
161
169
|
)
|
162
|
-
|
170
|
+
solution_role_list(search_string, server, url, userid, user_pass)
|
163
171
|
except KeyboardInterrupt:
|
164
172
|
pass
|
165
173
|
|