Blob Blame History Raw
From a23b8fd488ca33f3e6ffa42530debd6d5d3430ac Mon Sep 17 00:00:00 2001
From: Jan Cholasta <jcholast@redhat.com>
Date: Mon, 18 Jul 2016 09:37:24 +0200
Subject: [PATCH] client: fix hiding of commands which lack server support

Rather than checking the server counterpart's NO_CLI, which may be False
even for commands supported on the server, check wheter the server
counterpart is a command defined on the server or a local placeholder.

https://fedorahosted.org/freeipa/ticket/6089

Reviewed-By: Florence Blanc-Renaud <flo@redhat.com>
---
 ipaclient/plugins/automount.py        |  3 ++-
 ipaclient/plugins/otptoken_yubikey.py |  3 ++-
 ipaclient/plugins/vault.py            | 12 ++++++++----
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/ipaclient/plugins/automount.py b/ipaclient/plugins/automount.py
index 8405f9f4fe283d9c068d51e10717fb1396fa44bf..c6537bc6c24b905a8e1f7fb6a7e2c931b95374c7 100644
--- a/ipaclient/plugins/automount.py
+++ b/ipaclient/plugins/automount.py
@@ -54,7 +54,8 @@ class _fake_automountlocation_show(Method):
 class automountlocation_tofiles(MethodOverride):
     @property
     def NO_CLI(self):
-        return self.api.Command.automountlocation_show.NO_CLI
+        return isinstance(self.api.Command.automountlocation_show,
+                          _fake_automountlocation_show)
 
     def output_for_cli(self, textui, result, *keys, **options):
         maps = result['result']['maps']
diff --git a/ipaclient/plugins/otptoken_yubikey.py b/ipaclient/plugins/otptoken_yubikey.py
index 5e0d994628ab997853a80d1f1118ba8ada9993d9..423b670de15dd7f803db1dcbb759bd0254827072 100644
--- a/ipaclient/plugins/otptoken_yubikey.py
+++ b/ipaclient/plugins/otptoken_yubikey.py
@@ -76,7 +76,8 @@ class otptoken_add_yubikey(Command):
 
     @property
     def NO_CLI(self):
-        return self.api.Command.otptoken_add.NO_CLI
+        return isinstance(self.api.Command.otptoken_add,
+                          _fake_otptoken_add)
 
     def get_args(self):
         for arg in self.api.Command.otptoken_add.args():
diff --git a/ipaclient/plugins/vault.py b/ipaclient/plugins/vault.py
index b7e0cfffb2fff62fdbbf438964d124fc2dd8ac36..e3a1ae3a0ad767bcee843b7fa3743a934e02d18b 100644
--- a/ipaclient/plugins/vault.py
+++ b/ipaclient/plugins/vault.py
@@ -204,7 +204,8 @@ class vault_add(Local):
 
     @property
     def NO_CLI(self):
-        return self.api.Command.vault_add_internal.NO_CLI
+        return isinstance(self.api.Command.vault_add_internal,
+                          _fake_vault_add_internal)
 
     def get_args(self):
         for arg in self.api.Command.vault_add_internal.args():
@@ -401,7 +402,8 @@ class vault_mod(Local):
 
     @property
     def NO_CLI(self):
-        return self.api.Command.vault_mod_internal.NO_CLI
+        return isinstance(self.api.Command.vault_mod_internal,
+                          _fake_vault_mod_internal)
 
     def get_args(self):
         for arg in self.api.Command.vault_mod_internal.args():
@@ -579,7 +581,8 @@ class vault_archive(Local):
 
     @property
     def NO_CLI(self):
-        return self.api.Command.vault_archive_internal.NO_CLI
+        return isinstance(self.api.Command.vault_archive_internal,
+                          _fake_vault_archive_internal)
 
     def get_args(self):
         for arg in self.api.Command.vault_archive_internal.args():
@@ -827,7 +830,8 @@ class vault_retrieve(Local):
 
     @property
     def NO_CLI(self):
-        return self.api.Command.vault_retrieve_internal.NO_CLI
+        return isinstance(self.api.Command.vault_retrieve_internal,
+                          _fake_vault_retrieve_internal)
 
     def get_args(self):
         for arg in self.api.Command.vault_retrieve_internal.args():
-- 
2.7.4