mirror of https://github.com/schoebel/mars
marsadm: path correction / systematic naming conventions
This commit is contained in:
parent
0edca689bf
commit
11bc9f2e91
|
@ -59,6 +59,24 @@ my $kernel_version = 0;
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
|
|
||||||
|
# path correction
|
||||||
|
|
||||||
|
sub correct_path {
|
||||||
|
my ($path) = @_;
|
||||||
|
# actual switches
|
||||||
|
$path =~ s:(/is-attach)[a-z]*$:$1ed:;
|
||||||
|
$path =~ s:(/is-)(fetch)[a-z]*$:$1copy:;
|
||||||
|
$path =~ s:(/is-)(apply)[a-z]*$:$1replay:;
|
||||||
|
$path =~ s:(/is-(copy|replay|sync))[a-z]*$:$1ing:;
|
||||||
|
# todo switches
|
||||||
|
$path =~ s:(/fetch)[a-z]*$:/connect:;
|
||||||
|
$path =~ s:(/apply)[a-z]*$:/allow-replay:;
|
||||||
|
$path =~ s:(/replay)[a-z]*$:/allow-replay:;
|
||||||
|
return $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
##################################################################
|
||||||
|
|
||||||
# low-level infrastructure
|
# low-level infrastructure
|
||||||
|
|
||||||
my @link_list = ();
|
my @link_list = ();
|
||||||
|
@ -230,6 +248,8 @@ sub wait_cond {
|
||||||
"attached" => "is-attached",
|
"attached" => "is-attached",
|
||||||
"replay" => "is-replaying",
|
"replay" => "is-replaying",
|
||||||
"replaying"=> "is-replaying",
|
"replaying"=> "is-replaying",
|
||||||
|
"fetch" => "is-copying",
|
||||||
|
"fetching" => "is-copying",
|
||||||
"copy" => "is-copying",
|
"copy" => "is-copying",
|
||||||
"copying" => "is-copying",
|
"copying" => "is-copying",
|
||||||
"sync" => "is-syncing",
|
"sync" => "is-syncing",
|
||||||
|
@ -244,8 +264,9 @@ sub wait_cond {
|
||||||
(
|
(
|
||||||
"attach" => "attach",
|
"attach" => "attach",
|
||||||
"attached" => "attach",
|
"attached" => "attach",
|
||||||
|
"fetch" => "connect",
|
||||||
"connect" => "connect",
|
"connect" => "connect",
|
||||||
"replay" => "allow-replay",
|
"replay" => "replay",
|
||||||
"sync" => "sync",
|
"sync" => "sync",
|
||||||
);
|
);
|
||||||
my $name = $table{$specific};
|
my $name = $table{$specific};
|
||||||
|
@ -421,6 +442,7 @@ sub check_primary_gone {
|
||||||
sub check_todo {
|
sub check_todo {
|
||||||
my ($cmd, $res, $key, $val, $wait, $unchecked, $inv) = @_;
|
my ($cmd, $res, $key, $val, $wait, $unchecked, $inv) = @_;
|
||||||
my $path = "$mars/resource-$res/todo-$host/$key";
|
my $path = "$mars/resource-$res/todo-$host/$key";
|
||||||
|
$path = correct_path($path);
|
||||||
my $link;
|
my $link;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
$link = get_link($path, $unchecked);
|
$link = get_link($path, $unchecked);
|
||||||
|
@ -948,7 +970,7 @@ sub _trigger {
|
||||||
sub _switch {
|
sub _switch {
|
||||||
my ($cmd, $res, $path, $on) = @_;
|
my ($cmd, $res, $path, $on) = @_;
|
||||||
my $src = $on ? "1" : "0";
|
my $src = $on ? "1" : "0";
|
||||||
|
$path = correct_path($path);
|
||||||
my $old = get_link($path);
|
my $old = get_link($path);
|
||||||
if ($old && $old eq $src) {
|
if ($old && $old eq $src) {
|
||||||
lprint "${cmd} on resource $res is already activated\n" if $cmd;
|
lprint "${cmd} on resource $res is already activated\n" if $cmd;
|
||||||
|
@ -1599,14 +1621,14 @@ sub pause_replay_global_res {
|
||||||
my $pause = ($cmd =~ m/pause/);
|
my $pause = ($cmd =~ m/pause/);
|
||||||
my @paths = glob("$mars/resource-$res/todo-*/");
|
my @paths = glob("$mars/resource-$res/todo-*/");
|
||||||
for my $path (@paths) {
|
for my $path (@paths) {
|
||||||
_switch($cmd, $res, "$path/allow-replay", !$pause);
|
_switch($cmd, $res, "$path/replay", !$pause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub pause_replay_local_res {
|
sub pause_replay_local_res {
|
||||||
my ($cmd, $res) = @_;
|
my ($cmd, $res) = @_;
|
||||||
my $pause = ($cmd =~ m/pause/);
|
my $pause = ($cmd =~ m/pause/);
|
||||||
my $path = "$mars/resource-$res/todo-$host/allow-replay";
|
my $path = "$mars/resource-$res/todo-$host/replay";
|
||||||
_switch($cmd, $res, $path, !$pause);
|
_switch($cmd, $res, $path, !$pause);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1652,7 +1674,7 @@ sub set_replay_res {
|
||||||
ldie "you must supply a numeric logfile number as third argument.\n";
|
ldie "you must supply a numeric logfile number as third argument.\n";
|
||||||
}
|
}
|
||||||
check_not_primary(@_);
|
check_not_primary(@_);
|
||||||
check_todo($cmd, $res, "allow-replay", 0, 0);
|
check_todo($cmd, $res, "replay", 0, 0);
|
||||||
my $replaylink = "$mars/resource-$res/replay-$host";
|
my $replaylink = "$mars/resource-$res/replay-$host";
|
||||||
my $old_val = get_link($replaylink);
|
my $old_val = get_link($replaylink);
|
||||||
my $old_nr = $old_val;
|
my $old_nr = $old_val;
|
||||||
|
@ -1702,7 +1724,7 @@ sub primary_phase0 {
|
||||||
}
|
}
|
||||||
check_todo($cmd, $res, "attach", 1, 0);
|
check_todo($cmd, $res, "attach", 1, 0);
|
||||||
check_todo($cmd, $res, "connect", 1, 0) if !$force;
|
check_todo($cmd, $res, "connect", 1, 0) if !$force;
|
||||||
check_todo($cmd, $res, "allow-replay", 1, 0);
|
check_todo($cmd, $res, "replay", 1, 0);
|
||||||
}
|
}
|
||||||
return if ($old eq $host and $cmd eq "primary");
|
return if ($old eq $host and $cmd eq "primary");
|
||||||
return if $old eq "(none)";
|
return if $old eq "(none)";
|
||||||
|
@ -1802,7 +1824,7 @@ sub invalidate_res_phase0 {
|
||||||
sub invalidate_res_phase1 {
|
sub invalidate_res_phase1 {
|
||||||
my ($cmd, $res) = @_;
|
my ($cmd, $res) = @_;
|
||||||
_switch($cmd, $res, "$mars/resource-$res/todo-$host/sync", 0);
|
_switch($cmd, $res, "$mars/resource-$res/todo-$host/sync", 0);
|
||||||
_switch($cmd, $res, "$mars/resource-$res/todo-$host/allow-replay", 0);
|
_switch($cmd, $res, "$mars/resource-$res/todo-$host/replay", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub invalidate_res_phase2 {
|
sub invalidate_res_phase2 {
|
||||||
|
@ -1824,7 +1846,7 @@ sub invalidate_res_phase3 {
|
||||||
set_link("0", $dst);
|
set_link("0", $dst);
|
||||||
finish_links(); # opportunity for errors => don't continue
|
finish_links(); # opportunity for errors => don't continue
|
||||||
_set_replaylink("$mars/resource-$res", $replay_nr, $primary, "");
|
_set_replaylink("$mars/resource-$res", $replay_nr, $primary, "");
|
||||||
_switch($cmd, $res, "$mars/resource-$res/todo-$host/allow-replay", 1);
|
_switch($cmd, $res, "$mars/resource-$res/todo-$host/replay", 1);
|
||||||
_switch($cmd, $res, "$mars/resource-$res/todo-$host/sync", 1);
|
_switch($cmd, $res, "$mars/resource-$res/todo-$host/sync", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue