Pārlūkot izejas kodu

HPCC-8662 Configmgr - Add NAS translation to Hardware

- Add NAS tab to Hardware configuration section
- Add NAS attributes name, mask, directory, subnet, trace

Signed-off-by: Gleb Aronsky <gleb.aronsky@lexisnexis.com>
Gleb Aronsky 12 gadi atpakaļ
vecāks
revīzija
2f4bca766e

+ 7 - 0
deployment/deploy/XMLTags.h

@@ -61,6 +61,7 @@
 #define XML_TAG_MAPTABLES              "MapTables"
 #define XML_TAG_MODEL                  "Model"
 #define XML_TAG_MODULE                 "Module"
+#define XML_TAG_NAS                    "NAS"
 #define XML_TAG_NODE                   "Node"
 #define XML_TAG_NODES                  "Nodes"
 #define XML_TAG_NODEREF                "NodeRef"
@@ -156,6 +157,7 @@
 #define XML_ATTR_LOGICAL_NAME          "@logicalName"
 #define XML_ATTR_LOGSQL                "@logSQL"
 #define XML_ATTR_MANUFACTURER          "@manufacturer"
+#define XML_ATTR_MASK                  "@mask"
 #define XML_ATTR_MAXOCCURS             "@maxOccurs"
 #define XML_ATTR_MEMORY                "@memory"
 #define XML_ATTR_MINIMALLOGGING        "@minimalLogging"
@@ -205,6 +207,7 @@
 #define XML_ATTR_SOCACHEDIR            "@socacheDir"
 #define XML_ATTR_STATE                 "@state"
 #define XML_ATTR_STATUSMSGSENABLED     "@statusMsgsEnabled"
+#define XML_ATTR_SUBNET                "@subnet"
 #define XML_ATTR_SUFFIX                "@suffix"
 #define XML_ATTR_SWITCH                "@switch"
 #define XML_ATTR_SYBASE                "@sybase"
@@ -213,6 +216,7 @@
 #define XML_ATTR_TEMPDIR               "@tempDir"
 #define XML_ATTR_THORCONNECTTIMEOUTSECONDS "@thorConnectTimeoutSeconds"
 #define XML_ATTR_THORPOLLDELAY         "@thorPollDelay"
+#define XML_ATTR_TRACE                 "@trace"
 #define XML_ATTR_TRACELEVEL            "@traceLevel"
 #define XML_ATTR_TYPE                  "@type"
 #define XML_ATTR_URL                   "@url"
@@ -235,6 +239,9 @@
 #define UI_FIELD_ATTR_VALUE             "@Value"
 #define UI_FIELD_ATTR_DEFAULTVALUE      "@DefaultValue"
 
+#define TAG_SUBNET                      "subnet"
+#define TAG_MASK                        "mask"
+#define TAG_TRACE                       "trace"
 #define TAG_NAME                        "name"
 #define TAG_MANUFACTURER                "manufacturer"
 #define TAG_COMPUTERTYPE                "computerType"

+ 30 - 1
deployment/deployutils/deployutils.cpp

@@ -1838,7 +1838,7 @@ IPropertyTree* generateTreeFromXsd(const IPropertyTree* pEnv, IPropertyTree* pSc
   return pCompTree.getLink();
 }
 
-bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut, IPropertyTree* pCompTree)
+bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut, IPropertyTree* pCompTree, bool bIncludeNAS)
 {
   if (pCompTree)
   {
@@ -1879,6 +1879,21 @@ bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bo
     pDomain->addProp(xpath, sbdefaultValue.str());
     xpath.clear().append("@snmpSecurityString");
     pDomain->addProp(xpath, sbdefaultValue.str());
+
+    if (bIncludeNAS == true)
+    {
+      IPropertyTree* pNAS = pCompTree->addPropTree(XML_TAG_NAS, createPTree());
+      xpath.clear().append(XML_ATTR_NAME);
+      pNAS->addProp(xpath, sbdefaultValue.str());
+      xpath.clear().append(XML_ATTR_MASK);
+      pNAS->addProp(xpath, "255.255.255.255");
+      xpath.clear().append(XML_ATTR_SUBNET);
+      pNAS->addProp(xpath, "0.0.0.0");
+      xpath.clear().append(XML_ATTR_DIRECTORY);
+      pNAS->addProp(xpath, sbdefaultValue.str());
+      xpath.clear().append(XML_ATTR_TRACE);
+      pNAS->addProp(xpath, sbdefaultValue.str());
+    }
   }
   else
   {
@@ -1901,14 +1916,21 @@ bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bo
     addItem(jsStrBuf, pEnv, XML_TAG_COMPUTER,  TAG_NETADDRESS, "", 0, 1, "", 1);
     addItem(jsStrBuf, pEnv, XML_TAG_COMPUTER,  TAG_DOMAIN, "", 0, 1, XML_TAG_HARDWARE"/"XML_TAG_DOMAIN, 4);
     addItem(jsStrBuf, pEnv, XML_TAG_COMPUTER,  TAG_COMPUTERTYPE, "", 0, 1, XML_TAG_HARDWARE"/"XML_TAG_COMPUTERTYPE, 4);
+    addItem(jsStrBuf, pEnv, XML_TAG_NAS,  TAG_NAME, "", 0, 1, "", 1);
+    addItem(jsStrBuf, pEnv, XML_TAG_NAS,       TAG_SUBNET,       "", 0, 1, "", 1);
+    addItem(jsStrBuf, pEnv, XML_TAG_NAS,       TAG_DIRECTORY,       "", 0, 1, "", 1);
+    addItem(jsStrBuf, pEnv, XML_TAG_NAS,       TAG_MASK,       "", 0, 1, "", 1);
+    addItem(jsStrBuf, pEnv, XML_TAG_NAS,       TAG_TRACE,       "", 0, 1, "", 1);
     jsStrBuf.append("compTabs['Hardware'][compTabs['Hardware'].length]= 'Computer Types';");
     jsStrBuf.append("compTabs['Hardware'][compTabs['Hardware'].length]= 'Switches';");
     jsStrBuf.append("compTabs['Hardware'][compTabs['Hardware'].length]= 'Domains';");
     jsStrBuf.append("compTabs['Hardware'][compTabs['Hardware'].length]= 'Computers';");
+    jsStrBuf.append("compTabs['Hardware'][compTabs['Hardware'].length]= 'NAS';");
     jsStrBuf.append("compTabToNode['Computer Types']= 'ComputerType';");
     jsStrBuf.append("compTabToNode['Switches']= 'Switch';");
     jsStrBuf.append("compTabToNode['Domains']= 'Domain';");
     jsStrBuf.append("compTabToNode['Computers']= 'Computer';");
+    jsStrBuf.append("compTabToNode['NAS']= 'NAS';");
 
     int index = 0;
     jsStrBuf.append("var colIndex = new Array();");
@@ -1927,6 +1949,13 @@ bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bo
     jsStrBuf.appendf("colIndex['domainComputers']=%d;", index++);
     jsStrBuf.appendf("colIndex['computerTypeComputers']=%d;", index++);
 
+    index=0;
+    jsStrBuf.appendf("colIndex['nameNAS']=%d;", index++);
+    jsStrBuf.appendf("colIndex['maskNAS']=%d;", index++);
+    jsStrBuf.appendf("colIndex['subnetNAS']=%d;", index++);
+    jsStrBuf.appendf("colIndex['directoryNAS']=%d;", index++);
+    jsStrBuf.appendf("colIndex['traceNAS']=%d;", index++);
+
     sbDefn.clear().append(jsStrBuf);
 
     if (writeOut)

+ 1 - 1
deployment/deployutils/deployutils.hpp

@@ -47,7 +47,7 @@ class CWizardInputs;
 extern DEPLOYUTILS_API bool generateHeadersFromXsd(const IPropertyTree* pEnv, const char* xsdName, const char* jsName);
 extern DEPLOYUTILS_API bool generateHeaders(const IPropertyTree* pEnv, IConstEnvironment* pConstEnv);
 extern DEPLOYUTILS_API bool generateHeadersFromEnv(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut = false);
-extern DEPLOYUTILS_API bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut = false, IPropertyTree* pCompTree = NULL);
+extern DEPLOYUTILS_API bool generateHardwareHeaders(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut = false, IPropertyTree* pCompTree = NULL, bool bIncludeNAS = false);
 extern DEPLOYUTILS_API bool generateBuildHeaders(const IPropertyTree* pEnv, bool isPrograms, StringBuffer& sbDefn, bool writeOut = false);
 extern DEPLOYUTILS_API bool generateHeaderForTopology(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut = false);
 extern DEPLOYUTILS_API bool generateHeadersForEnvSettings(const IPropertyTree* pEnv, StringBuffer& sbDefn, bool writeOut = false);

+ 5 - 3
esp/files/scripts/configmgr/configmgr.js

@@ -852,9 +852,9 @@ function handleConfigCellClickEvent(oArgs, caller, isComplex) {
     var compName = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('Name');
     var bldSet = top.document.navDT.getRecord(top.document.navDT.getSelectedRows()[0]).getData('BuildSet');
 
-    if (compName === "Hardware" && attrName === "netAddress") {
+    if (compName === "Hardware" && (attrName === "netAddress" || attrName === "mask" || attrName === "subnet")) {
       var errMsg = "";
-      errMsg = isValidIPAddress(newValue, "netAddress", true, false);
+      errMsg = isValidIPAddress(newValue, attrName, true, false);
 
       if (errMsg.length > 0) {
         alert(errMsg);
@@ -3232,6 +3232,8 @@ function onMenuItemClickHandleComputerItemsCopy(p_sType, p_aArgs, p_oValue)
     label = "Domain"
   else if (label === "Computers")
     label = "Computer"
+  else if (label === "NAS")
+    label = "NAS"
 
   var dt = top.document.RightTabView.getTab(top.document.RightTabView.get('activeIndex')).dt;
 
@@ -3431,7 +3433,7 @@ var oTarget = this.contextEventTarget, aMenuItems, aClasses;
 
     if (!aMenuItems) {
       if (isPresentInArr(menuEnabled, compTabToNode[parentName])) {
-        if (compTabToNode[parentName] === "Domain" || compTabToNode[parentName] === "Switch" || compTabToNode[parentName] === "ComputerType")
+        if (compTabToNode[parentName] === "Domain" || compTabToNode[parentName] === "Switch" || compTabToNode[parentName] === "ComputerType" || compTabToNode[parentName] === "NAS")
           parentName = "Hardware";
         else
           parentName = "GenericAddDelete";

+ 5 - 2
esp/services/WsDeploy/WsDeployService.cpp

@@ -3518,6 +3518,7 @@ bool CWsDeployFileInfo::displaySettings(IEspContext &context, IEspDisplaySetting
     multiRowNodes->addProp("Node", "Domain");
     multiRowNodes->addProp("Node", "Computer");
     multiRowNodes->addProp("Node", "Switch");
+    multiRowNodes->addProp("Node", "NAS");
     toXML(multiRowNodes, sb);
     resp.setMultiRowNodes(sb.str());
     
@@ -4893,7 +4894,7 @@ bool CWsDeployFileInfo::handleComputer(IEspContext &context, IEspHandleComputerR
   {
     StringBuffer sbTemp;
     IPropertyTree* pCompTree = createPTree(XML_TAG_HARDWARE);
-    generateHardwareHeaders(pEnvRoot, sbTemp, false, pCompTree);
+    generateHardwareHeaders(pEnvRoot, sbTemp, false, pCompTree, true);
 
     StringBuffer sbNewName(type);
     xpath.clear().appendf("%s", type);
@@ -4963,7 +4964,9 @@ bool CWsDeployFileInfo::handleComputer(IEspContext &context, IEspHandleComputerR
         IPropertyTree& pComp = iter->query();
         const char* compName = pComp.queryProp(XML_ATTR_NAME);
         const char* parentName = pComp.queryName();
-        refs.append("\n").append(parentName).append(" name=").append(compName);
+
+        if (compName != NULL)
+          refs.append("\n").append(parentName).append(" name=").append(compName);
       }
 
       if (refs.length())