Merge lp:~abentley/charmworld/remove-018-migration into lp:~juju-jitsu/charmworld/trunk

Proposed by Aaron Bentley
Status: Merged
Approved by: Aaron Bentley
Approved revision: 433
Merged at revision: 431
Proposed branch: lp:~abentley/charmworld/remove-018-migration
Merge into: lp:~juju-jitsu/charmworld/trunk
Diff against target: 102 lines (+7/-76)
2 files modified
charmworld/migrations/versions/018_delete_all_bundles.py (+0/-18)
charmworld/migrations/versions/tests/test_migrations.py (+7/-58)
To merge this branch: bzr merge lp:~abentley/charmworld/remove-018-migration
Reviewer Review Type Date Requested Status
Juju Gui Bot continuous-integration Approve
Brad Crittenden (community) code Approve
Review via email: mp+192749@code.launchpad.net

Commit message

Remove 018 migration; before an exodus and already deployed to production.

Description of the change

Remove the 018 migration so that deployment is possible.

The 019 migration is an exodus, so no migrations are permitted before it. This currently blocks new deployments.

To post a comment you must log in.
432. By Aaron Bentley

Remove tests for 018.

433. By Aaron Bentley

Add test to ensure that migrations follow exodus rules.

Revision history for this message
Brad Crittenden (bac) :
review: Approve (code)
Revision history for this message
Juju Gui Bot (juju-gui-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== removed file 'charmworld/migrations/versions/018_delete_all_bundles.py'
--- charmworld/migrations/versions/018_delete_all_bundles.py 2013-09-05 21:36:14 +0000
+++ charmworld/migrations/versions/018_delete_all_bundles.py 1970-01-01 00:00:00 +0000
@@ -1,18 +0,0 @@
1# Copyright 2013 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).
3
4from charmworld.search import (
5 BUNDLE,
6 IndexMissing,
7 translate_error,
8)
9
10
11def upgrade(db, index_client):
12 db.bundles.remove({}, False)
13 try:
14 with translate_error():
15 index_client._client.delete_all(index_client.index_name, BUNDLE)
16 except IndexMissing:
17 # There is nothing to migrate.
18 pass
190
=== modified file 'charmworld/migrations/versions/tests/test_migrations.py'
--- charmworld/migrations/versions/tests/test_migrations.py 2013-10-24 17:24:43 +0000
+++ charmworld/migrations/versions/tests/test_migrations.py 2013-10-25 23:11:01 +0000
@@ -31,64 +31,6 @@
31 self.use_context(mock.patch.object(migrate, 'configure_logging'))31 self.use_context(mock.patch.object(migrate, 'configure_logging'))
3232
3333
34class TestMigration018(MigrationTestBase):
35
36 def setUp(self):
37 super(TestMigration018, self).setUp()
38 self.use_index_client()
39 self.store_some_bundles()
40
41 def store_some_bundles(self):
42 deployer_config = textwrap.dedent("""\
43 wordpress-stage:
44 series: precise
45 services:
46 blog:
47 charm: cs:precise/wordpress
48 constraints: mem=2
49 options:
50 tuning: optimized
51 engine: apache
52 """)
53 parsed = yaml.safe_load(deployer_config)
54 owner = 'owner'
55 bundle_name = 'wordpress-stage'
56 basket_name = 'wordpress-basket'
57 basket_rev = 3
58 basket_id = "%s/%d" % (basket_name, basket_rev)
59 self.search_id = Bundle.construct_id(
60 owner, basket_name, bundle_name)
61 store_bundles(
62 self.db.bundles, parsed, owner, basket_id,
63 None, None, None, None,
64 index_client=self.index_client)
65
66 def test_bundles_are_removed_from_elastic_search(self):
67 assert self.index_client.get(self.search_id, BUNDLE), (
68 'the test bundle is missing')
69 self.versions.run_migration(
70 self.db, self.index_client, '018_delete_all_bundles.py')
71 self.assertIsNone(self.index_client.get(self.search_id, BUNDLE))
72
73 def test_bundles_are_removed_from_mongo(self):
74 assert self.index_client.get(self.search_id, BUNDLE), (
75 'the test bundle is missing')
76 self.versions.run_migration(
77 self.db, self.index_client, '018_delete_all_bundles.py')
78 self.assertIsNone(self.db.bundles.find_one({}))
79
80 def test_new_db_and_index_are_noop(self):
81 # The migration script survives MIssingIndex errors.
82 # New installs don't have ES indexes yet.
83 self.index_client.delete_index()
84 with self.assertRaises(IndexMissing):
85 self.index_client.get_status()
86 self.versions.run_migration(
87 self.db, self.index_client, '018_delete_all_bundles.py')
88 # Put the index back for the test case to handle.
89 self.index_client.create_index()
90
91
92class TestMigration019(MigrationTestBase):34class TestMigration019(MigrationTestBase):
9335
94 def setUp(self):36 def setUp(self):
@@ -166,3 +108,10 @@
166 self.versions.run_migration,108 self.versions.run_migration,
167 self.db, self.index_client,109 self.db, self.index_client,
168 '020_adds_type_field_to_existing_review_items.py')110 '020_adds_type_field_to_existing_review_items.py')
111
112
113class TestExodusRestrictions(MigrationTestBase):
114
115 def test_exodus_restrictions(self):
116 """Ensure that deploy-from-scratch does not violate exodus rules."""
117 self.versions._check_exodus(self.versions.list_pending(0))

Subscribers

People subscribed via source and target branches