nixos/incus: add openvswitch support
1. Added openvswitch integration to incus service. 2. Added tests to test openvswitch functionality with incus.
This commit is contained in:
parent
80226b1d65
commit
701fcd7982
3 changed files with 75 additions and 4 deletions
|
@ -164,19 +164,24 @@ in
|
|||
"network-online.target"
|
||||
"lxcfs.service"
|
||||
"incus.socket"
|
||||
];
|
||||
]
|
||||
++ lib.optional config.virtualisation.vswitch.enable "ovs-vswitchd.service";
|
||||
|
||||
requires = [
|
||||
"lxcfs.service"
|
||||
"incus.socket"
|
||||
];
|
||||
]
|
||||
++ lib.optional config.virtualisation.vswitch.enable "ovs-vswitchd.service";
|
||||
|
||||
wants = [
|
||||
"network-online.target"
|
||||
];
|
||||
|
||||
path = lib.mkIf config.boot.zfs.enabled [
|
||||
path = lib.optional config.boot.zfs.enabled [
|
||||
config.boot.zfs.package
|
||||
"${config.boot.zfs.package}/lib/udev"
|
||||
];
|
||||
]
|
||||
++ lib.optional config.virtualisation.vswitch.enable config.virtualisation.vswitch.package;
|
||||
|
||||
environment = lib.mkMerge [ {
|
||||
# Override Path to the LXC template configuration directory
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
boot.initrd.systemd.enable = true;
|
||||
}; };
|
||||
lxd-to-incus = import ./lxd-to-incus.nix { inherit system pkgs; };
|
||||
openvswitch = import ./openvswitch.nix { inherit system pkgs; };
|
||||
preseed = import ./preseed.nix { inherit system pkgs; };
|
||||
socket-activated = import ./socket-activated.nix { inherit system pkgs; };
|
||||
ui = import ./ui.nix {inherit system pkgs;};
|
||||
|
|
65
nixos/tests/incus/openvswitch.nix
Normal file
65
nixos/tests/incus/openvswitch.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
import ../make-test-python.nix ({ pkgs, lib, ... } :
|
||||
|
||||
{
|
||||
name = "incus-openvswitch";
|
||||
|
||||
meta = {
|
||||
maintainers = lib.teams.lxc.members;
|
||||
};
|
||||
|
||||
nodes.machine = { lib, ... }: {
|
||||
virtualisation = {
|
||||
incus.enable = true;
|
||||
vswitch.enable = true;
|
||||
incus.preseed = {
|
||||
networks = [
|
||||
{
|
||||
name = "nixostestbr0";
|
||||
type = "bridge";
|
||||
config = {
|
||||
"bridge.driver" = "openvswitch";
|
||||
"ipv4.address" = "10.0.100.1/24";
|
||||
"ipv4.nat" = "true";
|
||||
};
|
||||
}
|
||||
];
|
||||
profiles = [
|
||||
{
|
||||
name = "nixostest_default";
|
||||
devices = {
|
||||
eth0 = {
|
||||
name = "eth0";
|
||||
network = "nixostestbr0";
|
||||
type = "nic";
|
||||
};
|
||||
root = {
|
||||
path = "/";
|
||||
pool = "default";
|
||||
size = "35GiB";
|
||||
type = "disk";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
storage_pools = [
|
||||
{
|
||||
name = "nixostest_pool";
|
||||
driver = "dir";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
networking.nftables.enable = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("incus.service")
|
||||
machine.wait_for_unit("incus-preseed.service")
|
||||
|
||||
with subtest("Verify openvswitch bridge"):
|
||||
machine.succeed("incus network info nixostestbr0")
|
||||
|
||||
with subtest("Verify openvswitch bridge"):
|
||||
machine.succeed("ovs-vsctl br-exists nixostestbr0")
|
||||
'';
|
||||
})
|
Loading…
Reference in a new issue