[pve-devel] [PATCH librados2-perl 1/3] refactor pverados worker into dedicated function

Fiona Ebner f.ebner at proxmox.com
Tue Aug 8 13:23:10 CEST 2023


No functional change intended.

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

Better viewed with
git diff --color-moved=zebra --color-moved-ws=ignore-all-space
or similar

 PVE/RADOS.pm | 116 +++++++++++++++++++++++++++------------------------
 1 file changed, 61 insertions(+), 55 deletions(-)

diff --git a/PVE/RADOS.pm b/PVE/RADOS.pm
index aba6653..162e7db 100644
--- a/PVE/RADOS.pm
+++ b/PVE/RADOS.pm
@@ -105,6 +105,66 @@ my $sendcmd = sub {
     return $raw;
 };
 
+sub pve_rados_work {
+    my ($self, $parent, $timeout, %params) = @_;
+
+    my $conn;
+    eval {
+	my $ceph_user = delete $params{userid} || $ceph_default_user;
+	$conn = pve_rados_create($ceph_user) ||
+	    die "unable to create RADOS object\n";
+
+	if (defined($params{ceph_conf}) && (!-e $params{ceph_conf})) {
+	    die "Supplied ceph config doesn't exist, $params{ceph_conf}\n";
+	}
+
+	my $ceph_conf = delete $params{ceph_conf} || $ceph_default_conf;
+
+	if (-e $ceph_conf) {
+	    pve_rados_conf_read_file($conn, $ceph_conf);
+	}
+
+	pve_rados_conf_set($conn, 'client_mount_timeout', $timeout);
+
+	foreach my $k (keys %params) {
+	    pve_rados_conf_set($conn, $k, $params{$k});
+	}
+
+	pve_rados_connect($conn);
+    };
+    if (my $err = $@) {
+	&$writedata($parent, 'E', $err);
+	die $err;
+    }
+    &$writedata($parent, 'S');
+
+    $self->{conn} = $conn;
+
+    for (;;) {
+	my ($cmd, $data) = &$readdata($parent, 1);
+
+	last if !$cmd || $cmd eq 'Q';
+
+	my $res;
+	eval {
+	    if ($cmd eq 'M') { # rados monitor commands
+		$res = encode_json(pve_rados_mon_command($self->{conn}, [ $data ]));
+	    } elsif ($cmd eq 'C') { # class methods
+		my $aref = decode_json($data);
+		my $method = shift @$aref;
+		$res = encode_json($self->$method(@$aref));
+	    } else {
+		die "invalid command\n";
+	    }
+	};
+	if (my $err = $@) {
+	    &$writedata($parent, 'E', $err);
+	    die $err;
+	}
+	&$writedata($parent, '>', $res);
+    }
+}
+
 sub new {
     my ($class, %params) = @_;
 
@@ -145,61 +205,7 @@ sub new {
 
 	close $child;
 
-	my $conn;
-	eval {
-	    my $ceph_user = delete $params{userid} || $ceph_default_user;
-	    $conn = pve_rados_create($ceph_user) ||
-		die "unable to create RADOS object\n";
-
-	    if (defined($params{ceph_conf}) && (!-e $params{ceph_conf})) {
-		die "Supplied ceph config doesn't exist, $params{ceph_conf}\n";
-	    }
-
-	    my $ceph_conf = delete $params{ceph_conf} || $ceph_default_conf;
-
-	    if (-e $ceph_conf) {
-		pve_rados_conf_read_file($conn, $ceph_conf);
-	    }
-
-	    pve_rados_conf_set($conn, 'client_mount_timeout', $timeout);
-
-	    foreach my $k (keys %params) {
-		pve_rados_conf_set($conn, $k, $params{$k});
-	    }
-
-	    pve_rados_connect($conn);
-	};
-	if (my $err = $@) {
-	    &$writedata($parent, 'E', $err);
-	    die $err;
-	}
-	&$writedata($parent, 'S');
-
-	$self->{conn} = $conn;
-
-	for (;;) {
-	    my ($cmd, $data) = &$readdata($parent, 1);
-
-	    last if !$cmd || $cmd eq 'Q';
-
-	    my $res;
-	    eval {
-		if ($cmd eq 'M') { # rados monitor commands
-		    $res = encode_json(pve_rados_mon_command($self->{conn}, [ $data ]));
-		} elsif ($cmd eq 'C') { # class methods
-		    my $aref = decode_json($data);
-		    my $method = shift @$aref;
-		    $res = encode_json($self->$method(@$aref));
-		} else {
-		    die "invalid command\n";
-		}
-	    };
-	    if (my $err = $@) {
-		&$writedata($parent, 'E', $err);
-		die $err;
-	    }
-	    &$writedata($parent, '>', $res);
-	}
+	$self->pve_rados_work($parent, $timeout, %params);
 
 	exit(0);
     }
-- 
2.39.2






More information about the pve-devel mailing list