Skip to content

Commit

Permalink
feat: Add support for translanting %pre and main body part of kickstart
Browse files Browse the repository at this point in the history
  • Loading branch information
skycastlelily committed Jul 2, 2024
1 parent f1e7590 commit e1e3d0a
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 7 deletions.
30 changes: 24 additions & 6 deletions src/mrack/transformers/beaker.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,17 +86,35 @@ def _get_ks_meta(self, host):

def _construct_ks_append_script(self, ks_append, pubkeys=None):
"""Create ks_appdend from requirements."""
res_ks_list = []
if not ks_append and not pubkeys:
return []

res_ks_append = ["%post"]
if pubkeys:
ks_append += self._allow_ssh_keys(pubkeys)
if isinstance(ks_append, dict):
res_ks_pre = ks_append.get("pre-install")
res_ks = ks_append.get("script")
res_ks_post = ks_append.get("post-install")
if res_ks_pre:
if res_ks_pre.startswith("%pre"):
res_ks_list += [res_ks_pre]
else:
res_ks_list += ["%pre"] + [res_ks_pre] + ["%end"]
if res_ks:
res_ks_list += [res_ks]
if res_ks_post:
if res_ks_post.startswith("%post"):
res_ks_list += [res_ks_post]
else:
res_ks_list += ["%post"] + [res_ks_post] + ["%end"]
else:
res_ks_list = ["%post"]
res_ks_list += ks_append
res_ks_list.append("%end")

res_ks_append += ks_append
if pubkeys:
res_ks_list += ["%post"] + self._allow_ssh_keys(pubkeys) + ["%end"]

res_ks_append.append("%end")
return ["\n".join(res_ks_append)]
return ["\n".join(res_ks_list)]

def _allow_ssh_keys(self, pubkeys):
"""Create ssh key content to be injected to xml."""
Expand Down
22 changes: 21 additions & 1 deletion tests/unit/test_beaker_transformer.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,20 @@ class TestBeakerTransformer:
default_tasks = [{"name": "/distribution/dummy", "role": "STANDALONE"}]
default_retention_tag = "audit"
default_product = "[internal]"
maximal_ksappend = """
%pre\npre_dummy\n%end\nscript_dummy\n%post\npost_dummy\n%end
%post
mkdir -p /root/.ssh
cat >>/root/.ssh/authorized_keys << "__EOF__"
# keys added by mrack:
key_one
key_two
# end section of keys added by mrack
__EOF__
restorecon -R /root/.ssh
chmod go-w /root /root/.ssh /root/.ssh/authorized_keys
%end
"""

fedora = {
"name": f"fedora.{domain_name}",
Expand All @@ -28,6 +42,12 @@ class TestBeakerTransformer:
"restraint_id": 1,
"beaker": {
"ks_meta": "FEDORA_HOST_KS_META",
"ks_append": {
"pre-install": "%pre\npre_dummy\n%end",
"script": "script_dummy",
"post-install": "%post\npost_dummy\n%end",
},
"pubkeys": ["key_one", "key_two"],
"tasks": [
{
"name": "/distribution/check-install",
Expand Down Expand Up @@ -156,7 +176,7 @@ async def create_transformer(self, legacy=False):
"distro": "Fedora-36%",
"variant": "Server",
"ks_meta": "FEDORA_HOST_KS_META",
"ks_append": default_ks_append,
"ks_append": maximal_ksappend,
"whiteboard": default_whiteboard,
"priority": default_prio,
"tasks": [
Expand Down

0 comments on commit e1e3d0a

Please sign in to comment.