Преглед на файлове

HPCC-9898 ConfigMgr - delete multiple roxie servers

Signed-off-by: Gleb Aronsky <gleb.aronsky@lexisnexis.com>
Gleb Aronsky преди 11 години
родител
ревизия
6bccf6b1cc

+ 1 - 0
deployment/deploy/XMLTags.h

@@ -69,6 +69,7 @@
 #define XML_TAG_PLUGINREF              "PluginRef"
 #define XML_TAG_ROXIE_FARM             "RoxieFarmProcess"
 #define XML_TAG_ROXIE_SERVER           "RoxieServerProcess"
+#define XML_TAG_ROXIE_SERVER_PROCESSS  XML_TAG_ROXIE_SERVER
 #define XML_TAG_ROXIE_SLAVE            "RoxieSlaveProcess"
 #define XML_TAG_ROXIE_ONLY_SLAVE       "RoxieSlave"
 #define XML_TAG_ROXIE_CHANNEL          "RoxieChannel"

+ 23 - 0
deployment/deployutils/configenvhelper.cpp

@@ -27,6 +27,8 @@ bool CConfigEnvHelper::handleRoxieOperation(const char* cmd, const char* xmlStr)
   if (!strcmp(cmd, "AddRoxieFarm"))
     retVal = this->addRoxieServers(xmlStr);
   else if (!strcmp(cmd, "DeleteRoxieFarm"))
+    retVal = this->deleteRoxiePorts(xmlStr);
+  else if (!strcmp(cmd, "DeleteRoxieServers"))
     retVal = this->deleteRoxieServers(xmlStr);
   else if (!strcmp(cmd, "RoxieSlaveConfig"))
     retVal = this->handleRoxieSlaveConfig(xmlStr);
@@ -564,6 +566,27 @@ IPropertyTree* CConfigEnvHelper::findLegacyServer(IPropertyTree* pRoxieCluster,
 
 bool CConfigEnvHelper::deleteRoxieServers(const char* xmlArg)
 {
+    Owned<IPropertyTree> pSrcTree = createPTreeFromXMLString(xmlArg && *xmlArg ? xmlArg : "<RoxieData/>");
+    const char* pszRoxieCluster = pSrcTree->queryProp("@roxieName");
+
+    StringBuffer xpath;
+    xpath.clear().appendf("Software/RoxieCluster[@name='%s']", pszRoxieCluster);
+
+    IPropertyTree* pRoxieCluster = m_pRoot->queryPropTree(xpath.str());
+
+    if (pRoxieCluster == NULL)
+        return false;
+
+    IPropertyTree* pChild = NULL;
+
+    while ((pChild = pRoxieCluster->queryPropTree( XML_TAG_ROXIE_SERVER_PROCESSS"[1]")) != NULL)
+        pRoxieCluster->removeTree( pChild );
+
+    return true;
+}
+
+bool CConfigEnvHelper::deleteRoxiePorts(const char* xmlArg)
+{
   Owned<IPropertyTree> pSrcTree = createPTreeFromXMLString(xmlArg && *xmlArg ? xmlArg : "<RoxieData/>");
   const char* pszRoxieCluster = pSrcTree->queryProp("@roxieName");
   const char* pParentName = pSrcTree->queryPropTree(XML_TAG_ROXIE_FARM) != NULL ? pSrcTree->queryPropTree(XML_TAG_ROXIE_FARM)->queryProp("@parent"): "";

+ 1 - 0
deployment/deployutils/configenvhelper.hpp

@@ -60,6 +60,7 @@ private:
     void deleteFarm(IPropertyTree* pRoxieCluster, const char* pszFarm);
     void deleteServer(IPropertyTree* pRoxieCluster, const char* pszFarm, const char* pszServer);
     bool deleteRoxieServers(const char* xmlArg);
+    bool deleteRoxiePorts(const char* xmlArg);
     bool EnsureInRange(const char* psz, UINT low, UINT high, const char* caption);
     bool handleRoxieSlaveConfig(const char* params);
     bool handleReplaceRoxieServer(const char* xmlArg);

+ 11 - 1
esp/files/scripts/configmgr/configmgr.js

@@ -2428,6 +2428,16 @@ function onMenuItemClickDelete(p_sType, p_aArgs, p_oValue) {
     top.document.startWait(document);
     var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name');
     var xmlStr = roxieSelectionToXML(this.parent.dt, "RoxieFarm", selRows, compName);
+    var cmd = "";
+
+    if (top.document.RightTabView.get("activeTab")._configs.label.value == "Servers" && selRows[0] == top.document.RightTabView.get("activeTab").dt._sFirstTrId)
+    {
+        cmd = 'Cmd=DeleteRoxieServers&XmlArgs='
+    }
+    else
+    {
+        cmd = 'Cmd=DeleteRoxieFarm&XmlArgs=';
+    }
 
     YAHOO.util.Connect.asyncRequest('POST', '/WsDeploy/HandleRoxieOperation', {
       success: function(o) {
@@ -2442,7 +2452,7 @@ function onMenuItemClickDelete(p_sType, p_aArgs, p_oValue) {
       },
       scope: this
     },
-      top.document.navDT.getFileName(true) + 'Cmd=DeleteRoxieFarm&XmlArgs=' + xmlStr);
+    top.document.navDT.getFileName(true) + cmd + xmlStr);
   }
 }