Browse Source

HPCC-20299 Add thorChannelsPerSlave and roxieChannelsPerSlave options

This will allow user to set "channelsPerSlave" for Thor and Roxie clusters using envgen
xwang2713 6 years ago
parent
commit
57a8b17511

+ 9 - 0
deployment/deployutils/configenvhelper.cpp

@@ -50,6 +50,7 @@ bool CConfigEnvHelper::handleThorTopologyOp(const char* cmd, const char* xmlArg,
     const char* validate = pParams->queryProp("@validateComputers");
     const char* skip = pParams->queryProp("@skipExisting");
     const char* slavesPerNode = pParams->queryProp("@slavesPerNode");
+    const char* channelsPerSlave = pParams->queryProp("@channelsPerSlave");
     bool checkComps = validate && !strcmp(validate, "true");
     bool skipExisting = skip && !strcmp(skip, "true");
 
@@ -83,6 +84,14 @@ bool CConfigEnvHelper::handleThorTopologyOp(const char* cmd, const char* xmlArg,
             numNodes = 1;
         pThor->setPropInt("@slavesPerNode", numNodes);
 
+        int numChannels = 1;
+        if (channelsPerSlave && *channelsPerSlave)
+          numChannels = atoi(channelsPerSlave);
+
+        if (numChannels < 1)
+          numChannels = 1;
+        pThor->setPropInt("@channelsPerSlave", numChannels);
+
         if (!strcmp(newType, "Master"))
             retVal = this->AddNewNodes(pThor, XML_TAG_THORMASTERPROCESS, 0, computers, checkComps, skipExisting, usageList);
         else if (!strcmp(newType, "Slave"))

+ 22 - 1
deployment/deployutils/wizardInputs.cpp

@@ -128,6 +128,20 @@ void CWizardInputs::setEnvironment()
   if (m_thorSlavesPerNode < 1)
     m_thorSlavesPerNode = 1;
 
+  m_thorChannelsPerSlave = 1;
+  if(m_pXml->hasProp("@thorChannelsPerSlave"))
+    m_thorChannelsPerSlave = atoi( m_pXml->queryProp("@thorChannelsPerSlave"));
+
+  if (m_thorChannelsPerSlave < 1)
+    m_thorChannelsPerSlave = 1;
+
+  m_roxieChannelsPerSlave = 1;
+  if(m_pXml->hasProp("@roxieChannelsPerSlave"))
+    m_roxieChannelsPerSlave = atoi( m_pXml->queryProp("@roxieChannelsPerSlave"));
+
+  if (m_roxieChannelsPerSlave < 1)
+    m_roxieChannelsPerSlave = 1;
+
   m_roxieOnDemand = m_pXml->getPropBool("@roxieOnDemand", true);
 
   xpath.clear().appendf("Software/EspProcess/EspService[@name='%s']/LocalConfFile", m_service.str());
@@ -896,6 +910,13 @@ void CWizardInputs::addRoxieThorClusterToEnv(IPropertyTree* pNewEnvTree, CInstDe
     }
     xpath.clear().appendf("./%s/%s[%s=\"%s\"]/%s[%s=\"\"]", XML_TAG_SOFTWARE, XML_TAG_ROXIECLUSTER, XML_ATTR_NAME, compName.str(), XML_TAG_ROXIE_SERVER, XML_ATTR_NETADDRESS);
     pNewEnvTree->removeProp(xpath.str());
+
+    xpath.clear().appendf("./%s/%s[%s=\"%s\"]", XML_TAG_SOFTWARE, XML_TAG_ROXIECLUSTER, XML_ATTR_NAME, compName.str());
+    IPropertyTree* pRoxieCluster = pNewEnvTree->queryPropTree(xpath.str());
+    if (pRoxieCluster) {
+      pRoxieCluster->setPropInt("@channelsPerSlave", m_roxieChannelsPerSlave);
+    }
+
   }
   else if(!strcmp(buildSetName, "thor"))
   {
@@ -918,7 +939,7 @@ void CWizardInputs::addRoxieThorClusterToEnv(IPropertyTree* pNewEnvTree, CInstDe
       handleThorTopologyOp(pNewEnvTree, "Add", xml.str(), msg);
 
       //Now add Slave 
-      xml.clear().appendf("<ThorData type=\"Slave\" name=\"%s\" validateComputers=\"false\" slavesPerNode=\"%d\" skipExisting=\"false\" >", compName.str(), m_thorSlavesPerNode);
+      xml.clear().appendf("<ThorData type=\"Slave\" name=\"%s\" validateComputers=\"false\" slavesPerNode=\"%d\" channelsPerSlave=\"%d\" skipExisting=\"false\" >", compName.str(), m_thorSlavesPerNode, m_thorChannelsPerSlave);
       unsigned numOfNodes = ipAssignedToComp.ordinality() == 1 ? 0 : 1;
 
       for( ; numOfNodes < ipAssignedToComp.ordinality() ; numOfNodes++)

+ 2 - 0
deployment/deployutils/wizardInputs.hpp

@@ -134,6 +134,8 @@ private:
    unsigned m_thorNodes;
    unsigned m_espNodes;
    unsigned m_thorSlavesPerNode;
+   unsigned m_thorChannelsPerSlave;
+   unsigned m_roxieChannelsPerSlave;
    unsigned m_roxieAgentRedChannels;
    unsigned m_roxieAgentRedOffset;
    bool m_roxieOnDemand;

+ 27 - 3
deployment/envgen/main.cpp

@@ -90,6 +90,10 @@ void usage()
   puts("          If greater than 1 instance is specified, -assign_ips for esp is required to be set.");
   puts("   -slavesPerNode <number of thor slaves per node>: Number of thor nodes ");
   puts("          per slave.");
+  puts("   -thorChannelsPerSlave <number of channels per thor slave>: Number of thor channels per slave.");
+  puts("          The default is 1.");
+  puts("   -roxieChannelsPerSlave <number of channels per roxie slave>: Number of roxie channels per slave.");
+  puts("          The default is 1.");
   puts("   -roxieondemand <enable roxie on demand(1) or disable roxie on demand(any ");
   puts("          other value)>: Enable roxie on demand by specifying 1 for flag. ");
   puts("          Any other value will disable roxie on demand");
@@ -121,7 +125,7 @@ int main(int argc, char** argv)
   const char* out_envname = NULL;
   const char* in_ipfilename;
   StringBuffer ipAddrs;
-  int roxieNodes=1, thorNodes=1, slavesPerNode=1, supportNodes=1, espNodes=1;
+  int roxieNodes=1, thorNodes=1, slavesPerNode=1, supportNodes=1, espNodes=1, thorChannelsPerSlave=1, roxieChannelsPerSlave=1;
   bool roxieOnDemand = true;
   MapStringTo<StringBuffer> dirMap;
   StringArray overrides;
@@ -205,6 +209,26 @@ int main(int argc, char** argv)
         return 1;
       }
     }
+    else if (stricmp(argv[i], "-thorchannelsperslave") == 0)
+    {
+      i++;
+
+      if (validateInteger(argv[i++],thorChannelsPerSlave) != true)
+      {
+        releaseAtoms();
+        return 1;
+      }
+    }
+    else if (stricmp(argv[i], "-roxiechannelsperslave") == 0)
+    {
+      i++;
+
+      if (validateInteger(argv[i++],roxieChannelsPerSlave) != true)
+      {
+        releaseAtoms();
+        return 1;
+      }
+    }
     else if (stricmp(argv[i], "-roxieondemand") == 0)
     {
       i++;
@@ -298,8 +322,8 @@ int main(int argc, char** argv)
     const char* pServiceName = "WsDeploy_wsdeploy_esp";
     Owned<IPropertyTree> pCfg = createPTreeFromXMLFile(ENVGEN_PATH_TO_ESP_CONFIG);
 
-    optionsXml.appendf("<XmlArgs supportNodes=\"%d\" roxieNodes=\"%d\" thorNodes=\"%d\" espNodes=\"%d\" slavesPerNode=\"%d\" roxieOnDemand=\"%s\" ipList=\"%s\"/>", supportNodes, roxieNodes,
-      thorNodes, espNodes, slavesPerNode, roxieOnDemand?"true":"false", ipAddrs.str());
+    optionsXml.appendf("<XmlArgs supportNodes=\"%d\" roxieNodes=\"%d\" thorNodes=\"%d\" espNodes=\"%d\" slavesPerNode=\"%d\" thorChannelsPerSlave=\"%d\" roxieChannelsPerSlave=\"%d\" roxieOnDemand=\"%s\" ipList=\"%s\"/>", supportNodes, roxieNodes,
+      thorNodes, espNodes, slavesPerNode, thorChannelsPerSlave, roxieChannelsPerSlave, roxieOnDemand?"true":"false", ipAddrs.str());
 
     buildEnvFromWizard(optionsXml, pServiceName, pCfg, envXml, arrBuildSetWithAssignedIPs, arrAssignIPRanges, &dirMap);