From 02533c9f1ba9434aabc92fac06995a858874c002 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Thu, 28 Jan 2010 19:35:29 -0600 Subject: s4:provision - Use netbios name for FDS instance name. Signed-off-by: Andrew Bartlett --- 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 9a808d3b0a..7a65847e21 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); } @@ -683,6 +683,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}, @@ -792,6 +793,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); @@ -801,12 +804,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 083f1dc73d..808ecdeb84 100644 --- a/source4/scripting/python/samba/provisionbackend.py +++ b/source4/scripting/python/samba/provisionbackend.py @@ -551,6 +551,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" @@ -596,6 +597,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}) @@ -670,7 +672,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] @@ -678,7 +680,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 @@ -699,7 +701,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 f4f92a0697..1243a06c91 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 -- cgit