Description of problem: running ipa-server-install fails, reporting a error that Env._bootstrap() already called Version-Release number of selected component (if applicable): ipa-server-2.0-4.20090923.el5ipa How reproducible: always Steps to Reproduce: 1. install ipa-server rpm's 2. ipa-server-install -N -U --hostname=iparhel5-vma.dsdev.sjc.redhat.com -r DSDEV.SJC.REDHAT.COM -p pw -P pw -a pw -u root --setup-dns --forwarder 10.14.63.2 Actual results: done configuring httpd. Applying LDAP updates restarting the directory server restarting the KDC Unexpected error - see ipaserver-install.log for details: Env._bootstrap() already called From ipaserver-install.log: Starting Kerberos 5 KDC: [ OK ] 2009-09-23 13:32:17,570 INFO 2009-09-23 13:32:17,571 DEBUG Loading StateFile from '/var/lib/ipa/sysrestore/sysrestore.state' 2009-09-23 13:32:17,575 DEBUG Env._bootstrap() already called File "/usr/sbin/ipa-server-install", line 775, in ? sys.exit(main()) File "/usr/sbin/ipa-server-install", line 716, in main api.bootstrap(in_server=True) File "/usr/lib/python2.4/site-packages/ipalib/plugable.py", line 432, in bootstrap self.env._bootstrap(**overrides) File "/usr/lib/python2.4/site-packages/ipalib/config.py", line 443, in _bootstrap self.__doing('_bootstrap') File "/usr/lib/python2.4/site-packages/ipalib/config.py", line 408, in __doing raise StandardError(
This is caused by both Martin and I initializing the ipalib environment (and for different reasons) when doing a DNS install. I think we can move the initialization earlier if we can: - make loading the schema in ldap2 non-fatal - load the schema later (like in connect) if it isn't already set - ensure that I can still override some things in the env before finalize(). I think that by definition I can, just haven't tried yet
I have somewhat of a fix but one thing is killing me. When the plugin is loaded it attempts to fetch the schema from the LDAP server. Since this is the installer we don't have a server to connect to. I made the ldap2 plugin handle it but then there is no way to later load the schema because the class gets locked once it is finalized. I think we need to be able to define a set of class variables that may be modified at runtime. That or _schema is going to need to be a global variable.
Created attachment 362684 [details] only initialize the API once in the installer, make plugins startable w/o LDAP server
master: e4877c946f71b2d091d01edfd64768ce7a7a47ee
Verified to not be happening 12-8-2010