summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2020-02-04 19:44:11 +1100
committerMartin Schwenke <martins@samba.org>2020-02-19 09:38:40 +0000
commitdc0150801caef3a8080329ad69d8e10fd66e27df (patch)
tree4b36b76b2313e38abd168563b6229830609642a6
parentebf67b6da7d5dc31bc1546cde4ef0dca14151aad (diff)
downloadsamba-dc0150801caef3a8080329ad69d8e10fd66e27df.tar.gz
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 <martin@meltin.net> Reviewed-by: Volker Lendecke <vl@samba.org>
-rwxr-xr-xselftest/target/Samba3.pm43
1 files changed, 43 insertions, 0 deletions
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 = <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;
}