[PATCH 1/2] s4:provision - Use netbios name for FDS instance name.

Endi S. Dewata edewata at redhat.com
Thu Jan 28 18:35:29 MST 2010


---
 selftest/target/Samba4.pm                          |   21 ++++++++++-------
 source4/scripting/python/samba/provisionbackend.py |    8 ++++--
 source4/setup/fedorads.inf                         |   24 ++++++++++----------
 3 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index e6ed0ab..a9abc26 100644
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -67,7 +67,7 @@ sub slapd_stop($$)
 {
 	my ($self, $envvars) = @_;
 	if ($self->{ldap} eq "fedora-ds") {
-		system("$envvars->{LDAPDIR}/slapd-samba4/stop-slapd");
+		system("$envvars->{LDAPDIR}/slapd-$envvars->{LDAP_INSTANCE}/stop-slapd");
 	} elsif ($self->{ldap} eq "openldap") {
 		open(IN, "<$envvars->{OPENLDAP_PIDFILE}") or 
 			die("unable to open slapd pid file: $envvars->{OPENLDAP_PIDFILE}");
@@ -211,22 +211,22 @@ type: 0x3
 
 sub mk_fedora_ds($$)
 {
-	my ($self, $ldapdir) = @_;
+	my ($self, $ctx) = @_;
 
 	#Make the subdirectory be as fedora DS would expect
-	my $fedora_ds_dir = "$ldapdir/slapd-samba4";
+	my $fedora_ds_dir = "$ctx->{ldapdir}/slapd-$ctx->{ldap_instance}";
 
-	my $pidfile = "$fedora_ds_dir/logs/slapd-samba4.pid";
+	my $pidfile = "$fedora_ds_dir/logs/slapd-$ctx->{ldap_instance}.pid";
 
 	return ($fedora_ds_dir, $pidfile);
 }
 
 sub mk_openldap($$)
 {
-	my ($self, $ldapdir) = @_;
+	my ($self, $ctx) = @_;
 
-	my $slapd_conf_d = "$ldapdir/slapd.d";
-	my $pidfile = "$ldapdir/slapd.pid";
+	my $slapd_conf_d = "$ctx->{ldapdir}/slapd.d";
+	my $pidfile = "$ctx->{ldapdir}/slapd.pid";
 
 	return ($slapd_conf_d, $pidfile);
 }
@@ -680,6 +680,7 @@ nogroup:x:65534:nobody
 		REALM => $ctx->{realm},
 		PASSWORD => $ctx->{password},
 		LDAPDIR => $ctx->{ldapdir},
+		LDAP_INSTANCE => $ctx->{ldap_instance},
 		WINBINDD_SOCKET_DIR => $ctx->{winbindd_socket_dir},
 		NCALRPCDIR => $ctx->{ncalrpcdir},
 		LOCKDIR => $ctx->{lockdir},
@@ -788,6 +789,8 @@ sub provision($$$$$$$)
                 if ($self->{ldap} eq "fedora-ds") {
 			$ctx->{sid_generator} = "backend";
 		}
+
+		$ctx->{ldap_instance} = lc($ctx->{netbiosname});
 	}
 
 	my $ret = $self->provision_raw_step1($ctx);
@@ -797,12 +800,12 @@ sub provision($$$$$$$)
 		push (@{$ctx->{provision_options}}, "--ldap-backend-type=" . $self->{ldap});
 		if ($self->{ldap} eq "openldap") {
  		        push (@{$ctx->{provision_options}}, "--slapd-path=" . $ENV{OPENLDAP_SLAPD});
-			($ret->{SLAPD_CONF_D}, $ret->{OPENLDAP_PIDFILE}) = $self->mk_openldap($ctx->{ldapdir}) or die("Unable to create openldap directories");
+			($ret->{SLAPD_CONF_D}, $ret->{OPENLDAP_PIDFILE}) = $self->mk_openldap($ctx) or die("Unable to create openldap directories");
 
                 } elsif ($self->{ldap} eq "fedora-ds") {
  		        push (@{$ctx->{provision_options}}, "--slapd-path=" . "$ENV{FEDORA_DS_ROOT}/sbin/ns-slapd");
  		        push (@{$ctx->{provision_options}}, "--setup-ds-path=" . "$ENV{FEDORA_DS_ROOT}/sbin/setup-ds.pl");
-			($ret->{FEDORA_DS_DIR}, $ret->{FEDORA_DS_PIDFILE}) = $self->mk_fedora_ds($ctx->{ldapdir}) or die("Unable to create fedora ds directories");
+			($ret->{FEDORA_DS_DIR}, $ret->{FEDORA_DS_PIDFILE}) = $self->mk_fedora_ds($ctx) or die("Unable to create fedora ds directories");
 		}
 
 	}
diff --git a/source4/scripting/python/samba/provisionbackend.py b/source4/scripting/python/samba/provisionbackend.py
index 3dff6ed..09e49a8 100644
--- a/source4/scripting/python/samba/provisionbackend.py
+++ b/source4/scripting/python/samba/provisionbackend.py
@@ -552,6 +552,7 @@ class FDSBackend(LDAPBackend):
 
         self.root = root
         self.setup_ds_path = setup_ds_path
+        self.ldap_instance = self.names.netbiosname.lower()
 
         self.sambadn = "CN=Samba"
 
@@ -597,6 +598,7 @@ class FDSBackend(LDAPBackend):
                     "DNSDOMAIN": self.names.dnsdomain,
                     "LDAPDIR": self.paths.ldapdir,
                     "DOMAINDN": self.names.domaindn,
+                    "LDAP_INSTANCE": self.ldap_instance,
                     "LDAPMANAGERDN": self.names.ldapmanagerdn,
                     "LDAPMANAGERPASS": self.ldapadminpass, 
                     "SERVERPORT": serverport})
@@ -671,7 +673,7 @@ class FDSBackend(LDAPBackend):
         self.credentials.set_bind_dn(self.names.ldapmanagerdn)
 
         # Destory the target directory, or else setup-ds.pl will complain
-        fedora_ds_dir = os.path.join(self.paths.ldapdir, "slapd-samba4")
+        fedora_ds_dir = os.path.join(self.paths.ldapdir, "slapd-" + self.ldap_instance)
         shutil.rmtree(fedora_ds_dir, True)
 
         self.slapd_provision_command = [self.slapd_path, "-D", fedora_ds_dir, "-i", self.paths.slapdpid];
@@ -679,7 +681,7 @@ class FDSBackend(LDAPBackend):
         self.slapd_provision_command.append("-d0")
 
         #the command for the final run is the normal script
-        self.slapd_command = [os.path.join(self.paths.ldapdir, "slapd-samba4", "start-slapd")]
+        self.slapd_command = [os.path.join(self.paths.ldapdir, "slapd-" + self.ldap_instance, "start-slapd")]
 
         # If we were just looking for crashes up to this point, it's a
         # good time to exit before we realise we don't have Fedora DS on
@@ -700,7 +702,7 @@ class FDSBackend(LDAPBackend):
 
         # Load samba-admin
         retcode = subprocess.call([
-            os.path.join(self.paths.ldapdir, "slapd-samba4", "ldif2db"), "-s", self.sambadn, "-i", self.samba_ldif],
+            os.path.join(self.paths.ldapdir, "slapd-" + self.ldap_instance, "ldif2db"), "-s", self.sambadn, "-i", self.samba_ldif],
             close_fds=True, shell=False)
         if retcode != 0:
             raise ProvisioningError("ldif2db failed")
diff --git a/source4/setup/fedorads.inf b/source4/setup/fedorads.inf
index f4f92a0..1243a06 100644
--- a/source4/setup/fedorads.inf
+++ b/source4/setup/fedorads.inf
@@ -8,20 +8,20 @@ ldapifilepath=${LDAPDIR}/ldapi
 Suffix= ${DOMAINDN}
 RootDN= ${LDAPMANAGERDN}
 RootDNPwd= ${LDAPMANAGERPASS}
-ServerIdentifier= samba4
+ServerIdentifier= ${LDAP_INSTANCE}
 ${SERVERPORT}
 
-inst_dir= ${LDAPDIR}/slapd-samba4
-config_dir= ${LDAPDIR}/slapd-samba4
-schema_dir= ${LDAPDIR}/slapd-samba4/schema
-lock_dir= ${LDAPDIR}/slapd-samba4/lock
-log_dir= ${LDAPDIR}/slapd-samba4/logs
-run_dir= ${LDAPDIR}/slapd-samba4/logs
-db_dir= ${LDAPDIR}/slapd-samba4/db
-bak_dir= ${LDAPDIR}/slapd-samba4/bak
-tmp_dir= ${LDAPDIR}/slapd-samba4/tmp
-ldif_dir= ${LDAPDIR}/slapd-samba4/ldif
-cert_dir= ${LDAPDIR}/slapd-samba4
+inst_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}
+config_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}
+schema_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/schema
+lock_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/lock
+log_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/logs
+run_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/logs
+db_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/db
+bak_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/bak
+tmp_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/tmp
+ldif_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}/ldif
+cert_dir= ${LDAPDIR}/slapd-${LDAP_INSTANCE}
 
 start_server= 0
 install_full_schema= 0
-- 
1.6.6


------=_Part_61516_373287210.1265679969761
Content-Type: text/x-patch;
	name=0002-s4-provision-Moved-backend-specific-variables-into-b.patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=0002-s4-provision-Moved-backend-specific-variables-into-b.patch



More information about the samba-technical mailing list