at 25.11-pre 1.9 kB view raw
1import ./make-test-python.nix ( 2 { pkgs, lib, ... }: 3 4 let 5 client = 6 { pkgs, ... }: 7 { 8 environment.systemPackages = [ pkgs.glusterfs ]; 9 virtualisation.fileSystems = { 10 "/gluster" = { 11 device = "server1:/gv0"; 12 fsType = "glusterfs"; 13 }; 14 }; 15 }; 16 17 server = 18 { pkgs, ... }: 19 { 20 networking.firewall.enable = false; 21 services.glusterfs.enable = true; 22 23 # create a mount point for the volume 24 boot.initrd.postDeviceCommands = '' 25 ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb 26 ''; 27 28 virtualisation.emptyDiskImages = [ 1024 ]; 29 30 virtualisation.fileSystems = { 31 "/data" = { 32 device = "/dev/disk/by-label/data"; 33 fsType = "ext4"; 34 }; 35 }; 36 }; 37 in 38 { 39 name = "glusterfs"; 40 41 nodes = { 42 server1 = server; 43 server2 = server; 44 client1 = client; 45 client2 = client; 46 }; 47 48 testScript = '' 49 server1.wait_for_unit("glusterd.service") 50 server2.wait_for_unit("glusterd.service") 51 52 server1.wait_until_succeeds("gluster peer status") 53 server2.wait_until_succeeds("gluster peer status") 54 55 # establish initial contact 56 server1.succeed("gluster peer probe server2") 57 server1.succeed("gluster peer probe server1") 58 59 server1.succeed("gluster peer status | grep Connected") 60 61 # create volumes 62 server1.succeed("mkdir -p /data/vg0") 63 server2.succeed("mkdir -p /data/vg0") 64 server1.succeed("gluster volume create gv0 server1:/data/vg0 server2:/data/vg0") 65 server1.succeed("gluster volume start gv0") 66 67 # test clients 68 client1.wait_for_unit("gluster.mount") 69 client2.wait_for_unit("gluster.mount") 70 71 client1.succeed("echo test > /gluster/file1") 72 client2.succeed("grep test /gluster/file1") 73 ''; 74 } 75)