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;
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;
}
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);
$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) = @_;
sub setup_ctdb($$)
{
- my ($self, $prefix, $public_if) = @_;
+ my ($self, $prefix) = @_;
print "PROVISIONING 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;
"--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}",
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 = ();
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;
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;
$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";