419
419
return_value=fake_popen) as po_mock:
420
420
with self.assertRaises(JESByDefault):
421
421
client.enable_jes()
422
self.assertFalse(client._use_jes)
422
self.assertNotIn('jes', client.feature_flags)
423
423
assert_juju_call(
424
424
self, po_mock, client, ('juju', '--show-log', 'help', 'commands'))
431
431
return_value=FakePopen('', '', 0)) as po_mock:
432
432
with self.assertRaises(JESNotSupported):
433
433
client.enable_jes()
434
self.assertFalse(client._use_jes)
434
self.assertNotIn('jes', client.feature_flags)
435
435
assert_juju_call(
436
436
self, po_mock, client, ('juju', '--show-log', 'help', 'commands'),
449
449
FakePopen('', '', 0),
450
450
FakePopen(SYSTEM, '', 0)]) as po_mock:
451
451
client.enable_jes()
452
self.assertTrue(client._use_jes)
452
self.assertIn('jes', client.feature_flags)
453
453
assert_juju_call(
454
454
self, po_mock, client, ('juju', '--show-log', 'help', 'commands'),
463
463
client = self.client_class(
464
464
SimpleEnvironment('baz', {}),
465
465
'1.25-foobar', 'path')
466
client._use_jes = True
466
client.feature_flags.add('jes')
467
467
client.disable_jes()
468
self.assertIs(False, client._use_jes)
468
self.assertNotIn('jes', client.feature_flags)
470
470
def test__shell_environ_jes(self):
471
471
client = self.client_class(
472
472
SimpleEnvironment('baz', {}),
473
473
'1.25-foobar', 'path')
474
client._use_jes = True
474
client.feature_flags.add('jes')
475
475
env = client._shell_environ()
476
476
self.assertIn('jes', env[JUJU_DEV_FEATURE_FLAGS].split(","))
479
479
client = self.client_class(
480
480
SimpleEnvironment('baz', {'type': 'cloudsigma'}),
481
481
'1.25-foobar', 'path')
482
client._use_jes = True
482
client.feature_flags.add('jes')
483
483
env = client._shell_environ()
484
484
flags = env[JUJU_DEV_FEATURE_FLAGS].split(",")
485
485
self.assertItemsEqual(['cloudsigma', 'jes'], flags)
513
513
client2 = client1.clone()
514
514
self.assertIsNot(client1, client2)
515
515
self.assertIs(self.client_class, type(client2))
516
self.assertIs(False, client2._use_jes)
517
self.assertIs(False, client2._use_container_address_allocation)
516
self.assertEqual(set(), client2.feature_flags)
519
518
def test_clone_enabled(self):
520
519
client1 = self.client_class(
521
520
SimpleEnvironment('foo'), '1.27', 'full/path', debug=True)
522
client1._use_jes = True
523
client1._use_container_address_allocation = True
524
client2 = client1.clone()
525
self.assertIsNot(client1, client2)
526
self.assertIs(self.client_class, type(client2))
527
self.assertIs(True, client2._use_jes)
528
self.assertIs(True, client2._use_container_address_allocation)
521
client1.enable_feature('jes')
522
client1.enable_feature('address-allocation')
523
client2 = client1.clone()
524
self.assertIsNot(client1, client2)
525
self.assertIs(self.client_class, type(client2))
527
set(['jes', 'address-allocation']),
528
client2.feature_flags)
530
def test_clone_old_feature(self):
531
client1 = self.client_class(
532
SimpleEnvironment('foo'), '1.27', 'full/path', debug=True)
533
client1.enable_feature('actions')
534
client1.enable_feature('address-allocation')
535
client2 = client1.clone()
536
self.assertIsNot(client1, client2)
537
self.assertIs(self.client_class, type(client2))
538
self.assertEqual(set(['address-allocation']), client2.feature_flags)
531
541
class TestEnvJujuClient25(TestEnvJujuClient26):
804
814
self.assertEqual(client1.version, client2.version)
805
815
self.assertEqual(client1.full_path, client2.full_path)
806
816
self.assertIs(client1.debug, client2.debug)
817
self.assertEqual(client1.feature_flags, client2.feature_flags)
808
819
def test_clone_changed(self):
809
820
client1 = EnvJujuClient(SimpleEnvironment('foo'), '1.27', 'full/path',
816
827
self.assertEqual('1.28', client2.version)
817
828
self.assertEqual('other/path', client2.full_path)
818
829
self.assertIs(False, client2.debug)
830
self.assertEqual(client1.feature_flags, client2.feature_flags)
820
832
def test_get_cache_path(self):
821
833
client = EnvJujuClient(SimpleEnvironment('foo', juju_home='/foo/'),
2170
2182
client.upgrade_mongo()
2171
2183
juju_mock.assert_called_once_with('upgrade-mongo', ())
2185
def test_enable_feature(self):
2186
client = EnvJujuClient(SimpleEnvironment('bar', {}), None, '/foo')
2187
self.assertEqual(set(), client.feature_flags)
2188
client.enable_feature('actions')
2189
self.assertEqual(set(['actions']), client.feature_flags)
2191
def test_enable_feature_invalid(self):
2192
client = EnvJujuClient(SimpleEnvironment('bar', {}), None, '/foo')
2193
self.assertEqual(set(), client.feature_flags)
2194
with self.assertRaises(ValueError) as ctx:
2195
client.enable_feature('nomongo')
2196
self.assertEqual(str(ctx.exception), "Unknown feature flag: 'nomongo'")
2174
2199
class TestEnvJujuClient2A2(TestCase):