Provide list of available attributes for use in ACI UI.

Also include flag indicating whether the object is bindable. This will
be used to determine if the object can have a selfservice ACI.

ticket 446
This commit is contained in:
Rob Crittenden
2010-12-02 11:05:54 -05:00
committed by Adam Young
parent 867ac1f03d
commit 8a63315ef3
6 changed files with 26 additions and 3 deletions

View File

@@ -218,7 +218,6 @@ ipaUserObjectClasses: inetuser
ipaUserObjectClasses: posixaccount
ipaUserObjectClasses: krbprincipalaux
ipaUserObjectClasses: krbticketpolicyaux
ipaUserObjectClasses: radiusprofile
ipaUserObjectClasses: ipaobject
ipaDefaultEmailDomain: $DOMAIN
ipaMigrationEnabled: FALSE

View File

@@ -197,6 +197,8 @@ class LDAPObject(Object):
uuid_attribute = ''
attribute_members = {}
rdnattr = None
# Can bind as this entry (has userPassword or krbPrincipalKey)
bindable = False
container_not_found_msg = _('container entry (%(container)s) not found')
parent_not_found_msg = _('%(parent)s: %(oname)s not found')
@@ -293,14 +295,33 @@ class LDAPObject(Object):
'parent_object', 'container_dn', 'object_name', 'object_name_plural',
'object_class', 'object_class_config', 'default_attributes', 'label',
'hidden_attributes', 'uuid_attribute', 'attribute_members', 'name',
'takes_params', 'rdn_attribute',
'takes_params', 'rdn_attribute', 'bindable',
)
def __json__(self):
ldap = self.backend
json_dict = dict(
(a, getattr(self, a)) for a in self.json_friendly_attributes
)
if self.primary_key:
json_dict['primary_key'] = self.primary_key.name
objectclasses = self.object_class
if self.object_class_config:
config = ldap.get_ipa_config()[1]
objectclasses = config.get(
self.object_class_config, objectclasses
)
# Get list of available attributes for this object for use
# in the ACI UI.
attrs = self.api.Backend.ldap2.schema.attribute_types(objectclasses)
attrlist = []
# Go through the MUST first
for (oid, attr) in attrs[0].iteritems():
attrlist.append(attr.names[0])
# And now the MAY
for (oid, attr) in attrs[1].iteritems():
attrlist.append(attr.names[0])
json_dict['aciattrs'] = attrlist
json_dict['methods'] = [m for m in self.methods]
return json_dict

View File

@@ -165,6 +165,7 @@ class host(LDAPObject):
'memberof': ['hostgroup', 'netgroup', 'role'],
'managedby': ['host'],
}
bindable = True
label = _('Hosts')

View File

@@ -56,7 +56,7 @@ class json_metadata(Command):
((objname, json_serialize(self.api.Object[objname])), )
)
)
retval= dict([("metadata",meta), ("messages",dict())])
retval= dict([("metadata",meta)])
else:
meta=dict(

View File

@@ -237,6 +237,7 @@ class service(LDAPObject):
attribute_members = {
'managedby': ['host'],
}
bindable = True
label = _('Services')

View File

@@ -73,6 +73,7 @@ class user(LDAPObject):
'memberof': ['group', 'netgroup', 'role'],
}
rdnattr = 'uid'
bindable = True
label = _('Users')