URL: https://github.com/freeipa/freeipa/pull/771 Author: stlaz Title: #771: cert-show: check if certificate_out is in options Action: synchronized
To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/771/head:pr771 git checkout pr771
From cc2eb10ab57403d9ac5bd7b2680491f129af89bc Mon Sep 17 00:00:00 2001 From: Stanislav Laznicka <slazn...@redhat.com> Date: Tue, 9 May 2017 17:45:20 +0200 Subject: [PATCH] ca/cert-show: check certificate_out in options If --certificate-out was specified on the command line, it will appear among the options. If it was empty, it will be None. This check was done properly in the ca plugin. Lets' just unify how this is handled and improve user experience by announcing which option causes the failure. https://pagure.io/freeipa/issue/6885 --- ipaclient/plugins/ca.py | 8 ++++++-- ipaclient/plugins/cert.py | 12 +++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ipaclient/plugins/ca.py b/ipaclient/plugins/ca.py index fcdf484..fe9c55f 100644 --- a/ipaclient/plugins/ca.py +++ b/ipaclient/plugins/ca.py @@ -4,7 +4,7 @@ import base64 from ipaclient.frontend import MethodOverride -from ipalib import util, x509, Str +from ipalib import errors, util, x509, Str from ipalib.plugable import Registry from ipalib.text import _ @@ -26,7 +26,11 @@ def forward(self, *keys, **options): filename = None if 'certificate_out' in options: filename = options.pop('certificate_out') - util.check_writable_file(filename) + try: + util.check_writable_file(filename) + except errors.FileError as e: + raise errors.ValidationError(name='certificate-out', + error=str(e)) result = super(WithCertOutArgs, self).forward(*keys, **options) if filename: diff --git a/ipaclient/plugins/cert.py b/ipaclient/plugins/cert.py index a4ee9a9..541b82a 100644 --- a/ipaclient/plugins/cert.py +++ b/ipaclient/plugins/cert.py @@ -49,9 +49,15 @@ class CertRetrieveOverride(MethodOverride): ) def forward(self, *args, **options): - certificate_out = options.pop('certificate_out', None) - if certificate_out is not None: - util.check_writable_file(certificate_out) + if 'certificate_out' in options: + certificate_out = options.pop('certificate_out') + try: + util.check_writable_file(certificate_out) + except errors.FileError as e: + raise errors.ValidationError(name='certificate-out', + error=str(e)) + else: + certificate_out = None result = super(CertRetrieveOverride, self).forward(*args, **options)
-- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code