.. _workflow-update-suites: Workflow ``update_suites`` ========================== This workflow does whatever is needed to coordinate metadata updates for all archives in a :ref:`workspace `. Initially this will just involve generating basic indexes for each of the suites in those archives that have been changed, but later it may also generate supplementary files such as ``Contents-*``. The workflow operates on the workspace in which it was created. * ``task_data``: * ``force_basic_indexes`` (boolean, defaults to False): if True, regenerate basic indexes (``Packages``, ``Sources``, ``Release``, and their variants) even if the state of the archive does not seem to have changed since they were last generated For each suite in the workspace, if any collection items have been added or removed since the creation timestamp of its most recent ``index:Release`` item, it creates a :ref:`GenerateSuiteIndexes ` task, with task data as follows: * ``suite_collection``: the suite whose indexes should be generated * ``generate_at``: the transaction timestamp at which the workflow orchestrator is being run (this needs special care to preserve idempotency, since any later runs of the same workflow orchestrator would have a different transaction timestamp) To begin with, this workflow can just be run periodically, although that will not scale well to large numbers of suites. We should eventually have a mechanism where changes to a collection can trigger a workflow. .. todo:: `Future work `__ is needed to sign ``Release`` files, and will need to be integrated into this task. That will probably involve creating a new sub-workflow that can deal with generating and signing indexes for a single suite. Once :ref:`archives ` have been implemented, we may also want to group all the updates for suites in a given archive under a single sub-workflow. .. todo:: `Valid-Until `__ can be supported by adding a field to the suite collection specifying the validity period. This workflow would then additionally include all those whose validity period is nearly up in its search criteria.