Upgrading to Beaker 0.12¶
Database changes¶
After upgrading the beaker-server package on your Beaker server, run the beaker-init command to create new tables. Then follow the additional database upgrade instructions below.
Asynchronous job status updates (bug #%s807237)¶
Run the following SQL:
ALTER TABLE job
ADD COLUMN dirty_version BINARY(16) NOT NULL AFTER id,
ADD COLUMN clean_version BINARY(16) NOT NULL AFTER dirty_version,
ADD INDEX ix_job_dirty_clean_version
(dirty_version, clean_version);
It is also recommended to mark all existing jobs in the Beaker database as “dirty” so that beakerd will update their status. This will clean up any jobs left in an inconsistent state by bugs in previous versions of Beaker. Note however that no new jobs will proceed while beakerd is processing a backlog of dirty jobs. Processing will take approximately 1 hour for every 10,000 jobs in the backlog.
If this outage period is acceptable for your Beaker installation (for example, you have less than 5000 existing jobs) you can mark all existing jobs as dirty during the upgrade and beakerd will update them when it next starts up:
UPDATE job SET dirty_version = '1111111111111111';
Otherwise, you can periodically mark old jobs as dirty in batches, to minimize the impact on new jobs. First, make a note of the newest job at upgrade time:
SELECT MAX(id) FROM job;
Then, after the upgrade is complete, periodically set dirty_version on old job IDs up to the value you noted above. Adjust the size and frequency of the batches according to the performance of your Beaker server. For example, you could update 1000 jobs every 10 minutes:
UPDATE job SET dirty_version = '1111111111111111'
WHERE id > 0 AND <= 1000;
UPDATE job SET dirty_version = '1111111111111111'
WHERE id > 1000 AND <= 2000;
...
To roll back, run the following SQL:
ALTER TABLE job
DROP COLUMN dirty_version,
DROP COLUMN clean_version;
Loan comments (bug #%s733347)¶
Run the following SQL:
ALTER TABLE system
ADD COLUMN(loan_comment varchar(1000) DEFAULT NULL);
To roll back, run the following SQL:
ALTER TABLE system
DROP loan_comment;
Add UNIQUE constraint for task.name (bug #%s915549)¶
Run the following SQL:
DELETE FROM task USING task, task AS vtask
WHERE task.id < vtask.id AND task.name = vtask.name;
ALTER TABLE task
MODIFY name VARCHAR(255) UNIQUE;
The above SQL query will keep the task with the maximum task ID (most recent one) and remove the others having the same name.
To roll back, run the following SQL:
ALTER TABLE task
DROP INDEX name,
MODIFY name VARCHAR(2048);
Add task result type “None” (bug #%s915128)¶
Run the following SQL:
ALTER TABLE job
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic', 'None') NOT NULL;
ALTER TABLE recipe_set
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic', 'None') NOT NULL;
ALTER TABLE recipe
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic', 'None') NOT NULL;
ALTER TABLE recipe_task
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic', 'None') NOT NULL;
ALTER TABLE recipe_task_result
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic', 'None') NOT NULL;
To roll back, run the following SQL:
ALTER TABLE job
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic') NOT NULL;
ALTER TABLE recipe_set
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic') NOT NULL;
ALTER TABLE recipe
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic') NOT NULL;
ALTER TABLE recipe_task
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic') NOT NULL;
ALTER TABLE recipe_task_result
MODIFY result ENUM('New', 'Pass', 'Warn', 'Fail', 'Panic') NOT NULL;
Configuration changes¶
Redirect server API documentation¶
In previous versions, server API documentation was included in the beaker-server package and served from apidocs/. It is no longer included in the package; it can be browsed on the Beaker web site instead.
Replace the following Alias directive in /etc/httpd/conf.d/beaker-server.conf:
Alias /bkr/apidoc /usr/share/bkr/server/apidoc/html
with a Redirect directive (adjust the /bkr path prefix as appropriate for your site):
Redirect permanent /bkr/apidoc http://beaker-project.org/docs/server-api
oVirt data center mapping¶
This is only applicable to Beaker sites using oVirt integration.
In previous versions, Beaker looked for usable oVirt data centers by matching against the lab controller FQDN (with some modifications to match oVirt naming constraints). Now the mapping from lab controllers to oVirt data centers is maintained in the Beaker database. This allows you to utilize multiple oVirt data centers per lab. See Integration with OpenStack for details about how to configure the mapping.