[SCM] Samba Shared Repository - branch master updated
Noel Power
npower at samba.org
Wed Dec 9 17:05:01 UTC 2020
The branch, master has been updated
via cc9ff79d86c dbcheck: err_normalise-mismatch_replace: no msg if no error
via f1be8813b01 dbcheck: fix doc for err_normalise_mismatch*
via c28a3dd6d27 dbcheck: fix doc for do_rename()
via 17fb635532d dbcheck: remove unused fix_incorrect_deleted_objects flag
via 0aec5b930d9 dbcheck: improve some duplicate doc strings
via 99cdb2191e9 dbcheck: drop py2 support from dump_attr_values()
via 713117401c8 dbcheck: don't try to stringify values list twice
via 081d12de529 dbcheck: add docstring for err_odd_userParameters
via 9fabe3aafdb dbcheck: fix documentation for err_doubled_userParameters
via c7b39f1cea0 dbcheck: fix documentation and typo for err_utf_userParameters
via fa0350374d3 dbcheck: fix documentation for err_base64_userParameters
via 3afd594273f dbcheck: fix documentation for err_duplicate_values
via 9938a9f7db3 selftest/subunit: python file modernisation
via 02c3a66cbec drs_utils: remove unused sendRemoveDsServer()
via a8d1a6c59b4 python: remove unused provision.check_install()
via e253c45c6d1 samba-tool gpo: use common attr_default
via 816dee1a132 samba-tool drs: move attr_default to common
via 2c48e90fad0 samba-tool pso uses common timestamp functions
via c8d3547c5fa samba-tool domain: move timestamp functions to common
from 14768d0d544 s4:torture:smb2: remove unused fallback defines in oplock.c
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit cc9ff79d86c64cc25c5618866c95f308204716dd
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 11:53:48 2020 +1300
dbcheck: err_normalise-mismatch_replace: no msg if no error
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
Autobuild-User(master): Noel Power <npower at samba.org>
Autobuild-Date(master): Wed Dec 9 17:04:23 UTC 2020 on sn-devel-184
commit f1be8813b01227c0c18052b622899026eb4b14d0
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 11:52:40 2020 +1300
dbcheck: fix doc for err_normalise_mismatch*
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit c28a3dd6d27e60ca84933dac41f0f696eb963b41
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 11:51:42 2020 +1300
dbcheck: fix doc for do_rename()
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 17fb635532dffb51a2237f1291d215d94e433146
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 11:19:50 2020 +1300
dbcheck: remove unused fix_incorrect_deleted_objects flag
This was introduced in db15993401f927fd2fcea1687c4155dce2272aa8
but not actually referenced then or since.
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 0aec5b930d9ca278c9045e6b58e4de2b34d8c591
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 10:15:24 2020 +1300
dbcheck: improve some duplicate doc strings
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 99cdb2191e9ab633579f4e7951c2da042529b95d
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 10:10:50 2020 +1300
dbcheck: drop py2 support from dump_attr_values()
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 713117401c85642dfa9de0772f0a9954a8b8d804
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 10:12:08 2020 +1300
dbcheck: don't try to stringify values list twice
dump_attr_values already turns it into a comma separated list.
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 081d12de529ba89e8eb3930dd3e1cbf394783394
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 12:34:52 2020 +1300
dbcheck: add docstring for err_odd_userParameters
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 9fabe3aafdb799db31cf222e186b5ac84b1ed024
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 12:34:22 2020 +1300
dbcheck: fix documentation for err_doubled_userParameters
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit c7b39f1cea0ef4b27c4897d20ca718c5eb195210
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 12:34:02 2020 +1300
dbcheck: fix documentation and typo for err_utf_userParameters
pseudo, not psudo.
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit fa0350374d3ffdf78e920361315556034730fde8
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 12:33:27 2020 +1300
dbcheck: fix documentation for err_base64_userParameters
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 3afd594273f659056f15b6e6a1a45b68824bf113
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Fri Dec 4 11:56:00 2020 +1300
dbcheck: fix documentation for err_duplicate_values
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 9938a9f7db37283a1e3d2c52e1246c573ecd649b
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 16:44:42 2020 +1300
selftest/subunit: python file modernisation
Python idioms for iterating over a line and closing it have improved,
and we should keep up.
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 02c3a66cbec2c670d809b186cacc7d075c16ec54
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 12:43:01 2020 +1300
drs_utils: remove unused sendRemoveDsServer()
The only caller of this was `samba-tool domain demote` which stopped
using it in 2015 with commit f121173cbf46fe64746d73adf40015c43d5c55fc.
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit a8d1a6c59b4e43869454a3e3528948613e9b0c61
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 12:23:45 2020 +1300
python: remove unused provision.check_install()
Unused for at last 10 years.
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit e253c45c6d1cd76da682f72a0903f01bf094c8a1
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 11:24:47 2020 +1300
samba-tool gpo: use common attr_default
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 816dee1a132e6b586de8b0123fd8e9572aff4c32
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 11:24:25 2020 +1300
samba-tool drs: move attr_default to common
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit 2c48e90fad04db6a78fc4dc1f2cb12154db7f711
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 11:20:35 2020 +1300
samba-tool pso uses common timestamp functions
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
commit c8d3547c5fa8724198541cb67b60e5c8e212a1ad
Author: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Date: Thu Nov 19 11:19:04 2020 +1300
samba-tool domain: move timestamp functions to common
Other tools use identical functions, and they too can use common.py
Signed-off-by: Douglas Bagnall <douglas.bagnall at catalyst.net.nz>
Reviewed-by: Noel Power <npower at samba.org>
-----------------------------------------------------------------------
Summary of changes:
python/samba/dbchecker.py | 55 ++++++++++++++++++--------------------
python/samba/drs_utils.py | 23 ----------------
python/samba/netcmd/common.py | 28 +++++++++++++++++++
python/samba/netcmd/domain.py | 23 +++-------------
python/samba/netcmd/drs.py | 8 +-----
python/samba/netcmd/gpo.py | 8 +-----
python/samba/netcmd/pso.py | 21 +++------------
python/samba/provision/__init__.py | 15 -----------
selftest/subunithelper.py | 16 +++--------
9 files changed, 66 insertions(+), 131 deletions(-)
Changeset truncated at 500 lines:
diff --git a/python/samba/dbchecker.py b/python/samba/dbchecker.py
index 339af01cb1b..28b56edaafb 100644
--- a/python/samba/dbchecker.py
+++ b/python/samba/dbchecker.py
@@ -35,25 +35,20 @@ from samba.auth import system_session, admin_session
from samba.netcmd import CommandError
from samba.netcmd.fsmo import get_fsmo_roleowner
-# vals is a sequence of ldb.bytes objects which are a subclass
-# of 'byte' type in python3 and just a str type in python2, to
-# display as string these need to be converted to string via (str)
-# function in python3 but that may generate a UnicodeDecode error,
-# if so use repr instead. We need to at least try to get the 'str'
-# value if possible to allow some tests which check the strings
-# outputted to pass, these tests compare attr values logged to stdout
-# against those in various results files.
def dump_attr_values(vals):
- result = ""
+ """Stringify a value list, using utf-8 if possible (which some tests
+ want), or the python bytes representation otherwise (with leading
+ 'b' and escapes like b'\x00').
+ """
+ result = []
for value in vals:
- if len(result):
- result = "," + result
try:
- result = result + str(value)
+ result.append(value.decode('utf-8'))
except UnicodeDecodeError:
- result = result + repr(value)
- return result
+ result.append(repr(value))
+ return ','.join(result)
+
class dbcheck(object):
"""check a SAM database for errors"""
@@ -102,7 +97,6 @@ class dbcheck(object):
self.fix_replmetadata_wrong_attid = False
self.fix_replmetadata_unsorted_attid = False
self.fix_deleted_deleted_objects = False
- self.fix_incorrect_deleted_objects = False
self.fix_dn = False
self.fix_base64_userparameters = False
self.fix_utf8_userparameters = False
@@ -442,7 +436,7 @@ systemFlags: -1946157056%s""" % (dn, guid_suffix),
return True
def do_rename(self, from_dn, to_rdn, to_base, controls, msg):
- '''perform a modify with optional verbose output'''
+ '''perform a rename with optional verbose output'''
if self.verbose:
self.report("""dn: %s
changeType: modrdn
@@ -486,7 +480,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Removed empty attribute %s" % attrname)
def err_normalise_mismatch(self, dn, attrname, values):
- '''fix attribute normalisation errors'''
+ '''fix attribute normalisation errors, without altering sort order'''
self.report("ERROR: Normalisation error for attribute %s in %s" % (attrname, dn))
mod_list = []
for val in values:
@@ -517,12 +511,13 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Normalised attribute %s" % attrname)
def err_normalise_mismatch_replace(self, dn, attrname, values):
- '''fix attribute normalisation errors'''
+ '''fix attribute normalisation and/or sort errors'''
normalised = self.samdb.dsdb_normalise_attributes(self.samdb_schema, attrname, values)
- self.report("ERROR: Normalisation error for attribute '%s' in '%s'" % (attrname, dn))
- self.report("Values/Order of values do/does not match: %s/%s!" % (values, list(normalised)))
if list(normalised) == values:
+ # how we got here is a mystery.
return
+ self.report("ERROR: Normalisation error for attribute '%s' in '%s'" % (attrname, dn))
+ self.report("Values/Order of values do/does not match: %s/%s!" % (values, list(normalised)))
if not self.confirm_all("Fix normalisation for '%s' from '%s'?" % (attrname, dn), 'fix_all_normalisation'):
self.report("Not fixing attribute '%s'" % attrname)
return
@@ -537,9 +532,10 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Normalised attribute %s" % attrname)
def err_duplicate_values(self, dn, attrname, dup_values, values):
- '''fix attribute normalisation errors'''
+ '''fix duplicate attribute values'''
self.report("ERROR: Duplicate values for attribute '%s' in '%s'" % (attrname, dn))
- self.report("Values contain a duplicate: [%s]/[%s]!" % (','.join(dump_attr_values(dup_values)), ','.join(dump_attr_values(values))))
+ self.report("Values contain a duplicate: [%s]/[%s]!" %
+ (dump_attr_values(dup_values), dump_attr_values(values)))
if not self.confirm_all("Fix duplicates for '%s' from '%s'?" % (attrname, dn), 'fix_all_duplicates'):
self.report("Not fixing attribute '%s'" % attrname)
return
@@ -724,7 +720,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Fixed %s on attribute %s" % (errstr, attrname))
def err_dn_string_component_old(self, dn, attrname, val, dsdb_dn, correct_dn):
- """handle a DN string being incorrect"""
+ """handle a DN string being incorrect due to a rename or delete"""
self.report("NOTE: old (due to rename or delete) DN string component for %s in object %s - %s" % (attrname, dn, val))
dsdb_dn.dn = correct_dn
@@ -759,7 +755,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Fixed incorrect DN %s on attribute %s" % (mismatch_type, attrname))
def err_dn_component_missing_target_sid(self, dn, attrname, val, dsdb_dn, target_sid_blob):
- """handle a DN string being incorrect"""
+ """fix missing <SID=...> on linked attributes"""
self.report("ERROR: missing DN SID component for %s in object %s - %s" % (attrname, dn, val))
if len(dsdb_dn.prefix) != 0:
@@ -977,7 +973,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("ERROR: incorrect userParameters value on object %s. If you have another working DC that does not give this warning, please run 'samba-tool drs replicate --full-sync --local <destinationDC> <sourceDC> %s'" % (obj.dn, self.samdb.get_nc_root(obj.dn)))
def err_base64_userParameters(self, obj, attrname, value):
- '''handle a wrong userParameters'''
+ '''handle a userParameters that is wrongly base64 encoded'''
self.report("ERROR: wrongly formatted userParameters %s on %s, should not be base64-encoded" % (value, obj.dn))
if not self.confirm_all('Convert userParameters from base64 encoding on %s?' % (obj.dn), 'fix_base64_userparameters'):
self.report('Not changing userParameters from base64 encoding on %s' % (obj.dn))
@@ -991,8 +987,9 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Corrected base64-encoded userParameters on %s by converting from base64" % (obj.dn))
def err_utf8_userParameters(self, obj, attrname, value):
- '''handle a wrong userParameters'''
- self.report("ERROR: wrongly formatted userParameters on %s, should not be psudo-UTF8 encoded" % (obj.dn))
+ '''handle a userParameters that is wrongly utf-8 encoded'''
+ self.report("ERROR: wrongly formatted userParameters on %s, "
+ "should not be pseudo-UTF8 encoded" % (obj.dn))
if not self.confirm_all('Convert userParameters from UTF8 encoding on %s?' % (obj.dn), 'fix_utf8_userparameters'):
self.report('Not changing userParameters from UTF8 encoding on %s' % (obj.dn))
return
@@ -1006,7 +1003,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Corrected psudo-UTF8 encoded userParameters on %s by converting from UTF8" % (obj.dn))
def err_doubled_userParameters(self, obj, attrname, value):
- '''handle a wrong userParameters'''
+ '''handle a userParameters that has been utf-16 encoded twice'''
self.report("ERROR: wrongly formatted userParameters on %s, should not be double UTF16 encoded" % (obj.dn))
if not self.confirm_all('Convert userParameters from doubled UTF-16 encoding on %s?' % (obj.dn), 'fix_doubled_userparameters'):
self.report('Not changing userParameters from doubled UTF-16 encoding on %s' % (obj.dn))
@@ -1032,7 +1029,7 @@ newSuperior: %s""" % (str(from_dn), str(to_rdn), str(to_base)))
self.report("Corrected doubled-UTF16 encoded userParameters on %s by converting" % (obj.dn))
def err_odd_userParameters(self, obj, attrname):
- # This is a truncated userParameters due to a pre 4.1 replication bug
+ """Fix a truncated userParameters due to a pre 4.1 replication bug"""
self.report("ERROR: incorrect userParameters value on object %s (odd length). If you have another working DC that does not give this warning, please run 'samba-tool drs replicate --full-sync --local <destinationDC> <sourceDC> %s'" % (obj.dn, self.samdb.get_nc_root(obj.dn)))
def find_revealed_link(self, dn, attrname, guid):
diff --git a/python/samba/drs_utils.py b/python/samba/drs_utils.py
index 43d1b4a2488..feab89b0d8e 100644
--- a/python/samba/drs_utils.py
+++ b/python/samba/drs_utils.py
@@ -92,29 +92,6 @@ def sendDsReplicaSync(drsuapiBind, drsuapi_handle, source_dsa_guid,
raise drsException("DsReplicaSync failed %s" % estr)
-def sendRemoveDsServer(drsuapiBind, drsuapi_handle, server_dsa_dn, domain):
- """Send RemoveDSServer request.
-
- :param drsuapiBind: a drsuapi Bind object
- :param drsuapi_handle: a drsuapi handle on the drsuapi connection
- :param server_dsa_dn: a DN object of the server's dsa that we want to
- demote
- :param domain: a DN object of the server's domain
- :raise drsException: if any error occur while sending and receiving the
- reply for the DsRemoveDSServer
- """
-
- try:
- req1 = drsuapi.DsRemoveDSServerRequest1()
- req1.server_dn = str(server_dsa_dn)
- req1.domain_dn = str(domain)
- req1.commit = 1
-
- drsuapiBind.DsRemoveDSServer(drsuapi_handle, 1, req1)
- except Exception as estr:
- raise drsException("DsRemoveDSServer failed %s" % estr)
-
-
def drs_DsBind(drs):
'''make a DsBind call, returning the binding handle'''
bind_info = drsuapi.DsBindInfoCtr()
diff --git a/python/samba/netcmd/common.py b/python/samba/netcmd/common.py
index f53ff4555a9..bb17bfa10f2 100644
--- a/python/samba/netcmd/common.py
+++ b/python/samba/netcmd/common.py
@@ -22,6 +22,11 @@ from samba.dcerpc import nbt
from samba.net import Net
import ldb
+
+# In MS AD, setting a timeout to '(never)' corresponds to this value
+NEVER_TIMESTAMP = int(-0x8000000000000000)
+
+
def _get_user_realm_domain(user):
r""" get the realm or the domain and the base user
from user like:
@@ -112,3 +117,26 @@ def get_ldif_for_editor(samdb, msg):
result_ldif = samdb.write_ldif(m, ldb.CHANGETYPE_NONE)
return result_ldif
+
+
+def timestamp_to_mins(timestamp_str):
+ """Converts a timestamp in -100 nanosecond units to minutes"""
+ # treat a timestamp of 'never' the same as zero (this should work OK for
+ # most settings, and it displays better than trying to convert
+ # -0x8000000000000000 to minutes)
+ if int(timestamp_str) == NEVER_TIMESTAMP:
+ return 0
+ else:
+ return abs(int(timestamp_str)) / (1e7 * 60)
+
+
+def timestamp_to_days(timestamp_str):
+ """Converts a timestamp in -100 nanosecond units to days"""
+ return timestamp_to_mins(timestamp_str) / (60 * 24)
+
+
+def attr_default(msg, attrname, default):
+ '''get an attribute from a ldap msg with a default'''
+ if attrname in msg:
+ return msg[attrname][0]
+ return default
diff --git a/python/samba/netcmd/domain.py b/python/samba/netcmd/domain.py
index 71dacf67a89..6a02b2ecac0 100644
--- a/python/samba/netcmd/domain.py
+++ b/python/samba/netcmd/domain.py
@@ -62,6 +62,9 @@ from samba.netcmd import (
)
from samba.netcmd.fsmo import get_fsmo_roleowner
from samba.netcmd.common import netcmd_get_domain_infos_via_cldap
+from samba.netcmd.common import (NEVER_TIMESTAMP,
+ timestamp_to_mins,
+ timestamp_to_days)
from samba.samba3 import Samba3
from samba.samba3 import param as s3param
from samba.upgrade import upgrade_from_samba3
@@ -1210,26 +1213,6 @@ class cmd_domain_level(Command):
raise CommandError("invalid argument: '%s' (choose from 'show', 'raise')" % subcommand)
-# In MS AD, setting a timeout to '(never)' corresponds to this value
-NEVER_TIMESTAMP = int(-0x8000000000000000)
-
-
-def timestamp_to_mins(timestamp_str):
- """Converts a timestamp in -100 nanosecond units to minutes"""
- # treat a timestamp of 'never' the same as zero (this should work OK for
- # most settings, and it displays better than trying to convert
- # -0x8000000000000000 to minutes)
- if int(timestamp_str) == NEVER_TIMESTAMP:
- return 0
- else:
- return abs(int(timestamp_str)) / (1e7 * 60)
-
-
-def timestamp_to_days(timestamp_str):
- """Converts a timestamp in -100 nanosecond units to days"""
- return timestamp_to_mins(timestamp_str) / (60 * 24)
-
-
class cmd_domain_passwordsettings_show(Command):
"""Display current password settings for the domain."""
diff --git a/python/samba/netcmd/drs.py b/python/samba/netcmd/drs.py
index 023b09d0506..5b439f8e6e1 100644
--- a/python/samba/netcmd/drs.py
+++ b/python/samba/netcmd/drs.py
@@ -33,6 +33,7 @@ from samba.netcmd import (
Option,
SuperCommand,
)
+from samba.netcmd.common import attr_default
from samba.samdb import SamDB
from samba import drs_utils, nttime2string, dsdb
from samba.dcerpc import drsuapi, misc
@@ -75,13 +76,6 @@ def drs_errmsg(werr):
return "failed, result %u (%s)" % (ecode, estring)
-def attr_default(msg, attrname, default):
- '''get an attribute from a ldap msg with a default'''
- if attrname in msg:
- return msg[attrname][0]
- return default
-
-
def drs_parse_ntds_dn(ntds_dn):
'''parse a NTDS DN returning a site and server'''
a = ntds_dn.split(',')
diff --git a/python/samba/netcmd/gpo.py b/python/samba/netcmd/gpo.py
index bbaa0c17881..ca479207d6e 100644
--- a/python/samba/netcmd/gpo.py
+++ b/python/samba/netcmd/gpo.py
@@ -63,13 +63,7 @@ from samba.gp_parse.gp_inf import GptTmplInfParser
from samba.gp_parse.gp_aas import GPAasParser
from samba import param
from samba.credentials import SMB_SIGNING_REQUIRED
-
-
-def attr_default(msg, attrname, default):
- '''get an attribute from a ldap msg with a default'''
- if attrname in msg:
- return msg[attrname][0]
- return default
+from samba.netcmd.common import attr_default
def gpo_flags_string(value):
diff --git a/python/samba/netcmd/pso.py b/python/samba/netcmd/pso.py
index 200b6ff2a9e..d260e3bd406 100644
--- a/python/samba/netcmd/pso.py
+++ b/python/samba/netcmd/pso.py
@@ -22,30 +22,15 @@ from samba.netcmd import (Command, CommandError, Option, SuperCommand)
from samba.dcerpc.samr import (DOMAIN_PASSWORD_COMPLEX,
DOMAIN_PASSWORD_STORE_CLEARTEXT)
from samba.auth import system_session
-
-NEVER_TIMESTAMP = int(-0x8000000000000000)
+from samba.netcmd.common import (NEVER_TIMESTAMP,
+ timestamp_to_mins,
+ timestamp_to_days)
def pso_container(samdb):
return "CN=Password Settings Container,CN=System,%s" % samdb.domain_dn()
-def timestamp_to_mins(timestamp_str):
- """Converts a timestamp in -100 nanosecond units to minutes"""
- # treat a timestamp of 'never' the same as zero (this should work OK for
- # most settings, and it displays better than trying to convert
- # -0x8000000000000000 to minutes)
- if int(timestamp_str) == NEVER_TIMESTAMP:
- return 0
- else:
- return abs(int(timestamp_str)) / (1e7 * 60)
-
-
-def timestamp_to_days(timestamp_str):
- """Converts a timestamp in -100 nanosecond units to days"""
- return timestamp_to_mins(timestamp_str) / (60 * 24)
-
-
def mins_to_timestamp(mins):
"""Converts a value in minutes to -100 nanosecond units"""
timestamp = -int((1e7) * 60 * mins)
diff --git a/python/samba/provision/__init__.py b/python/samba/provision/__init__.py
index 0706f39c581..136267e7aad 100644
--- a/python/samba/provision/__init__.py
+++ b/python/samba/provision/__init__.py
@@ -499,21 +499,6 @@ class ProvisionResult(object):
self.backend_result.report_logger(logger)
-def check_install(lp, session_info, credentials):
- """Check whether the current install seems ok.
-
- :param lp: Loadparm context
- :param session_info: Session information
- :param credentials: Credentials
- """
- if lp.get("realm") == "":
- raise Exception("Realm empty")
- samdb = Ldb(lp.samdb_url(), session_info=session_info,
- credentials=credentials, lp=lp)
- if len(samdb.search("(cn=Administrator)")) != 1:
- raise ProvisioningError("No administrator account found")
-
-
def findnss(nssfn, names):
"""Find a user or group from a list of possibilities.
diff --git a/selftest/subunithelper.py b/selftest/subunithelper.py
index 26158cad339..4fbb5442839 100644
--- a/selftest/subunithelper.py
+++ b/selftest/subunithelper.py
@@ -45,10 +45,7 @@ def parse_results(msg_ops, statistics, fh):
exitcode = 0
open_tests = {}
- while fh:
- l = fh.readline()
- if l == "":
- break
+ for l in fh:
parts = l.split(None, 1)
if not len(parts) == 2 or not l.startswith(parts[0]):
msg_ops.output_msg(l)
@@ -80,10 +77,7 @@ def parse_results(msg_ops, statistics, fh):
reason = ""
# reason may be specified in next lines
terminated = False
- while fh:
- l = fh.readline()
- if l == "":
- break
+ for l in fh:
msg_ops.control_msg(l)
if l == "]\n":
terminated = True
@@ -250,8 +244,7 @@ def read_test_regexes(*names):
files.append(name)
for filename in files:
- f = open(filename, 'r')
- try:
+ with open(filename, 'r') as f:
for l in f:
l = l.strip()
if l == "" or l[0] == "#":
@@ -261,8 +254,7 @@ def read_test_regexes(*names):
ret[regex.strip()] = reason.strip()
else:
ret[l] = None
- finally:
- f.close()
+
return ret
--
Samba Shared Repository
More information about the samba-cvs
mailing list