Soyuz/Specs/PublisherScriptInPython

Not logged in - Log In / Register

Overview

Overall Summary

Summary: Convert the existing cron.publish-ftpmaster shell script into a Python LaunchpadCronscript. Errors will be reported to the scriptactivity table, and distro-specific hook scripts can be run at certain points in the publishing pipeline.

Goal/Deliverables: A new Python script to control distribution publishing, which will replace cron.publish-ftpmaster.

We will know we have finished when the new script can be used.

Release Note

This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the first part of our release change log.

It is mandatory.

Rationale

Use cases

Assumptions

User Interface

n/a

Implementation

Write a new Python script that is a standard LaunchpadCronscript. It will report its status to the scriptactivity table, thus notify the LOSAs of problems.

The script will use run-parts to execute an arbitrary number of executable files in a pre-defined directory at certain points in the pipeline. The publication part of the script will run twice, with a "high" priority pass first and a "low" priority pass second. The high priority pass is intended for security publications that need to be pushed out quickly.

  1. Run process-accepted
  2. Get the list of dirty pockets.
  3. If there are dirty security pockets, run the "fast track" publication process.
  4. Run the normal publication process.

Publication part:

  1. rsync the temporary dists tree from the current one
  2. Run publish-distro with the required suites
  3. run-parts "pre-publication", with the priority as arg[0]
  4. Install the new dists tree
  5. run-parts "post-publication", with the priority as arg[0]

"priority" will be an integer where 0 is high and 1 is low priority.

The pre-publication files will initially be:

The post-publication files will initially be:

The hook scripts will be responsible for deciding whether to run or not, based on the priority supplied.

Code Changes

Code changes should include an overview of what needs to change, and in some cases even the specific details.

Schema Changes

What Database changes are you proposing? Do you need a new index created? Proposing a new table? If so, what does it look like?

Migration

Include:

Soyuz/Specs/PublisherScriptInPython (last edited 2011-03-09 11:40:49 by julian-edwards)