]> git.proxmox.com Git - pve-cluster.git/commitdiff
fix #1777: join: assert that local nodename bound IP is configured
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 15 Apr 2019 12:40:26 +0000 (12:40 +0000)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 15 Apr 2019 12:40:30 +0000 (12:40 +0000)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
data/PVE/CLI/pvecm.pm
data/PVE/Cluster.pm

index f945172bc7b1d9085952e56e2a08608256390398..e9055d425907d64e6182cfe738078281ae168c19 100755 (executable)
@@ -356,7 +356,7 @@ __PACKAGE__->register_method ({
        my $host = $param->{hostname};
        my $local_ip_address = PVE::Cluster::remote_node_ip($nodename);
 
-       PVE::Cluster::assert_joinable($param->{ring0_addr}, $param->{ring1_addr}, $param->{force});
+       PVE::Cluster::assert_joinable($local_ip_address, $param->{ring0_addr}, $param->{ring1_addr}, $param->{force});
 
        my $worker = sub {
 
index 35afba9e61cefd5b1383aa016fed0d9e5d5649af..5af11e6d1d5f1a2440e002eed351307d97fbe7ce 100644 (file)
@@ -1785,7 +1785,7 @@ sub ssh_info_to_command {
 }
 
 sub assert_joinable {
-    my ($ring0_addr, $ring1_addr, $force) = @_;
+    my ($local_addr, $ring0_addr, $ring1_addr, $force) = @_;
 
     my $errors = '';
     my $error = sub { $errors .= "* $_[0]\n"; };
@@ -1827,6 +1827,7 @@ sub assert_joinable {
            if (scalar(@$configured_ips) != 1);
     };
 
+    $check_ip->($local_addr, 'local node address');
     $check_ip->($ring0_addr, 'ring0');
     $check_ip->($ring1_addr, 'ring1');
 
@@ -1866,21 +1867,20 @@ sub join {
     my ($param) = @_;
 
     my $nodename = PVE::INotify::nodename();
+    my $local_ip_address = remote_node_ip($nodename);
+
+    my ($ring0_addr, $ring1_addr) = $param->@{'ring0_addr', 'ring1_addr'};
+    # check if we can join with the given parameters and current node state
+    assert_joinable($local_ip_address, $ring0_addr, $ring1_addr, $param->{force});
 
     setup_sshd_config();
     setup_rootsshconfig();
     setup_ssh_keys();
 
-    # check if we can join with the given parameters and current node state
-    my ($ring0_addr, $ring1_addr) = $param->@{'ring0_addr', 'ring1_addr'};
-    assert_joinable($ring0_addr, $ring1_addr, $param->{force});
-
     # make sure known_hosts is on local filesystem
     ssh_unmerge_known_hosts();
 
     my $host = $param->{hostname};
-    my $local_ip_address = remote_node_ip($nodename);
-
     my $conn_args = {
        username => 'root@pam',
        password => $param->{password},