Generic scheduler task creation according to task type
As the scheduler api usage starts to grow, we need a way to generically create a task for a given type.
Each task type (listing, loading, cooking, checking...) has a different way of being called, creating multiple combinations. This is difficult to track every form of them as this is currently dispatched among different modules. That could be a pain to maintain in the long run.
As of today, this is "hard-coded" in:
- swh-web (in progress) ~> will be multiple loading types (svn, hg, git, maybe more)
- swh-updater (ghtorrent) ~> only 1 type so far (loading)
- swh-deposit ~> only 2 types so far (checking, loading)
- swh-vault ~> only 1 type so far (cooking)
- swh-lister ~> loading types
I think that ideally, the client of the scheduler api should not be concerned by those... Just call the creation api to schedule a task of a given tool_type (lister, loader, checker, cooker, ...), for a given origin type (git, svn, hg, tar, deposit, dir, ...), possibly a supplementary extra nature information (i see incremental and full so far, don't really know how to call this one).
I see one possible way of implementing this as this is somewhat already the case in the task_type table of the scheduler. Reworking slighly the task_type table to have those new column should do it:
- tool_type: lister, loader, checker, cooker, ...
- origin_type: git, svn, hg, tar, deposit, dir, ...
- tool_type_extra: incremental, full, none ...
- template_arguments: json like structure for each type
The last one being the important one permitting the task creation templating without bothering the scheduler api client.
Or something.
Migrated from T1157 (view on Phabricator)