*/
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, adminDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, adminDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
SchemaConstants.TOP_OC,
SchemaConstants.PERSON_OC,
SchemaConstants.ORGANIZATIONAL_PERSON_OC,
SchemaConstants.INET_ORG_PERSON_OC );
serverEntry.put( SchemaConstants.UID_AT, PartitionNexus.ADMIN_UID );
serverEntry.put( SchemaConstants.USER_PASSWORD_AT, PartitionNexus.ADMIN_PASSWORD_BYTES );
serverEntry.put( SchemaConstants.DISPLAY_NAME_AT, "Directory Superuser" );
serverEntry.put( SchemaConstants.CN_AT, "system administrator" );
serverEntry.put( SchemaConstants.SN_AT, "administrator" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.put( SchemaConstants.DISPLAY_NAME_AT, "Directory Superuser" );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
TlsKeyGenerator.addKeyPair( serverEntry );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create system users area
// -------------------------------------------------------------------
Map<String,OidNormalizer> oidsMap = schemaManager.getNormalizerMapping();
DN userDn = new DN( ServerDNConstants.USERS_SYSTEM_DN );
userDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, userDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, userDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
SchemaConstants.TOP_OC,
SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "users" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create system groups area
// -------------------------------------------------------------------
DN groupDn = new DN( ServerDNConstants.GROUPS_SYSTEM_DN );
groupDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, groupDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, groupDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
SchemaConstants.TOP_OC,
SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "groups" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create administrator group
// -------------------------------------------------------------------
DN name = new DN( ServerDNConstants.ADMINISTRATORS_GROUP_DN );
name.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, name ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, name );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
SchemaConstants.TOP_OC,
SchemaConstants.GROUP_OF_UNIQUE_NAMES_OC );
serverEntry.put( SchemaConstants.CN_AT, "Administrators" );
serverEntry.put( SchemaConstants.UNIQUE_MEMBER_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
// TODO - confirm if we need this at all since the
// group cache on initialization after this stage will
// search the directory for all the groups anyway
// Interceptor authzInterceptor = interceptorChain.get( AciAuthorizationInterceptor.class.getName() );
//
// if ( authzInterceptor == null )
// {
// LOG.error( "The Authorization service is null : this is not allowed" );
// throw new NamingException( "The Authorization service is null" );
// }
//
// if ( !( authzInterceptor instanceof AciAuthorizationInterceptor ) )
// {
// LOG.error( "The Authorization service is not set correctly : '{}' is an incorect interceptor",
// authzInterceptor.getClass().getName() );
// throw new NamingException( "The Authorization service is incorrectly set" );
//
// }
//
// AciAuthorizationInterceptor authzSrvc = ( AciAuthorizationInterceptor ) authzInterceptor;
// authzSrvc.cacheNewGroup( name, serverEntry );
}
// -------------------------------------------------------------------
// create system configuration area
// -------------------------------------------------------------------
DN configurationDn = new DN( "ou=configuration,ou=system" );
configurationDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, configurationDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, configurationDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "configuration" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create system configuration area for partition information
// -------------------------------------------------------------------
DN partitionsDn = new DN( "ou=partitions,ou=configuration,ou=system" );
partitionsDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, partitionsDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, partitionsDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "partitions" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create system configuration area for services
// -------------------------------------------------------------------
DN servicesDn = new DN( "ou=services,ou=configuration,ou=system" );
servicesDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, servicesDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, servicesDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "services" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create system configuration area for interceptors
// -------------------------------------------------------------------
DN interceptorsDn = new DN( "ou=interceptors,ou=configuration,ou=system" );
interceptorsDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, interceptorsDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, interceptorsDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT, SchemaConstants.TOP_OC, SchemaConstants.ORGANIZATIONAL_UNIT_OC );
serverEntry.put( SchemaConstants.OU_AT, "interceptors" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
// -------------------------------------------------------------------
// create system preferences area
// -------------------------------------------------------------------
DN sysPrefRootDn = new DN( ServerDNConstants.SYSPREFROOT_SYSTEM_DN );
sysPrefRootDn.normalize( oidsMap );
if ( !partitionNexus.hasEntry( new EntryOperationContext( adminSession, sysPrefRootDn ) ) )
{
firstStart = true;
ServerEntry serverEntry = new DefaultServerEntry( schemaManager, sysPrefRootDn );
serverEntry.put( SchemaConstants.OBJECT_CLASS_AT,
SchemaConstants.TOP_OC,
SchemaConstants.ORGANIZATIONAL_UNIT_OC,
SchemaConstants.EXTENSIBLE_OBJECT_OC );
serverEntry.put( "prefNodeName", "sysPrefRoot" );
serverEntry.put( SchemaConstants.CREATORS_NAME_AT, ServerDNConstants.ADMIN_SYSTEM_DN_NORMALIZED );
serverEntry.put( SchemaConstants.CREATE_TIMESTAMP_AT, DateUtils.getGeneralizedTime() );
serverEntry.add( SchemaConstants.ENTRY_CSN_AT, getCSN().toString() );
serverEntry.add( SchemaConstants.ENTRY_UUID_AT, UUID.randomUUID().toString() );
partitionNexus.add( new AddOperationContext( adminSession, serverEntry ) );
}
return firstStart;