/** * This returns the metadata describing the system settings. * * @param config the current configuration settings from the server. Some values will be converted * to the types the definition will expect - for example, the JAAS setting will not be "LDAP" * or "JDBC" as the server would know it, rather the value will be "true" or "false" (i.e. is * ldap enabled or not?) * @param driftPlugins the set of drift server plugins that are currently deployed * @return system settings config def */ private ConfigurationDefinition getSystemSettingsDefinition( Configuration config, Map<String, String> driftPlugins) { ConfigurationDefinition def = new ConfigurationDefinition("sysset", MSG.view_adminConfig_systemSettings()); /////////////////////////////////// // General Configuration Properties PropertyGroupDefinition generalGroup = new PropertyGroupDefinition("general"); generalGroup.setDisplayName(MSG.view_admin_systemSettings_group_general()); generalGroup.setDefaultHidden(false); generalGroup.setOrder(0); PropertyDefinitionSimple baseUrl = new PropertyDefinitionSimple( Constant.BaseURL, MSG.view_admin_systemSettings_BaseURL_desc(), true, PropertySimpleType.STRING); baseUrl.setDisplayName(MSG.view_admin_systemSettings_BaseURL_name()); baseUrl.setPropertyGroupDefinition(generalGroup); baseUrl.setDefaultValue("http://localhost:7080"); def.put(baseUrl); PropertyDefinitionSimple agentMaxQuietTimeAllowed = new PropertyDefinitionSimple( Constant.AgentMaxQuietTimeAllowed, MSG.view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc(), true, PropertySimpleType.INTEGER); agentMaxQuietTimeAllowed.setDisplayName( MSG.view_admin_systemSettings_AgentMaxQuietTimeAllowed_name()); agentMaxQuietTimeAllowed.setPropertyGroupDefinition(generalGroup); agentMaxQuietTimeAllowed.addConstraints( new IntegerRangeConstraint( Long.valueOf(2), null)); // don't allow less than 2m since it will cause too many false backfills agentMaxQuietTimeAllowed.setDefaultValue("15"); def.put(agentMaxQuietTimeAllowed); PropertyDefinitionSimple enableAgentAutoUpdate = new PropertyDefinitionSimple( Constant.EnableAgentAutoUpdate, MSG.view_admin_systemSettings_EnableAgentAutoUpdate_desc(), true, PropertySimpleType.BOOLEAN); enableAgentAutoUpdate.setDisplayName( MSG.view_admin_systemSettings_EnableAgentAutoUpdate_name()); enableAgentAutoUpdate.setPropertyGroupDefinition(generalGroup); enableAgentAutoUpdate.setDefaultValue("true"); def.put(enableAgentAutoUpdate); PropertyDefinitionSimple enableDebugMode = new PropertyDefinitionSimple( Constant.EnableDebugMode, MSG.view_admin_systemSettings_EnableDebugMode_desc(), true, PropertySimpleType.BOOLEAN); enableDebugMode.setDisplayName(MSG.view_admin_systemSettings_EnableDebugMode_name()); enableDebugMode.setPropertyGroupDefinition(generalGroup); enableDebugMode.setDefaultValue("false"); def.put(enableDebugMode); PropertyDefinitionSimple enableExperimentalFeatures = new PropertyDefinitionSimple( Constant.EnableExperimentalFeatures, MSG.view_admin_systemSettings_EnableExperimentalFeatures_desc(), true, PropertySimpleType.BOOLEAN); enableExperimentalFeatures.setDisplayName( MSG.view_admin_systemSettings_EnableExperimentalFeatures_name()); enableExperimentalFeatures.setPropertyGroupDefinition(generalGroup); enableExperimentalFeatures.setDefaultValue("false"); def.put(enableExperimentalFeatures); //////////////////////////////////////// // Data Manager Configuration Properties PropertyGroupDefinition dataManagerGroup = new PropertyGroupDefinition("datamanager"); dataManagerGroup.setDisplayName(MSG.view_admin_systemSettings_group_dataMgr()); dataManagerGroup.setDefaultHidden(false); dataManagerGroup.setOrder(1); PropertyDefinitionSimple dataMaintenance = new PropertyDefinitionSimple( Constant.DataMaintenance, MSG.view_admin_systemSettings_DataMaintenance_desc(), true, PropertySimpleType.INTEGER); dataMaintenance.setDisplayName(MSG.view_admin_systemSettings_DataMaintenance_name()); dataMaintenance.setPropertyGroupDefinition(dataManagerGroup); dataMaintenance.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); dataMaintenance.setDefaultValue("1"); def.put(dataMaintenance); PropertyDefinitionSimple availabilityPurge = new PropertyDefinitionSimple( Constant.AvailabilityPurge, MSG.view_admin_systemSettings_AvailabilityPurge_desc(), true, PropertySimpleType.INTEGER); availabilityPurge.setDisplayName(MSG.view_admin_systemSettings_AvailabilityPurge_name()); availabilityPurge.setPropertyGroupDefinition(dataManagerGroup); availabilityPurge.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); availabilityPurge.setDefaultValue("365"); def.put(availabilityPurge); PropertyDefinitionSimple alertPurge = new PropertyDefinitionSimple( Constant.AlertPurge, MSG.view_admin_systemSettings_AlertPurge_desc(), true, PropertySimpleType.INTEGER); alertPurge.setDisplayName(MSG.view_admin_systemSettings_AlertPurge_name()); alertPurge.setPropertyGroupDefinition(dataManagerGroup); alertPurge.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); alertPurge.setDefaultValue("31"); def.put(alertPurge); PropertyDefinitionSimple traitPurge = new PropertyDefinitionSimple( Constant.TraitPurge, MSG.view_admin_systemSettings_TraitPurge_desc(), true, PropertySimpleType.INTEGER); traitPurge.setDisplayName(MSG.view_admin_systemSettings_TraitPurge_name()); traitPurge.setPropertyGroupDefinition(dataManagerGroup); traitPurge.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); traitPurge.setDefaultValue("365"); def.put(traitPurge); PropertyDefinitionSimple rtDataPurge = new PropertyDefinitionSimple( Constant.RtDataPurge, MSG.view_admin_systemSettings_RtDataPurge_desc(), true, PropertySimpleType.INTEGER); rtDataPurge.setDisplayName(MSG.view_admin_systemSettings_RtDataPurge_name()); rtDataPurge.setPropertyGroupDefinition(dataManagerGroup); rtDataPurge.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); rtDataPurge.setDefaultValue("31"); def.put(rtDataPurge); PropertyDefinitionSimple eventPurge = new PropertyDefinitionSimple( Constant.EventPurge, MSG.view_admin_systemSettings_EventPurge_desc(), true, PropertySimpleType.INTEGER); eventPurge.setDisplayName(MSG.view_admin_systemSettings_EventPurge_name()); eventPurge.setPropertyGroupDefinition(dataManagerGroup); eventPurge.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); eventPurge.setDefaultValue("14"); def.put(eventPurge); PropertyDefinitionSimple driftFilePurge = new PropertyDefinitionSimple( Constant.DriftFilePurge, MSG.view_admin_systemSettings_DriftFilePurge_desc(), true, PropertySimpleType.INTEGER); driftFilePurge.setDisplayName(MSG.view_admin_systemSettings_DriftFilePurge_name()); driftFilePurge.setPropertyGroupDefinition(dataManagerGroup); driftFilePurge.addConstraints(new IntegerRangeConstraint(Long.valueOf(1), null)); driftFilePurge.setDefaultValue("31"); def.put(driftFilePurge); PropertyDefinitionSimple dataReindex = new PropertyDefinitionSimple( Constant.DataReindex, MSG.view_admin_systemSettings_DataReindex_desc(), true, PropertySimpleType.BOOLEAN); dataReindex.setDisplayName(MSG.view_admin_systemSettings_DataReindex_name()); dataReindex.setPropertyGroupDefinition(dataManagerGroup); dataReindex.setDefaultValue("true"); def.put(dataReindex); ////////////////////////////////////////////// // Automatic Baseline Configuration Properties PropertyGroupDefinition baselineGroup = new PropertyGroupDefinition("baseline"); baselineGroup.setDisplayName(MSG.view_admin_systemSettings_group_baseline()); baselineGroup.setDefaultHidden(false); baselineGroup.setOrder(2); PropertyDefinitionSimple baselineFrequency = new PropertyDefinitionSimple( Constant.BaselineFrequency, MSG.view_admin_systemSettings_BaselineFrequency_desc(), true, PropertySimpleType.INTEGER); baselineFrequency.setDisplayName(MSG.view_admin_systemSettings_BaselineFrequency_name()); baselineFrequency.setPropertyGroupDefinition(baselineGroup); baselineFrequency.addConstraints(new IntegerRangeConstraint(Long.valueOf(0), null)); baselineFrequency.setDefaultValue("3"); def.put(baselineFrequency); PropertyDefinitionSimple baselineDataSet = new PropertyDefinitionSimple( Constant.BaselineDataSet, MSG.view_admin_systemSettings_BaselineDataSet_desc(), true, PropertySimpleType.INTEGER); baselineDataSet.setDisplayName(MSG.view_admin_systemSettings_BaselineDataSet_name()); baselineDataSet.setPropertyGroupDefinition(baselineGroup); baselineDataSet.addConstraints( new IntegerRangeConstraint( Long.valueOf(1), Long.valueOf(14))); // can't do more than 14 days since our raw tables don't hold more baselineDataSet.setDefaultValue("7"); def.put(baselineDataSet); //////////////////////////////// // LDAP Configuration Properties PropertyGroupDefinition ldapGroup = new PropertyGroupDefinition("ldap"); ldapGroup.setDisplayName(MSG.view_admin_systemSettings_group_ldap()); ldapGroup.setDefaultHidden( !Boolean.parseBoolean( config.getSimpleValue(Constant.JAASProvider, "false"))); // show if LDAP is in use ldapGroup.setOrder(3); PropertyDefinitionSimple jaasProvider = new PropertyDefinitionSimple( Constant.JAASProvider, MSG.view_admin_systemSettings_JAASProvider_desc(), true, PropertySimpleType.BOOLEAN); jaasProvider.setDisplayName(MSG.view_admin_systemSettings_JAASProvider_name()); jaasProvider.setPropertyGroupDefinition(ldapGroup); jaasProvider.setDefaultValue("false"); def.put(jaasProvider); PropertyDefinitionSimple ldapUrl = new PropertyDefinitionSimple( Constant.LDAPUrl, MSG.view_admin_systemSettings_LDAPUrl_desc(), true, PropertySimpleType.STRING); ldapUrl.setDisplayName(MSG.view_admin_systemSettings_LDAPUrl_name()); ldapUrl.setPropertyGroupDefinition(ldapGroup); ldapUrl.setDefaultValue("ldap://localhost"); def.put(ldapUrl); PropertyDefinitionSimple ldapProtocol = new PropertyDefinitionSimple( Constant.LDAPProtocol, MSG.view_admin_systemSettings_LDAPProtocol_desc(), true, PropertySimpleType.BOOLEAN); ldapProtocol.setDisplayName(MSG.view_admin_systemSettings_LDAPProtocol_name()); ldapProtocol.setPropertyGroupDefinition(ldapGroup); ldapProtocol.setDefaultValue("false"); def.put(ldapProtocol); PropertyDefinitionSimple ldapLoginProperty = new PropertyDefinitionSimple( Constant.LDAPLoginProperty, MSG.view_admin_systemSettings_LDAPLoginProperty_desc(), false, PropertySimpleType.STRING); ldapLoginProperty.setDisplayName(MSG.view_admin_systemSettings_LDAPLoginProperty_name()); ldapLoginProperty.setPropertyGroupDefinition(ldapGroup); ldapLoginProperty.setDefaultValue("cn"); def.put(ldapLoginProperty); PropertyDefinitionSimple ldapFilter = new PropertyDefinitionSimple( Constant.LDAPFilter, MSG.view_admin_systemSettings_LDAPFilter_desc(), false, PropertySimpleType.STRING); ldapFilter.setDisplayName(MSG.view_admin_systemSettings_LDAPFilter_name()); ldapFilter.setPropertyGroupDefinition(ldapGroup); ldapFilter.setDefaultValue(""); def.put(ldapFilter); PropertyDefinitionSimple ldapGroupFilter = new PropertyDefinitionSimple( Constant.LDAPGroupFilter, MSG.view_admin_systemSettings_LDAPGroupFilter_desc(), false, PropertySimpleType.STRING); ldapGroupFilter.setDisplayName(MSG.view_admin_systemSettings_LDAPGroupFilter_name()); ldapGroupFilter.setPropertyGroupDefinition(ldapGroup); ldapGroupFilter.setDefaultValue("rhqadmin"); def.put(ldapGroupFilter); PropertyDefinitionSimple ldapGroupMember = new PropertyDefinitionSimple( Constant.LDAPGroupMember, MSG.view_admin_systemSettings_LDAPGroupMember_desc(), false, PropertySimpleType.STRING); ldapGroupMember.setDisplayName(MSG.view_admin_systemSettings_LDAPGroupMember_name()); ldapGroupMember.setPropertyGroupDefinition(ldapGroup); ldapGroupMember.setDefaultValue(""); def.put(ldapGroupMember); PropertyDefinitionSimple ldapBaseDN = new PropertyDefinitionSimple( Constant.LDAPBaseDN, MSG.view_admin_systemSettings_LDAPBaseDN_desc(), false, PropertySimpleType.STRING); ldapBaseDN.setDisplayName(MSG.view_admin_systemSettings_LDAPBaseDN_name()); ldapBaseDN.setPropertyGroupDefinition(ldapGroup); ldapBaseDN.setDefaultValue("o=RedHat,c=US"); def.put(ldapBaseDN); PropertyDefinitionSimple ldapBindDN = new PropertyDefinitionSimple( Constant.LDAPBindDN, MSG.view_admin_systemSettings_LDAPBindDN_desc(), false, PropertySimpleType.STRING); ldapBindDN.setDisplayName(MSG.view_admin_systemSettings_LDAPBindDN_name()); ldapBindDN.setPropertyGroupDefinition(ldapGroup); ldapBindDN.setDefaultValue(""); def.put(ldapBindDN); PropertyDefinitionSimple ldapBindPW = new PropertyDefinitionSimple( Constant.LDAPBindPW, MSG.view_admin_systemSettings_LDAPBindPW_desc(), false, PropertySimpleType.PASSWORD); ldapBindPW.setDisplayName(MSG.view_admin_systemSettings_LDAPBindPW_name()); ldapBindPW.setPropertyGroupDefinition(ldapGroup); ldapBindPW.setDefaultValue(""); def.put(ldapBindPW); /////////////////////////////////////////// // Drift Server Configuration Properties // /////////////////////////////////////////// PropertyGroupDefinition driftGroup = new PropertyGroupDefinition("drift"); driftGroup.setDisplayName(MSG.view_admin_systemSettings_group_drift()); driftGroup.setOrder(4); driftGroup.setDefaultHidden(false); PropertyDefinitionSimple activeDriftServer = new PropertyDefinitionSimple( Constant.ACTIVE_DRIFT_PLUGIN, MSG.view_admin_systemSettings_ActiveDriftServerPlugin_desc(), true, PropertySimpleType.STRING); activeDriftServer.setDisplayName(MSG.view_admin_systemSettings_ActiveDriftServerPlugin_name()); activeDriftServer.setPropertyGroupDefinition(driftGroup); List<PropertyDefinitionEnumeration> options = new ArrayList<PropertyDefinitionEnumeration>(); for (Map.Entry<String, String> entry : driftPlugins.entrySet()) { options.add(new PropertyDefinitionEnumeration(entry.getValue(), entry.getKey())); } activeDriftServer.setEnumeratedValues(options, false); def.put(activeDriftServer); // // if the config is missing any properties for which we have defaults, set them to their // defaults // Map<String, PropertyDefinition> allDefinitions = def.getPropertyDefinitions(); for (Map.Entry<String, PropertyDefinition> defEntry : allDefinitions.entrySet()) { String propertyName = defEntry.getKey(); PropertyDefinition propertyDef = defEntry.getValue(); if (config.get(propertyName) == null) { if (propertyDef instanceof PropertyDefinitionSimple && ((PropertyDefinitionSimple) propertyDef).getDefaultValue() != null) { config.put( new PropertySimple( propertyName, ((PropertyDefinitionSimple) propertyDef).getDefaultValue())); } } } return def; }