Details
-
Sub-task
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
0.18
-
None
Description
- In PGA portal implementation for a compute resource we could add a reservation
- Reservation is to have a dedicate computing time in a cluster queue/partition
- As for the existing PGA implementation we could provide a reservation name and a start and end time for the particular reservation.
- In Django the implementation does not exists.
- First we should have the previous implementation done in Django portal
- Next step would be to improve it by enabling
- Adding a reservation for a particular cluster queue/partition
- Then we should also be able to add multiple reservations for a particular queue/partition. These multiples will have different reservation names and start and end dates.
Data Model
- GroupComputeResourcePreference
- reservations: list<ComputeResourceReservation>
- queues: list<string>
- reservationName
- startTime
- endTime
- reservations: list<ComputeResourceReservation>
A GroupComputeResourcePreference can have one or more ComputeResourceReservation records. Each ComputeResourceReservation is applicable to one or more queue/partitions for the GroupComputeResourcePreference's compute host. The ComputeResourceReservation also has a name, start date and end date.
TODO
- [x] how to deal with expired reservations?
- in the UI have a button to remove all expired reservations
- [ ] Validation: don't allow multiple reservations for the same queue/partition for the same overlapping time period?
- [x] Validation: endTime must be greater than startTime
- [x] update TaskContext.getReservation() logic where it looks to see if there is a currrently active reservation for the host and queue
- [ ] document the automatic migration script creation logic -> moved to
AIRAVATA-3326 - [x] Repository unit test: removing a reservation
- [x] Repository unit test: updating a reservation
- [x] Repository unit test: adding a queue
- [x] Repository unit test: removing a queue
- [x] Refactor the openjpa MappingTool migration script creation logic
- [ ] remove generate-sql-persistence.xml and maven goal that used it -> moved to
AIRAVATA-3326 - [x] migration for GroupComputeResourcePreference.reservation/reservationStartTime/reservationEndTime into a ComputeResourceReservation record
- since there was no UI for creating these, we don't have any of these records. So we really don't need to bother with this migration.
- [ ] switch ide-integration to using mariadb instead of mysqld for better compatibility with migration scripts -> moved to
AIRAVATA-3326 - [ ] if not switching to mariadb then we need to remove IF NOT EXISTS from the migration script
- [x] summarize active (and upcoming?) reservations on Group Resource Profile view
- [x] invalidate GroupComputeResourcePreference save when reservation is invalid
- [x] fix GroupComputeResourcePreference save/delete/cancel buttons to bottom of viewport
- [x] reservations move around in the UI when date based sort changes, maybe don't dynamically sort
- [x] minutes aren't getting set if not selected? Can they be defaulted to 00? Might also need to zero out seconds.
- [ ] inline form for the reservation editor?
- [x] don't allow picking an end date before the start date
- [x] test using the drop action to see if a migration can be generated when columns/tables are removed: http://openjpa.apache.org/builds/3.1.0/apache-openjpa/docs/ref_guide_mapping.html#ref_guide_mapping_mappingtool_typical
- this doesn't really work because the migration generation only runs after validation fails. And validation only fails on when mapped columns are missing in the database.
Migration Plan
Expand
- database migration to add new tables
convert GroupComputeResourcePreference.reservation/reservationStartTime/reservationEndTime into a ComputeResourceReservation record- since there was no UI for creating GroupComputeResourcePreference.reservation, we don't have any of these records. So we really don't need to bother with this migration.
trigger to turn new values in GroupComputeResourcePreference.reservationName/reservationStartTime/reservationEndTime into ComputeResourceReservation records- likewise
- but I don't think there is any UI or anything updating these fields now
- deploy API server with new ComputeResourceReservation model
Migrate
- Deploy Django UI for managing ComputeResourceReservation records
- Helix tasks should check the ComputeResourceReservation records in addition to GroupComputeResourcePreference.reservationName/reservationStartTime/reservationEndTime
Contract (AIRAVATA-3327)
- Helix tasks should stop checking the GroupComputeResourcePreference.reservationName/reservationStartTime/reservationEndTime
- Remove data model fields GroupComputeResourcePreference.reservation/reservationStartTime/reservationEndTime and entity mappings
- remove database columns
Attachments
Issue Links
- is related to
-
AIRAVATA-3312 BUG: Cannot update an existing GRP and save in development gateway
- Resolved
-
AIRAVATA-3326 Improved database migration script creation
- Resolved
-
AIRAVATA-3327 Remove deprecated reservation fields
- Resolved
- relates to
-
AIRAVATA-3216 Apache airavata load client to update, to work with secure API. User login details are required to access the storage resource
- Open
- mentioned in
-
Page Loading...