Merge pull request #237336 from zi3m5f/fix-systemd-nspawn-machineid-option
systemd-nspawn: fix spelling of MachineID option and add module test
This commit is contained in:
commit
5709754a1d
|
@ -17859,6 +17859,12 @@
|
|||
githubId = 2189609;
|
||||
name = "Zhaofeng Li";
|
||||
};
|
||||
zi3m5f = {
|
||||
name = "zi3m5f";
|
||||
email = "k7n3o3a6f@mozmail.com";
|
||||
github = "zi3m5f";
|
||||
githubId = 113244000;
|
||||
};
|
||||
ziguana = {
|
||||
name = "Zig Uana";
|
||||
email = "git@ziguana.dev";
|
||||
|
|
|
@ -11,7 +11,7 @@ let
|
|||
(assertOnlyFields [
|
||||
"Boot" "ProcessTwo" "Parameters" "Environment" "User" "WorkingDirectory"
|
||||
"PivotRoot" "Capability" "DropCapability" "NoNewPrivileges" "KillSignal"
|
||||
"Personality" "MachineId" "PrivateUsers" "NotifyReady" "SystemCallFilter"
|
||||
"Personality" "MachineID" "PrivateUsers" "NotifyReady" "SystemCallFilter"
|
||||
"LimitCPU" "LimitFSIZE" "LimitDATA" "LimitSTACK" "LimitCORE" "LimitRSS"
|
||||
"LimitNOFILE" "LimitAS" "LimitNPROC" "LimitMEMLOCK" "LimitLOCKS"
|
||||
"LimitSIGPENDING" "LimitMSGQUEUE" "LimitNICE" "LimitRTPRIO" "LimitRTTIME"
|
||||
|
|
|
@ -744,6 +744,7 @@ in {
|
|||
systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
|
||||
systemd-no-tainted = handleTest ./systemd-no-tainted.nix {};
|
||||
systemd-nspawn = handleTest ./systemd-nspawn.nix {};
|
||||
systemd-nspawn-configfile = handleTest ./systemd-nspawn-configfile.nix {};
|
||||
systemd-oomd = handleTest ./systemd-oomd.nix {};
|
||||
systemd-portabled = handleTest ./systemd-portabled.nix {};
|
||||
systemd-repart = handleTest ./systemd-repart.nix {};
|
||||
|
|
128
nixos/tests/systemd-nspawn-configfile.nix
Normal file
128
nixos/tests/systemd-nspawn-configfile.nix
Normal file
|
@ -0,0 +1,128 @@
|
|||
import ./make-test-python.nix ({ lib, ... }:
|
||||
let
|
||||
execOptions = [
|
||||
"Boot"
|
||||
"ProcessTwo"
|
||||
"Parameters"
|
||||
"Environment"
|
||||
"User"
|
||||
"WorkingDirectory"
|
||||
"PivotRoot"
|
||||
"Capability"
|
||||
"DropCapability"
|
||||
"NoNewPrivileges"
|
||||
"KillSignal"
|
||||
"Personality"
|
||||
"MachineID"
|
||||
"PrivateUsers"
|
||||
"NotifyReady"
|
||||
"SystemCallFilter"
|
||||
"LimitCPU"
|
||||
"LimitFSIZE"
|
||||
"LimitDATA"
|
||||
"LimitSTACK"
|
||||
"LimitCORE"
|
||||
"LimitRSS"
|
||||
"LimitNOFILE"
|
||||
"LimitAS"
|
||||
"LimitNPROC"
|
||||
"LimitMEMLOCK"
|
||||
"LimitLOCKS"
|
||||
"LimitSIGPENDING"
|
||||
"LimitMSGQUEUE"
|
||||
"LimitNICE"
|
||||
"LimitRTPRIO"
|
||||
"LimitRTTIME"
|
||||
"OOMScoreAdjust"
|
||||
"CPUAffinity"
|
||||
"Hostname"
|
||||
"ResolvConf"
|
||||
"Timezone"
|
||||
"LinkJournal"
|
||||
"Ephemeral"
|
||||
"AmbientCapability"
|
||||
];
|
||||
|
||||
filesOptions = [
|
||||
"ReadOnly"
|
||||
"Volatile"
|
||||
"Bind"
|
||||
"BindReadOnly"
|
||||
"TemporaryFileSystem"
|
||||
"Overlay"
|
||||
"OverlayReadOnly"
|
||||
"PrivateUsersChown"
|
||||
"BindUser"
|
||||
"Inaccessible"
|
||||
"PrivateUsersOwnership"
|
||||
];
|
||||
|
||||
networkOptions = [
|
||||
"Private"
|
||||
"VirtualEthernet"
|
||||
"VirtualEthernetExtra"
|
||||
"Interface"
|
||||
"MACVLAN"
|
||||
"IPVLAN"
|
||||
"Bridge"
|
||||
"Zone"
|
||||
"Port"
|
||||
];
|
||||
|
||||
optionsToConfig = opts: builtins.listToAttrs (map (n: lib.nameValuePair n "testdata") opts);
|
||||
|
||||
grepForOptions = opts: ''node.succeed(
|
||||
"for o in ${builtins.concatStringsSep " " opts} ; do grep --quiet $o ${configFile} || exit 1 ; done"
|
||||
)'';
|
||||
|
||||
unitName = "options-test";
|
||||
configFile = "/etc/systemd/nspawn/${unitName}.nspawn";
|
||||
|
||||
in
|
||||
{
|
||||
name = "systemd-nspawn-configfile";
|
||||
|
||||
nodes = {
|
||||
node = { pkgs, ... }: {
|
||||
systemd.nspawn."${unitName}" = {
|
||||
enable = true;
|
||||
|
||||
execConfig = optionsToConfig execOptions // {
|
||||
Boot = true;
|
||||
ProcessTwo = true;
|
||||
NotifyReady = true;
|
||||
};
|
||||
|
||||
filesConfig = optionsToConfig filesOptions // {
|
||||
ReadOnly = true;
|
||||
Volatile = "state";
|
||||
PrivateUsersChown = true;
|
||||
PrivateUsersOwnership = "auto";
|
||||
};
|
||||
|
||||
networkConfig = optionsToConfig networkOptions // {
|
||||
Private = true;
|
||||
VirtualEthernet = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
node.wait_for_file("${configFile}")
|
||||
|
||||
with subtest("Test for presence of all specified options in config file"):
|
||||
${grepForOptions execOptions}
|
||||
${grepForOptions filesOptions}
|
||||
${grepForOptions networkOptions}
|
||||
|
||||
with subtest("Test for absence of misspelled option 'MachineId' (instead of 'MachineID')"):
|
||||
node.fail("grep --quiet MachineId ${configFile}")
|
||||
'';
|
||||
|
||||
meta.maintainers = [
|
||||
lib.maintainers.zi3m5f
|
||||
];
|
||||
})
|
Loading…
Reference in a new issue