Source code for blumycelium.models

from pyArango.collection import Collection, Edges, Field
import pyArango.validation as VAL
import pyArango.graph as GR


COLLECTIONS = ["Jobs", "MachineElves", "MachineElvesRevisions", "Failures", "JobFailures", "Parameters", "JobParameters", "Results", "JobToJob"]
GRAPHS = ["Jobs_graph", "JobFailures_graph", "JobParameters_graph"]

[docs]class Jobs(Collection) : """Schema of a job in the database""" _fields = { "task" : { "name": Field(validators = [VAL.NotNull()]), "signature": Field(validators = [VAL.NotNull()]), "source_code": Field(), "documentation": Field(), "revision": Field(), }, "machine_elf" : { "id": Field(validators = [VAL.NotNull()]), "documentation": Field(), "revision": Field(), }, "parameter_ids": Field(default=list), "submit_date" : Field(validators = [VAL.NotNull()]), "start_date": Field(), "end_date": Field(), "status": Field(validators = [VAL.NotNull()]), } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class Failures(Collection) : """Schema of a failure in the database""" _fields = { "type": Field(validators = [VAL.NotNull()]), "value": Field(validators = [VAL.NotNull()]), "traceback": Field(validators = [VAL.NotNull()]), "creation_date": Field(validators = [VAL.NotNull()]) } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class MachineElves(Collection) : """Schema of a machine elf in the database""" _fields = { "documentation": Field(), "last_revision": Field(), "creation_date" : Field(validators = [VAL.NotNull()]), "revisions": { "dates": Field(default=list), "hashes": Field(default=list), } } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class MachineElvesRevisions(Collection) : """Schema of a machine elf revision in the database""" _fields = { "documentation": Field(), "creation_date" : Field(validators = [VAL.NotNull()]), "source_code": Field() } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class Parameters(Collection) : """Schema of a parameter in the database. A parameter is a variable passed as an argument to a task""" _fields = { "creation_date": Field(validators=[VAL.NotNull()]), } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": True }
[docs]class Results(Collection) : """Schema of a result in the database""" _fields = { "creation_date": Field(validators=[VAL.NotNull()]), } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": True }
[docs]class JobParameters(Edges) : """Schema of a job parameter in the database. a job parameter is an edge that associates a parameter to task argument""" _fields = { "creation_date": Field(validators=[VAL.NotNull()]), "name": Field(), } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class JobToJob(Edges) : """Edge connecting jobs that depend on each other""" _fields = { "creation_date": Field(validators=[VAL.NotNull()]), } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class JobParameters_graph(GR.Graph): """Graph connecting jobs to parameters""" _edgeDefinitions = ( GR.EdgeDefinition("JobParameters", fromCollections = ["Jobs"], toCollections = ["Parameters"]), ) _orphanedCollections = []
[docs]class JobFailures(Edges) : """Edge connecting jobs to failures""" _fields = { "creation_date" : Field(validators = [VAL.NotNull()]) } _validation = { "on_save": True, "on_set": False, "allow_foreign_fields": False }
[docs]class Jobs_graph(GR.Graph): """The job orchestration graph""" _edgeDefinitions = ( GR.EdgeDefinition("JobToJob", fromCollections = ["Jobs"], toCollections = ["Jobs"]), ) _orphanedCollections = []
[docs]class JobFailures_graph(GR.Graph): """Graph connecting jobs to failures""" _edgeDefinitions = ( GR.EdgeDefinition("JobFailures", fromCollections = ["Jobs"], toCollections = ["Failures"]), ) _orphanedCollections = []