freeipa/ipaclient/frontend.py

75 lines
1.8 KiB
Python
Raw Normal View History

#
# Copyright (C) 2016 FreeIPA Contributors see COPYING for license
#
from ipalib.frontend import Command, Method
class CommandOverride(Command):
def __init__(self, api):
super(CommandOverride, self).__init__(api)
next_class = api.get_plugin_next(type(self))
self.next = next_class(api)
@property
def doc(self):
return self.next.doc
@property
def NO_CLI(self):
return self.next.NO_CLI
@property
def topic(self):
return self.next.topic
def _on_finalize(self):
self.next.finalize()
super(CommandOverride, self)._on_finalize()
def get_args(self):
for arg in self.next.args():
yield arg
for arg in super(CommandOverride, self).get_args():
yield arg
def get_options(self):
for option in self.next.options():
yield option
for option in super(CommandOverride, self).get_options():
if option.name not in ('all', 'raw', 'version'):
yield option
def get_output_params(self):
for output_param in self.next.output_params():
yield output_param
for output_param in super(CommandOverride, self).get_output_params():
yield output_param
def _iter_output(self):
return self.next.output()
class MethodOverride(CommandOverride, Method):
@property
def obj_name(self):
return self.next.obj_name
@property
def attr_name(self):
return self.next.attr_name
@property
def obj(self):
return self.next.obj
def get_output_params(self):
seen = set()
for output_param in super(MethodOverride, self).get_output_params():
if output_param.name in seen:
continue
seen.add(output_param.name)
yield output_param