[rhq] Branch 'nagios' - modules/plugins
by Heiko W. Rupp
modules/plugins/nagios/src/main/java/org/rhq/plugins/nagios/NagiosMonitorDiscovery.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 80603bc0f3749e4d71fc8a2b376570ed8d967229
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Sep 17 11:28:09 2010 +0200
Fix small typo
diff --git a/modules/plugins/nagios/src/main/java/org/rhq/plugins/nagios/NagiosMonitorDiscovery.java b/modules/plugins/nagios/src/main/java/org/rhq/plugins/nagios/NagiosMonitorDiscovery.java
index fd79f3b..fc592fa 100644
--- a/modules/plugins/nagios/src/main/java/org/rhq/plugins/nagios/NagiosMonitorDiscovery.java
+++ b/modules/plugins/nagios/src/main/java/org/rhq/plugins/nagios/NagiosMonitorDiscovery.java
@@ -73,7 +73,7 @@ public class NagiosMonitorDiscovery implements ResourceDiscoveryComponent, Manua
public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext discoveryContext) throws Exception {
Set<DiscoveredResourceDetails> discoveredResources = new HashSet<DiscoveredResourceDetails>();
- // If we have no parent, it means the NagioMonitoring server type is not yet up.
+ // If we have no parent, it means the NagiosMonitoring server type is not yet up.
ResourceComponent tmpComponent = discoveryContext.getParentResourceComponent();
if (tmpComponent == null || !(tmpComponent instanceof NagiosMonitorComponent))
return discoveredResources;
13 years, 9 months
[rhq] 3 commits - modules/plugins
by Heiko W. Rupp
modules/plugins/mysql/src/main/java/org/rhq/plugins/mysql/MySqlComponent.java | 19 ++++++----
1 file changed, 13 insertions(+), 6 deletions(-)
New commits:
commit 33544cd9e57622d9484fc8f7a60146c14f9af3de
Merge: b097cf3... 08f582b...
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Sep 17 10:09:38 2010 +0200
Merge branch 'master' of ssh://git.fedorahosted.org/git/rhq/rhq
commit b097cf35ac6c674747e0fc951103ff77a9d4ee57
Merge: b589ac3... 14fd401...
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Sep 16 09:20:23 2010 +0200
Merge branch 'master' of ssh://git.fedorahosted.org/git/rhq/rhq
commit b589ac31791ea0a77666cc638b7e3afa10d91337
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Sep 16 09:18:45 2010 +0200
Don't spam the agent console if the connection fails.
diff --git a/modules/plugins/mysql/src/main/java/org/rhq/plugins/mysql/MySqlComponent.java b/modules/plugins/mysql/src/main/java/org/rhq/plugins/mysql/MySqlComponent.java
index e3da0aa..737634b 100644
--- a/modules/plugins/mysql/src/main/java/org/rhq/plugins/mysql/MySqlComponent.java
+++ b/modules/plugins/mysql/src/main/java/org/rhq/plugins/mysql/MySqlComponent.java
@@ -19,6 +19,8 @@
package org.rhq.plugins.mysql;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
@@ -47,6 +49,7 @@ public class MySqlComponent implements DatabaseComponent, ResourceComponent, Mea
private ResourceContext resourceContext;
private Connection connection;
+ private static final Log log = LogFactory.getLog(MySqlComponent.class);
public void start(ResourceContext resourceContext) throws InvalidPluginConfigurationException, Exception {
this.resourceContext = resourceContext;
@@ -57,7 +60,7 @@ public class MySqlComponent implements DatabaseComponent, ResourceComponent, Mea
try {
this.connection.close();
} catch (SQLException e) {
- e.printStackTrace();
+ log.warn(e);
}
}
@@ -67,7 +70,9 @@ public class MySqlComponent implements DatabaseComponent, ResourceComponent, Mea
getConnection().createStatement().executeQuery("select 1");
return AvailabilityType.UP;
} catch (SQLException e) {
- e.printStackTrace();
+ if (log.isDebugEnabled()) {
+ log.debug("getAvail failed: " + e.getMessage());
+ }
return AvailabilityType.DOWN;
}
}
@@ -105,7 +110,9 @@ public class MySqlComponent implements DatabaseComponent, ResourceComponent, Mea
this.connection = MySqlDiscoveryComponent.buildConnection(resourceContext.getPluginConfiguration());
} catch (SQLException e) {
- e.printStackTrace();
+ if (log.isDebugEnabled()) {
+ log.debug("getAvail failed: " + e.getMessage());
+ }
}
return connection;
}
@@ -146,9 +153,9 @@ public class MySqlComponent implements DatabaseComponent, ResourceComponent, Mea
}
} catch (SQLException ex) {
// handle any errors
- System.out.println("SQLException: " + ex.getMessage());
- System.out.println("SQLState: " + ex.getSQLState());
- System.out.println("VendorError: " + ex.getErrorCode());
+ log.info("SQLException: " + ex.getMessage());
+ log.info("SQLState: " + ex.getSQLState());
+ log.info("VendorError: " + ex.getErrorCode());
}
}
}
13 years, 9 months
[rhq] Branch 'release-3.0.0' - modules/core
by ips
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java | 41 ++++++----
1 file changed, 26 insertions(+), 15 deletions(-)
New commits:
commit 857750112d81abd613857613b356deab5d4de2d3
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Sep 16 18:35:39 2010 -0400
make PC more forgiving if a discovery component returns a Resource details
with a name, version, or description longer than the max length (the PC will
log a warning and then truncate the value to the max length) (fix for https://bugzilla.redhat.com/show_bug.cgi?id=634306)
diff --git a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java
index c175dc3..1693462 100644
--- a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java
+++ b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -22,6 +22,8 @@
*/
package org.rhq.core.pluginapi.inventory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
@@ -47,6 +49,8 @@ public class DiscoveredResourceDetails {
private static final int RESOURCE_VERSION_MAX_LENGTH = 50;
private static final int RESOURCE_DESCRIPTION_MAX_LENGTH = 1000;
+ private final Log log = LogFactory.getLog(this.getClass());
+
private ResourceType resourceType;
private String resourceKey;
private String resourceName;
@@ -134,8 +138,9 @@ public class DiscoveredResourceDetails {
}
if (resourceKey.length() > RESOURCE_KEY_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource key is longer than maximum length (" + RESOURCE_KEY_MAX_LENGTH
- + ") [" + resourceKey + "]");
+ throw new IllegalArgumentException("Plugin error: Resource key [" + resourceKey + "] specified by ["
+ + this.resourceType + "] discovery component is longer than the maximum length ("
+ + RESOURCE_KEY_MAX_LENGTH + ").");
}
this.resourceKey = resourceKey;
@@ -166,11 +171,13 @@ public class DiscoveredResourceDetails {
}
if (resourceName.length() > RESOURCE_NAME_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource name is longer than maximum length ("
- + RESOURCE_NAME_MAX_LENGTH + ") [" + resourceName + "]");
+ log.warn("Plugin error: Resource name [" + resourceName + "] specified by [" + this.resourceType
+ + "] discovery component is longer than the maximum length (" + RESOURCE_NAME_MAX_LENGTH
+ + " - truncating it to " + RESOURCE_NAME_MAX_LENGTH + " characters...");
+ this.resourceName = resourceName.substring(0, RESOURCE_NAME_MAX_LENGTH);
+ } else {
+ this.resourceName = resourceName;
}
-
- this.resourceName = resourceName;
}
/**
@@ -198,11 +205,13 @@ public class DiscoveredResourceDetails {
}
if (resourceVersion.length() > RESOURCE_VERSION_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource version is longer than maximum length ("
- + RESOURCE_VERSION_MAX_LENGTH + ") [" + resourceVersion + "]");
+ log.warn("Plugin error: Resource version [" + resourceVersion + "] specified by [" + this.resourceType
+ + "] discovery component is longer than the maximum length (" + RESOURCE_VERSION_MAX_LENGTH
+ + " - truncating it to " + RESOURCE_VERSION_MAX_LENGTH + " characters...");
+ this.resourceVersion = resourceVersion.substring(0, RESOURCE_VERSION_MAX_LENGTH);
+ } else {
+ this.resourceVersion = resourceVersion;
}
-
- this.resourceVersion = resourceVersion;
}
/**
@@ -228,11 +237,13 @@ public class DiscoveredResourceDetails {
}
if (resourceDescription.length() > RESOURCE_DESCRIPTION_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource description is longer than maximum length ("
- + RESOURCE_DESCRIPTION_MAX_LENGTH + ") [" + resourceDescription + "]");
+ log.warn("Plugin error: Resource description [" + resourceDescription + "] specified by [" + this.resourceType
+ + "] discovery component is longer than the maximum length (" + RESOURCE_DESCRIPTION_MAX_LENGTH
+ + " - truncating it to " + RESOURCE_DESCRIPTION_MAX_LENGTH + " characters...");
+ this.resourceDescription = resourceDescription.substring(0, RESOURCE_DESCRIPTION_MAX_LENGTH);
+ } else {
+ this.resourceDescription = resourceDescription;
}
-
- this.resourceDescription = resourceDescription;
}
/**
13 years, 9 months
[rhq] modules/core modules/enterprise
by ips
modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml | 2
modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml | 7 +
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java | 46 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java | 5 -
4 files changed, 39 insertions(+), 21 deletions(-)
New commits:
commit 08f582bad0e9cbf41aa41f92c1358849c0c6f8f7
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Sep 16 18:27:40 2010 -0400
increase max length of Resource.version from 50 to 100 chars and make PC more forgiving if a discovery component returns a Resource details with a name, version, or description longer than the max length (fix for https://bugzilla.redhat.com/show_bug.cgi?id=634306)
diff --git a/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml b/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
index 3233d47..bf83991 100644
--- a/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
+++ b/modules/core/dbutils/src/main/scripts/dbsetup/inventory-schema.xml
@@ -89,7 +89,7 @@
<column name="INVENTORY_STATUS" type="VARCHAR2" size="20"/>
<column name="CONNECTED" type="BOOLEAN"/>
<column name="DESCRIPTION" type="VARCHAR2" size="1000"/>
- <column name="VERSION" type="VARCHAR2" size="50"/>
+ <column name="VERSION" type="VARCHAR2" size="100"/>
<column name="CTIME" type="LONG"/>
<column name="MTIME" type="LONG"/>
<column name="ITIME" type="LONG"/>
diff --git a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
index f32e5e3..ddb1974 100644
--- a/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
+++ b/modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml
@@ -32,7 +32,7 @@
<schemaSpec version="2.1">
<!-- Keep the columnType VARCHAR2, but increase size;
- (see note for RHQ_ALERT_CONDITION table in alert-schema.xml for more ifo) -->
+ (see note for RHQ_ALERT_CONDITION table in alert-schema.xml for more info) -->
<schema-alterColumn table="RHQ_ALERT_CONDITION" column="OPTION_STATUS" columnType="VARCHAR2" precision="256" />
</schemaSpec>
@@ -3210,6 +3210,11 @@
</schema-directSQL>
</schemaSpec>
+ <schemaSpec version="2.95">
+ <!-- Increase the max length of a Resource's version from 50 to 100. -->
+ <schema-alterColumn table="RHQ_RESOURCE" column="VERSION" columnType="VARCHAR2" precision="100" />
+ </schemaSpec>
+
</dbupgrade>
</target>
</project>
diff --git a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java
index c175dc3..4181721 100644
--- a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java
+++ b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/inventory/DiscoveredResourceDetails.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
+ * Copyright (C) 2005-2010 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -22,6 +22,8 @@
*/
package org.rhq.core.pluginapi.inventory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
@@ -42,9 +44,11 @@ import org.rhq.core.system.ProcessInfo;
* @author John Mazzitelli
*/
public class DiscoveredResourceDetails {
+ private final Log log = LogFactory.getLog(this.getClass());
+
private static final int RESOURCE_KEY_MAX_LENGTH = 500;
private static final int RESOURCE_NAME_MAX_LENGTH = 500;
- private static final int RESOURCE_VERSION_MAX_LENGTH = 50;
+ private static final int RESOURCE_VERSION_MAX_LENGTH = 100;
private static final int RESOURCE_DESCRIPTION_MAX_LENGTH = 1000;
private ResourceType resourceType;
@@ -134,8 +138,9 @@ public class DiscoveredResourceDetails {
}
if (resourceKey.length() > RESOURCE_KEY_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource key is longer than maximum length (" + RESOURCE_KEY_MAX_LENGTH
- + ") [" + resourceKey + "]");
+ throw new IllegalArgumentException("Plugin error: Resource key [" + resourceKey + "] specified by ["
+ + this.resourceType + "] discovery component is longer than the maximum length ("
+ + RESOURCE_KEY_MAX_LENGTH + ").");
}
this.resourceKey = resourceKey;
@@ -166,11 +171,13 @@ public class DiscoveredResourceDetails {
}
if (resourceName.length() > RESOURCE_NAME_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource name is longer than maximum length ("
- + RESOURCE_NAME_MAX_LENGTH + ") [" + resourceName + "]");
+ log.warn("Plugin error: Resource name [" + resourceName + "] specified by [" + this.resourceType
+ + "] discovery component is longer than the maximum length (" + RESOURCE_NAME_MAX_LENGTH
+ + " - truncating it to " + RESOURCE_NAME_MAX_LENGTH + " characters...");
+ this.resourceName = resourceName.substring(0, RESOURCE_NAME_MAX_LENGTH);
+ } else {
+ this.resourceName = resourceName;
}
-
- this.resourceName = resourceName;
}
/**
@@ -198,11 +205,13 @@ public class DiscoveredResourceDetails {
}
if (resourceVersion.length() > RESOURCE_VERSION_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource version is longer than maximum length ("
- + RESOURCE_VERSION_MAX_LENGTH + ") [" + resourceVersion + "]");
+ log.warn("Plugin error: Resource version [" + resourceVersion + "] specified by [" + this.resourceType
+ + "] discovery component is longer than the maximum length (" + RESOURCE_VERSION_MAX_LENGTH
+ + " - truncating it to " + RESOURCE_VERSION_MAX_LENGTH + " characters...");
+ this.resourceVersion = resourceVersion.substring(0, RESOURCE_VERSION_MAX_LENGTH);
+ } else {
+ this.resourceVersion = resourceVersion;
}
-
- this.resourceVersion = resourceVersion;
}
/**
@@ -228,11 +237,13 @@ public class DiscoveredResourceDetails {
}
if (resourceDescription.length() > RESOURCE_DESCRIPTION_MAX_LENGTH) {
- throw new IllegalArgumentException("Resource description is longer than maximum length ("
- + RESOURCE_DESCRIPTION_MAX_LENGTH + ") [" + resourceDescription + "]");
+ log.warn("Plugin error: Resource description [" + resourceDescription + "] specified by [" + this.resourceType
+ + "] discovery component is longer than the maximum length (" + RESOURCE_DESCRIPTION_MAX_LENGTH
+ + " - truncating it to " + RESOURCE_DESCRIPTION_MAX_LENGTH + " characters...");
+ this.resourceDescription = resourceDescription.substring(0, RESOURCE_DESCRIPTION_MAX_LENGTH);
+ } else {
+ this.resourceDescription = resourceDescription;
}
-
- this.resourceDescription = resourceDescription;
}
/**
@@ -339,6 +350,7 @@ public class DiscoveredResourceDetails {
}
}
- return new Configuration(); // there is no default plugin config available, return an empty one
+ // There is no default plugin config template defined - return an empty one.
+ return new Configuration();
}
}
\ No newline at end of file
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
index 6e62db3..1a5e44a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
@@ -1,7 +1,8 @@
/*
* RHQ Management Platform
- * Copyright (C) 2010 Red Hat, Inc.
- * All rights reserved.
+ * Copyright 2010, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
*
* 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
13 years, 9 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java | 2 ++
1 file changed, 2 insertions(+)
New commits:
commit cbda8abbbe6e35206f27bbb95430620f3a702c3e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 17:03:56 2010 -0400
wrap all table cells by default. subclasses are free to override this in configureTable method
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index 5196c71..a0487db 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -186,6 +186,8 @@ public class Table extends LocatableHLayout {
listGrid.setAutoFitData(Autofit.HORIZONTAL);
listGrid.setAlternateRecordStyles(true);
listGrid.setResizeFieldsInRealTime(false);
+ listGrid.setWrapCells(true);
+ listGrid.setFixedRecordHeights(false);
// By default, SmartGWT will disable any rows that have a record named "enabled" with a value of false - setting
// these fields to a bogus field name will disable this behavior. Note, setting them to null does *not* disable
13 years, 9 months
[rhq] 2 commits - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java | 18 ++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java | 53 +++++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java | 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java | 9 +
5 files changed, 64 insertions(+), 23 deletions(-)
New commits:
commit 41e95c0bc4b435c4fbf12495e2110b4c31311c2b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 16:24:59 2010 -0400
able to now create a new alert def and update alert def in the DB
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
index ce834da..818aaca 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsView.java
@@ -25,6 +25,7 @@ import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
+import org.rhq.core.domain.alert.AlertDampening;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.alert.BooleanExpression;
@@ -71,7 +72,7 @@ public abstract class AbstractAlertDefinitionsView extends TableSection {
public void executeAction(ListGridRecord[] selection) {
newButtonPressed(selection);
// I don't think you want this refresh, it will recreate the new alert detail
- //CoreGUI.refresh();
+ //refresh();
}
});
@@ -79,7 +80,7 @@ public abstract class AbstractAlertDefinitionsView extends TableSection {
: SelectionEnablement.NEVER, "Are You Sure?", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
enableButtonPressed(selection);
- CoreGUI.refresh();
+ refresh();
}
});
@@ -87,7 +88,7 @@ public abstract class AbstractAlertDefinitionsView extends TableSection {
: SelectionEnablement.NEVER, "Are You Sure?", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
disableButtonPressed(selection);
- CoreGUI.refresh();
+ refresh();
}
});
@@ -95,7 +96,7 @@ public abstract class AbstractAlertDefinitionsView extends TableSection {
: SelectionEnablement.NEVER, "Are You Sure?", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
deleteButtonPressed(selection);
- CoreGUI.refresh();
+ refresh();
}
});
}
@@ -133,11 +134,14 @@ public abstract class AbstractAlertDefinitionsView extends TableSection {
AlertDefinition newAlertDef = new AlertDefinition();
newAlertDef.setDeleted(false);
newAlertDef.setEnabled(true);
- newAlertDef.setNotifyFiltered(false);
- newAlertDef.setParentId(Integer.valueOf(0));
- newAlertDef.setConditionExpression(BooleanExpression.ALL);
newAlertDef.setPriority(AlertPriority.MEDIUM);
+ newAlertDef.setParentId(Integer.valueOf(0));
+ newAlertDef.setConditionExpression(BooleanExpression.ANY);
newAlertDef.setWillRecover(false);
+ newAlertDef.setRecoveryId(Integer.valueOf(0));
+ newAlertDef.setAlertDampening(new AlertDampening(AlertDampening.Category.NONE));
+ newAlertDef.setNotifyFiltered(false);
+ newAlertDef.setControlFiltered(false);
singleAlertDefinitionView.setAlertDefinition(newAlertDef);
singleAlertDefinitionView.makeEditable();
} else {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
index fcb018d..cbf368d 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
@@ -94,6 +94,16 @@ public class ResourceAlertDefinitionsView extends AbstractAlertDefinitionsView {
}
@Override
+ public SingleAlertDefinitionView getDetailsView(int id) {
+ SingleAlertDefinitionView view = super.getDetailsView(id);
+ if (id == 0) {
+ // when creating a new alert def, make sure to set this in the new alert def
+ view.getAlertDefinition().setResource(resource);
+ }
+ return view;
+ }
+
+ @Override
protected boolean isAllowedToModifyAlertDefinitions() {
return this.permissions.isAlert();
}
@@ -185,19 +195,34 @@ public class ResourceAlertDefinitionsView extends AbstractAlertDefinitionsView {
}
@Override
- protected void commitAlertDefinition(AlertDefinition alertDefinition) {
- GWTServiceLookup.getAlertDefinitionService().updateAlertDefinition(alertDefinition.getId(), alertDefinition,
- true, new AsyncCallback<AlertDefinition>() {
- @Override
- public void onSuccess(AlertDefinition result) {
- CoreGUI.getMessageCenter().notify(new Message("Alert definition is updated", Severity.Info));
- ResourceAlertDefinitionsView.this.refresh();
- }
-
- @Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to update alert definition", caught);
- }
- });
+ protected void commitAlertDefinition(final AlertDefinition alertDefinition) {
+ if (alertDefinition.getId() == 0) {
+ GWTServiceLookup.getAlertDefinitionService().createAlertDefinition(alertDefinition,
+ Integer.valueOf(resource.getId()), new AsyncCallback<Integer>() {
+ @Override
+ public void onSuccess(Integer result) {
+ CoreGUI.getMessageCenter().notify(new Message("Alert definition is created", Severity.Info));
+ alertDefinition.setId(result.intValue());
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to create alert definition", caught);
+ }
+ });
+ } else {
+ GWTServiceLookup.getAlertDefinitionService().updateAlertDefinition(alertDefinition.getId(),
+ alertDefinition, true, new AsyncCallback<AlertDefinition>() {
+ @Override
+ public void onSuccess(AlertDefinition result) {
+ CoreGUI.getMessageCenter().notify(new Message("Alert definition is updated", Severity.Info));
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to update alert definition", caught);
+ }
+ });
+ }
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
index e309eea..14c123c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/AlertDefinitionGWTService.java
@@ -23,6 +23,9 @@ import com.google.gwt.user.client.rpc.RemoteService;
import org.rhq.core.domain.alert.AlertDefinition;
public interface AlertDefinitionGWTService extends RemoteService {
+
+ int createAlertDefinition(AlertDefinition alertDefinition, Integer resourceId) throws Exception;
+
AlertDefinition updateAlertDefinition(int alertDefinitionId, AlertDefinition alertDefinition,
boolean updateInternals) throws Exception;
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
index 169b758..606195b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/AlertDefinitionGWTServiceImpl.java
@@ -30,6 +30,15 @@ public class AlertDefinitionGWTServiceImpl extends AbstractGWTServiceImpl implem
private AlertDefinitionManagerLocal alertDefManager = LookupUtil.getAlertDefinitionManager();
+ public int createAlertDefinition(AlertDefinition alertDefinition, Integer resourceId) throws Exception {
+ try {
+ int results = alertDefManager.createAlertDefinition(getSessionSubject(), alertDefinition, resourceId);
+ return results;
+ } catch (Exception e) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(e));
+ }
+ }
+
public AlertDefinition updateAlertDefinition(int alertDefinitionId, AlertDefinition alertDefinition,
boolean updateInternals) throws Exception {
try {
commit 106f6e489ec0552325e6645ecfe9cc801aa9c34e
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 16:09:25 2010 -0400
most times, people only have a sinlge condition, and the internals for condition checking on the server are more efficient when using ANY so rather than default to ALL, which to ANY (even though logically it doesn't matter when most times you just have a single condition, in reality, ANY processes a bit faster so use that)
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
index 182173a..571daed 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
@@ -138,10 +138,10 @@ public class ConditionsAlertDefinitionForm extends LocatableVLayout implements E
conditionExpressionForm = new LocatableDynamicForm(this.extendLocatorId("conditionExpressionForm"));
conditionExpression = new SelectItem("conditionExpression", "Fire alert when");
LinkedHashMap<String, String> condExprs = new LinkedHashMap<String, String>(2);
- condExprs.put(BooleanExpression.ALL.name(), BooleanExpression.ALL.toString());
condExprs.put(BooleanExpression.ANY.name(), BooleanExpression.ANY.toString());
+ condExprs.put(BooleanExpression.ALL.name(), BooleanExpression.ALL.toString());
conditionExpression.setValueMap(condExprs);
- conditionExpression.setDefaultValue(BooleanExpression.ALL.name());
+ conditionExpression.setDefaultValue(BooleanExpression.ANY.name());
conditionExpression.setWrapTitle(false);
conditionExpressionStatic = new StaticTextItem("conditionExpressionStatic", "Fire alert when");
13 years, 9 months
[rhq] Branch 'perftest' - modules/helpers
by lkrejci
modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 1e5e30b2c6c317716b09763c947f1dc49321d8df
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Sep 16 21:44:40 2010 +0200
and now it even compiles
diff --git a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java
index a26b7e9..8ed863d 100644
--- a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java
+++ b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java
@@ -82,7 +82,7 @@ public class DatabaseSetupInterceptor implements IInvokedMethodListener {
Input input = format.getInput(streamProvider);
try {
- DbSetup dbSetup = new DbSetup(connection);
+ DbSetup dbSetup = new DbSetup(connection.getConnection());
dbSetup.setup(state.dbVersion());
Importer.run(connection, input);
dbSetup.upgrade(null);
13 years, 9 months
[rhq] Branch 'perftest' - 2 commits - modules/core modules/enterprise modules/helpers
by lkrejci
modules/core/dbutils/src/main/java/org/rhq/core/db/ant/dbupgrade/DBUpgrader.java | 30
modules/core/dbutils/src/main/java/org/rhq/core/db/setup/DBSetup.java | 30
modules/core/dbutils/src/main/scripts/dbsetup-build.xml | 11
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java | 3
modules/helpers/perftest-support/pom.xml | 18
modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/config/Relationship.java | 11
modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/dbsetup/DbSetup.java | 271 +
modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/jpa/ConfigurableDependencyInclusionResolver.java | 10
modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java | 8
modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseState.java | 8
modules/helpers/perftest-support/src/main/resources/db-data-combined.2.94.xml | 378 +
modules/helpers/perftest-support/src/main/resources/db-schema-combined.2.94.xml | 2518 ++++++++++
12 files changed, 3280 insertions(+), 16 deletions(-)
New commits:
commit 31ca03d0a11fcea523f014acf176951c7762ee01
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Sep 16 21:41:07 2010 +0200
Adding support for database setup and upgrade using db-utils infrastructure during the @DatabaseState processing.
diff --git a/modules/core/dbutils/src/main/java/org/rhq/core/db/ant/dbupgrade/DBUpgrader.java b/modules/core/dbutils/src/main/java/org/rhq/core/db/ant/dbupgrade/DBUpgrader.java
index 215ea54..d4c055f 100644
--- a/modules/core/dbutils/src/main/java/org/rhq/core/db/ant/dbupgrade/DBUpgrader.java
+++ b/modules/core/dbutils/src/main/java/org/rhq/core/db/ant/dbupgrade/DBUpgrader.java
@@ -68,6 +68,18 @@ public class DBUpgrader extends Task {
private DatabaseType databaseType;
+ private Connection connection;
+ private boolean doCloseConnection;
+
+ public DBUpgrader() {
+ doCloseConnection = true;
+ }
+
+ public DBUpgrader(Connection connection) {
+ this.connection = connection;
+ doCloseConnection = false;
+ }
+
/**
* The URL to the database that is to be upgraded.
*
@@ -297,7 +309,7 @@ public class DBUpgrader extends Task {
} catch (Exception e) {
throw new BuildException(e.getMessage(), e);
} finally {
- if ((conn != null) && (databaseType != null)) {
+ if ((conn != null) && (databaseType != null) && doCloseConnection) {
databaseType.closeConnection(conn);
}
}
@@ -446,10 +458,24 @@ public class DBUpgrader extends Task {
* @throws SQLException
*/
public Connection getConnection() throws SQLException {
- return DbUtil.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
+ if (connection == null) {
+ connection = DbUtil.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
+ }
+ return connection;
}
/**
+ * This can be used to programatically override the JDBC connection to be used
+ * by this task.
+ *
+ * @param connection
+ */
+ public void setConnection(Connection connection) {
+ this.connection = connection;
+ doCloseConnection = connection == null;
+ }
+
+ /**
* Returns the type of database that is being upgraded.
*
* @return db type
diff --git a/modules/core/dbutils/src/main/java/org/rhq/core/db/setup/DBSetup.java b/modules/core/dbutils/src/main/java/org/rhq/core/db/setup/DBSetup.java
index eb1d0eb..f8d27a0 100644
--- a/modules/core/dbutils/src/main/java/org/rhq/core/db/setup/DBSetup.java
+++ b/modules/core/dbutils/src/main/java/org/rhq/core/db/setup/DBSetup.java
@@ -70,6 +70,7 @@ public class DBSetup {
private Connection m_connection;
private DatabaseType m_databaseType;
+ private boolean m_doDisconnect = true;
/**
* Creates a new {@link DBSetup} object where this object is not in console mode (meaning messages will not be
@@ -103,6 +104,23 @@ public class DBSetup {
}
/**
+ * Creates a new instance with an already established connection.
+ * @param connection
+ * @throws Exception
+ */
+ public DBSetup(Connection connection) throws Exception {
+ m_connection = connection;
+ m_databaseType = DatabaseTypeFactory.getDatabaseType(connection);
+ m_consoleMode = false;
+
+ // MySQL complains if autocomit is true and you try to commit.
+ // DDL operations are not transactional anyhow.
+ m_connection.setAutoCommit(false);
+
+ m_doDisconnect = false;
+ }
+
+ /**
* A console application that can be used to run the DBSetup from a command line. The arguments are as follows:
*
* <pre>
@@ -1056,13 +1074,17 @@ public class DBSetup {
}
/**
- * Creates a new connection to the database.
- *
+ * Returns a connection to the database.
+ * A new connection is established if none existed before
* @return the connection
*
* @throws Exception if failed to connect or determine the type of database that was connected to
*/
private Connection connect() throws Exception {
+ if (m_connection != null) {
+ return m_connection;
+ }
+
m_connection = DbUtil.getConnection(m_jdbcUrl, m_username, m_password);
try {
@@ -1091,6 +1113,10 @@ public class DBSetup {
* If this object is currently connected, this will close that live connection.
*/
private void disconnect() {
+ if (!m_doDisconnect) {
+ return;
+ }
+
try {
m_connection.close();
} catch (Exception e) {
diff --git a/modules/core/dbutils/src/main/scripts/dbsetup-build.xml b/modules/core/dbutils/src/main/scripts/dbsetup-build.xml
index f4993e5..2b195a4 100644
--- a/modules/core/dbutils/src/main/scripts/dbsetup-build.xml
+++ b/modules/core/dbutils/src/main/scripts/dbsetup-build.xml
@@ -32,8 +32,10 @@ To run the default target, you must set one of the following properties to true:
</not>
</condition>
+ <property name="dbsetup.properties.file" value="${basedir}/src/main/scripts/dbsetup.properties"/>
+
<!-- load in the development environment properties - used as replacements for the @@@ strings in the dbsetup xml files -->
- <property file="${basedir}/src/main/scripts/dbsetup.properties"/>
+ <property file="${dbsetup.properties.file}"/>
<!-- define the location of things we are going to generate -->
<property name="dbsetup.scripts.dir" value="${basedir}/src/main/scripts/dbsetup" />
@@ -49,6 +51,7 @@ To run the default target, you must set one of the following properties to true:
<property name="jar.dbsetup.combined.schema" value="${jar.dbsetup.output.dir}/db-schema-combined.xml" />
<property name="jar.dbsetup.combined.data" value="${jar.dbsetup.output.dir}/db-data-combined.xml" />
<property name="jar.dbupgrade.file" value="${jar.dbsetup.output.dir}/db-upgrade.xml" />
+ <property name="jar.dbsetup.properties" value="${jar.dbsetup.output.dir}/dbsetup.properties" />
<!-- define our custom ANT tasks -->
<target name="dbsetup-init-taskdefs"
@@ -83,6 +86,12 @@ To run the default target, you must set one of the following properties to true:
<mkdir dir="${dbsetup.output.dir}"/>
<property name="dbsetup-init.notrequired" value="true"/>
+
+ <!-- This is to support perftest-support. We want to know the default values of the values to
+ be replaced in the various db-setup configuration files. By placing the dbsetup.properties
+ file in the jar artifact, we can find out those values in other modules as well.
+ -->
+ <copy file="${dbsetup.properties.file}" tofile="${jar.dbsetup.properties}"/>
</target>
<!-- do a timestamp check to see if we really need to combine all the dbsetup subsystem files -->
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java
index 327b659..7347f1a 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/performance/test/AvailabilityInsertPurgeTest.java
@@ -19,7 +19,6 @@
package org.rhq.enterprise.server.performance.test;
import org.rhq.enterprise.server.test.AbstractEJB3PerformanceTest;
-import org.rhq.helpers.perftest.support.testng.JdbcConnectionProviderMethod;
import org.rhq.helpers.perftest.support.testng.DatabaseSetupInterceptor;
import org.rhq.helpers.perftest.support.testng.DatabaseState;
import org.testng.annotations.Listeners;
@@ -36,7 +35,7 @@ import org.testng.annotations.Test;
//@JdbcConnectionProviderMethod("getConnection") //defined in AbstractEJB3Test
public class AvailabilityInsertPurgeTest extends AbstractEJB3PerformanceTest {
- @DatabaseState(url = "perftest/AvailabilityInsertPurgeTest-testOne-data.xml.zip")
+ @DatabaseState(url = "perftest/AvailabilityInsertPurgeTest-testOne-data.xml.zip", dbVersion="2.94")
public void testOne() throws Exception {
startTiming();
diff --git a/modules/helpers/perftest-support/pom.xml b/modules/helpers/perftest-support/pom.xml
index f4e8538..5fa1598 100644
--- a/modules/helpers/perftest-support/pom.xml
+++ b/modules/helpers/perftest-support/pom.xml
@@ -11,6 +11,17 @@
<name>Performance Testing Support</name>
<description>To support performance testing, this is a basic tool to support extracting and later reimporting of data from/to a database.</description>
<dependencies>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>1.6.5</version>
+ </dependency>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant-launcher</artifactId>
+ <version>1.6.5</version>
+ <scope>runtime</scope>
+ </dependency>
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
@@ -59,6 +70,13 @@
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
+ <dependency>
+ <groupId>org.rhq</groupId>
+ <artifactId>rhq-core-dbutils</artifactId>
+ <version>${project.version}</version>
+ <type>jar</type>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
diff --git a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/dbsetup/DbSetup.java b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/dbsetup/DbSetup.java
new file mode 100644
index 0000000..96c16ab
--- /dev/null
+++ b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/dbsetup/DbSetup.java
@@ -0,0 +1,271 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * 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 version 2 of the License.
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.helpers.perftest.support.dbsetup;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.sql.Connection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.UnknownElement;
+import org.apache.tools.ant.helper.ProjectHelper2;
+import org.rhq.core.db.ant.dbupgrade.DBUpgrader;
+import org.rhq.core.db.setup.DBSetup;
+
+/**
+ * This class is a utility wrapper around the actual {@link DBSetup} and {@link DBUpgrader} classes defined in the
+ * rhq-core-dbutils module.
+ *
+ * @author Lukas Krejci
+ */
+public class DbSetup {
+
+ private static final String MINIMAL_VERSION_OF_DATA = "db-data-combined.2.94.xml";
+ private static final String MINIMAL_VERSION_OF_SCHEMA = "db-schema-combined.2.94.xml";
+
+ private static final Map<String, String> REPLACEMENTS;
+
+ static {
+ REPLACEMENTS = new HashMap<String, String>();
+ // these are all the replacements from the dbsetup-build.xml
+ REPLACEMENTS.put("@@@SERVER_VERSION@@@", "project.version");
+ REPLACEMENTS.put("@@@DB_SCHEMA_VERSION@@@", "db.schema.version");
+ REPLACEMENTS.put("@@@ADMINUSERNAME@@@", "server.admin.username");
+ REPLACEMENTS.put("@@@ADMINPASSWORD@@@", "server.admin.password.encrypted");
+ REPLACEMENTS.put("@@@ADMINEMAIL@@@", "server.admin.email");
+ REPLACEMENTS.put("@@@BASEURL@@@", "server.webapp.baseurl");
+ REPLACEMENTS.put("@@@JAASPROVIDER@@@", "server.jaas.provider");
+ REPLACEMENTS.put("@@@LDAPURL@@@", "server.ldap.url");
+ REPLACEMENTS.put("@@@LDAPPROTOCOL@@@", "server.ldap.protocol");
+ REPLACEMENTS.put("@@@LDAPLOGINPROP@@@", "server.ldap.loginProperty");
+ REPLACEMENTS.put("@@@LDAPBASEDN@@@", "server.ldap.baseDN");
+ REPLACEMENTS.put("@@@LDAPSEARCHFILTER@@@", "server.ldap.searchFilter");
+ REPLACEMENTS.put("@@@LDAPBINDDN@@@", "server.ldap.bindDN");
+ REPLACEMENTS.put("@@@LDAPBINDPW@@@", "server.ldap.bindPW");
+ REPLACEMENTS.put("@@@MULTICAST_ADDR@@@", "server.highavail.address");
+ REPLACEMENTS.put("@@@MULTICAST_PORT@@@", "server.highavail.port");
+ }
+
+ private Connection connection;
+
+ public DbSetup(Connection connection) throws Exception {
+ this.connection = connection;
+ }
+
+ public void setup(String targetVersion) throws Exception {
+ setup();
+ upgrade(targetVersion);
+ }
+
+ public void upgrade(String targetVersion) throws Exception {
+ Project project = new Project();
+ File upgradeFile = getFileFromDbUtils("db-upgrade.xml");
+
+ try {
+ project.setCoreLoader(getClass().getClassLoader());
+ project.init();
+ project.setProperty("target.schema.version", targetVersion == null ? "LATEST" : targetVersion);
+ loadDbSetupAntTasksProperties(project);
+
+ new ProjectHelper2().parse(project, upgradeFile);
+
+ Target defaultTarget = (Target) project.getTargets().get(project.getDefaultTarget());
+
+ for (Task t : defaultTarget.getTasks()) {
+ DBUpgrader upgrader = null;
+ if (t instanceof DBUpgrader) {
+ upgrader = (DBUpgrader) t;
+ } else if (t instanceof UnknownElement) {
+ if ("dbupgrade".equals(t.getTaskType())) {
+ UnknownElement u = (UnknownElement)t;
+ u.maybeConfigure();
+
+ if (u.getTask() instanceof DBUpgrader) {
+ upgrader = (DBUpgrader) u.getTask();
+ }
+ }
+ }
+
+ if (upgrader != null) {
+ upgrader.setConnection(connection);
+ break;
+ }
+ }
+
+ project.executeTarget(project.getDefaultTarget());
+ } catch (BuildException e) {
+ throw new RuntimeException("Cannot run ANT on script [" + upgradeFile + "]. Cause: " + e, e);
+ } finally {
+ upgradeFile.delete();
+ }
+ }
+
+ private void setup() throws Exception {
+ DBSetup dbSetup = new DBSetup(connection);
+
+ File schema = getFileFromResource(MINIMAL_VERSION_OF_SCHEMA, getClass().getClassLoader());
+
+ try {
+ replaceTokensInFile(schema);
+ dbSetup.uninstall(schema.getAbsolutePath());
+ dbSetup.setup(schema.getAbsolutePath());
+ } finally {
+ schema.delete();
+ }
+
+ File data = getFileFromResource(MINIMAL_VERSION_OF_DATA, getClass().getClassLoader());
+
+ try {
+ replaceTokensInFile(data);
+ dbSetup.setup(data.getAbsolutePath(), null, true, false);
+ } finally {
+ data.delete();
+ }
+ }
+
+ private void replaceTokensInFile(File f) throws IOException {
+ Properties properties = getDbSetupProperties();
+
+ String contents = readIntoString(new FileInputStream(f));
+
+ for(Map.Entry<String, String> entry : REPLACEMENTS.entrySet()) {
+ String token = entry.getKey();
+ String value = properties.getProperty(token);
+ if (value != null) {
+ contents = contents.replaceAll(token, value);
+ }
+ }
+
+ FileWriter wrt = new FileWriter(f);
+
+ try {
+ wrt.write(contents.toCharArray());
+ } finally {
+ safeClose(wrt);
+ }
+ }
+
+ private static Properties getDbSetupProperties() throws IOException {
+ Properties dbSetupProperties = loadPropertiesFromDbUtils("dbsetup.properties");
+ //add the project.version manually because that has to be found out in a different way
+ dbSetupProperties.put("project.version", DbSetup.class.getPackage().getImplementationVersion());
+ return dbSetupProperties;
+ }
+
+ private static void loadDbSetupAntTasksProperties(Project project) throws Exception {
+ Properties taskDefs = loadPropertiesFromDbUtils("db-ant-tasks.properties");
+
+ for(Map.Entry<Object, Object> entry : taskDefs.entrySet()) {
+ String taskName = (String) entry.getKey();
+ String taskClassName = (String) entry.getValue();
+
+ project.addTaskDefinition(taskName, Class.forName(taskClassName));
+ }
+ }
+
+ private static Properties loadPropertiesFromDbUtils(String resourceName) throws IOException {
+ InputStream propertiesStream = DBSetup.class.getClassLoader().getResourceAsStream(resourceName);
+ try {
+ Properties properties = new Properties();
+ properties.load(propertiesStream);
+ return properties;
+ } finally {
+ safeClose(propertiesStream);
+ }
+ }
+
+ private static File getFileFromDbUtils(String fileName) throws IOException {
+ return getFileFromResource(fileName, DBSetup.class.getClassLoader());
+ }
+
+ private static File getFileFromResource(String resourceName, ClassLoader cl) throws IOException {
+ InputStream stream = cl.getResourceAsStream(resourceName);
+
+ if (stream == null) {
+ throw new FileNotFoundException("Could not find " + resourceName + " in the classloader.");
+ }
+
+ File tmpFile = File.createTempFile("DbSetup", null);
+ OutputStream out = new BufferedOutputStream(new FileOutputStream(tmpFile));
+
+ try {
+ copy(stream, out);
+
+ return tmpFile;
+ } finally {
+ safeClose(stream, out);
+ }
+ }
+
+ private String readIntoString(InputStream s) throws IOException {
+ char[] buffer = new char[32768];
+ StringBuilder bld = new StringBuilder();
+
+ BufferedReader rdr = new BufferedReader(new InputStreamReader(s));
+
+ try {
+ int cnt = 0;
+
+ while ((cnt = rdr.read(buffer, 0, buffer.length)) != -1) {
+ bld.append(buffer, 0, cnt);
+ }
+
+ return bld.toString();
+ } finally {
+ rdr.close();
+ }
+ }
+ private static void copy(InputStream source, OutputStream target) throws IOException {
+ byte[] buffer = new byte[32768];
+
+ int cnt = 0;
+ while ((cnt = source.read(buffer, 0, buffer.length)) != -1) {
+ target.write(buffer, 0, cnt);
+ }
+
+ target.flush();
+ }
+
+ private static void safeClose(Closeable... streams) {
+ for(Closeable stream : streams) {
+ try {
+ stream.close();
+ } catch (IOException e) {
+ //ignore
+ }
+ }
+ }
+}
diff --git a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java
index cc23514..a26b7e9 100644
--- a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java
+++ b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseSetupInterceptor.java
@@ -20,7 +20,6 @@
package org.rhq.helpers.perftest.support.testng;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -37,9 +36,9 @@ import org.dbunit.dataset.datatype.IDataTypeFactory;
import org.rhq.helpers.perftest.support.FileFormat;
import org.rhq.helpers.perftest.support.Importer;
import org.rhq.helpers.perftest.support.Input;
+import org.rhq.helpers.perftest.support.dbsetup.DbSetup;
import org.rhq.helpers.perftest.support.input.FileInputStreamProvider;
import org.rhq.helpers.perftest.support.input.InputStreamProvider;
-import org.rhq.helpers.perftest.support.input.XmlInput;
import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;
@@ -83,7 +82,10 @@ public class DatabaseSetupInterceptor implements IInvokedMethodListener {
Input input = format.getInput(streamProvider);
try {
+ DbSetup dbSetup = new DbSetup(connection);
+ dbSetup.setup(state.dbVersion());
Importer.run(connection, input);
+ dbSetup.upgrade(null);
} finally {
input.close();
}
@@ -160,5 +162,5 @@ public class DatabaseSetupInterceptor implements IInvokedMethodListener {
default:
return null;
}
- }
+ }
}
diff --git a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseState.java b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseState.java
index af9e94c..5ceba4f 100644
--- a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseState.java
+++ b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/testng/DatabaseState.java
@@ -41,6 +41,14 @@ public @interface DatabaseState {
String url();
/**
+ * The version of the RHQ database the export file is generated from.
+ * Before the data from the export file are imported into the database, the database
+ * is freshly created and upgraded to this version. After that, the export file
+ * is imported to it and the database is then upgraded to the latest version.
+ */
+ String dbVersion();
+
+ /**
* Where is the export file accessible from (defaults to {@link DatabaseStateStorage#CLASSLOADER}).
*/
DatabaseStateStorage storage() default DatabaseStateStorage.CLASSLOADER;
diff --git a/modules/helpers/perftest-support/src/main/resources/db-data-combined.2.94.xml b/modules/helpers/perftest-support/src/main/resources/db-data-combined.2.94.xml
new file mode 100644
index 0000000..72816e0
--- /dev/null
+++ b/modules/helpers/perftest-support/src/main/resources/db-data-combined.2.94.xml
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dbsetup name="data.xml">
+<!-- BEGIN: auth-data.xml -->
+
+
+ <table name="RHQ_PRINCIPAL">
+ <data id="2" PRINCIPAL="@@@ADMINUSERNAME@@@" PASSWORD="@@@ADMINPASSWORD@@@"/>
+ </table>
+
+<!-- END: auth-data.xml -->
+<!-- BEGIN: authz-data.xml -->
+
+
+ <!-- the overlord user -->
+ <table name="RHQ_SUBJECT">
+ <data ID="1"
+ NAME="admin"
+ FIRST_NAME="Super"
+ LAST_NAME="User"
+ FSYSTEM="TRUE"/>
+ </table>
+
+ <!-- the initial rhqadmin user -->
+ <table name="RHQ_SUBJECT">
+ <data ID="2"
+ NAME="@@@ADMINUSERNAME@@@"
+ FIRST_NAME="RHQ"
+ LAST_NAME="Administrator"
+ EMAIL_ADDRESS="@@@ADMINEMAIL@@@"
+ FSYSTEM="FALSE"/>
+ </table>
+
+ <!-- Define the system root role which includes our overlord and rhqadmin users -->
+ <table name="RHQ_ROLE">
+ <data ID="1"
+ NAME="Super User Role"
+ FSYSTEM="TRUE"
+ DESCRIPTION="System superuser role that provides full access to everything. This role cannot be modified."/>
+ <data ID="2"
+ NAME="All Resources Role"
+ FSYSTEM="FALSE"
+ DESCRIPTION="Provides full access to all resources in inventory. Cannot modify users, roles or server settings."/>
+ </table>
+
+ <!-- associate the root users with all security permissions -->
+ <table name="RHQ_SUBJECT_ROLE_MAP">
+ <data SUBJECT_ID="1" ROLE_ID="1"/>
+ <!-- overlord user -->
+ <data SUBJECT_ID="2" ROLE_ID="1"/>
+ <!-- rhqadmin user -->
+ </table>
+
+ <table name="RHQ_PERMISSION">
+ <!-- give super-user-role all permissions (resource perms is mainly just to show on view-role page) -->
+ <data ROLE_ID="1" OPERATION="0"/> <!-- Permission.MANAGE_SECURITY -->
+ <data ROLE_ID="1" OPERATION="1"/> <!-- Permission.MANAGE_INVENTORY -->
+ <data ROLE_ID="1" OPERATION="2"/> <!-- Permission.MANAGE_SETTINGS -->
+ <data ROLE_ID="1" OPERATION="12"/> <!-- Permission.MANAGE_BUNDLE -->
+ <!-- resource permissions start here-->
+ <data ROLE_ID="1" OPERATION="3"/> <!-- Permission.VIEW_RESOURCE -->
+ <data ROLE_ID="1" OPERATION="4"/> <!-- Permission.MODIFY_RESOURCE -->
+ <data ROLE_ID="1" OPERATION="5"/> <!-- Permission.DELETE_RESOURCE -->
+ <data ROLE_ID="1" OPERATION="6"/> <!-- Permission.CREATE_CHILD_RESOURCES -->
+ <data ROLE_ID="1" OPERATION="7"/> <!-- Permission.MANAGE_ALERTS -->
+ <data ROLE_ID="1" OPERATION="8"/> <!-- Permission.MANAGE_MEASUREMENTS -->
+ <data ROLE_ID="1" OPERATION="9"/> <!-- Permission.MANAGE_CONTENT -->
+ <data ROLE_ID="1" OPERATION="10"/> <!-- Permission.CONTROL -->
+ <data ROLE_ID="1" OPERATION="11"/> <!-- Permission.CONFIGURE -->
+ <data ROLE_ID="1" OPERATION="14"/> <!-- Permission.MANAGE_EVENTS -->
+
+ <!-- give all-resources-role all permissions (resource perms is mainly just to show on view-role page) -->
+ <data ROLE_ID="2" OPERATION="1"/> <!-- Permission.MANAGE_INVENTORY -->
+ <data ROLE_ID="2" OPERATION="12"/> <!-- Permission.MANAGE_BUNDLE -->
+ <!-- resource permissions start here-->
+ <data ROLE_ID="2" OPERATION="3"/> <!-- Permission.VIEW_RESOURCE -->
+ <data ROLE_ID="2" OPERATION="4"/> <!-- Permission.MODIFY_RESOURCE -->
+ <data ROLE_ID="2" OPERATION="5"/> <!-- Permission.DELETE_RESOURCE -->
+ <data ROLE_ID="2" OPERATION="6"/> <!-- Permission.CREATE_CHILD_RESOURCES -->
+ <data ROLE_ID="2" OPERATION="7"/> <!-- Permission.MANAGE_ALERTS -->
+ <data ROLE_ID="2" OPERATION="8"/> <!-- Permission.MANAGE_MEASUREMENTS -->
+ <data ROLE_ID="2" OPERATION="9"/> <!-- Permission.MANAGE_CONTENT -->
+ <data ROLE_ID="2" OPERATION="10"/> <!-- Permission.CONTROL -->
+ <data ROLE_ID="2" OPERATION="11"/> <!-- Permission.CONFIGURE -->
+ <data ROLE_ID="2" OPERATION="14"/> <!-- Permission.MANAGE_EVENTS -->
+ </table>
+
+<!-- END: authz-data.xml -->
+<!-- BEGIN: search-data.xml -->
+
+
+ <!-- overlord-created, global, default saved searches -->
+ <table name="RHQ_SAVED_SEARCH">
+ <data ID="1"
+ CONTEXT="RESOURCE"
+ NAME="Downed Platforms"
+ DESCRIPTION="All downed machines across the entire enterprise"
+ PATTERN="availability=down category=platform"
+ LAST_COMPUTE_TIME="0"
+ SUBJECT_ID="1"
+ GLOBAL="TRUE" />
+ <data ID="2"
+ CONTEXT="RESOURCE"
+ NAME="Downed Servers"
+ DESCRIPTION="All downed servers across the entire enterprise"
+ PATTERN="availability=down category=server"
+ LAST_COMPUTE_TIME="0"
+ SUBJECT_ID="1"
+ GLOBAL="TRUE" />
+ </table>
+
+<!-- END: search-data.xml -->
+<!-- BEGIN: sysconfig-data.xml -->
+
+
+ <!--
+ This file contains the seed data for the configuration table.
+ All keys mentioned here should be referenced via the RHQConstants class
+ -->
+ <table name="RHQ_SYSTEM_CONFIG">
+ <data ID="1" PROPERTY_KEY="SERVER_VERSION" PROPERTY_VALUE="4.0.0-SNAPSHOT"
+ DEFAULT_PROPERTY_VALUE="4.0.0-SNAPSHOT" FREAD_ONLY="TRUE"/>
+ <data ID="2" PROPERTY_KEY="DB_SCHEMA_VERSION" PROPERTY_VALUE="2.94"
+ DEFAULT_PROPERTY_VALUE="2.94" FREAD_ONLY="TRUE"/>
+ <data ID="3" PROPERTY_KEY="CAM_JAAS_PROVIDER" PROPERTY_VALUE="@@@JAASPROVIDER@@@"
+ DEFAULT_PROPERTY_VALUE="JDBC" FREAD_ONLY="FALSE"/>
+ <data ID="4" PROPERTY_KEY="CAM_BASE_URL" PROPERTY_VALUE="@@@BASEURL@@@"
+ DEFAULT_PROPERTY_VALUE="@@@BASEURL@@@" FREAD_ONLY="FALSE"/>
+ <data ID="9" PROPERTY_KEY="CAM_HELP_USER" PROPERTY_VALUE="web"
+ DEFAULT_PROPERTY_VALUE="web" FREAD_ONLY="FALSE"/>
+ <data ID="10" PROPERTY_KEY="CAM_HELP_PASSWORD" PROPERTY_VALUE="user"
+ DEFAULT_PROPERTY_VALUE="user" FREAD_ONLY="FALSE"/>
+
+ <!-- default LDAP configuration options -->
+ <data ID="11" PROPERTY_KEY="CAM_LDAP_NAMING_FACTORY_INITIAL"
+ PROPERTY_VALUE="com.sun.jndi.ldap.LdapCtxFactory"
+ DEFAULT_PROPERTY_VALUE="com.sun.jndi.ldap.LdapCtxFactory"
+ FREAD_ONLY="FALSE"/>
+ <data ID="12" PROPERTY_KEY="CAM_LDAP_NAMING_PROVIDER_URL"
+ PROPERTY_VALUE="@@@LDAPURL@@@"
+ DEFAULT_PROPERTY_VALUE="ldap://localhost/"
+ FREAD_ONLY="FALSE"/>
+ <data ID="13" PROPERTY_KEY="CAM_LDAP_LOGIN_PROPERTY"
+ PROPERTY_VALUE="@@@LDAPLOGINPROP@@@"
+ DEFAULT_PROPERTY_VALUE="cn" FREAD_ONLY="FALSE"/>
+ <data ID="14" PROPERTY_KEY="CAM_LDAP_BASE_DN"
+ PROPERTY_VALUE="@@@LDAPBASEDN@@@"
+ DEFAULT_PROPERTY_VALUE="o=JBoss,c=US"
+ FREAD_ONLY="FALSE"/>
+ <data ID="15" PROPERTY_KEY="CAM_LDAP_BIND_DN"
+ PROPERTY_VALUE="@@@LDAPBINDDN@@@"
+ DEFAULT_PROPERTY_VALUE="" FREAD_ONLY="FALSE"/>
+ <data ID="16" PROPERTY_KEY="CAM_LDAP_BIND_PW"
+ PROPERTY_VALUE="@@@LDAPBINDPW@@@"
+ DEFAULT_PROPERTY_VALUE="" FREAD_ONLY="FALSE"/>
+ <data ID="17" PROPERTY_KEY="CAM_LDAP_PROTOCOL"
+ PROPERTY_VALUE="@@@LDAPPROTOCOL@@@" DEFAULT_PROPERTY_VALUE=""
+ FREAD_ONLY="FALSE"/>
+ <data ID="18" PROPERTY_KEY="CAM_LDAP_FILTER"
+ PROPERTY_VALUE="@@@LDAPSEARCHFILTER@@@" DEFAULT_PROPERTY_VALUE=""
+ FREAD_ONLY="FALSE"/>
+
+ <!-- Does this build support Syslog actions? -->
+ <data ID="21" PROPERTY_KEY="CAM_SYSLOG_ACTIONS_ENABLED"
+ PROPERTY_VALUE="false" DEFAULT_PROPERTY_VALUE="false"
+ FREAD_ONLY="FALSE"/>
+ <data ID="23" PROPERTY_KEY="CAM_GUIDE_ENABLED"
+ PROPERTY_VALUE="true"
+ DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+ <data ID="24" PROPERTY_KEY="CAM_RT_COLLECT_IP_ADDRS"
+ PROPERTY_VALUE="true"
+ DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+
+ <!-- Default data storage options -->
+ <!-- Default 14 days -->
+ <data ID="26" PROPERTY_KEY="CAM_DATA_PURGE_1H"
+ PROPERTY_VALUE="1209600000" DEFAULT_PROPERTY_VALUE="1209600000"
+ FREAD_ONLY="FALSE"/>
+ <!-- Default 31 days -->
+ <data ID="27" PROPERTY_KEY="CAM_DATA_PURGE_6H"
+ PROPERTY_VALUE="2678400000" DEFAULT_PROPERTY_VALUE="2678400000"
+ FREAD_ONLY="FALSE"/>
+ <!-- Default 1 year -->
+ <data ID="28" PROPERTY_KEY="CAM_DATA_PURGE_1D"
+ PROPERTY_VALUE="31536000000" DEFAULT_PROPERTY_VALUE="31536000000"
+ FREAD_ONLY="FALSE"/>
+
+ <!-- Baseline options -->
+ <!-- How often to calculate, default 3 days; if 0, never calculate them automatically -->
+ <data ID="29" PROPERTY_KEY="CAM_BASELINE_FREQUENCY"
+ PROPERTY_VALUE="259200000" DEFAULT_PROPERTY_VALUE="259200000"
+ FREAD_ONLY="FALSE"/>
+ <!-- How much data to include in the calulation, default 7 days -->
+ <data ID="30" PROPERTY_KEY="CAM_BASELINE_DATASET"
+ PROPERTY_VALUE="604800000" DEFAULT_PROPERTY_VALUE="604800000"
+ FREAD_ONLY="FALSE"/>
+
+ <!-- ID 31 has been deleted -->
+
+ <!-- How often to run database maintainence routines -->
+ <data ID="32" PROPERTY_KEY="CAM_DATA_MAINTENANCE"
+ PROPERTY_VALUE="3600000" DEFAULT_PROPERTY_VALUE="3600000" FREAD_ONLY="FALSE"/>
+
+ <!-- How long to keep RT data around -->
+ <data ID="34" PROPERTY_KEY="RT_DATA_PURGE" PROPERTY_VALUE="2678400000"
+ DEFAULT_PROPERTY_VALUE="2678400000" FREAD_ONLY="FALSE"/>
+
+ <!-- Whether to reindex the data tables nightly -->
+ <data ID="35" PROPERTY_KEY="DATA_REINDEX_NIGHTLY" PROPERTY_VALUE="true"
+ DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+
+ <!-- How long to keep alerts around -->
+ <data ID="36" PROPERTY_KEY="ALERT_PURGE" PROPERTY_VALUE="2678400000"
+ DEFAULT_PROPERTY_VALUE="2678400000" FREAD_ONLY="FALSE"/>
+
+ <!-- How long to keep events around (1209600000 millis == 14 days) -->
+ <data ID="51" PROPERTY_KEY="EVENT_PURGE" PROPERTY_VALUE="1209600000"
+ DEFAULT_PROPERTY_VALUE="1209600000" FREAD_ONLY="FALSE"/>
+
+ <!-- How long an agent is allowed to be quiet before we consider it down and backfill it -->
+ <data ID="52" PROPERTY_KEY="AGENT_MAX_QUIET_TIME_ALLOWED" PROPERTY_VALUE="900000"
+ DEFAULT_PROPERTY_VALUE="900000" FREAD_ONLY="FALSE"/>
+
+ <!-- Will our server-cloud support agents auto-updating themselves? -->
+ <data ID="53" PROPERTY_KEY="ENABLE_AGENT_AUTO_UPDATE" PROPERTY_VALUE="true"
+ DEFAULT_PROPERTY_VALUE="true" FREAD_ONLY="FALSE"/>
+
+ <!-- How old does a trait have to be in order to get purged -->
+ <data ID="54" PROPERTY_KEY="TRAIT_PURGE" PROPERTY_VALUE="31536000000"
+ DEFAULT_PROPERTY_VALUE="31536000000" FREAD_ONLY="FALSE"/>
+
+ <!-- How old does availability have to be in order to get purged -->
+ <data ID="55" PROPERTY_KEY="AVAILABILITY_PURGE" PROPERTY_VALUE="31536000000"
+ DEFAULT_PROPERTY_VALUE="31536000000" FREAD_ONLY="FALSE"/>
+
+ </table>
+
+<!-- END: sysconfig-data.xml -->
+<!-- BEGIN: measurement-data.xml -->
+
+ <table name="RHQ_NUMBERS">
+ <data i="0"/>
+ <data i="1"/>
+ <data i="2"/>
+ <data i="3"/>
+ <data i="4"/>
+ <data i="5"/>
+ <data i="6"/>
+ <data i="7"/>
+ <data i="8"/>
+ <data i="9"/>
+ <data i="10"/>
+ <data i="11"/>
+ <data i="12"/>
+ <data i="13"/>
+ <data i="14"/>
+ <data i="15"/>
+ <data i="16"/>
+ <data i="17"/>
+ <data i="18"/>
+ <data i="19"/>
+ <data i="20"/>
+ <data i="21"/>
+ <data i="22"/>
+ <data i="23"/>
+ <data i="24"/>
+ <data i="25"/>
+ <data i="26"/>
+ <data i="27"/>
+ <data i="28"/>
+ <data i="29"/>
+ <data i="30"/>
+ <data i="31"/>
+ <data i="32"/>
+ <data i="33"/>
+ <data i="34"/>
+ <data i="35"/>
+ <data i="36"/>
+ <data i="37"/>
+ <data i="38"/>
+ <data i="39"/>
+ <data i="40"/>
+ <data i="41"/>
+ <data i="42"/>
+ <data i="43"/>
+ <data i="44"/>
+ <data i="45"/>
+ <data i="46"/>
+ <data i="47"/>
+ <data i="48"/>
+ <data i="49"/>
+ <data i="50"/>
+ <data i="51"/>
+ <data i="52"/>
+ <data i="53"/>
+ <data i="54"/>
+ <data i="55"/>
+ <data i="56"/>
+ <data i="57"/>
+ <data i="58"/>
+ <data i="59"/>
+ </table>
+
+<!-- END: measurement-data.xml -->
+<!-- BEGIN: content-data.xml -->
+
+ <table name="RHQ_ARCHITECTURE">
+ <data id="1" name="noarch"/>
+ <data id="2" name="i386"/>
+ <data id="3" name="i486"/>
+ <data id="4" name="i586"/>
+ <data id="5" name="i686"/>
+ <data id="6" name="alpha"/>
+ <data id="7" name="alphaev6"/>
+ <data id="8" name="ia64"/>
+ <data id="9" name="sparc"/>
+ <data id="10" name="sparcv9"/>
+ <data id="11" name="sparc64"/>
+ <data id="12" name="src"/>
+ <data id="13" name="s390"/>
+ <data id="14" name="athlon"/>
+ <data id="15" name="s390x"/>
+ <data id="16" name="ppc"/>
+ <data id="17" name="ppc64"/>
+ <data id="18" name="pSeries"/>
+ <data id="19" name="iSeries"/>
+ <data id="20" name="x86_64"/>
+ <data id="21" name="ppc64iseries"/>
+ <data id="22" name="ppc64pseries"/>
+ <data id="23" name="sparc-solaris"/>
+ <data id="24" name="sparc.sun4u-solaris"/>
+ <data id="25" name="tar"/>
+ <data id="26" name="ia32e"/>
+ <data id="27" name="amd64"/>
+ <data id="28" name="i386-solaris"/>
+ <data id="29" name="nosrc"/>
+ <data id="30" name="sparc-solaris-patch"/>
+ <data id="31" name="i386-solaris-patch"/>
+ <data id="32" name="sparc-solaris-patch-cluster"/>
+ <data id="33" name="i386-solaris-patch-cluster"/>
+ <data id="34" name="noarch-solaris"/>
+ <data id="35" name="noarch-solaris-patch"/>
+ <data id="36" name="noarch-solaris-patch-cluster"/>
+ <data id="37" name="solaris-patch"/>
+ <data id="38" name="solaris-patch-cluster"/>
+ </table>
+
+ <table name="RHQ_REPO_GROUP_TYPE">
+ <data id="1" name="family"/>
+ </table>
+
+ <table name="RHQ_REPO_RELATION_TYPE">
+ <data id="1" name="parent"/>
+ <data id="2" name="clone"/>
+ </table>
+
+ <table name="RHQ_DISTRIBUTION_TYPE">
+ <data id="1" name="kickstart" description="Linux kickstart distribution"/>
+ <data id="2" name="jumpstart" description="solaris jumpstart distribution"/>
+ </table>
+
+<!-- END: content-data.xml -->
+<!-- BEGIN: jms-data.xml -->
+
+<!-- the schema matches that which would be automatically created by the JMS subsystem -->
+<!-- see deploy/jms/rhq-jdbc-state-service.xml and rhq-jdbc2-service.xml -->
+<!-- the data must match that which is expected in conf/login-config.xml -->
+
+
+ <table name="JMS_USERS">
+ <data USERID="guest" PASSWD="guest" />
+ </table>
+
+ <table name="JMS_ROLES">
+ <data ROLEID="guest" USERID="guest" />
+ </table>
+
+<!-- END: jms-data.xml -->
+</dbsetup>
diff --git a/modules/helpers/perftest-support/src/main/resources/db-schema-combined.2.94.xml b/modules/helpers/perftest-support/src/main/resources/db-schema-combined.2.94.xml
new file mode 100644
index 0000000..5a798b5
--- /dev/null
+++ b/modules/helpers/perftest-support/src/main/resources/db-schema-combined.2.94.xml
@@ -0,0 +1,2518 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dbsetup name="schema">
+<!-- BEGIN: config-schema.xml -->
+
+
+ <!-- Definition or Metadata tables -->
+
+ <table name="RHQ_CONFIG_DEF">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" required="false" size="250"/>
+ <column name="VERSION" type="VARCHAR2" required="false" size="50"/>
+ <column name="CONFIG_FORMAT" type="VARCHAR2" required="false" size="32"/>
+ </table>
+
+ <table name="RHQ_CONFIG_PROP_GRP_DEF">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="DISPLAY_NAME" type="VARCHAR2" required="false" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" required="false" size="250"/>
+ <column name="DEFAULT_HIDDEN" type="BOOLEAN" required="false"/>
+ <column name="ORDER_INDEX" type="INTEGER" required="false"/>
+ </table>
+
+ <table name="RHQ_CONFIG_PROP_DEF">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="NAME" type="VARCHAR2" required="false" size="255"/>
+ <column name="DISPLAY_NAME" type="VARCHAR2" required="false" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" required="false" size="1000"/>
+ <column name="DEFAULT_VALUE" type="VARCHAR2" required="false" size="2000"/>
+ <column name="REQUIRED" type="BOOLEAN" required="false"/>
+ <column name="READONLY" type="BOOLEAN" required="false"/>
+ <column name="SUMMARY" type="BOOLEAN" required="false"/>
+ <column name="ACTIVATION_POLICY" type="VARCHAR2" required="false" size="20"/>
+ <column name="GROUP_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROP_GRP_DEF"/>
+ <column name="ORDER_INDEX" type="INTEGER" required="false"/>
+ <column name="VERSION" type="VARCHAR2" required="false" size="50"/>
+ <column name="PARENT_MAP_DEFINITION_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROP_DEF"/>
+ <column name="PARENT_LIST_DEFINITION_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROP_DEF"/>
+ <column name="SIMPLE_TYPE" type="VARCHAR2" required="false" size="20"/>
+ <column name="ALLOW_CUSTOM_ENUM_VALUE" type="BOOLEAN" required="false"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="10"/>
+ <column name="CONFIG_DEF_ID" type="INTEGER" required="false" references="RHQ_CONFIG_DEF"/>
+
+ <!-- only simple properties (not lists and maps) have this -->
+ <column name="UNITS" type="SMALLINT" required="false"/>
+
+ <!-- only dynamic properties (not simple) have this -->
+ <column name="DYNAMIC_TYPE" type="VARCHAR2" size="20" required="false"/>
+ <column name="DYNAMIC_KEY" type="VARCHAR2" size="128" required="false"/>
+ </table>
+
+ <table name="RHQ_CONF_PROP_DEF_ENUM">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="STRING_VALUE" type="VARCHAR2" required="false" size="500"/>
+ <column name="ORDER_INDEX" type="INTEGER" required="false"/>
+ <column name="IS_DEFAULT" type="BOOLEAN" required="false"/>
+ <column name="NAME" type="VARCHAR2" required="false" size="100"/>
+ <column name="PROPERTY_DEF_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROP_DEF"/>
+ </table>
+
+ <table name="RHQ_CONFIG_PROP_CONSTR">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="15"/>
+ <column name="DETAILS" type="VARCHAR2" required="false" size="250"/>
+ <column name="CONFIG_PROP_DEF_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROP_DEF"/>
+ <column name="ORDER_INDEX" type="INTEGER" required="false"/>
+ </table>
+
+
+ <!-- Content or value tables -->
+
+ <table name="RHQ_CONFIG">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="NOTES" type="VARCHAR2" required="false" size="512"/>
+ <column name="VERSION" type="VARCHAR2" required="false" size="50"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ </table>
+
+ <table name="RHQ_CONFIG_PROPERTY">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" required="false" references="RHQ_CONFIG" ondelete="cascade"/>
+ <column name="STRING_VALUE" type="VARCHAR2" required="false" size="2000"/>
+ <column name="OVERRIDE" type="BOOLEAN" required="false"/>
+ <column name="NAME" type="VARCHAR2" required="true" size="255"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="10"/>
+ <!-- Recursive cascade path to RHQ_CONFIG_PROPERTY causes constraint creation errors on SQL Server, see
+ http://support.microsoft.com/kb/321843 -->
+ <column name="PARENT_LIST_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROPERTY" ondelete="cascade" />
+ <column name="PARENT_MAP_ID" type="INTEGER" required="false" references="RHQ_CONFIG_PROPERTY" ondelete="cascade" />
+ <column name="LIST_INDEX" type="INTEGER"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <index name="RHQ_CONFIG_PROP_idx_prop_key" unique="false">
+ <field ref="CONFIGURATION_ID"/>
+ <field ref="NAME"/>
+ </index>
+ <index name="RHQ_CONFIG_PROP_idx_map_key" unique="false">
+ <field ref="PARENT_MAP_ID"/>
+ <field ref="NAME"/>
+ </index>
+ <index name="RHQ_CONFIG_PROP_idx_list_key" unique="false">
+ <field ref="PARENT_LIST_ID"/>
+ </index>
+ <!-- List entries all have the same name -->
+ </table>
+
+ <table name="RHQ_CONFIG_TEMPLATE">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="NAME" type="VARCHAR2" required="false" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" required="false" size="500"/>
+ <column name="CONFIG_ID" type="INTEGER" required="false" references="RHQ_CONFIG"/>
+ <column name="CONFIG_DEF_ID" type="INTEGER" required="false" references="RHQ_CONFIG_DEF"/>
+ <column name="IS_DEFAULT" type="BOOLEAN" required="false"/>
+ </table>
+
+ <table name="RHQ_RAW_CONFIG">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="CONFIG_ID" type="INTEGER" required="true" references="RHQ_CONFIG(ID)"/>
+ <column name="PATH" type="VARCHAR2" required="false" size="512"/>
+ <column name="CONTENTS" type="CLOB" required="true"/>
+ <column name="SHA256" type="VARCHAR2" size="64" required="true"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ </table>
+
+<!-- END: config-schema.xml -->
+<!-- BEGIN: cluster-schema.xml -->
+
+ <table name="RHQ_AFFINITY_GROUP">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="255" type="VARCHAR2"/>
+ </table>
+
+ <table name="RHQ_SERVER">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="255" type="VARCHAR2"/>
+ <column name="ADDRESS" required="true" size="255" type="VARCHAR2"/>
+ <column name="PORT" required="true" type="INTEGER"/>
+ <column name="SECURE_PORT" required="true" type="INTEGER"/>
+ <column name="CTIME" required="true" type="LONG"/>
+ <column name="MTIME" required="true" type="LONG"/>
+ <column name="AFFINITY_GROUP_ID" type="INTEGER" references="RHQ_AFFINITY_GROUP" required="false"/>
+ <column name="COMPUTE_POWER" required="true" type="INTEGER"/>
+ <column name="OPERATION_MODE" required="true" size="32" type="VARCHAR2"/>
+ <column name="STATUS" type="INTEGER" required="false" default="0" />
+
+ <!-- This index is for constraint, not performance -->
+ <index name="RHQ_SERVER_NAME_UNIQUE" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <!-- new agent -->
+ <table name="RHQ_AGENT">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="255" type="VARCHAR2"/>
+ <column name="ADDRESS" required="true" size="255" type="VARCHAR2"/>
+ <column name="PORT" required="true" type="INTEGER"/>
+ <column name="AGENTTOKEN" required="true" size="100" type="VARCHAR2"/>
+ <column name="REMOTE_ENDPOINT" required="false" size="4000" type="VARCHAR2"/>
+ <column name="CTIME" required="true" type="LONG"/>
+ <column name="MTIME" required="true" type="LONG"/>
+ <column name="LAST_AVAILABILITY_REPORT" required="false" type="LONG"/>
+ <column name="AFFINITY_GROUP_ID" type="INTEGER" references="RHQ_AFFINITY_GROUP" required="false"/>
+ <column name="SERVER_ID" type="INTEGER" references="RHQ_SERVER" required="false"/>
+ <column name="STATUS" type="INTEGER" required="false" default="0" />
+ <column name="BACKFILLED" type="BOOLEAN" required="true" />
+
+ <index name="RHQ_AGENT_NAME_UNIQUE" unique="true">
+ <field ref="NAME"/>
+ </index>
+
+ <index name="RHQ_AGENT_ADDRESS_PORT" unique="true">
+ <field ref="ADDRESS"/>
+ <field ref="PORT"/>
+ </index>
+
+ <index name="RHQ_AGENT_TOKEN_UNIQUE" unique="true">
+ <field ref="AGENTTOKEN"/>
+ </index>
+ </table>
+
+ <table name="RHQ_PARTITION_EVENT">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="SUBJECT_NAME" required="true" size="100" type="VARCHAR2"/>
+ <column name="CTIME" required="true" type="LONG"/>
+ <column name="EVENT_TYPE" required="true" size="50" type="VARCHAR2"/>
+ <column name="EVENT_DETAIL" required="false" size="512" type="VARCHAR2"/>
+ <column name="EXECUTION_STATUS" required="true" size="32" type="VARCHAR2"/>
+ </table>
+
+ <table name="RHQ_PARTITION_DETAILS">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="PARTITION_EVENT_ID" type="INTEGER" references="RHQ_PARTITION_EVENT" required="true"/>
+ <column name="AGENT_NAME" type="VARCHAR2" size="255" required="true"/>
+ <column name="SERVER_NAME" type="VARCHAR2" size="255" required="true"/>
+ </table>
+
+ <table name="RHQ_FAILOVER_LIST">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="PARTITION_EVENT_ID" type="INTEGER" references="RHQ_PARTITION_EVENT" required="true"/>
+ <column name="AGENT_ID" type="INTEGER" references="RHQ_AGENT" required="true"/>
+ <column name="CTIME" required="true" type="LONG"/>
+ </table>
+
+ <table name="RHQ_FAILOVER_DETAILS">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="FAILOVER_LIST_ID" type="INTEGER" references="RHQ_FAILOVER_LIST" required="true"/>
+ <column name="SERVER_ID" type="INTEGER" references="RHQ_SERVER" required="true"/>
+ <column name="ORDINAL" type = "INTEGER" required="true"/>
+ </table>
+
+<!-- END: cluster-schema.xml -->
+<!-- BEGIN: inventory-schema.xml -->
+
+
+ <!-- NEW RESOURCE TYPES -->
+ <table name="RHQ_RESOURCE_TYPE">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" type="VARCHAR2" size="100" required="true"/>
+ <column name="CATEGORY" type="VARCHAR2" size="16" required="true"/>
+ <column name="CREATION_DATA_TYPE" type="VARCHAR2" size="16" required="true"/>
+ <column name="CREATE_DELETE_POLICY" type="VARCHAR2" size="16" required="true"/>
+ <column name="SINGLETON" type="BOOLEAN" required="true"/>
+ <column name="SUPPORTS_MANUAL_ADD" type="BOOLEAN" required="true"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="1000"/>
+ <column name="PLUGIN" type="VARCHAR2" size="100"/>
+ <column name="CTIME" type="LONG"/>
+ <column name="MTIME" type="LONG"/>
+ <column name="SUBCATEGORY_ID" type="INTEGER"/>
+ <!--
+ TODO add support to DB setup for tables with circular dependencies and then add back this RI
+ <column name="SUBCATEGORY_ID" type="INTEGER" references="RHQ_RESOURCE_SUBCAT" />
+ -->
+ <column name="PLUGIN_CONFIG_DEF_ID" type="INTEGER" references="RHQ_CONFIG_DEF(ID)"/>
+ <column name="RES_CONFIG_DEF_ID" type="INTEGER" references="RHQ_CONFIG_DEF(ID)"/>
+
+ <index name="RHQ_RES_TYPE_IDX_PLG_NAME" unique="true">
+ <field ref="NAME"/>
+ <field ref="PLUGIN"/>
+ </index>
+ </table>
+
+ <!-- NEW RESOURCE SUBCATEGORIES -->
+ <table name="RHQ_RESOURCE_SUBCAT">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" type="VARCHAR2" size="100"/>
+ <column name="DISPLAY_NAME" type="VARCHAR2" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="1000"/>
+ <column name="CTIME" type="LONG"/>
+ <column name="MTIME" type="LONG"/>
+ <column name="PARENT_SUBCATEGORY_ID" type="INTEGER" references="RHQ_RESOURCE_SUBCAT"/>
+ <!-- resourceTypeId is not required on child sub categories -->
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" references="RHQ_RESOURCE_TYPE"/>
+ </table>
+
+ <!-- Many To Many mapping for resource type to its parents -->
+ <table name="RHQ_RESOURCE_TYPE_PARENTS">
+ <column name="RESOURCE_TYPE_ID" required="true" type="INTEGER" references="RHQ_RESOURCE_TYPE"/>
+ <column name="PARENT_RESOURCE_TYPE_ID" required="true" type="INTEGER" references="RHQ_RESOURCE_TYPE"/>
+
+ <!-- not using full words to fit index name length -->
+ <constraint name="RHQ_RES_TYPE_PARENTS_KEY">
+ <primaryKey>
+ <field ref="RESOURCE_TYPE_ID"/>
+ <field ref="PARENT_RESOURCE_TYPE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_PROCESS_SCAN">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="QUERY" type="VARCHAR2" size="256" required="true"/>
+ <column name="NAME" type="VARCHAR2" size="100" required="false"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" references="RHQ_RESOURCE_TYPE"/>
+
+ <index name="RHQ_PROCESS_SCAN_QUERY_INDEX" unique="true">
+ <field ref="QUERY"/>
+ <field ref="RESOURCE_TYPE_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_PRD_VER">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="VERSION" type="VARCHAR2" size="50" required="true"/>
+ <column name="RES_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE"/>
+ </table>
+
+ <table name="RHQ_RESOURCE">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE"/>
+ <column name="UUID" type="CHAR" size="36" required="true"/>
+ <column name="NAME" type="VARCHAR2" size="500"/>
+ <column name="RESOURCE_KEY" type="VARCHAR2" required="true" size="500"/>
+ <column name="AGENT_ID" required="false" type="INTEGER" references="RHQ_AGENT(id)"/>
+ <column name="INVENTORY_STATUS" type="VARCHAR2" size="20"/>
+ <column name="CONNECTED" type="BOOLEAN"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="1000"/>
+ <column name="VERSION" type="VARCHAR2" size="50"/>
+ <column name="CTIME" type="LONG"/>
+ <column name="MTIME" type="LONG"/>
+ <column name="ITIME" type="LONG"/>
+ <column name="RES_CONFIGURATION_ID" type="INTEGER" references="RHQ_CONFIG"/>
+ <column name="PLUGIN_CONFIGURATION_ID" type="INTEGER" references="RHQ_CONFIG"/>
+ <column name="MODIFIED_BY" required="false" size="100" type="VARCHAR2"/>
+ <column name="LOCATION" required="false" size="100" type="VARCHAR2"/>
+ <column name="PARENT_RESOURCE_ID" type="INTEGER" references="RHQ_RESOURCE"/>
+ <column name="PRODUCT_VERSION_ID" type="INTEGER" references="RHQ_PRD_VER"/>
+
+ <index name="RHQ_RESOURCE_idx_key">
+ <field ref="RESOURCE_KEY"/>
+ </index>
+
+ <index name="RHQ_RESOURCE_idx_type">
+ <field ref="RESOURCE_TYPE_ID"/>
+ </index>
+
+ <index name="RHQ_RESOURCE_idx_agent">
+ <field ref="AGENT_ID"/>
+ </index>
+
+ <index name="RHQ_RESOURCE_idx_parent">
+ <field ref="PARENT_RESOURCE_ID"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_RESOURCE_ERROR">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ <column name="TIME_OCCURRED" type="LONG" required="true"/>
+ <column name="ERROR_TYPE" type="VARCHAR2" required="true" size="32"/>
+ <column name="SUMMARY" type="VARCHAR2" required="true" size="1000"/>
+ <column name="DETAIL" type="LONGVARCHAR" required="false"/>
+
+ <index name="RHQ_RES_ERROR_IDX_RES_ID">
+ <field ref="RESOURCE_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_GROUP_DEF">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="100" type="VARCHAR2"/>
+ <column name="DESCRIPTION" size="100" type="VARCHAR2"/>
+ <column name="CTIME" type="LONG"/>
+ <column name="MTIME" type="LONG"/>
+ <column name="CALC_TIME" type="LONG"/>
+ <column name="CALC_INTERVAL" type="LONG"/>
+ <column name="RECURSIVE" type="BOOLEAN"/>
+ <column name="EXPRESSION" type="VARCHAR2" size="1000"/>
+
+ <index name="RHQ_GROUP_DEF_NAME" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <table name="RHQ_RESOURCE_GROUP">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <!-- this name can be longer than the size of the GROUP_BY column, which is used to uniquely identify it -->
+ <!-- Max bytes for Oracle Varchar2 to accommodate large cluster keys -->
+ <column name="NAME" required="true" size="4000" type="VARCHAR2"/>
+ <column name="DESCRIPTION" size="100" type="VARCHAR2"/>
+ <column name="LOCATION" required="false" size="100" type="VARCHAR2"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" references="RHQ_RESOURCE_TYPE"/>
+ <!-- Compatible groups only -->
+ <column name="CTIME" type="LONG"/>
+ <column name="MTIME" type="LONG"/>
+ <column name="MODIFIED_BY" required="false" size="100" type="VARCHAR2"/>
+ <column name="RECURSIVE" type="BOOLEAN"/>
+
+ <column name="GROUP_DEFINITION_ID" required="false" type="INTEGER" references="RHQ_GROUP_DEF"/>
+ <column name="GROUP_BY" size="500" type="VARCHAR2"/>
+
+ <column name="CATEGORY" type="VARCHAR2" size="20" required="true"/>
+
+ <column name="CLUSTER_KEY" type="VARCHAR2" size="4000" required="false"/>
+
+ <!-- These two only set if this is a backing group for a resource cluster -->
+ <column name="CLUSTER_RESOURCE_GROUP_ID" type="INTEGER" references="RHQ_RESOURCE_GROUP"/>
+
+ <column name="VISIBLE" type="BOOLEAN"/>
+
+ <index name="RHQ_RES_GROUP_NAME" unique="false">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <!-- Many To Many mapping for groups to implicit resources -->
+ <table name="RHQ_RESOURCE_GROUP_RES_IMP_MAP">
+ <column name="RESOURCE_ID" required="true" type="INTEGER" references="RHQ_RESOURCE"/>
+ <column name="RESOURCE_GROUP_ID" required="true" type="INTEGER" references="RHQ_RESOURCE_GROUP"/>
+
+ <!-- not using full words to fit index name length -->
+ <constraint name="RHQ_RES_GROUP_RES_IMP_MAP_KEY">
+ <primaryKey>
+ <field ref="RESOURCE_ID"/>
+ <field ref="RESOURCE_GROUP_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <!-- Many To Many mapping for groups to explicit resources -->
+ <table name="RHQ_RESOURCE_GROUP_RES_EXP_MAP">
+ <column name="RESOURCE_ID" required="true" type="INTEGER" references="RHQ_RESOURCE"/>
+ <column name="RESOURCE_GROUP_ID" required="true" type="INTEGER" references="RHQ_RESOURCE_GROUP"/>
+
+ <!-- not using full words to fit index name length -->
+ <constraint name="RHQ_RES_GROUP_RES_EXP_MAP_KEY">
+ <primaryKey>
+ <field ref="RESOURCE_ID"/>
+ <field ref="RESOURCE_GROUP_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_CONFIG_GROUP_UPDATE">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="GROUP_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_GROUP"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" required="true" references="RHQ_CONFIG"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="false" size="100"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="10"/>
+ </table>
+
+ <table name="RHQ_CONFIG_UPDATE">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" required="true" references="RHQ_CONFIG" ondelete="cascade"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="false" size="100"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="CONFIG_RES_ID" type="INTEGER" required="false" references="RHQ_RESOURCE"/>
+ <column name="PLUGIN_CONFIG_RES_ID" type="INTEGER" required="false" references="RHQ_RESOURCE"/>
+ <column name="AGG_RES_UPDATE_ID" type="INTEGER" required="false" references="RHQ_CONFIG_GROUP_UPDATE"/>
+ <column name="AGG_PLUGIN_UPDATE_ID" type="INTEGER" required="false" references="RHQ_CONFIG_GROUP_UPDATE"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="10"/>
+ </table>
+
+
+ <table name="RHQ_TAGGING">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="NAMESPACE" type="VARCHAR2" required="false" size="20"/>
+ <column name="SEMANTIC" type="VARCHAR2" required="false" size="50"/>
+ <column name="NAME" type="VARCHAR2" required="true" size="100"/>
+ </table>
+
+ <table name="RHQ_TAGGING_RESOURCE_MAP">
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAGGING"/>
+ <constraint name="RHQ_TAGGING_RESOURCE_MAP_KEY">
+ <primaryKey>
+ <field ref="RESOURCE_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_TAGGING_RES_GROUP_MAP">
+ <column name="RESOURCE_GROUP_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_GROUP"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAGGING"/>
+ <constraint name="RHQ_TAGGING_RES_GROUP_MAP_KEY">
+ <primaryKey>
+ <field ref="RESOURCE_GROUP_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+<!-- END: inventory-schema.xml -->
+<!-- BEGIN: auth-schema.xml -->
+
+
+ <table name="RHQ_PRINCIPAL">
+
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="PRINCIPAL" required="true" type="VARCHAR2" size="100"/>
+ <column name="PASSWORD" required="true" type="VARCHAR2" size="64"/>
+
+ <!-- ensure that principals are unique -->
+ <index name="RHQ_PRINCIPAL_PRINCIPAL_KEY" unique="true">
+ <field ref="PRINCIPAL"/>
+ </index>
+
+ </table>
+
+<!-- END: auth-schema.xml -->
+<!-- BEGIN: authz-schema.xml -->
+
+
+ <table name="RHQ_ROLE">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="100" type="VARCHAR2"/>
+ <column name="DESCRIPTION" size="100" type="VARCHAR2"/>
+ <column name="FSYSTEM" type="BOOLEAN" default="false"/>
+
+ <index name="RHQ_ROLE_NAME_KEY" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <table name="RHQ_ROLE_RESOURCE_GROUP_MAP">
+ <column name="ROLE_ID" required="true" type="INTEGER" references="RHQ_ROLE"/>
+ <column name="RESOURCE_GROUP_ID" required="true" type="INTEGER" references="RHQ_RESOURCE_GROUP"/>
+
+ <constraint name="RHQ_ROLE_RES_GROUP_MAP_KEY">
+ <primaryKey>
+ <field ref="ROLE_ID"/>
+ <field ref="RESOURCE_GROUP_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_ROLE_LDAP_GROUP">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="ROLE_ID" required="true" type="INTEGER" references="RHQ_ROLE"/>
+ <column name="LDAP_GROUP_NAME" size="128" required="true" type="VARCHAR2"/>
+
+ <index name="RHQ_ROLE_LDAP_GROUP_IDX" unique="true">
+ <field ref="ROLE_ID"/>
+ <field ref="LDAP_GROUP_NAME"/>
+ </index>
+ </table>
+
+ <table name="RHQ_PERMISSION">
+ <column name="ROLE_ID" type="INTEGER" references="RHQ_ROLE" required="true"/>
+ <column name="OPERATION" type="INTEGER" required="true"/>
+ <constraint name="RHQ_PERMISSION_PK">
+ <primaryKey>
+ <field ref="ROLE_ID"/>
+ <field ref="OPERATION"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_SUBJECT">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="100" type="VARCHAR2"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" references="RHQ_CONFIG"/>
+ <column name="FIRST_NAME" required="false" size="100" type="VARCHAR2"/>
+ <column name="LAST_NAME" required="false" size="100" type="VARCHAR2"/>
+ <column name="EMAIL_ADDRESS" size="100" type="VARCHAR2"/>
+ <column name="SMS_ADDRESS" size="100" type="VARCHAR2"/>
+ <column name="PHONE_NUMBER" size="100" type="VARCHAR2"/>
+ <column name="DEPARTMENT" size="100" type="VARCHAR2"/>
+ <column name="FACTIVE" required="true" type="BOOLEAN" default="true"/>
+ <column name="FSYSTEM" required="true" type="BOOLEAN" default="false"/>
+
+ <index name="RHQ_SUBJECT_AUTH_KEY" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <table name="RHQ_SUBJECT_ROLE_MAP">
+ <column name="SUBJECT_ID" required="true" type="INTEGER" references="RHQ_SUBJECT"/>
+ <column name="ROLE_ID" required="true" type="INTEGER" references="RHQ_ROLE"/>
+
+ <constraint name="RHQ_SUBJECT_ROLE_MAPPING_KEY">
+ <primaryKey>
+ <field ref="SUBJECT_ID"/>
+ <field ref="ROLE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_SUBJECT_ROLE_LDAP_MAP">
+ <column name="SUBJECT_ID" required="true" type="INTEGER" references="RHQ_SUBJECT"/>
+ <column name="ROLE_ID" required="true" type="INTEGER" references="RHQ_ROLE"/>
+ <constraint name="RHQ_SUBJECT_ROLE_LDAP_MAP_PK">
+ <primaryKey>
+ <field ref="SUBJECT_ID" />
+ <field ref="ROLE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+<!-- END: authz-schema.xml -->
+<!-- BEGIN: search-schema.xml -->
+
+
+ <table name="RHQ_SAVED_SEARCH">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="CONTEXT" type="VARCHAR2" size="25" required="true"/>
+
+ <column name="NAME" type="VARCHAR2" size="200" required="true"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="500" required="false"/>
+ <column name="PATTERN" type="VARCHAR2" size="1000" required="true"/>
+
+ <column name="LAST_COMPUTE_TIME" type="LONG" required="true"/>
+ <column name="RESULT_COUNT" type="LONG" required="false"/>
+
+ <column name="SUBJECT_ID" type="INTEGER" references="RHQ_SUBJECT" required="true"/>
+ <column name="GLOBAL" type="BOOLEAN" required="true"/>
+ </table>
+
+<!-- END: search-schema.xml -->
+<!-- BEGIN: dashboard-schema.xml -->
+
+
+
+ <table name="RHQ_DASHBOARD">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" type="VARCHAR2" size="200" required="true"/>
+ <column name="SUBJECT_ID" type="INTEGER" required="true"/>
+ <column name="SHARED" type="BOOLEAN" required="true"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" required="false" references="RHQ_CONFIG"/>
+ </table>
+
+
+ <table name="RHQ_DASHBOARD_PORTLET">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" type="VARCHAR2" size="200" required="true"/>
+ <column name="PORTLET_KEY" type="VARCHAR2" size="200" required="true"/>
+ <column name="COL" type="INTEGER" required="true"/>
+ <column name="COL_INDEX" type="INTEGER" required="true"/>
+ <column name="HEIGHT" type="INTEGER" required="true"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" required="false" references="RHQ_CONFIG"/>
+ <column name="DASHBOARD_ID" type="INTEGER" required="false" references="RHQ_DASHBOARD"/>
+ </table>
+
+<!-- END: dashboard-schema.xml -->
+<!-- BEGIN: operation-schema.xml -->
+
+
+ <table name="RHQ_OPERATION_DEF">
+
+ <!-- === required columns === -->
+
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE(ID)"/>
+ <column name="NAME" type="VARCHAR2" required="true" size="100"/>
+
+ <!-- === optional columns === -->
+
+ <!-- an OSGI version range - if null, the operation def applies to all versions of the associated resource type -->
+ <column name="RESOURCE_VERSION_RANGE" type="VARCHAR2" size="100"/>
+
+ <!-- A parameter config definition is only required for operations that have parameters. -->
+ <!-- A results config definition is only required for operations that return data. -->
+ <column name="PARAMETER_CONFIG_DEF_ID" type="INTEGER" references="RHQ_CONFIG_DEF(ID)"/>
+ <column name="RESULTS_CONFIG_DEF_ID" type="INTEGER" references="RHQ_CONFIG_DEF(ID)"/>
+ <column name="DISPLAY_NAME" type="VARCHAR2" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="4000"/>
+ <column name="TIMEOUT" type="INTEGER"/>
+
+ <!-- === business key (RESOURCE_TYPE_ID + NAME) === -->
+ <index name="RHQ_OPERATION_DEF_KEY_IDX" unique="true">
+ <field ref="RESOURCE_TYPE_ID"/>
+ <field ref="NAME"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_OPERATION_HISTORY">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="8"/>
+ <column name="JOB_NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="JOB_GROUP" type="VARCHAR2" required="true" size="100"/>
+ <column name="OPERATION_DEF_ID" type="INTEGER" required="true" references="RHQ_OPERATION_DEF"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="STIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="PARAMETERS_CONFIG_ID" type="INTEGER" required="false" references="RHQ_CONFIG"/>
+
+ <!-- for resource history -->
+ <column name="RESOURCE_ID" type="INTEGER" required="false" references="RHQ_RESOURCE"/>
+ <column name="RESULTS_CONFIG_ID" type="INTEGER" required="false" references="RHQ_CONFIG"/>
+ <column name="GROUP_HISTORY_ID" type="INTEGER" required="false" references="RHQ_OPERATION_HISTORY"/>
+
+ <!-- for group history -->
+ <column name="GROUP_ID" type="INTEGER" required="false" references="RHQ_RESOURCE_GROUP"/>
+
+ <index name="RHQ_OPERATION_HISTORY_JOB_IDX" unique="true">
+ <field ref="JOB_NAME"/>
+ <field ref="JOB_GROUP"/>
+ <field ref="CTIME"/>
+ </index>
+
+ </table>
+
+ <!--
+ This table is really just to support some specific use-cases.
+ Specifically, to be able to get a list of histories for a specific schedule (aka quartz job)
+ and to be able to query a list of all schedules along with their associated resource/group IDs
+ possibly sorted by their next fire time.
+ Note that a NULL next fire time means it won't fire again and the row is probaby about to be deleted;
+ we can probably not even insert rows with NULL and make it a non-nullable field. But rather than
+ code special conditions into the session bean, we'll allow a short-lived NULL next fire time row.
+ -->
+ <table name="RHQ_OPERATION_SCHEDULE">
+ <column name="JOB_NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="JOB_GROUP" type="VARCHAR2" required="true" size="100"/>
+ <column name="DTYPE" type="VARCHAR2" required="true" size="8"/>
+ <column name="NEXT_FIRE_TIME" type="LONG" required="false"/>
+
+ <!-- for resource history -->
+ <column name="RESOURCE_ID" type="INTEGER" required="false" references="RHQ_RESOURCE"/>
+
+ <!-- for group history -->
+ <column name="GROUP_ID" type="INTEGER" required="false" references="RHQ_RESOURCE_GROUP"/>
+
+ <!--
+ Note that this is the same primary key that Quartz uses for its schedules (RHQ_qrtz_job_details).
+ We do not need to add DTYPE to the key, because we ensure the name/group are unique
+ across resource/group schedules
+ -->
+ <constraint name="RHQ_OPERATION_SCHEDULE_KEY">
+ <primaryKey>
+ <field ref="JOB_NAME"/>
+ <field ref="JOB_GROUP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+<!-- END: operation-schema.xml -->
+<!-- BEGIN: event-schema.xml -->
+
+
+ <!-- metadata -->
+
+ <table name="RHQ_EVENT_DEF">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE(ID)"/>
+
+ <column name="NAME" type="VARCHAR2" size="100" required="true"/>
+ <column name="DISPLAY_NAME" type="VARCHAR2" size="100"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="1000"/>
+
+ <index name="RHQ_EVENT_DEF_IDX" unique="true">
+ <field ref="RESOURCE_TYPE_ID"/>
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <!-- instance data -->
+
+ <table name="RHQ_EVENT_SOURCE">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="EVENT_DEF_ID" type="INTEGER" required="true" references="RHQ_EVENT_DEF(ID)"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE(ID)"/>
+
+ <column name="LOCATION" required="true" size="2000" type="VARCHAR2"/>
+
+ <index name="RHQ_EVENT_SOURCE_IDX" unique="true">
+ <field ref="EVENT_DEF_ID"/>
+ <field ref="RESOURCE_ID"/>
+ <field ref="LOCATION"/>
+ </index>
+ </table>
+
+ <table name="RHQ_EVENT">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="EVENT_SOURCE_ID" type="INTEGER" required="true" references="RHQ_EVENT_SOURCE(ID)"/>
+
+ <column name="TIMESTAMP" required="true" type="LONG"/>
+ <column name="SEVERITY" required="true" size="20" type="VARCHAR2"/>
+ <column name="DETAIL" required="true" size="4000" type="VARCHAR2"/>
+ <index name="RHQ_EVENT_IDX" unique="false">
+ <field ref="EVENT_SOURCE_ID"/>
+ <field ref="TIMESTAMP"/>
+ </index>
+ </table>
+
+<!-- END: event-schema.xml -->
+<!-- BEGIN: alert-schema.xml -->
+
+
+ <table name="RHQ_ALERT_DEFINITION">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" required="true" size="100" type="VARCHAR2"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="PARENT_ID" type="INTEGER" required="false"/>
+ <column name="GROUP_ALERT_DEF_ID" type="INTEGER" required="false"/>
+ <column name="DESCRIPTION" required="false" size="250" type="VARCHAR2"/>
+ <column name="PRIORITY" type="VARCHAR2" size="15" required="true"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" references="RHQ_RESOURCE_TYPE" required="false"/>
+ <column name="RESOURCE_ID" type="INTEGER" references="RHQ_RESOURCE" required="false"/>
+ <column name="RESOURCE_GROUP_ID" type="INTEGER" references="RHQ_RESOURCE_GROUP" required="false"/>
+ <column name="ENABLED" required="true" default="TRUE" type="BOOLEAN"/>
+
+ <column name="REQUIRED" required="true" type="SMALLINT"/>
+
+ <column name="RECOVERY_ID" type="INTEGER" required="true"/>
+ <!-- required, but 0 effectively means null -->
+ <column name="WILL_RECOVER" required="true" default="false" type="BOOLEAN"/>
+ <column name="NOTIFY_FILTERED" required="true" default="false" type="BOOLEAN"/>
+ <column name="CONTROL_FILTERED" required="true" default="FALSE" type="BOOLEAN"/>
+
+ <column name="DELETED" required="true" default="FALSE" type="BOOLEAN"/>
+ <column name="READ_ONLY" required="true" default="FALSE" type="BOOLEAN"/>
+
+ <column name="DAMPENING_CATEGORY" type="SMALLINT" required="true"/>
+ <column name="DAMPENING_VALUE" type="INTEGER"/>
+ <column name="DAMPENING_VALUE_UNITS" type="SMALLINT"/>
+ <column name="DAMPENING_PERIOD" type="INTEGER"/>
+ <column name="DAMPENING_PERIOD_UNITS" type="SMALLINT"/>
+ </table>
+
+ <table name="RHQ_ALERT_DAMPEN_EVENT">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="ALERT_DEFINITION_ID" required="false" type="INTEGER" references="RHQ_ALERT_DEFINITION(ID)"/>
+ <column name="EVENT_TYPE" required="true" type="SMALLINT"/>
+ <column name="EVENT_TIMESTAMP" required="true" type="LONG"/>
+
+ <index name="RHQ_DAMPENING_EVENT_TYPE_IDX">
+ <field ref="EVENT_TYPE"/>
+ </index>
+ <index name="RHQ_DAMPENING_EVENT_TS_IDX">
+ <field ref="EVENT_TIMESTAMP"/>
+ </index>
+ </table>
+
+ <table name="RHQ_ALERT_CONDITION">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="TYPE" required="true" type="VARCHAR2" size="15"/>
+ <!--
+ <column name="REQUIRED" required="true" type="BOOLEAN"/>
+ -->
+ <column name="MEASUREMENT_DEFINITION_ID" required="false" type="INTEGER"/>
+ <column name="NAME" required="false" size="100" type="VARCHAR2"/>
+ <column name="COMPARATOR" required="false" size="2" type="VARCHAR2"/>
+ <column name="THRESHOLD" required="false" type="DOUBLE"/>
+ <!-- event-based conditions use OPTION_STATUS for the string match, so should be a decent length -->
+ <column name="OPTION_STATUS" required="false" size="256" type="VARCHAR2"/>
+ <column name="ALERT_DEFINITION_ID" required="false" type="INTEGER" references="RHQ_ALERT_DEFINITION(ID)"/>
+ <column name="TRIGGER_ID" required="false" type="INTEGER"/>
+ </table>
+
+ <table name="RHQ_ALERT" tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@"
+ storage-options="freelists 5" cache="true" logging="false">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="ALERT_DEFINITION_ID" required="false" type="INTEGER" references="RHQ_ALERT_DEFINITION(ID)"/>
+ <column name="CTIME" required="true" type="LONG"/>
+ <column name="RECOVERY_ID" type="INTEGER" required="true"/>
+ <!-- required, but 0 effectively means null -->
+ <column name="WILL_RECOVER" required="true" default="false" type="BOOLEAN"/>
+ <column name="ACK_TIME" required="false" type="LONG"/>
+ <column name="ACK_SUBJECT" required="false" size="100" type="VARCHAR2"/>
+ <index name="RHQ_ALERT_IDX_TIME" unique="false">
+ <field ref="CTIME"/>
+ </index>
+ <index name="RHQ_ALERT_IDX_ALERTDEF" unique="false">
+ <field ref="ALERT_DEFINITION_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_ALERT_NOTIF_LOG" tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@"
+ storage-options="freelists 5" cache="true" logging="false">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="ALERT_ID" required="true" type="INTEGER" references="RHQ_ALERT(ID)"/>
+ <index name="RHQ_ALERT_IDX_ALERT" unique="false">
+ <field ref="ALERT_ID"/>
+ </index>
+ <column name="SENDER" required="false" size="100" type="VARCHAR2"/>
+ <column name="RESULT_STATE" required="false" size="20" type="VARCHAR2"/>
+ <column name="MESSAGE" required="false" size="4000" type="VARCHAR2"/>
+ </table>
+
+ <table name="RHQ_ALERT_CONDITION_LOG" tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@"
+ storage-options="freelists 5" cache="true" logging="false">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="CTIME" required="true" type="LONG"/>
+ <column name="ALERT_ID" required="false" type="INTEGER" references="RHQ_ALERT(ID)"/>
+ <column name="CONDITION_ID" required="true" type="INTEGER" references="RHQ_ALERT_CONDITION(ID)"/>
+ <column name="VALUE" required="false" size="250" type="VARCHAR2"/>
+ <index name="RHQ_ALERT_COND_LOG_IDX_TIME">
+ <field ref="CTIME" />
+ </index>
+ <index name="RHQ_ALERT_COND_LOG_IDX_ALERT">
+ <field ref="ALERT_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_ALERT_NOTIFICATION" tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@"
+ storage-options="freelists 5" cache="true" logging="false">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="ALERT_DEFINITION_ID" required="false" type="INTEGER" references="RHQ_ALERT_DEFINITION(ID)"/>
+ <column name="SENDER_CONFIG_ID" required="false" type="INTEGER" references="RHQ_CONFIG(ID)"/>
+ <column name="EXTRA_CONFIG_ID" required="false" type="INTEGER" references="RHQ_CONFIG(ID)"/>
+ <column name="SENDER_NAME" required="true" size="100" type="VARCHAR2" />
+ </table>
+
+<!-- END: alert-schema.xml -->
+<!-- BEGIN: sysconfig-schema.xml -->
+
+
+ <table name="RHQ_SYSTEM_CONFIG">
+ <column name="ID" default="sequence-only" initial="10001"
+ primarykey="true" required="true" type="INTEGER"/>
+ <column name="PROPERTY_KEY" type="VARCHAR2" size="80"/>
+ <column name="PROPERTY_VALUE" type="VARCHAR2" size="300"/>
+ <column name="DEFAULT_PROPERTY_VALUE" type="VARCHAR2" size="300"/>
+ <column name="FREAD_ONLY" type="BOOLEAN" default="FALSE"/>
+
+ <index name="RHQ_SYSTEM_CONFIG_KEY_INDX" unique="true">
+ <field ref="PROPERTY_KEY"/>
+ </index>
+ </table>
+
+<!-- END: sysconfig-schema.xml -->
+<!-- BEGIN: scheduler-schema.xml -->
+
+
+ <table name="RHQ_QRTZ_JOB_DETAILS">
+ <column name="JOB_NAME" required="true" type="VARCHAR2" size="80"/>
+ <column name="JOB_GROUP" required="true" type="VARCHAR2" size="80"/>
+ <column name="DESCRIPTION" required="false" type="VARCHAR2" size="120"/>
+ <column name="JOB_CLASS_NAME" required="true" type="VARCHAR2" size="128"/>
+ <column name="IS_DURABLE" required="true" type="BOOLEAN" default="FALSE"/>
+ <column name="IS_VOLATILE" required="true" type="BOOLEAN"/>
+ <column name="IS_STATEFUL" required="true" type="BOOLEAN" default="FALSE"/>
+ <column name="REQUESTS_RECOVERY" required="true" type="BOOLEAN" default="FALSE"/>
+ <column name="JOB_DATA" required="false" type="BLOB"/>
+
+ <constraint name="RHQ_PK_QRTZ_JOB_DETAILS">
+ <primaryKey>
+ <field ref="JOB_NAME"/>
+ <field ref="JOB_GROUP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_QRTZ_JOB_LISTENERS">
+ <column name="JOB_NAME" required="true" type="VARCHAR2" size="80"/>
+ <column name="JOB_GROUP" required="true" type="VARCHAR2" size="80"/>
+ <column name="JOB_LISTENER" required="true" type="VARCHAR2" size="80"/>
+
+ <constraint name="RHQ_PK_QRTZ_JOB_LISTENERS">
+ <primaryKey>
+ <field ref="JOB_NAME"/>
+ <field ref="JOB_GROUP"/>
+ <field ref="JOB_LISTENER"/>
+ </primaryKey>
+ </constraint>
+ <constraint name="RHQ_FK_QRTZ_JOB_LSTNRS_JN_JG">
+ <foreignKey local="JOB_NAME,JOB_GROUP"
+ references="RHQ_QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP)"
+ ondelete="cascade"/>
+ </constraint>
+ </table>
+
+ <table name="RHQ_QRTZ_TRIGGERS">
+ <column name="TRIGGER_NAME" type="VARCHAR2" required="true" size="80"/>
+ <column name="TRIGGER_GROUP" type="VARCHAR2" required="true" size="80"/>
+ <column name="JOB_NAME" type="VARCHAR2" required="true" size="80"/>
+ <column name="JOB_GROUP" type="VARCHAR2" required="true" size="80"/>
+ <column name="IS_VOLATILE" type="BOOLEAN" required="true"/>
+ <column name="DESCRIPTION" type="VARCHAR2" required="false" size="120"/>
+ <column name="NEXT_FIRE_TIME" type="LONG" required="false"/>
+ <column name="PREV_FIRE_TIME" type="LONG" required="false"/>
+ <column name="PRIORITY" type="INTEGER" required="false"/>
+ <column name="TRIGGER_STATE" type="VARCHAR" required="true" size="16"/>
+ <column name="TRIGGER_TYPE" type="VARCHAR" required="true" size="8"/>
+ <column name="START_TIME" type="LONG" required="true"/>
+ <column name="END_TIME" type="LONG" required="false"/>
+ <column name="CALENDAR_NAME" type="VARCHAR2" required="false" size="80"/>
+ <column name="MISFIRE_INSTR" type="INTEGER" required="false"/>
+ <column name="JOB_DATA" type="BLOB" required="false"/>
+
+ <constraint name="RHQ_PK_QRTZ_TRIGGERS">
+ <primaryKey>
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </primaryKey>
+ </constraint>
+ <constraint name="RHQ_FK_QRTZ_TRIGGERS_JN_JG">
+ <foreignKey local="JOB_NAME,JOB_GROUP"
+ references="RHQ_QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP)"
+ ondelete="cascade"/>
+ </constraint>
+
+ <!-- Quartz docs recommend these indexes. -->
+ <index name="RHQ_QRTZ_TRIGGERS_JN_JG_IDX">
+ <field ref="JOB_NAME"/>
+ <field ref="JOB_GROUP"/>
+ </index>
+ <index name="RHQ_QRTZ_TRIGGERS_NFT_IDX">
+ <field ref="NEXT_FIRE_TIME"/>
+ </index>
+ <index name="RHQ_QRTZ_TRIGGERS_TS_IDX">
+ <field ref="TRIGGER_STATE"/>
+ </index>
+ <index name="RHQ_QRTZ_TRIGGERS_TS_NFT_IDX">
+ <field ref="TRIGGER_STATE"/>
+ <field ref="NEXT_FIRE_TIME"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_QRTZ_SIMPLE_TRIGGERS">
+ <column name="TRIGGER_NAME" type="VARCHAR2" required="true" size="80"/>
+ <column name="TRIGGER_GROUP" type="VARCHAR2" required="true" size="80"/>
+ <column name="REPEAT_COUNT" type="LONG" required="true"/>
+ <column name="REPEAT_INTERVAL" type="LONG" required="true"/>
+ <column name="TIMES_TRIGGERED" type="LONG" required="true"/>
+
+ <constraint name="RHQ_PK_QRTZ_SIMPLE_TRIGGERS">
+ <primaryKey>
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </primaryKey>
+ </constraint>
+ <constraint name="RHQ_FK_QRTZ_SIMPLE_TRGRS_TN_TG">
+ <foreignKey local="TRIGGER_NAME,TRIGGER_GROUP"
+ references="RHQ_QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)"
+ ondelete="cascade"/>
+ </constraint>
+
+ <!-- Quartz docs recommend this index. -->
+ <!-- Commenting out, because Oracle auto-creates an index for the
+ primary key column(s) and fails if you try to create another
+ index for the same column(s) (ips, 03/29/07).
+ -->
+ <!--
+ <index name="RHQ_QRTZ_SIMPLE_TRGRS_TN_TG_IDX">
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </index>
+ -->
+ </table>
+
+ <table name="RHQ_QRTZ_CRON_TRIGGERS">
+ <column name="TRIGGER_NAME" type="VARCHAR2" size="80" required="true"/>
+ <column name="TRIGGER_GROUP" type="VARCHAR2" size="80" required="true"/>
+ <column name="CRON_EXPRESSION" type="VARCHAR2" size="80" required="true"/>
+ <column name="TIME_ZONE_ID" type="VARCHAR2" size="80" required="false"/>
+
+ <constraint name="RHQ_PK_QRTZ_CRON_TRIGGERS">
+ <primaryKey>
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </primaryKey>
+ </constraint>
+ <constraint name="RHQ_FK_QRTZ_CRON_TRIG_TN_TG">
+ <foreignKey local="TRIGGER_NAME,TRIGGER_GROUP"
+ references="RHQ_QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)"
+ ondelete="cascade"/>
+ </constraint>
+
+ <!-- Quartz docs recommend this index. -->
+ <!-- Commenting out, because Oracle auto-creates an index for the
+ primary key column(s) and fails if you try to create another
+ index for the same column(s) (ips, 03/29/07).
+ -->
+ <!--
+ <index name="RHQ_QRTZ_CRON_TRGRS_TN_TG_IDX">
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </index>
+ -->
+ </table>
+
+ <table name="RHQ_QRTZ_BLOB_TRIGGERS">
+ <column name="TRIGGER_NAME" type="VARCHAR2" size="80" required="true"/>
+ <column name="TRIGGER_GROUP" type="VARCHAR2" size="80" required="true"/>
+ <column name="BLOB_DATA" type="BLOB" required="false"/>
+
+ <constraint name="RHQ_PK_QRTZ_BLOB_TRIGGERS">
+ <primaryKey>
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </primaryKey>
+ </constraint>
+ <constraint name="RHQ_FK_QRTZ_BLOB_TRIGG_TN_TG">
+ <foreignKey local="TRIGGER_NAME,TRIGGER_GROUP"
+ references="RHQ_QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)"
+ ondelete="cascade"/>
+ </constraint>
+
+ <!-- Quartz docs recommend this index. -->
+ <!-- Commenting out, because Oracle auto-creates an index for the
+ primary key column(s) and fails if you try to create another
+ index for the same column(s) (ips, 03/29/07).
+ -->
+ <!--
+ <index name="RHQ_QRTZ_BLOB_TRGRS_TN_TG_IDX">
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </index>
+ -->
+ </table>
+
+ <table name="RHQ_QRTZ_TRIGGER_LISTENERS">
+ <column name="TRIGGER_NAME" type="VARCHAR2" size="80" required="true"/>
+ <column name="TRIGGER_GROUP" type="VARCHAR2" size="80" required="true"/>
+ <column name="TRIGGER_LISTENER" type="VARCHAR2" size="80" required="true"/>
+
+ <constraint name="RHQ_PK_QRTZ_TRIGGER_LISTENERS">
+ <primaryKey>
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ <field ref="TRIGGER_LISTENER"/>
+ </primaryKey>
+ </constraint>
+ <constraint name="RHQ_FK_QRTZ_TRGR_LSTNRS_TN_TG">
+ <foreignKey local="TRIGGER_NAME,TRIGGER_GROUP"
+ references="RHQ_QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)"
+ ondelete="cascade"/>
+ </constraint>
+
+ <!-- Quartz docs recommend this index. -->
+ <index name="RHQ_QRTZ_TRGR_LSTNRS_TN_TG_IDX">
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_QRTZ_FIRED_TRIGGERS">
+ <column name="ENTRY_ID" primarykey="true" type="VARCHAR2" size="95" required="true"/>
+ <column name="TRIGGER_NAME" type="VARCHAR2" size="80" required="true"/>
+ <column name="TRIGGER_GROUP" type="VARCHAR2" size="80" required="true"/>
+ <column name="INSTANCE_NAME" type="VARCHAR2" size="80" required="true"/>
+ <column name="FIRED_TIME" type="LONG" required="true"/>
+ <column name="PRIORITY" type="INTEGER" required="false"/>
+ <column name="STATE" type="VARCHAR2" size="16" required="true"/>
+ <column name="IS_VOLATILE" type="BOOLEAN" required="true"/>
+ <column name="JOB_NAME" type="VARCHAR2" size="80" required="false"/>
+ <column name="JOB_GROUP" type="VARCHAR2" size="80" required="false"/>
+ <column name="IS_STATEFUL" type="BOOLEAN" required="false"/>
+ <column name="REQUESTS_RECOVERY" type="BOOLEAN" required="false"/>
+
+ <!-- Quartz docs recommend these indexes. -->
+ <index name="RHQ_QRTZ_FIRED_TRGRS_TN_IDX">
+ <field ref="TRIGGER_NAME"/>
+ </index>
+ <index name="RHQ_QRTZ_FIRED_TRGRS_TG_IDX">
+ <field ref="TRIGGER_GROUP"/>
+ </index>
+ <index name="RHQ_QRTZ_FIRED_TRGRS_TN_TG_IDX">
+ <field ref="TRIGGER_NAME"/>
+ <field ref="TRIGGER_GROUP"/>
+ </index>
+ <index name="RHQ_QRTZ_FIRED_TRGRS_IN_IDX">
+ <field ref="INSTANCE_NAME"/>
+ </index>
+ <index name="RHQ_QRTZ_FIRED_TRGRS_JN_IDX">
+ <field ref="JOB_NAME"/>
+ </index>
+ <index name="RHQ_QRTZ_FIRED_TRGRS_JG_IDX">
+ <field ref="JOB_GROUP"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_QRTZ_CALENDARS">
+ <column name="CALENDAR_NAME" primarykey="true" type="VARCHAR2" size="80" required="true"/>
+ <column name="CALENDAR" type="BLOB" required="true"/>
+ </table>
+
+ <table name="RHQ_QRTZ_PAUSED_TRIGGER_GRPS">
+ <column name="TRIGGER_GROUP" primarykey="true" type="VARCHAR2" size="80" required="true"/>
+ </table>
+
+ <table name="RHQ_QRTZ_SCHEDULER_STATE">
+ <column name="INSTANCE_NAME" primarykey="true" type="VARCHAR2" size="80" required="true"/>
+ <column name="LAST_CHECKIN_TIME" type="LONG" required="true"/>
+ <column name="CHECKIN_INTERVAL" type="LONG" required="true"/>
+ <column name="RECOVERER" type="VARCHAR2" size="80" required="false"/>
+ </table>
+
+ <table name="RHQ_QRTZ_LOCKS">
+ <column name="LOCK_NAME" primarykey="true" type="VARCHAR2" size="40" required="true"/>
+ <data LOCK_NAME="TRIGGER_ACCESS"/>
+ <data LOCK_NAME="JOB_ACCESS"/>
+ <data LOCK_NAME="CALENDAR_ACCESS"/>
+ <data LOCK_NAME="STATE_ACCESS"/>
+ <data LOCK_NAME="MISFIRE_ACCESS"/>
+ </table>
+
+<!-- END: scheduler-schema.xml -->
+<!-- BEGIN: amps-schema.xml -->
+
+
+ <table name="RHQ_PLUGIN">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DISPLAY_NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="4000" type="VARCHAR2" required="false"/>
+ <column name="VERSION" size="200" type="VARCHAR2" required="false"/>
+ <column name="AMPS_VERSION" size="16" type="VARCHAR2" required="false"/>
+ <column name="ENABLED" type="BOOLEAN" required="true"/>
+ <column name="STATUS" size="16" type="VARCHAR2" required="true"/>
+ <column name="HELP" type="CLOB" required="false"/>
+ <column name="PATH" size="500" type="VARCHAR2" required="true"/>
+ <column name="MD5" size="100" type="VARCHAR2" required="true"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="DEPLOYMENT" size="8" type="VARCHAR2" required="true"/>
+ <column name="PTYPE" size="200" type="VARCHAR2" required="false"/>
+ <column name="PLUGIN_CONFIG_ID" type="INTEGER" references="RHQ_CONFIG" required="false"/>
+ <column name="JOBS_CONFIG_ID" type="INTEGER" references="RHQ_CONFIG" required="false"/>
+ <column name="CONTENT" type="BLOB" required="false"/>
+
+ <index name="RHQ_PLUGIN_NAME_DEPLOY_IDX" unique="true">
+ <field ref="NAME"/>
+ <field ref="DEPLOYMENT"/>
+ </index>
+ </table>
+
+<!-- END: amps-schema.xml -->
+<!-- BEGIN: measurement-schema.xml -->
+
+ <table name="RHQ_MEASUREMENT_DEF">
+
+ <!-- === required columns === -->
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE(ID)"/>
+ <column name="NAME" type="VARCHAR2" size="100" required="true"/>
+
+ <!-- === optional columns === -->
+ <!-- an OSGI version range - if null, the metric def applies to all versions of the associated resource type -->
+ <column name="RESOURCE_VERSION_RANGE" type="VARCHAR2" size="100"/>
+ <column name="CATEGORY" type="SMALLINT"/>
+ <column name="UNITS" type="SMALLINT"/>
+ <column name="NUMERIC_TYPE" type="SMALLINT"/>
+ <column name="DISPLAY_TYPE" type="SMALLINT"/>
+ <column name="DATA_TYPE" type="SMALLINT"/>
+ <column name="RAW_NUMERIC_TYPE" type="SMALLINT"/>
+ <column name="DEFAULT_ON" type="BOOLEAN" default="false"/>
+ <column name="DEFAULT_INTERVAL" type="LONG" />
+ <column name="DISPLAY_NAME" type="VARCHAR2" size="100"/>
+ <column name="DISPLAY_ORDER" type="INTEGER" default="1000"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="500"/>
+ <column name="DESTINATION_TYPE" type="VARCHAR2" size="100"/>
+
+ <column name="VERSION" type="INTEGER"/>
+ <!-- for optimistic locking -->
+
+ <!-- === business key (RESOURCE_TYPE_ID + NAME + RAW_NUMERIC_TYPE) === -->
+ <index name="RHQ_METRIC_DEF_KEY_IDX" unique="true">
+ <field ref="RESOURCE_TYPE_ID"/>
+ <field ref="NAME"/>
+ <field ref="RAW_NUMERIC_TYPE"/>
+ </index>
+ <index name="RHQ_METRIC_DEF_NT_IDX">
+ <field ref="NUMERIC_TYPE"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_MEASUREMENT_SCHED">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+
+ <column name="ENABLED" type="BOOLEAN" default="false"/>
+ <column name="MTIME" type="LONG" />
+ <column name="DEFINITION" type="INTEGER" references="RHQ_MEASUREMENT_DEF(ID)"/>
+ <column name="VERSION" type="INTEGER" />
+ <column name="COLL_INTERVAL" type="LONG" />
+ <column name="RESOURCE_ID" type="INTEGER" references="RHQ_RESOURCE(ID)"/>
+ <index name="RHQ_MEAS_SCHED_UNIQ" unique="true">
+ <field ref="RESOURCE_ID"/>
+ <field ref="DEFINITION"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_MEASUREMENT_BLINE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+
+ <column name="BL_USER_ENTERED" type="BOOLEAN" default="false" required="true"/>
+ <column name="BL_MIN" type="DOUBLE" required="true"/>
+ <column name="BL_MAX" type="DOUBLE" required="true"/>
+ <column name="BL_MEAN" type="DOUBLE" required="true"/>
+ <column name="BL_COMPUTE_TIME" type="LONG" required="true"/>
+ <column name="SCHEDULE_ID" type="INTEGER" required="true" references="RHQ_MEASUREMENT_SCHED(ID)"/>
+ <index name="RHQ_MEAS_BASELINE_CTIME_IDX">
+ <field ref="BL_COMPUTE_TIME"/>
+ </index>
+ <index name="RHQ_MEAS_BASELINE_SID_IDX">
+ <field ref="SCHEDULE_ID"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_MEASUREMENT_DATA_NUM_1H" logging="false" cache="true"
+ tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@" storage-options="freelists 20">
+
+ <column name="TIME_STAMP" required="true" type="LONG"/>
+ <column name="SCHEDULE_ID" required="true" type="INTEGER"/>
+ <column name="VALUE" required="false" type="DOUBLE"/>
+ <column name="MINVALUE" required="false" type="DOUBLE"/>
+ <column name="MAXVALUE" required="false" type="DOUBLE"/>
+
+ <constraint name="RHQ_MEAS_DATA_1H_ID_TIME_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+
+ <index name="RHQ_MEAS_DATA_1H_TIME_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_MEASUREMENT_DATA_NUM_6H" logging="false" cache="true"
+ tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@" storage-options="freelists 20">
+
+ <column name="TIME_STAMP" required="true" type="LONG"/>
+ <column name="SCHEDULE_ID" required="true" type="INTEGER"/>
+ <column name="VALUE" required="false" type="DOUBLE"/>
+ <column name="MINVALUE" required="false" type="DOUBLE"/>
+ <column name="MAXVALUE" required="false" type="DOUBLE"/>
+
+ <constraint name="RHQ_MEAS_DATA_6H_ID_TIME_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+
+ <index name="RHQ_MEAS_DATA_6H_TIME_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_MEASUREMENT_DATA_NUM_1D" logging="false" cache="true"
+ tablespace="@@@LARGE_TABLESPACE_FOR_DATA@@@" storage-options="freelists 20">
+
+ <column name="TIME_STAMP" required="true" type="LONG"/>
+ <column name="SCHEDULE_ID" required="true" type="INTEGER"/>
+ <column name="VALUE" required="false" type="DOUBLE"/>
+ <column name="MINVALUE" required="false" type="DOUBLE"/>
+ <column name="MAXVALUE" required="false" type="DOUBLE"/>
+
+ <constraint name="RHQ_MEAS_DATA_1D_ID_TIME_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+
+ <table name="RHQ_MEASUREMENT_DATA_TRAIT">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER" />
+ <column name="VALUE" type="VARCHAR2" size="4000" />
+ <constraint name="RHQ_MEAS_DATA_TRAIT_ID_TIME_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+
+ <table name="RHQ_CALLTIME_DATA_KEY">
+ <column name="ID" type="INTEGER" default="sequence-only" initial="10001" primarykey="true" required="true"/>
+ <column name="SCHEDULE_ID" type="INTEGER" required="true"/>
+ <column name="CALL_DESTINATION" type="VARCHAR2" size="4000" required="true"/>
+ <index name="RHQ_CALLTIME_DATA_KEY_IDX" unique="true">
+ <field ref="SCHEDULE_ID"/>
+ <field ref="CALL_DESTINATION"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_CALLTIME_DATA_VALUE">
+ <column name="ID" type="INTEGER" default="sequence-only" initial="10001" primarykey="true" required="true"/>
+ <column name="KEY_ID" type="INTEGER" references="RHQ_CALLTIME_DATA_KEY" required="true"/>
+ <column name="BEGIN_TIME" type="LONG" required="true"/>
+ <column name="END_TIME" type="LONG" required="true"/>
+ <column name="MINIMUM" type="DOUBLE" required="true"/>
+ <column name="MAXIMUM" type="DOUBLE" required="true"/>
+ <column name="TOTAL" type="DOUBLE" required="true"/>
+ <column name="COUNT" type="LONG" required="true"/>
+ <index name="RHQ_CT_DA_VA_END_TIM_IDX">
+ <field ref="END_TIME"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_AVAILABILITY">
+ <column name="ID" type="INTEGER" default="sequence-only" initial="10001" primarykey="true" required="true"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE(ID)"/>
+ <column name="START_TIME" type="LONG" required="true" />
+ <column name="END_TIME" type="LONG" required="false" />
+ <column name="AVAILABILITY_TYPE" type="SMALLINT" required="false" />
+ <index name="RHQ_AVAIL_RESOURCE_START_IDX">
+ <field ref="RESOURCE_ID"/>
+ <field ref="START_TIME"/>
+ </index>
+ <!-- only one null row can exist for any resource -->
+ <index name="RHQ_AVAIL_RESOURCE_END_IDX" condition="END_TIME IS NULL">
+ <field ref="RESOURCE_ID"/>
+ <field ref="END_TIME" />
+ </index>
+ </table>
+
+ <table name="RHQ_RESOURCE_AVAIL">
+ <column name="ID" type="INTEGER" default="sequence-only" initial="10001" primarykey="true" required="true"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE(ID)" ondelete="cascade"/>
+ <column name="AVAILABILITY_TYPE" type="SMALLINT" required="false" />
+ <index name="RHQ_RESOURCE_AVAIL_IDX">
+ <field ref="RESOURCE_ID" />
+ </index>
+ </table>
+
+ <table name="RHQ_MEASUREMENT_OOB">
+ <column name="SCHEDULE_ID" type="INTEGER" references="RHQ_MEASUREMENT_SCHED(ID)" required="true"/>
+ <column name="TIME_STAMP" type="LONG" required="true"/>
+ <column name="OOB_FACTOR" type="INTEGER" required="true" />
+ <constraint name="RHQ_MEAS_OOB_ID_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_MEASUREMENT_OOB_TMP">
+ <column name="SCHEDULE_ID" type="INTEGER" required="true"/>
+ <column name="TIME_STAMP" type="LONG" required="true"/>
+ <column name="OOB_FACTOR" type="INTEGER" required="true" />
+ <constraint name="RHQ_MEAS_OOB_TMP_ID_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_NUMBERS">
+ <column name="i" type="INTEGER" default="sequence-only" initial="10001" primarykey="true" required="true" />
+ </table>
+
+
+ <table name="RHQ_MEAS_DATA_NUM_R00">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R00_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R00_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R01">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R01_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R01_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R02">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R02_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R02_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R03">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R03_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R03_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R04">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R04_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R04_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R05">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R05_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R05_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R06">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R06_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R06_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R07">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R07_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R07_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R08">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R08_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R08_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R09">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R09_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R09_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R10">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R10_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R10_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R11">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R11_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R11_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R12">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R12_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R12_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R13">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R13_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R13_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+ <table name="RHQ_MEAS_DATA_NUM_R14">
+ <column name="TIME_STAMP" type="LONG"/>
+ <column name="SCHEDULE_ID" type="INTEGER"/>
+ <column name="VALUE" type="DOUBLE"/>
+ <index name="RHQ_MEAS_DATA_R14_TS_IDX">
+ <field ref="TIME_STAMP"/>
+ </index>
+ <constraint name="RHQ_MEAS_DATA_NUM_R14_ID_T_PK">
+ <primaryKey>
+ <field ref="SCHEDULE_ID"/>
+ <field ref="TIME_STAMP"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+<!-- END: measurement-schema.xml -->
+<!-- BEGIN: content-schema.xml -->
+
+
+ <table name="RHQ_ARCHITECTURE">
+ <column name="ID" default="sequence-only" initial="100" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="50" type="VARCHAR2" required="true"/>
+ <index name="RHQ_ARCHITECTURE_NAME_IDX" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <table name="RHQ_REPO_GROUP_TYPE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ </table>
+
+
+ <table name="RHQ_REPO_GROUP">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+
+ <column name="REPO_GROUP_TYPE_ID" type="INTEGER" references="RHQ_REPO_GROUP_TYPE" required="true"/>
+
+ <index name="RHQ_REPO_GROUP_IDX" unique="true">
+ <field ref="NAME"/>
+ <field ref="REPO_GROUP_TYPE_ID"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_CONTENT_SOURCE_TYPE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DISPLAY_NAME" size="200" type="VARCHAR2" required="false"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="PLUGIN_NAME" size="100" type="VARCHAR2" required="false"/>
+ <!-- we might want this as part of natural key -->
+ <column name="DEFAULT_LAZY_LOAD" type="BOOLEAN" required="true"/>
+ <column name="DEFAULT_DOWNLOAD_MODE" size="16" type="VARCHAR2" required="true"/>
+ <column name="DEFAULT_SYNC_SCHEDULE" size="64" type="VARCHAR2" required="false"/>
+ <column name="API_CLASS" size="100" type="VARCHAR2" required="true"/>
+
+ <column name="SOURCE_CONFIG_DEF_ID" type="INTEGER" references="RHQ_CONFIG_DEF" required="false"/>
+
+ <index name="RHQ_CONTENT_SOURCE_TYPE_IDX" unique="true">
+ <field ref="NAME"/>
+ <!-- <field ref="PLUGIN_NAME"/> -->
+ </index>
+ </table>
+
+ <table name="RHQ_CONTENT_SOURCE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="LAZY_LOAD" type="BOOLEAN" required="true"/>
+ <column name="DOWNLOAD_MODE" size="16" type="VARCHAR2" required="true"/>
+ <column name="SYNC_SCHEDULE" size="64" type="VARCHAR2" required="false"/>
+ <column name="LOAD_ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="CREATION_TIME" type="LONG" required="true"/>
+ <column name="LAST_MODIFIED_TIME" type="LONG" required="true"/>
+
+ <column name="CONTENT_SOURCE_TYPE_ID" type="INTEGER" references="RHQ_CONTENT_SOURCE_TYPE" required="true"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" references="RHQ_CONFIG" required="false"/>
+
+ <index name="RHQ_CONTENT_SOURCE_IDX" unique="true">
+ <field ref="NAME"/>
+ <field ref="CONTENT_SOURCE_TYPE_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_REPO">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="CREATION_TIME" type="LONG" required="true"/>
+ <column name="LAST_MODIFIED_TIME" type="LONG" required="true"/>
+ <column name="IS_CANDIDATE" type="BOOLEAN" required="true"/>
+ <column name="SYNC_SCHEDULE" size="64" type="VARCHAR2" required="false"/>
+
+ <index name="RHQ_REPO_IDX" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_REPO_RELATION_TYPE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ </table>
+
+
+ <table name="RHQ_REPO_RELATION">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="RELATED_REPO_ID" type="INTEGER" references="RHQ_REPO" required="true"/>
+ <column name="REPO_RELATION_TYPE_ID" type="INTEGER" references="RHQ_REPO_RELATION_TYPE" required="true"/>
+ </table>
+
+
+
+ <table name="RHQ_PACKAGE_TYPE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DISPLAY_NAME" size="200" type="VARCHAR2" required="false"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="CATEGORY" size="50" type="VARCHAR2" required="false"/>
+ <column name="DISCOVERY_INTERVAL" type="INTEGER" required="false"/>
+ <column name="IS_CREATION_DATA" type="BOOLEAN" required="true"/>
+ <column name="SUPPORTS_ARCHITECTURE" type="BOOLEAN" required="true"/>
+
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" references="RHQ_RESOURCE_TYPE" required="true"/>
+ <column name="DEPLOYMENT_CONFIG_DEF_ID" type="INTEGER" references="RHQ_CONFIG_DEF" required="false"/>
+ <column name="PACKAGE_EXTRA_CONFIG_ID" type="INTEGER" references="RHQ_CONFIG_DEF" required="false"/>
+
+ <index name="RHQ_PACKAGE_TYPE_IDX" unique="true">
+ <field ref="NAME"/>
+ <field ref="RESOURCE_TYPE_ID"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_PACKAGE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="CLASSIFICATION" size="200" type="VARCHAR2" required="false"/>
+
+ <column name="PACKAGE_TYPE_ID" type="INTEGER" references="RHQ_PACKAGE_TYPE" required="true"/>
+
+ <index name="RHQ_PACKAGE_IDX" unique="true">
+ <field ref="NAME"/>
+ <field ref="PACKAGE_TYPE_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_PACKAGE_BITS">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="BITS" type="LARGEOBJECT" required="false"/>
+ </table>
+
+ <table name="RHQ_PACKAGE_VERSION">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="DISPLAY_NAME" size="200" type="VARCHAR2" required="false"/>
+ <column name="SHORT_DESCRIPTION" size="10000" type="CLOB" required="false"/>
+ <column name="LONG_DESCRIPTION" size="50000" type="CLOB" required="false"/>
+ <column name="VERSION" size="500" type="VARCHAR2" required="true"/>
+ <column name="DISPLAY_VERSION" size="500" type="VARCHAR2" required="false"/>
+ <column name="FILE_NAME" size="255" type="VARCHAR2" required="false"/>
+ <column name="FILE_SIZE" type="LONG" required="false"/>
+ <column name="FILE_MD5" size="32" type="VARCHAR2" required="false"/>
+ <column name="FILE_SHA256" size="64" type="VARCHAR2" required="false"/>
+ <column name="FILE_CREATION_TIME" type="LONG" required="false"/>
+ <column name="LICENSE_NAME" size="255" type="VARCHAR2" required="false"/>
+ <column name="LICENSE_VERSION" size="20" type="VARCHAR2" required="false"/>
+ <column name="METADATA" type="BLOB" required="false"/>
+
+ <column name="PACKAGE_ID" type="INTEGER" references="RHQ_PACKAGE" required="true"/>
+ <column name="ARCHITECTURE_ID" type="INTEGER" references="RHQ_ARCHITECTURE" required="true"/>
+ <column name="CONFIG_ID" type="INTEGER" references="RHQ_CONFIG" required="false"/>
+ <column name="PACKAGE_BITS_ID" type="INTEGER" references="RHQ_PACKAGE_BITS" required="false"/>
+
+ <index name="RHQ_PACKAGE_VERSION_IDX" unique="true">
+ <field ref="PACKAGE_ID"/>
+ <field ref="VERSION"/>
+ <field ref="ARCHITECTURE_ID"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_CONTENT_REQ">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="REQUEST_TYPE" type="VARCHAR2" required="true" size="20"/>
+ <column name="NOTES" type="VARCHAR2" required="false" size="512"/>
+ </table>
+
+ <table name="RHQ_INSTALLED_PACKAGE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="INSTALLATION_TIME" type="LONG" required="false"/>
+
+ <column name="RESOURCE_ID" type="INTEGER" references="RHQ_RESOURCE" required="true"/>
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" references="RHQ_PACKAGE_VERSION" required="true"/>
+ <column name="SUBJECT_ID" type="INTEGER" references="RHQ_SUBJECT" required="false"/>
+ </table>
+
+ <table name="RHQ_INSTALLED_PKG_HIST">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="STATUS" type="VARCHAR2" size="24" required="true"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="HISTORY_TIMESTAMP" type="LONG" required="false"/>
+
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" references="RHQ_PACKAGE_VERSION" required="true"/>
+ <column name="RESOURCE_ID" type="INTEGER" references="RHQ_RESOURCE" required="true"/>
+ <column name="DEPLOYMENT_CONFIG_ID" type="INTEGER" references="RHQ_CONFIG" required="false"/>
+ <column name="CONTENT_SERVICE_REQUEST_ID" type="INTEGER" references="RHQ_CONTENT_REQ" required="false"/>
+ </table>
+
+ <table name="RHQ_CONTENT_SRC_SYNC">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="STATUS" type="VARCHAR2" size="16" required="true"/>
+ <column name="START_TIME" type="LONG" required="true"/>
+ <column name="END_TIME" type="LONG" required="false"/>
+ <column name="RESULTS" type="LONGVARCHAR" required="false"/>
+ <column name="CONTENT_SRC_ID" type="INTEGER" required="true" references="RHQ_CONTENT_SOURCE"/>
+ </table>
+
+ <table name="RHQ_REPO_SYNC">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="STATUS" type="VARCHAR2" size="16" required="true"/>
+ <column name="START_TIME" type="LONG" required="true"/>
+ <column name="END_TIME" type="LONG" required="false"/>
+ <column name="RESULTS" type="LONGVARCHAR" required="false"/>
+ <column name="PERCENT_COMPLETE" type="LONG" required="false"/>
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ </table>
+
+
+ <table name="RHQ_PACKAGE_INST_STEP">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="STEP_KEY" type="VARCHAR2" size="500" required="true"/>
+ <column name="STEP_ORDER" type="INTEGER" required="true"/>
+ <column name="DESCRIPTION" type="VARCHAR2" size="4000" required="true"/>
+ <column name="ERROR_MSG" type="LONGVARCHAR" required="false"/>
+ <column name="RESULT" type="VARCHAR2" size="25" required="true"/>
+
+ <column name="INSTALLED_PKG_HIST_ID" type="INTEGER" references="RHQ_INSTALLED_PKG_HIST"/>
+ </table>
+
+ <table name="RHQ_REPO_RESOURCE_MAP">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_RESOURCE_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="RESOURCE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_REPO_CONTENT_SRC_MAP"> 1
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="CONTENT_SRC_ID" type="INTEGER" required="true" references="RHQ_CONTENT_SOURCE"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_CONTENT_SRC_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="CONTENT_SRC_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_REPO_REPO_GROUP_MAP">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="REPO_GROUP_ID" type="INTEGER" required="true" references="RHQ_REPO_GROUP"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_REPO_GROUP_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="REPO_GROUP_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_REPO_REPO_RELATION_MAP">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="REPO_RELATION_ID" type="INTEGER" required="true" references="RHQ_REPO_RELATION"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_REPO_RELATION_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="REPO_RELATION_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+
+ <table name="RHQ_REPO_PKG_VERSION_MAP">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_VERSION"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_PKG_VER_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="PACKAGE_VERSION_ID"/>
+ </primaryKey>
+ </constraint>
+ <index name="RHQ_REPO_PKG_VER_MAP_IDX" unique="false">
+ <field ref="PACKAGE_VERSION_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_PKG_VER_CONTENT_SRC_MAP">
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_VERSION"/>
+ <column name="CONTENT_SRC_ID" type="INTEGER" required="true" references="RHQ_CONTENT_SOURCE"/>
+ <column name="LOCATION" type="VARCHAR2" size="4000" required="true"/>
+
+ <constraint name="RHQ_PKG_VER_CONTENT_SRC_KEY">
+ <primaryKey>
+ <field ref="PACKAGE_VERSION_ID"/>
+ <field ref="CONTENT_SRC_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_PKG_PRD_MAP">
+ <column name="PKG_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_VERSION"/>
+ <column name="PRD_ID" type="INTEGER" required="true" references="RHQ_PRD_VER"/>
+
+ <constraint name="RHQ_PKG_PRD_KEY">
+ <primaryKey>
+ <field ref="PKG_ID"/>
+ <field ref="PRD_ID"/>
+ </primaryKey>
+ </constraint>
+
+ </table>
+
+ <table name="RHQ_DISTRIBUTION_TYPE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+
+ </table>
+
+ <table name="RHQ_DISTRIBUTION">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="DISTRIBUTION_TYPE_ID" type="INTEGER" required="true" references="RHQ_DISTRIBUTION_TYPE"/>
+ <column name="LABEL" size="64" type="VARCHAR2" required="true"/>
+ <column name="BASE_PATH" size="256" type="VARCHAR2" required="true"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <index name="RHQ_DISTRIBUTION_IDX" unique="true">
+ <field ref="LABEL"/>
+ <field ref="BASE_PATH"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_REPO_DISTRIBUTION">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="DISTRIBUTION_ID" type="INTEGER" required="true" references="RHQ_DISTRIBUTION"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_DIST_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="DISTRIBUTION_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+
+
+ <table name="RHQ_DISTRIBUTION_FILE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="DISTRIBUTION_ID" type="INTEGER" required="true" references="RHQ_DISTRIBUTION"/>
+ <column name="RELATIVE_FILENAME" size="256" type="VARCHAR2" required="true"/>
+ <!--<column name="FILE_SIZE" type="NUMBER" required="true"/>-->
+ <column name="MD5SUM" size="64" type="VARCHAR2" required="true"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+ <!--<column name="CTIME" type="LONG" required="true"/>-->
+
+ <index name="RHQ_DISTRIBUTION_FILE_IDX" unique="true">
+ <field ref="DISTRIBUTION_ID"/>
+ <field ref="RELATIVE_FILENAME"/>
+ </index>
+ </table>
+
+
+
+
+ <table name="RHQ_ADVISORY">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="ADVISORY" size="64" type="VARCHAR2" required="true"/>
+ <column name="ADVISORY_TYPE" size="64" type="VARCHAR2" required="true" />
+ <column name="ADVISORY_REL" size="64" type="VARCHAR2" required="false"/>
+ <column name="ADVISORY_NAME" size="64" type="VARCHAR2" required="false"/>
+ <column name="DESCRIPTION" size="4000" type="VARCHAR2" required="false"/>
+ <column name="SYNOPSIS" size="4000" type="VARCHAR2" required="true"/>
+ <column name="TOPIC" size="4000" type="VARCHAR2" required="false"/>
+ <column name="SOLUTION" size="4000" type="VARCHAR2" required="false"/>
+ <column name="SEVERITY" size="64" type="VARCHAR2" required="false"/>
+ <column name="ISSUE_DATE" type="LONG" required="false"/>
+ <column name="UPDATE_DATE" type="LONG" required="false"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <index name="RHQ_ADVISORY_NAME_UQ" unique="true">
+ <field ref="ADVISORY_NAME"/>
+ </index>
+
+ <index name="RHQ_ADVISORY_UQ" unique="true">
+ <field ref="ADVISORY"/>
+ </index>
+
+ <index name="RHQ_ADVISORY_UDATE_IDX" unique="false">
+ <field ref="UPDATE_DATE"/>
+ </index>
+ </table>
+
+ <table name="RHQ_ADVISORY_PACKAGE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="ADVISORY_ID" type="INTEGER" required="true" references="RHQ_ADVISORY"/>
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_VERSION"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <index name="RHQ_ADVISORY_PKG_IDX" unique="true">
+ <field ref="ADVISORY_ID"/>
+ <field ref="PACKAGE_VERSION_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_CVE">
+ <column name="ID" default="sequence-only" initial="101" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="64" type="VARCHAR2" required="true"/>
+ </table>
+
+ <table name="RHQ_ADVISORY_CVE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="ADVISORY_ID" type="INTEGER" required="true" references="RHQ_ADVISORY"/>
+ <column name="CVE_ID" type="INTEGER" required="true" references="RHQ_CVE"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <index name="RHQ_ADVISORY_CVE_IDX" unique="true">
+ <field ref="ADVISORY_ID"/>
+ <field ref="CVE_ID"/>
+ </index>
+
+ </table>
+
+ <table name="RHQ_ADVISORY_BUGLIST">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="ADVISORY_ID" type="INTEGER" required="true" references="RHQ_ADVISORY"/>
+ <column name="BUG_ID" size="256" type="VARCHAR2" required="true"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <index name="RHQ_ADVISORY_BUG_IDX" unique="true">
+ <field ref="ADVISORY_ID"/>
+ <field ref="BUG_ID"/>
+ </index>
+ </table>
+
+
+ <table name="RHQ_REPO_ADVISORY">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="ADVISORY_ID" type="INTEGER" required="true" references="RHQ_ADVISORY"/>
+ <column name="LAST_MODIFIED" type="LONG" required="true"/>
+
+ <constraint name="RHQ_REPO_ADV_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="ADVISORY_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <!-- BUNDLE_TYPE is things like "Cobbler profile" or "file-based bundle" or "puppet recipe" -->
+ <table name="RHQ_BUNDLE_TYPE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE"/>
+
+ <!-- This index is for constraint, not performance -->
+ <index name="RHQ_BUNDLE_TYPE_UNIQUE" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <!-- BUNDLE is a named piece of content that can be versioned and installed somewhere -->
+ <table name="RHQ_BUNDLE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="BUNDLE_TYPE_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_TYPE"/>
+ <column name="PACKAGE_TYPE_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_TYPE"/>
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+
+ <!-- This index is for constraint, not performance -->
+ <index name="RHQ_BUNDLE_UNIQUE" unique="true">
+ <field ref="BUNDLE_TYPE_ID"/>
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <!-- BUNDLE_VERSION represents an actual piece of content that needs to be installed somewhere -->
+ <table name="RHQ_BUNDLE_VERSION">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="VERSION" size="500" type="VARCHAR2" required="true"/>
+ <column name="VERSION_ORDER" type="INTEGER" required="true"/>
+ <column name="ACTION" type="CLOB" required="true"/>
+ <column name="CONFIG_DEF_ID" type="INTEGER" required="false" references="RHQ_CONFIG_DEF" />
+ <column name="BUNDLE_ID" type="INTEGER" required="true" references="RHQ_BUNDLE"/>
+
+ <!-- This index is for constraint, not performance -->
+ <index name="RHQ_BUNDLE_VERSION_UNIQUE" unique="true">
+ <field ref="BUNDLE_ID"/>
+ <field ref="NAME"/>
+ <field ref="VERSION"/>
+ </index>
+ </table>
+
+ <!-- Many-to-many table that links many repos to a particular bundle version. destination platforms -->
+ <!-- would be required to have associations to the specified repos (to access required content -->
+ <table name="RHQ_BUNDLE_VERSION_REPO">
+ <column name="BUNDLE_VERSION_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_VERSION"/>
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+
+ <constraint name="RHQ_BUNDLE_VERSION_REPO_KEY">
+ <primaryKey>
+ <field ref="BUNDLE_VERSION_ID"/>
+ <field ref="REPO_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <!-- BUNDLE_FILE represents a file that is associated with (possibly bundled inside) a bundle version -->
+ <table name="RHQ_BUNDLE_FILE">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="BUNDLE_VERSION_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_VERSION"/>
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_VERSION"/>
+ </table>
+
+ <!-- A logical destination for a bundle deployment. Defines the platforms and directory on those targets. -->
+ <table name="RHQ_BUNDLE_DESTINATION">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="BUNDLE_ID" type="INTEGER" required="true" references="RHQ_BUNDLE"/>
+ <column name="GROUP_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_GROUP"/>
+ <column name="DEPLOY_DIR" size="256" type="VARCHAR2" required="true"/>
+
+ <!-- This index is for constraint, not performance -->
+ <index name="RHQ_BUNDLE_DESTINATION_UNIQUE" unique="true">
+ <field ref="BUNDLE_ID"/>
+ <field ref="GROUP_ID"/>
+ <field ref="DEPLOY_DIR"/>
+ </index>
+ </table>
+
+ <!-- An actual deployment of a bundle version to a destination, with a specific config. Bundle deployments
+ can differ only on ctime, which is assumed to be different -->
+ <table name="RHQ_BUNDLE_DEPLOYMENT">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="BUNDLE_VERSION_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_VERSION"/>
+ <column name="BUNDLE_DESTINATION_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_DESTINATION"/>
+ <column name="CONFIG_ID" type="INTEGER" required="false" references="RHQ_CONFIG" />
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="false" size="255"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="IS_LIVE" type="BOOLEAN" required="true"/>
+ <column name="REPLACED_BUNDLE_DEPLOYMENT_ID" type="INTEGER" required="false" references="RHQ_BUNDLE_DEPLOYMENT"/>
+ </table>
+
+ <!-- Represents a bundle version that is deployed on a platform resource -->
+ <table name="RHQ_BUNDLE_RES_DEPLOY">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="BUNDLE_DEPLOYMENT_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_DEPLOYMENT" />
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE" />
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <index name="RHQ_BUNDLE_RES_DEPLOY_IDX" unique="true">
+ <field ref="BUNDLE_DEPLOYMENT_ID"/>
+ <field ref="RESOURCE_ID"/>
+ </index>
+ </table>
+
+ <table name="RHQ_BUNDLE_RES_DEP_HIST">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="BUNDLE_RES_DEPLOY_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_RES_DEPLOY" />
+ <column name="SUBJECT_NAME" required="false" size="255" type="VARCHAR2"/>
+ <column name="AUDIT_TIME" required="true" type="LONG"/>
+ <column name="ACTION" required="true" size="128" type="VARCHAR2"/>
+ <column name="INFO" required="true" size="512" type="VARCHAR2"/>
+ <column name="CATEGORY" required="false" size="32" type="VARCHAR2"/>
+ <column name="STATUS" required="true" type="VARCHAR2" size="16"/>
+ <column name="MESSAGE" required="false" type="LONGVARCHAR"/>
+ <column name="ATTACHMENT" required="false" type="LONGVARCHAR"/>
+ </table>
+
+ <table name="RHQ_TAGGING_BUNDLE_MAP">
+ <column name="BUNDLE_ID" type="INTEGER" required="true" references="RHQ_BUNDLE"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAGGING"/>
+ <constraint name="RHQ_TAGGING_BUNDLE_MAP_KEY">
+ <primaryKey>
+ <field ref="BUNDLE_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_TAGGING_BUNDLE_VERSION_MAP">
+ <column name="BUNDLE_VERSION_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_VERSION"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAGGING"/>
+ <constraint name="RHQ_TAGGING_BUNDLE_VER_MAP_KEY">
+ <primaryKey>
+ <field ref="BUNDLE_VERSION_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_TAGGING_BUNDLE_DEPLOY_MAP">
+ <column name="BUNDLE_DEPLOYMENT_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_DEPLOYMENT"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAGGING"/>
+ <constraint name="RHQ_TAGGING_BUNDLE_DEP_MAP_KEY">
+ <primaryKey>
+ <field ref="BUNDLE_DEPLOYMENT_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_TAGGING_BUNDLE_DEST_MAP">
+ <column name="BUNDLE_DESTINATION_ID" type="INTEGER" required="true" references="RHQ_BUNDLE_DESTINATION"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAGGING"/>
+ <constraint name="RHQ_TAGGING_BUNDLE_DES_MAP_KEY">
+ <primaryKey>
+ <field ref="BUNDLE_DESTINATION_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+
+<!-- END: content-schema.xml -->
+<!-- BEGIN: resource-request-schema.xml -->
+
+
+ <table name="RHQ_CREATE_RES_HIST">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="PARENT_RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ <column name="CREATED_RESOURCE_NAME" type="VARCHAR2" size="500" required="false"/>
+ <column name="NEW_RESOURCE_KEY" type="VARCHAR2" required="false" size="500"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="RESOURCE_TYPE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE_TYPE"/>
+ <column name="CONFIGURATION_ID" type="INTEGER" required="false" references="RHQ_CONFIG"/>
+ <column name="INSTALLED_PACKAGE_ID" type="INTEGER" required="false" references="RHQ_INSTALLED_PACKAGE"/>
+ </table>
+
+ <table name="RHQ_DELETE_RES_HIST">
+ <column name="ID" type="INTEGER" required="true" default="sequence-only" initial="10001" primarykey="true"/>
+ <column name="ERROR_MESSAGE" type="LONGVARCHAR" required="false"/>
+ <column name="SUBJECT_NAME" type="VARCHAR2" required="true" size="100"/>
+ <column name="CTIME" type="LONG" required="true"/>
+ <column name="MTIME" type="LONG" required="true"/>
+ <column name="STATUS" type="VARCHAR2" required="true" size="16"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ </table>
+
+<!-- END: resource-request-schema.xml -->
+<!-- BEGIN: jms-schema.xml -->
+
+<!-- the schema matches that which would be automatically created by the JMS subsystem -->
+<!-- see deploy/jms/rhq-jdbc-state-service.xml and rhq-jdbc2-service.xml -->
+
+
+ <table name="JMS_MESSAGES">
+ <column name="MESSAGEID" required="true" type="INTEGER" />
+ <column name="DESTINATION" required="true" type="VARCHAR2" size="255" />
+ <column name="TXID" required="false" type="INTEGER" />
+ <column name="TXOP" required="false" type="CHAR" size="1" />
+ <column name="MESSAGEBLOB" required="false" type="BLOB" />
+
+ <constraint name="JMS_MESSAGES_PKEY">
+ <primaryKey>
+ <field ref="MESSAGEID"/>
+ <field ref="DESTINATION"/>
+ </primaryKey>
+ </constraint>
+
+ <index name="JMS_MESSAGES_TXOP_TXID">
+ <field ref="TXOP"/>
+ <field ref="TXID"/>
+ </index>
+ <index name="JMS_MESSAGES_DESTINATION">
+ <field ref="DESTINATION"/>
+ </index>
+ </table>
+
+ <table name="JMS_TRANSACTIONS">
+ <column name="TXID" required="true" type="INTEGER" primarykey="true" />
+ </table>
+
+ <table name="JMS_USERS">
+ <column name="USERID" required="true" type="VARCHAR2" size="32" primarykey="true" />
+ <column name="PASSWD" required="true" type="VARCHAR2" size="32" />
+ <column name="CLIENTID" required="false" type="VARCHAR2" size="128" />
+ </table>
+
+ <table name="JMS_ROLES">
+ <column name="ROLEID" required="true" type="VARCHAR2" size="32" />
+ <column name="USERID" required="true" type="VARCHAR2" size="32" />
+
+ <constraint name="JMS_ROLES_PKEY">
+ <primaryKey>
+ <field ref="USERID"/>
+ <field ref="ROLEID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="JMS_SUBSCRIPTIONS">
+ <column name="CLIENTID" required="true" type="VARCHAR2" size="128" />
+ <column name="SUBNAME" required="true" type="VARCHAR2" size="128" />
+ <column name="TOPIC" required="true" type="VARCHAR2" size="255" />
+ <column name="SELECTOR" required="false" type="VARCHAR2" size="255" />
+
+ <constraint name="JMS_SUBSCRIPTIONS_PKEY">
+ <primaryKey>
+ <field ref="CLIENTID"/>
+ <field ref="SUBNAME"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+<!-- END: jms-schema.xml -->
+<!-- BEGIN: obsolete-schema.xml -->
+
+
+ <!-- NOTE: The tables will be dropped in the *** REVERSE ORDER *** as listed in this file! -->
+ <!-- NOTE: So, put the table you want dropped first at the bottom, and so on... -->
+
+
+ <!-- !!! REMOVED FROM CONTENT-SCHEMA !!!! -->
+
+ <table name="RHQ_BUNDLE_CONFIG" obsolete="true">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="CONFIG_ID" type="INTEGER" required="false" references="RHQ_CONFIG" />
+ <!-- this probably needs a DTYPE discriminator so we know if its a bundle or a specific bundle version -->
+ <column name="BUNDLE_VERSION_ID" type="INTEGER" required="false" references="RHQ_BUNDLE_VERSION"/>
+ <column name="BUNDLE_ID" type="INTEGER" required="false" references="RHQ_BUNDLE"/>
+ </table>
+
+ <table name="RHQ_CHANNEL" obsolete="true">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ <column name="CREATION_TIME" type="LONG" required="true"/>
+ <column name="LAST_MODIFIED_TIME" type="LONG" required="true"/>
+
+ <index name="RHQ_CHANNEL_IDX" unique="true">
+ <field ref="NAME"/>
+ </index>
+ </table>
+
+ <table name="RHQ_CHANNEL_RESOURCE_MAP" obsolete="true">
+ <column name="CHANNEL_ID" type="INTEGER" required="true" references="RHQ_CHANNEL"/>
+ <column name="RESOURCE_ID" type="INTEGER" required="true" references="RHQ_RESOURCE"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_CHANNEL_RESOURCE_MAP_KEY">
+ <primaryKey>
+ <field ref="CHANNEL_ID"/>
+ <field ref="RESOURCE_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_CHANNEL_CONTENT_SRC_MAP" obsolete="true">
+ <column name="CHANNEL_ID" type="INTEGER" required="true" references="RHQ_CHANNEL"/>
+ <column name="CONTENT_SRC_ID" type="INTEGER" required="true" references="RHQ_CONTENT_SOURCE"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_CHAN_CONTENT_SRC_MAP_KEY">
+ <primaryKey>
+ <field ref="CHANNEL_ID"/>
+ <field ref="CONTENT_SRC_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <table name="RHQ_CHANNEL_PKG_VERSION_MAP" obsolete="true">
+ <column name="CHANNEL_ID" type="INTEGER" required="true" references="RHQ_CHANNEL"/>
+ <column name="PACKAGE_VERSION_ID" type="INTEGER" required="true" references="RHQ_PACKAGE_VERSION"/>
+ <column name="CTIME" type="LONG" required="true"/>
+
+ <constraint name="RHQ_CHANNEL_PKG_VER_MAP_KEY">
+ <primaryKey>
+ <field ref="CHANNEL_ID"/>
+ <field ref="PACKAGE_VERSION_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+ <!-- !!! REMOVED FROM MEASUREMENT-SCHEMA !!!! -->
+
+ <table name="RHQ_MEASUREMENT_OOB" obsolete="true">
+ <column name="ID" type="INTEGER" default="sequence-only" initial="10001" primarykey="true" required="true"/>
+ <column name="SCHEDULE_ID" type="INTEGER" references="RHQ_MEASUREMENT_SCHED(ID)" required="true"/>
+ <column name="OCCURRED" type="LONG" required="true"/>
+ <column name="DIFF" type="DOUBLE" required="true"/>
+
+ <index name="RHQ_MEASUREMENT_OOB_IDX" unique="true">
+ <field ref="SCHEDULE_ID" />
+ <field ref="OCCURRED" />
+ </index>
+ </table>
+
+
+ <table name="RHQ_TAG" obsolete="true">
+ <column name="ID" default="sequence-only" initial="10001" primarykey="true" required="true" type="INTEGER"/>
+ <column name="NAME" size="200" type="VARCHAR2" required="true"/>
+ <column name="DESCRIPTION" size="500" type="VARCHAR2" required="false"/>
+ </table>
+
+ <table name="RHQ_REPO_TAG_MAP" obsolete="true">
+ <column name="REPO_ID" type="INTEGER" required="true" references="RHQ_REPO"/>
+ <column name="TAG_ID" type="INTEGER" required="true" references="RHQ_TAG"/>
+
+ <constraint name="RHQ_REPO_TAG_MAP_KEY">
+ <primaryKey>
+ <field ref="REPO_ID"/>
+ <field ref="TAG_ID"/>
+ </primaryKey>
+ </constraint>
+ </table>
+
+
+<!-- END: obsolete-schema.xml -->
+</dbsetup>
commit 15dc4c63cdbd12065a9c852d914f5dd90dea13e8
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Sep 16 12:38:30 2010 +0200
adding "exclude" attribute to relationship export configuration to enable "negative" configuration - "include all but these".
diff --git a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/config/Relationship.java b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/config/Relationship.java
index b9554c0..b5ad226 100644
--- a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/config/Relationship.java
+++ b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/config/Relationship.java
@@ -35,6 +35,9 @@ public class Relationship {
@XmlAttribute
private String field;
+ @XmlAttribute
+ private Boolean exclude;
+
/**
* @return the name of the field on the owning {@link Entity} that represents the relationship.
*/
@@ -49,6 +52,14 @@ public class Relationship {
this.field = fromField;
}
+ public boolean isExclude() {
+ return exclude != null && exclude.booleanValue();
+ }
+
+ public void setExclude(boolean exclude) {
+ this.exclude = exclude;
+ }
+
public int hashCode() {
int hash = field == null ? 1 : field.hashCode();
return hash;
diff --git a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/jpa/ConfigurableDependencyInclusionResolver.java b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/jpa/ConfigurableDependencyInclusionResolver.java
index 9d2341b..a7d8045 100644
--- a/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/jpa/ConfigurableDependencyInclusionResolver.java
+++ b/modules/helpers/perftest-support/src/main/java/org/rhq/helpers/perftest/support/jpa/ConfigurableDependencyInclusionResolver.java
@@ -97,10 +97,6 @@ public class ConfigurableDependencyInclusionResolver implements DependencyInclus
}
private boolean isValid(Entity entity, Field field) {
- if (entity.isIncludeAllFields()) {
- return true;
- }
-
if (field == null) {
return false;
}
@@ -108,10 +104,12 @@ public class ConfigurableDependencyInclusionResolver implements DependencyInclus
for (Relationship relationship : entity.getRelationships()) {
String fieldName = relationship.getField();
if (field.getName().equals(fieldName)) {
- return true;
+ return !relationship.isExclude();
}
}
- return false;
+ //check the includeAll flag as the last so that explicit exclusions can
+ //override it in the loop above.
+ return entity.isIncludeAllFields();
}
}
13 years, 9 months
[rhq] 3 commits - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java | 2 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java | 14 ++++++----
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java | 7 ++++-
3 files changed, 16 insertions(+), 7 deletions(-)
New commits:
commit cb14e77be0c963c7b63b153c2cb258667ec75f07
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 14:28:23 2010 -0400
don't show the trends up/down metrics when building the baseline condition since it doesn't make sense to choose trending metrics (then never get baselines)
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
index b17e25a..7e81a0e 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
@@ -46,6 +46,7 @@ import org.rhq.core.domain.event.EventSeverity;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.NumericType;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.resource.ResourceType;
@@ -294,7 +295,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
StaticTextItem helpItem = buildHelpTextItem("thresholdHelp", helpStr, ifFunc);
formItems.add(helpItem);
- formItems.add(buildMetricDropDownMenu(THRESHOLD_METRIC_ITEMNAME, ifFunc));
+ formItems.add(buildMetricDropDownMenu(THRESHOLD_METRIC_ITEMNAME, false, ifFunc));
formItems.add(buildComparatorDropDownMenu(THRESHOLD_COMPARATOR_ITEMNAME, ifFunc));
TextItem absoluteValue = new TextItem(THRESHOLD_ABSVALUE_ITEMNAME, "Metric Value");
absoluteValue.setWrapTitle(false);
@@ -317,7 +318,8 @@ public class NewConditionEditor extends LocatableDynamicForm {
StaticTextItem helpItem = buildHelpTextItem("baselineHelp", helpStr, ifFunc);
formItems.add(helpItem);
- formItems.add(buildMetricDropDownMenu(BASELINE_METRIC_ITEMNAME, ifFunc));
+ // if a metric is trending (up or down), it will never have baselines calculated for it so only show dynamic metrics
+ formItems.add(buildMetricDropDownMenu(BASELINE_METRIC_ITEMNAME, true, ifFunc));
formItems.add(buildComparatorDropDownMenu(BASELINE_COMPARATOR_ITEMNAME, ifFunc));
TextItem baselinePercentage = new TextItem(BASELINE_PERCENTAGE_ITEMNAME, "Baseline Percentage");
@@ -353,7 +355,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
StaticTextItem helpItem = buildHelpTextItem("changeMetricHelp", helpStr, ifFunc);
formItems.add(helpItem);
- formItems.add(buildMetricDropDownMenu(CHANGE_METRIC_ITEMNAME, ifFunc));
+ formItems.add(buildMetricDropDownMenu(CHANGE_METRIC_ITEMNAME, false, ifFunc));
return formItems;
}
@@ -488,12 +490,14 @@ public class NewConditionEditor extends LocatableDynamicForm {
return formItems;
}
- private SelectItem buildMetricDropDownMenu(String itemName, FormItemIfFunction ifFunc) {
+ private SelectItem buildMetricDropDownMenu(String itemName, boolean dynamicOnly, FormItemIfFunction ifFunc) {
LinkedHashMap<String, String> metricsMap = new LinkedHashMap<String, String>();
for (MeasurementDefinition def : this.resourceType.getMetricDefinitions()) {
if (def.getDataType() == DataType.MEASUREMENT) {
- metricsMap.put(def.getName(), def.getDisplayName());
+ if (!dynamicOnly || def.getNumericType() == NumericType.DYNAMIC) {
+ metricsMap.put(def.getName(), def.getDisplayName());
+ }
}
}
commit 0990342d29af546cacce185ac0a14b6f5972ad57
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 14:27:26 2010 -0400
make sure the caller gave us the numeric type - if not, we have to query it
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 0a2f201..3c41812 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -591,7 +591,12 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
if (alertConditionCategory == AlertConditionCategory.BASELINE) {
MeasurementDefinition def = alertCondition.getMeasurementDefinition();
- if (def.getNumericType() != NumericType.DYNAMIC) {
+ NumericType numType = def.getNumericType();
+ if (numType == null) {
+ def = entityManager.getReference(MeasurementDefinition.class, def.getId());
+ numType = def.getNumericType();
+ }
+ if (numType != NumericType.DYNAMIC) {
throw new InvalidAlertDefinitionException("Invalid Condition: '" + def.getDisplayName()
+ "' is a trending metric, and thus will never have baselines calculated for it.");
}
commit b21b0b9124584943641dfb0698c574da28fe5234
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 14:03:06 2010 -0400
set proper locator on the table
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
index 6a3c6f0..2d4e85a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
@@ -84,7 +84,7 @@ public class ConditionsEditor extends LocatableVLayout {
protected void onInit() {
super.onInit();
- table = new Table("conditionsTable");
+ table = new Table(extendLocatorId("conditionsTable"));
table.setShowHeader(false);
final ConditionDataSource dataSource = new ConditionDataSource();
13 years, 9 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml | 9 +++++++++
1 file changed, 9 insertions(+)
New commits:
commit ac55b68d928e6cb3be670cadd49fd447c1f73f9c
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 16 13:12:49 2010 -0400
add the new alert def gwt service to the servlet mappings
diff --git a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml
index 6e5d56b..377ae0d 100644
--- a/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml
+++ b/modules/enterprise/gui/coregui/src/main/webapp/WEB-INF/web.xml
@@ -46,6 +46,11 @@
</servlet-class>
</servlet>
<servlet>
+ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AlertDefinitionGWTService</servlet-name>
+ <servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.AlertDefinitionGWTServiceImpl
+ </servlet-class>
+ </servlet>
+ <servlet>
<servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI OperationGWTService</servlet-name>
<servlet-class>org.rhq.enterprise.gui.coregui.server.gwt.OperationGWTServiceImpl
</servlet-class>
@@ -149,6 +154,10 @@
<url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/AlertGWTService</url-pattern>
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI AlertDefinitionGWTService</servlet-name>
+ <url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/AlertDefinitionGWTService</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
<servlet-name>org.rhq.enterprise.gui.coregui.CoreGUI OperationGWTService</servlet-name>
<url-pattern>/org.rhq.enterprise.gui.coregui.CoreGUI/OperationGWTService</url-pattern>
</servlet-mapping>
13 years, 9 months