1440
1440
def test_iter_steps(self):
1441
1441
client = FakeEnvJujuClient()
1442
admin_client = client.get_admin_client()
1442
controller_client = client.get_controller_client()
1443
1443
ensure_av = EnsureAvailabilityAttempt()
1444
1444
ensure_iter = iter_steps_validate_info(self, ensure_av, client)
1445
1445
self.assertEqual(ensure_iter.next(), {
1446
1446
'test_id': 'ensure-availability-n3'})
1447
1447
with patch('subprocess.check_call') as cc_mock:
1448
with patch.object(client, 'get_admin_client',
1449
return_value=admin_client, autospec=True):
1448
with patch.object(client, 'get_controller_client',
1449
return_value=controller_client, autospec=True):
1450
1450
self.assertEqual(ensure_iter.next(), {
1451
1451
'test_id': 'ensure-availability-n3'})
1452
1452
assert_juju_call(
1454
1454
cc_mock, client,
1455
1455
('juju', '--show-log', 'enable-ha', '-m',
1456
'steve:{}'.format(admin_client.env.environment), '-n', '3'))
1456
'steve:{}'.format(controller_client.env.environment), '-n', '3'))
1459
1459
'0': {'controller-member-status': 'has-vote'},
1463
1463
'applications': {},
1465
with patch_status(admin_client, status) as gs_mock:
1465
with patch_status(controller_client, status) as gs_mock:
1466
1466
self.assertEqual(ensure_iter.next(), {
1467
1467
'test_id': 'ensure-availability-n3', 'result': True})
1468
gs_mock.assert_called_once_with(admin=True)
1468
gs_mock.assert_called_once_with(controller=True)
1470
1470
def test_iter_steps_failure(self):
1471
1471
client = FakeEnvJujuClient()
1473
1473
ensure_iter = iter_steps_validate_info(self, ensure_av, client)
1474
1474
ensure_iter.next()
1475
1475
with patch('subprocess.check_call'):
1476
admin_client = client.get_admin_client()
1477
with patch.object(client, 'get_admin_client',
1478
return_value=admin_client, autospec=True):
1476
controller_client = client.get_controller_client()
1477
with patch.object(client, 'get_controller_client',
1478
return_value=controller_client, autospec=True):
1479
1479
ensure_iter.next()
1485
1485
'applications': {},
1487
with patch_status(admin_client, status) as gs_mock:
1487
with patch_status(controller_client, status) as gs_mock:
1488
1488
with self.assertRaisesRegexp(
1489
1489
Exception, 'Timed out waiting for voting to be enabled.'):
1490
1490
ensure_iter.next()
1766
1766
client.env.environment = aws_env.environment
1767
1767
client.env.config = aws_env.config
1768
1768
client.env.juju_home = aws_env.juju_home
1769
admin_client = client.get_admin_client()
1769
controller_client = client.get_controller_client()
1770
1770
environ = dict(os.environ)
1771
1771
environ.update(get_euca_env(client.env.config))
1773
1773
def check_output(*args, **kwargs):
1774
if args == (('juju', '--show-log', 'create-backup', '-m',
1775
'steve:{}'.format(admin_client.env.environment),),):
1775
'juju', '--show-log', 'create-backup', '-m',
1776
'steve:{}'.format(controller_client.env.environment),),):
1776
1777
return FakePopen('juju-backup-24.tgz', '', 0)
1777
1778
self.assertEqual([], args)
1778
1779
initial_status = {
1784
1785
iterator = iter_steps_validate_info(self, br_attempt, client)
1785
1786
self.assertEqual(iterator.next(), {'test_id': 'back-up-restore'})
1786
with patch_status(admin_client, initial_status) as gs_mock:
1787
with patch_status(controller_client, initial_status) as gs_mock:
1787
1788
with patch('subprocess.Popen',
1788
1789
side_effect=check_output) as co_mock:
1789
1790
with patch('subprocess.check_call') as cc_mock:
1790
with patch.object(client, 'get_admin_client',
1791
return_value=admin_client,
1791
with patch.object(client, 'get_controller_client',
1792
return_value=controller_client,
1792
1793
autospec=True):
1793
1794
with patch('sys.stdout'):
1794
1795
self.assertEqual(
1801
1802
('juju', '--show-log', 'create-backup',
1802
'-m', 'steve:{}'.format(admin_client.env.environment)),
1803
'-m', 'steve:{}'.format(controller_client.env.environment)),
1804
1805
self.assertEqual(
1805
1806
cc_mock.mock_calls[0],
1809
1810
self.assertEqual(iterator.next(),
1810
1811
{'test_id': 'back-up-restore'})
1811
1812
pn_mock.assert_called_with('Closed.')
1812
with patch.object(admin_client, 'restore_backup') as rb_mock:
1813
with patch.object(controller_client, 'restore_backup') as rb_mock:
1813
1814
self.assertEqual(iterator.next(), {'test_id': 'back-up-restore'})
1814
1815
rb_mock.assert_called_once_with(
1815
1816
os.path.abspath('juju-backup-24.tgz'))
1824
1825
'applications': {},
1826
with patch_status(admin_client, final_status) as gs_mock:
1827
with patch_status(controller_client, final_status) as gs_mock:
1827
1828
self.assertEqual(iterator.next(),
1828
1829
{'test_id': 'back-up-restore', 'result': True})
1829
1830
gs_mock.assert_called_once_with()