def test_defaults(self): expected = get_default_config() observed = { name: Config.objects.get_config(name) for name in expected } self.assertEqual(expected, observed)
class SettingConfigTest(MAASServerTestCase): """Testing of the :class:`Config` model and setting each option.""" scenarios = tuple( (name, {"name": name}) for name in get_default_config() ) def setUp(self): super(SettingConfigTest, self).setUp() # Some of these setting we have to be careful about. if self.name in {"enable_http_proxy", "http_proxy"}: manager = signals.bootsources.signals self.addCleanup(manager.enable) manager.disable() def test_can_be_initialised_to_None_without_crashing(self): Config.objects.set_config(self.name, None) self.assertThat(Config.objects.get_config(self.name), Is(None)) def test_can_be_modified_from_None_without_crashing(self): Config.objects.set_config(self.name, None) something = [factory.make_name("value")] Config.objects.set_config(self.name, something) self.assertEqual(something, Config.objects.get_config(self.name))
def test_get_must_be_in_config_items(self): allowed_keys = set(CONFIG_ITEMS.keys()) all_keys = set(get_default_config().keys()) not_allowed_keys = all_keys.difference(allowed_keys) key = random.choice(list(not_allowed_keys)) user = factory.make_User() handler = ConfigHandler(user, {}, None) self.assertRaises(HandlerDoesNotExistError, handler.get, {"name": key})
def test_manager_get_configs_returns_passed_defaults(self): expected = get_default_config() # Only get a subset of all the configs. expected_names = list(expected)[:5] expected_dict = { name: factory.make_name('value') for name in expected_names } defaults = [expected_dict[name] for name in expected_names] for name, value in expected_dict.items(): Config.objects.set_config(name, value) self.assertEquals(expected_dict, Config.objects.get_configs(expected_names, defaults))
def test_manager_get_configs_returns_configs_dict(self): expected = get_default_config() # Only get a subset of all the configs. expected_names = list(expected)[:5] # Set a config value to test that is over the default. other_value = factory.make_name('value') Config.objects.set_config(expected_names[0], other_value) observed = Config.objects.get_configs(expected_names) expected_dict = {expected_names[0]: other_value} expected_dict.update({ name: expected[name] for name in expected_names if name != expected_names[0] }) self.assertEquals(expected_dict, observed)
def list(self, params): """List all the configuration values.""" defaults = get_default_config() config_keys = CONFIG_ITEMS.keys() config_objs = Config.objects.filter(name__in=config_keys) config_objs = {obj.name: obj for obj in config_objs} self.cache["loaded_pks"].update(config_keys) config_keys = [{ 'name': key, 'value': (config_objs[key].value if key in config_objs else defaults.get(key, '')), } for key in config_keys] return self._include_choices(config_keys)
def dehydrated_all_configs(self): defaults = get_default_config() config_keys = CONFIG_ITEMS.keys() config_objs = Config.objects.filter(name__in=config_keys) config_objs = {obj.name: obj for obj in config_objs} config_keys = [{ "name": key, "value": (config_objs[key].value if key in config_objs else defaults.get(key, "")), } for key in config_keys] for config_key in config_keys: config_field = get_config_field(config_key["name"]) if hasattr(config_field, "choices"): config_key["choices"] = config_field.choices return config_keys
def dehydrated_all_configs(self): defaults = get_default_config() config_keys = CONFIG_ITEMS.keys() config_objs = Config.objects.filter(name__in=config_keys) config_objs = {obj.name: obj for obj in config_objs} config_keys = [{ 'name': key, 'value': (config_objs[key].value if key in config_objs else defaults.get(key, '')) } for key in config_keys] for config_key in config_keys: config_field = get_config_field(config_key['name']) if hasattr(config_field, 'choices'): config_key['choices'] = config_field.choices return config_keys
def test_defaults(self): expected = get_default_config() observed = {name: Config.objects.get_config(name) for name in expected} # Test isolation is not what it ought to be, so we have to exclude # rpc_shared_secret here for now. Attempts to improve isolation have # so far resulted in random unreproducible test failures. See the # merge proposal for lp:~allenap/maas/increased-test-isolation. self.assertIn("rpc_shared_secret", expected) del expected["rpc_shared_secret"] self.assertIn("rpc_shared_secret", observed) del observed["rpc_shared_secret"] # completed_intro is set to True in all tests so that URL manipulation # in the middleware does not occur. We check that it is True and # remove it from the expected and observed. self.assertTrue(observed["completed_intro"]) del expected["completed_intro"] del observed["completed_intro"] self.assertEqual(expected, observed)
def test_configure_dhcp_writes_dhcp_config(self): mocked_task = self.patch(dhcp, 'write_dhcp_config') self.patch(settings, 'DEFAULT_MAAS_URL', 'http://%s/' % factory.getRandomIPAddress()) nodegroup = factory.make_node_group( status=NODEGROUP_STATUS.ACCEPTED, dhcp_key=factory.getRandomString(), interface=factory.make_name('eth'), network=IPNetwork("192.168.102.0/22")) self.patch(settings, "DHCP_CONNECT", True) configure_dhcp(nodegroup) dhcp_params = [ 'subnet_mask', 'broadcast_ip', 'router_ip', 'ip_range_low', 'ip_range_high', ] interface = nodegroup.get_managed_interface() expected_params = { param: getattr(interface, param) for param in dhcp_params } expected_params["omapi_key"] = nodegroup.dhcp_key expected_params["dns_servers"] = get_dns_server_address() expected_params["ntp_server"] = get_default_config()['ntp_server'] expected_params["domain_name"] = nodegroup.name expected_params["subnet"] = '192.168.100.0' expected_params["dhcp_interfaces"] = interface.interface args, kwargs = mocked_task.apply_async.call_args result_params = kwargs['kwargs'] # The check that the callback is correct is done in # test_configure_dhcp_restart_dhcp_server. del result_params['callback'] self.assertEqual(expected_params, result_params)
def test_configure_dhcp_writes_dhcp_config(self): mocked_task = self.patch(dhcp, 'write_dhcp_config') self.patch( settings, 'DEFAULT_MAAS_URL', 'http://%s/' % factory.getRandomIPAddress()) nodegroup = factory.make_node_group( status=NODEGROUP_STATUS.ACCEPTED, dhcp_key=factory.getRandomString(), interface=factory.make_name('eth'), network=IPNetwork("192.168.102.0/22")) self.patch(settings, "DHCP_CONNECT", True) configure_dhcp(nodegroup) dhcp_params = [ 'subnet_mask', 'broadcast_ip', 'router_ip', 'ip_range_low', 'ip_range_high', ] interface = nodegroup.get_managed_interface() expected_params = { param: getattr(interface, param) for param in dhcp_params} expected_params["omapi_key"] = nodegroup.dhcp_key expected_params["dns_servers"] = get_dns_server_address() expected_params["ntp_server"] = get_default_config()['ntp_server'] expected_params["domain_name"] = nodegroup.name expected_params["subnet"] = '192.168.100.0' expected_params["dhcp_interfaces"] = interface.interface args, kwargs = mocked_task.apply_async.call_args result_params = kwargs['kwargs'] # The check that the callback is correct is done in # test_configure_dhcp_restart_dhcp_server. del result_params['callback'] self.assertEqual(expected_params, result_params)
def test_default_config_maas_name(self): default_config = get_default_config() self.assertEqual(gethostname(), default_config['maas_name'])
def test_default_config_maas_ipmi_user(self): default_config = get_default_config() self.assertEqual("maas", default_config["maas_auto_ipmi_user"])
def test_defaults(self): expected = get_default_config() observed = {name: Config.objects.get_config(name) for name in expected} self.assertEqual(expected, observed)