diff --git a/branches/old/gosa-plugins/fai/contrib/fai.schema b/branches/old/gosa-plugins/fai/contrib/fai.schema
--- /dev/null
@@ -0,0 +1,474 @@
+###############################################################################
+# #
+# F A I - Fully automatic installation LDAP schema file #
+# #
+#-----------------------------------------------------------------------------#
+# Last modified: Cajus Pollmeier / 20050902 #
+#-----------------------------------------------------------------------------#
+# Copyright 2005, Cajus Pollmeier <cajus@debian.org> #
+# Thomas Lange <lange@debian.org> #
+#-----------------------------------------------------------------------------#
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+###############################################################################
+
+
+# This schema file has dependencies to the nis.schema. Please make sure that
+# the inclusion order in your slapd.conf is correct.
+
+
+# Here's a short list of object class / attribute relationship. For a more
+# detailed description take a look at the definitions below.
+#
+# Objectclasses | Attributes
+# -----------------------------------------------------------------------------
+# FAIclass | cn,description,FAIclassType
+# FAIprofile | FAIclass
+# FAIhook | (inherit from FAIclass)
+# FAIhookEntry | FAIscript, FAItask
+# FAIscript | (inherit from FAIclass)
+# FAIscriptEntry | FAIscript, FAIpriority
+# FAIvariable | (inherit from FAIclass)
+# FAIvariableEntry | FAIvariableContent
+# FAItemplate | (inherit from FAIclass)
+# FAItemplateEntry | FAItemplateFile, FAItemplatePath, FAIowner, FAImode
+# FAIpartitionTable | (inherit from FAIclass)
+# FAIpartitionDisk | (inherit from FAIclass)
+# FAIpartitionEntry | FAIpartitionType, FAIpartitionNr, FAImountOptions,
+# | FAIfsOptions, FAIfsType, FAImountPoint,FAIpartitionSize,
+# | FAIpartitionFlag
+# FAIpackageList | FAIinstallMethod, FAIpackage
+# FAIdebconfInfo | FAIvariable, FAIvariableContent, FAIvariableType
+# FAIobject | FAIclass, FAIstatus, macAddress
+# FAIrepository | FAIdebianMirror, FAIdebianRelease, FAIdebianSection
+# FAIrepositoryServer | FAIrepository
+#
+# Rem.: Except of FAIdebconfInfo and FAIobject, all object classes are inherited
+# from FAIclass, so ALL cn's MUST be unique in your tree.
+
+
+##
+## Attribute definitions (allocated from the GONICUS oid space)
+##
+
+# Name : FAIclass
+# Description: Notes which FAI class name(s) are used in an FAI object
+# or in profile definitions. No unicode here, maximum
+# length is set to 64 characters.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.1 NAME 'FAIclass'
+ DESC 'Storage for FAI class names'
+ EQUALITY caseExactMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64})
+
+# Name : FAIpriority
+# Description: Notes which priority scripts or profiles entries get. It is used
+# by FAI to generate a propper class list during the bootstrap
+# process. This is an unsigned integer value.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.2 NAME 'FAIpriority'
+ DESC 'Storage for FAI priorities'
+ EQUALITY integerMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE)
+
+# Name : FAIpartitionType
+# Description: As the name says, we store the type of a (hard-disk) partition
+# here. Type can be one of "primary" or "secondary". We did not
+# make this bool because there may be changes to the FAI partitioner
+# which we can't handle then. The maximum length is set to 16
+# characters.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.3 NAME 'FAIpartitionType'
+ DESC 'Storage for FAI partition types'
+ EQUALITY caseExactMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE)
+
+# Name : FAIpartitionNr
+# Description: We use this value to store the device entries like "disk1" or
+# "sda8" with this attribute. Currently the storage is without the
+# leading "/dev/".
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.4 NAME 'FAIpartitionNr'
+ DESC 'Storage for FAI partition devices'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAImountOptions
+# Description: We use this value to store special mount options for partitions.
+# For example some people tend to have /usr mounted as read-only.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.5 NAME 'FAImountOptions'
+ DESC 'Storage for FAI partition mount options'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAImountPoint
+# Description: Simply the mountpoint like found in the fstab. Examples are
+# '/usr', '/' and '/home'.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.6 NAME 'FAImountPoint'
+ DESC 'Storage for FAI partition mount points'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIfsOptions
+# Description: In some cases you might want to influence the filesystem
+# generation commands by adding flags for larger inode tables, etc.
+# FAIfsOptions keeps the flags that are used by the mkfs workers.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.7 NAME 'FAIfsOptions'
+ DESC 'Storage for FAI partition generation options'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIfsType
+# Description: Keeps the type of the filessytem a partition gets formatted with.
+# Examples are 'ext3', 'xfs', etc. Please refer to the FAI manual
+# for valid types.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.8 NAME 'FAIfsType'
+ DESC 'Storage for FAI partition types'
+ EQUALITY caseExactMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE)
+
+# Name : FAIscript
+# Description: Store multiline text, mostly used for scripts and hooks.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.9 NAME 'FAIscript'
+ DESC 'General storage field for multiline text aka scripts'
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE)
+
+# Name : FAItask
+# Description: Assign a hook to a special task. You can use it i.e. to alter
+# partition tables, etc. The FAI manual hold a list of valid
+# tasks for you.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.10 NAME 'FAItask'
+ DESC 'Note for which FAI tasks a hook is made for'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIvariable
+# Description: Keeps the name of a debconf template variable. The value is
+# stored inside of FAIvariableContent, the type inside
+# FAIvariableType.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.11 NAME 'FAIvariable'
+ DESC 'Store debconf template variable names'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIvariableContent
+# Description: Keeps the content of a debconf template variable. See
+# FAIvariable for more informations.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.12 NAME 'FAIvariableContent'
+ DESC 'Store debconf template variable contents'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIvariableType
+# Description: Keeps the type of a debconf template variable. See
+# FAIvariable for more informations.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.13 NAME 'FAIvariableType'
+ DESC 'Store debconf template variable type'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIinstallMethod
+# Description: Keeps a per package setting on how packages should be
+# installed. This is the normal line you'd specify in
+# our ordinary package lists.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.14 NAME 'FAIinstallMethod'
+ DESC 'Store debian package installation flag'
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIpackage
+# Description: Keeps an entry of a package list. Each FAIpackage object
+# may be a parent for FAIdebconfInfo objects.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.15 NAME 'FAIpackage'
+ DESC 'Store debian package name'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
+
+# Name : FAItemplateFile
+# Description: Keeps complete template files that are copied to the
+# freshly installed system later on. The tasks path is
+# stored in FAItemplatePath. Use ;binary for this attribute.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.16 NAME 'FAItemplateFile'
+ DESC 'Store complete template files'
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE)
+
+# Name : FAItemplatePath
+# Description: Keeps the path used for template files. See FAItemplateFile
+# for more informations.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.17 NAME 'FAItemplatePath'
+ DESC 'Store template file storage path'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIowner
+# Description: Keeps the owner used for template files. Put in the unix
+# way like user.group.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.18 NAME 'FAIowner'
+ DESC 'Store template file storage path'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAImode
+# Description: Keeps the file mode used for template files. Put in the unix
+# way like 775.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.19 NAME 'FAImode'
+ DESC 'Store template file storage path'
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE)
+
+# Name : FAIstatus
+# Desrciption: Normally the fai daemon should set the status flag to the
+# current status. Possible states are:
+# * update-needed
+# * update-running
+# * update-failed
+# * update-ok
+# * install-running
+# * install-failed
+# * install-ok
+# Additional informations can be taken from the log files if
+# some machine is set to -failed.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.20 NAME 'FAIstatus'
+ DESC 'Store FAI progress status'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIpackagelistDependency
+# Description: This field stores dependency informations for package lists.
+# It is used to install i.e. ati specific packages when the
+# hardware detection detects ATI gfx cards.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.21 NAME 'FAIpackagelistDependency'
+ DESC 'Store package lists where we depend from'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIpartitionSize
+# Description: Store a size or a size range for partitions. I.e. 50,
+# 50-200.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.22 NAME 'FAIpartitionSize'
+ DESC 'Store size range for partition size'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIpartitionFlags
+# Description: Optionally this flag contains the "preserve" keyword, in
+# order to influence partitioning.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.23 NAME 'FAIpartitionFlags'
+ DESC 'Optional flags like "preserve"'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIdebianMirror
+# Description: Used for bootstrap sources.list settings. It contains
+# the mirror server url.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.24 NAME 'FAIdebianMirror'
+ DESC 'TODO'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIdebianRelease
+# Description: Used for bootstrap sources.list settings. It contains
+# the release.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.25 NAME 'FAIdebianRelease'
+ DESC 'TODO'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE)
+
+# Name : FAIdebianSection
+# Description: Used for bootstrap sources.list settings. It contains
+# the section. Multiple Sections get appended.
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.26 NAME 'FAIdebianSection'
+ DESC 'TODO'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
+
+# Name : FAIrepository
+# Description: Used to store repository settings
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.27 NAME 'FAIrepository'
+ DESC 'TODO'
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
+
+# Name : FAIstate
+# Description: Used to store repository state (branched/freezed)
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.28 NAME 'FAIstate'
+ DESC 'TODO'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
+
+# Name : FAIrelease
+# Description: Used to store the release
+attributetype ( 1.3.6.1.4.1.10098.1.1.5.29 NAME 'FAIrelease'
+ DESC 'TODO'
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26)
+
+##
+## Object class definitions (allocated from the GONICUS oid space)
+##
+
+# Name : FAIclass
+# Description: FAIclass is the basic container wich includes a
+# common name and a description.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.1 NAME 'FAIclass'
+ SUP top STRUCTURAL
+ DESC 'Generic class parent for FAI objects'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAIprofile
+# Description: FAIprofile which bundles a set of FAIclass entries
+# like FAIpartition and FAIpackageList. It is used
+# to simplify administration tasks for so called junior
+# administrators.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.2 NAME 'FAIprofile'
+ SUP top AUXILIARY
+ DESC 'FAI profile container for multiple class objects'
+ MUST ( cn $ FAIclass ) MAY ( FAIstate $ description ) )
+
+# Name : FAIpartitionTable
+# Description: Each installation profile should contain a partition
+# table in order to perform well. FAIpartitionTable is
+# a container for partition entries.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.3 NAME 'FAIpartitionTable'
+ SUP top AUXILIARY
+ DESC 'Stores FAI partition tables'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAIpartitionDisk
+# Description: Each installation profile should contain a partition
+# table in order to perform well. FAIpartitionTable is
+# a container for partition entries.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.4 NAME 'FAIpartitionDisk'
+ SUP top AUXILIARY
+ DESC 'Stores FAI partition tables'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAIpartitionEntry
+# Description: This object defines a single partition entry for the
+# FAI partitioner.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.5 NAME 'FAIpartitionEntry'
+ SUP top AUXILIARY
+ DESC 'One partition table entry'
+ MUST ( FAIpartitionType $ FAIpartitionNr $ FAIfsType $
+ FAImountPoint $ FAIpartitionSize $ cn )
+ MAY ( FAImountOptions $ FAIfsOptions $ FAIpartitionFlags $
+ description $ FAIstate ) )
+
+# Name : FAIhook
+# Description: Container for hooks
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.6 NAME 'FAIhook'
+ SUP top AUXILIARY
+ DESC 'Stores FAI partition tables'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAIhookEntry
+# Description: Hooks are stored with their FAI task inside the
+# FAIhook object.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.7 NAME 'FAIhookEntry'
+ SUP top AUXILIARY
+ DESC 'FAI hook storage'
+ MUST ( cn $ FAIscript $ FAItask ) MAY ( FAIstate $ description ) )
+
+# Name : FAIscriptEntry
+# Description: Container for scripts
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.8 NAME 'FAIscriptEntry'
+ SUP top AUXILIARY
+ DESC 'FAI script storage'
+ MUST ( cn $ FAIscript $ FAIpriority ) MAY ( FAIstate $ description ) )
+
+# Name : FAIscript
+# Description: Hooks and scripts are somewhat similar.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.9 NAME 'FAIscript'
+ SUP top AUXILIARY
+ DESC 'FAI script storage'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAIvariable
+# Description: Store a set of variables in this container.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.10 NAME 'FAIvariable'
+ SUP top AUXILIARY
+ DESC 'Stores FAI variables sub entries'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAIvariableEntry
+# Description: Stores a single variable.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.11 NAME 'FAIvariableEntry'
+ SUP top AUXILIARY
+ DESC 'Stores single variable entries'
+ MUST ( cn $ FAIvariableContent ) MAY ( FAIstate $ description ) )
+
+# Name : FAIpackagelist
+# Description: Stores a complete package list and is container
+# for several FAIdebconfInfo scripts
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.12 NAME 'FAIpackageList'
+ SUP top AUXILIARY
+ DESC 'Stores complete package lists'
+ MUST ( cn $ FAIpackage ) MAY ( FAIpackagelistDependency $ FAIinstallMethod $ description $ FAIstate ) )
+
+# Name : FAItemplate
+# Description: Container for template objects.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.13 NAME 'FAItemplate'
+ SUP top AUXILIARY
+ DESC 'Container for template objects'
+ MUST ( cn ) MAY ( FAIstate $ description ) )
+
+# Name : FAItemplateEntry
+# Description: Stores FAI templates and the corresponding path.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.14 NAME 'FAItemplateEntry'
+ SUP top AUXILIARY
+ DESC 'Stores real file templates'
+ MUST ( cn $ FAItemplateFile $ FAItemplatePath $ FAIowner $ FAImode )
+ MAY ( FAIstate $ description ) )
+
+# Name : FAIdebconfInfo
+# Description: Stores debconf information like shown in
+# debconf-getselections.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.15 NAME 'FAIdebconfInfo'
+ SUP top STRUCTURAL
+ DESC 'Stores debconf informations for single packages'
+ MUST ( FAIpackage $ FAIvariable $ FAIvariableType ) MAY ( FAIvariableContent $ FAIstate ) )
+
+# Name : FAIobject
+# Description: Marks objects to have a set of FAI classes.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.16 NAME 'FAIobject'
+ SUP top AUXILIARY
+ DESC 'Marks an object as an FAI object.'
+ MAY ( FAIstate $ FAIstatus $ FAIclass $ FAIdebianMirror $ macAddress) )
+
+# Name : FAIrepository
+# Description: Marks objects to have a set of FAI classes.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.17 NAME 'FAIrepository'
+ SUP top AUXILIARY
+ DESC 'Provides per object repository informations.'
+ MUST ( FAIdebianRelease $ FAIdebianSection ) MAY ( FAIdebianMirror ) )
+
+# Name : FAIrepositoryServer
+# Description: FAIrepositoryServer stores information about repository settings.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.18 NAME 'FAIrepositoryServer'
+ SUP top AUXILIARY
+ DESC 'Provides repository informations.'
+ MAY ( FAIrepository ) )
+
+# Name : FAIbranch
+# Description: FAIbranch stores information about the state of a set of FAI classes.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.19 NAME 'FAIbranch'
+ SUP top AUXILIARY
+ DESC 'Provides information for versioning.'
+ MAY ( FAIstate ) )
+
+# Name : FAIreleaseTag
+# Description: FAIreleaseTag stores information about the fai release of an object.
+objectclass (1.3.6.1.4.1.10098.1.2.1.40.20 NAME 'FAIreleaseTag'
+ SUP top AUXILIARY
+ DESC 'Provides information for versioning.'
+ MAY ( FAIrelease ) )
+
+### END of FAI schema file