From 956191d17f2f6eec0cfb3deff5deae1d9d332184 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 26 Jun 2023 18:36:37 +0200 Subject: Handel undef. --- manifests/machine/nspawn.pp | 254 +++++++++++++++++++++++--------------------- 1 file changed, 131 insertions(+), 123 deletions(-) diff --git a/manifests/machine/nspawn.pp b/manifests/machine/nspawn.pp index f00df40..c3393e5 100644 --- a/manifests/machine/nspawn.pp +++ b/manifests/machine/nspawn.pp @@ -10,143 +10,151 @@ define nspawn::machine::nspawn ( String $machine_name = $name, Enum['absent', 'present'] $ensure = 'present', ) { - $exec = $config['Exec'].map |$key, $value| { - if $value =~ Undef { - [] - } elsif $key in [ - 'Boot', 'Ephemeral', 'ProcessTwo', - 'NoNewPrivileges', 'NotifyReady', - ] { - $value_ = if $value { 'yes' } else { 'no' } - ["${key}=${value_}"] - } elsif $key in [ - 'User', 'WorkingDirectory', 'PivotRoot', 'AmbientCapability', - 'KillSignal', 'Personality', 'MachineID', 'Hostname', - 'ResolvConf', 'Timezone', 'LinkJournal', - ] { - ["${key}=${value}"] - } elsif $key == 'Parameters' { - $value_ = $value ? { - String => "${key}=${value}", - default => "${key}=" + ($value.map |$param| { - if ' ' in $param { - if '"' in $param { - "'${param}'" + $exec = $config['Exec'] ? { + Undef => [], + default => $config['Exec'].map |$key, $value| { + if $value =~ Undef { + [] + } elsif $key in [ + 'Boot', 'Ephemeral', 'ProcessTwo', + 'NoNewPrivileges', 'NotifyReady', + ] { + $value_ = if $value { 'yes' } else { 'no' } + ["${key}=${value_}"] + } elsif $key in [ + 'User', 'WorkingDirectory', 'PivotRoot', 'AmbientCapability', + 'KillSignal', 'Personality', 'MachineID', 'Hostname', + 'ResolvConf', 'Timezone', 'LinkJournal', + ] { + ["${key}=${value}"] + } elsif $key == 'Parameters' { + $value_ = $value ? { + String => "${key}=${value}", + default => "${key}=" + ($value.map |$param| { + if ' ' in $param { + if '"' in $param { + "'${param}'" + } else { + "\"${param}\"" + } } else { - "\"${param}\"" + $param } - } else { - $param - } - }.join(' ')) - } - ["${key}=${value_}"] - } elsif $key in ['Environment'] { - $value.map |$k, $v| { - "Environment=${k}=${v}" - } - } elsif $key in ['Capability', 'DropCapability'] { - $value_ = if $value == 'all' { - 'all' - } else { - $value.join(' ') - } - ["${key}=${value_}"] - } elsif $key in ['PrivateUsers'] { - $value_ = $value ? { - Boolean => if $value { 'yes' } else { 'no' }, - Tuple => $value.join(':'), - default => $value, - } - ["${key}=${value_}"] - } elsif $key in ['SystemCallFilter'] { - ["${key}=${$value.join(' ')}"] - } elsif $key =~ /^Limit.*/ { - $value_ = $value ? { - Tuple => $value.join(':'), - default => $value, + }.join(' ')) + } + ["${key}=${value_}"] + } elsif $key in ['Environment'] { + $value.map |$k, $v| { + "Environment=${k}=${v}" + } + } elsif $key in ['Capability', 'DropCapability'] { + $value_ = if $value == 'all' { + 'all' + } else { + $value.join(' ') + } + ["${key}=${value_}"] + } elsif $key in ['PrivateUsers'] { + $value_ = $value ? { + Boolean => if $value { 'yes' } else { 'no' }, + Tuple => $value.join(':'), + default => $value, + } + ["${key}=${value_}"] + } elsif $key in ['SystemCallFilter'] { + ["${key}=${$value.join(' ')}"] + } elsif $key =~ /^Limit.*/ { + $value_ = $value ? { + Tuple => $value.join(':'), + default => $value, + } + ["${key}=${value_}"] } - ["${key}=${value_}"] } } - $files = $config['Files'].map |$key, $value| { - if $value =~ Undef { - [] - } elsif $key in ['ReadOnly'] { - if $value { - ["${key}=yes"] - } else { - ["${key}=no"] - } - } elsif $key in ['PrivateUsersOwnership'] { - ["${key}=${value}"] - } elsif $key in ['BindUser', 'Inaccessible'] { - $value.map |$v| { - "${key}=${value}" - } - } elsif $key in ['Volatile'] { - $value_ = $value ? { - Boolean => if $value { 'yes' } else { 'no' }, - default => $value, - } - ["${key}=${value_}"] - } elsif $key in ['Bind', 'BindReadOnly'] { - $value_ = $value.map |$v| { - $value_ = $v ? { - Tuple[String, String] => $v.join(':'), - Tuple[String, String, Array] => "${v[0]}:${v[1]}:${v[2].join(':')}", - Struct => "${v['source']}:${v['dest']}" + if $v['options'] =~ Undef { - '' - } else { - $v['options'].join(':') - }, - default => $v, + $files = $config['Files'] ? { + Undef => [], + default => $config['Files'].map |$key, $value| { + if $value =~ Undef { + [] + } elsif $key in ['ReadOnly'] { + if $value { + ["${key}=yes"] + } else { + ["${key}=no"] + } + } elsif $key in ['PrivateUsersOwnership'] { + ["${key}=${value}"] + } elsif $key in ['BindUser', 'Inaccessible'] { + $value.map |$v| { + "${key}=${value}" + } + } elsif $key in ['Volatile'] { + $value_ = $value ? { + Boolean => if $value { 'yes' } else { 'no' }, + default => $value, } ["${key}=${value_}"] - } - } elsif $key in ['TemporaryFileSystem'] { - $value.map |$v| { - $value_ = $v ? { - Tuple => $v.join(':'), - default => $v, + } elsif $key in ['Bind', 'BindReadOnly'] { + $value_ = $value.map |$v| { + $value_ = $v ? { + Tuple[String, String] => $v.join(':'), + Tuple[String, String, Array] => "${v[0]}:${v[1]}:${v[2].join(':')}", + Struct => "${v['source']}:${v['dest']}" + if $v['options'] =~ Undef { + '' + } else { + $v['options'].join(':') + }, + default => $v, + } + ["${key}=${value_}"] + } + } elsif $key in ['TemporaryFileSystem'] { + $value.map |$v| { + $value_ = $v ? { + Tuple => $v.join(':'), + default => $v, + } + "${key}=${value_}" + } + } elsif $key in ['Overlay'] { + $value.map |$v| { + "${key}=${$v.join(':')}" } - "${key}=${value_}" - } - } elsif $key in ['Overlay'] { - $value.map |$v| { - "${key}=${$v.join(':')}" } } } - # TODO - $network = $config['Network'].map |$key, $value| { - if $key in [ - 'Private', 'VirtualEthernet', - ] { - if $value { - ["${key}=yes"] - } else { - ["${key}=no"] - } - } elsif $key in [ - 'Bridge', 'Zone', - ] { - ["${key}=${value}"] - } elsif $key in ['MACVLAN', 'IPVLAN', 'Interface'] { - "${key}=${value.join(' ')}" - } elsif $key in ['VirtualEthernetExtra'] { - $value.map |$v| { - $value_ = $v ? { - Tuple => $v.join(':'), - default => $v, + $network = $config['Network'] ? { + Undef => [], + default => $config['Network'].map |$key, $value| { + if $key in [ + 'Private', 'VirtualEthernet', + ] { + if $value { + ["${key}=yes"] + } else { + ["${key}=no"] + } + } elsif $key in [ + 'Bridge', 'Zone', + ] { + ["${key}=${value}"] + } elsif $key in ['MACVLAN', 'IPVLAN', 'Interface'] { + "${key}=${value.join(' ')}" + } elsif $key in ['VirtualEthernetExtra'] { + $value.map |$v| { + $value_ = $v ? { + Tuple => $v.join(':'), + default => $v, + } + "${key}=${value_}" + } + } elsif $key in ['Port'] { + $value.map |$v| { + "${key}=${v.join(':')}" } - "${key}=${value_}" - } - } elsif $key in ['Port'] { - $value.map |$v| { - "${key}=${v.join(':')}" } } } -- cgit v1.2.3