summaryrefslogtreecommitdiffstats
path: root/ipaclient/frontend.py
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2016-06-30 15:51:29 +0200
committerJan Cholasta <jcholast@redhat.com>2016-07-01 09:40:04 +0200
commit2cf7c7b4ac2a71457d026d6312cf4fd57b55062b (patch)
tree577732b8c373e377dd66517b9f0c7f72654ed7c8 /ipaclient/frontend.py
parentcf713ac28362c40e6414e9bf9701e58e36c07deb (diff)
downloadfreeipa-2cf7c7b4ac2a71457d026d6312cf4fd57b55062b.tar.gz
freeipa-2cf7c7b4ac2a71457d026d6312cf4fd57b55062b.tar.xz
freeipa-2cf7c7b4ac2a71457d026d6312cf4fd57b55062b.zip
client: add support for pre-schema servers
Bundle remote plugin interface definitions for servers which lack API schema support. These server API versions are included: * 2.49: IPA 3.1.0 on RHEL/CentOS 6.5+, * 2.114: IPA 4.1.4 on Fedora 22, * 2.156: IPA 4.2.0 on RHEL/CentOS 7.2 and IPA 4.2.4 on Fedora 23, * 2.164: IPA 4.3.1 on Fedora 23. For servers with other API versions, the closest lower API version is used. https://fedorahosted.org/freeipa/ticket/4739 Reviewed-By: David Kupka <dkupka@redhat.com>
Diffstat (limited to 'ipaclient/frontend.py')
-rw-r--r--ipaclient/frontend.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/ipaclient/frontend.py b/ipaclient/frontend.py
index 94d694631..e8eacc068 100644
--- a/ipaclient/frontend.py
+++ b/ipaclient/frontend.py
@@ -3,6 +3,104 @@
#
from ipalib.frontend import Command, Method
+from ipalib.parameters import Str
+from ipalib.text import _
+
+
+class ClientCommand(Command):
+ def get_options(self):
+ skip = set()
+ for option in super(ClientCommand, self).get_options():
+ if option.name in skip:
+ continue
+ if option.name in ('all', 'raw'):
+ skip.add(option.name)
+ yield option
+
+
+class ClientMethod(ClientCommand, Method):
+ _failed_member_output_params = (
+ # baseldap
+ Str(
+ 'member',
+ label=_("Failed members"),
+ ),
+ Str(
+ 'sourcehost',
+ label=_("Failed source hosts/hostgroups"),
+ ),
+ Str(
+ 'memberhost',
+ label=_("Failed hosts/hostgroups"),
+ ),
+ Str(
+ 'memberuser',
+ label=_("Failed users/groups"),
+ ),
+ Str(
+ 'memberservice',
+ label=_("Failed service/service groups"),
+ ),
+ Str(
+ 'failed',
+ label=_("Failed to remove"),
+ flags=['suppress_empty'],
+ ),
+ Str(
+ 'ipasudorunas',
+ label=_("Failed RunAs"),
+ ),
+ Str(
+ 'ipasudorunasgroup',
+ label=_("Failed RunAsGroup"),
+ ),
+ # caacl
+ Str(
+ 'ipamembercertprofile',
+ label=_("Failed profiles"),
+ ),
+ Str(
+ 'ipamemberca',
+ label=_("Failed CAs"),
+ ),
+ # host
+ Str(
+ 'managedby',
+ label=_("Failed managedby"),
+ ),
+ # service
+ Str(
+ 'ipaallowedtoperform_read_keys',
+ label=_("Failed allowed to retrieve keytab"),
+ ),
+ Str(
+ 'ipaallowedtoperform_write_keys',
+ label=_("Failed allowed to create keytab"),
+ ),
+ # servicedelegation
+ Str(
+ 'failed_memberprincipal',
+ label=_("Failed members"),
+ ),
+ Str(
+ 'ipaallowedtarget',
+ label=_("Failed targets"),
+ ),
+ # vault
+ Str(
+ 'owner?',
+ label=_("Failed owners"),
+ ),
+ )
+
+ def get_output_params(self):
+ seen = set()
+ for output_param in super(ClientMethod, self).get_output_params():
+ seen.add(output_param.name)
+ yield output_param
+ for output_param in self._failed_member_output_params:
+ if output_param.name not in seen:
+ yield output_param
class CommandOverride(Command):
@@ -24,6 +122,14 @@ class CommandOverride(Command):
def topic(self):
return self.next.topic
+ @property
+ def forwarded_name(self):
+ return self.next.forwarded_name
+
+ @property
+ def api_version(self):
+ return self.next.api_version
+
def _on_finalize(self):
self.next.finalize()