On 12/02/2014 04:14 PM, Jan Cholasta wrote:
> Hi,
>
> Dne 2.12.2014 v 15:43 Tomas Babej napsal(a):
>> Hi,
>>
>> Makes ipaassignedidview a default attribute and takes care about the
>> conversion from the DN to the proper ID view name.
>>
>> https://fedorahosted.org/freeipa/ticket/4774
>
> Since you are converting the value from DN to primary key string, the
> type of the ipassignedview param should be changed to Str, for
> consistency with existing code.
>
> Honza
>

I see. Actually during the development, I craved for simple
output_normalizer option in the Param itself, which would apply the
output normalization funtion after the post_callback,
instead of having to mangle the entry_attrs in the post callback of each
command (and could potentionally apply on the client). Would there a be
not-so-hard way to do this in the framework? My understanding is that
Output classes are quite decoupled from the Params they resulted from,
and at the point we're printing the information via the textui, we're no
longer aware what Param instance it originated from.

Updated patch attached.

-- 
Tomas Babej
Associate Software Engineer | Red Hat | Identity Management
RHCE | Brno Site | IRC: tbabej | freeipa.org 

>From c51fb6b2086678cdc931b01bf263d3ca4e814414 Mon Sep 17 00:00:00 2001
From: Tomas Babej <[email protected]>
Date: Tue, 2 Dec 2014 15:40:40 +0100
Subject: [PATCH] hosts: Display assigned ID view by default in host-find and
 show commands

Makes ipaassignedidview a default attribute and takes care about the
conversion from the DN to the proper ID view name.

https://fedorahosted.org/freeipa/ticket/4774
---
 API.txt                |  6 +++---
 VERSION                |  4 ++--
 ipalib/plugins/host.py | 21 ++++++++++++++++++---
 3 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/API.txt b/API.txt
index 2a63f1e2349f0df69433fa7cb742e269cd42d79f..dcb655d87f0495b65b8d743ab477d59ad1963b36 100644
--- a/API.txt
+++ b/API.txt
@@ -1793,7 +1793,7 @@ option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui
 option: Str('description', attribute=True, cli_name='desc', multivalue=False, required=False)
 option: Flag('force', autofill=True, default=False)
 option: Str('ip_address?')
-option: DNParam('ipaassignedidview', attribute=True, cli_name='ipaassignedidview', multivalue=False, required=False)
+option: Str('ipaassignedidview', attribute=True, cli_name='ipaassignedidview', multivalue=False, required=False)
 option: Bool('ipakrbokasdelegate', attribute=False, cli_name='ok_as_delegate', multivalue=False, required=False)
 option: Bool('ipakrbrequirespreauth', attribute=False, cli_name='requires_pre_auth', multivalue=False, required=False)
 option: Str('ipasshpubkey', attribute=True, cli_name='sshpubkey', csv=True, multivalue=True, required=False)
@@ -1901,7 +1901,7 @@ option: Str('in_hostgroup*', cli_name='in_hostgroups', csv=True)
 option: Str('in_netgroup*', cli_name='in_netgroups', csv=True)
 option: Str('in_role*', cli_name='in_roles', csv=True)
 option: Str('in_sudorule*', cli_name='in_sudorules', csv=True)
-option: DNParam('ipaassignedidview', attribute=True, autofill=False, cli_name='ipaassignedidview', multivalue=False, query=True, required=False)
+option: Str('ipaassignedidview', attribute=True, autofill=False, cli_name='ipaassignedidview', multivalue=False, query=True, required=False)
 option: Str('l', attribute=True, autofill=False, cli_name='locality', multivalue=False, query=True, required=False)
 option: Str('macaddress', attribute=True, autofill=False, cli_name='macaddress', csv=True, multivalue=True, pattern='^([a-fA-F0-9]{2}[:|\\-]?){5}[a-fA-F0-9]{2}$', query=True, required=False)
 option: Str('man_by_host*', cli_name='man_by_hosts', csv=True)
@@ -1937,7 +1937,7 @@ option: Str('addattr*', cli_name='addattr', exclude='webui')
 option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui')
 option: Str('delattr*', cli_name='delattr', exclude='webui')
 option: Str('description', attribute=True, autofill=False, cli_name='desc', multivalue=False, required=False)
-option: DNParam('ipaassignedidview', attribute=True, autofill=False, cli_name='ipaassignedidview', multivalue=False, required=False)
+option: Str('ipaassignedidview', attribute=True, autofill=False, cli_name='ipaassignedidview', multivalue=False, required=False)
 option: Bool('ipakrbokasdelegate', attribute=False, autofill=False, cli_name='ok_as_delegate', multivalue=False, required=False)
 option: Bool('ipakrbrequirespreauth', attribute=False, autofill=False, cli_name='requires_pre_auth', multivalue=False, required=False)
 option: Str('ipasshpubkey', attribute=True, autofill=False, cli_name='sshpubkey', csv=True, multivalue=True, required=False)
diff --git a/VERSION b/VERSION
index bae782a4ec4333f8fdb610465a7b9ea3877c990e..5b426ddf1a3b7f9e6b202fd7d9f6b6025acc0370 100644
--- a/VERSION
+++ b/VERSION
@@ -90,5 +90,5 @@ IPA_DATA_VERSION=20100614120000
 #                                                      #
 ########################################################
 IPA_API_VERSION_MAJOR=2
-IPA_API_VERSION_MINOR=109
-# Last change: npmccallum - display qrcode by default
+IPA_API_VERSION_MINOR=110
+# Last change: tbabej - change ipaassignedidview to Str
diff --git a/ipalib/plugins/host.py b/ipalib/plugins/host.py
index c4d4bdf6473e0f34c8c68754d6c98e93d173d8fa..32bf41c7d5c5401c2069dc791e6cd99ce70b91e5 100644
--- a/ipalib/plugins/host.py
+++ b/ipalib/plugins/host.py
@@ -22,7 +22,7 @@ from nss.error import NSPRError
 import string
 
 from ipalib import api, errors, util
-from ipalib import Str, Flag, Bytes, DNParam
+from ipalib import Str, Flag, Bytes
 from ipalib.plugable import Registry
 from ipalib.plugins.baseldap import (LDAPQuery, LDAPObject, LDAPCreate,
                                      LDAPDelete, LDAPUpdate, LDAPSearch,
@@ -162,6 +162,17 @@ def update_sshfp_record(zone, record, entry_attrs):
     except errors.EmptyModlist:
         pass
 
+
+def convert_ipaassignedidview_post(entry_attrs, options):
+    """
+    Converts the ID View DN to its name for the better looking output.
+    """
+
+    if 'ipaassignedidview' in entry_attrs and not options.get('raw'):
+        idview_name = entry_attrs.single_value['ipaassignedidview'][0].value
+        entry_attrs.single_value['ipaassignedidview'] = idview_name
+
+
 host_output_params = (
     Flag('has_keytab',
         label=_('Keytab'),
@@ -274,7 +285,7 @@ class host(LDAPObject):
         'fqdn', 'description', 'l', 'nshostlocation', 'krbprincipalname',
         'nshardwareplatform', 'nsosversion', 'usercertificate', 'memberof',
         'managedby', 'memberindirect', 'memberofindirect', 'macaddress',
-        'userclass', 'ipaallowedtoperform'
+        'userclass', 'ipaallowedtoperform', 'ipaassignedidview',
     ]
     uuid_attribute = 'ipauniqueid'
     attribute_members = {
@@ -501,7 +512,8 @@ class host(LDAPObject):
             doc=_('Host category (semantics placed on this attribute are for '
                   'local interpretation)'),
         ),
-        DNParam('ipaassignedidview?',
+        Str('ipaassignedidview?',
+            label=_('Assigned ID View'),
             flags=['no_option'],
         ),
     ) + ticket_flags_params
@@ -937,6 +949,7 @@ class host_mod(LDAPUpdate):
         self.obj.suppress_netgroup_memberof(ldap, entry_attrs)
 
         convert_sshpubkey_post(ldap, dn, entry_attrs)
+        convert_ipaassignedidview_post(entry_attrs, options)
 
         return dn
 
@@ -1023,6 +1036,7 @@ class host_find(LDAPSearch):
                 entry_attrs['managing'] = self.obj.get_managed_hosts(entry_attrs.dn)
 
             convert_sshpubkey_post(ldap, entry_attrs.dn, entry_attrs)
+            convert_ipaassignedidview_post(entry_attrs, options)
 
         return truncated
 
@@ -1058,6 +1072,7 @@ class host_show(LDAPRetrieve):
         self.obj.suppress_netgroup_memberof(ldap, entry_attrs)
 
         convert_sshpubkey_post(ldap, dn, entry_attrs)
+        convert_ipaassignedidview_post(entry_attrs, options)
 
         return dn
 
-- 
1.9.3

_______________________________________________
Freeipa-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to