Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 66 additions & 29 deletions src/ansys/hps/client/rms/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ class ShutdownStatus(Enum):
normal = "normal"
aborted = "aborted"
crash = "crash"
failed = "failed"


class EvaluatorRegistration(DictModel):
Expand Down Expand Up @@ -400,8 +401,14 @@ class MockupBackend(DictModel):

class Node(DictModel):
name: str | None = Field(None, description="Node name.", title="Name")
total_memory_mb: int | None = Field(..., description="Total memory.", title="Total Memory Mb")
total_cores: int | None = Field(..., description="Number of cores.", title="Total Cores")
total_memory_mb: int | None = Field(None, description="Total memory.", title="Total Memory Mb")
used_memory_mb: int | None = Field(None, description="Used memory.", title="Used Memory Mb")
total_cores: int | None = Field(None, description="Number of cores.", title="Total Cores")
reserved_cores: int | None = Field(
None,
description="Cores currently allocated by scheduler.",
title="Reserved Cores",
)
additional_props: dict[str, Any] | None = Field({}, title="Additional Props")


Expand Down Expand Up @@ -510,6 +517,20 @@ class Queue(DictModel):
additional_props: dict[str, Any] | None = Field({}, title="Additional Props")


class QueueLoad(DictModel):
name: str | None = Field(None, description="Queue name.", title="Name")
total_cores: int | None = Field(None, description="Total number of cores.", title="Total Cores")
reserved_cores: int | None = Field(
None,
description="Cores currently allocated by scheduler.",
title="Reserved Cores",
)
total_memory_mb: int | None = Field(None, description="Total memory.", title="Total Memory Mb")
used_memory_mb: int | None = Field(
None, description="Memory currently in use.", title="Used Memory Mb"
)


class Resources(DictModel):
num_cores: int | None = Field(None, description="Number of cores.", title="Num Cores")
platform: PlatformEnum | None = Field(
Expand Down Expand Up @@ -729,11 +750,20 @@ class ClusterInfo(DictModel):
id: str | None = Field(None, description="Unique ID for the database.", title="Id")
crs_id: str | None = Field(None, description="Compute resource set ID.", title="Crs Id")
name: str | None = Field(None, description="Cluster name.", title="Name")
queues: list[Queue] | None = Field(default_factory=list, title="Queues")
nodes: list[Node] | None = Field(default_factory=list, title="Nodes")
queues: list[Queue] | None = Field([], title="Queues", validate_default=True)
nodes: list[Node] | None = Field([], title="Nodes", validate_default=True)
additional_props: dict[str, dict[str, Any]] | None = Field({}, title="Additional Props")


class ClusterLoadSnapshot(DictModel):
id: str | None = Field(None, description="Unique ID for the database", title="Id")
crs_id: str | None = Field(None, description="Compute resource set ID", title="Crs Id")
timestamp: datetime | None = Field(
None, description="Timestamp of this load data", title="Timestamp"
)
queue_loads: list[QueueLoad] | None = Field([], title="Queue Loads", validate_default=True)


class Context(DictModel):
custom: dict[str, int | bool | str | float | None] | None = Field(
{}, description="Custom runtime properties.", title="Custom"
Expand Down Expand Up @@ -849,12 +879,11 @@ class OrchestrationInterfacesBackend(DictModel):
process_runner: (
ServiceUserProcessRunner | ProcessLauncherProcessRunner | RestLauncherProcessRunner | None
) = Field(
default_factory=lambda: ServiceUserProcessRunner.model_validate(
{"plugin_name": "service_user_module"}
),
{"plugin_name": "service_user_module"},
description="Process runner to execute commands.",
discriminator="plugin_name",
title="Process Runner",
validate_default=True,
)
create_workdir: bool | None = Field(
True,
Expand All @@ -879,6 +908,12 @@ class AnalyzeResponse(DictModel):
scalers: list[AnalyzeResponseScaler] = Field(..., title="Scalers")


class ClusterLoadHistoryResponse(DictModel):
cluster_load_history: list[ClusterLoadSnapshot] = Field(
..., description="Cluster load history", title="Cluster Load History"
)


class ComputeResourceSet(DictModel):
name: str | None = Field(
"default", description="Name of the compute resource set.", title="Name"
Expand All @@ -900,33 +935,33 @@ class ComputeResourceSet(DictModel):
| MockupBackend
| None
) = Field(
default_factory=lambda: KubernetesKedaBackend.model_validate(
{"plugin_name": "local", "debug": False}
),
{"plugin_name": "local", "debug": False},
description="Backend to use in the compute resource set.",
discriminator="plugin_name",
title="Backend",
validate_default=True,
)
scaling_strategy: MaxAvailableResourceScaling | KubernetesResourceScaling | None = Field(
default_factory=lambda: MaxAvailableResourceScaling.model_validate(
{
"plugin_name": "max_available_resource_scaling",
"scaling_factor": 1,
"match_all_requirements": False,
}
),
{
"plugin_name": "max_available_resource_scaling",
"scaling_factor": 1,
"match_all_requirements": False,
},
description="Scaling strategy to use in the compute resource set.",
discriminator="plugin_name",
title="Scaling Strategy",
validate_default=True,
)
available_resources: Resources | None = Field(
default_factory=lambda: Resources.model_validate({"custom": {}}),
{"custom": {}},
description="Available resources in the compute resource set.",
validate_default=True,
)
available_applications: list[ScalerApplicationInfo] | None = Field(
default_factory=list,
[],
description="List of available applications.",
title="Available Applications",
validate_default=True,
)
evaluator_requirements_matching: bool | None = Field(
False,
Expand Down Expand Up @@ -987,9 +1022,7 @@ class EvaluatorConfiguration(DictModel):
task_directory_cleanup: TaskDirectoryCleanup | None = Field(
None, title="Task Directory Cleanup"
)
resources: EvaluatorResources | None = Field(
default_factory=lambda: EvaluatorResources.model_validate({"custom": {}})
)
resources: EvaluatorResources | None = Field({"custom": {}}, validate_default=True)
task_manager_type: str | None = Field(None, title="Task Manager Type")
loop_interval: float | None = Field(
5.0,
Expand All @@ -1002,9 +1035,10 @@ class EvaluatorConfiguration(DictModel):
title="Local File Cache",
)
applications: list[ApplicationInfo] | None = Field(
default_factory=list,
[],
description="List of available applications.",
title="Applications",
validate_default=True,
)
project_server_select: bool | None = Field(
True,
Expand All @@ -1022,8 +1056,9 @@ class EvaluatorConfiguration(DictModel):
title="Project Assignment Mode",
)
context: Context | None = Field(
default_factory=lambda: Context.model_validate({"custom": {}, "use_local_scratch": False}),
{"custom": {}, "use_local_scratch": False},
description="Runtime properties to pass to executed tasks.",
validate_default=True,
)


Expand All @@ -1047,9 +1082,7 @@ class EvaluatorConfigurationUpdate(DictModel):
task_directory_cleanup: TaskDirectoryCleanup | None = Field(
None, title="Task Directory Cleanup"
)
resources: EvaluatorResources | None = Field(
default_factory=lambda: EvaluatorResources.model_validate({"custom": {}})
)
resources: EvaluatorResources | None = Field({"custom": {}}, validate_default=True)
name: str | None = Field(
None,
description="Update the name of the evaluator, which updates the registration.",
Expand All @@ -1066,7 +1099,10 @@ class EvaluatorConfigurationUpdate(DictModel):
title="Local File Cache",
)
applications: list[ApplicationInfo] | None = Field(
[], description="List of available applications.", title="Applications"
[],
description="List of available applications.",
title="Applications",
validate_default=True,
)
project_list: list[str] | None = Field(
None,
Expand All @@ -1079,8 +1115,9 @@ class EvaluatorConfigurationUpdate(DictModel):
title="Project Assignment Mode",
)
context: ContextUpdate | None = Field(
default_factory=lambda: ContextUpdate.model_validate({"custom": {}}),
{"custom": {}},
description="Runtime properties to pass to executed tasks.",
validate_default=True,
)


Expand Down
Loading