[389-devel] Upgrade procedures
Rich Megginson
rmeggins at redhat.com
Wed Sep 2 15:15:13 UTC 2009
Nathan Kinder wrote:
> On 09/01/2009 03:38 PM, Rich Megginson wrote:
>> Nathan Kinder wrote:
>>> On 09/01/2009 02:23 PM, Rich Megginson wrote:
>>>> I'm envisioning something like patch files in an RPM - things that
>>>> can easily come and go depending on what needs to be done for a
>>>> particular release. In this case, instead of patch files, these
>>>> would be short perl or shell scripts. These would be invoked once
>>>> or once per instance.
>>>>
>>>> One way would be to have a large script which would be edited for
>>>> each release, adding or deleting code as needed. This is the way
>>>> it worked in the past - the file quickly becomes "unruly".
>>>> However, we would only have to touch Makefile.am once to add the
>>>> upgrade script.
>>> You mean like the migrate4to6, migrate5to6, etc. stuff?
>> Sort of, but much smaller. And not necessarily version specific -
>> see below.
>>>>
>>>> Another way would be to have small scripts that could come and go
>>>> with each release. The disadvantage is that we would be constantly
>>>> adding/deleting items from Makefile.am. This is what I would prefer.
>>> I prefer the scriptlet approach too.
>>>
>>> How do you envision dealing with upgrading from different versions?
>>> For example, we would need to do much different work upgrading from
>>> 1.1 -> 1.3 than we would from 1.2 -> 1.3. Will there be some way
>>> for the scriptlet to specify what versions it needs to be run for?
>> I'm hoping to avoid looking at explicit versions. Instead, I would
>> prefer that the scriptlet would determine if the work it needed to do
>> is already done. For example, upgrading from 1.2.0 to 1.2.x would
>> need to add the syntax validation plugin. The scriptlet should check
>> to see if the syntax validation plugin exists before adding it. I
>> can't really think of anything which would require an explicit version.
> That makes sense. We may want to talk with Rob C. since I think he's
> done something similar for FreeIPA's upgrade procedure with regards to
> DS plug-in config. Perhaps he has some insight.
I think they use ldif files that they either pass to ldapmodify or parse
with python-ldap. I think it would be useful to do that too, and
possibly provide hooks that ipa could use. So we can have 3 types of
files to execute during upgrade
perl code - small perl scripts, which can be imported into the setup
perl interpreter and executed in that context
ldif - which can be applied by the use of our current ldif code in setup
executable code - which will primarily be shell scripts, but I don't
think there is any reason to limit it - we will need some way to pass
the context to them, probably in the form of environment variables
(INSTANCEDIR=/etc/dirsrv/slapd-foo ; BINDDN="cn=directory manager";
BINDPW="password" ; etc.)
I think there will have to some sort of manifest file (or main
controlling script) to control the order of execution of these upgrade
scripts/ldif. Either that, or some sort of scheme like we use for
schema files - name the files 00something through 99something and have
them executed in order. The numbering scheme might be tricky to
manage. The manifest/upgrade script will probably get ugly after a while.
>>>>
>>>> Before invoking the update scripts, the code would create some sort
>>>> of context, containing information about the config directory, each
>>>> instance, and an identity and credentials that can be used to
>>>> manage each instance. For example, when you run setup-ds-admin.pl
>>>> -u, it uses the uid=admin identity and asks for the password, then
>>>> uses that identity to manage each instance. However, in the case
>>>> where there is just the base ds package, we would need some way to
>>>> ask or specify the identity for each instance. For the UI, I don't
>>>> think there's any way around just simply asking for the username
>>>> and password for each instance (we can default the username to
>>>> directory manager or the last value specified). For .inf file
>>>> usage, I was thinking about adding a new section -
>>>> [slapd-instancename] - in which you could specify the RootDN and
>>>> RootDNPwd.
>>>> ------------------------------------------------------------------------
>>>>
>>>>
>>>> --
>>>> 389-devel mailing list
>>>> 389-devel at redhat.com
>>>> https://www.redhat.com/mailman/listinfo/fedora-directory-devel
>>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> --
>>> 389-devel mailing list
>>> 389-devel at redhat.com
>>> https://www.redhat.com/mailman/listinfo/fedora-directory-devel
>>>
>>
>> ------------------------------------------------------------------------
>>
>> --
>> 389-devel mailing list
>> 389-devel at redhat.com
>> https://www.redhat.com/mailman/listinfo/fedora-directory-devel
>>
>
> ------------------------------------------------------------------------
>
> --
> 389-devel mailing list
> 389-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-directory-devel
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3258 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/fedora-directory-devel/attachments/20090902/dcec6c3b/attachment.bin>
More information about the Fedora-directory-devel
mailing list