1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-04 08:22:08 +03:00

provision: Start splitting out provision result reporting from actual provisioning.

Autobuild-User: Jelmer Vernooij <jelmer@samba.org>
Autobuild-Date: Sat Feb 25 22:13:10 CET 2012 on sn-devel-104
This commit is contained in:
Jelmer Vernooij
2012-02-25 20:04:57 +01:00
parent 2fd10469c1
commit fe3274d9cb
2 changed files with 63 additions and 17 deletions

View File

@ -2,7 +2,7 @@
# Unix SMB/CIFS implementation.
# backend code for provisioning a Samba4 server
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2010
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2012
# Copyright (C) Andrew Bartlett <abartlet@samba.org> 2008-2009
# Copyright (C) Oliver Liebel <oliver@itc.li> 2008-2009
#
@ -360,14 +360,30 @@ def get_last_provision_usn(sam):
class ProvisionResult(object):
"""Result of a provision.
:ivar server_role: The server role
:ivar paths: ProvisionPaths instance
:ivar domaindn: The domain dn, as string
"""
def __init__(self):
self.server_role = None
self.paths = None
self.domaindn = None
self.lp = None
self.samdb = None
self.idmap = None
self.names = None
self.domainsid = None
def report_logger(self, logger):
"""Report this provision result to a logger."""
logger.info("Server Role: %s" % self.server_role)
logger.info("Hostname: %s" % self.names.hostname)
logger.info("NetBIOS Domain: %s" % self.names.domain)
logger.info("DNS Domain: %s" % self.names.dnsdomain)
logger.info("DOMAIN SID: %s" % self.domainsid)
def check_install(lp, session_info, credentials):
@ -1501,7 +1517,8 @@ def provision_fill(samdb, secrets_ldb, logger, names, paths,
# fix any dangling GUIDs from the provision
logger.info("Fixing provision GUIDs")
chk = dbcheck(samdb, samdb_schema=samdb, verbose=False, fix=True, yes=True, quiet=True)
chk = dbcheck(samdb, samdb_schema=samdb, verbose=False, fix=True, yes=True,
quiet=True)
samdb.transaction_start()
try:
# a small number of GUIDs are missing because of ordering issues in the
@ -1810,15 +1827,20 @@ def provision(logger, session_info, credentials, smbconf=None,
logger.info("Failed to chown %s to bind gid %u",
dns_keytab_path, paths.bind_gid)
logger.info("Once the above files are installed, your Samba4 server will be ready to use")
result = ProvisionResult()
result.server_role = serverrole
result.domaindn = domaindn
result.paths = paths
result.names = names
result.lp = lp
result.samdb = samdb
result.idmap = idmap
result.domainsid = str(domainsid)
result.report_logger(logger)
logger.info("A phpLDAPadmin configuration file suitable for administering the Samba 4 LDAP server has been created in %s .",
paths.phpldapadminconfig)
logger.info("Once the above files are installed, your Samba4 server will be ready to use")
logger.info("Server Role: %s" % serverrole)
logger.info("Hostname: %s" % names.hostname)
logger.info("NetBIOS Domain: %s" % names.domain)
logger.info("DNS Domain: %s" % names.dnsdomain)
logger.info("DOMAIN SID: %s" % str(domainsid))
if samdb_fill == FILL_FULL:
if adminpass_generated:
logger.info("Admin password: %s" % adminpass)
@ -1838,13 +1860,6 @@ def provision(logger, session_info, credentials, smbconf=None,
logger.info("This slapd-Commandline is also stored under: %s/ldap_backend_startup.sh",
provision_backend.ldapdir)
result = ProvisionResult()
result.domaindn = domaindn
result.paths = paths
result.names = names
result.lp = lp
result.samdb = samdb
result.idmap = idmap
return result

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python
# Unix SMB/CIFS implementation.
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2008
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2012
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -21,7 +21,9 @@
import os
from samba.provision import (
ProvisionNames,
ProvisionPaths,
ProvisionResult,
sanitize_server_role,
setup_secretsdb,
findnss,
@ -66,7 +68,7 @@ class ProvisionTestCase(samba.tests.TestCaseInTempDir):
finally:
del ldb
os.unlink(path)
class FindNssTests(TestCase):
"""Test findnss() function."""
@ -132,3 +134,32 @@ class SanitizeServerRoleTests(TestCase):
def test_valid(self):
self.assertEquals("standalone", sanitize_server_role("ROLE_STANDALONE"))
class DummyLogger(object):
def __init__(self):
self.entries = []
def info(self, text):
self.entries.append(("INFO", text))
class ProvisionResultTests(TestCase):
def test_report_logger(self):
logger = DummyLogger()
result = ProvisionResult()
result.server_role = "domain controller"
result.names = ProvisionNames()
result.names.hostname = "hostnaam"
result.names.domain = "DOMEIN"
result.names.dnsdomain = "dnsdomein"
result.domainsid = "S1-1-1"
result.report_logger(logger)
self.assertEquals(logger.entries, [
('INFO', 'Server Role: domain controller'),
('INFO', 'Hostname: hostnaam'),
('INFO', 'NetBIOS Domain: DOMEIN'),
('INFO', 'DNS Domain: dnsdomein'),
('INFO', 'DOMAIN SID: S1-1-1')])