mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
include more information in metadata
added to commands: doc, proper args, NO_CLI added to options: default_from, cli_name, cli_short_name and others https://fedorahosted.org/freeipa/ticket/3129 Reviewed-By: Martin Kosek <mkosek@redhat.com> Reviewed-By: Tomas Babej <tbabej@redhat.com>
This commit is contained in:
committed by
Tomas Babej
parent
884afb5d38
commit
ba0a1c6b33
@@ -35,6 +35,7 @@ from errors import (ZeroArgumentError, MaxArgumentError, OverlapError,
|
||||
VersionError, OptionError, InvocationError,
|
||||
ValidationError, ConversionError)
|
||||
from ipalib import messages
|
||||
from ipalib.util import json_serialize
|
||||
from textwrap import wrap
|
||||
|
||||
|
||||
@@ -1046,31 +1047,16 @@ class Command(HasParam):
|
||||
|
||||
# list of attributes we want exported to JSON
|
||||
json_friendly_attributes = (
|
||||
'name', 'takes_args',
|
||||
'name', 'doc', 'NO_CLI'
|
||||
)
|
||||
|
||||
# list of options we want only to mention their presence and not to write
|
||||
# their attributes
|
||||
json_only_presence_options = (
|
||||
'all', 'raw', 'attrs', 'addattr', 'delattr', 'setattr', 'version',
|
||||
)
|
||||
|
||||
def get_json_options(self):
|
||||
"""
|
||||
Get only options we want exported to JSON
|
||||
"""
|
||||
for option in self.get_options():
|
||||
if option.name not in self.json_only_presence_options:
|
||||
yield option
|
||||
else:
|
||||
yield { 'name': option.name }
|
||||
|
||||
def __json__(self):
|
||||
json_dict = dict(
|
||||
(a, getattr(self, a)) for a in self.json_friendly_attributes
|
||||
)
|
||||
|
||||
json_dict['takes_options'] = list(self.get_json_options())
|
||||
json_dict['takes_args'] = list(self.get_args())
|
||||
json_dict['takes_options'] = list(self.get_options())
|
||||
|
||||
return json_dict
|
||||
|
||||
@@ -1206,6 +1192,20 @@ class Object(HasParam):
|
||||
return 1
|
||||
return 2
|
||||
|
||||
json_friendly_attributes = (
|
||||
'name', 'takes_params',
|
||||
)
|
||||
|
||||
def __json__(self):
|
||||
json_dict = dict(
|
||||
(a, json_serialize(getattr(self, a)))
|
||||
for a in self.json_friendly_attributes
|
||||
)
|
||||
if self.primary_key:
|
||||
json_dict['primary_key'] = self.primary_key.name
|
||||
json_dict['methods'] = [m for m in self.methods]
|
||||
return json_dict
|
||||
|
||||
|
||||
class Attribute(Plugin):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user