import ./make-test-python.nix ( { lib, ... }: { name = "flannel"; meta = with lib.maintainers; { maintainers = [ offline ]; }; nodes = let flannelConfig = { pkgs, ... }: { services.flannel = { enable = true; backend = { Type = "udp"; Port = 8285; }; network = "10.1.0.0/16"; iface = "eth1"; etcd.endpoints = [ "http://etcd:2379" ]; }; networking.firewall.allowedUDPPorts = [ 8285 ]; }; in { etcd = { ... }: { services = { etcd = { enable = true; listenClientUrls = [ "http://0.0.0.0:2379" ]; # requires ip-address for binding listenPeerUrls = [ "http://0.0.0.0:2380" ]; # requires ip-address for binding advertiseClientUrls = [ "http://etcd:2379" ]; initialAdvertisePeerUrls = [ "http://etcd:2379" ]; initialCluster = [ "etcd=http://etcd:2379" ]; }; }; networking.firewall.allowedTCPPorts = [ 2379 ]; }; node1 = flannelConfig; node2 = flannelConfig; }; testScript = '' start_all() node1.wait_for_unit("flannel.service") node2.wait_for_unit("flannel.service") node1.wait_until_succeeds("ip l show dev flannel0") ip1 = node1.succeed("ip -4 addr show flannel0 | grep -oP '(?<=inet).*(?=/)'") node2.wait_until_succeeds("ip l show dev flannel0") ip2 = node2.succeed("ip -4 addr show flannel0 | grep -oP '(?<=inet).*(?=/)'") node1.wait_until_succeeds(f"ping -c 1 {ip2}") node2.wait_until_succeeds(f"ping -c 1 {ip1}") ''; } )