Creating the CoS Definition Entry From the Command
Line

All CoS definition entries have the LDAPsubentry object
class and inherit from the cosSuperDefinition object class. In addition,
each type of CoS inherits from specific object classes and contains the corresponding
attributes. The following table lists the object classes and attributes that
are associated with each type of CoS definition entry.

Table 9–1 Object Classes and Attributes in CoS
Definition Entries

CoS Type

CoS Definition Entry

Pointer CoS

objectclass: top

objectclass: LDAPsubentry

objectclass: cosSuperDefinition

objectclass: cosPointerDefinition

cosTemplateDN:DN

cosAttribute:attributeNameoverridemerge

Indirect CoS

objectclass: top

objectclass: LDAPsubentry

objectclass: cosSuperDefinition

objectclass: cosIndirectDefinition

cosIndirectSpecifier:attributeName

cosAttribute:attributeNameoverridemerge

Classic CoS

objectclass: top

objectclass: LDAPsubentry

objectclass: cosSuperDefinition

objectclass: cosClassicDefinition

cosTemplateDN:DN

cosSpecifier:attributeName

cosAttribute:attributeNameoverridemerge

In all cases, cosAttribute is multivalued. Each value
defines an attribute that is generated by the CoS mechanism.

Defines the name of the computed attribute for which you want to generate
a value. This attribute is multivalued, and each value represents the name
of an attribute whose value is generated from the template. The override and merge qualifiers specify how
the CoS attribute value is computed in special cases described following this
table.

The attributeName cannot contain any subtypes.
Attribute names with subtypes are ignored, but other values of cosAttribute are processed.

cosIndirectSpecifier

attributeName

Defines the name of the attribute in target entries whose value is used
by indirect CoS to identify the template entry. The named attribute is called
the specifier and must contain a full DN string in each target entry. This
attribute is single-valued, but the attributeName can
be multivalued to designate multiple templates.

cosSpecifier

attributeName

Defines the name of the attribute in target entries whose value is used
by classic CoS to identify the template entry. The named attribute is called
the specifier and must contain a string that can be found in the RDN of template
entries. This attribute is single-valued, but the attributeName can
be multivalued to designate multiple templates.

cosTemplateDN

DN

Provides the full DN of the template entry for a pointer CoS definition
or the base DN of the template entry for classic CoS. This attribute is single-valued.

Note –

You cannot use the isMemberOf attribute as
a CosSpecifier to make all the members of static groups
automatically inherit from a common computed attribute value.

The cosAttribute attribute allows two qualifiers
following the name of the CoS attribute, the override qualifier and the merge
qualifier.

The override qualifier describes the behavior
when an attribute that is dynamically generated by CoS already physically
exists in the entry. The override qualifier can
be one of the following:

default (or no qualifier) - Indicates that
the server does not override a real attribute value stored in the entry when
the attribute is of the same type as the computed attribute.

override - Indicates
that the server always returns the value generated by the CoS, even when a
value is stored with the entry.

operational - Indicates
that the attribute will only be returned if it is explicitly requested in
the search. Operational attributes do not need to pass a schema check to be
returned. The operational qualifier has the same behavior
as the override qualifier.

You can only make
an attribute operational if the attribute is also defined as operational in
the schema. For example, if your CoS generates a value for the description attribute, you cannot use the operational qualifier
because the description attribute is not marked operational
in the schema.

The merge qualifier is either absent or merge-schemes. This qualifier allows the computed CoS attribute
to be multivalued, either from multiple templates or multiple CoS definitions.
For more information, see Multivalued CoS Attributes.

Overriding Real Attribute Values

You might create a pointer CoS definition entry that contains an override qualifier as follows:

This pointer CoS definition entry indicates that the entry is associated
with the template entry cn=exampleUS,cn=data that generates
the value of the postalCode attribute. The override qualifier
indicates that this value takes precedence over the value of the postalCode attribute if the attribute exists in a target entry.

Note –

If the CoS attribute is defined with the operational or override qualifiers, you cannot perform write operations on the “real”
value of that attribute in any entry in the CoS scope.

Multivalued CoS Attributes

When you specify the merge-schemes qualifier, the generated CoS attribute can be multivalued in two
ways:

With indirect or classic CoS, the specifier attributes in
target entries can be multivalued. In this case, each value determines a template,
and the value from each template is part of the generated value.

Multiple CoS definition entries of any type can contain the
same attribute name in their cosAttribute. In this case,
if all definitions contain the merge-schemes qualifier,
the generated attribute contains all values computed by each definition.

The two situations can occur together and define even more values. However,
in all cases, duplicate values will only be returned one time in a generated
attribute.

In the absence of the merge-schemes qualifier, the cosPriority attribute of the template entry is used to determine
a single value among all templates for the generated attribute. This scenario
is described in the next section.

The merge-schemes qualifier never merges a “real”
value that is defined in the target with generated values from the templates.
The merge qualifier is independent of the override qualifier. All pairings are possible, and the behaviors
implied by each are complimentary. Also, the qualifiers can be specified in
any order after the attribute name.

Note –

When there are multiple CoS definitions for the same attribute,
the definitions must all have the same override and merge qualifiers. When different pairs of qualifiers occur in
CoS definitions, one of the combinations is selected arbitrarily among all
definitions.

CoS Attribute Priority

If multiple CoS definitions or multivalued specifiers exist, but
no merge-schemes qualifier, Directory Server uses a
priority attribute to select a single template that defines the single value
of the computed attribute.

The cosPriority attribute represents the global priority of a particular
template among all those being considered. A priority of zero is the highest
priority. Templates that contain no cosPriority attribute
are considered the lowest priority. When two or more templates provide an
attribute value but have the same or no priority, a value is chosen arbitrarily.

Template priorities are not taken into account when using the merge-schemes qualifier. When merging, all templates being considered define
a value regardless of any priority that the templates define. The cosPriority attribute is defined on CoS template entries as described in the
following section.

Note –

The cosPriority attribute must not have a negative
value. Also, attributes generated by indirect CoS do not support priority.
Do not use cosPriority in template entries of an indirect
CoS definition.