Index: /tags/ipp-pv3-20140717/ippTools/share/remotetool_definebyquery_stack.sql
===================================================================
--- /tags/ipp-pv3-20140717/ippTools/share/remotetool_definebyquery_stack.sql	(revision 37345)
+++ /tags/ipp-pv3-20140717/ippTools/share/remotetool_definebyquery_stack.sql	(revision 37346)
@@ -15,5 +15,5 @@
    JOIN remoteComponent USING (remote_id)
 WHERE
-remoteRun.stage = 'stack'
+remoteRun.stage = 'stack' and remoteComponent.state != 'retry'
 -- where hook %s
 ) AS R
Index: /tags/ipp-pv3-20140717/ippTools/share/remotetool_definebyquery_warp.sql
===================================================================
--- /tags/ipp-pv3-20140717/ippTools/share/remotetool_definebyquery_warp.sql	(revision 37345)
+++ /tags/ipp-pv3-20140717/ippTools/share/remotetool_definebyquery_warp.sql	(revision 37346)
@@ -17,5 +17,5 @@
    JOIN remoteComponent USING (remote_id)
 WHERE
-remoteRun.stage = 'warp'
+remoteRun.stage = 'warp' and remoteComponent.state != 'retry'
 -- where hook %s
 ) AS R
Index: /tags/ipp-pv3-20140717/ippTools/src/remotetool.c
===================================================================
--- /tags/ipp-pv3-20140717/ippTools/src/remotetool.c	(revision 37345)
+++ /tags/ipp-pv3-20140717/ippTools/src/remotetool.c	(revision 37346)
@@ -32,4 +32,5 @@
 static bool revertrunMode(pxConfig *config);
 static bool revertauthMode(pxConfig *config);
+static bool revertcomponentMode(pxConfig *config);
 
 # define MODECASE(caseName, func) \
@@ -61,4 +62,5 @@
     MODECASE(REMOTETOOL_MODE_REVERTRUN,       revertrunMode);
     MODECASE(REMOTETOOL_MODE_REVERTAUTH,      revertauthMode);
+    MODECASE(REMOTETOOL_MODE_REVERTCOMPONENT, revertcomponentMode);
 
   default:
@@ -577,4 +579,32 @@
 }
 
+static bool revertcomponentMode(pxConfig *config)
+{
+  PS_ASSERT_PTR_NON_NULL(config,false);
+  psMetadata *where = psMetadataAlloc();
+  psMetadata *values = psMetadataAlloc();
+
+  // required
+  PXOPT_COPY_S64(config->args, where, "-remote_id", "remote_id", "==");
+  PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "==");
+  psMetadataAddStr(where,PS_LIST_TAIL,"state",0, "==", "fail");
+  
+  // value to set
+  psMetadataAddStr(values, PS_LIST_TAIL, "state",0, "==", "retry");
+  
+
+  long rows = psDBUpdateRows(config->dbh, "remoteComponent", where, values);
+  psFree(values);
+  psFree(where);
+  if (rows < 1) {
+    psError(PS_ERR_UNKNOWN,false, "no rows affected");
+    return(false);
+  }
+
+  return(true);
+
+  
+  
+
 static bool revertauthMode(pxConfig *config)
 {
Index: /tags/ipp-pv3-20140717/ippTools/src/remotetool.h
===================================================================
--- /tags/ipp-pv3-20140717/ippTools/src/remotetool.h	(revision 37345)
+++ /tags/ipp-pv3-20140717/ippTools/src/remotetool.h	(revision 37346)
@@ -20,4 +20,5 @@
   REMOTETOOL_MODE_REVERTRUN,
   REMOTETOOL_MODE_REVERTAUTH,
+  REMOTETOOL_MODE_REVERTCOMPONENT,
 } remotetoolMode;
 
Index: /tags/ipp-pv3-20140717/ippTools/src/remotetoolConfig.c
===================================================================
--- /tags/ipp-pv3-20140717/ippTools/src/remotetoolConfig.c	(revision 37345)
+++ /tags/ipp-pv3-20140717/ippTools/src/remotetoolConfig.c	(revision 37346)
@@ -70,4 +70,10 @@
   ADD_OPT(S16, doneprepArgs,  "-limit",             "limit to number of runs to display", 0);
 
+  // -revertcomponent
+  psMetadata   *revertcomponentArgs = psMetadataAlloc();
+  ADD_OPT(S64,  revertcomponentArgs, "-remote_id",       "run to revert components from", 0);
+  ADD_OPT(S64,  revertcomponentArgs, "-stage_id",        "component stage_id to revert", 0);
+  
+  
   // -listcomponents
   psMetadata   *listcomponentArgs = psMetadataAlloc();
@@ -126,4 +132,5 @@
   PXOPT_ADD_MODE("-doneprep",          "", REMOTETOOL_MODE_DONEPREP,        doneprepArgs);
   PXOPT_ADD_MODE("-listcomponent",     "", REMOTETOOL_MODE_LISTCOMPONENT,   listcomponentArgs);
+  PXOPT_ADD_MODE("-revertcomponent",   "", REMOTETOOL_MODE_REVERTCOMPONENT, revertcomponentArgs);
   PXOPT_ADD_MODE("-dropcomponent",     "", REMOTETOOL_MODE_DROPCOMPONENT,   dropcomponentArgs);
   PXOPT_ADD_MODE("-updaterun",         "", REMOTETOOL_MODE_UPDATERUN,       updaterunArgs);
