Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial data flow and data service pre-work #142

Merged
merged 23 commits into from
Feb 18, 2022

Conversation

robertbartel
Copy link
Contributor

Adjustments to jobs, job status and execution state classes, and job services, in preparation to include the necessary pieces for getting forcing, observation, hydrofabric, etc. data in and out of where it needs to be.

The biggest pieces are:

  • a new DataRequirement type (plus supporting metadata types) for representing data that something (i.e., a Job) needs
  • new JobExecStep values to represent points in the job workflow for:
    • the state when a check is performed on whether it is possible to provide a job with data it needs
    • the state when any transformation, obtaining, or filtering of available data is done to get required data
  • a redesign of JobStatus to be its own composite type, rather than an enum
  • incorporating these things into Job and job manager classes

@robertbartel robertbartel added enhancement New feature or request maas MaaS Workstream labels Feb 16, 2022
@robertbartel robertbartel added this to the 1.0.0 (AGU FIH) milestone Feb 16, 2022
@robertbartel robertbartel self-assigned this Feb 16, 2022
@robertbartel
Copy link
Contributor Author

This won't pass all test until the changes in #134 are merged in (ironically, it probably will also fail silently, and thus actually pass the checks).

Adding SimpleDockerUtil utility class inside scheduler package with
basic Docker functionality and properties, and adjusting the Launcher
class to inherit from it.
Fixing bug resulting from extending MaaSRequest to ModelExecRequest but
not updating all usage (here, in job.py).
Adding new type in job.py to encapsulate the definition of data input or
output needs for a scheduled worker.
Redesigning JobStatus class to be a serializable composite of
JobExecPhase and JobExecStep, which it was before anyway, but without
itself redunantly being another enum type.
Adding to compensate for similar function no longer being in JobStatus
after its recent redesign.
Fixing placement of @AbstractMethod annotation for AbstractDataSubset
property storage_size, and fixing ordering of AbstractDataSubset
subclasses that was causing a resolution order problem.
Initial few unit tests for CatchmentDataRequirement.
Replacing internal WorkerDataRequirement type with DataRequirement type
from dmod.modeldata, and adopting its use within Job.
Accounting for change from ALLOCATED to AWAITING_SCHEDULING.
Account for workflow changes in job_manager.py, required as a direct or
indirect result of adding steps for various execution states in the
workflow related to data requirements.
Accounting for renaming of ALLOCATED to AWAITING_SCHEDULING within unit
tests for monitor service.
Actually committing change to name of JobExecStep value that is already
reflected elsewhere.
Copy link
Contributor

@christophertubbs christophertubbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks solid

@christophertubbs christophertubbs merged commit 6f46018 into NOAA-OWP:master Feb 18, 2022
@robertbartel robertbartel deleted the launch_jobs/forcings branch February 24, 2022 20:05
@robertbartel
Copy link
Contributor Author

Relates to #128.

donaldwj pushed a commit to donaldwj/DMOD that referenced this pull request Jun 21, 2022
* Add simple Docker util class.

Adding SimpleDockerUtil utility class inside scheduler package with
basic Docker functionality and properties, and adjusting the Launcher
class to inherit from it.

* Expose scheduler package SimpleDockerUtil class.

* Fix bug related to job types and ModelExecRequest.

Fixing bug resulting from extending MaaSRequest to ModelExecRequest but
not updating all usage (here, in job.py).

* Add uri as dependency for scheduler package.

* New WorkerDataRequirement helper type for Jobs.

Adding new type in job.py to encapsulate the definition of data input or
output needs for a scheduled worker.

* Add new JobExecStep values and update docstring.

* Add get_for_name funcs for job phase and step.

* Redesign JobStatus type.

Redesigning JobStatus class to be a serializable composite of
JobExecPhase and JobExecStep, which it was before anyway, but without
itself redunantly being another enum type.

* Update tests to account for redesigned JobStatus.

* Minor fixes to docstrings.

* Add Job.should_release_resources property.

Adding to compensate for similar function no longer being in JobStatus
after its recent redesign.

* Rename one of the JobExecStatus values.

* Fix data_subset.py bug with abstract declarations.

Fixing placement of @AbstractMethod annotation for AbstractDataSubset
property storage_size, and fixing ordering of AbstractDataSubset
subclasses that was causing a resolution order problem.

* Add dmod.modeldata.data metadata classes.

* Initial unit tests for one new metadata class.

Initial few unit tests for CatchmentDataRequirement.

* Adopt DataRequirement type from modeldata.

Replacing internal WorkerDataRequirement type with DataRequirement type
from dmod.modeldata, and adopting its use within Job.

* Account for JobExecStep name change in manager.

Accounting for change from ALLOCATED to AWAITING_SCHEDULING.

* Account for changes in job management workflow.

Account for workflow changes in job_manager.py, required as a direct or
indirect result of adding steps for various execution states in the
workflow related to data requirements.

* Account for change of JobExecStep value in tests.

Accounting for renaming of ALLOCATED to AWAITING_SCHEDULING within unit
tests for monitor service.

* Update scheduler package to depend on modeldata.

* Update schedulerservice dep version of scheduler.

* Fix bad monitorservice dep version for monitor.

* Fix change of ALLOCATED to AWAITING_SCHEDULING.

Actually committing change to name of JobExecStep value that is already
reflected elsewhere.
christophertubbs pushed a commit to christophertubbs/DMOD that referenced this pull request Jan 24, 2023
* Add simple Docker util class.

Adding SimpleDockerUtil utility class inside scheduler package with
basic Docker functionality and properties, and adjusting the Launcher
class to inherit from it.

* Expose scheduler package SimpleDockerUtil class.

* Fix bug related to job types and ModelExecRequest.

Fixing bug resulting from extending MaaSRequest to ModelExecRequest but
not updating all usage (here, in job.py).

* Add uri as dependency for scheduler package.

* New WorkerDataRequirement helper type for Jobs.

Adding new type in job.py to encapsulate the definition of data input or
output needs for a scheduled worker.

* Add new JobExecStep values and update docstring.

* Add get_for_name funcs for job phase and step.

* Redesign JobStatus type.

Redesigning JobStatus class to be a serializable composite of
JobExecPhase and JobExecStep, which it was before anyway, but without
itself redunantly being another enum type.

* Update tests to account for redesigned JobStatus.

* Minor fixes to docstrings.

* Add Job.should_release_resources property.

Adding to compensate for similar function no longer being in JobStatus
after its recent redesign.

* Rename one of the JobExecStatus values.

* Fix data_subset.py bug with abstract declarations.

Fixing placement of @AbstractMethod annotation for AbstractDataSubset
property storage_size, and fixing ordering of AbstractDataSubset
subclasses that was causing a resolution order problem.

* Add dmod.modeldata.data metadata classes.

* Initial unit tests for one new metadata class.

Initial few unit tests for CatchmentDataRequirement.

* Adopt DataRequirement type from modeldata.

Replacing internal WorkerDataRequirement type with DataRequirement type
from dmod.modeldata, and adopting its use within Job.

* Account for JobExecStep name change in manager.

Accounting for change from ALLOCATED to AWAITING_SCHEDULING.

* Account for changes in job management workflow.

Account for workflow changes in job_manager.py, required as a direct or
indirect result of adding steps for various execution states in the
workflow related to data requirements.

* Account for change of JobExecStep value in tests.

Accounting for renaming of ALLOCATED to AWAITING_SCHEDULING within unit
tests for monitor service.

* Update scheduler package to depend on modeldata.

* Update schedulerservice dep version of scheduler.

* Fix bad monitorservice dep version for monitor.

* Fix change of ALLOCATED to AWAITING_SCHEDULING.

Actually committing change to name of JobExecStep value that is already
reflected elsewhere.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request maas MaaS Workstream
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants