From dc0150801caef3a8080329ad69d8e10fd66e27df Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Tue, 4 Feb 2020 19:44:11 +1100 Subject: [PATCH] selftest:clusteredmember: Build a unclist for every share This is fairly cheap and it is simple to do. This allows the Python code to be able to specify a unclist quite simply. The level of coupling doesn't seem worse than anything else in the selftest/autobuild code. There may be cleverer ways of doing this (e.g. a wrapper in testprogs/blackbox/clusteredmember_smbtorture or similar) but cleverer code isn't necessarily better code... and they'll probably involve code duplication. Signed-off-by: Martin Schwenke Reviewed-by: Volker Lendecke --- selftest/target/Samba3.pm | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm index 2a6786d90a6..5a23715b199 100755 --- a/selftest/target/Samba3.pm +++ b/selftest/target/Samba3.pm @@ -553,6 +553,48 @@ sub setup_clusteredmember } } + # + # Build a unclist for every share + # + unless (open(NODES, "<$ret->{CTDB_NODES_FILE}")) { + warn("Unable to open CTDB nodes file"); + teardown_env($self, $ret); + return undef; + } + my @nodes = ; + close(NODES); + chomp @nodes; + + my $conffile = $ret->{SERVERCONFFILE}; + $cmd = ""; + $cmd .= 'sed -n -e \'s|^\[\(.*\)\]$|\1|p\''; + $cmd .= " \"$conffile\""; + $cmd .= " | grep -vx 'global'"; + + my @shares = `$cmd`; + $rc = $?; + if ($rc != 0) { + warn("Listing shares failed\n$cmd"); + teardown_env($self, $ret); + return undef; + } + chomp @shares; + + my $unclistdir = "${prefix_abs}/unclists"; + mkdir($unclistdir, 0777); + foreach my $share (@shares) { + my $l = "${unclistdir}/${share}.txt"; + unless (open(UNCLIST, ">${l}")) { + warn("Unable to open UNC list ${l}"); + teardown_env($self, $ret); + return undef; + } + foreach my $node (@nodes) { + print UNCLIST "//${node}/${share}\n"; + } + close(UNCLIST); + } + $ret->{DOMSID} = $nt4_dc_vars->{DOMSID}; $ret->{DC_SERVER} = $nt4_dc_vars->{SERVER}; $ret->{DC_SERVER_IP} = $nt4_dc_vars->{SERVER_IP}; @@ -3091,6 +3133,7 @@ sub provision_ctdb($$$$) $ret{CTDB_PREFIX} = "$prefix"; $ret{NUM_NODES} = $num_nodes; $ret{CTDB_NODES} = \@nodes; + $ret{CTDB_NODES_FILE} = $nodes_file; return \%ret; } -- 2.47.2