XMLWordPrintableJSON

Details

    Description

      1. In PGA portal implementation for a compute resource we could add a reservation
      2. Reservation is to have a dedicate computing time in a cluster queue/partition
      3. As for the existing PGA implementation we could provide a reservation name and a start and end time for the particular reservation. 
      4. In Django the implementation does not exists.
      5. First we should have the previous implementation done in Django portal
      6. Next step would be to improve it by enabling
      7. Adding a reservation for a particular cluster queue/partition
      8. 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

      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

          Activity

            People

              akbranam Anna Branam
              eroma_a Eroma
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: