Fix hiera/fqdn support for Puppet
This commit is contained in:
parent
20cc48e1ce
commit
ceca3df83c
2 changed files with 27 additions and 7 deletions
|
|
@ -158,6 +158,7 @@ _RESERVED_PUPPET_NAMES = {
|
||||||
"if",
|
"if",
|
||||||
"import",
|
"import",
|
||||||
"in",
|
"in",
|
||||||
|
"init",
|
||||||
"inherits",
|
"inherits",
|
||||||
"node",
|
"node",
|
||||||
"or",
|
"or",
|
||||||
|
|
@ -522,9 +523,14 @@ def _render_role_class(prole: PuppetRole) -> str:
|
||||||
return "\n".join(lines)
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
def _attrs_with_ensure(attrs: Dict[str, Any], ensure: str) -> Dict[str, Any]:
|
def _attrs_with_ensure(
|
||||||
|
attrs: Dict[str, Any], ensure: str, *, allowed: Set[str]
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
"""Return only Puppet resource attributes, dropping Enroll metadata."""
|
||||||
out = {"ensure": ensure}
|
out = {"ensure": ensure}
|
||||||
out.update(attrs)
|
for key in sorted(allowed):
|
||||||
|
if key in attrs and attrs[key] is not None:
|
||||||
|
out[key] = attrs[key]
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -565,19 +571,31 @@ def _role_hiera_values(prole: PuppetRole) -> Dict[str, Any]:
|
||||||
|
|
||||||
if prole.dirs:
|
if prole.dirs:
|
||||||
data[f"{prefix}dirs"] = {
|
data[f"{prefix}dirs"] = {
|
||||||
path: _attrs_with_ensure(prole.dirs[path], "directory")
|
path: _attrs_with_ensure(
|
||||||
|
prole.dirs[path],
|
||||||
|
"directory",
|
||||||
|
allowed={"owner", "group", "mode"},
|
||||||
|
)
|
||||||
for path in sorted(prole.dirs)
|
for path in sorted(prole.dirs)
|
||||||
}
|
}
|
||||||
|
|
||||||
if prole.files:
|
if prole.files:
|
||||||
data[f"{prefix}files"] = {
|
data[f"{prefix}files"] = {
|
||||||
path: _attrs_with_ensure(prole.files[path], "file")
|
path: _attrs_with_ensure(
|
||||||
|
prole.files[path],
|
||||||
|
"file",
|
||||||
|
allowed={"source", "owner", "group", "mode"},
|
||||||
|
)
|
||||||
for path in sorted(prole.files)
|
for path in sorted(prole.files)
|
||||||
}
|
}
|
||||||
|
|
||||||
if prole.links:
|
if prole.links:
|
||||||
data[f"{prefix}links"] = {
|
data[f"{prefix}links"] = {
|
||||||
path: _attrs_with_ensure(prole.links[path], "link")
|
path: _attrs_with_ensure(
|
||||||
|
prole.links[path],
|
||||||
|
"link",
|
||||||
|
allowed={"target"},
|
||||||
|
)
|
||||||
for path in sorted(prole.links)
|
for path in sorted(prole.links)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -661,7 +679,7 @@ def _render_hiera_role_class(prole: PuppetRole) -> str:
|
||||||
" }",
|
" }",
|
||||||
" }",
|
" }",
|
||||||
"",
|
"",
|
||||||
" if $sysctl_apply and $files.has_key('/etc/sysctl.d/99-enroll.conf') {",
|
" if $sysctl_apply and '/etc/sysctl.d/99-enroll.conf' in $files {",
|
||||||
" exec { 'enroll-apply-sysctl':",
|
" exec { 'enroll-apply-sysctl':",
|
||||||
" command => $sysctl_ignore_apply_errors ? {",
|
" command => $sysctl_ignore_apply_errors ? {",
|
||||||
" true => \"/bin/sh -c 'sysctl -e -p /etc/sysctl.d/99-enroll.conf || true'\",",
|
" true => \"/bin/sh -c 'sysctl -e -p /etc/sysctl.d/99-enroll.conf || true'\",",
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,9 @@ def test_manifest_puppet_writes_control_repo_style_output(tmp_path: Path):
|
||||||
assert "Boolean $sysctl_apply = true" in sysctl_pp
|
assert "Boolean $sysctl_apply = true" in sysctl_pp
|
||||||
assert "Boolean $sysctl_ignore_apply_errors = true" in sysctl_pp
|
assert "Boolean $sysctl_ignore_apply_errors = true" in sysctl_pp
|
||||||
assert "exec { 'enroll-apply-sysctl':" in sysctl_pp
|
assert "exec { 'enroll-apply-sysctl':" in sysctl_pp
|
||||||
assert "$files.has_key('/etc/sysctl.d/99-enroll.conf')" in sysctl_pp
|
assert (
|
||||||
|
"if $sysctl_apply and '/etc/sysctl.d/99-enroll.conf' in $files {" in sysctl_pp
|
||||||
|
)
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
out
|
out
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue