java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java | 90 ++++++++--
java/code/src/com/redhat/rhn/manager/action/ActionManager.java | 5
2 files changed, 81 insertions(+), 14 deletions(-)
New commits:
commit a8c6cdf1ca87ba023acf1d14fc25855803ba73a5
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Apr 25 16:38:01 2012 +0200
Ensure that given system has OpenSCAP capability.
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
index 9b96e18..e76c120 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
@@ -24,6 +24,7 @@ import com.redhat.rhn.domain.action.scap.ScapAction;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
import com.redhat.rhn.manager.action.ActionManager;
+import com.redhat.rhn.manager.MissingCapabilityException;
import com.redhat.rhn.manager.MissingEntitlementException;
/**
@@ -91,6 +92,10 @@ public class SystemScapHandler extends BaseHandler {
throw new com.redhat.rhn.frontend.xmlrpc.MissingEntitlementException(
e.getMessage());
}
+ catch (MissingCapabilityException e) {
+ throw new com.redhat.rhn.frontend.xmlrpc.MissingCapabilityException(
+ e.getCapability(), e.getServer());
+ }
}
/**
@@ -131,7 +136,6 @@ public class SystemScapHandler extends BaseHandler {
* "The date to schedule the action")
* @xmlrpc.returntype int - ID of the scap action created.
*/
- // TODO: install all the needed stuff
public int scheduleXccdfScan(String sessionKey, Integer sid,
String xccdfPath, String oscapParams, Date date) {
List serverIds = new ArrayList();
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index 7af9ab7..f13cf3a 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -1817,6 +1817,9 @@ public class ActionManager extends BaseManager {
for (Long serverId : serverIds) {
Server server = SystemManager.lookupByIdAndUser(serverId, scheduler);
+ if (!SystemManager.clientCapable(serverId, "scap.xccdf_eval")) {
+ throw new MissingCapabilityException("OpenSCAP", server);
+ }
if (!SystemManager.hasEntitlement(serverId,
EntitlementManager.MANAGEMENT)) {
throw new MissingEntitlementException(
commit 0860206d1ae3e2d03745cfbcd5706a71bbeb51e0
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Apr 25 16:36:57 2012 +0200
Ensure that given systems is available to user.
diff --git a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
index d0d1781..7af9ab7 100644
--- a/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
+++ b/java/code/src/com/redhat/rhn/manager/action/ActionManager.java
@@ -1815,6 +1815,8 @@ public class ActionManager extends BaseManager {
return null;
}
for (Long serverId : serverIds) {
+ Server server = SystemManager.lookupByIdAndUser(serverId, scheduler);
+
if (!SystemManager.hasEntitlement(serverId,
EntitlementManager.MANAGEMENT)) {
throw new MissingEntitlementException(
commit 118006f7927b52aae370059b9ea8fff4af81a3cf
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Apr 25 15:37:10 2012 +0200
Repack and throw MissingEntitlementException when occurs.
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
index 9819c15..9b96e18 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
@@ -14,17 +14,17 @@
*/
package com.redhat.rhn.frontend.xmlrpc.system.scap;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import com.redhat.rhn.domain.action.scap.ScapAction;
-import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
import com.redhat.rhn.manager.action.ActionManager;
-import com.redhat.rhn.manager.system.SystemManager;
+import com.redhat.rhn.manager.MissingEntitlementException;
/**
* SystemScapHandler
@@ -82,9 +82,15 @@ public class SystemScapHandler extends BaseHandler {
longServerIds.add(new Long((Integer) it.next()));
}
- ScapAction action = ActionManager.scheduleXccdfEval(loggedInUser,
- longServerIds, xccdfPath, oscapParams, date);
- return action.getId().intValue();
+ try {
+ ScapAction action = ActionManager.scheduleXccdfEval(loggedInUser,
+ longServerIds, xccdfPath, oscapParams, date);
+ return action.getId().intValue();
+ }
+ catch (MissingEntitlementException e) {
+ throw new com.redhat.rhn.frontend.xmlrpc.MissingEntitlementException(
+ e.getMessage());
+ }
}
/**
@@ -128,11 +134,8 @@ public class SystemScapHandler extends BaseHandler {
// TODO: install all the needed stuff
public int scheduleXccdfScan(String sessionKey, Integer sid,
String xccdfPath, String oscapParams, Date date) {
- User loggedInUser = getLoggedInUser(sessionKey);
- Server server = SystemManager.lookupByIdAndUser(new Long(sid.longValue()),
- loggedInUser);
- ScapAction action = ActionManager.scheduleXccdfEval(loggedInUser, server,
- xccdfPath, oscapParams, date);
- return action.getId().intValue();
+ List serverIds = new ArrayList();
+ serverIds.add(sid);
+ return scheduleXccdfScan(sessionKey, serverIds, xccdfPath, oscapParams, date);
}
}
commit 44949f70fef5b2a47f48df0e09b4b548e840773a
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Apr 25 14:51:26 2012 +0200
Sort imports alphabetically.
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
index 707d694..9819c15 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
@@ -14,18 +14,17 @@
*/
package com.redhat.rhn.frontend.xmlrpc.system.scap;
+import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
-import com.redhat.rhn.domain.user.User;
-import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.action.scap.ScapAction;
-import com.redhat.rhn.manager.system.SystemManager;
+import com.redhat.rhn.domain.server.Server;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
import com.redhat.rhn.manager.action.ActionManager;
-
-import java.util.Date;
+import com.redhat.rhn.manager.system.SystemManager;
/**
* SystemScapHandler
commit ab77fae73d6dfc2558e81035727fbfeb366a70fa
Author: Simon Lukasik <slukasik(a)redhat.com>
Date: Wed Apr 25 14:03:47 2012 +0200
API: SCAP scan schedule for multiple systems
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
index af1696e..707d694 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/scap/SystemScapHandler.java
@@ -14,6 +14,10 @@
*/
package com.redhat.rhn.frontend.xmlrpc.system.scap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+
import com.redhat.rhn.frontend.xmlrpc.BaseHandler;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.server.Server;
@@ -32,6 +36,59 @@ import java.util.Date;
public class SystemScapHandler extends BaseHandler {
/**
+ * Run OpenSCAP XCCDF Evaluation on a given list of servers
+ * @param sessionKey The session key.
+ * @param serverIds The list of server ids,
+ * @param xccdfPath The path to xccdf document.
+ * @param oscapParams The additional params for oscap tool.
+ * @return ID of new SCAP action.
+ *
+ * @xmlrpc.doc Schedule OpenSCAP scan.
+ * @xmlrpc.param #session_key()
+ * @xmlrpc.param #array_single("int", "serverId")
+ * @xmlrpc.param #param("string", "Path to xccdf content on targeted systems.")
+ * @xmlrpc.param #param("string", "Additional parameters for oscap tool.")
+ * @xmlrpc.returntype int - ID if SCAP action created.
+ */
+ public int scheduleXccdfScan(String sessionKey, List serverIds,
+ String xccdfPath, String oscapParams) {
+ return scheduleXccdfScan(sessionKey, serverIds, xccdfPath,
+ oscapParams, new Date());
+ }
+
+ /**
+ * Run OpenSCAP XCCDF Evaluation on a given list of servers
+ * @param sessionKey The session key.
+ * @param serverIds The list of server ids,
+ * @param xccdfPath The path to xccdf document.
+ * @param oscapParams The additional params for oscap tool.
+ * @param date The date of earliest occurence.
+ * @return ID of new SCAP action.
+ *
+ * @xmlrpc.doc Schedule OpenSCAP scan.
+ * @xmlrpc.param #session_key()
+ * @xmlrpc.param #array_single("int", "serverId")
+ * @xmlrpc.param #param("string", "Path to xccdf content on targeted systems.")
+ * @xmlrpc.param #param("string", "Additional parameters for oscap tool.")
+ * @xmlrpc.param #param_desc("dateTime.iso8601","date",
+ * "The date to schedule the action")
+ * @xmlrpc.returntype int - ID if SCAP action created.
+ */
+ public int scheduleXccdfScan(String sessionKey, List serverIds,
+ String xccdfPath, String oscapParams, Date date) {
+ User loggedInUser = getLoggedInUser(sessionKey);
+
+ HashSet<Long> longServerIds = new HashSet<Long>();
+ for (Iterator it = serverIds.iterator(); it.hasNext();) {
+ longServerIds.add(new Long((Integer) it.next()));
+ }
+
+ ScapAction action = ActionManager.scheduleXccdfEval(loggedInUser,
+ longServerIds, xccdfPath, oscapParams, date);
+ return action.getId().intValue();
+ }
+
+ /**
* Run Open Scap XCCDF Evaluation on a given server
* @param sessionKey The session key.
* @param sid The server id.
@@ -69,7 +126,6 @@ public class SystemScapHandler extends BaseHandler {
* "The date to schedule the action")
* @xmlrpc.returntype int - ID of the scap action created.
*/
- // TODO: multiple server instances at once
// TODO: install all the needed stuff
public int scheduleXccdfScan(String sessionKey, Integer sid,
String xccdfPath, String oscapParams, Date date) {