Skip to content

[device service] Availability handling #33

@lassertos

Description

@lassertos

The availability of a device is a list of timeslots during which a device can be used in an experiment. Currently the availability of a device is handled via the route /devices/{device_id}/availability which only allows POST requests. Such a POST request can contain an array of AvailabilityRules which are appended to the current list of the device. Afterwards the available timeslots of the device are calculated for 365 days. The availability of a device can currently only be retrieved for a concrete device via a GET request on the route /devices/{device_id} where {device_id} is the id of the concrete device.

This approach needs to be adapted because of its shortcomings:

  • The calculated availability of a device which is sent on a GET request may become outdated since it is only updated when a new rule is added
  • The transmission of the availability on each GET request of a concrete device seems unnecessary
  • Only concrete devices have availability, but instantiable cloud devices could also have times of unavailability
  • Rules cannot currently be removed (plan was to remove them when receiving the rule {available: false})

One idea would be the introduction of further routes for the handling of the availability of devices:

  • Add GET on route /devices/{device_id}/availability to view the current availability of a device, with query parameters for start and end to set a requested timeframe
    • if the query parameter start is not set, the current time will be used
    • if the query parameter end is not set, the current time plus a fixed offset (e.g. a week or 28 days) will be used
    • the query parameters start and end should conform to the date-time format with end being larger than start
  • Add DELETE on route /devices/{device_id}/availability to delete all rules
  • Remove availability from response to GET request on route /devices/{device_id}
  • Add availability to instantiable devices (e.g. expected downtime)
  • Calculate availability of a device group by merging availability of the contained devices

Further opinions and ideas on this topic are welcome, especially when considering possible requirements of the booking service.

Metadata

Metadata

Assignees

Labels

invalidThis doesn't seem rightquestionFurther information is requested

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions