Skip to content

Commit ceedc87

Browse files
committed
feat: Implement PilotAgents schema
1 parent c2cd486 commit ceedc87

6 files changed

Lines changed: 86 additions & 1 deletion

File tree

diracx-db/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ testing = [
3131
AuthDB = "diracx.db.sql:AuthDB"
3232
JobDB = "diracx.db.sql:JobDB"
3333
JobLoggingDB = "diracx.db.sql:JobLoggingDB"
34+
PilotAgentsDB = "diracx.db.sql:PilotAgentsDB"
3435
SandboxMetadataDB = "diracx.db.sql:SandboxMetadataDB"
3536
TaskQueueDB = "diracx.db.sql:TaskQueueDB"
3637

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
from __future__ import annotations
22

3-
__all__ = ("AuthDB", "JobDB", "JobLoggingDB", "SandboxMetadataDB", "TaskQueueDB")
3+
__all__ = (
4+
"AuthDB",
5+
"JobDB",
6+
"JobLoggingDB",
7+
"PilotAgentsDB",
8+
"SandboxMetadataDB",
9+
"TaskQueueDB",
10+
)
411

512
from .auth.db import AuthDB
613
from .job.db import JobDB
714
from .job_logging.db import JobLoggingDB
15+
from .pilot_agents.db import PilotAgentsDB
816
from .sandbox_metadata.db import SandboxMetadataDB
917
from .task_queue.db import TaskQueueDB

diracx-db/src/diracx/db/sql/pilot_agents/__init__.py

Whitespace-only changes.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from __future__ import annotations
2+
3+
from ..utils import BaseSQLDB
4+
from .schema import PilotAgentsDBBase
5+
6+
7+
class PilotAgentsDB(BaseSQLDB):
8+
metadata = PilotAgentsDBBase.metadata
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
from sqlalchemy import (
2+
DateTime,
3+
Double,
4+
Index,
5+
Integer,
6+
String,
7+
Text,
8+
)
9+
from sqlalchemy.orm import declarative_base
10+
11+
from ..job.schema import EnumBackedBool
12+
from ..utils import Column, NullColumn
13+
14+
PilotAgentsDBBase = declarative_base()
15+
16+
17+
class PilotAgents(PilotAgentsDBBase):
18+
__tablename__ = "PilotAgents"
19+
20+
PilotID = Column("PilotID", Integer, autoincrement=True, primary_key=True)
21+
InitialJobID = Column("InitialJobID", Integer, default=0)
22+
CurrentJobID = Column("CurrentJobID", Integer, default=0)
23+
TaskQueueID = Column("TaskQueueID", Integer, default=0)
24+
PilotJobReference = Column("PilotJobReference", String(255), default="Unknown")
25+
PilotStamp = Column("PilotStamp", String(32), default="")
26+
DestinationSite = Column("DestinationSite", String(128), default="NotAssigned")
27+
Queue = Column("Queue", String(128), default="Unknown")
28+
GridSite = Column("GridSite", String(128), default="Unknown")
29+
Broker = Column("Broker", String(128), default="Unknown")
30+
OwnerDN = Column("OwnerDN", String(255))
31+
OwnerGroup = Column("OwnerGroup", String(128))
32+
GridType = Column("GridType", String(32), default="LCG")
33+
GridRequirements = Column("GridRequirements", Text)
34+
BenchMark = Column("BenchMark", Double, default=0.0)
35+
SubmissionTime = NullColumn("SubmissionTime", DateTime)
36+
LastUpdateTime = NullColumn("LastUpdateTime", DateTime)
37+
Status = Column("Status", String(32), default="Unknown")
38+
StatusReason = Column("StatusReason", String(255), default="Unknown")
39+
ParentID = Column("ParentID", Integer, default=0)
40+
OutputReady = Column("OutputReady", EnumBackedBool(), default=False)
41+
AccountingSent = Column("AccountingSent", EnumBackedBool(), default=False)
42+
43+
__table_args__ = (
44+
Index("PilotJobReference", "PilotJobReference"),
45+
Index("Status", "Status"),
46+
Index("Statuskey", "GridSite", "DestinationSite", "Status"),
47+
)
48+
49+
50+
class JobToPilotMapping(PilotAgentsDBBase):
51+
__tablename__ = "JobToPilotMapping"
52+
53+
PilotID = Column("PilotID", Integer, primary_key=True)
54+
JobID = Column("JobID", Integer, primary_key=True)
55+
StartTime = Column("StartTime", DateTime)
56+
57+
__table_args__ = (Index("JobID", "JobID"), Index("PilotID", "PilotID"))
58+
59+
60+
class PilotOutput(PilotAgentsDBBase):
61+
__tablename__ = "PilotOutput"
62+
63+
PilotID = Column("PilotID", Integer, primary_key=True)
64+
StdOutput = Column("StdOutput", Text)
65+
StdError = Column("StdError", Text)

diracx-routers/src/diracx/routers/dependencies.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"JobLoggingDB",
88
"SandboxMetadataDB",
99
"TaskQueueDB",
10+
"PilotAgentsDB",
1011
"add_settings_annotation",
1112
"AvailableSecurityProperties",
1213
)
@@ -22,6 +23,7 @@
2223
from diracx.db.sql import AuthDB as _AuthDB
2324
from diracx.db.sql import JobDB as _JobDB
2425
from diracx.db.sql import JobLoggingDB as _JobLoggingDB
26+
from diracx.db.sql import PilotAgentsDB as _PilotAgentsDB
2527
from diracx.db.sql import SandboxMetadataDB as _SandboxMetadataDB
2628
from diracx.db.sql import TaskQueueDB as _TaskQueueDB
2729

@@ -37,6 +39,7 @@ def add_settings_annotation(cls: T) -> T:
3739
AuthDB = Annotated[_AuthDB, Depends(_AuthDB.transaction)]
3840
JobDB = Annotated[_JobDB, Depends(_JobDB.transaction)]
3941
JobLoggingDB = Annotated[_JobLoggingDB, Depends(_JobLoggingDB.transaction)]
42+
PilotAgentsDB = Annotated[_PilotAgentsDB, Depends(_PilotAgentsDB.transaction)]
4043
SandboxMetadataDB = Annotated[
4144
_SandboxMetadataDB, Depends(_SandboxMetadataDB.transaction)
4245
]

0 commit comments

Comments
 (0)