Delete slave zones in automatic view

This commit is contained in:
Jamie Cameron
2008-08-10 02:44:24 +00:00
parent a323448f78
commit 865bb55ee6
4 changed files with 17 additions and 9 deletions

View File

@@ -2223,12 +2223,12 @@ foreach $slave (@slaves) {
return @slaveerrs;
}
# delete_on_slaves(domain, [&slave-hostnames])
# delete_on_slaves(domain, [&slave-hostnames], [local-view])
# Delete some domain or all or listed slave servers
sub delete_on_slaves
{
local $dom = $_[0];
local %on = map { $_, 1 } @{$_[1]};
local ($dom, $slavehosts, $localview) = @_;
local %on = map { $_, 1 } @$slavehosts;
&remote_error_setup(\&slave_error_handler);
local $slave;
local @slaveerrs;
@@ -2248,8 +2248,7 @@ foreach $slave (&list_slave_servers()) {
if ($slave->{'bind8_view'} eq "*") {
# Same as on master .. but for now, don't pass in any view
# so that it will be found automatically
# XXX
$view = undef;
$view = $localview;
}
elsif ($slave->{'bind8_view'}) {
# Named view

View File

@@ -8,6 +8,10 @@ $conf = &get_config();
if ($in{'view'} ne '') {
$view = $conf->[$in{'view'}];
$conf = $view->{'members'};
$viewname = $view->{'values'}->[0];
}
else {
$viewname = undef;
}
$zconf = $conf->[$in{'index'}];
&can_edit_zone($zconf, $view) ||
@@ -140,7 +144,7 @@ foreach $u (keys %wusers) {
# Also delete from slave servers
if ($in{'onslave'} && $access{'remote'}) {
@slaveerrs = &delete_on_slaves($zconf->{'value'});
@slaveerrs = &delete_on_slaves($zconf->{'value'}, undef, $viewname);
if (@slaveerrs) {
&error(&text('delete_errslave',
"<p>".join("<br>", map { "$_->[0]->{'host'} : $_->[1]" }

View File

@@ -27,8 +27,11 @@ if (@servers) {
push(@cols, $s->{'host'}.
($s->{'nsname'} ? " ($s->{'nsname'})" : ""));
push(@cols, $s->{'sec'} ? $text{'yes'} : $text{'no'});
push(@cols, $s->{'bind8_view'} ||
"<i>$text{'slaves_noview'}</i>");
push(@cols, $s->{'bind8_view'} eq '*' ?
"<i>$text{'slaves_sameview'}</i>" :
$s->{'bind8_view'} ?
$s->{'bind8_view'} :
"<i>$text{'slaves_noview'}</i>");
push(@cols, $s->{'desc'});
($type) = grep { $_->[0] eq $s->{'type'} }
@servers::server_types;

View File

@@ -82,9 +82,11 @@ else {
# Also delete from slave servers
if ($in{'onslave'} && $access{'remote'}) {
$viewname = $view ? $view->{'values'}->[0] : undef;
print &text('massdelete_slaves',
$zconf->{'value'}),"<br>\n";
@slaveerrs = &delete_on_slaves($zconf->{'value'});
@slaveerrs = &delete_on_slaves(
$zconf->{'value'}, undef, $viewname);
if (@slaveerrs) {
print $text{'massdelete_failed'},"<br>\n";
foreach $s (@slaveerrs) {