From: Martin Schwenke Date: Tue, 4 Feb 2020 08:44:11 +0000 (+1100) Subject: selftest:clusteredmember: Build a unclist for every share X-Git-Tag: ldb-2.1.1~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc0150801caef3a8080329ad69d8e10fd66e27df;p=thirdparty%2Fsamba.git 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 --- 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; }