SQUASH samba3.pm
authorMichael Adam <obnox@samba.org>
Thu, 20 Oct 2011 08:42:05 +0000 (10:42 +0200)
committerMichael Adam <obnox@samba.org>
Thu, 20 Oct 2011 11:17:16 +0000 (13:17 +0200)
selftest/target/Samba3.pm

index 4be766663f3ead502c784cb55314b784c55bfcde..1a8c54a6cfd1c644304d18314498dc1e4386c644 100755 (executable)
@@ -12,14 +12,15 @@ use POSIX;
 use target::Samba;
 
 sub new($$) {
-       my ($classname, $bindir, $binary_mapping, $srcdir, $exeext, $server_maxtime) = @_;
+       my ($classname, $bindir, $binary_mapping, $srcdir, $exeext, $server_maxtime, $clustering) = @_;
        $exeext = "" unless defined($exeext);
        my $self = { vars => {},
                     bindir => $bindir,
                     binary_mapping => $binary_mapping,
                     srcdir => $srcdir,
                     exeext => $exeext,
-                    server_maxtime => $server_maxtime
+                    server_maxtime => $server_maxtime,
+                    clustering => $clustering,
        };
        bless $self;
        return $self;
@@ -140,16 +141,9 @@ sub setup_env($$$)
                                return undef;
                        }
                }
-               return $self->setup_member("$path/member", $self->{vars}->{s3dc});
-       } elsif ($envname eq "clusteredmember") {
-               if (not defined($self->{vars}->{s3dc})) {
-                       if (not defined($self->setup_s3dc("$path/s3dc"))) {
-                               return undef;
-                       }
-               }
-               return $self->setup_clusteredmember("$path/clusteredmember",
-                                                   $self->{vars}->{s3dc},
-                                                   "$path/ctdb");
+               return $self->setup_member("$path/member",
+                                          $self->{vars}->{s3dc},
+                                          "$path/ctdb");
        } else {
                return undef;
        }
@@ -193,70 +187,35 @@ sub setup_s3dc($$)
        return $vars;
 }
 
-sub setup_member($$$)
+sub setup_member($$$$)
 {
-       my ($self, $prefix, $s3dcvars) = @_;
-
-       print "PROVISIONING MEMBER...";
-
-       my $member_options = "
-       security = domain
-       server signing = on
-";
-       my $ret = $self->provision($prefix,
-                                  "LOCALMEMBER3",
-                                  3,
-                                  "localmember3pass",
-                                  $member_options);
+       my ($self, $prefix, $s3dcvars, $ctdbprefix) = @_;
 
-       $ret or return undef;
+       my $ctdb_vars = undef;
 
-       my $net = Samba::bindir_path($self, "net");
-       my $cmd = "";
-       $cmd .= "SOCKET_WRAPPER_DEFAULT_IFACE=\"$ret->{SOCKET_WRAPPER_DEFAULT_IFACE}\" ";
-       $cmd .= "$net join $ret->{CONFIGURATION} $s3dcvars->{DOMAIN} member";
-       $cmd .= " -U$s3dcvars->{USERNAME}\%$s3dcvars->{PASSWORD}";
+       if ($self->{clustering}) {
+               $ctdb_vars = $self->setup_ctdb($ctdbprefix);
 
-       if (system($cmd) != 0) {
-           warn("Join failed\n$cmd");
-           return undef;
+               $ctdb_vars or return undef;
        }
 
-       $self->check_or_start($ret, "yes", "yes", "yes");
-
-       if (not $self->wait_for_start($ret)) {
-              return undef;
-       }
-
-       $ret->{DC_SERVER} = $s3dcvars->{SERVER};
-       $ret->{DC_SERVER_IP} = $s3dcvars->{SERVER_IP};
-       $ret->{DC_NETBIOSNAME} = $s3dcvars->{NETBIOSNAME};
-       $ret->{DC_USERNAME} = $s3dcvars->{USERNAME};
-       $ret->{DC_PASSWORD} = $s3dcvars->{PASSWORD};
-
-       return $ret;
-}
-
-sub setup_clusteredmember($$$$)
-{
-       my ($self, $prefix, $s3dcvars, $ctdbprefix) = @_;
-       my $public_if = 8;
-
-       my $ctdb_vars = $self->setup_ctdb($ctdbprefix, $public_if);
-
-       $ctdb_vars or return undef;
-
-       print "PROVISIONING CLUSTEREDMEMBER...";
+       print "PROVISIONING MEMBER...";
 
        my $member_options = "
        security = domain
        server signing = on
+";
+
+       if ($self->{clustering}) {
+               $member_options .= "
        clustering = yes
        ctdbd socket = $ctdb_vars->{SOCKET_FILE}
 ";
+       }
+
        my $ret = $self->provision($prefix,
-                                  "LOCALMEMBER3CLUSTERED",
-                                  $public_if,
+                                  "LOCALMEMBER3",
+                                  3,
                                   "localmember3pass",
                                   $member_options);
 
@@ -285,11 +244,14 @@ sub setup_clusteredmember($$$$)
        $ret->{DC_USERNAME} = $s3dcvars->{USERNAME};
        $ret->{DC_PASSWORD} = $s3dcvars->{PASSWORD};
 
-       $ret->{CTDB_SOCKET_FILE} = $ctdb_vars->{SOCKET_FILE};
+       if ($self->{clustering}) {
+               $ret->{CTDB_SOCKET_FILE} = $ctdb_vars->{SOCKET_FILE};
+       }
 
        return $ret;
 }
 
+
 sub setup_admember($$$$)
 {
        my ($self, $prefix, $dcvars, $iface) = @_;
@@ -1234,7 +1196,7 @@ sub wait_for_start($$)
 
 sub setup_ctdb($$)
 {
-       my ($self, $prefix, $public_if) = @_;
+       my ($self, $prefix) = @_;
 
        print "PROVISIONING CTDB...";
 
@@ -1242,7 +1204,7 @@ sub setup_ctdb($$)
        # What is the mechanism here?
        my $private_if = 100;
 
-       my $vars = $self->provision_ctdb($prefix, $public_if, $private_if);
+       my $vars = $self->provision_ctdb($prefix, $private_if);
 
        $vars or return undef;
 
@@ -1279,7 +1241,7 @@ sub check_or_start_ctdb($$) {
                        "--reclock=$env_vars->{RECLOCK_FILE}",
                        "--nlist=$env_vars->{NODES_FILE}",
                        "--nopublicipcheck",
-                       "--public-addresses=$env_vars->{PUBLIC_ADDRESSES_FILE}",
+#                      "--public-addresses=$env_vars->{PUBLIC_ADDRESSES_FILE}",
                        "--event-script-dir=$env_vars->{EVENT_SCRIPT_DIR}",
                        "--logfile=$env_vars->{LOG_FILE}",
                        "-d $env_vars->{DEBUG_LEVEL}",
@@ -1296,12 +1258,12 @@ sub check_or_start_ctdb($$) {
 
 sub provision_ctdb($$$$$)
 {
-       my ($self, $prefix, $priviface, $pubiface, $no_delete_prefix) = @_;
+       my ($self, $prefix, $priviface, $no_delete_prefix) = @_;
 
        my %ret = ();
 
        my $internal_ip = "127.0.0.$priviface";
-       my $public_ip = "127.0.0.$pubiface";
+       #my $public_ip = "127.0.0.$pubiface";
 
        my @dirs = ();
 
@@ -1333,7 +1295,7 @@ sub provision_ctdb($$$$$)
        push @dirs, $ctdb_dir;
 
        my $nodes_file = "$ctdb_dir/nodes";
-       my $public_addresses_file = "$ctdb_dir/public_addresses";
+       #my $public_addresses_file = "$ctdb_dir/public_addresses";
 
        my $event_script_dir = "$ctdb_dir/events.d";
        push @dirs, $event_script_dir;
@@ -1361,20 +1323,21 @@ sub provision_ctdb($$$$$)
        print NODES "$internal_ip";
        close(NODES);
 
-       # - setup public-addresses
-       unless(open(PUBLIC_ADDR, ">$public_addresses_file")) {
-               warn("Unable to open public addresses file '$public_addresses_file'");
-               return undef;
-       }
-       print PUBLIC_ADDR "$public_addresses_file/128 lo";
-       close(PUBLIC_ADDR);
+       ## - setup public-addresses
+       #unless(open(PUBLIC_ADDR, ">$public_addresses_file")) {
+       #       warn("Unable to open public addresses file '$public_addresses_file'");
+       #       return undef;
+       #}
+       #print PUBLIC_ADDR "$public_addresses_file/128 lo";
+       #close(PUBLIC_ADDR);
 
 
        $ret{CTDBD_TEST_LOG} = "$prefix/ctdbd_test.log";
        $ret{CTDBD_TEST_LOG_POS} = 0;
 
        $ret{NODES_FILE} = $nodes_file;
-       $ret{PUBLIC_ADDRESSES_FILE} = $public_addresses_file;
+       #$ret{PUBLIC_ADDRESSES_FILE} = $public_addresses_file;
+       #$ret{PUBLIC_INTERFACE} = "lo";
        $ret{RECLOCK_FILE} = $reclock_file;
        $ret{SOCKET_FILE} = $socket_file;
        $ret{DB_DIR} = $db_dir;
@@ -1382,8 +1345,7 @@ sub provision_ctdb($$$$$)
        $ret{DB_DIR_STATE} = $db_dir_state;
        $ret{LOG_FILE} = $log_file;
        $ret{EVENT_SCRIPT_DIR} = $event_script_dir;
-       $ret{PUBLIC_INTERFACE} = "lo";
-       $ret{DEBUG_LEVEL} = 2;
+       $ret{DEBUG_LEVEL} = 3;
        $ret{PIDDIR} = $piddir;
 
        $ret{BINDIR} = "$self->{srcdir}/ctdb/bin";