[pve-devel] [pve-manager 4/5] pvenode: use print_api_result to print certificate information

Dietmar Maurer dietmar at proxmox.com
Thu Jul 26 11:04:04 CEST 2018


Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---
 PVE/CLI/pvenode.pm | 42 +++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/PVE/CLI/pvenode.pm b/PVE/CLI/pvenode.pm
index 9dee6ce9..8a6a924d 100644
--- a/PVE/CLI/pvenode.pm
+++ b/PVE/CLI/pvenode.pm
@@ -121,21 +121,11 @@ __PACKAGE__->register_method({
     }});
 
 my $print_cert_info = sub {
-    my ($cert) = @_;
-
-    print "Certificate '$cert->{filename}'\n";
-    print "\tFP: '$cert->{fingerprint}'\n" if $cert->{fingerprint};
-    print "\tSubject: '$cert->{subject}'\n" if $cert->{subject};
-    print "\tIssuer: '$cert->{issuer}'\n" if $cert->{issuer};
-    print "\tnotBefore: " . localtime($cert->{notbefore}) . "\n" if $cert->{notbefore};
-    print "\tnotAfter: " . localtime($cert->{notafter}) . "\n" if $cert->{notafter};
-    if (scalar(@{$cert->{san}})) {
-	print "\tSubjectAlternativeNames:\n";
-	for my $name (@{$cert->{san}}) {
-	    print "\t\t-$name\n";
-	}
-    }
-    print "\n";
+    my ($schema, $cert, $options) = @_;
+
+    my $order = [qw(filename fingerprint subject issuer notbefore notafter san)];
+    PVE::CLIFormatter::print_api_result(
+	$cert, $schema, $order, { %$options, noheader => 1, sort_key => 0 });
 };
 
 my $print_acme_account = sub {
@@ -176,10 +166,24 @@ our $cmddef = {
 
     cert => {
 	info => [ 'PVE::API2::Certificates', 'info', [], { node => $nodename }, sub {
-	    my ($res) = @_;
-	    for my $cert (@$res) { $print_cert_info->($cert); }
-	}],
-	set => [ 'PVE::API2::Certificates', 'upload_custom_cert', ['certificates', 'key'], { node => $nodename }, $print_cert_info ],
+	    my ($res, $schema, $options) = @_;
+
+	    PVE::CLIFormatter::query_terminal_options($options);
+
+	    if (!$options->{'output-format'} || $options->{'output-format'} eq 'text') {
+		for my $cert (sort { $a->{filename} cmp $b->{filename} } @$res) {
+		    $print_cert_info->($schema->{items}, $cert, $options);
+		}
+	    } else {
+		PVE::CLIFormatter::print_api_result($res, $schema, undef, $options);
+	    }
+
+	}, $PVE::RESTHandler::standard_output_options],
+	set => [ 'PVE::API2::Certificates', 'upload_custom_cert', ['certificates', 'key'], { node => $nodename }, sub {
+	    my ($res, $schema, $options) = @_;
+	    PVE::CLIFormatter::query_terminal_options($options);
+	    $print_cert_info->($schema, $res, $options);
+	}, $PVE::RESTHandler::standard_output_options],
 	delete => [ 'PVE::API2::Certificates', 'remove_custom_cert', ['restart'], { node => $nodename } ],
     },
 
-- 
2.11.0




More information about the pve-devel mailing list