mirror of https://github.com/schoebel/mars
marsadm: prefer backup IPs for lowlevel-set-host
This commit is contained in:
parent
3ac5311e48
commit
e1c51d6649
|
@ -4518,6 +4518,21 @@ sub _writable {
|
||||||
chmod($newmode, $path) == 1 or ldie "cannot chmod '$path'\n";
|
chmod($newmode, $path) == 1 or ldie "cannot chmod '$path'\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub _get_backup_ip {
|
||||||
|
my ($peer, $ignore_missing_ip) = @_;
|
||||||
|
$peer = $host unless $peer;
|
||||||
|
my $backup_glob = "$mars/backups-*/ips-backup/ip-$peer";
|
||||||
|
foreach my $backup (sort reverse_cmp lamport_glob($backup_glob)) {
|
||||||
|
my $check = get_link($backup, 2);
|
||||||
|
if ($check) {
|
||||||
|
lprint_stderr "Using BACKUP IP '$check' from '$backup'\n" if $verbose;
|
||||||
|
$known_ips{$peer} = $check;
|
||||||
|
return $check;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
sub _get_ip {
|
sub _get_ip {
|
||||||
my ($peer, $ignore_missing_ip) = @_;
|
my ($peer, $ignore_missing_ip) = @_;
|
||||||
$peer = $host unless $peer;
|
$peer = $host unless $peer;
|
||||||
|
@ -4539,15 +4554,8 @@ sub _get_ip {
|
||||||
return $probe_link;
|
return $probe_link;
|
||||||
}
|
}
|
||||||
# Try the backups in reverse order
|
# Try the backups in reverse order
|
||||||
my $backup_glob = "$mars/backups-*/ips-backup/ip-$peer";
|
my $found_backup = _get_backup_ip(@_);
|
||||||
foreach my $backup (sort reverse_cmp lamport_glob($backup_glob)) {
|
return $found_backup if $found_backup;
|
||||||
my $check = get_link($backup, 2);
|
|
||||||
if ($check) {
|
|
||||||
lprint_stderr "Using BACKUP IP '$check' from '$backup'\n" if $verbose;
|
|
||||||
$known_ips{$peer} = $check;
|
|
||||||
return $check;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# Try /usr/bin/getent first
|
# Try /usr/bin/getent first
|
||||||
my $answer = `/usr/bin/getent hosts '$peer'`;
|
my $answer = `/usr/bin/getent hosts '$peer'`;
|
||||||
chomp $answer;
|
chomp $answer;
|
||||||
|
@ -4655,6 +4663,9 @@ sub lowlevel_ls_host_ips {
|
||||||
sub lowlevel_set_host_ip {
|
sub lowlevel_set_host_ip {
|
||||||
my ($cmd, $peer, $ip) = @_;
|
my ($cmd, $peer, $ip) = @_;
|
||||||
check_id($peer, 0, 1);
|
check_id($peer, 0, 1);
|
||||||
|
if (!$ip) {
|
||||||
|
$ip = _get_backup_ip($peer);
|
||||||
|
}
|
||||||
if (!$ip) {
|
if (!$ip) {
|
||||||
$ip = _get_ip($peer);
|
$ip = _get_ip($peer);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue