model-migrations is now merged into master
Tim Penhey
tim.penhey at canonical.com
Tue Mar 22 02:00:17 UTC 2016
Hi folks,
tl;dr: you might get some new test failures when changing the DB
structure, see below.
Those quick amongst you will notice that there is still a branch in
github.com/juju/juju for model-migrations. This exists to allow us to
continue landing bits while master aims for its bless for the next beta
release.
OK, so it merged, what does it do?
Well it almost migrates models, but not quite. It does however have many
of the moving parts.
** New package: core/description
This contains a database agnostic representation of the model. The aim
is to have it match every feature we have, like payloads, resources,
storage, network spaces etc, but it isn't quite there yet. The model
description manages machines, services, units, relations, status (and
history), annotations, and relation data. We will be working to get as
much additional information in the description before the full release.
** New package: migration
This package has exported methods like: ExportModel, ImportModel,
UploadBinaries, and Precheck. These are the higher level methods that
deal with migrating models between controllers.
The binaries we handle right now are charms and tools. Resources are to
come real soon now (hopefully before release).
** Database collection and document tests
There are a bunch of tests added to state, particularly in
migration_internal_test.go. These tests make assertions about the
collections that migrations know about, and the exported fields in the
mongo documents for the various collections.
If you add, rename, or remove fields from documents, the tests will fail
and you will need to deal with the migration implications of those changes.
Adding or removing a collection will also cause a test failure, until
you deal with it.
** New command
juju migrate
This will initiate a migration for the specified hosted model to the
specified controller. The actual progress of the migration will be
exposed in the status output and logs.
** New API façades
There are three new façades to deal with different aspects of migrations.
MigrationMaster - used by the migration master worker to manage the
migration from the source controller.
MigrationTarget - used by the migration master worker when
communicating to the target controller.
MigrationSlave - used by the migration slave worker which runs in each
agent in a hosted model to monitor progress of the migration and take
migration related actions.
Questions?
Tim
More information about the Juju-dev
mailing list