def render_enlistment_preseed(request, prefix, osystem="", release="", rack_controller=None): """Return the enlistment preseed. :param prefix: See `get_preseed_filenames`. :param osystem: See `get_preseed_filenames`. :param release: See `get_preseed_filenames`. :param rack_controller: The rack controller used to generate the preseed. :return: The rendered preseed string. :rtype: unicode. """ template = load_preseed_template(None, prefix, osystem, release) context = get_preseed_context(request, osystem, release, rack_controller=rack_controller) context["preseed_data"] = compose_enlistment_preseed( request, rack_controller, context) # Render the snippets in the main template. snippets = get_snippet_context() snippets.update(context) return template.substitute(**snippets).encode("utf-8")
def test_compose_enlistment_preseed_disables_suites(self): default = PackageRepository.get_main_archive() default.disabled_pockets = ["security", "updates", "backports"] default.save() rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() preseed = yaml.safe_load( compose_enlistment_preseed( request, rack_controller, { "metadata_enlist_url": url, "syslog_host_port": url }, )) self.assertItemsEqual( set([ "#", "deb", "deb-src", "$PRIMARY", "$RELEASE", "multiverse", "restricted", "universe", "main", ]), set(preseed["apt"]["sources_list"].split()), )
def test_compose_enlistment_preseed_has_header(self): rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() preseed = compose_enlistment_preseed(request, rack_controller, { 'metadata_enlist_url': url, 'syslog_host_port': url, }) self.assertThat(preseed, StartsWith("#cloud-config\n"))
def test_compose_enlistment_preseed_disables_components(self): default = PackageRepository.get_main_archive() default.disabled_components = ['restricted', 'multiverse'] default.save() rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() preseed = yaml.safe_load( compose_enlistment_preseed(request, rack_controller, { 'metadata_enlist_url': url, 'syslog_host_port': url, })) self.assertNotIn('restricted', preseed['apt']['sources_list']) self.assertNotIn('multiverse', preseed['apt']['sources_list'])
def test_compose_enlistment_preseed_disables_components(self): default = PackageRepository.get_main_archive() default.disabled_components = ["restricted", "multiverse"] default.save() rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() preseed = yaml.safe_load( compose_enlistment_preseed( request, rack_controller, {"metadata_enlist_url": url, "syslog_host_port": url}, ) ) self.assertNotIn("restricted", preseed["apt"]["sources_list"]) self.assertNotIn("multiverse", preseed["apt"]["sources_list"])
def test_compose_enlistment_preseed_disables_suites(self): default = PackageRepository.get_main_archive() default.disabled_pockets = ['security', 'updates', 'backports'] default.save() rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() preseed = yaml.safe_load( compose_enlistment_preseed(request, rack_controller, { 'metadata_enlist_url': url, 'syslog_host_port': url, })) self.assertItemsEqual( set([ '#', 'deb', 'deb-src', '$PRIMARY', '$RELEASE', 'multiverse', 'restricted', 'universe', 'main' ]), set(preseed['apt']['sources_list'].split()))
def test_compose_enlistment_preseed(self): rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() apt_proxy = get_apt_proxy(request, rack_controller) preseed = yaml.safe_load( compose_enlistment_preseed( request, rack_controller, { "metadata_enlist_url": url, "syslog_host_port": url }, )) self.assertDictEqual({"MAAS": { "metadata_url": url }}, preseed["datasource"]) self.assertTrue(preseed["manage_etc_hosts"]) self.assertDictEqual({"remotes": {"maas": url}}, preseed["rsyslog"]) self.assertDictEqual( { "delay": "now", "mode": "poweroff", "timeout": 1800, "condition": "test ! -e /tmp/block-poweroff", }, preseed["power_state"], ) self.assertItemsEqual( [ "python3-yaml", "python3-oauthlib", "freeipmi-tools", "ipmitool", "sshpass", "archdetect-deb", "jq", ], preseed["packages"], ) default = PackageRepository.get_main_archive().url ports = PackageRepository.get_ports_archive().url self.assertThat( preseed, ContainsDict({ "apt": ContainsDict({ "preserve_sources_list": Equals(False), "primary": MatchesListwise([ MatchesDict({ "arches": Equals(["amd64", "i386"]), "uri": Equals(default), }), MatchesDict({ "arches": Equals(["default"]), "uri": Equals(ports), }), ]), "proxy": Equals(apt_proxy), "security": MatchesListwise([ MatchesDict({ "arches": Equals(["amd64", "i386"]), "uri": Equals(default), }), MatchesDict({ "arches": Equals(["default"]), "uri": Equals(ports), }), ]), }) }), )
def test_compose_enlistment_preseed(self): rack_controller = factory.make_RackController() url = factory.make_simple_http_url() request = make_HttpRequest() apt_proxy = get_apt_proxy(request, rack_controller) preseed = yaml.safe_load( compose_enlistment_preseed(request, rack_controller, { 'metadata_enlist_url': url, 'syslog_host_port': url, })) self.assertDictEqual({'MAAS': { 'metadata_url': url }}, preseed['datasource']) self.assertTrue(preseed['manage_etc_hosts']) self.assertDictEqual({'remotes': {'maas': url}}, preseed['rsyslog']) self.assertDictEqual( { 'delay': 'now', 'mode': 'poweroff', 'timeout': 1800, 'condition': 'test ! -e /tmp/block-poweroff', }, preseed['power_state']) self.assertItemsEqual([ 'python3-yaml', 'python3-oauthlib', 'freeipmi-tools', 'ipmitool', 'sshpass', 'archdetect-deb', 'jq' ], preseed['packages']) default = PackageRepository.get_main_archive().url ports = PackageRepository.get_ports_archive().url self.assertThat( preseed, ContainsDict({ 'apt': ContainsDict({ 'preserve_sources_list': Equals(False), 'primary': MatchesListwise([ MatchesDict({ "arches": Equals(["amd64", "i386"]), "uri": Equals(default), }), MatchesDict({ "arches": Equals(["default"]), "uri": Equals(ports), }), ]), 'proxy': Equals(apt_proxy), 'security': MatchesListwise([ MatchesDict({ "arches": Equals(["amd64", "i386"]), "uri": Equals(default), }), MatchesDict({ "arches": Equals(["default"]), "uri": Equals(ports), }), ]), }) }))