From df5f4ee81d1aff1122dd92ab1b56eb335294c3a7 Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Tue, 10 Sep 2013 10:20:24 +0000 Subject: Turn LDAPEntry.single_value into a dictionary-like property. This change makes single_value consistent with the raw property. https://fedorahosted.org/freeipa/ticket/3521 --- ipaserver/install/adtrustinstance.py | 18 ++++---- ipaserver/install/dsinstance.py | 2 +- ipaserver/install/ipa_backup.py | 2 +- ipaserver/install/ipa_restore.py | 8 ++-- ipaserver/install/ipa_server_certinstall.py | 2 +- ipaserver/install/krbinstance.py | 2 +- ipaserver/install/ldapupdate.py | 4 +- .../install/plugins/fix_replica_agreements.py | 4 +- ipaserver/install/replication.py | 50 +++++++++++----------- 9 files changed, 45 insertions(+), 47 deletions(-) (limited to 'ipaserver') diff --git a/ipaserver/install/adtrustinstance.py b/ipaserver/install/adtrustinstance.py index 6a1ede0d7..5e3d0acbb 100644 --- a/ipaserver/install/adtrustinstance.py +++ b/ipaserver/install/adtrustinstance.py @@ -201,7 +201,7 @@ class ADTRUSTInstance(service.Service): self.print_msg("Samba domain object not found") return - dom_sid = dom_entry.single_value(self.ATTR_SID, None) + dom_sid = dom_entry.single_value.get(self.ATTR_SID) if not dom_sid: self.print_msg("Samba domain object does not have a SID") return @@ -218,7 +218,7 @@ class ADTRUSTInstance(service.Service): self.print_msg("IPA admin group object not found") return - if admin_entry.single_value(self.ATTR_SID, None): + if admin_entry.single_value.get(self.ATTR_SID): self.print_msg("Admin SID already set, nothing to do") else: try: @@ -228,7 +228,7 @@ class ADTRUSTInstance(service.Service): except: self.print_msg("Failed to modify IPA admin object") - if admin_group_entry.single_value(self.ATTR_SID, None): + if admin_group_entry.single_value.get(self.ATTR_SID): self.print_msg("Admin group SID already set, nothing to do") else: try: @@ -259,7 +259,7 @@ class ADTRUSTInstance(service.Service): self.print_msg("Samba domain object not found") return - if dom_entry.single_value(self.ATTR_FALLBACK_GROUP, None): + if dom_entry.single_value.get(self.ATTR_FALLBACK_GROUP): self.print_msg("Fallback group already set, nothing to do") return @@ -303,8 +303,8 @@ class ADTRUSTInstance(service.Service): # Filter out ranges where RID base is already set no_rid_base_set = lambda r: not any(( - r.single_value('ipaBaseRID', None), - r.single_value('ipaSecondaryBaseRID', None))) + r.single_value.get('ipaBaseRID'), + r.single_value.get('ipaSecondaryBaseRID'))) ranges_with_no_rid_base = filter(no_rid_base_set, ranges) @@ -321,7 +321,7 @@ class ADTRUSTInstance(service.Service): # Abort if RID bases are too close local_range = ranges_with_no_rid_base[0] - size = local_range.single_value('ipaIDRangeSize', None) + size = local_range.single_value.get('ipaIDRangeSize') if abs(self.rid_base - self.secondary_rid_base) > size: self.print_msg("Primary and secondary RID base are too close. " @@ -699,7 +699,7 @@ class ADTRUSTInstance(service.Service): if len(res) > 1: # there are other CIFS services defined, we are not alone for entry in res: - managedBy = entry.single_value('managedBy', None) + managedBy = entry.single_value.get('managedBy') if managedBy: fqdn = DN(managedBy)['fqdn'] if fqdn != unicode(self.fqdn): @@ -810,7 +810,7 @@ class ADTRUSTInstance(service.Service): raise ValueError("No local ID range and no admins group found.\n" \ "Add local ID range manually and try again!") - base_id = int(entry.single_value('gidNumber')) + base_id = int(entry.single_value['gidNumber']) id_range_size = 200000 id_filter = "(&" \ diff --git a/ipaserver/install/dsinstance.py b/ipaserver/install/dsinstance.py index 285159ef9..9c2720499 100644 --- a/ipaserver/install/dsinstance.py +++ b/ipaserver/install/dsinstance.py @@ -894,7 +894,7 @@ class DsInstance(service.Service): dn = DN(('cn', 'default'), ('ou', 'profile'), self.suffix) try: entry = self.admin_conn.get_entry(dn) - srvlist = entry.single_value('defaultServerList', '') + srvlist = entry.single_value.get('defaultServerList', '') srvlist = srvlist.split() if not self.fqdn in srvlist: srvlist.append(self.fqdn) diff --git a/ipaserver/install/ipa_backup.py b/ipaserver/install/ipa_backup.py index 12c62154e..32272794a 100644 --- a/ipaserver/install/ipa_backup.py +++ b/ipaserver/install/ipa_backup.py @@ -504,7 +504,7 @@ class Backup(admintool.AdminTool): self.log.error("Failed to read services from '%s': %s" % (conn.host, e)) else: - services_cns = [s.single_value('cn') for s in services] + services_cns = [s.single_value['cn'] for s in services] config.set('ipa', 'services', ','.join(services_cns)) with open(self.header, 'w') as fd: diff --git a/ipaserver/install/ipa_restore.py b/ipaserver/install/ipa_restore.py index 821137160..8443dee48 100644 --- a/ipaserver/install/ipa_restore.py +++ b/ipaserver/install/ipa_restore.py @@ -349,7 +349,7 @@ class Restore(admintool.AdminTool): raise admintool.ScriptError( "Failed to read master data: %s" % e) else: - masters = [ent.single_value('cn') for ent in entries] + masters = [ent.single_value['cn'] for ent in entries] for master in masters: if master == api.env.host: @@ -368,10 +368,10 @@ class Restore(admintool.AdminTool): except errors.NotFound: continue - services_cns = [s.single_value('cn') for s in services] + services_cns = [s.single_value['cn'] for s in services] host_entries = repl.find_ipa_replication_agreements() - hosts = [rep.single_value('nsds5replicahost', None) + hosts = [rep.single_value.get('nsds5replicahost') for rep in host_entries] for host in hosts: @@ -386,7 +386,7 @@ class Restore(admintool.AdminTool): self.log.critical("Unable to disable agreement on %s: %s" % (master, e)) host_entries = repl.find_ipa_replication_agreements() - hosts = [rep.single_value('nsds5replicahost', None) + hosts = [rep.single_value.get('nsds5replicahost') for rep in host_entries] for host in hosts: self.log.info('Disabling CA replication agreement on %s to %s' % (master, host)) diff --git a/ipaserver/install/ipa_server_certinstall.py b/ipaserver/install/ipa_server_certinstall.py index 87c4eaf15..9e2ef3fc7 100644 --- a/ipaserver/install/ipa_server_certinstall.py +++ b/ipaserver/install/ipa_server_certinstall.py @@ -117,7 +117,7 @@ class ServerCertInstall(admintool.AdminTool): entry = conn.get_entry(DN(('cn', 'RSA'), ('cn', 'encryption'), ('cn', 'config')), ['nssslpersonalityssl']) - old_cert = entry.single_value('nssslpersonalityssl') + old_cert = entry.single_value['nssslpersonalityssl'] server_cert = self.import_cert(dirname, self.options.pin, old_cert, 'ldap/%s' % api.env.host, diff --git a/ipaserver/install/krbinstance.py b/ipaserver/install/krbinstance.py index cd39b8270..af37d05fe 100644 --- a/ipaserver/install/krbinstance.py +++ b/ipaserver/install/krbinstance.py @@ -365,7 +365,7 @@ class KrbInstance(service.Service): raise e krbMKey = pyasn1.codec.ber.decoder.decode( - entry.single_value('krbmkey', None)) + entry.single_value.get('krbmkey')) keytype = int(krbMKey[0][1][0]) keydata = str(krbMKey[0][1][1]) diff --git a/ipaserver/install/ldapupdate.py b/ipaserver/install/ldapupdate.py index 34dd3a5e1..9140231ce 100644 --- a/ipaserver/install/ldapupdate.py +++ b/ipaserver/install/ldapupdate.py @@ -482,7 +482,7 @@ class LDAPUpdate: self.error("Task lookup failure %s", e) return - status = entry.single_value('nstaskstatus', None) + status = entry.single_value.get('nstaskstatus') if status is None: # task doesn't have a status yet time.sleep(1) @@ -842,7 +842,7 @@ class LDAPUpdate: if entry.dn.endswith(DN(('cn', 'index'), ('cn', 'userRoot'), ('cn', 'ldbm database'), ('cn', 'plugins'), ('cn', 'config'))) and (added or updated): - taskid = self.create_index_task(entry.single_value('cn')) + taskid = self.create_index_task(entry.single_value['cn']) self.monitor_index_task(taskid) return diff --git a/ipaserver/install/plugins/fix_replica_agreements.py b/ipaserver/install/plugins/fix_replica_agreements.py index 4f6569249..bfd6356bf 100644 --- a/ipaserver/install/plugins/fix_replica_agreements.py +++ b/ipaserver/install/plugins/fix_replica_agreements.py @@ -52,7 +52,7 @@ class update_replica_attribute_lists(PreUpdate): self.log.debug("Found %d agreement(s)", len(ipa_replicas)) for replica in ipa_replicas: - self.log.debug(replica.single_value('description', None)) + self.log.debug(replica.single_value.get('description')) self._update_attr(repl, replica, 'nsDS5ReplicatedAttributeList', @@ -81,7 +81,7 @@ class update_replica_attribute_lists(PreUpdate): :param values: List of values the attribute should hold :param template: Template to use when adding attribute """ - attrlist = replica.single_value(attribute, None) + attrlist = replica.single_value.get(attribute) if attrlist is None: self.log.debug("Adding %s", attribute) diff --git a/ipaserver/install/replication.py b/ipaserver/install/replication.py index 4d8a4687e..1562382e1 100644 --- a/ipaserver/install/replication.py +++ b/ipaserver/install/replication.py @@ -104,7 +104,7 @@ def enable_replication_version_checking(hostname, realm, dirman_passwd): entry = conn.get_entry(DN(('cn', 'IPA Version Replication'), ('cn', 'plugins'), ('cn', 'config'))) - if entry.single_value('nsslapd-pluginenabled', None) == 'off': + if entry.single_value.get('nsslapd-pluginenabled') == 'off': conn.modify_s(entry.dn, [(ldap.MOD_REPLACE, 'nsslapd-pluginenabled', 'on')]) conn.unbind() serverid = "-".join(realm.split(".")) @@ -126,8 +126,8 @@ def wait_for_task(conn, dn): 'nsTaskTotalItems'] while True: entry = conn.get_entry(dn, attrlist) - if entry.single_value('nsTaskExitCode', None): - exit_code = int(entry.single_value('nsTaskExitCode')) + if entry.single_value.get('nsTaskExitCode'): + exit_code = int(entry.single_value['nsTaskExitCode']) break time.sleep(1) return exit_code @@ -224,8 +224,8 @@ class ReplicationManager(object): except errors.NotFound: pass else: - if replica.single_value('nsDS5ReplicaId', None): - return int(replica.single_value('nsDS5ReplicaId')) + if replica.single_value.get('nsDS5ReplicaId'): + return int(replica.single_value['nsDS5ReplicaId']) # Ok, either the entry doesn't exist or the attribute isn't set # so get it from the other master @@ -237,12 +237,12 @@ class ReplicationManager(object): root_logger.debug("Unable to retrieve nsDS5ReplicaId from remote server") raise else: - if replica.single_value('nsDS5ReplicaId', None) is None: + if replica.single_value.get('nsDS5ReplicaId') is None: root_logger.debug("Unable to retrieve nsDS5ReplicaId from remote server") raise RuntimeError("Unable to retrieve nsDS5ReplicaId from remote server") # Now update the value on the master - retval = int(replica.single_value('nsDS5ReplicaId')) + retval = int(replica.single_value['nsDS5ReplicaId']) mod = [(ldap.MOD_REPLACE, 'nsDS5ReplicaId', str(retval + 1))] try: @@ -421,7 +421,7 @@ class ReplicationManager(object): ('cn', 'config'), ('cn', 'ldbm database'), ('cn', 'plugins'), ('cn', 'config')), ['nsslapd-directory']) - dbdir = os.path.dirname(ent.single_value('nsslapd-directory', None)) + dbdir = os.path.dirname(ent.single_value.get('nsslapd-directory')) entry = conn.make_entry( DN(('cn', 'changelog5'), ('cn', 'config')), @@ -501,7 +501,7 @@ class ReplicationManager(object): DN(('cn', 'Multimaster Replication Plugin'), ('cn', 'plugins'), ('cn', 'config')), ['nsslapd-pluginPath']) - path = plgent.single_value('nsslapd-pluginPath', None) + path = plgent.single_value.get('nsslapd-pluginPath') mod = [(ldap.MOD_REPLACE, 'nsslapd-state', 'backend'), (ldap.MOD_ADD, 'nsslapd-backend', bename), @@ -802,10 +802,9 @@ class ReplicationManager(object): print "Error reading status from agreement", agmtdn hasError = 1 else: - refresh = entry.single_value('nsds5BeginReplicaRefresh', None) - inprogress = entry.single_value('nsds5replicaUpdateInProgress', - None) - status = entry.single_value('nsds5ReplicaLastInitStatus', None) + refresh = entry.single_value.get('nsds5BeginReplicaRefresh') + inprogress = entry.single_value.get('nsds5replicaUpdateInProgress') + status = entry.single_value.get('nsds5ReplicaLastInitStatus') if not refresh: # done - check status if not status: print "No status yet" @@ -843,15 +842,14 @@ class ReplicationManager(object): print "Error reading status from agreement", agmtdn hasError = 1 else: - inprogress = entry.single_value('nsds5replicaUpdateInProgress', - None) - status = entry.single_value('nsds5ReplicaLastUpdateStatus', None) + inprogress = entry.single_value.get('nsds5replicaUpdateInProgress') + status = entry.single_value.get('nsds5ReplicaLastUpdateStatus') try: - start = int(entry.single_value('nsds5ReplicaLastUpdateStart')) + start = int(entry.single_value['nsds5ReplicaLastUpdateStart']) except (ValueError, TypeError, KeyError): start = 0 try: - end = int(entry.single_value('nsds5ReplicaLastUpdateEnd')) + end = int(entry.single_value['nsds5ReplicaLastUpdateEnd']) except (ValueError, TypeError, KeyError): end = 0 # incremental update is done if inprogress is false and end >= start @@ -1095,7 +1093,7 @@ class ReplicationManager(object): root_logger.error("Using the first one only (%s)" % entries[0].dn) dn = entries[0].dn - schedule = entries[0].single_value('nsds5replicaupdateschedule', None) + schedule = entries[0].single_value.get('nsds5replicaupdateschedule') # On the remote chance of a match. We force a synch to happen right # now by setting the schedule to something and quickly removing it. @@ -1215,7 +1213,7 @@ class ReplicationManager(object): try: dn = DN(('cn', 'default'), ('ou', 'profile'), self.suffix) ret = self.conn.get_entry(dn) - srvlist = ret.single_value('defaultServerList', '') + srvlist = ret.single_value.get('defaultServerList', '') srvlist = srvlist[0].split() if replica in srvlist: srvlist.remove(replica) @@ -1321,15 +1319,15 @@ class ReplicationManager(object): """ entry = self.conn.get_entry(DNA_DN) - nextvalue = int(entry.single_value("dnaNextValue", 0)) - maxvalue = int(entry.single_value("dnaMaxValue", 0)) + nextvalue = int(entry.single_value.get("dnaNextValue", 0)) + maxvalue = int(entry.single_value.get("dnaMaxValue", 0)) - sharedcfgdn = entry.single_value("dnaSharedCfgDN", None) + sharedcfgdn = entry.single_value.get("dnaSharedCfgDN") if sharedcfgdn is not None: sharedcfgdn = DN(sharedcfgdn) shared_entry = self.conn.get_entry(sharedcfgdn) - remaining = int(shared_entry.single_value("dnaRemainingValues", 0)) + remaining = int(shared_entry.single_value.get("dnaRemainingValues", 0)) else: remaining = 0 @@ -1352,7 +1350,7 @@ class ReplicationManager(object): """ entry = self.conn.get_entry(DNA_DN) - range = entry.single_value("dnaNextRange", None) + range = entry.single_value.get("dnaNextRange") if range is None: return (None, None) @@ -1378,7 +1376,7 @@ class ReplicationManager(object): """ entry = self.conn.get_entry(DNA_DN) - range = entry.single_value("dnaNextRange", None) + range = entry.single_value.get("dnaNextRange") if range is not None and next_start != 0 and next_max != 0: return False -- cgit