oedisi.tools package¶
Submodules¶
oedisi.tools.broker_utils module¶
Utilities for HELICS broker time data management.
- class oedisi.tools.broker_utils.TimeData(*, name: str, granted_time: float, send_time: float)¶
Bases:
BaseModelTime data for a federate.
- granted_time: float¶
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- name: str¶
- send_time: float¶
- oedisi.tools.broker_utils.get_time_data(broker)¶
Query broker for global time data and parse into TimeData objects.
- oedisi.tools.broker_utils.parse_time_data(response)¶
Parse broker response into list of TimeData objects.
- oedisi.tools.broker_utils.pprint_time_data(time_data)¶
Pretty print time data for a federate.
oedisi.tools.cli_tools module¶
CLI tools for building and running OEDISI simulations.
- oedisi.tools.cli_tools.create_docker_compose_file(wiring_diagram: WiringDiagram, target_directory: str, broker_port: int, component_types: dict)¶
Create docker-compose.yml configuration for multi-container simulation.
Writes to target_directory/docker-compose.yml. This only works for BasicComponent types, i.e. only types with “component_definition.json”.
- Parameters:
wiring_diagram
target_directory (str)
broker_port (int)
component_types (dict from str to BasicComponent classes)
- oedisi.tools.cli_tools.create_kubernetes_deployment(wiring_diagram: WiringDiagram, target_directory: Path | str, broker_port: int, simulation_id: str) None¶
Create Kubernetes deployment YAML files for wiring diagram components.
Saves deployment to yamls under target_directory/kubernetes.
- Parameters:
wiring_diagram (WiringDiagram)
target_directory (Path or str)
broker_port (int) – HTTP port to be exposed in Kubernetes deployment.
simulation_id (str) – UUID to create a unique Kubernetes service and pod deployment
- oedisi.tools.cli_tools.drop_null_values(model: dict) dict¶
Recursively remove null values and convert snake_case keys to camelCase.
This is necessary for generating Kubernetes yaml files.
- oedisi.tools.cli_tools.edit_docker_file(file_path: str | Path, component: Component)¶
Generate Dockerfile for component with OEDISI and component dependencies.
The docker container installs oedisi, the requirements.txt, and run server.py Although this is fine in a hurry, it should generally be avoided for all components.
- Parameters:
file_path (str | Path) – File path of Dockerfile to write for.
component (type information)
- oedisi.tools.cli_tools.edit_docker_files(wiring_diagram: WiringDiagram, component_types: dict[str, Any])¶
Generate Dockerfiles for all unique component types in wiring diagram.
This only works for BasicComponent types, i.e. only types with “component_definition.json”.
Parameter¶
wiring_diagram : WiringDiagram component_types : dict from component types to “BasicComponent” types.
- oedisi.tools.cli_tools.remove_from_json(system_json, element)¶
Remove federate from configuration and resave with revised.json.
- oedisi.tools.cli_tools.remove_from_runner_config(runner_config, element)¶
Remove federate from configuration.
- oedisi.tools.cli_tools.validate_optional_inputs(wiring_diagram: WiringDiagram)¶
Validate required host and container_port for multi-container.
oedisi.tools.pausing_broker module¶
Pausing broker for interactive HELICS simulations.
oedisi.tools.testing_broker module¶
Testing utilities for HELICS broker and federate graph management.
- class oedisi.tools.testing_broker.TestingBroker(n)¶
Bases:
objectHELICS broker for testing federate graph connections.
- run()¶
Run broker and extract data flow graph.
- wait_until_connected()¶
Wait until all federates have initialized and connected.
- oedisi.tools.testing_broker.get_inputs_outputs(graph_dict)¶
Extract input and output mappings from federate graph dictionary.