[pve-devel] [PATCH v2 manager 10/14] api: ceph: mon: add ips_from_mon_host helper

Fabian Ebner f.ebner at proxmox.com
Mon May 10 14:18:22 CEST 2021


Partially based on pve-storage's CephConfig.pm get_monaddr_list, but the
interface is not the best for the use case here.

Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
---

New in v2.

 PVE/API2/Ceph/MON.pm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/PVE/API2/Ceph/MON.pm b/PVE/API2/Ceph/MON.pm
index f7af3c37..e4e8ecfb 100644
--- a/PVE/API2/Ceph/MON.pm
+++ b/PVE/API2/Ceph/MON.pm
@@ -62,6 +62,30 @@ my $find_mon_ip = sub {
     }
 };
 
+my $ips_from_mon_host = sub {
+    my ($mon_host) = @_;
+
+    my $ips = [];
+
+    my @hosts = PVE::Tools::split_list($mon_host);
+
+    for my $host (@hosts) {
+	$host =~ s|^\[?v\d+\:||; # remove beginning of vector
+	$host =~ s|/\d+\]?||; # remove end of vector
+
+	($host) = PVE::Tools::parse_host_and_port($host);
+	next if !defined($host);
+
+	# filter out hostnames
+	my $ip = PVE::JSONSchema::pve_verify_ip($host, 1);
+	next if !defined($ip);
+
+	push @{$ips}, $ip;
+    }
+
+    return $ips;
+};
+
 my $assert_mon_prerequisites = sub {
     my ($cfg, $monhash, $monid, $monip) = @_;
 
-- 
2.20.1






More information about the pve-devel mailing list