Example #1
0
 def test_defaults(self):
     expected = get_default_config()
     observed = {
         name: Config.objects.get_config(name)
         for name in expected
         }
     self.assertEqual(expected, observed)
Example #2
0
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))
Example #3
0
 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})
Example #4
0
 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))
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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
Example #8
0
 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
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
 def test_default_config_maas_name(self):
     default_config = get_default_config()
     self.assertEqual(gethostname(), default_config['maas_name'])
Example #13
0
 def test_default_config_maas_name(self):
     default_config = get_default_config()
     self.assertEqual(gethostname(), default_config['maas_name'])
Example #14
0
 def test_default_config_maas_ipmi_user(self):
     default_config = get_default_config()
     self.assertEqual("maas", default_config["maas_auto_ipmi_user"])
Example #15
0
 def test_defaults(self):
     expected = get_default_config()
     observed = {name: Config.objects.get_config(name) for name in expected}
     self.assertEqual(expected, observed)