s4:provision Give a more useful error message in guess_names
authorAndrew Bartlett <abartlet@samba.org>
Tue, 15 Dec 2009 05:41:37 +0000 (16:41 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 18 Dec 2009 03:27:43 +0000 (14:27 +1100)
The problem here is that as we start to get 'real users' they still
decide to do silly things, like load empty but existing smb.conf
files.  Let's give them a better chance to discover what they did
wrong.

Andrew Bartlett

source4/scripting/python/samba/provision.py

index 44ccaa8ef05f75a251d2abd7c229deb138dc0b65..3e4e90a746dc98f6925525a87b4404c1a83bfa01 100644 (file)
@@ -359,12 +359,16 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
 
     if dnsdomain is None:
         dnsdomain = lp.get("realm")
-    assert dnsdomain is not None
+        if dnsdomain is None or dnsdomain == "":
+            raise ProvisioningError("guess_names: 'realm' not specified in supplied smb.conf!")
+
     dnsdomain = dnsdomain.lower()
 
     if serverrole is None:
         serverrole = lp.get("server role")
-    assert serverrole is not None
+        if serverrole is None:
+            raise ProvisioningError("guess_names: 'server role' not specified in supplied smb.conf!")
+
     serverrole = serverrole.lower()
 
     realm = dnsdomain.upper()
@@ -372,10 +376,14 @@ def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,
     if lp.get("realm").upper() != realm:
         raise ProvisioningError("guess_names: Realm '%s' in smb.conf must match chosen realm '%s'!", lp.get("realm").upper(), realm)
 
+    if lp.get("server role").lower() != serverrole:
+        raise ProvisioningError("guess_names: server role '%s' in smb.conf must match chosen server role '%s'!", lp.get("server role").upper(), serverrole)
+
     if serverrole == "domain controller":
         if domain is None:
             domain = lp.get("workgroup")
-        assert domain is not None
+        if domain is None:
+            raise ProvisioningError("guess_names: 'workgroup' not specified in supplied smb.conf!")
         domain = domain.upper()
 
         if lp.get("workgroup").upper() != domain: