summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-25 01:44:53 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-25 01:44:53 +0000
commit54c97b494880a3d276e2da69ffde55a3ee475616 (patch)
treeaaa9202745eba74e9950c5142d8998d0fd978642 /ipalib/frontend.py
parent426742279348765d27ad66c69bea874398ed0ef4 (diff)
downloadfreeipa-54c97b494880a3d276e2da69ffde55a3ee475616.tar.gz
freeipa-54c97b494880a3d276e2da69ffde55a3ee475616.tar.xz
freeipa-54c97b494880a3d276e2da69ffde55a3ee475616.zip
359: Added Object.primary_key instance attribute; added corresponding unit tests
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r--ipalib/frontend.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 948b047dd..40220074e 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -514,10 +514,12 @@ class Object(plugable.Plugin):
'methods',
'properties',
'params'
+ 'primary_key',
))
methods = None
properties = None
params = None
+ primary_key = None
takes_params = tuple()
def set_api(self, api):
@@ -531,6 +533,16 @@ class Object(plugable.Plugin):
self.params = plugable.NameSpace(
self.__get_params(), sort=False
)
+ pkeys = filter(lambda p: p.primary_key, self.params())
+ if len(pkeys) > 1:
+ raise ValueError(
+ '%s (Object) has multiple primary keys: %s' % (
+ self.name,
+ ', '.join(p.name for p in pkeys),
+ )
+ )
+ if len(pkeys) == 1:
+ self.primary_key = pkeys[0]
def __get_attrs(self, name):
namespace = getattr(self.api, name)