modules/enterprise/server/jar/intentional-api-changes-since-4.8.0.xml
| 14 ++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
| 52 ++++++----
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
| 42 ++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerRemote.java
| 17 +++
4 files changed, 106 insertions(+), 19 deletions(-)
New commits:
commit c91c8f23416db836308b2bf3871fdda87559297e
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jul 22 14:12:08 2013 -0500
Update the storage node manager API for alerts to support UI functionality.
diff --git a/modules/enterprise/server/jar/intentional-api-changes-since-4.8.0.xml
b/modules/enterprise/server/jar/intentional-api-changes-since-4.8.0.xml
index a9ce322..58c4eda 100644
--- a/modules/enterprise/server/jar/intentional-api-changes-since-4.8.0.xml
+++ b/modules/enterprise/server/jar/intentional-api-changes-since-4.8.0.xml
@@ -11,8 +11,22 @@
<difference>
<className>org/rhq/enterprise/server/cloud/StorageNodeManagerRemote</className>
<differenceType>7012</differenceType> <!-- method added to an
interface -->
+ <method>org.rhq.core.domain.util.PageList
findNotAcknowledgedStorageNodeAlerts(org.rhq.core.domain.auth.Subject,
org.rhq.core.domain.cloud.StorageNode)</method>
+ <justification>Adding a method to a remote API interface is safe. This is newly
implemented functionality.</justification>
+ </difference>
+
+ <difference>
+
<className>org/rhq/enterprise/server/cloud/StorageNodeManagerRemote</className>
+ <differenceType>7012</differenceType> <!-- method added to an
interface -->
<method>org.rhq.core.domain.util.PageList
findAllStorageNodeAlerts(org.rhq.core.domain.auth.Subject)</method>
<justification>Adding a method to a remote API interface is safe. This is newly
implemented functionality.</justification>
</difference>
+ <difference>
+
<className>org/rhq/enterprise/server/cloud/StorageNodeManagerRemote</className>
+ <differenceType>7012</differenceType> <!-- method added to an
interface -->
+ <method>org.rhq.core.domain.util.PageList
findAllStorageNodeAlerts(org.rhq.core.domain.auth.Subject,
org.rhq.core.domain.cloud.StorageNode)</method>
+ <justification>Adding a method to a remote API interface is safe. This is newly
implemented functionality.</justification>
+ </difference>
+
</differences>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
index c2a7b46..b32ab5b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerBean.java
@@ -512,12 +512,22 @@ public class StorageNodeManagerBean implements
StorageNodeManagerLocal, StorageN
@Override
public PageList<Alert> findNotAcknowledgedStorageNodeAlerts(Subject subject) {
- return findStorageNodeAlerts(subject, false);
+ return findStorageNodeAlerts(subject, false, null);
+ }
+
+ @Override
+ public PageList<Alert> findNotAcknowledgedStorageNodeAlerts(Subject subject,
StorageNode storageNode) {
+ return findStorageNodeAlerts(subject, false, storageNode);
}
@Override
public PageList<Alert> findAllStorageNodeAlerts(Subject subject) {
- return findStorageNodeAlerts(subject, true);
+ return findStorageNodeAlerts(subject, true, null);
+ }
+
+ @Override
+ public PageList<Alert> findAllStorageNodeAlerts(Subject subject, StorageNode
storageNode) {
+ return findStorageNodeAlerts(subject, true, storageNode);
}
/**
@@ -527,8 +537,8 @@ public class StorageNodeManagerBean implements
StorageNodeManagerLocal, StorageN
* @param allAlerts if [true] then return all alerts; if [false] then return only
alerts that are not acknowledged
* @return alerts
*/
- private PageList<Alert> findStorageNodeAlerts(Subject subject, boolean
allAlerts) {
- Integer[] resouceIdsWithAlertDefinitions = findResourcesWithAlertDefinitions();
+ private PageList<Alert> findStorageNodeAlerts(Subject subject, boolean
allAlerts, StorageNode storageNode) {
+ Integer[] resouceIdsWithAlertDefinitions =
findResourcesWithAlertDefinitions(storageNode);
PageList<Alert> alerts = new PageList<Alert>();
if( resouceIdsWithAlertDefinitions != null &&
resouceIdsWithAlertDefinitions.length != 0 ){
@@ -555,31 +565,35 @@ public class StorageNodeManagerBean implements
StorageNodeManagerLocal, StorageN
return alerts;
}
- /**
- * Return resource Ids for all resources and sub-resources of Storage Nodes that
- * have alert definitions. This will be used by the resource criteria to find
- * all alerts triggered for storage nodes.
- *
- * @return
- */
- private Integer[] findResourcesWithAlertDefinitions() {
- List<Integer> resourceIdsWithAlertDefinitions = new
ArrayList<Integer>();
- List<StorageNode> test2 = getStorageNodes();
+ @Override
+ public Integer[] findResourcesWithAlertDefinitions() {
+ return this.findResourcesWithAlertDefinitions(null);
+ }
+
+ @Override
+ public Integer[] findResourcesWithAlertDefinitions(StorageNode storageNode) {
+ List<StorageNode> initialStorageNodes;
+ if (storageNode == null) {
+ initialStorageNodes = getStorageNodes();
+ } else {
+ initialStorageNodes = Arrays.asList(storageNode);
+ }
Queue<Resource> unvisitedResources = new LinkedList<Resource>();
- for (StorageNode node : test2) {
- if (node.getResource() != null) {
- unvisitedResources.add(node.getResource());
+ for (StorageNode initialStorageNode : initialStorageNodes) {
+ if (initialStorageNode.getResource() != null) {
+ unvisitedResources.add(initialStorageNode.getResource());
}
}
- while(!unvisitedResources.isEmpty()){
+ List<Integer> resourceIdsWithAlertDefinitions = new
ArrayList<Integer>();
+ while (!unvisitedResources.isEmpty()) {
Resource resource = unvisitedResources.poll();
if (resource.getAlertDefinitions() != null) {
resourceIdsWithAlertDefinitions.add(resource.getId());
}
- for(Resource child: resource.getChildResources()){
+ for (Resource child : resource.getChildResources()) {
unvisitedResources.add(child);
}
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
index 6fca820..69b16c4 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerLocal.java
@@ -81,6 +81,15 @@ public interface StorageNodeManagerLocal {
PageList<Alert> findNotAcknowledgedStorageNodeAlerts(Subject subject);
/**
+ * Fetches the list of Storage Node related alerts that have not yet been
acknowledged for the
+ * specified storage node.
+ *
+ * @param subject subject
+ * @return storage nodes alerts not acknowledged
+ */
+ PageList<Alert> findNotAcknowledgedStorageNodeAlerts(Subject subject,
StorageNode storageNode);
+
+ /**
* Fetches all the Storage Node related alerts.
*
* @param subject subject
@@ -89,6 +98,39 @@ public interface StorageNodeManagerLocal {
PageList<Alert> findAllStorageNodeAlerts(Subject subject);
/**
+ * Fetches all the Storage Node related alerts for the specified storage node.
+ *
+ * @param subject subject
+ * @return all storage nodes alerts
+ */
+ PageList<Alert> findAllStorageNodeAlerts(Subject subject, StorageNode
storageNode);
+
+
+ /**
+ * Find ids for all resources and sub-resources of Storage Nodes that
+ * have alert definitions. This can be used by the resource criteria queries to find
+ * all alerts triggered for storage nodes resources.
+ *
+ * @return resource ids
+ */
+ Integer[] findResourcesWithAlertDefinitions();
+
+ /**
+ * Find ids for all resources and sub-resources, of the specified storage node, that
+ * have alert definitions. This can be used by the resource criteria queries to find
+ * all alerts triggered for storage nodes resources.
+ *
+ * If storage node is null it find ids for all resources and sub-resources of Storage
Nodes that
+ * have alert definitions. Please see {@link #findResourcesWithAlertDefinitions()}
for more details.
+ *
+ * @param storageNode storage node
+ *
+ * @return resource ids
+ */
+ Integer[] findResourcesWithAlertDefinitions(StorageNode storageNode);
+
+
+ /**
* <p>Prepares the node for subsequent upgrade.</p>
* <p> CAUTION: this method will set the RHQ server to maintenance mode, RHQ
storage flushes all the data to disk
* and backup of all the keyspaces is created</p>
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerRemote.java
index 7be1b07..75ac02b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerRemote.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/cloud/StorageNodeManagerRemote.java
@@ -73,10 +73,27 @@ public interface StorageNodeManagerRemote {
PageList<Alert> findNotAcknowledgedStorageNodeAlerts(Subject subject);
/**
+ * Fetches the list of Storage Node related alerts that have not yet been
acknowledged for the
+ * specified storage node.
+ *
+ * @param subject subject
+ * @return storage nodes alerts not acknowledged
+ */
+ PageList<Alert> findNotAcknowledgedStorageNodeAlerts(Subject subject,
StorageNode storageNode);
+
+ /**
* Fetches all the Storage Node related alerts.
*
* @param subject subject
* @return all storage nodes alerts
*/
PageList<Alert> findAllStorageNodeAlerts(Subject subject);
+
+ /**
+ * Fetches all the Storage Node related alerts for the specified storage node.
+ *
+ * @param subject subject
+ * @return all storage nodes alerts
+ */
+ PageList<Alert> findAllStorageNodeAlerts(Subject subject, StorageNode
storageNode);
}
Show replies by date