summaryrefslogtreecommitdiffstats
path: root/ipa-python
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2007-12-07 17:38:15 -0500
committerSimo Sorce <ssorce@redhat.com>2007-12-07 17:38:15 -0500
commit0b51e326996dd6a01fdca8a0b5a5160ca03c660b (patch)
tree157119af9167d60cda95ba565355159d043c0a6d /ipa-python
parent11559e9a69e2131dc620ca7de7af8544e23cbb46 (diff)
parentb3fa02225a8cf58c6283d122d5a48cad506d2660 (diff)
downloadfreeipa.git-0b51e326996dd6a01fdca8a0b5a5160ca03c660b.tar.gz
freeipa.git-0b51e326996dd6a01fdca8a0b5a5160ca03c660b.tar.xz
freeipa.git-0b51e326996dd6a01fdca8a0b5a5160ca03c660b.zip
merge from upstream
Diffstat (limited to 'ipa-python')
-rw-r--r--ipa-python/ipaclient.py17
-rw-r--r--ipa-python/ipaerror.py5
-rw-r--r--ipa-python/ipautil.py16
-rw-r--r--ipa-python/rpcclient.py18
4 files changed, 44 insertions, 12 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py
index c551f043..426f6681 100644
--- a/ipa-python/ipaclient.py
+++ b/ipa-python/ipaclient.py
@@ -116,9 +116,6 @@ class IPAClient:
user_dict = user.toDict()
- # dn is set on the server-side
- del user_dict['dn']
-
# convert to a regular dict before sending
result = self.transport.add_user(user_dict, user_container)
return result
@@ -385,6 +382,20 @@ class IPAClient:
def add_service_principal(self, princ_name):
return self.transport.add_service_principal(princ_name)
+ def find_service_principal(self, criteria, sattrs=None, searchlimit=0, timelimit=-1):
+ """Return a list: counter followed by a Entity object for each host that
+ matches the criteria. If the results are truncated, counter will
+ be set to -1"""
+ result = self.transport.find_service_principal(criteria, sattrs, searchlimit, timelimit)
+ counter = result[0]
+
+ hosts = [counter]
+ for attrs in result[1:]:
+ if attrs is not None:
+ hosts.append(entity.Entity(attrs))
+
+ return hosts
+
def get_keytab(self, princ_name):
return self.transport.get_keytab(princ_name)
diff --git a/ipa-python/ipaerror.py b/ipa-python/ipaerror.py
index 2f9a9836..e3496336 100644
--- a/ipa-python/ipaerror.py
+++ b/ipa-python/ipaerror.py
@@ -177,3 +177,8 @@ CONFIG_DEFAULT_GROUP = gen_error_code(
CONFIGURATION_CATEGORY,
0x0002,
"You cannot remove the default users group.")
+
+CONFIG_INVALID_OC = gen_error_code(
+ CONFIGURATION_CATEGORY,
+ 0x0003,
+ "Invalid object class.")
diff --git a/ipa-python/ipautil.py b/ipa-python/ipautil.py
index 9b8412d2..2dc9b0c9 100644
--- a/ipa-python/ipautil.py
+++ b/ipa-python/ipautil.py
@@ -27,9 +27,7 @@ from random import Random
from time import gmtime
import os
import stat
-import socket
-from string import lower
import re
import xmlrpclib
import datetime
@@ -79,7 +77,7 @@ def run(args, stdin=None):
logging.info(stderr)
if p.returncode != 0:
- raise self.CalledProcessError(p.returncode, ' '.join(args))
+ raise CalledProcessError(p.returncode, ' '.join(args))
def file_exists(filename):
try:
@@ -118,24 +116,24 @@ class CIDict(dict):
self.update(default or {})
def __getitem__(self,key):
- return super(CIDict,self).__getitem__(lower(key))
+ return super(CIDict,self).__getitem__(string.lower(key))
def __setitem__(self,key,value):
- lower_key = lower(key)
+ lower_key = string.lower(key)
self._keys[lower_key] = key
- return super(CIDict,self).__setitem__(lower(key),value)
+ return super(CIDict,self).__setitem__(string.lower(key),value)
def __delitem__(self,key):
- lower_key = lower(key)
+ lower_key = string.lower(key)
del self._keys[lower_key]
- return super(CIDict,self).__delitem__(lower(key))
+ return super(CIDict,self).__delitem__(string.lower(key))
def update(self,dict):
for key in dict.keys():
self[key] = dict[key]
def has_key(self,key):
- return super(CIDict, self).has_key(lower(key))
+ return super(CIDict, self).has_key(string.lower(key))
def get(self,key,failobj=None):
try:
diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py
index d7ff9740..de32e9be 100644
--- a/ipa-python/rpcclient.py
+++ b/ipa-python/rpcclient.py
@@ -703,6 +703,24 @@ class RPCClient:
return ipautil.unwrap_binary_data(result)
+ def find_service_principal (self, criteria, sattrs=None, searchlimit=0, timelimit=-1):
+ """Return a list: counter followed by a Entity object for each host that
+ matches the criteria. If the results are truncated, counter will
+ be set to -1"""
+
+ server = self.setup_server()
+ try:
+ # None values are not allowed in XML-RPC
+ if sattrs is None:
+ sattrs = "__NONE__"
+ result = server.find_service_principal(criteria, sattrs, searchlimit, timelimit)
+ except xmlrpclib.Fault, fault:
+ raise ipaerror.gen_exception(fault.faultCode, fault.faultString)
+ except socket.error, (value, msg):
+ raise xmlrpclib.Fault(value, msg)
+
+ return ipautil.unwrap_binary_data(result)
+
def get_keytab(self, princ_name):
server = self.setup_server()