OpenFactory Shared Schemas#
Shared Deployment Configuration Schemas for OpenFactory
This module defines reusable Pydantic models that represent container deployment settings and resource constraints. These models are intended to be shared across device and connector configuration schemas.
Components:#
ResourcesDefinition: Represents CPU and memory values for a container.
Resources: Groups reservations and limits for container resources.
Placement: Defines constraints for container placement on specific nodes.
Deploy: Complete deployment configuration including replicas, resource configs, and placement rules.
Key Features:#
Express CPU and memory constraints using common formats (e.g., 0.5 CPUs, “1Gi” memory)
Define both resource requests and limits for containers
Support placement constraints for scheduling on labeled nodes
Modular, reusable across multiple OpenFactory schema modules
Example Usage:#
Define a deployment configuration:
>>> Deploy(
... replicas=2,
... resources=Resources(
... reservations=ResourcesDefinition(cpus=0.5, memory="512Mi"),
... limits=ResourcesDefinition(cpus=1.0, memory="1Gi")
... ),
... placement=Placement(
... constraints=["node.labels.zone == eu-west"]
... )
... )
This module is typically used as part of device, connector, or application schemas that involve resource scheduling or orchestration.
- class openfactory.schemas.common.Deploy(**data)[source]#
Bases:
BaseModelDefines deployment configuration such as replicas, resources, and placement.
- class openfactory.schemas.common.Placement(**data)[source]#
Bases:
BaseModelDefines placement constraints for scheduling containers.
- class openfactory.schemas.common.Resources(**data)[source]#
Bases:
BaseModelSpecifies resource requests and limits for a container deployment.
- limits: ResourcesDefinition | None#
- model_config: ClassVar[ConfigDict] = {}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- reservations: ResourcesDefinition | None#
- class openfactory.schemas.common.ResourcesDefinition(**data)[source]#
Bases:
BaseModelDefines resource limits or reservations such as CPU and memory.
- openfactory.schemas.common.constraints(deploy)[source]#
Extract placement constraints from a Deploy object and format them for use in Python Docker deployments.
Docker Engine and Docker Swarm APIs expect placement constraints to use == for equality checks (e.g., node labels). This function transforms any single = signs in constraint expressions into the required == syntax, ensuring the constraints are correctly interpreted when creating containers or services programmatically using Python Docker clients.
- openfactory.schemas.common.cpus_limit(deploy, default=1.0)[source]#
Retrieve the CPU limit value from a Deploy object, returning a default if unavailable.