openvswitch: remove kernel, add tests (#344653)

This commit is contained in:
Adam C. Stephens 2024-09-27 07:03:12 -04:00 committed by GitHub
commit f451c38542
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 86 additions and 22 deletions

View File

@ -741,6 +741,7 @@ in {
image-contents = handleTest ./image-contents.nix {};
openvscode-server = handleTest ./openvscode-server.nix {};
open-webui = runTest ./open-webui.nix;
openvswitch = runTest ./openvswitch.nix;
orangefs = handleTest ./orangefs.nix {};
os-prober = handleTestOn ["x86_64-linux"] ./os-prober.nix {};
osquery = handleTestOn ["x86_64-linux"] ./osquery.nix {};

View File

@ -0,0 +1,62 @@
{
name = "openvswitch";
nodes = {
node1 = {
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = true;
useDHCP = false;
firewall.enable = false;
vswitches.vs0 = {
interfaces = {
eth1 = { };
};
};
};
systemd.network.networks."40-vs0" = {
name = "vs0";
networkConfig.Address = "10.0.0.1/24";
};
};
node2 = {
virtualisation.vlans = [ 1 ];
networking = {
useNetworkd = true;
useDHCP = false;
firewall.enable = false;
vswitches.vs0 = {
interfaces = {
eth1 = { };
};
};
};
systemd.network.networks."40-vs0" = {
name = "vs0";
networkConfig.Address = "10.0.0.2/24";
};
};
};
testScript = # python
''
start_all()
node1.wait_for_unit("ovsdb.service")
node1.wait_for_unit("ovs-vswitchd.service")
node2.wait_for_unit("ovsdb.service")
node2.wait_for_unit("ovs-vswitchd.service")
node1.succeed("ping -c3 10.0.0.2")
node2.succeed("ping -c3 10.0.0.1")
'';
}

View File

@ -1,40 +1,37 @@
{
withDPDK ? false,
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
dpdk,
fetchFromGitHub,
installShellFiles,
iproute2,
kernel ? null,
libcap_ng,
libpcap,
libtool,
makeWrapper,
nix-update-script,
nixosTests,
numactl,
openssl,
perl,
pkg-config,
procps,
python3,
tcpdump,
sphinxHook,
tcpdump,
util-linux,
which,
makeWrapper,
withDPDK ? false,
dpdk,
numactl,
libpcap,
}:
let
_kernel = kernel;
in
stdenv.mkDerivation rec {
pname = if withDPDK then "openvswitch-dpdk" else "openvswitch";
version = "3.4.0";
kernel = lib.optional (_kernel != null) _kernel.dev;
src = fetchFromGitHub {
owner = "openvswitch";
repo = "ovs";
@ -84,14 +81,11 @@ stdenv.mkDerivation rec {
preConfigure = "./boot.sh";
configureFlags =
[
"--localstatedir=/var"
"--sharedstatedir=/var"
"--sbindir=$(out)/bin"
]
++ (lib.optionals (_kernel != null) [ "--with-linux" ])
++ (lib.optionals withDPDK [ "--with-dpdk=shared" ]);
configureFlags = [
"--localstatedir=/var"
"--sharedstatedir=/var"
"--sbindir=$(out)/bin"
] ++ (lib.optionals withDPDK [ "--with-dpdk=shared" ]);
# Leave /var out of this!
installFlags = [
@ -131,7 +125,14 @@ stdenv.mkDerivation rec {
setuptools
]);
passthru.updateScript = nix-update-script { };
passthru = {
tests = {
default = nixosTests.openvswitch;
incus = nixosTests.incus-lts.openvswitch;
};
updateScript = nix-update-script { };
};
meta = with lib; {
changelog = "https://www.openvswitch.org/releases/NEWS-${version}.txt";