summaryrefslogtreecommitdiffstats
path: root/ipaserver/plugins/trust.py
diff options
context:
space:
mode:
authorMartin Babinsky <mbabinsk@redhat.com>2016-07-15 12:38:00 +0200
committerJan Cholasta <jcholast@redhat.com>2016-07-21 13:01:02 +0200
commit2234a774416309a44aecb84f27e6cf4c6a1a990f (patch)
treec56b42e40b019bc36971125b0e5f5a70a73f67c2 /ipaserver/plugins/trust.py
parent66da08445370f7024a6a529a6659714c33b7525e (diff)
downloadfreeipa-2234a774416309a44aecb84f27e6cf4c6a1a990f.tar.gz
freeipa-2234a774416309a44aecb84f27e6cf4c6a1a990f.tar.xz
freeipa-2234a774416309a44aecb84f27e6cf4c6a1a990f.zip
trust-add: handle `--all/--raw` options properly
`trust-add` command did not handle these options correctly often resulting in internal errors or mangled output. This patch implements a behavior which is more in-line with the rest of the API commands. https://fedorahosted.org/freeipa/ticket/6059 Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipaserver/plugins/trust.py')
-rw-r--r--ipaserver/plugins/trust.py41
1 files changed, 27 insertions, 14 deletions
diff --git a/ipaserver/plugins/trust.py b/ipaserver/plugins/trust.py
index d4676bd57..f2e0b1ee4 100644
--- a/ipaserver/plugins/trust.py
+++ b/ipaserver/plugins/trust.py
@@ -710,6 +710,25 @@ sides.
msg_summary = _('Added Active Directory trust for realm "%(value)s"')
msg_summary_existing = _('Re-established trust to domain "%(value)s"')
+ def _format_trust_attrs(self, result, **options):
+
+ # Format the output into human-readable values
+ attributes = int(result['result'].get('ipanttrustattributes', [0])[0])
+
+ if not options.get('raw', False):
+ result['result']['trusttype'] = [trust_type_string(
+ result['result']['ipanttrusttype'][0], attributes)]
+ result['result']['trustdirection'] = [trust_direction_string(
+ result['result']['ipanttrustdirection'][0])]
+ result['result']['truststatus'] = [trust_status_string(
+ result['verified'])]
+
+ if attributes:
+ result['result'].pop('ipanttrustattributes', None)
+
+ result['result'].pop('ipanttrustauthoutgoing', None)
+ result['result'].pop('ipanttrustauthincoming', None)
+
def execute(self, *keys, **options):
ldap = self.obj.backend
@@ -729,10 +748,15 @@ sides.
else:
created_range_type = old_range['result']['iparangetype'][0]
+ attrs_list = self.obj.default_attributes
+ if options.get('all', False):
+ attrs_list.append('*')
+
trust_filter = "cn=%s" % result['value']
(trusts, truncated) = ldap.find_entries(
base_dn=DN(self.api.env.container_trusts, self.api.env.basedn),
- filter=trust_filter)
+ filter=trust_filter,
+ attrs_list=attrs_list)
result['result'] = entry_to_dict(trusts[0], **options)
@@ -761,20 +785,9 @@ sides.
# add_new_domains_from_trust() on its own.
fetch_trusted_domains_over_dbus(self.api, self.log, result['value'])
- # Format the output into human-readable values
- attributes = int(result['result'].get('ipanttrustattributes', [0])[0])
- result['result']['trusttype'] = [trust_type_string(
- result['result']['ipanttrusttype'][0], attributes)]
- result['result']['trustdirection'] = [trust_direction_string(
- result['result']['ipanttrustdirection'][0])]
- result['result']['truststatus'] = [trust_status_string(
- result['verified'])]
- if attributes:
- result['result'].pop('ipanttrustattributes', None)
-
+ # Format the output into human-readable values unless `--raw` is given
+ self._format_trust_attrs(result, **options)
del result['verified']
- result['result'].pop('ipanttrustauthoutgoing', None)
- result['result'].pop('ipanttrustauthincoming', None)
return result