On Tue, Jun 11, 2019 at 07:36:28PM +0200, Thomas Lamprecht wrote:
> Preparation for enhanced compatibility with new corosync 3/knet
> transport. Pretty straight forward switch from ringX_addr to links,
> *but*, for configuration backward compatibility corosync still uses
> "ringX_addr" as "link address", this will surely add confusion"link
> address", this will surely add confusion ...

last part is duplicated ;)

> We drop all the "all IP versions must match" checking code, as
> 1. it could cope with hostname's anyway

s/could/could NOT/ ?

> 2. links can be on different IP versions with kronosnet
> 
> This makes it a bit easier and shorter, we can re-add some (saner)
> checking always later on, if people misconfigure this often..
> 
> Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com>
> ---
> 
> changes v1 (RFC) -> v2:
> * drop bindnet
> * drop IP version checks, replace with a (for now) fixed 'ipv4-6'
> 
>  data/PVE/API2/ClusterConfig.pm | 16 ++--------------
>  data/PVE/Corosync.pm           | 29 ++++++++---------------------
>  2 files changed, 10 insertions(+), 35 deletions(-)
> 
> diff --git a/data/PVE/API2/ClusterConfig.pm b/data/PVE/API2/ClusterConfig.pm
> index e7142b5..8b1fdbe 100644
> --- a/data/PVE/API2/ClusterConfig.pm
> +++ b/data/PVE/API2/ClusterConfig.pm
> @@ -95,20 +95,8 @@ __PACKAGE__->register_method ({
>               minimum => 1,
>               optional => 1,
>           },
> -         bindnet0_addr => {
> -             type => 'string', format => 'ip',
> -             description => "This specifies the network address the corosync 
> ring 0".
> -                 " executive should bind to and defaults to the local IP 
> address of the node.",
> -             optional => 1,
> -         },
> -         ring0_addr => get_standard_option('corosync-ring0-addr'),
> -         bindnet1_addr => {
> -             type => 'string', format => 'ip',
> -             description => "This specifies the network address the corosync 
> ring 1".
> -                 " executive should bind to and is optional.",
> -             optional => 1,
> -         },
> -         ring1_addr => get_standard_option('corosync-ring1-addr'),
> +         link0 => get_standard_option('corosync-link'),
> +         link1 => get_standard_option('corosync-link'),
>       },
>      },
>      returns => { type => 'string' },
> diff --git a/data/PVE/Corosync.pm b/data/PVE/Corosync.pm
> index fea7258..0d2a85f 100644
> --- a/data/PVE/Corosync.pm
> +++ b/data/PVE/Corosync.pm
> @@ -202,12 +202,9 @@ sub create_conf {
>      my $votes = $param{votes} || 1;
>  
>      my $local_ip_address = PVE::Cluster::remote_node_ip($nodename);
> -    my $ring0_addr = $param{ring0_addr} // $local_ip_address;
> -    my $bindnet0_addr = $param{bindnet0_addr} // $ring0_addr;
>  
> -    my $use_ipv6 = ip_is_ipv6($ring0_addr);
> -    die "ring 0 addresses must be from same IP family!\n"
> -     if $use_ipv6 != ip_is_ipv6($bindnet0_addr);
> +    my $link0 = PVE::Cluster::parse_corosync_link($param{link0});
> +    $link0->{address} //= $local_ip_address;
>  
>      my $conf = {
>       totem => {
> @@ -215,10 +212,9 @@ sub create_conf {
>           secauth => 'on',
>           cluster_name => $clustername,
>           config_version => 0,
> -         ip_version => $use_ipv6 ? 'ipv6' : 'ipv4',
> +         ip_version => 'ipv4-6',
>           interface => {
>               0 => {
> -                 bindnetaddr => $bindnet0_addr,
>                   linknumber => 0,
>               },
>           },
> @@ -229,7 +225,7 @@ sub create_conf {
>                   name => $nodename,
>                   nodeid => $nodeid,
>                   quorum_votes => $votes,
> -                 ring0_addr => $ring0_addr,
> +                 ring0_addr => $link0->{address},
>               },
>           },
>       },
> @@ -242,23 +238,14 @@ sub create_conf {
>       },
>      };
>  
> -    die "Param bindnet1_addr set but ring1_addr not specified!\n"
> -     if (defined($param{bindnet1_addr}) && !defined($param{ring1_addr}));
> -
> -    my $ring1_addr = $param{ring1_addr};
> -    my $bindnet1_addr = $param{bindnet1_addr} // $param{ring1_addr};
> -
> -    if ($bindnet1_addr) {
> -     die "ring 1 addresses must be from same IP family as ring 0!\n"
> -         if $use_ipv6 != ip_is_ipv6($bindnet1_addr) ||
> -            $use_ipv6 != ip_is_ipv6($ring1_addr);
> +    my $link1 = PVE::Cluster::parse_corosync_link($param{link1});
>  
> +    if ($link1->{address}) {
>       $conf->{totem}->{interface}->{1} = {
> -         bindnetaddr => $bindnet1_addr,
>           linknumber => 1,
>       };
> -     $conf->{totem}->{rrp_mode} = 'passive';
> -     $conf->{nodelist}->{node}->{$nodename}->{ring1_addr} = $ring1_addr;
> +     $conf->{totem}->{link_mode} = 'passive';
> +     $conf->{nodelist}->{node}->{$nodename}->{ring1_addr} = 
> $link1->{address};
>      }
>  
>      return { main => $conf };
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to