diff options
author | Karl MacMillan <kmacmill@redhat.com> | 2007-12-11 12:42:13 -0500 |
---|---|---|
committer | Karl MacMillan <kmacmill@redhat.com> | 2007-12-11 12:42:13 -0500 |
commit | d2378f13d0ce867175952346302d42c7a9a9fb2b (patch) | |
tree | adbff5e6e1715f855d08aea20e995c188dcdc248 /ipa-python | |
parent | d53915954e68ad2fa1625ed016e7e65cd6f4e4e0 (diff) | |
parent | b75d735b7e15198fbc0e7baad582696a97f0d5ec (diff) | |
download | freeipa-d2378f13d0ce867175952346302d42c7a9a9fb2b.tar.gz freeipa-d2378f13d0ce867175952346302d42c7a9a9fb2b.tar.xz freeipa-d2378f13d0ce867175952346302d42c7a9a9fb2b.zip |
Merge.
Diffstat (limited to 'ipa-python')
-rw-r--r-- | ipa-python/ipaclient.py | 17 | ||||
-rw-r--r-- | ipa-python/ipaerror.py | 5 | ||||
-rw-r--r-- | ipa-python/ipautil.py | 32 | ||||
-rw-r--r-- | ipa-python/rpcclient.py | 18 |
4 files changed, 49 insertions, 23 deletions
diff --git a/ipa-python/ipaclient.py b/ipa-python/ipaclient.py index 168f01d38..d815afa7b 100644 --- a/ipa-python/ipaclient.py +++ b/ipa-python/ipaclient.py @@ -117,9 +117,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 @@ -386,6 +383,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 2f9a98363..e34963365 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 e98aa4c6e..ffe75a90b 100644 --- a/ipa-python/ipautil.py +++ b/ipa-python/ipautil.py @@ -25,14 +25,11 @@ import logging import subprocess from random import Random from time import gmtime -import os +import os, sys, traceback, readline import stat -import socket -import readline -import traceback + from types import * -from string import lower import re import xmlrpclib import datetime @@ -82,7 +79,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: @@ -121,24 +118,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: @@ -373,7 +370,7 @@ def format_list(items, quote=None, page_width=80): ''' left_quote = right_quote = '' num_items = len(items) - if not num_items: return text + if not num_items: return "" if quote is not None: if type(quote) in StringTypes: @@ -458,7 +455,7 @@ def read_pairs_file(filename): fd = open(filename) text = fd.read() text = comment_re.sub('', text) # kill comments - pairs = ipautil.parse_key_value_pairs(text) + pairs = parse_key_value_pairs(text) if fd != sys.stdin: fd.close() return pairs @@ -470,7 +467,7 @@ def read_items_file(filename): fd = open(filename) text = fd.read() text = comment_re.sub('', text) # kill comments - items = ipautil.parse_items(text) + items = parse_items(text) if fd != sys.stdin: fd.close() return items @@ -568,11 +565,6 @@ class AttributeValueCompleter: readline.set_completer_delims(self.prev_completer_delims) readline.set_completer(self.prev_completer) - def _debug(self): - print >> output_fd, "lhs='%s' lhs_complete=%s operator='%s' operator_complete=%s rhs='%s'" % \ - (self.lhs, self.lhs_complete, self.operator, self.operator_complete, self.rhs) - - def parse_input(self): '''We are looking for 3 tokens: <lhs,op,rhs> Extract as much of each token as possible. diff --git a/ipa-python/rpcclient.py b/ipa-python/rpcclient.py index 6f039f9fa..5656b99d9 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() |