From: Fabian Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v2 manager 13/14] api: ceph: mon: fix handling of IPv6 addresses in destroymon
Date: Mon, 10 May 2021 14:18:25 +0200 [thread overview]
Message-ID: <20210510121826.8543-14-f.ebner@proxmox.com> (raw)
In-Reply-To: <20210510121826.8543-1-f.ebner@proxmox.com>
by also comparing the canonical form to decide when to remove an address. When
getting the IP from the rados information, also drop eventual brackets, so our
existing function can handle it. Add the brackets back within the
remove_addr_from_mon_host function.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
New in v2.
PVE/API2/Ceph/MON.pm | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/PVE/API2/Ceph/MON.pm b/PVE/API2/Ceph/MON.pm
index e5f11c8a..6244655d 100644
--- a/PVE/API2/Ceph/MON.pm
+++ b/PVE/API2/Ceph/MON.pm
@@ -130,6 +130,8 @@ my $assert_mon_can_remove = sub {
my $remove_addr_from_mon_host = sub {
my ($monhost, $addr) = @_;
+ $addr = "[$addr]" if PVE::JSONSchema::pve_verify_ipv6($addr, 1);
+
# various replaces to remove the ip
# we always match the beginning or a separator (also at the end)
# so we do not accidentally remove a wrong ip
@@ -485,6 +487,7 @@ __PACKAGE__->register_method ({
if ($mon->{name} eq $monid) {
$addr = $mon->{public_addr} // $mon->{addr};
($addr) = $addr =~ m|^(.*):\d+/\d+$|; # extract the ip without port/nonce
+ ($addr) = $addr =~ m|^\[?(.*?)\]?$|; # remove brackets
last;
}
}
@@ -499,7 +502,22 @@ __PACKAGE__->register_method ({
# delete from mon_host
if (my $monhost = $cfg->{global}->{mon_host}) {
- $cfg->{global}->{mon_host} = $remove_addr_from_mon_host->($monhost, $addr);
+ $monhost = $remove_addr_from_mon_host->($monhost, $addr);
+
+ # also remove matching IPs that differ syntactically
+ if (PVE::JSONSchema::pve_verify_ip($addr, 1)) {
+ $addr = PVE::Network::canonical_ip($addr);
+
+ my $mon_host_ips = $ips_from_mon_host->($cfg->{global}->{mon_host});
+
+ for my $mon_host_ip (@{$mon_host_ips}) {
+ # match canonical addresses, but remove as present in mon_host
+ if (PVE::Network::canonical_ip($mon_host_ip) eq $addr) {
+ $monhost = $remove_addr_from_mon_host->($monhost, $mon_host_ip);
+ }
+ }
+ }
+ $cfg->{global}->{mon_host} = $monhost;
}
cfs_write_file('ceph.conf', $cfg);
--
2.20.1
next prev parent reply other threads:[~2021-05-10 12:18 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-10 12:18 [pve-devel] [PATCH-SERIES v2 common/manager] fix #2422: allow multiple Ceph public networks Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 common 01/14] network: is_ip_in_cidr: correctly handle the CIDR being a singleton range Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 common 02/14] network: is_ip_in_cidr: avoid warning when versions don't match Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 common 03/14] network: add canonical_ip function Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 common 04/14] network: add unique_ips function Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 05/14] api: ceph: mon: split up arguments for run_command Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 06/14] api: ceph: create mon: handle ms_bind_ipv* options more generally Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 07/14] api: ceph: create mon: factor out monmaptool command Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 08/14] api: ceph: create mon: explicitly add subsequent monitors to the monmap Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 09/14] api: ceph: mon: fix handling of IPv6 addresses in find_mon_ip Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 10/14] api: ceph: mon: add ips_from_mon_host helper Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 11/14] api: ceph: mon: fix handling of IPv6 addresses in assert_mon_prerequisites Fabian Ebner
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 12/14] api: ceph: mon: factor out mon_host regex address removal Fabian Ebner
2021-05-10 12:18 ` Fabian Ebner [this message]
2021-05-10 12:18 ` [pve-devel] [PATCH v2 manager 14/14] fix #2422: allow multiple Ceph public networks Fabian Ebner
2021-06-17 13:21 ` [pve-devel] applied-partially: [PATCH-SERIES v2 common/manager] " Thomas Lamprecht
2021-06-18 15:14 ` [pve-devel] " Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210510121826.8543-14-f.ebner@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox