def test_assess_bootstrap_part_to(self): args = parse_args(['to', 'bar']) with assess_bootstrap_cxt(): with self.sub_assess_mocks() as (base_mock, metadata_mock, to_mock): with patch('jujupy.ModelClient.get_full_path'): assess_bootstrap(args) self.assertEqual(0, base_mock.call_count) self.assertEqual(0, metadata_mock.call_count) self.assertEqual(1, to_mock.call_count)
def test_assess_to_fails(self): with extended_bootstrap_cxt('2.0.0'): with patch('jujupy.ModelClient.bootstrap', autospec=True): with patch('assess_bootstrap.get_controller_address', return_value='255.1.1.0', autospec=True): args = parse_args(['to', 'bar', '/foo', '--to', '255.1.13.0']) args.temp_env_name = 'qux' bs_manager = BootstrapManager.from_args(args) with self.assertRaises(JujuAssertionError): assess_to(bs_manager, args.to)
def test_assess_base_bootstrap_defaults(self): def check(myself): self.assertEqual(myself.env.config, {'name': 'bar', 'type': 'foo'}) with extended_bootstrap_cxt(): with patch('jujupy.ModelClient.bootstrap', side_effect=check, autospec=True): assess_bootstrap(parse_args(['base', 'bar', '/foo'])) self.assertRegexpMatches( self.log_stream.getvalue(), r"(?m)^INFO Environment successfully bootstrapped.$")
def test_parse_args(self): with temp_dir() as log_dir: args = parse_args(['base', 'foo', 'bar', log_dir, 'baz']) self.assertEqual( Namespace( agent_stream=None, agent_url=None, bootstrap_host=None, deadline=None, debug=False, env='foo', juju_bin='bar', keep_env=False, local_metadata_source=None, logs=log_dir, machine=[], part='base', region=None, series=None, temp_env_name='baz', to=None, upload_tools=False, verbose=20), args)
def test_assess_metadata_valid_url(self): with extended_bootstrap_cxt('2.0.0'): with patch('jujupy.ModelClient.bootstrap', autospec=True): args = parse_args(['metadata', 'bar', '/foo']) args.temp_env_name = 'qux' bs_manager = BootstrapManager.from_args(args) with patch.object( bs_manager.client, 'get_model_config', return_value={'agent-metadata-url': {'value': 'example.com/valid'}}): with self.assertRaises(JujuAssertionError): assess_metadata(bs_manager, None)
def test_assess_metadata_local_source(self): def check(myself, metadata_source=None): self.assertEqual(self.target_dict, myself.env._config) self.assertEqual('agents', metadata_source) with extended_bootstrap_cxt('2.0.0'): with patch('jujupy.ModelClient.bootstrap', side_effect=check, autospec=True): args = parse_args(['metadata', 'bar', '/foo']) args.temp_env_name = 'qux' bs_manager = BootstrapManager.from_args(args) with patch.object( bs_manager.client, 'get_model_config', side_effect=lambda: self.get_url(bs_manager)): assess_metadata(bs_manager, 'agents')
def test_assess_to(self): args = parse_args( ['to', 'bar', '/foo', '--region', 'baz', '--to', 'test-host']) args.temp_env_name = 'qux' with extended_bootstrap_cxt('2.0.0'): with patch('jujupy.ModelClient.juju', autospec=True, return_value=make_fake_juju_return()) as j_mock: with patch('assess_bootstrap.get_controller_hostname', return_value='test-host', autospec=True): bs_manager = BootstrapManager.from_args(args) assess_to(bs_manager, args.to) bootstrap_args = [ c[1][2] for c in j_mock.mock_calls if c[1][1] == 'bootstrap'][0] to_pos = bootstrap_args.index('--to') self.assertEqual('test-host', bootstrap_args[to_pos + 1])
def test_assess_base_bootstrap_region_temp_env(self): def check(myself): self.assertEqual( myself.env.config, { 'name': 'qux', 'type': 'foo', 'region': 'baz'}) self.assertEqual(myself.env.environment, 'qux') with extended_bootstrap_cxt(): with patch('jujupy.ModelClient.bootstrap', side_effect=check, autospec=True): args = parse_args(['base', 'bar', '/foo']) args.region = 'baz' args.temp_env_name = 'qux' assess_bootstrap(args) self.assertRegexpMatches( self.log_stream.getvalue(), r"(?m)^INFO Environment successfully bootstrapped.$")
def test_parse_args_debug(self): args = parse_args(['base', 'foo', 'bar', '--debug']) self.assertIsTrue(args.debug)
def test_parse_args_part(self): args = parse_args(['metadata']) self.assertEqual(args.part, 'metadata')
def test_parse_args_to(self): args = parse_args(['to', 'foo', 'bar', '--to', 'qux']) self.assertEqual(args.to, 'qux')
def test_parse_args_local_metadata_source(self): args = parse_args(['base', 'foo', 'bar', '--local-metadata-source', 'qux']) self.assertEqual(args.local_metadata_source, 'qux')
def test_parse_args_temp_env_name(self): args = parse_args(['base', 'fee', 'fi', 'foe', 'fum']) self.assertEqual(args.temp_env_name, 'fum')
def test_parse_args_region(self): args = parse_args(['base', 'foo', 'bar', '--region', 'foo']) self.assertEqual(args.region, 'foo')