Browse Source

HPCC-20332 Initial Dali XSD

Convert Dali to new format
Change XSDs to use new default custom namespace attributes
Add hpcc:hiddenIf custom namespace attribute

Signed-off-by: Ken Rowland <kenneth.rowland@lexisnexisrisk.com>
Richard Chapman 6 năm trước cách đây
mục cha
commit
8763dc02e4

+ 1 - 1
configuration/config2/EnvironmentNode.cpp

@@ -417,7 +417,7 @@ void EnvironmentNode::doFetchNodes(ConfigPath &configPath, std::vector<std::shar
                     if (!pPathItem->isSchemaItem())
                     {
                         std::shared_ptr<EnvironmentValue> pAttribute = (*childNodeIt)->getAttribute(attrName);
-                        if (pAttribute)
+                        if (pAttribute && pAttribute->isValueSet())
                         {
                             if (pPathItem->checkValueAgainstValueList(pAttribute->getValue(), true))
                             {

+ 3 - 1
configuration/config2/SchemaValue.cpp

@@ -24,7 +24,7 @@
 #include "Exceptions.hpp"
 
 SchemaValue::SchemaValue(const std::string &name, bool isDefined) :
-    m_name(name), m_displayName(name)
+    m_name(name), m_displayName(name), m_invertHiddenIf(false)
 {
     bitMask.m_required = 0;
     bitMask.m_readOnly = 0;
@@ -54,6 +54,7 @@ SchemaValue::SchemaValue(const SchemaValue &value)
     m_requiredIf = value.m_requiredIf;
     m_groupByName = value.m_groupByName;
     m_hiddenIf = value.m_hiddenIf;
+    m_invertHiddenIf = value.m_invertHiddenIf;
 
     // special processing? Maybe after inserting?
     std::vector<std::shared_ptr<SchemaValue>> m_mirrorToSchemaValues;
@@ -378,6 +379,7 @@ bool SchemaValue::isHidden(const EnvironmentValue *pEnvValue) const
         std::vector<std::shared_ptr<EnvironmentNode>> nodes;
         pEnvValue->getEnvironmentNode()->fetchNodes(m_hiddenIf, nodes);
         hidden = !nodes.empty();
+        hidden = m_invertHiddenIf == !hidden;
     }
     return hidden;
 }

+ 3 - 0
configuration/config2/SchemaValue.hpp

@@ -47,6 +47,8 @@ class DECL_EXPORT SchemaValue
         void setReadOnly(bool readOnly) { bitMask.m_readOnly = readOnly; }
         bool isReadOnly() const { return bitMask.m_readOnly; }
         void setHiddenIf(const std::string &hiddenIf) { m_hiddenIf = hiddenIf; }
+        void setInvertHiddenIf(bool invert) { m_invertHiddenIf = invert; }
+        bool getInvertHiddenIf() const { return m_invertHiddenIf; }
         void setHidden(bool hidden) { bitMask.m_hidden = hidden; }
         bool isHidden(const EnvironmentValue *pEnvValue=nullptr) const;
         void setDeprecated(bool deprecated) { bitMask.m_deprecated = deprecated; }
@@ -107,6 +109,7 @@ class DECL_EXPORT SchemaValue
         std::string m_requiredIf;
         std::string m_groupByName;
         std::string m_hiddenIf;
+        bool m_invertHiddenIf;
         // DON'T FORGET IF DATA ADDED, IT MAY MAY TO BE COPIED IN THE COPY CONSTRUCTOR!!
 
         struct {

+ 44 - 3
configuration/config2/XSDSchemaParser.cpp

@@ -719,22 +719,63 @@ void XSDSchemaParser::parseAllowedValue(const pt::ptree &allowedValueTree, Schem
 std::shared_ptr<SchemaValue> XSDSchemaParser::getSchemaValue(const pt::ptree &attr)
 {
     std::string attrName = getXSDAttributeValue(attr, "<xmlattr>.name");
+
+    if (!attr.get("<xmlattr>.default", "").empty())
+    {
+        throw(ParseException( "Attribute " + m_pSchemaItem->getProperty("name") + "[@" + attrName + "], XSD default is not supported, use hpcc:presetValue or hpcc:forcedConfigValue instead"));
+    }
+
     std::shared_ptr<SchemaValue> pCfgValue = std::make_shared<SchemaValue>(attrName);
     pCfgValue->setDisplayName(attr.get("<xmlattr>.hpcc:displayName", attrName));
     pCfgValue->setRequired(attr.get("<xmlattr>.use", "optional") == "required");
     pCfgValue->setTooltip(attr.get("<xmlattr>.hpcc:tooltip", ""));
     pCfgValue->setReadOnly(attr.get("<xmlattr>.hpcc:readOnly", "false") == "true");
-    pCfgValue->setHidden(attr.get("<xmlattr>.hpcc:hidden", "false") == "true");
     pCfgValue->setDeprecated(attr.get("<xmlattr>.hpcc:deprecated", "false") == "true");
     pCfgValue->setMirrorFromPath(attr.get("<xmlattr>.hpcc:mirrorFrom", ""));
     pCfgValue->setAutoGenerateType(attr.get("<xmlattr>.hpcc:autoGenerateType", ""));
     pCfgValue->setAutoGenerateValue(attr.get("<xmlattr>.hpcc:autoGenerateValue", ""));
-    pCfgValue->setDefaultValue(attr.get("<xmlattr>.default", ""));
-    pCfgValue->setCodeDefault(attr.get("<xmlattr>.hpcc:defaultInCode", ""));
     pCfgValue->setValueLimitRuleType(attr.get("<xmlattr>.hpcc:valueLimitRuleType", ""));
     pCfgValue->setValueLimitRuleData(attr.get("<xmlattr>.hpcc:valueLimitRuleData", ""));
     pCfgValue->setRequiredIf(attr.get("<xmlattr>.hpcc:requiredIf", ""));
 
+    //
+    // Process the various hidden/visible flags and ensure no conflicts
+    std::string hidden = attr.get("<xmlattr>.hpcc:hidden", "");
+    std::string hiddenIf = attr.get("<xmlattr>.hpcc:hiddenIf", "");
+    std::string visibleIf = attr.get("<xmlattr>.hpcc:visibleIf", "");
+    unsigned countAttrs = (hidden.empty() ? 0 : 1) + (hiddenIf.empty() ? 0 : 1) + (visibleIf.empty() ? 0 : 1);
+    if (countAttrs > 1)
+    {
+        throw(ParseException( "Attribute " + m_pSchemaItem->getProperty("name") + "[@" + attrName + "] Only one of hpcc:hidden, hpcc:hiddenIf or hpcc:visibleIf may be specified"));
+    }
+
+    if (!hidden.empty())
+    {
+        pCfgValue->setHidden(hidden == "true");
+    }
+    else
+    {
+        pCfgValue->setHiddenIf(!hidden.empty() ? hiddenIf : visibleIf);
+        pCfgValue->setInvertHiddenIf(!visibleIf.empty());
+    }
+
+    //
+    // Defaults
+    std::string preset = attr.get("<xmlattr>.hpcc:presetValue", "");
+    std::string forcedConfigValue = attr.get("<xmlattr>.hpcc:forcedConfigValue", "");
+    if (!preset.empty() && !forcedConfigValue.empty())
+    {
+        throw(ParseException( "Attribute " + m_pSchemaItem->getProperty("name") + "[@" + attrName + "] Only one of hpcc:presetValue or hpcc:forcedConfigValue may be specified"));
+    }
+    else if (!preset.empty())
+    {
+        pCfgValue->setCodeDefault(preset);
+    }
+    else
+    {
+        pCfgValue->setDefaultValue(forcedConfigValue);
+    }
+
     std::string modList = attr.get("<xmlattr>.hpcc:modifiers", "");
     if (modList.length())
     {

+ 31 - 30
docs/EN_US/HPCCClientTools/CT_Mods/CT_Comm_Line_DFU.xml

@@ -290,7 +290,8 @@
           lowercase. Options that rarely change can be put in the dfuplus.ini
           file. For example:</para>
 
-          <programlisting>server=http://10.150.50.12:8010
+          <programlisting>;The values below are examples, you should change them to match your platform deployment
+server=http://10.150.50.12:8010
 username=rlor
 password=password
 overwrite=1
@@ -519,20 +520,20 @@ replicate=1</programlisting>
 
           <programlisting>//fixed spray example:
 dfuplus action=spray srcip=10.150.50.14
-          srcfile=c:\import\timezones.txt dstname=RTTEMP::timezones.txt
-          dstcluster=thor format=fixed recordsize=155
+          srcfile=/var/lib/HPCCSystems/mydropzone/timezones.txt dstname=RTTEMP::timezones.txt
+          dstcluster=mythor format=fixed recordsize=155
 
 //fixed spray example using a srcxml file:
-dfuplus action=spray srcxml=c:\import\flattimezones.xml
-          dstname=RTTEMP::timezones.txt dstcluster=thor recordsize=155
+dfuplus action=spray srcxml=/var/lib/HPCCSystems/mydropzone/flattimezones.xml
+          dstname=RTTEMP::timezones.txt dstcluster=mythor recordsize=155
 
 //csv spray example:
 dfuplus action=spray srcip=10.150.50.14
-          srcfile=c:\import\timezones.csv dstname=RTTEMP::timezones.csv
-          dstcluster=thor format=csv
+          srcfile=/var/lib/HPCCSystems/mydropzone/timezones.csv dstname=RTTEMP::timezones.csv
+          dstcluster=mythor format=csv
 
 //the spray.xml file contains:
-&lt;File directory="c:\import\"
+&lt;File directory="/var/lib/HPCCSystems/mydropzone/"
    group="thor"
    modified="2004-04-27T14:58:38"
    name="zip"
@@ -553,26 +554,25 @@ dfuplus action=spray srcip=10.150.50.14
    size="165"/&gt;
 &lt;/File&gt;
 
-//fixed spray example using the above spray.xml file to
-          combine
+//fixed spray example using the above spray.xml file to combine
 // multiple source files into a single logical file
-// in this case, zip._1_of_3, zip._2_of_3, and zip._3_of_3
-          into zip1:
+// in this case, zip._1_of_3, zip._2_of_3, and zip._3_of_3 into zip1:
 dfuplus action=spray srcxml=spray.xml
-          dstcluster=thordstname=RTTEMP::myzip1 recordsize=5
+          dstcluster=mythor dstname=RTTEMP::myzip1 recordsize=5
 
 //xml spray example:
 dfuplus action=spray srcip=10.150.50.14
-          srcfile=c:\import\timezones.xml dstname=RTTEMP::timezones.xml
-          dstcluster=thor format=xml rowtag=area
+          srcfile=/var/lib/HPCCSystems/mydropzone/timezones.xml dstname=RTTEMP::timezones.xml
+          dstcluster=mythor format=xml rowtag=area
 
 //Multiple spray all .JPG and .BMP files under
-// c:\import on 10.150.51.26 to single logical file
-          LE::imagedb:
-dfuplus action=spray srcip=10.150.51.26
-          srcfile=c:\import\*.jpg,c:\import\*.bmp
+// /var/lib/HPCCSystems/mydropzone/ on 10.150.51.26 to single logical file LE::imagedb
 
-dstcluster=le_thor dstname=LE::imagedb overwrite=1
+dfuplus action=spray srcip=10.150.51.26
+          srcfile=/var/lib/HPCCSystems/mydropzone/*.jpg,/var/lib/HPCCSystems/mydropzone/*.bmp
+          dstcluster=mythor 
+          dstname=LE::imagedb 
+          overwrite=1
           prefix=FILENAME,FILESIZE nosplit=1
 //this would result in a RECORD structure like this:
 imageRecord := RECORD
@@ -678,9 +678,9 @@ END;</programlisting>
           <para>Examples:</para>
 
           <programlisting>dfuplus action=despray dstip=10.150.50.14
-   dstfile=c:\import\despray\timezones.txt srcname=RTTEMP::timezones.txt
+   dstfile=/var/lib/HPCCSystems/mydropzone/timezones.txt srcname=RTTEMP::timezones.txt
 //the spray.xml file contains:
-&lt;File directory="c:\import\"
+&lt;File directory="/var/lib/HPCCSystems/mydropzone/"
    group="thor"
    modified="2004-04-27T14:58:38"
    name="zip"
@@ -703,7 +703,7 @@ size="165"/&gt;
 //despray example using the above spray.xml file to split a single
 // logical file into multiple destination files
 // in this case, zip._1_of_3, zip._2_of_3, and zip._3_of_3 from zip1:
-dfuplus action=despray dstxml=spray.xml dstcluster=thor
+dfuplus action=despray dstxml=spray.xml dstcluster=mythor
           srcname=RTTEMP::myzip1
 
 
@@ -715,7 +715,7 @@ DATA image; //first 4 bytes contain the length of the image data
 
 //you can despray into its component files like this:
 dfuplus action=dspray srcname=le::imagedb
-          dstip=10.150.51.26 dstfile=c:\export\
+          dstip=10.150.51.26 dstfile=/var/lib/HPCCSystems/mydropzone/
           splitprefix=FILENAME,FILESIZE
 </programlisting>
         </sect3>
@@ -805,7 +805,8 @@ dfuplus action=dspray srcname=le::imagedb
           <para>Example:</para>
 
           <programlisting>dfuplus action=copy srcname=RTTEMP::timezones.txt
-          dstname=srcname=RTTEMP::COPY::timezones.txt dstcluster=thor</programlisting>
+                    dstname=RTTEMP::COPY::timezones.txt 
+                    dstcluster=mythor</programlisting>
         </sect3>
 
         <sect3 id="CLI_DFU_RemoveOps">
@@ -1287,10 +1288,10 @@ dfuplus action=add srcxml=exportedMysuper.xml dstname=Mysuper
 
           <para>Example:</para>
 
-          <programlisting>dfuplus action=savexml srcname=RTTEMP::timezones.txt
+          <programlisting>dfuplus action=savexml srcname=rttemp::timezones.txt
           dstxml=flattimezones.xml
     // this results in the following XML file:
-    &lt;File directory="c:\thordata\rttemp"
+    &lt;File directory="/var/lib/HPCCSystems/hpcc-data/thor/rttemp"
           group="thor"
           modified="2004-06-18T14:17:16"
           name="timezones.txt"
@@ -1423,10 +1424,10 @@ dfuplus action=add srcxml=exportedMysuper.xml dstname=Mysuper
 
           <para>Example:</para>
 
-          <programlisting>dfuplus action=monitor event=MyEvent ip=edata10 file=/dz/arr.txt
+          <programlisting>dfuplus action=monitor event=MyEvent ip=edata10 file=/var/lib/HPCCSystems/mydropzone/arr.txt
 dfuplus action=monitor event=MyEvent ip=10.150.10.75
-            file=c:\dz\* shotlimit=-1 sub=1
-dfuplus action=monitor event=MyEvent file=//10.15.13.21/dz/*.txt
+            file=/var/lib/HPCCSystems/mydropzone/* shotlimit=-1 sub=1
+dfuplus action=monitor event=MyEvent file=//10.15.13.21/var/lib/HPCCSystems/mydropzone/*.txt
 dfuplus action=monitor event=MyEvent lfn=RTTEMP::OUT::MyFile</programlisting>
         </sect3>
 

+ 7 - 7
initfiles/componentfiles/configschema/xsd/dafilesrv.xsd

@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema
-    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormhpcc:presetValue="qualified" attributeFormhpcc:presetValue="unqualified"
     xmlns:hpcc="someuri">
     <xs:include schemaLocation="types.xsd"/>
     <xs:complexType name="dafilesrv" hpcc:class="component" hpcc:category="espporocess" hpcc:componentName="dafilesrv" hpcc:displayName="Da File serve Process">
         <xs:attributeGroup name="executionSettings">
-            <xs:attribute name="parallelRequestLimit" type="percent" use="optional" default="20" hpcc:tooltip="Defines the maximum number of concurrent dafilesrv requests allowed. Requests that exceed the limit will be delayed. A value of 0 disables throttling. Overrides global settting."/>
-            <xs:attribute name="throttleDelayMs" type="xs:nonNegativeInteger" use="optional" default="5000" hpcc:tooltip="Defines how many milliseconds delayed requests will be delayed by. Overrides global settting."/>
-            <xs:attribute name="throttleCPULimit" type="xs:nonNegativeInteger" use="optional" default="75" hpcc:tooltip="if after the initial delay, the CPU % falls below this setting, the transaction will be allowed to continue, i.e. the limit can be exceeded this way. Overrides global settting."/>
+            <xs:attribute name="parallelRequestLimit" type="percent" use="optional" hpcc:presetValue="20" hpcc:tooltip="Defines the maximum number of concurrent dafilesrv requests allowed. Requests that exceed the limit will be delayed. A value of 0 disables throttling. Overrides global settting."/>
+            <xs:attribute name="throttleDelayMs" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="5000" hpcc:tooltip="Defines how many milliseconds delayed requests will be delayed by. Overrides global settting."/>
+            <xs:attribute name="throttleCPULimit" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="75" hpcc:tooltip="if after the initial delay, the CPU % falls below this setting, the transaction will be allowed to continue, i.e. the limit can be exceeded this way. Overrides global settting."/>
         </xs:attributeGroup>
         <xs:sequence>
             <xs:element name="DafilesrvProcess" hpcc:itemType="dafilesrv" hpcc:class="valueSet" hpcc:docid="daFs.t">
@@ -19,15 +19,15 @@
                         <xs:element name="Instance" maxOccurs="unbounded" hpcc:class="valueSet" hpcc:displayName="Bound Computers">
                             <xs:complexType>
                                 <xs:attributeGroup ref="computerNodeReference"/>
-                                <xs:attribute name="directory" type="xs:string" use="optional" default="c$\dafilesrv" hpcc:hidden="true"/>
+                                <xs:attribute name="directory" type="xs:string" use="optional" hpcc:presetValue="c$\dafilesrv" hpcc:hidden="true"/>
                                 <xs:attributeGroup ref="executionSettings"/>
                             </xs:complexType>
                         </xs:element>
                     </xs:sequence>
                     <xs:attributeGroup ref="buildInfo"/>
                     <xs:attribute name="name" type="xs:string" use="required" hpcc:tooltip="Name for this process"/>
-                    <xs:attribute name="description" type="xs:string" use="optional" default="DaFileSrv process" hpcc:tooltip="Description for this process"/>
-                    <xs:attribute name="version" type="xs:string" use="optional" default="1" hpcc:tooltip="Version identifier used to select which process will be started"/>
+                    <xs:attribute name="description" type="xs:string" use="optional" hpcc:presetValue="DaFileSrv process" hpcc:tooltip="Description for this process"/>
+                    <xs:attribute name="version" type="xs:string" use="optional" hpcc:presetValue="1" hpcc:tooltip="Version identifier used to select which process will be started"/>
                     <xs:attributeGroup ref="executionSettings"/>
                 </xs:complexType>
             </xs:element>

+ 89 - 412
initfiles/componentfiles/configschema/xsd/dali.xsd

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 ################################################################################
-#    HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems®.
+#    HPCC SYSTEMS software Copyright (C) 2018 HPCC Systems®.
 #
 #    Licensed under the Apache License, Version 2.0 (the "License");
 #    you may not use this file except in compliance with the License.
@@ -17,421 +17,98 @@
 ################################################################################
 -->
 
+<xs:schema
+        xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormhpcc:presetValue="qualified" attributeFormhpcc:presetValue="unqualified"
+        xmlns:hpcc="someuri">
+    <xs:include schemaLocation="types.xsd"/>
+    <xs:complexType name="dali">
 
-Add a key for dali server names named dali_name that can be referred to from elsewhere that needs to select a dali.
+        <xs:attributeGroup name="store" hpcc:groupByName="Store" hpcc:docid="da.t2">
+            <xs:attribute name="lightweightCoalesce" type="xs:boolean" hpcc:displayName="Lightweight Coalesce" hpcc:presetValue="true" hpcc:tooltip="Enable non memory loaded consolidation of store"/>
+            <xs:attribute name="IdlePeriod" type="xs:nonNegativeInteger" hpcc:displayName="Idle Period (s)" hpcc:presetValue="600" hpcc:tooltip="Period of client to server quiet time to trigger store save"/>
+            <xs:attribute name="IdleRate" type="xs:nonNegativeInteger" hpcc:displayName="Idle Rate (units?)" hpcc:presetValue="10" hpcc:tooltip="Number of transaction per minute to be considered quiet time"/>
+            <xs:attribute name="MinTime" type="xs:nonNegativeInteger" hpcc:displayName="Min Time Between Lightweight Store Saves (s)" hpcc:presetValue="86400" hpcc:tooltip="Minimum amount of time between lightweight store saves"/>
+            <xs:attribute name="StartTime" type="timeOfDay" hpcc:displayName="Start Time for Coalesce Checking (hh:mm:ss)" hpcc:tooltip="Start time of lightweight coalesce checking"/>
+            <xs:attribute name="EndTime" type="timeOfDay" hpcc:displayName="End Time for Coalesce Checking (hh:mm:ss)" hpcc:tooltip="End time of lightweight coalesce checking"/>
+            <xs:attribute name="keepStores" type="xs:nonNegativeInteger" hpcc:displayName="Number Old Saves to Keep" hpcc:presetValue="10" hpcc:tooltip="Number of old saved stores to keep"/>
+            <xs:attribute name="recoverFromIncErrors" type="xs:boolean" hpcc:displayName="Enable Autorecover for Delta Files" hpcc:presetValue="true" hpcc:tooltip="Switch on to autorecover from corruption to delta files on load"/>
+        </xs:attributeGroup>
 
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+        <xs:attributeGroup name="backup" hpcc:groupByName="Backup" hpcc:docid="da.t3">
+            <xs:attribute name="backupComputer" hpcc:displayName="Backup Computer" type="nodeName" use="required"
+                          hpcc:sourceKey="computer_name" hpcc:mirrorFrom="/Environment/Hardware/Computer[@name]"/>
+            <xs:attribute name="asyncBackup" type="xs:boolean" hpcc:displayName="Async Backup" hpcc:presetValue="true" hpcc:tooltip="Asynchronous backup of transactions"/>
+            <xs:attribute name="useNFSBackupMount" type="xs:boolean" hpcc:displayName="Use NFS Backup Mount" hpcc:presetValue="false" hpcc:tooltip="Create and use a NFS mount point for backups"/>
+            <xs:attribute name="backupLargeWarningThreshold" type="xs:nonNegativeInteger" hpcc:displayName="Backup Warning Threshold" hpcc:presetValue="50" hpcc:tooltip="Transaction granularity of pending backups to begin issue warnings about backlog"/>
+            <xs:attribute name="backupSoftQueueLimit" type="xs:nonNegativeInteger" hpcc:displayName="Backup Soft Queue Limit" hpcc:presetValue="200" hpcc:tooltip="Number of transactions above which the backup queue will start introducing delays until the backup queue decreases below this limit"/>
+            <xs:attribute name="backupSoftQueueLimitDelay" type="xs:nonNegativeInteger" hpcc:displayName="Backup Soft Queue Limit Delay (s)" hpcc:presetValue="200" hpcc:tooltip="The maximum delay to introduce when the backupSoftQueueLimit has been introduced"/>
+        </xs:attributeGroup>
 
-    <xs:element name="DaliServerProcess">
-        <xs:annotation>
-            <xs:documentation>Describes a Dali server installation</xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <!--DOC-Autobuild-code-->
-            <xs:annotation>
-                <xs:appinfo>
-                    <doc>
-                        <docid>da.t1</docid>
-                    </doc>
-                </xs:appinfo>
-            </xs:annotation>
-            <xs:sequence>
-                <xs:element name="Instance" maxOccurs="unbounded">
-                    <!-- Define the information for this thing -->
-                    <xs:annotation>
-                        <xs:appinfo>
-                            <class>instanceSet</class>
-                            <dislpayName>Instances</dislpayName>
-                            <tooltip>Adds instances of bindings for this stuff to the rest of the stuff</tooltip>
-                        </xs:appinfo>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:attribute name="computer" type="computerType" use="required">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <colIndex>1</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="netAddress" type="xs:string" use="optional">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <viewType>readonly</viewType>
-                                    <colIndex>2</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="directory" type="absolutePath" use="optional">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <viewType>hidden</viewType>
-                                    <required>true</required>
-                                    <colIndex>3</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="port" type="xs:string" use="optional" default="7070">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <required>true</required>
-                                    <colIndex>4</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                    </xs:complexType>
+        <xs:attributeGroup name="dfs" hpcc:groupByName="DFS" hpcc:docid="da.t5">
+            <xs:attribute name="forceGroupUpdate" type="xs:boolean" hpcc:displayName="Force Group Update" hpcc:presetValue="false" hpcc:tooltip="Force group updates on startup, if environment mismatch"/>
+            <xs:attribute name="numThreads" type="xs:nonNegativeInteger" hpcc:displayName="Number of Threads" hpcc:presetValue="30" hpcc:tootip="Number of threads to use to process DFS requests"/>
+        </xs:attributeGroup>
 
-                    <xs:unique name="uniqueComputerName">
-                        <xs:selector xpath="/Hardware/Computer"/>
-                        <xs:field xpath="@name"/>
-                    </xs:unique>
-                    <xs:keyref name="keyrefComputerName" refer="uniqueComputerName">
-
-                    </xskeyref>
-
-
-<Hardware><Computer computerType="linuxmachine" domain="localdomain" name="node084202" netAddress="10.173.84.202"/>
-
-                </xs:element>
-                <xs:element name="Notes" maxOccurs="unbounded">
-                    <xs:annotation>
-                        <xs:appinfo>
-                            <viewChildNodes>true</viewChildNodes>
-                        </xs:appinfo>
-                    </xs:annotation>
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="Note" type="xs:string" minOccurs="0" maxOccurs="1"/>
-                        </xs:sequence>
-                        <xs:attribute name="severity" use="optional" default="Minor">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <tooltip>Significance of this note.</tooltip>
-                                    <title>Severity</title>
-                                    <colIndex>1</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                            <xs:simpleType>
-                                <xs:restriction base="xs:string">
-                                    <xs:enumeration value="Minor"/>
-                                    <xs:enumeration value="Normal"/>
-                                    <xs:enumeration value="Critical"/>
-                                </xs:restriction>
-                            </xs:simpleType>
-                        </xs:attribute>
-                        <xs:attribute name="date" type="AutoTimeStampType" use="optional">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <title>Date / Time</title>
-                                    <tooltip>Date and time this note was entered</tooltip>
-                                    <viewType>readonly</viewType>
-                                    <width>120</width>
-                                    <colIndex>2</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="computer" type="AutoComputerType" use="optional">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <title>Computer</title>
-                                    <tooltip>Computer from which this note was entered</tooltip>
-                                    <viewType>readonly</viewType>
-                                    <colIndex>3</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                        <xs:attribute name="user" type="AutoUseridType" use="optional">
-                            <xs:annotation>
-                                <xs:appinfo>
-                                    <title>User</title>
-                                    <tooltip>User account from which this note was entered</tooltip>
-                                    <viewType>readonly</viewType>
-                                    <colIndex>4</colIndex>
-                                </xs:appinfo>
-                            </xs:annotation>
-                        </xs:attribute>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-            <xs:attributeGroup ref="Store"/>
-            <xs:attributeGroup ref="Backup"/>
-            <xs:attributeGroup ref="LDAP"/>
-            <xs:attributeGroup ref="DFS"/>
-            <xs:attribute name="build" type="buildType" use="required">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>The build name to be deployed</tooltip>
-                        <viewType>hidden</viewType>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="buildSet" type="buildSetType" use="required">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <viewType>hidden</viewType>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="name" type="xs:string" use="optional">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>Name for this process</tooltip>
-                        <required>true</required>
-                    </xs:appinfo>
-                </xs:annotation>
+        <xs:attributeGroup name="ldap" hpcc:groupByName="LDAP" hpcc:docid="da.t4">
+            <xs:attribute name="ldapServer" type="xs:string" hpcc:diaplayName="LDAP Server" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:requiredIf="/Environment/Software/LDAPServerProcess" hpcc:tooltip="The LDAPserver to be used for authentication"/>
+            <xs:attribute name="ldapProtocol" hpcc:presetValue="ldap" hpcc:displayName="LDAP Protocol" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:requiredIf="/Environment/Software/LDAPServerProcess" hpcc:tooltip="The protocol to use - standard ldap or LDAP over SSL">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:enumeration value="ldap" hpcc:description=""/>
+                        <xs:enumeration value="ldaps" hpcc:description=""/>
+                    </xs:restriction>
+                </xs:simpleType>
             </xs:attribute>
-            <xs:attribute name="description" type="xs:string" use="optional" default="Dali Server process">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>Description for this process</tooltip>
-                    </xs:appinfo>
-                </xs:annotation>
+            <xs:attribute name="authMethod" type="xs:string" hpcc:presetValue="kerberos" hpcc:displayName="LDAP Auth Method" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:requiredIf=".[@ldapProtocol=('ldap','ldaps')]" hpcc:tooltip="The protocol to use for LDAP authentication">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:enumeration value="kerberos" hpcc:description=""/>
+                        <xs:enumeration value="simple" hpcc:description=""/>
+                    </xs:restriction>
+                </xs:simpleType>
             </xs:attribute>
-            <xs:attribute name="msgLevel" type="xs:nonNegativeInteger" use="optional" default="100">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>Severity threshold for reporting errors in log file</tooltip>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="dataPath" type="absolutePath" use="optional">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>Directory in which dali's data files will be written to</tooltip>
-                        <onchange>
-                            <message>                Warn:This is the path for critical data for the Dali server and must be changed with care! Please refer to the documentation for more details.              </message>
-                        </onchange>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="LogDir" type="absolutePath" use="optional">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>Directory in which to store server log files </tooltip>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="AuditLogDir" type="absolutePath" use="optional">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <tooltip>Directory in which to store audit log files</tooltip>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-            <xs:attribute name="environment" type="absolutePath">
-                <xs:annotation>
-                    <xs:appinfo>
-                        <autogenforwizard>1</autogenforwizard>
-                        <autogendefaultvalue>$defaultenvfile</autogendefaultvalue>
-                        <tooltip>Path to an xml file containing an Environment to use</tooltip>
-                    </xs:appinfo>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <xs:attributeGroup name="Store">
-        <!--DOC-Autobuild-code-->
-        <xs:annotation>
-            <xs:appinfo>
-                <docid>da.t2</docid>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:attribute name="lightweightCoalesce" type="xs:boolean" use="optional" default="true">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Enable non memory loaded consolidation of store</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="IdlePeriod" type="xs:nonNegativeInteger" use="optional" default="600">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Period of client to server quiet time to trigger store save</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="IdleRate" type="xs:nonNegativeInteger" use="optional" default="10">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Number of transaction per minute to be considered quiet time</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="MinTime" type="xs:nonNegativeInteger" use="optional" default="86400">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Minimum amount of time between lightweight store saves</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="StartTime" type="xs:string" use="optional">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Start time of lightweight coalesce checking</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="EndTime" type="xs:string" use="optional">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>End time of lightweight coalesce checking</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="keepStores" type="xs:nonNegativeInteger" use="optional" default="10">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Number of old saved stores to keep</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="recoverFromIncErrors" type="xs:boolean" default="true">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Switch on to auto recover from corruption to delta files on load</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
-    <xs:attributeGroup name="Backup">
-        <!--DOC-Autobuild-code-->
-        <xs:annotation>
-            <xs:appinfo>
-                <docid>da.t3</docid>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:attribute name="backupComputer" type="computerType" use="optional">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Backup computer</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="asyncBackup" type="xs:boolean" use="optional" default="true">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Asynchronous backup of transactions</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="useNFSBackupMount" type="xs:boolean" use="optional" default="false">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Create and use a NFS mount point for backups</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="backupLargeWarningThreshold" type="xs:nonNegativeInteger" use="optional" default="50">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Granularity of pending backups to begin issue warnings about backlog</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="backupSoftQueueLimit" type="xs:nonNegativeInteger" use="optional" default="200">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Limit above which the backup queue will start introducing delays until the backup queue decreases below this limit</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="backupSoftQueueLimitDelay" type="xs:nonNegativeInteger" use="optional" default="200">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>The maximum delay to introduce when the backupSoftQueueLimit has been introduced</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
-    <xs:attributeGroup name="DFS">
-        <!--DOC-Autobuild-code-->
-        <xs:annotation>
-            <xs:appinfo>
-                <docid>da.t5</docid>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:attribute name="forceGroupUpdate" type="xs:boolean" use="optional" default="false">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Force group updates on startup, if environment mismatch</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="numThreads" type="xs:nonNegativeInteger" use="optional" default="30">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Number of threads to use to process DFS requests</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
-    <xs:attributeGroup name="LDAP">
-        <!--DOC-Autobuild-code-->
-        <xs:annotation>
-            <xs:appinfo>
-                <docid>da.t4</docid>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:attribute name="ldapServer" type="ldapServerType" use="optional">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>The ldap server to be used for authentication.</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="ldapProtocol" use="optional" default="ldap">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>The protocol to use - standard ldap or ldap over SSL.</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:string">
-                    <xs:enumeration value="ldap"/>
-                    <xs:enumeration value="ldaps"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="authMethod" use="optional" default="kerberos">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>The protocol to use for LDAP authentication.</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:string">
-                    <xs:enumeration value="kerberos"/>
-                    <xs:enumeration value="simple"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="filesDefaultUser" use="optional" type="xs:string">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>The default username for Files access (ActiveDirectory).</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="filesDefaultPassword" use="optional" type="xs:string">
-            <xs:annotation>
-                <xs:appinfo>
-                    <viewType>password</viewType>
-                    <tooltip>The default password for filesDefaultUser.</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="reqSignatureExpiry" use="optional" type="xs:string" default="10">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Lifetime in minutes of a permissions request digital signature.</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="checkScopeScans" type="xs:boolean" use="optional" default="true">
-            <xs:annotation>
-                <xs:appinfo>
-                    <tooltip>Enable LDAP checking for all logical file listings</tooltip>
-                </xs:appinfo>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
+            <xs:attribute name="filesDefaultUser" type="xs:string" hpcc:displayName="Files Default User" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:tooltip="The default username for Files access (ActiveDirectory)"/>
+            <xs:attribute name="filesDefaultPassword" type="xs:string" hpcc:modifiers="password" hpcc:displayName="Files Default Password" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:tooltip="The default password for filesDefaultUser"/>
+            <xs:attribute name="reqSignatureExpiry" type="xs:string" hpcc:diaplsyName="Signature Expiration (minutes)" hpcc:presetValue="10" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:tooltip="Lifetime in minutes of a permissions request digital signature"/>
+            <xs:attribute name="checkScopeScans" type="xs:boolean" hpcc:displayName="Check Scope Scans" hpcc:presetValue="true" hpcc:visibleIf="/Environment/Software/LDAPServerProcess"
+                          hpcc:tooltip="Enable LDAP checking for all logical file listings"/>
+        </xs:attributeGroup>
+
+        <xs:sequence>
+            <xs:element name="DaliServerProcess" hpcc:class="component" hpcc:category="Dali Server" hpcc:itemType="dali" hpcc:displayName="Dali Server"  hpcc:docid="da.t1" minOccurs="1" maxOccurs="1">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="Instance" hpcc:itemType="hwinstance" minOccurs="1" maxOccurs="1" hpcc:class="elementSet">
+                            <xs:complexType>
+                                <xs:attributeGroup ref="computerNodeReference"/>
+                                <xs:attribute name="directory" type="absolutePath" hpcc:hidden="true"/>
+                                <xs:attribute name="port" type="xs:string" use="required" hpcc:displayName="Port" hpcc:tooltip="Control port"/>
+                            </xs:complexType>
+                        </xs:element>
+                        <xs:element name="Notes" type="usernotes"  hpcc:displayName="Notes"/>
+                    </xs:sequence>
+                    <xs:attributeGroup ref="buildInfo"/>
+                    <xs:attribute name="name" type="xs:string" use="required" hpcc:displayName="Name" hpcc:autoGenerateType="prefix" hpcc:autoGenerateValue="dali"
+                                  hpcc:uniqueKey="daliprocess_name" hpcc:tooltip="Name for this Dali process"/>
+                    <xs:attribute name="description" type="xs:string" hpcc:displayName="Description" hpcc:presetValue="Dali Server process" hpcc:tooltip="Description for this process"/>
+                    <xs:attribute name="msgLevel" type="xs:nonNegativeInteger" hpcc:displayName="Message Level" hpcc:presetValue="100" hpcc:tooltip="Severity threshold for reporting errors in log file"/>
+                    <xs:attribute name="dataPath" type="absolutePath" hpcc:displayName="Data Path" hpcc:tooltip="Full path to directory where Dali's data files are stored"
+                                  hpcc:modifiers="changeWarning" hpcc:warning="Warn: This is the path for critical data for the Dali server and must be changed with care! Please refer to the documentation for more details"/>
+                    <xs:attribute name="LogDir" type="absolutePath" hpcc:displayName="Log Directory" hpcc:tooltip="Full path to directory where server log files are stored"/>
+                    <xs:attribute name="AuditLogDir" type="absolutePath" hpcc:displayName="Audit Log Directory" hpcc:tooltip="Full path to directory where audit log files are stored"/>
+                    <xs:attribute name="environment" type="absolutePath" hpcc:displayName="Environment" use="required" hpcc:tooltip="Full path to an XML file containing an Environment to use"/>
+                    <xs:attributeGroup ref="store"/>
+                    <xs:attributeGroup ref="backup"/>
+                    <xs:attributeGroup ref="dfs"/>
+                    <xs:attributeGroup ref="ldap"/>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
 </xs:schema>

+ 12 - 12
initfiles/componentfiles/configschema/xsd/eclagent.xsd

@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema
-    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormhpcc:presetValue="qualified" attributeFormhpcc:presetValue="unqualified"
     xmlns:hpcc="someuri">
     <xs:include schemaLocation="types.xsd"/>
     <xs:complexType name="eclAgent">
         <xs:attributeGroup name="options" hpcc:groupByName="Options" hpcc:docid="EA.t2">
-            <xs:attribute name="allowedPipePrograms" hpcc:displayName="Allowed Pipe Programs" type="xs:string" use="optional" default="*" hpcc:tab="Eclagent" hpcc:tooltip="Comma separated list of allowed PIPE programs (* for allow all)"/>
+            <xs:attribute name="allowedPipePrograms" hpcc:displayName="Allowed Pipe Programs" type="xs:string" use="optional" hpcc:presetValue="*" hpcc:tab="Eclagent" hpcc:tooltip="Comma separated list of allowed PIPE programs (* for allow all)"/>
             <xs:attribute name="daliServers" hpcc:displayName="Dali Servers" type="xs:string" use="required" hpcc:tooltip="Specifies the dali server to which this eclagent is attached"/>
-            <xs:attribute name="defaultMemoryLimitMB" hpcc:displayName="Default Memory Limit (MB)" type="xs:nonNegativeInteger" use="optional" default="300" hpcc:tooltip="Default memory limit in MB for eclagent"/>
-            <xs:attribute name="heapUseHugePages" hpcc:displayName="Heap Use Huge Pages" type="xs:boolean" default="false" hpcc:tooltip="Use memory from huge pages if they have been configured"/>
-            <xs:attribute name="heapUseTransparentHugePages" hpcc:displayName="Heam Use Transparent Huge Pages" type="xs:boolean" default="true" hpcc:tooltip="Use memory from transparent huge pages"/>
-            <xs:attribute name="heapRetainMemory" hpcc:displayName="Heap Retain Memory" type="xs:boolean" default="false" hpcc:tooltip="Retain and do not return unused memory to the operating system"/>
-            <xs:attribute name="pluginDirectory" hpcc:displayName="Plugin Directory" type="absolutePath" use="optional" default="/opt/HPCCSystems/plugins/" hpcc:tooltip="Directory where plugins are located"/>
-            <xs:attribute name="traceLevel" hpcc:displayName="Trace Level" type="xs:nonNegativeInteger" use="optional" default="0" hpcc:tooltip="Trace level"/> < - Shoud this be an enumerated list, or a range say 0-10
-            <xs:attribute name="thorConnectTimeout" hpcc:displayName="Thor Connect Timeout" type="xs:nonNegativeInteger" use="optional" default="600" hpcc:tooltip="Default connection timeout when sending query to Thor"/>
-            <xs:attribute name="wuQueueName" hpcc:displayName="Workunit Queue Name" type="xs:string" use="optional" default="" hpcc:tooltip="eclAgent Workunit Execution Queue Name" hpcc:autogenforwizard="true" hpcc:autogensuffix="_queue"/> <!-- is this keyed? do we need new auto name option for suffix -->
+            <xs:attribute name="defaultMemoryLimitMB" hpcc:displayName="Default Memory Limit (MB)" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="300" hpcc:tooltip="Default memory limit in MB for eclagent"/>
+            <xs:attribute name="heapUseHugePages" hpcc:displayName="Heap Use Huge Pages" type="xs:boolean" hpcc:presetValue="false" hpcc:tooltip="Use memory from huge pages if they have been configured"/>
+            <xs:attribute name="heapUseTransparentHugePages" hpcc:displayName="Heam Use Transparent Huge Pages" type="xs:boolean" hpcc:presetValue="true" hpcc:tooltip="Use memory from transparent huge pages"/>
+            <xs:attribute name="heapRetainMemory" hpcc:displayName="Heap Retain Memory" type="xs:boolean" hpcc:presetValue="false" hpcc:tooltip="Retain and do not return unused memory to the operating system"/>
+            <xs:attribute name="pluginDirectory" hpcc:displayName="Plugin Directory" type="absolutePath" use="optional" hpcc:presetValue="/opt/HPCCSystems/plugins/" hpcc:tooltip="Directory where plugins are located"/>
+            <xs:attribute name="traceLevel" hpcc:displayName="Trace Level" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="0" hpcc:tooltip="Trace level"/> < - Shoud this be an enumerated list, or a range say 0-10
+            <xs:attribute name="thorConnectTimeout" hpcc:displayName="Thor Connect Timeout" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="600" hpcc:tooltip="Default connection timeout when sending query to Thor"/>
+            <xs:attribute name="wuQueueName" hpcc:displayName="Workunit Queue Name" type="xs:string" use="optional" hpcc:presetValue="" hpcc:tooltip="eclAgent Workunit Execution Queue Name" hpcc:autogenforwizard="true" hpcc:autogensuffix="_queue"/> <!-- is this keyed? do we need new auto name option for suffix -->
         </xs:attributeGroup>
         <xs:sequence>
             <xs:element name="EclAgentProcess" hpcc:class="component" hpcc:itemType="eclAgent" hpcc:displayName="ECL Agent Process" maxOccurs="unbounded" hpcc:docid="EA.t1">
@@ -23,14 +23,14 @@
                         <xs:element name="Instance" hpcc:itemType = "elementSet" maxOccurs="unbounded" hpcc:displayName="Instances">
                             <xs:complexType>
                                 <xs:attributeGroup ref="computerNodeReference"/>
-                                <xs:attribute name="directory" type="xs:string" use="optional" default="c$\eclagent" hpcc:hidden="true"/> <!-- hidden doesn't make sense -->
+                                <xs:attribute name="directory" type="xs:string" use="optional" hpcc:presetValue="c$\eclagent" hpcc:hidden="true"/> <!-- hidden doesn't make sense -->
                             </xs:complexType>
                         </xs:element>
                         <xs:element type="usernotes" hpcc:displayName="Notes"/>
                     </xs:sequence>
                     <xs:attributeGroup ref="buildInfo"/>
                     <xs:attribute name="name" type="xs:string" use="required" hpcc:displayName="Name" hpcc:uniqueKey="eclagentprocess_name" hpcc:tooltip="Name for this process"/>
-                    <xs:attribute name="description" type="xs:string" use="optional" hpcc:displayName="Description" default="EclAgent process" hpcc:tooltip="Description for this process"/>
+                    <xs:attribute name="description" type="xs:string" use="optional" hpcc:displayName="Description" hpcc:presetValue="EclAgent process" hpcc:tooltip="Description for this process"/>
                     <xs:attributeGroup ref="options"/>
                 </xs:complexType>
 

+ 2 - 0
initfiles/componentfiles/configschema/xsd/environment.xsd

@@ -22,6 +22,7 @@
     <xs:include schemaLocation="types.xsd"/>
     <xs:include schemaLocation="hardware.xsd"/>
     <xs:include schemaLocation="esp.xsd"/>
+    <xs:include schemaLocation="dali.xsd"/>
     <!--xs:include schemaLocation="esp_service_wsecl2.xsd"/-->
     <xs:include schemaLocation="secmgr_singleuser.xsd"/>
     <xs:include schemaLocation="esp_service_smc.xsd"/>
@@ -43,6 +44,7 @@
                             <xs:element type="secmgr_singleuser"/>
                             <xs:element type="espsmc"/>
                             <xs:element type="esp"/>
+                            <xs:element type="dali"/>
                         </xs:sequence>
                     </xs:complexType>
                 </xs:element>

+ 46 - 46
initfiles/componentfiles/configschema/xsd/esp.xsd

@@ -17,7 +17,7 @@
 ################################################################################
  -->
 <xs:schema
-    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormhpcc:presetValue="qualified" attributeFormhpcc:presetValue="unqualified"
     xmlns:hpcc="someuri">
     <xs:include schemaLocation="types.xsd"/>
     <xs:complexType name="esp">
@@ -33,9 +33,9 @@
                                     <xs:element name="Authenticate" minOccurs="0" maxOccurs="unbounded" hpcc:class="elementSet" hpcc:displayName="URL Authentication" hpcc:docid="ESP.t1">
                                         <xs:complexType>
                                             <xs:attribute name="description" type="xs:string" use="optional" hpcc:displayName="Description"/>
-                                            <xs:attribute name="path" type="xs:string" use="required" default="/" hpcc:displayName="Path" hpcc:tooltip="The logical path of a resource used for authentication"/>
+                                            <xs:attribute name="path" type="xs:string" use="required" hpcc:presetValue="/" hpcc:displayName="Path" hpcc:tooltip="The logical path of a resource used for authentication"/>
                                             <xs:attribute name="resource" type="xs:string" use="required" hpcc:displayName="Resource" hpcc:tooltip="The physical resource for which access is checked"/>
-                                            <xs:attribute name="access" hpcc:defaultInCode="Read">
+                                            <xs:attribute name="access" hpcc:presetValue="Read">
                                                 <xs:simpleType>
                                                     <xs:restriction base="xs:string">
                                                         <xs:enumeration value="" hpcc:displayName="Use default" hpcc:description=""/>
@@ -51,7 +51,7 @@
                                     </xs:element>
                                     <xs:element name="AuthenticateFeature" minOccurs="0" maxOccurs="unbounded" hpcc:class="elementSet" hpcc:displayName="Feature Authentication" hpcc:docid="ESP.t2">
                                         <xs:complexType>
-                                            <xs:attribute name="authenticate" use="optional" default="Yes" hpcc:displayName="Authenticate" hpcc:tooltip="Validate access rights for this capability?">
+                                            <xs:attribute name="authenticate" use="optional" hpcc:presetValue="Yes" hpcc:displayName="Authenticate" hpcc:tooltip="Validate access rights for this capability?">
                                                 <xs:simpleType>
                                                     <xs:restriction base="xs:string">
                                                         <xs:enumeration value="Yes" hpcc:description="Validate access rights for this capability"/>
@@ -60,7 +60,7 @@
                                                 </xs:simpleType>
                                             </xs:attribute>
                                             <xs:attribute name="description" type="xs:string" use="optional" hpcc:displayName="Description"/>
-                                            <xs:attribute name="path" type="xs:string" use="required" hpcc:displayName="Path" default="/" hpcc:tooltip="The logical path of a resource used for authentication"/>
+                                            <xs:attribute name="path" type="xs:string" use="required" hpcc:displayName="Path" hpcc:presetValue="/" hpcc:tooltip="The logical path of a resource used for authentication"/>
                                             <xs:attribute name="resource" type="xs:string" use="required" hpcc:displayName="Resource"/>
                                         </xs:complexType>
                                     </xs:element>
@@ -76,9 +76,9 @@
                                 <xs:attribute name="name" type="xs:string" use="required" hpcc:displayName="Binding Name" hpcc:autoName="" />
                                 <!-- Note that the value limit rule for the service attribute replaces use of a reference to a set of unique attribute values because this rule
                                      is more restrictive than what a reference to a unique set of attribute values can provide -->
-                                <xs:attribute name="service" type="xs:string" use="required" hpcc:codeDefault="123abc" hpcc:hidden="true" hpcc:displayName="Service"
+                                <xs:attribute name="service" type="xs:string" use="required" hpcc:codehpcc:presetValue="123abc" hpcc:hidden="true" hpcc:displayName="Service"
                                     hpcc:valueLimitRuleType="uniqueItemType_espBinding" hpcc:valueLimitRuleData="EspBinding[@service],/Environment/Software/EspService[@name]"/>
-                                <xs:attribute name="protocol" use="required" default="http" hpcc:displayName="Protocol" hpcc:tooltip="The protocol to use">
+                                <xs:attribute name="protocol" use="required" hpcc:presetValue="http" hpcc:displayName="Protocol" hpcc:tooltip="The protocol to use">
                                     <xs:simpleType>
                                         <xs:restriction base="xs:string">
                                             <xs:enumeration value="http" hpcc:descritpion=""/>
@@ -90,8 +90,8 @@
                                 <xs:attribute name="wsdlServiceAddress" type="xs:string" use="optional" hpcc:displayName="wsdlServiceAddress" hpcc:tooltip="Overrides the address used by client applications to connect to the service"/>
                                 <xs:attribute name="defaultServiceVersion" type="version" use="optional" hpcc:displayName="Default Service Version" hpcc:tooltip="The default version for WSDL, XSD and the ESP form"/>
                                 <xs:attribute name="resourcesBasedn" type="xs:string" use="optional" hpcc:displayName="" hpcc:tooltip="Base location for resources (used with ldap security)"/>
-                                <xs:attribute name="workunitsBasedn" type="xs:string" use="optional" default="ou=workunits,ou=ecl" hpcc:displayName="WorkUnits BaseDn" hpcc:tooltip="Base location for workunit resources (used with ldap security)" hpcc:requiredIf="xpath,xpath..."/>
-                                <xs:attribute name="defaultForPort" type="xs:boolean" use="required" default="true" hpcc:displayName="Default for port" hpcc:tooltip="This binding is determines root access"/>
+                                <xs:attribute name="workunitsBasedn" type="xs:string" use="optional" hpcc:presetValue="ou=workunits,ou=ecl" hpcc:displayName="WorkUnits BaseDn" hpcc:tooltip="Base location for workunit resources (used with ldap security)" hpcc:requiredIf="xpath,xpath..."/>
+                                <xs:attribute name="defaultForPort" type="xs:boolean" use="required" hpcc:presetValue="true" hpcc:displayName="Default for port" hpcc:tooltip="This binding is determines root access"/>
                                 <xs:attribute name="type" type="xs:string" use="optional" hpcc:displayName="Security Manager Plugin" hpcc:sourceKey="secmgrplugin_name" hpcc:hiddenIf="../Authentication[@method=('ldap','ldaps')]"
                                               hpcc:requiredIf="../Authentication[@method!=('ldap','ldaps')]" hpcc:tooltip="The Security Manager to be used by the Esp Service"/>
                             </xs:complexType>
@@ -100,7 +100,7 @@
 
                         <xs:element name="Authentication" hpcc:docid="ESP.t4" minOccurs="1" hpcc:class="valueSet" hpcc:displayName="Authentication">
                             <xs:complexType>
-                                <xs:attribute name="method" use="required" default="none" hpcc:displayName="Method" hpcc:modifiers="variableAttributes" hpcc:tooltip="The protocol to use for authenticating the service">
+                                <xs:attribute name="method" use="required" hpcc:presetValue="none" hpcc:displayName="Method" hpcc:modifiers="variableAttributes" hpcc:tooltip="The protocol to use for authenticating the service">
                                     <xs:simpleType>
                                         <xs:restriction base="xs:string">
                                             <xs:enumeration value="none" hpcc:description=""/>
@@ -114,7 +114,7 @@
                                 </xs:attribute>
                                 <xs:attribute name="ldapServer" type="xs:string" use="optional" hpcc:displayName="LDAP Server" hpcc:requiredIf=".[@method=('ldap','ldaps')]"
                                     hpcc:tooltip="The ldap server to be used for authentication"/>
-                                <xs:attribute name="ldapAuthMethod" type="xs:string" use="optional" default="kerberos" hpcc:displayName="LDAP Auth Method"
+                                <xs:attribute name="ldapAuthMethod" type="xs:string" use="optional" hpcc:presetValue="kerberos" hpcc:displayName="LDAP Auth Method"
                                     hpcc:requiredIf=".[@method=('ldap','ldaps')]" hpcc:tooltip="The protocol to use for LDAP authentication">
                                     <xs:simpleType>
                                         <xs:restriction base="xs:string">
@@ -123,22 +123,22 @@
                                         </xs:restriction>
                                     </xs:simpleType>
                                 </xs:attribute>
-                                <xs:attribute name="ldapConnections" type="xs:nonNegativeInteger" use="optional" default="10" hpcc:displayName="LDAP Connections"
+                                <xs:attribute name="ldapConnections" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="10" hpcc:displayName="LDAP Connections"
                                     hpcc:tooltip="Maximum number of connections to the LDAP server" hpcc:requiredIf=".[@method=('ldap','ldaps')]"/>
-                                <xs:attribute name="passwordExpirationWarningDays" type="xs:nonNegativeInteger" use="optional" default="10" hpcc:requiredIf=".[@method=('ldap','ldaps')]"
+                                <xs:attribute name="passwordExpirationWarningDays" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="10" hpcc:requiredIf=".[@method=('ldap','ldaps')]"
                                     hpcc:displayName="Passowrd Expiration Warning Days" hpcc:tooltip="In this time period, ESP displays a warning about password expiration"/>
-                                <xs:attribute name="checkViewPermissions" type="xs:boolean" use="optional" default="false" hpcc:displayName="Check View Permissions"
+                                <xs:attribute name="checkViewPermissions" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Check View Permissions"
                                     hpcc:requiredIf=".[@method=('ldap','ldaps')]" hpcc:tooltip="Enable file and column access permission checking for all view enabled queries"/>
-                                <xs:attribute name="getUserNameURL" type="xs:string" hpcc:displayName="Username URL" use="optional" default="/esp/files/GetUserName.html"
+                                <xs:attribute name="getUserNameURL" type="xs:string" hpcc:displayName="Username URL" use="optional" hpcc:presetValue="/esp/files/GetUserName.html"
                                     hpcc:requiredIf=".[@method='userNameOnly']" hpcc:tooltip="URL to getUserName"/>
-                                <xs:attribute name="getUserNameUnrestrictedResources" type="xs:string" hpcc:displayName="Unrestricted Resources Name" use="optional" default="/favicon.ico,/esp/files/*,/esp/xslt/*"
+                                <xs:attribute name="getUserNameUnrestrictedResources" type="xs:string" hpcc:displayName="Unrestricted Resources Name" use="optional" hpcc:presetValue="/favicon.ico,/esp/files/*,/esp/xslt/*"
                                     hpcc:requiredIf=".[@method='userNameOnly']" hpcc:tooltip="unrestricted resources for getUserNameURL"/>
                             </xs:complexType>
                         </xs:element>
 
                         <xs:element name="AuthDomain" minOccurs="0" maxOccurs="unbounded" hpcc:class="elementSet" hpcc:displayName="AuthDomain" hpcc:docid="ESP.t7">
                             <xs:complexType>
-                                <xs:attribute name="authType" use="required" default="AuthTypeMixed" hpcc:displayName="" hpcc:tooltip="User session Authentication type">
+                                <xs:attribute name="authType" use="required" hpcc:presetValue="AuthTypeMixed" hpcc:displayName="" hpcc:tooltip="User session Authentication type">
                                     <xs:simpleType>
                                         <xs:restriction base="xs:string">
                                             <xs:enumeration value="AuthTypeMixed" hpcc:description=""/>
@@ -148,24 +148,24 @@
                                     </xs:simpleType>
                                 </xs:attribute>
                                 <xs:attribute name="domainName" type="xs:string" use="optional" hpcc:displayName="Domain Name" hpcc:tooltip="Unique string to identify an auth domain in case > 1 domains in an esp"/>
-                                <xs:attribute name="logonURL" type="xs:string" use="optional" default="/esp/files/eclwatch/templates/Login.html" hpcc:displayName="Logon URL" hpcc:tooltip="Logon URL"/>
-                                <xs:attribute name="logoutURL" type="xs:string" use="optional" default="" hpcc:displayName="Logout URL" hpcc:tooltip="Logout URL"/>
-                                <xs:attribute name="sessionTimeoutMinutes" type="xs:integer" use="optional" default="60" hpcc:displayName="Session Timeout Minutes" hpcc:tooltip="Inactive session duration, in minutes. Specify 0 for default timeout, -1 for never timeout"/>
-                                <xs:attribute name="resourceURL" type="xs:string" use="optional" default="/favicon.ico,/esp/files/img/favicon.ico,/esp/files/eclwatch/img/Loginlogo.png,/esp/files/dojo/*,/esp/files/eclwatch/nls/*"
+                                <xs:attribute name="logonURL" type="xs:string" use="optional" hpcc:presetValue="/esp/files/eclwatch/templates/Login.html" hpcc:displayName="Logon URL" hpcc:tooltip="Logon URL"/>
+                                <xs:attribute name="logoutURL" type="xs:string" use="optional" hpcc:presetValue="" hpcc:displayName="Logout URL" hpcc:tooltip="Logout URL"/>
+                                <xs:attribute name="sessionTimeoutMinutes" type="xs:integer" use="optional" hpcc:presetValue="60" hpcc:displayName="Session Timeout Minutes" hpcc:tooltip="Inactive session duration, in minutes. Specify 0 for default timeout, -1 for never timeout"/>
+                                <xs:attribute name="resourceURL" type="xs:string" use="optional" hpcc:presetValue="/favicon.ico,/esp/files/img/favicon.ico,/esp/files/eclwatch/img/Loginlogo.png,/esp/files/dojo/*,/esp/files/eclwatch/nls/*"
                                               hpcc:displayName="Resurce URL" hpcc:tooltip="??"/>
                             </xs:complexType>
                         </xs:element>
 
                         <xs:element name="HTTPS" minOccurs="0" hpcc:class="valueSet" hpcc:requiredIf="">
                             <xs:complexType>
-                                <xs:attribute name="acceptSelfSigned" type="xs:boolean" use="optional" default="true" hpcc:displayName="Accept Self Signed" hpcc:tooltip="whether to accept self-signed certificates"/>
-                                <xs:attribute name="CA_Certificates_Path" type="xs:string" use="optional" default="ca.pem" hpcc:displayName="Certificates Path" hpcc:requiredIf="../EspBinding[@protocol='https']"
+                                <xs:attribute name="acceptSelfSigned" type="xs:boolean" use="optional" hpcc:presetValue="true" hpcc:displayName="Accept Self Signed" hpcc:tooltip="whether to accept self-signed certificates"/>
+                                <xs:attribute name="CA_Certificates_Path" type="xs:string" use="optional" hpcc:presetValue="ca.pem" hpcc:displayName="Certificates Path" hpcc:requiredIf="../EspBinding[@protocol='https']"
                                               hpcc:tooltip="path to the file that contains CA certificates"/>
-                                <xs:attribute name="certificateFileName" type="xs:string" use="optional" default="certificate.cer" hpcc:displayName="Certificate Filename" hpcc:tooltip="Name of destination file in which the certificate will be written"/>
-                                <xs:attribute name="cipherList" type="xs:string" use="optional" default="ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5"
+                                <xs:attribute name="certificateFileName" type="xs:string" use="optional" hpcc:presetValue="certificate.cer" hpcc:displayName="Certificate Filename" hpcc:tooltip="Name of destination file in which the certificate will be written"/>
+                                <xs:attribute name="cipherList" type="xs:string" use="optional" hpcc:presetValue="ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5"
                                               hpcc:displayName="Cipher List" hpcc:tooltip="Sets the ordered list of available ciphers for use by openssl.  See openssl documentation on ciphers for information on use and formatting."/>
                                 <xs:attribute name="passphrase" type="xs:string" use="optional" hpcc:modifiers="mask,verify,ignoreNoChange,encrypt" hpcc:displayName="Passphrase" hpcc:tooltip="The passphrase used to generate the private key" />
-                                <xs:attribute name="privateKeyFileName" type="xs:string" use="optional" default="privatekey.cer" hpcc:displayName="Private Key Filename" hpcc:requiredIf="../EspBinding[@protocol='https']"
+                                <xs:attribute name="privateKeyFileName" type="xs:string" use="optional" hpcc:presetValue="privatekey.cer" hpcc:displayName="Private Key Filename" hpcc:requiredIf="../EspBinding[@protocol='https']"
                                               hpcc:tooltip="Name of destination file in which the private key will be written" />
                                 <!-- The following are deprecated and marked hidden so that they don't appear to the user -->
                                 <xs:attribute name="city" hpcc:deprecated="true" hpcc:hidden="true" type="xs:string" use="optional"/>
@@ -207,31 +207,31 @@
                     <xs:attributeGroup ref="buildInfo"/>
                     <xs:attribute name="name" type="xs:string" use="required" hpcc:displayName="Name" hpcc:autoName="autoincrement=pathto where to count"
                         hpcc:uniqueKey="espprocess_name" hpcc:tooltip="Name for this process"/>
-                    <xs:attribute name="description" type="xs:string" use="optional" default="ESP server" hpcc:displayName="Description" hpcc:tooltip="Description for this process"/>
+                    <xs:attribute name="description" type="xs:string" use="optional" hpcc:presetValue="ESP server" hpcc:displayName="Description" hpcc:tooltip="Description for this process"/>
                     <xs:attribute name="daliServers" type="xs:string" use="required" hpcc:displayName="Dali Servers" hpcc:tooltip="Specifies the dali server to which this ESP is attached"/>
-                    <xs:attribute name="enableSEHMapping" type="xs:boolean" use="optional" default="true" hpcc:displayName="Enable SEH Mapping" hpcc:tooltip="Enables SEH to exception mapping" />
-                    <xs:attribute name="httpConfigAccess" type="xs:boolean" use="optional" default="true" hpcc:displayName="HTTP Config Access" hpcc:tooltip="Allows esp config file to be viewed via a web browser"/>
-                    <xs:attribute name="formOptionsAccess" type="xs:boolean" use="optional" default="false" hpcc:displayName="Form Options Access" hpcc:tooltip="Allows show Options in test form page" />
-                    <xs:attribute name="maxRequestEntityLength" type="xs:nonNegativeInteger" use="optional" default="8000000" hpcc:displayName="Max Request Entity Length" hpcc:tooltip="The maximum length of request entity allowed" />
-                    <xs:attribute name="maxConcurrentThreads" type="xs:nonNegativeInteger" use="optional" default="0" hpcc:displayName="Max Concurrent Threads" hpcc:tooltip="The maximum number of concurrent threads. 0 means unlimited" />
-                    <xs:attribute name="maxBacklogQueueSize" type="xs:nonNegativeInteger" use="optional" default="200" hpcc:displayName="Max Backlog Queue Size" hpcc:tooltip="Sets the sockets parameter for the maximum number of backlogged requests" />
-                    <xs:attribute name="perfReportDelay" type="xs:nonNegativeInteger" use="optional" default="60" hpcc:displayName="Resource Usage Stats Logging Frequency" hpcc:tooltip="Sets the frequency for logging resource usage stats" />
-                    <xs:attribute name="portalurl" type="xs:string" default="http://hpccsystems.com/download" hpcc:hidden="true" hpcc:tooltip="portal to HPCC Systems® web site" />
-                    <xs:attribute name="controlPort" type="xs:nonNegativeInteger" use="optional" default="8010" hpcc:displayName="Control Port" hpcc:uniqueKey="espprocess_controlport"
+                    <xs:attribute name="enableSEHMapping" type="xs:boolean" use="optional" hpcc:presetValue="true" hpcc:displayName="Enable SEH Mapping" hpcc:tooltip="Enables SEH to exception mapping" />
+                    <xs:attribute name="httpConfigAccess" type="xs:boolean" use="optional" hpcc:presetValue="true" hpcc:displayName="HTTP Config Access" hpcc:tooltip="Allows esp config file to be viewed via a web browser"/>
+                    <xs:attribute name="formOptionsAccess" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Form Options Access" hpcc:tooltip="Allows show Options in test form page" />
+                    <xs:attribute name="maxRequestEntityLength" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="8000000" hpcc:displayName="Max Request Entity Length" hpcc:tooltip="The maximum length of request entity allowed" />
+                    <xs:attribute name="maxConcurrentThreads" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="0" hpcc:displayName="Max Concurrent Threads" hpcc:tooltip="The maximum number of concurrent threads. 0 means unlimited" />
+                    <xs:attribute name="maxBacklogQueueSize" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="200" hpcc:displayName="Max Backlog Queue Size" hpcc:tooltip="Sets the sockets parameter for the maximum number of backlogged requests" />
+                    <xs:attribute name="perfReportDelay" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="60" hpcc:displayName="Resource Usage Stats Logging Frequency" hpcc:tooltip="Sets the frequency for logging resource usage stats" />
+                    <xs:attribute name="portalurl" type="xs:string" hpcc:presetValue="http://hpccsystems.com/download" hpcc:hidden="true" hpcc:tooltip="portal to HPCC Systems® web site" />
+                    <xs:attribute name="controlPort" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="8010" hpcc:displayName="Control Port" hpcc:uniqueKey="espprocess_controlport"
                         hpcc:tooltip="Sets the network port for ESP control" />
-                    <xs:attribute name="logLevel" type="xs:nonNegativeInteger" use="optional" default="1" hpcc:displayName="Log Level" hpcc:tooltip="ets the log level [0: none, 1: min, 5: noraml, 10: max]" />
-                    <xs:attribute name="componentfilesDir" type="xs:string" use="optional" default="${COMPONENTFILES_PATH}" hpcc:displayName="Component Files Dir" hpcc:tooltip="Sets the componentfiles directory" />
-                    <xs:attribute name="logRequests" type="xs:boolean" use="optional" default="true" hpcc:displayName="Log Requests"/>
-                    <xs:attribute name="logResponses" type="xs:boolean" use="optional" default="false" hpcc:displayName="Log Responses"/>
-                    <xs:attribute name="txSummaryLevel" type="xs:nonNegativeInteger" use="optional" default="1" hpcc:displayName="Tx Summary Level" hpcc:tooltip="Sets the TxSummary level [0: none, 1: min, 5: noraml, 10: max]" />
-                    <xs:attribute name="txSummaryResourceReq" type="xs:boolean" use="optional" default="false" hpcc:displayName="Tx Summary Resource Req" hpcc:tooltip="Log TxSummary for Resource Requests" />
+                    <xs:attribute name="logLevel" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="1" hpcc:displayName="Log Level" hpcc:tooltip="ets the log level [0: none, 1: min, 5: noraml, 10: max]" />
+                    <xs:attribute name="componentfilesDir" type="xs:string" use="optional" hpcc:presetValue="${COMPONENTFILES_PATH}" hpcc:displayName="Component Files Dir" hpcc:tooltip="Sets the componentfiles directory" />
+                    <xs:attribute name="logRequests" type="xs:boolean" use="optional" hpcc:presetValue="true" hpcc:displayName="Log Requests"/>
+                    <xs:attribute name="logResponses" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Log Responses"/>
+                    <xs:attribute name="txSummaryLevel" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="1" hpcc:displayName="Tx Summary Level" hpcc:tooltip="Sets the TxSummary level [0: none, 1: min, 5: noraml, 10: max]" />
+                    <xs:attribute name="txSummaryResourceReq" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Tx Summary Resource Req" hpcc:tooltip="Log TxSummary for Resource Requests" />
                     <xs:attribute name="espCacheInitString" type="xs:string" use="optional" hpcc:displayName="Cache Init String" hpcc:tooltip="String used for initializing ESP cache client"/>
                     <xs:attribute name="checkSessionTimeoutSeconds" type="xs:nonNegativeInteger" use="optional" hpcc:displayName="Check Session Timeout(s)" hpcc:tooltip="Check Session Timeout in every given seconds"/>
                     <xs:attribute name="urlAlias" type="xs:string" use="optional" hpcc:displayName="URL Alias" hpcc:tooltip="The URL alias for this ESP. This can be used to detect Cross-Origin Resource Sharing (CORS) access"/>
-                    <xs:attribute name="PageCacheTimeoutSeconds" type="xs:nonNegativeInteger" use="optional" hpcc:diaplayName="Page Cache Timeout(s)" default="600" hpcc:tooltip="Paging data timeout in the given seconds"/>
-                    <xs:attribute name="MaxPageCacheItems" type="xs:nonNegativeInteger" use="optional" hpcc:displayName="Max Page Cache Items" default="1000" hpcc:tooltip="The maximum number of cached items inside one page cache. 0 means no cache"/>
-                    <xs:attribute name="maxPersistentIdleTime" type="xs:integer" use="optional" hpcc:displayName="Max Persistent Idle Time(s)" default="60" hpcc:tooltip="The maximum idle time in seconds (-1 for unlimited, 0 to disable)"/>
-                    <xs:attribute name="maxPersistentRequests" type="xs:integer" use="optional" hpcc:displayName="Max Persistent Requests" default="100" hpcc:tooltip="Maximum number of query requests per persistent http connection. (-1 for unlimited, 0 to disable)"/>
+                    <xs:attribute name="PageCacheTimeoutSeconds" type="xs:nonNegativeInteger" use="optional" hpcc:diaplayName="Page Cache Timeout(s)" hpcc:presetValue="600" hpcc:tooltip="Paging data timeout in the given seconds"/>
+                    <xs:attribute name="MaxPageCacheItems" type="xs:nonNegativeInteger" use="optional" hpcc:displayName="Max Page Cache Items" hpcc:presetValue="1000" hpcc:tooltip="The maximum number of cached items inside one page cache. 0 means no cache"/>
+                    <xs:attribute name="maxPersistentIdleTime" type="xs:integer" use="optional" hpcc:displayName="Max Persistent Idle Time(s)" hpcc:presetValue="60" hpcc:tooltip="The maximum idle time in seconds (-1 for unlimited, 0 to disable)"/>
+                    <xs:attribute name="maxPersistentRequests" type="xs:integer" use="optional" hpcc:displayName="Max Persistent Requests" hpcc:presetValue="100" hpcc:tooltip="Maximum number of query requests per persistent http connection. (-1 for unlimited, 0 to disable)"/>
 
                 </xs:complexType>
 

+ 20 - 20
initfiles/componentfiles/configschema/xsd/esp_service_smc.xsd

@@ -6,22 +6,22 @@
     <xs:complexType name="espsmc">
 
         <xs:attributeGroup name="monitoring" hpcc:groupByName="Monitoring" hpcc:docid="SMC-T02">
-            <xs:attribute name="monitorDaliFileServer" type="xs:boolean" use="true" default="false" hpcc:displayName="Monior Dali File Server" hpcc:tooltip="Warn if dafilesrv process is not running on computers"/>
-            <xs:attribute name="excludePartitions" type="xs:string" use="optional" default="/dev*,/sys,/proc/*" hpcc:displayName="Exclude Partitions" hpcc:tooltip="Comma, space or semicolon delimited list of partitions not to be monitored for free space"/>
-            <xs:attribute name="warnIfCpuLoadOver" type="xs:nonNegativeInteger" use="optional" default="95" hpcc:displayName="Warn CPU Load" hpcc:tooltip="CPU load over this value is flagged as warning in monitoring output"/>
-            <xs:attribute name="warnIfFreeStorageUnder" type="xs:nonNegativeInteger" use="optional" default="5" hpcc:displayName="Warn Free Storage" hpcc:tooltip="Available disk storage space under this value is flagged as warning in monitoring output"/>
-            <xs:attribute name="warnIfFreeMemoryUnder" type="xs:nonNegativeInteger" use="optional" default="5" hpcc:displayName="Warn Free Memory" hpcc:tooltip="Available memory under this value is flagged as warning in monitoring output"/>
+            <xs:attribute name="monitorDaliFileServer" type="xs:boolean" use="true" hpcc:presetValue="false" hpcc:displayName="Monior Dali File Server" hpcc:tooltip="Warn if dafilesrv process is not running on computers"/>
+            <xs:attribute name="excludePartitions" type="xs:string" use="optional" hpcc:presetValue="/dev*,/sys,/proc/*" hpcc:displayName="Exclude Partitions" hpcc:tooltip="Comma, space or semicolon delimited list of partitions not to be monitored for free space"/>
+            <xs:attribute name="warnIfCpuLoadOver" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="95" hpcc:displayName="Warn CPU Load" hpcc:tooltip="CPU load over this value is flagged as warning in monitoring output"/>
+            <xs:attribute name="warnIfFreeStorageUnder" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="5" hpcc:displayName="Warn Free Storage" hpcc:tooltip="Available disk storage space under this value is flagged as warning in monitoring output"/>
+            <xs:attribute name="warnIfFreeMemoryUnder" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="5" hpcc:displayName="Warn Free Memory" hpcc:tooltip="Available memory under this value is flagged as warning in monitoring output"/>
         </xs:attributeGroup>
 
         <xs:attributeGroup name="elkintegration">
-            <xs:attribute name="integrateKibana" type="xs:boolean" use="required"  default="false" hpcc:tooltip="Declare if Kibana dashboard to be integrated in ECLWatch"/>
-            <xs:attribute name="kibanaAddress" type="xs:string" use="optional" hpcc:defaultInCode="localhost" hpcc:tooltip="Address (ip/hostname) of Kibana server"/>
-            <xs:attribute name="kibanaPort" type="xs:nonNegativeInteger" use="optional" hpcc:defaultInCode="5601" hpcc:tooltip="Port number of target Kibana server"/>
+            <xs:attribute name="integrateKibana" type="xs:boolean" use="required" hpcc:presetValue="false" hpcc:tooltip="Declare if Kibana dashboard to be integrated in ECLWatch"/>
+            <xs:attribute name="kibanaAddress" type="xs:string" use="optional" hpcc:presetValue="localhost" hpcc:tooltip="Address (ip/hostname) of Kibana server"/>
+            <xs:attribute name="kibanaPort" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="5601" hpcc:tooltip="Port number of target Kibana server"/>
             <xs:attribute name="kibanaEntryPointURI" type="xs:string" hpcc:tooltip="Declares the ECLWatch integration entry point URI for the target Kibana dashboard"/>
-            <xs:attribute name="reportLogStashHealth" type="xs:boolean" use="required" hpcc:defaultInCode="true" hpcc:tooltip="Declare if connectivity to LogStash nodes is to be reported in ECLWatch"/>
+            <xs:attribute name="reportLogStashHealth" type="xs:boolean" use="required" hpcc:presetValue="true" hpcc:tooltip="Declare if connectivity to LogStash nodes is to be reported in ECLWatch"/>
             <xs:attribute name="logStashAdresses" type="xs:string" use="optional" hpcc:tooltip="Declares the target LogStash nodes' adresses (semicolon seperated)"/>
             <xs:attribute name="logStashPort" type="xs:nonNegativeInteger" use="optional" hpcc:tooltip="Declares the target LogStash nodes' port"/>
-            <xs:attribute name="reportElasticHealth" type="xs:boolean" use="required" hpcc:defaultInCode="true" hpcc:tooltip="Declare if connectivity to Elastic Search nodes is to be reported in ECLWatch"/>
+            <xs:attribute name="reportElasticHealth" type="xs:boolean" use="required" hpcc:presetValue="true" hpcc:tooltip="Declare if connectivity to Elastic Search nodes is to be reported in ECLWatch"/>
             <xs:attribute name="elasticSearchAdresses" type="xs:string" use="optional" hpcc:tooltip="Declares the target ElasticSearch nodes' adresses (semicolon seperated)"/>
             <xs:attribute name="elasticSearchPort" type="xs:string" use="optional" hpcc:tooltip="Declares the target LogStash nodes' port"/>
         </xs:attributeGroup>
@@ -143,18 +143,18 @@
                         hpcc:uniqueKey="espservice_name" hpcc:tooltip="Name for this ESP service" />
                     <xs:attribute name="description" type="xs:string" use="optional" hpcc:displayName="Description" hpcc:tooltip="Description for this process" />
                     <xs:attribute name="syntaxCheckQueue" type="xs:string" use="optional" hpcc:displayName="Syntax Check Queue" hpcc:tooltip="Queue Name of ECL server which is used for ECL Syntax Check" />
-                    <xs:attribute name="pluginsPath" type="xs:string" use="optional" default="${PLUGINS_PATH}" hpcc:displayName="Plugins Path" hpcc:tooltip="Path where plugin files are deployed" />
-                    <xs:attribute name="viewTimeout" type="xs:nonNegativeInteger" use="optional" default="1000" hpcc:displayName="View Timeout" hpcc:tooltip="timeout for XXXX (in seconds)" />
-                    <xs:attribute name="clusterQueryStateThreadPoolSize" type="xs:nonNegativeInteger" use="optional"  default="25" hpcc:displayName="" hpcc:tooltip="Default thread pool size for checking query state on clusters" />
-                    <xs:attribute name="AWUsCacheTimeout" type="xs:nonNegativeInteger" use="optional" default="15" hpcc:displayName="AWUs Cache Timeout" hpcc:tooltip="timeout for archived WU search cache (in minutes)" />
-                    <xs:attribute name="NodeGroupCacheMinutes" type="xs:nonNegativeInteger" use="optional" default="30" hpcc:displayName="Node Group Cache Minutes" hpcc:tooltip="timeout for node group cache (in minutes)" />
-                    <xs:attribute name="ActivityInfoCacheSeconds" type="xs:nonNegativeInteger" use="optional" default="10" hpcc:displayName="Activity Info Cache Sectonds" hpcc:tooltip="timeout for activity info cache (in seconds)" />
+                    <xs:attribute name="pluginsPath" type="xs:string" use="optional" hpcc:presetValue="${PLUGINS_PATH}" hpcc:displayName="Plugins Path" hpcc:tooltip="Path where plugin files are deployed" />
+                    <xs:attribute name="viewTimeout" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="1000" hpcc:displayName="View Timeout" hpcc:tooltip="timeout for XXXX (in seconds)" />
+                    <xs:attribute name="clusterQueryStateThreadPoolSize" type="xs:nonNegativeInteger" use="optional"  hpcc:presetValue="25" hpcc:displayName="" hpcc:tooltip="Default thread pool size for checking query state on clusters" />
+                    <xs:attribute name="AWUsCacheTimeout" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="15" hpcc:displayName="AWUs Cache Timeout" hpcc:tooltip="timeout for archived WU search cache (in minutes)" />
+                    <xs:attribute name="NodeGroupCacheMinutes" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="30" hpcc:displayName="Node Group Cache Minutes" hpcc:tooltip="timeout for node group cache (in minutes)" />
+                    <xs:attribute name="ActivityInfoCacheSeconds" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="10" hpcc:displayName="Activity Info Cache Sectonds" hpcc:tooltip="timeout for activity info cache (in seconds)" />
                     <xs:attribute name="serverForArchivedECLWU" type="xs:string" use="optional" hpcc:displayName="Server For Archived ECLWU" hpcc:tooltip="Specify Sasha server for archiving ECL workunits" />
-                    <xs:attribute name="enableSystemUseRewrite" type="xs:boolean" use="optional" default="false" hpcc:displayName="Enable system Use Rewrite" hpcc:tooltip="To disable ESP Service links for System Servers that use rewrite rules" />
+                    <xs:attribute name="enableSystemUseRewrite" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Enable system Use Rewrite" hpcc:tooltip="To disable ESP Service links for System Servers that use rewrite rules" />
                     <xs:attribute name="defaultTargetCluster" type="xs:string" use="optional" hpcc:displayName="Default Target Cluster" hpcc:tooltip="Default target for published queries" />
-                    <xs:attribute name="disableUppercaseTranslation" type="xs:boolean" use="optional" default="false" hpcc:displayName="Disable Uppercase Translation" hpcc:tooltip="To disable upper case translation for filter values in ViewKeyFile function" />
-                    <xs:attribute name="enableLogDaliConnection" type="xs:boolean" use="optional" default="false" hpcc:displayName="Enable Log Dali Connection" hpcc:tooltip="Enable ESP/Dali Connection ID to be logged into esp.xml" />
-                    <xs:attribute name="allowNewRoxieOnDemandQuery" type="xs:boolean" use="optional" default="false" hpcc:displayName="Allow New Roxie On Demand Query" hpcc:tooltip="allow new queries to be used by roxie on demand and roxie browser" />
+                    <xs:attribute name="disableUppercaseTranslation" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Disable Uppercase Translation" hpcc:tooltip="To disable upper case translation for filter values in ViewKeyFile function" />
+                    <xs:attribute name="enableLogDaliConnection" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Enable Log Dali Connection" hpcc:tooltip="Enable ESP/Dali Connection ID to be logged into esp.xml" />
+                    <xs:attribute name="allowNewRoxieOnDemandQuery" type="xs:boolean" use="optional" hpcc:presetValue="false" hpcc:displayName="Allow New Roxie On Demand Query" hpcc:tooltip="allow new queries to be used by roxie on demand and roxie browser" />
                     <xs:attributeGroup ref="monitoring"/>
                     <xs:attributeGroup ref="elkintegration"/>
 

+ 5 - 5
initfiles/componentfiles/configschema/xsd/esp_service_wsecl2.xsd

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema
-    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormhpcc:presetValue="qualified" attributeFormhpcc:presetValue="unqualified"
     xmlns:hpcc="someuri">
     <xs:include schemaLocation="types.xsd"/>
     <xs:complexType name="ws_ecl">
@@ -16,7 +16,7 @@
                                 <xs:attribute name="vip" type="xs:string" use="required" hpcc:displayName="VIP" hpcc:tooltip=""/>
                                 <xs:attribute name="dnsInterval" type="xs:integer" use="optional" hpcc:displayName="DNS Cache timeout interval"
                                               hpcc:tooltip="DNS lookup cache timeout in seconds. Set to 0 to resolve DNS for every transaction.  Set to -1 (default) to keep DNS lookup cached indefinitely."/>
-                                <xs:attribute name="sendTargetToRoxie" type="xs:boolean" use="optional" hpcc:displayName="Send Target To Roxie" default="true"
+                                <xs:attribute name="sendTargetToRoxie" type="xs:boolean" use="optional" hpcc:displayName="Send Target To Roxie" hpcc:presetValue="true"
                                               hpcc:tooltip="Send roxie the target from which to run query (disable for backward compatibility issues)"/>
                             </xs:complexType>
                         </xs:element>
@@ -32,10 +32,10 @@
                     <xs:attributeGroup ref="buildInfo"/>
                     <xs:attribute name="name" type="xs:string" use="required" hpcc:autogenerateType="Prefix" hpcc:autoGenerateValue="wsecl" hpcc:displayName="Service Name"
                         hpcc:uniqueKey="espservice_key" hpcc:tooltip="Name for this ESP service" />
-                    <xs:attribute name="description" type="xs:string" use="optional" default="WS ECL Service" hpcc:displayName="Description" hpcc:tooltip="Allows creation of web services using ECL language" />
-                    <xs:attribute name="roxieTimeout" type="xs:unsignedInt" use="optional" default="300" hpcc:displayName="Roxie Timeout"
+                    <xs:attribute name="description" type="xs:string" use="optional" hpcc:presetValue="WS ECL Service" hpcc:displayName="Description" hpcc:tooltip="Allows creation of web services using ECL language" />
+                    <xs:attribute name="roxieTimeout" type="xs:unsignedInt" use="optional" hpcc:presetValue="300" hpcc:displayName="Roxie Timeout"
                                   hpcc:tooltip="Timeout (in seconds) for WsEcl connections to roxie (0 == wait forever)" />
-                    <xs:attribute name="workunitTimeout" type="xs:unsignedInt" use="optional" default="600" hpcc:displayName="Workunit Timeout"
+                    <xs:attribute name="workunitTimeout" type="xs:unsignedInt" use="optional" hpcc:presetValue="600" hpcc:displayName="Workunit Timeout"
                                   hpcc:tooltip="Timeout (in seconds), for WsEcl to wait for workunit to complete (0 == wait forever)" />
 
                     <xs:complexType name="espservice_options"/>

+ 15 - 15
initfiles/componentfiles/configschema/xsd/ldapserver.xsd

@@ -31,24 +31,24 @@
                     <xs:attributeGroup ref="buildInfo"/>
                     <xs:attribute name="name" type="xs:string" use="required" hpcc:displayName="Name" hpcc:autoGenerateType="prefix" hpcc:autoGenerateValue="LDAP"
                         hpcc:uniqueKey="ldapserverprocess_name" hpcc:tooltip="Name for this process" />
-                    <xs:attribute name="description" type="xs:string" hpcc:displayName="Description" use="optional" default="LDAP server process" hpcc:tooptip="Description for this process"/> <!-- cant have default and optional -->
-                    <xs:attribute name="ldapPort" type="xs:nonNegativeInteger" hpcc:displayName="LDAP Port" use="required" default="389" hpcc:tooltip="The port of the ldap (Active Directory) server"/> <!-- key required ? -->
-                    <xs:attribute name="ldapSecurePort" type="xs:nonNegativeInteger" hpcc:displayName="LDAP Secure Port" use="required" default="636" hpcc:tooltip="The port of the ldap (Active Directory) server"/> <!-- key ? -->
-                    <xs:attribute name="ldapTimeoutSecs" type="xs:nonNegativeInteger" hpcc:displayName="Timeout (secs)" use="required" default="60" hpcc:tooltip="The maximum number of seconds to wait for most LDAP calls"/>  <!-- range? -->
-                    <xs:attribute name="cacheTimeout" type="xs:nonNegativeInteger" hpcc:displayName="Cache Timeout (minutes)" use="optional" default="5" hpcc:tooltip="Time in minutes after which the cached security information should expire"/>
-                    <xs:attribute name="sharedCache" type="xs:boolean" hpcc:displayName="Shared Cache" use="optional" default="true" hpcc:tooltip="Use a single, shared LDAP cache"/>
+                    <xs:attribute name="description" type="xs:string" hpcc:displayName="Description" use="optional" hpcc:presetValue="LDAP server process" hpcc:tooptip="Description for this process"/> <!-- cant have default and optional -->
+                    <xs:attribute name="ldapPort" type="xs:nonNegativeInteger" hpcc:displayName="LDAP Port" use="required" hpcc:presetValue="389" hpcc:tooltip="The port of the ldap (Active Directory) server"/> <!-- key required ? -->
+                    <xs:attribute name="ldapSecurePort" type="xs:nonNegativeInteger" hpcc:displayName="LDAP Secure Port" use="required" hpcc:presetValue="636" hpcc:tooltip="The port of the ldap (Active Directory) server"/> <!-- key ? -->
+                    <xs:attribute name="ldapTimeoutSecs" type="xs:nonNegativeInteger" hpcc:displayName="Timeout (secs)" use="required" hpcc:presetValue="60" hpcc:tooltip="The maximum number of seconds to wait for most LDAP calls"/>  <!-- range? -->
+                    <xs:attribute name="cacheTimeout" type="xs:nonNegativeInteger" hpcc:displayName="Cache Timeout (minutes)" use="optional" hpcc:presetValue="5" hpcc:tooltip="Time in minutes after which the cached security information should expire"/>
+                    <xs:attribute name="sharedCache" type="xs:boolean" hpcc:displayName="Shared Cache" use="optional" hpcc:presetValue="true" hpcc:tooltip="Use a single, shared LDAP cache"/>
                     <xs:attribute name="systemUser" type="xs:string" hpcc:displayName="System User" use="optional" hpcc:tooltip="An LDAP administrator account id to be used by HPCC to create and manage HPCC-specific LDAP branches"/>
                     <xs:attribute name="systemPassword" type="xs:string" hpcc:displayName="System User Password" use="optional" hpcc:modifers="mask,verify" hpcc:tooltip="The password for the systemUser"/>
                     <xs:attribute name="systemCommonName" type="xs:string" hpcc:displayName="System Common Name" use="optional" hpcc:requiredIf=".@systemUser" hpcc:tooltip="Required if systemUser is specified. The LDAP Common Name (cn) for the systemUser account as specified on the LDAP server"/>
-                    <xs:attribute name="systemBasedn" type="xs:string" hpcc:displayName="System Base DN" use="required" default="cn=Users" hpcc:tooltip="The ldap 'base distinguished name' of the systemUser"/>
-                    <xs:attribute name="groupsBasedn" type="xs:string" hpcc:displayName="Groups Base DN" use="required" default="ou=groups,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up groups in the ldap (Active Directory) server"/>
-                    <xs:attribute name="viewsBasedn" type="xs:string" hpcc:displayName="Views Base DN" use="required" default="ou=views,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up views in the ldap (Active Directory) server"/>
-                    <xs:attribute name="usersBasedn" type="xs:string" hpcc:displayName="Users Base DN" use="required" default="ou=users,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up users in the ldap (Active Directory) server"/>
-                    <xs:attribute name="modulesBasedn" type="xs:string" hpcc:displayName="Modules Base DN" use="required" default="ou=modules,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up modules in the ldap (Active Directory) server"/>
-                    <xs:attribute name="workunitsBasedn" type="xs:string" hpcc:displayName="Workunits Base DN" use="required" default="ou=workunits,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up workunit scopes in the ldap (Active Directory) server"/>
-                    <xs:attribute name="filesBasedn" type="xs:string" hpcc:displayName="Files Base DN" use="required" default="ou=files,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up file scopes in the ldap (Active Directory) server"/>
-                    <xs:attribute name="sudoersBasedn" type="xs:string" hpcc:displayName="Sudoers Base DN" use="optional" default="ou=SUDOers" hpcc:tooltip="The place to hold the sudoers entries"/>
-                    <xs:attribute name="serverType" use="required" hpcc:displayName="Server Type" default="ActiveDirectory" hpcc:tooltip="LDAP Server Implementation Type">
+                    <xs:attribute name="systemBasedn" type="xs:string" hpcc:displayName="System Base DN" use="required" hpcc:presetValue="cn=Users" hpcc:tooltip="The ldap 'base distinguished name' of the systemUser"/>
+                    <xs:attribute name="groupsBasedn" type="xs:string" hpcc:displayName="Groups Base DN" use="required" hpcc:presetValue="ou=groups,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up groups in the ldap (Active Directory) server"/>
+                    <xs:attribute name="viewsBasedn" type="xs:string" hpcc:displayName="Views Base DN" use="required" hpcc:presetValue="ou=views,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up views in the ldap (Active Directory) server"/>
+                    <xs:attribute name="usersBasedn" type="xs:string" hpcc:displayName="Users Base DN" use="required" hpcc:presetValue="ou=users,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up users in the ldap (Active Directory) server"/>
+                    <xs:attribute name="modulesBasedn" type="xs:string" hpcc:displayName="Modules Base DN" use="required" hpcc:presetValue="ou=modules,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up modules in the ldap (Active Directory) server"/>
+                    <xs:attribute name="workunitsBasedn" type="xs:string" hpcc:displayName="Workunits Base DN" use="required" hpcc:presetValue="ou=workunits,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up workunit scopes in the ldap (Active Directory) server"/>
+                    <xs:attribute name="filesBasedn" type="xs:string" hpcc:displayName="Files Base DN" use="required" hpcc:presetValue="ou=files,ou=ecl" hpcc:tooltip="The ldap 'base distinguished name' that ecl server should use when looking up file scopes in the ldap (Active Directory) server"/>
+                    <xs:attribute name="sudoersBasedn" type="xs:string" hpcc:displayName="Sudoers Base DN" use="optional" hpcc:presetValue="ou=SUDOers" hpcc:tooltip="The place to hold the sudoers entries"/>
+                    <xs:attribute name="serverType" use="required" hpcc:displayName="Server Type" hpcc:presetValue="ActiveDirectory" hpcc:tooltip="LDAP Server Implementation Type">
                         <xs:simpleType>
                             <xs:restriction base="xs:string">
                                 <xs:enumeration value="ActiveDirectory" hpcc:displayName="" hpcc:description=""/>

+ 150 - 153
initfiles/componentfiles/configschema/xsd/roxie.xsd

@@ -23,14 +23,14 @@
     <xs:complexType name="roxiecluster">
 
         <xs:attributeGroup name="ldap" hpcc:groupByName="LDAP">
-            <xs:attribute name="ldapUser" type="xs:string" hpcc:displayName="LDAP User" use="optional" default="roxie" hpcc:tooltip="Specifies the user name for LDAP file access checking"/>
+            <xs:attribute name="ldapUser" type="xs:string" hpcc:displayName="LDAP User" use="optional" hpcc:presetValue="roxie" hpcc:tooltip="Specifies the user name for LDAP file access checking"/>
             <xs:attribute name="ldapPassword" type="xs:string" hpcc:displayName="LDAP User Password" use="optional" hpcc:modifiers="mask,verify" hpcc:tooltip="Specifies the user name for LDAP file access checking"/>
         </xs:attributeGroup>
 
         <xs:attributeGroup name="options" hpcc:groupByName="Options">
-            <xs:attribute name="affinity" type="xs:nonNegativeInteger" hpcc:displayName="Affinity" use="optional" default="0" hpcc:tooltip="If non-zero, binds the roxie process to use the specified cores only (bitmask)"/>
-            <xs:attribute name="allFilesDynamic" type="xs:boolean" hpcc:displayName="All Files Dynamic" use="optional" default="false" hpcc:tooltip="If enabled, files will be resolved per-query and not locked between queries"/>
-            <xs:attribute name="backgroundCopyClass" hpcc:displayName="Background Copy Class" default="none" hpcc:tooltip="Specify an IONICE class for the background copy thread">
+            <xs:attribute name="affinity" type="xs:nonNegativeInteger" hpcc:displayName="Affinity" use="optional" hpcc:presetValue="0" hpcc:tooltip="If non-zero, binds the roxie process to use the specified cores only (bitmask)"/>
+            <xs:attribute name="allFilesDynamic" type="xs:boolean" hpcc:displayName="All Files Dynamic" use="optional" hpcc:presetValue="false" hpcc:tooltip="If enabled, files will be resolved per-query and not locked between queries"/>
+            <xs:attribute name="backgroundCopyClass" hpcc:displayName="Background Copy Class" hpcc:presetValue="none" hpcc:tooltip="Specify an IONICE class for the background copy thread">
                 <xs:simpleType>
                     <xs:restriction base="xs:string">
                         <xs:enumeration value="none" hpcc:displayName="None" hpcc:description=""/>
@@ -39,7 +39,7 @@
                     </xs:restriction>
                 </xs:simpleType>
             </xs:attribute>
-            <xs:attribute name="backgroundCopyPrio" hpcc:displayName="Background Copy Priority" use="optional" default="0" hpcc:tooltip="Specify an IONICE value for the background copy thread, if backgroundCopyClass set to best-effort">
+            <xs:attribute name="backgroundCopyPrio" hpcc:displayName="Background Copy Priority" use="optional" hpcc:presetValue="0" hpcc:tooltip="Specify an IONICE value for the background copy thread, if backgroundCopyClass set to best-effort">
                 <!-- Is this value required if the backgroundcopyclass is set to a particular value -->
                 <xs:simpleType>
                     <!-- This is how to do a range, If not desired, add type="xs:nonNegativeInteger" above and remove the simpleType section -->
@@ -49,27 +49,27 @@
                     </xs:restriction>
                 </xs:simpleType>
             </xs:attribute>
-            <xs:attribute name="callbackRetries" type="xs:nonNegativeInteger" hpcc:displayName="Callback Retries" use="optional" default="3" hpcc:tooltip="Number of retries before callbacks from agents to server are aborted"/>
-            <xs:attribute name="callbackTimeout" type="xs:nonNegativeInteger" hpcc:displayName="Callback Timeout" use="optional" default="5000" hpcc:tooltip="Timeout (in ms) before callbacks from agents to server are resent"/>
+            <xs:attribute name="callbackRetries" type="xs:nonNegativeInteger" hpcc:displayName="Callback Retries" use="optional" hpcc:presetValue="3" hpcc:tooltip="Number of retries before callbacks from agents to server are aborted"/>
+            <xs:attribute name="callbackTimeout" type="xs:nonNegativeInteger" hpcc:displayName="Callback Timeout" use="optional" hpcc:presetValue="5000" hpcc:tooltip="Timeout (in ms) before callbacks from agents to server are resent"/>
             <!-- range? -->
-            <xs:attribute name="checkFileDate" type="xs:boolean" hpcc:displayName="Check File Date" use="optional" default="true" hpcc:tooltip="Compare file dates of physical files with the information in DFS"/>
-            <xs:attribute name="collectFactoryStatistics" type="xs:boolean" hpcc:displayName="Gather Factory Statistics" use="optional" default="true" hpcc:tooltip="Accumulate summary statistics for all queries"/>
-            <xs:attribute name="copyResources" type="xs:boolean" hpcc:displayName="Copy Resources" use="optional" default="true" hpcc:tooltip="Copies any missing data files/keys from the position they were in when query was deployed"/>
-            <xs:attribute name="coresPerQuery" type="xs:nonNegativeInteger" hpcc:displayName="Cores Per Query" use="optional" default="0" hpcc:tooltip="If non-zero, binds each incoming query to use the specified number of cores only"/>
-            <xs:attribute name="debugPermitted" type="xs:boolean" hpcc:displayName="Debug Permitted" use="optional" default="true" hpcc:tooltip="Allow the ECL query debugger to attach to queries on this Roxie"/>
-            <xs:attribute name="defaultHighPriorityTimeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default High Priority Time Limit (ms)" use="optional" default="0" hpcc:tooltip="Maximum run time (in ms) for any single active high-priority query (if not overriden)"/>
+            <xs:attribute name="checkFileDate" type="xs:boolean" hpcc:displayName="Check File Date" use="optional" hpcc:presetValue="true" hpcc:tooltip="Compare file dates of physical files with the information in DFS"/>
+            <xs:attribute name="collectFactoryStatistics" type="xs:boolean" hpcc:displayName="Gather Factory Statistics" use="optional" hpcc:presetValue="true" hpcc:tooltip="Accumulate summary statistics for all queries"/>
+            <xs:attribute name="copyResources" type="xs:boolean" hpcc:displayName="Copy Resources" use="optional" hpcc:presetValue="true" hpcc:tooltip="Copies any missing data files/keys from the position they were in when query was deployed"/>
+            <xs:attribute name="coresPerQuery" type="xs:nonNegativeInteger" hpcc:displayName="Cores Per Query" use="optional" hpcc:presetValue="0" hpcc:tooltip="If non-zero, binds each incoming query to use the specified number of cores only"/>
+            <xs:attribute name="debugPermitted" type="xs:boolean" hpcc:displayName="Debug Permitted" use="optional" hpcc:presetValue="true" hpcc:tooltip="Allow the ECL query debugger to attach to queries on this Roxie"/>
+            <xs:attribute name="defaultHighPriorityTimeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default High Priority Time Limit (ms)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Maximum run time (in ms) for any single active high-priority query (if not overriden)"/>
             <!-- range? -->
-            <xs:attribute name="defaultHighPriorityTimeWarning" type="xs:nonNegativeInteger" hpcc:displayName="Default High Priority Time Warning (ms)" use="optional" default="5000" hpcc:tooltip="Time (in ms) before generating SNMP warning for a high-priority query (if not overriden)"/>
-            <xs:attribute name="defaultLowPriorityTimeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default Low Priority Time Limit (ms)" use="optional" default="0" hpcc:tooltip="Maximum run time (in ms) for any single active low-priority query (if not overriden)"/>
-            <xs:attribute name="defaultLowPriorityTimeWarning" type="xs:nonNegativeInteger" hpcc:displayName="Default Low Priority Time Warning (ms)" use="optional" default="0" hpcc:tooltip="Time (in ms) before generating SNMP warning for a low-priority query (if not overriden)"/>
-            <xs:attribute name="defaultMemoryLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default Memory Limit (bytes)" use="optional" default="0" hpcc:tooltip="Maximum amount of memory available for row data in any single active query (if not overriden)"/>
-            <xs:attribute name="defaultSLAPriorityTimeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default SLA Priority Time Limit (ms)" use="optional" default="0" hpcc:tooltip="Maximum run time (in ms) for any single active SLA-high-priority query (if not overriden)"/>
-            <xs:attribute name="defaultSLAPriorityTimeWarning" type="xs:nonNegativeInteger" hpcc:displayName="Default SLA Priority Time Warning (ms)" use="optional" default="5000" hpcc:tooltip="Time (in ms) before generating SNMP warning for a SLA-high-priority query (if not overriden)"/>
-            <xs:attribute name="defaultStripLeadingWhitespace" type="xs:boolean" hpcc:displayName="Default Strip Leading Whitespace" use="optional" default="true" hpcc:tooltip="Default value for stripping leading whitespace in input XML values"/>
-            <xs:attribute name="enableKeyDiff" type="xs:boolean" hpcc:displayName="Enable Key Diff" use="optional" default="true" hpcc:tooltip="Enable / Disable key diff functionality in roxie"/>
-            <xs:attribute name="enableSysLog" type="xs:boolean" hpcc:displayName="Enable Sys Log" use="optional" default="true" hpcc:tooltip="Enable use of syslog for monitoring"/>
-            <xs:attribute name="flushJHtreeCacheOnOOM" type="xs:boolean" hpcc:displayName="flushJHtreeCacheOnOOM" use="optional" default="true" hpcc:tooltip="Should the index node memory allocation flush the cache and retry if memory allocation fails"/>
-            <xs:attribute name="fieldTranslationEnabled" use="optional" hpcc:displayName="Enable Field Translation" default="false" hpcc:tooltip="Enables translation (where possible) of mismatched index layouts on-the-fly. Specify 'payload' to attempt to translate payload fields only">
+            <xs:attribute name="defaultHighPriorityTimeWarning" type="xs:nonNegativeInteger" hpcc:displayName="Default High Priority Time Warning (ms)" use="optional" hpcc:presetValue="5000" hpcc:tooltip="Time (in ms) before generating SNMP warning for a high-priority query (if not overriden)"/>
+            <xs:attribute name="defaultLowPriorityTimeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default Low Priority Time Limit (ms)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Maximum run time (in ms) for any single active low-priority query (if not overriden)"/>
+            <xs:attribute name="defaultLowPriorityTimeWarning" type="xs:nonNegativeInteger" hpcc:displayName="Default Low Priority Time Warning (ms)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Time (in ms) before generating SNMP warning for a low-priority query (if not overriden)"/>
+            <xs:attribute name="defaultMemoryLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default Memory Limit (bytes)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Maximum amount of memory available for row data in any single active query (if not overriden)"/>
+            <xs:attribute name="defaultSLAPriorityTimeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Default SLA Priority Time Limit (ms)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Maximum run time (in ms) for any single active SLA-high-priority query (if not overriden)"/>
+            <xs:attribute name="defaultSLAPriorityTimeWarning" type="xs:nonNegativeInteger" hpcc:displayName="Default SLA Priority Time Warning (ms)" use="optional" hpcc:presetValue="5000" hpcc:tooltip="Time (in ms) before generating SNMP warning for a SLA-high-priority query (if not overriden)"/>
+            <xs:attribute name="defaultStripLeadingWhitespace" type="xs:boolean" hpcc:displayName="Default Strip Leading Whitespace" use="optional" hpcc:presetValue="true" hpcc:tooltip="Default value for stripping leading whitespace in input XML values"/>
+            <xs:attribute name="enableKeyDiff" type="xs:boolean" hpcc:displayName="Enable Key Diff" use="optional" hpcc:presetValue="true" hpcc:tooltip="Enable / Disable key diff functionality in roxie"/>
+            <xs:attribute name="enableSysLog" type="xs:boolean" hpcc:displayName="Enable Sys Log" use="optional" hpcc:presetValue="true" hpcc:tooltip="Enable use of syslog for monitoring"/>
+            <xs:attribute name="flushJHtreeCacheOnOOM" type="xs:boolean" hpcc:displayName="flushJHtreeCacheOnOOM" use="optional" hpcc:presetValue="true" hpcc:tooltip="Should the index node memory allocation flush the cache and retry if memory allocation fails"/>
+            <xs:attribute name="fieldTranslationEnabled" use="optional" hpcc:displayName="Enable Field Translation" hpcc:presetValue="false" hpcc:tooltip="Enables translation (where possible) of mismatched index layouts on-the-fly. Specify 'payload' to attempt to translate payload fields only">
                 <xs:simpleType>
                     <xs:restriction base="xs:string">
                         <xs:enumeration value="false" hpcc:displayName="False" hpcc:desciption=""/>
@@ -78,12 +78,12 @@
                     </xs:restriction>
                 </xs:simpleType>
             </xs:attribute>
-            <xs:attribute name="highTimeout" type="xs:nonNegativeInteger" hpcc:displayName="High Timeout (ms)" use="optional" default="2000" hpcc:tooltip="Timeout (in ms) before high priority requests are resent to agents"/>
+            <xs:attribute name="highTimeout" type="xs:nonNegativeInteger" hpcc:displayName="High Timeout (ms)" use="optional" hpcc:presetValue="2000" hpcc:tooltip="Timeout (in ms) before high priority requests are resent to agents"/>
             <!-- range, min value? -->
-            <xs:attribute name="httpCallerIdHeader" type="xs:string" hpcc:displayName="http Caller ID Header" use="optional" default="HPCC-Caller-Id" hpcc:tooltip="HTTP Header field to use for sending and receiving CallerId"/>
-            <xs:attribute name="httpGlobalIdHeader" type="xs:string" hpcc:displayName="http Global ID Header" use="optional" default="HPCC-Global-Id" hpcc:tooltip="HTTP Header field to use for sending and receiving GlobalId"/>
-            <xs:attribute name="ignoreOrphans" type="xs:boolean" hpcc:displayName="Ignore Orphans" use="optional" default="true" hpcc:tooltip="Treat out-of-date local files as if they were not present"/>
-            <xs:attribute name="lazyOpen" hpcc:displayName="Ignore Orphans" use="optional" default="smart" hpcc:tooltip="Delay opening files until first use. Select smart to use lazy mode only after a restart">
+            <xs:attribute name="httpCallerIdHeader" type="xs:string" hpcc:displayName="http Caller ID Header" use="optional" hpcc:presetValue="HPCC-Caller-Id" hpcc:tooltip="HTTP Header field to use for sending and receiving CallerId"/>
+            <xs:attribute name="httpGlobalIdHeader" type="xs:string" hpcc:displayName="http Global ID Header" use="optional" hpcc:presetValue="HPCC-Global-Id" hpcc:tooltip="HTTP Header field to use for sending and receiving GlobalId"/>
+            <xs:attribute name="ignoreOrphans" type="xs:boolean" hpcc:displayName="Ignore Orphans" use="optional" hpcc:presetValue="true" hpcc:tooltip="Treat out-of-date local files as if they were not present"/>
+            <xs:attribute name="lazyOpen" hpcc:displayName="Ignore Orphans" use="optional" hpcc:presetValue="smart" hpcc:tooltip="Delay opening files until first use. Select smart to use lazy mode only after a restart">
                 <xs:simpleType>
                     <xs:restriction base="xs:string">
                         <xs:enumeration value="false" hpcc:displayName="False" hpcc:description=""/>
@@ -92,23 +92,23 @@
                     </xs:restriction>
                 </xs:simpleType>
             </xs:attribute>
-            <xs:attribute name="localFilesExpire" type="xs:integer" hpcc:displayName="Local Files Expire (ms)" use="optional" default="-1" hpcc:tooltip="Period (in ms) of inactivity before a local datafile handle is closed"/>
-            <xs:attribute name="localSlave" type="xs:boolean" hpcc:displayName="Local Slave" use="optional" default="false" hpcc:tooltip="All Roxie servers talk only to their embedded agent"/>
-            <xs:attribute name="lockSuperFiles" type="xs:boolean" hpcc:displayName="Lock SuperFiles" use="optional" default="false" hpcc:tooltip="If enabled, superfiles will be locked while queries that use them are loaded"/>
-            <xs:attribute name="lowTimeout" type="xs:nonNegativeInteger" hpcc:displayName="Low Timeout (ms)" use="optional" default="10000" hpcc:tooltip="Timeout (in ms) before low priority requests are resent to agents"/>
-            <xs:attribute name="maxLocalFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Max Local Files Open" use="optional" default="4000" hpcc:tooltip="Maximum number of local files to keep open"/>
-            <xs:attribute name="maxRemoteFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Max Remote Files Open" use="optional" default="1000" hpcc:tooltip="Maximum number of remote files to keep open"/>
-            <xs:attribute name="minFreeDiskSpace" type="xs:nonNegativeInteger" hpcc:displayName="Mininum Free Disk Space (bytes)" use="optional" default="1073741824" hpcc:tooltip="Minimum amount of disk space needed to be available for file copy to succeed"/>
-            <xs:attribute name="minLocalFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Minumum Local Files Open" use="optional" default="2000" hpcc:tooltip="Minimum number of local files to keep open"/>
-            <xs:attribute name="minRemoteFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Minimum Remote Files Open" use="optional" default="500" hpcc:tooltip="Minimum number of remote files to keep open"/>
-            <xs:attribute name="monitorDaliFileServer" type="xs:boolean" hpcc:displayName="Monitor Dali File Server" use="optional" default="false" hpcc:tooltip="Warn if dafilesrv process is not running on computers"/>
-            <xs:attribute name="preferredSubnet" type="ipV4Address" hpcc:displayName="Preferred Subnet" use="optional" default="" hpcc:tooltip="Preferred subnet to use for multi-NIC machines"/>
-            <xs:attribute name="preferredSubnetMask" type="ipV4Address" hpcc:displayName="Preferred Subnet Mask" use="optional" default="" hpcc:tooltip="Preferred subnet mask to use for multi-NIC machines"/>
-            <xs:attribute name="preloadOnceData" type="xs:boolean" hpcc:displayName="Preload Once Data" use="optional" default="true" hpcc:tooltip="Evaluate : ONCE sections of queries at query load time"/>
-            <xs:attribute name="prestartSlaveThreads" type="xs:boolean" hpcc:displayName="Prestart Slave Threads" use="optional" default="true" hpcc:tooltip="Prestart slave worker threads at startup"/>
-            <xs:attribute name="reloadRetriesFailed" type="xs:boolean" hpcc:displayName="Reload Retries Failed" use="optional" default="true" hpcc:tooltip="Retry loading of failed queries whenever QuerySet reloads"/>
-            <xs:attribute name="remoteFilesExpire" type="xs:integer" hpcc:displayName="Remte Files Expire (ms)" use="optional" default="3600000" hpcc:tooltip="Period (in ms) of inactivity before a remote datafile handle is closed"/>
-            <xs:attribute name="serverThreads" type="xs:nonNegativeInteger" hpcc:displayName="Server Threads" use="optional" default="30" hpcc:tooltip="Default number of threads processing Roxie server requests (if not specifed on Servers tab)"/>
+            <xs:attribute name="localFilesExpire" type="xs:integer" hpcc:displayName="Local Files Expire (ms)" use="optional" hpcc:presetValue="-1" hpcc:tooltip="Period (in ms) of inactivity before a local datafile handle is closed"/>
+            <xs:attribute name="localSlave" type="xs:boolean" hpcc:displayName="Local Slave" use="optional" hpcc:presetValue="false" hpcc:tooltip="All Roxie servers talk only to their embedded agent"/>
+            <xs:attribute name="lockSuperFiles" type="xs:boolean" hpcc:displayName="Lock SuperFiles" use="optional" hpcc:presetValue="false" hpcc:tooltip="If enabled, superfiles will be locked while queries that use them are loaded"/>
+            <xs:attribute name="lowTimeout" type="xs:nonNegativeInteger" hpcc:displayName="Low Timeout (ms)" use="optional" hpcc:presetValue="10000" hpcc:tooltip="Timeout (in ms) before low priority requests are resent to agents"/>
+            <xs:attribute name="maxLocalFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Max Local Files Open" use="optional" hpcc:presetValue="4000" hpcc:tooltip="Maximum number of local files to keep open"/>
+            <xs:attribute name="maxRemoteFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Max Remote Files Open" use="optional" hpcc:presetValue="1000" hpcc:tooltip="Maximum number of remote files to keep open"/>
+            <xs:attribute name="minFreeDiskSpace" type="xs:nonNegativeInteger" hpcc:displayName="Mininum Free Disk Space (bytes)" use="optional" hpcc:presetValue="1073741824" hpcc:tooltip="Minimum amount of disk space needed to be available for file copy to succeed"/>
+            <xs:attribute name="minLocalFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Minumum Local Files Open" use="optional" hpcc:presetValue="2000" hpcc:tooltip="Minimum number of local files to keep open"/>
+            <xs:attribute name="minRemoteFilesOpen" type="xs:nonNegativeInteger" hpcc:displayName="Minimum Remote Files Open" use="optional" hpcc:presetValue="500" hpcc:tooltip="Minimum number of remote files to keep open"/>
+            <xs:attribute name="monitorDaliFileServer" type="xs:boolean" hpcc:displayName="Monitor Dali File Server" use="optional" hpcc:presetValue="false" hpcc:tooltip="Warn if dafilesrv process is not running on computers"/>
+            <xs:attribute name="preferredSubnet" type="ipV4Address" hpcc:displayName="Preferred Subnet" use="optional" hpcc:presetValue="" hpcc:tooltip="Preferred subnet to use for multi-NIC machines"/>
+            <xs:attribute name="preferredSubnetMask" type="ipV4Address" hpcc:displayName="Preferred Subnet Mask" use="optional" hpcc:presetValue="" hpcc:tooltip="Preferred subnet mask to use for multi-NIC machines"/>
+            <xs:attribute name="preloadOnceData" type="xs:boolean" hpcc:displayName="Preload Once Data" use="optional" hpcc:presetValue="true" hpcc:tooltip="Evaluate : ONCE sections of queries at query load time"/>
+            <xs:attribute name="prestartSlaveThreads" type="xs:boolean" hpcc:displayName="Prestart Slave Threads" use="optional" hpcc:presetValue="true" hpcc:tooltip="Prestart slave worker threads at startup"/>
+            <xs:attribute name="reloadRetriesFailed" type="xs:boolean" hpcc:displayName="Reload Retries Failed" use="optional" hpcc:presetValue="true" hpcc:tooltip="Retry loading of failed queries whenever QuerySet reloads"/>
+            <xs:attribute name="remoteFilesExpire" type="xs:integer" hpcc:displayName="Remte Files Expire (ms)" use="optional" hpcc:presetValue="3600000" hpcc:tooltip="Period (in ms) of inactivity before a remote datafile handle is closed"/>
+            <xs:attribute name="serverThreads" type="xs:nonNegativeInteger" hpcc:displayName="Server Threads" use="optional" hpcc:presetValue="30" hpcc:tooltip="Default number of threads processing Roxie server requests (if not specifed on Servers tab)"/>
             <xs:attribute name="siteCertificate" type="xpathType" hpcc:displayName="Site Certificate" use="optional" hpcc:tooltip="Name of the site certificate component that is used for security">
                 <xs:annotation>
                     <xs:appinfo>
@@ -117,25 +117,25 @@
                     </xs:appinfo>
                 </xs:annotation>
             </xs:attribute>
-            <xs:attribute name="slaTimeout" type="xs:nonNegativeInteger" hpcc:displayName="SLA Timeout (ms)" use="optional" default="2000" hpcc:tooltip="Timeout (in ms) before SLA high priority requests are resent to agents"/>
-            <xs:attribute name="slaveQueryReleaseDelaySeconds" type="xs:nonNegativeInteger" hpcc:displayName="Slave Query Release Delay (s)" use="optional" default="60" hpcc:tooltip="Delay before unregistering slave queries to allow in-flight to complete. Files are locked until query is unregistered"/>
-            <xs:attribute name="slaveThreads" type="xs:nonNegativeInteger" hpcc:displayName="Slave Threads" use="optional" default="30" hpcc:tooltip="Number of threads processing agent requests"/>
-            <xs:attribute name="statsExpiryTime" type="xs:nonNegativeInteger" hpcc:displayName="Stats Expire Time (s)" use="optional" default="3600" hpcc:tooltip="Time (in seconds) that detailed reporting stats are kept"/>
-            <xs:attribute name="totalMemoryLimit" type="xs:nonNegativeInteger" hpcc:displayName="Total Memory Limit (bytes)" use="optional" default="1073741824" hpcc:tooltip="Maximum amount of memory available for row data in all active queries"/>
-            <xs:attribute name="heapUseHugePages" type="xs:boolean" hpcc:displayName="Use Heap Huge Pages" default="false" hpcc:tooltip="Allow roxie to use memory from huge pages if they have been configured"/>
-            <xs:attribute name="heapUseTransparentHugePages" type="xs:boolean" hpcc:displayName="Use Heap Transparent Huge Pages" default="true" hpcc:tooltip="Allow roxie to use memory from transparent huge pages"/>
-            <xs:attribute name="heapRetainMemory" type="xs:boolean" hpcc:displayName="Retain Heap Memory" default="false" hpcc:tooltip="Retain and do not return unused memory to the operating system"/>
-            <xs:attribute name="trapTooManyActiveQueries" type="xs:boolean" hpcc:displayName="Trap Too Many Active Queries" use="optional" default="true" hpcc:tooltip="should an SNMP trap get sent when too many active query error occurs"/>
-            <xs:attribute name="useHardLink" type="xs:boolean" hpcc:displayName="Use Hard Link" use="optional" default="false" hpcc:tooltip="If the data file exists on the current machine but in a different directory than roxie expects - create a hard link"/>
-            <xs:attribute name="useMemoryMappedIndexes" type="xs:boolean" hpcc:displayName="Use Memory Mapped Indices" use="optional" default="false" hpcc:tooltip="Using memory-mapped files when merging multiple result streams from row-compressed indexes"/>
-            <xs:attribute name="useRemoteResources" type="xs:boolean" hpcc:displayName="Use Remote Resources" use="optional" default="true" hpcc:tooltip="Reads any missing data files/keys from the position they were in when deployed"/>
+            <xs:attribute name="slaTimeout" type="xs:nonNegativeInteger" hpcc:displayName="SLA Timeout (ms)" use="optional" hpcc:presetValue="2000" hpcc:tooltip="Timeout (in ms) before SLA high priority requests are resent to agents"/>
+            <xs:attribute name="slaveQueryReleaseDelaySeconds" type="xs:nonNegativeInteger" hpcc:displayName="Slave Query Release Delay (s)" use="optional" hpcc:presetValue="60" hpcc:tooltip="Delay before unregistering slave queries to allow in-flight to complete. Files are locked until query is unregistered"/>
+            <xs:attribute name="slaveThreads" type="xs:nonNegativeInteger" hpcc:displayName="Slave Threads" use="optional" hpcc:presetValue="30" hpcc:tooltip="Number of threads processing agent requests"/>
+            <xs:attribute name="statsExpiryTime" type="xs:nonNegativeInteger" hpcc:displayName="Stats Expire Time (s)" use="optional" hpcc:presetValue="3600" hpcc:tooltip="Time (in seconds) that detailed reporting stats are kept"/>
+            <xs:attribute name="totalMemoryLimit" type="xs:nonNegativeInteger" hpcc:displayName="Total Memory Limit (bytes)" use="optional" hpcc:presetValue="1073741824" hpcc:tooltip="Maximum amount of memory available for row data in all active queries"/>
+            <xs:attribute name="heapUseHugePages" type="xs:boolean" hpcc:displayName="Use Heap Huge Pages" hpcc:presetValue="false" hpcc:tooltip="Allow roxie to use memory from huge pages if they have been configured"/>
+            <xs:attribute name="heapUseTransparentHugePages" type="xs:boolean" hpcc:displayName="Use Heap Transparent Huge Pages" hpcc:presetValue="true" hpcc:tooltip="Allow roxie to use memory from transparent huge pages"/>
+            <xs:attribute name="heapRetainMemory" type="xs:boolean" hpcc:displayName="Retain Heap Memory" hpcc:presetValue="false" hpcc:tooltip="Retain and do not return unused memory to the operating system"/>
+            <xs:attribute name="trapTooManyActiveQueries" type="xs:boolean" hpcc:displayName="Trap Too Many Active Queries" use="optional" hpcc:presetValue="true" hpcc:tooltip="should an SNMP trap get sent when too many active query error occurs"/>
+            <xs:attribute name="useHardLink" type="xs:boolean" hpcc:displayName="Use Hard Link" use="optional" hpcc:presetValue="false" hpcc:tooltip="If the data file exists on the current machine but in a different directory than roxie expects - create a hard link"/>
+            <xs:attribute name="useMemoryMappedIndexes" type="xs:boolean" hpcc:displayName="Use Memory Mapped Indices" use="optional" hpcc:presetValue="false" hpcc:tooltip="Using memory-mapped files when merging multiple result streams from row-compressed indexes"/>
+            <xs:attribute name="useRemoteResources" type="xs:boolean" hpcc:displayName="Use Remote Resources" use="optional" hpcc:presetValue="true" hpcc:tooltip="Reads any missing data files/keys from the position they were in when deployed"/>
         </xs:attributeGroup>
 
         <xs:attributeGroup name="redundancy" hpcc:groupByName="Redundancy">
-            <xs:attribute name="cyclicOffset" type="xs:nonNegativeInteger" hpcc:displayName="Cyclic Offset"  use="optional" default="1" hpcc:tooltip="Offset for cyclic redundancy mode"/>
-            <xs:attribute name="channelsPerNode" type="xs:nonNegativeInteger" hpcc:displayName="Channels Per Node"  use="optional" default="1" hpcc:tooltip="Number of channels/data locations to use per node, in overloaded mode"/>
-            <xs:attribute name="numDataCopies" type="xs:nonNegativeInteger" hpcc:displayName="Number Data Copies"  use="optional" default="1" hpcc:tooltip="Number of copies of the data in redundant modes"/>
-            <xs:attribute name="slaveConfig" hpcc:displayName="Slave Config"  use="optional" default="" hpcc:tooltip="Roxie data redundancy mode">
+            <xs:attribute name="cyclicOffset" type="xs:nonNegativeInteger" hpcc:displayName="Cyclic Offset"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Offset for cyclic redundancy mode"/>
+            <xs:attribute name="channelsPerNode" type="xs:nonNegativeInteger" hpcc:displayName="Channels Per Node"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Number of channels/data locations to use per node, in overloaded mode"/>
+            <xs:attribute name="numDataCopies" type="xs:nonNegativeInteger" hpcc:displayName="Number Data Copies"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Number of copies of the data in redundant modes"/>
+            <xs:attribute name="slaveConfig" hpcc:displayName="Slave Config"  use="optional" hpcc:presetValue="" hpcc:tooltip="Roxie data redundancy mode">
                 <xs:simpleType>
                     <xs:restriction base="xs:string">
                         <xs:enumeration value="simple" hpcc:displayName="Simple" hpcc:description=""/>
@@ -148,85 +148,85 @@
         </xs:attributeGroup>
 
         <xs:attributeGroup name="tracing" hpcc:groupByName="Tracing">
-            <xs:attribute name="traceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Trace Level"  use="optional" default="1" hpcc:tooltip="Level of detail in reporting (set to 0 for none, 1 for normal, > 1 or more for extended)"/>
-            <xs:attribute name="logFullQueries" type="xs:boolean" hpcc:displayName="Log Full Queries"  use="optional" default="false" hpcc:tooltip="Log full text (unless blindLogging) and resource usage of all queries received"/>
-            <xs:attribute name="blindLogging" type="xs:boolean" hpcc:displayName="Blind Logging"  use="optional" default="false" hpcc:tooltip="Suppress all logging of any data or query text"/>
-            <xs:attribute name="memTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Memory Trace Level"  use="optional" default="1" hpcc:tooltip="Level of detail in reporting mem mgr information(set to 0 for none, 1 for normal, >1 or more for extended)"/>
-            <xs:attribute name="miscDebugTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Misc Debug Trace Level"  use="optional" default="0" hpcc:tooltip="Level of miscellaneous debug tracing unrelated to all other tracing(set to 0 for none, 1 for normal, >1 or more for extended)"/>
-            <xs:attribute name="soapTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Soap trace Level"  use="optional" default="1" hpcc:tooltip="Level of detail in reporting SOAPCALL information(set to 0 for none, 1 for normal, >1 or more for extended)"/>
-            <xs:attribute name="traceEnabled" type="xs:boolean" hpcc:displayName="Trace Enabled"  use="optional" default="false" hpcc:tooltip="TRACE activity output enabled by default (can be overridden in workunit or query)"/>
-            <xs:attribute name="traceLimit" type="xs:nonNegativeInteger" hpcc:displayName="Trace Limit"  use="optional" default="10" hpcc:tooltip="Number of rows output by TRACE activity"/>
-            <xs:attribute name="udpTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="UDP Trace Level"  use="optional" default="1" hpcc:tooltip="Level of detail in reporting udp information(set to 0 for none, 1 for normal, >1 or more for extended)"/>
-            <xs:attribute name="useLogQueue" type="xs:boolean" hpcc:displayName="Use Log Queue"  use="optional" default="true" hpcc:tooltip="Queue logs messages"/>
-            <xs:attribute name="logQueueDrop" type="xs:nonNegativeInteger" hpcc:displayName="Log Queue Drop"  use="optional" default="32" hpcc:tooltip="Specifies the number of log messages which will be dropped if the maximum length of the queue of unhandled messages is exceeded"/>
-            <xs:attribute name="logQueueLen" type="xs:nonNegativeInteger" hpcc:displayName="Log Queue Length"  use="optional" default="512" hpcc:tooltip="Specifies the maximum length of the queue of unhandled log messages. Messages will be dropped if this is exceeded"/>
+            <xs:attribute name="traceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Trace Level"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Level of detail in reporting (set to 0 for none, 1 for normal, > 1 or more for extended)"/>
+            <xs:attribute name="logFullQueries" type="xs:boolean" hpcc:displayName="Log Full Queries"  use="optional" hpcc:presetValue="false" hpcc:tooltip="Log full text (unless blindLogging) and resource usage of all queries received"/>
+            <xs:attribute name="blindLogging" type="xs:boolean" hpcc:displayName="Blind Logging"  use="optional" hpcc:presetValue="false" hpcc:tooltip="Suppress all logging of any data or query text"/>
+            <xs:attribute name="memTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Memory Trace Level"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Level of detail in reporting mem mgr information(set to 0 for none, 1 for normal, >1 or more for extended)"/>
+            <xs:attribute name="miscDebugTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Misc Debug Trace Level"  use="optional" hpcc:presetValue="0" hpcc:tooltip="Level of miscellaneous debug tracing unrelated to all other tracing(set to 0 for none, 1 for normal, >1 or more for extended)"/>
+            <xs:attribute name="soapTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="Soap trace Level"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Level of detail in reporting SOAPCALL information(set to 0 for none, 1 for normal, >1 or more for extended)"/>
+            <xs:attribute name="traceEnabled" type="xs:boolean" hpcc:displayName="Trace Enabled"  use="optional" hpcc:presetValue="false" hpcc:tooltip="TRACE activity output enabled by default (can be overridden in workunit or query)"/>
+            <xs:attribute name="traceLimit" type="xs:nonNegativeInteger" hpcc:displayName="Trace Limit"  use="optional" hpcc:presetValue="10" hpcc:tooltip="Number of rows output by TRACE activity"/>
+            <xs:attribute name="udpTraceLevel" type="xs:nonNegativeInteger" hpcc:displayName="UDP Trace Level"  use="optional" hpcc:presetValue="1" hpcc:tooltip="Level of detail in reporting udp information(set to 0 for none, 1 for normal, >1 or more for extended)"/>
+            <xs:attribute name="useLogQueue" type="xs:boolean" hpcc:displayName="Use Log Queue"  use="optional" hpcc:presetValue="true" hpcc:tooltip="Queue logs messages"/>
+            <xs:attribute name="logQueueDrop" type="xs:nonNegativeInteger" hpcc:displayName="Log Queue Drop"  use="optional" hpcc:presetValue="32" hpcc:tooltip="Specifies the number of log messages which will be dropped if the maximum length of the queue of unhandled messages is exceeded"/>
+            <xs:attribute name="logQueueLen" type="xs:nonNegativeInteger" hpcc:displayName="Log Queue Length"  use="optional" hpcc:presetValue="512" hpcc:tooltip="Specifies the maximum length of the queue of unhandled log messages. Messages will be dropped if this is exceeded"/>
         </xs:attributeGroup>
 
         <xs:attributeGroup name="udp" hpcc:groupByName="UDP">
-            <xs:attribute name="roxieMulticastEnabled" type="xs:boolean" hpcc:displayName="Enable Roxie Multicast" use="optional" default="true" hpcc:tooltip="Controls whether multicast is used to communicate between nodes"/>
-            <xs:attribute name="udpFlowSocketsSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Flow Socket Size (bytes)" use="optional" default="131071" hpcc:tooltip="Controls the read socket buffer size of the UDP layer flow control sockets"/>
-            <xs:attribute name="udpInlineCollation" type="xs:boolean" hpcc:displayName="UDP Inline Collation" use="optional" default="false" hpcc:tooltip="Controls whether UDP packets are collated on the reading thread or queued up for collation on a separate thread"/>
-            <xs:attribute name="udpInlineCollationPacketLimit" type="xs:nonNegativeInteger" hpcc:displayName="UDP Inline Colation Packet Limit" use="optional" default="50" hpcc:tooltip="Controls how many UDP packets requested at once when inline collation selected"/>
-            <xs:attribute name="udpLocalWriteSocketSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Local Write Socket Size (bytes)" use="optional" default="131071" hpcc:tooltip="Controls the write socket buffer size of the local UDP sockets (Agent to Server on same node)"/>
-            <xs:attribute name="udpMaxRetryTimedoutReqs" type="xs:nonNegativeInteger" hpcc:displayName="UDP Max Retry Timedout Reqs" use="optional" default="0" hpcc:tooltip="Controls the Max number of agent 'request to send' to be retried. 0 means keep retrying forever"/>
-            <xs:attribute name="udpMaxSlotsPerClient" type="xs:nonNegativeInteger" hpcc:displayName="Log Queue Length" use="optional" default="2147483647" hpcc:tooltip="UDP transport layer slots per client"/>
-            <xs:attribute name="udpMulticastBufferSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Multicast Buffer Size (bytes)" use="optional" default="131071" hpcc:tooltip="Controls the read socket buffer size of the UDP multicast sockets"/>
-            <xs:attribute name="udpOutQsPriority" type="xs:nonNegativeInteger" hpcc:displayName="UDP Quality of Service Priority" use="optional" default="0" hpcc:tooltip="Turns on/off Priority weight-based for output queues (0 round-robin no priority - old logic, 1 round-robin new logic, 2 and higher is factor of priority)"/>
-            <xs:attribute name="udpQueueSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Queue Size" use="optional" default="100" hpcc:tooltip="UDP transport layer receive queue size"/>
-            <xs:attribute name="udpRequestToSendTimeout" type="xs:nonNegativeInteger" hpcc:displayName="UDP Request To Send Timeout (units?)" use="optional" default="0" hpcc:tooltip="Controls the timeout value agent udp will wait for permission to send from a Roxie server, in milliseconds. Specify 0 to calcuate automatically"/>
-            <xs:attribute name="udpResendEnabled" type="xs:boolean" hpcc:displayName="Enable UDP Resend" use="optional" default="false" hpcc:tooltip="UDP transport layer packet resend ability"/>
-            <xs:attribute name="udpRetryBusySenders" type="xs:nonNegativeInteger" hpcc:displayName="UDP Retry Busy Senders" use="optional" default="0" hpcc:tooltip="Controls the number of times Roxie server will repeat search for an idle sender when requesting new data"/>
-            <xs:attribute name="udpSendQueueSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Send Queue Size" use="optional" default="50" hpcc:tooltip="UDP transport layer send queue size"/>
-            <xs:attribute name="udpSnifferEnabled" type="xs:boolean" hpcc:displayName="Enable UDP Sniffer" use="optional" default="true" hpcc:tooltip="Enable the UDP multicast sniffer for tracking which senders are busy"/>
-            <xs:attribute name="udpSnifferReadThreadPriority" type="nonNegativeInteger" hpcc:displayName="UDP Sniffer Read Thread Priority" use="optional" default="3" hpcc:tooltip="If non-zero, run the sniffer read thread at elevated priority level"/>
-            <xs:attribute name="udpSnifferSendThreadPriority" type="nonNegativeInteger" hpcc:displayName="UDP Sniffer Send Thread Priority" use="optional" default="3" hpcc:tooltip="If non-zero, run the sniffer send thread at elevated priority level"/>
+            <xs:attribute name="roxieMulticastEnabled" type="xs:boolean" hpcc:displayName="Enable Roxie Multicast" use="optional" hpcc:presetValue="true" hpcc:tooltip="Controls whether multicast is used to communicate between nodes"/>
+            <xs:attribute name="udpFlowSocketsSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Flow Socket Size (bytes)" use="optional" hpcc:presetValue="131071" hpcc:tooltip="Controls the read socket buffer size of the UDP layer flow control sockets"/>
+            <xs:attribute name="udpInlineCollation" type="xs:boolean" hpcc:displayName="UDP Inline Collation" use="optional" hpcc:presetValue="false" hpcc:tooltip="Controls whether UDP packets are collated on the reading thread or queued up for collation on a separate thread"/>
+            <xs:attribute name="udpInlineCollationPacketLimit" type="xs:nonNegativeInteger" hpcc:displayName="UDP Inline Colation Packet Limit" use="optional" hpcc:presetValue="50" hpcc:tooltip="Controls how many UDP packets requested at once when inline collation selected"/>
+            <xs:attribute name="udpLocalWriteSocketSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Local Write Socket Size (bytes)" use="optional" hpcc:presetValue="131071" hpcc:tooltip="Controls the write socket buffer size of the local UDP sockets (Agent to Server on same node)"/>
+            <xs:attribute name="udpMaxRetryTimedoutReqs" type="xs:nonNegativeInteger" hpcc:displayName="UDP Max Retry Timedout Reqs" use="optional" hpcc:presetValue="0" hpcc:tooltip="Controls the Max number of agent 'request to send' to be retried. 0 means keep retrying forever"/>
+            <xs:attribute name="udpMaxSlotsPerClient" type="xs:nonNegativeInteger" hpcc:displayName="Log Queue Length" use="optional" hpcc:presetValue="2147483647" hpcc:tooltip="UDP transport layer slots per client"/>
+            <xs:attribute name="udpMulticastBufferSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Multicast Buffer Size (bytes)" use="optional" hpcc:presetValue="131071" hpcc:tooltip="Controls the read socket buffer size of the UDP multicast sockets"/>
+            <xs:attribute name="udpOutQsPriority" type="xs:nonNegativeInteger" hpcc:displayName="UDP Quality of Service Priority" use="optional" hpcc:presetValue="0" hpcc:tooltip="Turns on/off Priority weight-based for output queues (0 round-robin no priority - old logic, 1 round-robin new logic, 2 and higher is factor of priority)"/>
+            <xs:attribute name="udpQueueSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Queue Size" use="optional" hpcc:presetValue="100" hpcc:tooltip="UDP transport layer receive queue size"/>
+            <xs:attribute name="udpRequestToSendTimeout" type="xs:nonNegativeInteger" hpcc:displayName="UDP Request To Send Timeout (units?)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Controls the timeout value agent udp will wait for permission to send from a Roxie server, in milliseconds. Specify 0 to calcuate automatically"/>
+            <xs:attribute name="udpResendEnabled" type="xs:boolean" hpcc:displayName="Enable UDP Resend" use="optional" hpcc:presetValue="false" hpcc:tooltip="UDP transport layer packet resend ability"/>
+            <xs:attribute name="udpRetryBusySenders" type="xs:nonNegativeInteger" hpcc:displayName="UDP Retry Busy Senders" use="optional" hpcc:presetValue="0" hpcc:tooltip="Controls the number of times Roxie server will repeat search for an idle sender when requesting new data"/>
+            <xs:attribute name="udpSendQueueSize" type="xs:nonNegativeInteger" hpcc:displayName="UDP Send Queue Size" use="optional" hpcc:presetValue="50" hpcc:tooltip="UDP transport layer send queue size"/>
+            <xs:attribute name="udpSnifferEnabled" type="xs:boolean" hpcc:displayName="Enable UDP Sniffer" use="optional" hpcc:presetValue="true" hpcc:tooltip="Enable the UDP multicast sniffer for tracking which senders are busy"/>
+            <xs:attribute name="udpSnifferReadThreadPriority" type="nonNegativeInteger" hpcc:displayName="UDP Sniffer Read Thread Priority" use="optional" hpcc:presetValue="3" hpcc:tooltip="If non-zero, run the sniffer read thread at elevated priority level"/>
+            <xs:attribute name="udpSnifferSendThreadPriority" type="nonNegativeInteger" hpcc:displayName="UDP Sniffer Send Thread Priority" use="optional" hpcc:presetValue="3" hpcc:tooltip="If non-zero, run the sniffer send thread at elevated priority level"/>
         </xs:attributeGroup>
 
         <xs:attributeGroup name="cache" hpcc:groupByName="Cache">
-            <xs:attribute name="blobCacheMem" type="xs:nonNegativeInteger" hpcc:displayName="Blob Cache Memory Size (Mb)"  use="optional" default="0" hpcc:tooltip="Size (in Mb) of blob index page cache"/>
-            <xs:attribute name="serverSideCacheSize" type="xs:nonNegativeInteger" hpcc:displayName="Server Side Cache Size"  use="optional" default="0" hpcc:tooltip="Number of agent results to cache on Roxie server"/>
-            <xs:attribute name="leafCacheMem" type="xs:nonNegativeInteger" hpcc:displayName="Leaf Cache Memory Size (Mb)"  use="optional" default="50" hpcc:tooltip="Size (in Mb) of leaf index page cache"/>
-            <xs:attribute name="nodeCachePreload" type="xs:boolean" hpcc:displayName="Enable Node Cache Preload"  use="optional" default="false" hpcc:tooltip="Prefill the node cache with all non-leaf pages from all indexes"/>
-            <xs:attribute name="nodeCacheMem" type="xs:nonNegativeInteger" hpcc:displayName="Node Cache Memory Size (Mb)"  use="optional" default="100" hpcc:tooltip="Size (in Mb) of non-leaf index page cache"/>
-            <xs:attribute name="mysqlCacheCheckPeriod" type="xs:nonNegativeInteger" hpcc:displayName="MySQL Cache Check Period(ms)" use="optional" default="10000"
+            <xs:attribute name="blobCacheMem" type="xs:nonNegativeInteger" hpcc:displayName="Blob Cache Memory Size (Mb)"  use="optional" hpcc:presetValue="0" hpcc:tooltip="Size (in Mb) of blob index page cache"/>
+            <xs:attribute name="serverSideCacheSize" type="xs:nonNegativeInteger" hpcc:displayName="Server Side Cache Size"  use="optional" hpcc:presetValue="0" hpcc:tooltip="Number of agent results to cache on Roxie server"/>
+            <xs:attribute name="leafCacheMem" type="xs:nonNegativeInteger" hpcc:displayName="Leaf Cache Memory Size (Mb)"  use="optional" hpcc:presetValue="50" hpcc:tooltip="Size (in Mb) of leaf index page cache"/>
+            <xs:attribute name="nodeCachePreload" type="xs:boolean" hpcc:displayName="Enable Node Cache Preload"  use="optional" hpcc:presetValue="false" hpcc:tooltip="Prefill the node cache with all non-leaf pages from all indexes"/>
+            <xs:attribute name="nodeCacheMem" type="xs:nonNegativeInteger" hpcc:displayName="Node Cache Memory Size (Mb)"  use="optional" hpcc:presetValue="100" hpcc:tooltip="Size (in Mb) of non-leaf index page cache"/>
+            <xs:attribute name="mysqlCacheCheckPeriod" type="xs:nonNegativeInteger" hpcc:displayName="MySQL Cache Check Period(ms)" use="optional" hpcc:presetValue="10000"
                 hpcc:tooltip="Time to wait (ms) between checking if any cached MySQL connections can be closed"/>
-            <xs:attribute name="mysqlCacheTimeoutPeriod" type="xs:nonNegativeInteger" hpcc:displayName="MySQL Cache Timeout Period(ms)" use="optional" default="60000"
+            <xs:attribute name="mysqlCacheTimeoutPeriod" type="xs:nonNegativeInteger" hpcc:displayName="MySQL Cache Timeout Period(ms)" use="optional" hpcc:presetValue="60000"
                 hpcc:tooltip="Time to wait (ms) before closing a cached MySQL connection"/>
-            <xs:attribute name="mysqlConnectionCacheSize" type="xs:nonNegativeInteger" hpcc:displayName="MySQL Connection Cache Size" use="optional" default="10"
+            <xs:attribute name="mysqlConnectionCacheSize" type="xs:nonNegativeInteger" hpcc:displayName="MySQL Connection Cache Size" use="optional" hpcc:presetValue="10"
                 hpcc:tooltip="Number of MySQL connections to hold in cache"/>
         </xs:attributeGroup>
 
         <xs:attributeGroup name="debug" hpcc:groupByName="Debug">
-            <xs:attribute name="checkCompleted" type="xs:boolean" hpcc:displayName="Check Completed" use="optional" default="true" hpcc:tooltip="Check pending replies when agent gets a retry request"/>
-            <xs:attribute name="dafilesrvLookupTimeout" type="xs:nonNegativeInteger" hpcc:displayName="DaFileserv Lookup Timeout (ms)" use="optional" default="10000" hpcc:tooltip="Maximum time (in milliseconds) dafilesrv will wait before timing out the first time through the list"/>
-            <xs:attribute name="defaultConcatPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Concat Preload" use="optional" default="0" hpcc:tooltip="Default concat preloa"/>
-            <xs:attribute name="defaultFetchPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Fetch Preload" use="optional" default="0" hpcc:tooltip="Default fetch preload"/>
-            <xs:attribute name="defaultFullKeyedJoinPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Full Keyed Join Preload" use="optional" default="0" hpcc:tooltip="Default full keyed join preload"/>
-            <xs:attribute name="defaultKeyedJoinPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Keyed Join Preload" use="optional" default="0" hpcc:tooltip="Default keyed join preload"/>
-            <xs:attribute name="defaultParallelJoinPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Parallel Join Preload" use="optional" default="0" hpcc:tooltip="Default parallel join preload"/>
-            <xs:attribute name="defaultPrefetchProjectPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Prefetch Project Preload" use="optional" default="10" hpcc:tooltip="Default prefetch value for PROJECT,PREFETCH activity"/>
-            <xs:attribute name="diskReadBufferSize" type="xs:nonNegativeInteger" hpcc:displayName="Disk Read Buffer Size (bytes)" use="optional" default="65536" hpcc:tooltip="Default buffer size for disk read operations"/>
-            <xs:attribute name="doIbytiDelay" type="xs:boolean" hpcc:displayName="Enable IBYTI Ddelay Logic" use="optional" default="true" hpcc:tooltip="Enables the IBYTI delay logic in the agents"/>
-            <xs:attribute name="enableHeartBeat" type="xs:boolean" hpcc:displayName="Enable Heartbeat" use="optional" default="true" hpcc:tooltip="Enable HeartBeat messages to clients"/>
-            <xs:attribute name="fastLaneQueue" type="xs:boolean" hpcc:displayName="Enable Fast Lane Queue" use="optional" default="true" hpcc:tooltip="special fast-lane queue for simple queries"/>
-            <xs:attribute name="forceStdLog" type="xs:boolean" hpcc:displayName="Force Std Log Output" use="optional" default="false" hpcc:tooltip="Force log output to stderr even when redirected to null"/>
-            <xs:attribute name="ignoreMissingFiles" type="xs:boolean" hpcc:displayName="Ignore Missing Files" use="optional" default="false" hpcc:tooltip="Ignore missing files"/>
-            <xs:attribute name="indexReadChunkSize" type="xs:nonNegativeInteger" hpcc:displayName="Index Read Chunk Size" use="optional" default="60000" hpcc:tooltip="Break up results from indexRead (and other remote activities) every N bytes"/>
-            <xs:attribute name="initIbytiDelay" type="xs:nonNegativeInteger" hpcc:displayName="Init IBYTI Delay Time (ms)" use="optional" default="100" hpcc:tooltip="Initial time (in milliseconds) a secondary agent will wait for an IBYTI packet from a primary peer"/>
-            <xs:attribute name="jumboFrames" type="xs:boolean" hpcc:displayName="Jumbo Frames" use="optional" default="false" hpcc:tooltip="Set to true if using jumbo frames (MTU=9000) on the network"/>
-            <xs:attribute name="linuxYield" type="xs:boolean" hpcc:displayName="Linux Yield" use="optional" default="false" hpcc:tooltip="Yield to scheduler in some tight loops. May help latency on uniprocessor machines"/>
-            <xs:attribute name="maxBlockSize" type="xs:nonNegativeInteger" hpcc:displayName="Maximum Block Size (bytes)" use="optional" default="10000000" hpcc:tooltip="Max size of block read from client socket"/>
-            <xs:attribute name="maxLockAttempts" type="xs:nonNegativeInteger" hpcc:displayName="Maximum Lock Attempts" use="optional" default="5" hpcc:tooltip="Number of retries to get lock for global queries"/>
-            <xs:attribute name="memoryStatsInterval" type="xs:nonNegativeInteger" hpcc:displayName="Memory Stats Interval (s)" use="optional" default="60" hpcc:tooltip="Interval (in seconds) between reports on Roxie heap usage"/>
-            <xs:attribute name="memTraceSizeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Memory trace Size Limit (bytes?)" use="optional" default="0" hpcc:tooltip="Generate stacktrace whenever a request is made for a row larger than this threshold (0 to disable)"/>
-            <xs:attribute name="parallelAggregate" type="xs:nonNegativeInteger" hpcc:displayName="Parallel Aggregate" use="optional" default="0" hpcc:tooltip="Number of parallel threads to use for in-memory aggregate processing. Set to 0 to use one per CPU, 1 to disable parallel processing of in-memory aggregates"/>
-            <xs:attribute name="perChannelFlowLimit" type="xs:nonNegativeInteger" hpcc:displayName="Per Channel Flow Limit" use="optional" default="10" hpcc:tooltip="Number of pending queries permitted per channel (per active activity) before blocking"/>
-            <xs:attribute name="pingInterval" type="xs:nonNegativeInteger" hpcc:displayName="Ping Interval (s)" use="optional" default="60" hpcc:tooltip="Interval (in seconds) between Roxie server ping tests"/>
-            <xs:attribute name="preabortIndexReadsThreshold" type="xs:nonNegativeInteger" hpcc:displayName="Pre Abort Index Reads Threshold" use="optional" default="100" hpcc:tooltip="Use seek to precheck keyed limits (i.e. assume ,COUNT) on index reads if limit greater than this value"/>
-            <xs:attribute name="preabortKeyedJoinsThreshold" type="xs:nonNegativeInteger" hpcc:displayName="Pre Abort Keyed Joins Threshold" use="optional" default="100" hpcc:tooltip="Use seek to precheck limits on keyed joins if limit greater than this value"/>
-            <xs:attribute name="simpleLocalKeyedJoins" type="xs:boolean" hpcc:displayName="Simple Local Keyed Joins" use="optional" default="true" hpcc:tooltip="Enable single-threaded local keyed joins"/>
-            <xs:attribute name="socketCheckInterval" type="xs:nonNegativeInteger" hpcc:displayName="Socket Check Interval" use="optional" default="5000" hpcc:tooltip="Interval (in milliseconds) between checks that client socket is still open"/>
-            <xs:attribute name="systemMonitorInterval" type="xs:nonNegativeInteger" hpcc:displayName="System Monitor Interval (ms?)" use="optional" default="60000" hpcc:tooltip="How often to send an 'alive' message"/>
+            <xs:attribute name="checkCompleted" type="xs:boolean" hpcc:displayName="Check Completed" use="optional" hpcc:presetValue="true" hpcc:tooltip="Check pending replies when agent gets a retry request"/>
+            <xs:attribute name="dafilesrvLookupTimeout" type="xs:nonNegativeInteger" hpcc:displayName="DaFileserv Lookup Timeout (ms)" use="optional" hpcc:presetValue="10000" hpcc:tooltip="Maximum time (in milliseconds) dafilesrv will wait before timing out the first time through the list"/>
+            <xs:attribute name="defaultConcatPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Concat Preload" use="optional" hpcc:presetValue="0" hpcc:tooltip="Default concat preloa"/>
+            <xs:attribute name="defaultFetchPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Fetch Preload" use="optional" hpcc:presetValue="0" hpcc:tooltip="Default fetch preload"/>
+            <xs:attribute name="defaultFullKeyedJoinPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Full Keyed Join Preload" use="optional" hpcc:presetValue="0" hpcc:tooltip="Default full keyed join preload"/>
+            <xs:attribute name="defaultKeyedJoinPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Keyed Join Preload" use="optional" hpcc:presetValue="0" hpcc:tooltip="Default keyed join preload"/>
+            <xs:attribute name="defaultParallelJoinPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Parallel Join Preload" use="optional" hpcc:presetValue="0" hpcc:tooltip="Default parallel join preload"/>
+            <xs:attribute name="defaultPrefetchProjectPreload" type="xs:nonNegativeInteger" hpcc:displayName="Default Prefetch Project Preload" use="optional" hpcc:presetValue="10" hpcc:tooltip="Default prefetch value for PROJECT,PREFETCH activity"/>
+            <xs:attribute name="diskReadBufferSize" type="xs:nonNegativeInteger" hpcc:displayName="Disk Read Buffer Size (bytes)" use="optional" hpcc:presetValue="65536" hpcc:tooltip="Default buffer size for disk read operations"/>
+            <xs:attribute name="doIbytiDelay" type="xs:boolean" hpcc:displayName="Enable IBYTI Ddelay Logic" use="optional" hpcc:presetValue="true" hpcc:tooltip="Enables the IBYTI delay logic in the agents"/>
+            <xs:attribute name="enableHeartBeat" type="xs:boolean" hpcc:displayName="Enable Heartbeat" use="optional" hpcc:presetValue="true" hpcc:tooltip="Enable HeartBeat messages to clients"/>
+            <xs:attribute name="fastLaneQueue" type="xs:boolean" hpcc:displayName="Enable Fast Lane Queue" use="optional" hpcc:presetValue="true" hpcc:tooltip="special fast-lane queue for simple queries"/>
+            <xs:attribute name="forceStdLog" type="xs:boolean" hpcc:displayName="Force Std Log Output" use="optional" hpcc:presetValue="false" hpcc:tooltip="Force log output to stderr even when redirected to null"/>
+            <xs:attribute name="ignoreMissingFiles" type="xs:boolean" hpcc:displayName="Ignore Missing Files" use="optional" hpcc:presetValue="false" hpcc:tooltip="Ignore missing files"/>
+            <xs:attribute name="indexReadChunkSize" type="xs:nonNegativeInteger" hpcc:displayName="Index Read Chunk Size" use="optional" hpcc:presetValue="60000" hpcc:tooltip="Break up results from indexRead (and other remote activities) every N bytes"/>
+            <xs:attribute name="initIbytiDelay" type="xs:nonNegativeInteger" hpcc:displayName="Init IBYTI Delay Time (ms)" use="optional" hpcc:presetValue="100" hpcc:tooltip="Initial time (in milliseconds) a secondary agent will wait for an IBYTI packet from a primary peer"/>
+            <xs:attribute name="jumboFrames" type="xs:boolean" hpcc:displayName="Jumbo Frames" use="optional" hpcc:presetValue="false" hpcc:tooltip="Set to true if using jumbo frames (MTU=9000) on the network"/>
+            <xs:attribute name="linuxYield" type="xs:boolean" hpcc:displayName="Linux Yield" use="optional" hpcc:presetValue="false" hpcc:tooltip="Yield to scheduler in some tight loops. May help latency on uniprocessor machines"/>
+            <xs:attribute name="maxBlockSize" type="xs:nonNegativeInteger" hpcc:displayName="Maximum Block Size (bytes)" use="optional" hpcc:presetValue="10000000" hpcc:tooltip="Max size of block read from client socket"/>
+            <xs:attribute name="maxLockAttempts" type="xs:nonNegativeInteger" hpcc:displayName="Maximum Lock Attempts" use="optional" hpcc:presetValue="5" hpcc:tooltip="Number of retries to get lock for global queries"/>
+            <xs:attribute name="memoryStatsInterval" type="xs:nonNegativeInteger" hpcc:displayName="Memory Stats Interval (s)" use="optional" hpcc:presetValue="60" hpcc:tooltip="Interval (in seconds) between reports on Roxie heap usage"/>
+            <xs:attribute name="memTraceSizeLimit" type="xs:nonNegativeInteger" hpcc:displayName="Memory trace Size Limit (bytes?)" use="optional" hpcc:presetValue="0" hpcc:tooltip="Generate stacktrace whenever a request is made for a row larger than this threshold (0 to disable)"/>
+            <xs:attribute name="parallelAggregate" type="xs:nonNegativeInteger" hpcc:displayName="Parallel Aggregate" use="optional" hpcc:presetValue="0" hpcc:tooltip="Number of parallel threads to use for in-memory aggregate processing. Set to 0 to use one per CPU, 1 to disable parallel processing of in-memory aggregates"/>
+            <xs:attribute name="perChannelFlowLimit" type="xs:nonNegativeInteger" hpcc:displayName="Per Channel Flow Limit" use="optional" hpcc:presetValue="10" hpcc:tooltip="Number of pending queries permitted per channel (per active activity) before blocking"/>
+            <xs:attribute name="pingInterval" type="xs:nonNegativeInteger" hpcc:displayName="Ping Interval (s)" use="optional" hpcc:presetValue="60" hpcc:tooltip="Interval (in seconds) between Roxie server ping tests"/>
+            <xs:attribute name="preabortIndexReadsThreshold" type="xs:nonNegativeInteger" hpcc:displayName="Pre Abort Index Reads Threshold" use="optional" hpcc:presetValue="100" hpcc:tooltip="Use seek to precheck keyed limits (i.e. assume ,COUNT) on index reads if limit greater than this value"/>
+            <xs:attribute name="preabortKeyedJoinsThreshold" type="xs:nonNegativeInteger" hpcc:displayName="Pre Abort Keyed Joins Threshold" use="optional" hpcc:presetValue="100" hpcc:tooltip="Use seek to precheck limits on keyed joins if limit greater than this value"/>
+            <xs:attribute name="simpleLocalKeyedJoins" type="xs:boolean" hpcc:displayName="Simple Local Keyed Joins" use="optional" hpcc:presetValue="true" hpcc:tooltip="Enable single-threaded local keyed joins"/>
+            <xs:attribute name="socketCheckInterval" type="xs:nonNegativeInteger" hpcc:displayName="Socket Check Interval" use="optional" hpcc:presetValue="5000" hpcc:tooltip="Interval (in milliseconds) between checks that client socket is still open"/>
+            <xs:attribute name="systemMonitorInterval" type="xs:nonNegativeInteger" hpcc:displayName="System Monitor Interval (ms?)" use="optional" hpcc:presetValue="60000" hpcc:tooltip="How often to send an 'alive' message"/>
         </xs:attributeGroup>
 
         <xs:sequence>
@@ -239,12 +239,12 @@
                                 <xs:sequence>
                                     <xs:element name="RoxieServerProcess" hpcc:hidden="true"/>
                                 </xs:sequence>
-                                <xs:attribute name="port" hpcc:displayName="Port" type="xs:nonNegativeInteger" use="required" default="9876" hpcc:tooltip="the network port on which the Roxie servers accept connections"/>
-                                <xs:attribute name="numThreads" hpcc:displayName="Number of Threads" type="xs:nonNegativeInteger" use="optional" default="30" hpcc:tooltip="Number of simultaneous queries Roxie servers will accept on this port"/>
-                                <xs:attribute name="listenQueue" hpcc:displayName="Listen Queue Connections" type="xs:nonNegativeInteger" use="optional" default="200" hpcc:tooltip="Number of pending connections that can be accepted"/>
-                                <xs:attribute name="requestArrayThreads" hpcc:displayName="Request Array Threads" type="xs:nonNegativeInteger" use="optional" default="5" hpcc:tooltip="Number of simultaneous queries Roxie servers will process using the MERGE option of SOAPCALL"/>
+                                <xs:attribute name="port" hpcc:displayName="Port" type="xs:nonNegativeInteger" use="required" hpcc:presetValue="9876" hpcc:tooltip="the network port on which the Roxie servers accept connections"/>
+                                <xs:attribute name="numThreads" hpcc:displayName="Number of Threads" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="30" hpcc:tooltip="Number of simultaneous queries Roxie servers will accept on this port"/>
+                                <xs:attribute name="listenQueue" hpcc:displayName="Listen Queue Connections" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="200" hpcc:tooltip="Number of pending connections that can be accepted"/>
+                                <xs:attribute name="requestArrayThreads" hpcc:displayName="Request Array Threads" type="xs:nonNegativeInteger" use="optional" hpcc:presetValue="5" hpcc:tooltip="Number of simultaneous queries Roxie servers will process using the MERGE option of SOAPCALL"/>
                                 <xs:attribute name="aclName" hpcc:displayName="ACL" type="xpathType" use="optional" hpcc:tooltip="Name of any Access Control List to use"/> <!-- keyref to ACL list -->
-                                <xs:attribute name="protocol" hpcc:displayName="Protocol" type="xs:string" use="required" default="native" hpcc:tooltip="Protocol to use">
+                                <xs:attribute name="protocol" hpcc:displayName="Protocol" type="xs:string" use="required" hpcc:presetValue="native" hpcc:tooltip="Protocol to use">
                                     <xs:simpleType>
                                         <xs:restriction base="xs:string">
                                             <xs:enumeration value="native" hpcc:description=""/>
@@ -275,10 +275,10 @@
                                     </xs:element>
                                     <xs:element name="Access" minOccurs="0" maxOccurs="unbounded" hpcc:tooltip="Access Rules (Ordered List)">
                                         <xs:complexType>
-                                            <xs:attribute name="allow" type="yesno" hpcc:displayName="Allow" use="required" default="yes"/>
-                                            <xs:attribute name="ip" type="ipV4Address" hpcc:displayName="IP Address" use="optional" default="0.0.0.0" hpcc:tooltip="IP Address of target system"/>
-                                            <xs:attribute name="mask" type="ipV4Address" hpcc:displayName="Internet Mask" use="optional" default="255.255.255.255" hpcc:tooltip="Internet address mask"/>
-                                            <xs:attribute name="query" type="xs:string" hpcc:displayName="Query Wildcard" use="optional" hpcc:defaultInCode=".*" hpcc:tooltip="wildcard for queries to allow/disallow"/>
+                                            <xs:attribute name="allow" type="yesno" hpcc:displayName="Allow" use="required" hpcc:presetValue="yes"/>
+                                            <xs:attribute name="ip" type="ipV4Address" hpcc:displayName="IP Address" use="optional" hpcc:presetValue="0.0.0.0" hpcc:tooltip="IP Address of target system"/>
+                                            <xs:attribute name="mask" type="ipV4Address" hpcc:displayName="Internet Mask" use="optional" hpcc:presetValue="255.255.255.255" hpcc:tooltip="Internet address mask"/>
+                                            <xs:attribute name="query" type="xs:string" hpcc:displayName="Query Wildcard" use="optional" hpcc:presetValue=".*" hpcc:tooltip="wildcard for queries to allow/disallow"/>
                                             <xs:attribute name="errorCode" type="xs:nonNegativeInteger" hpcc:displayName="Error Code" use="optional" hpcc:tooltip="optional error code to associate with the query"/>
                                             <xs:attribute name="error" type="xs:string" hpcc:displayName="Error Message" use="optional" hpcc:tooltip="optional error message to associate with the query"/>
                                             <xs:attribute name="name" type="xs:string" hpcc:displayName="Name" use="required" hpcc:autoGenerateType="prefix_" hpcc:autoGenerateValue="ACLrule"
@@ -309,18 +309,15 @@
                     <xs:attributeGroup ref="buildInfo"/>
                     <xs:attribute name="name" type="xs:string" hpcc:displayName="Name" use="required" hpcc:autoGenerateType="prefix_" hpcc:autoGenerateValue="roxie"
                         hpcc:uniqueKey="roxiecluster_name" hpcc:tooltip="Name for this process"/>
-                    <xs:attribute name="description" type="xs:string" hpcc:displayName="Description" use="optional" default="Roxie cluster" hpcc:tooltip="Description for this process"/>
+                    <xs:attribute name="description" type="xs:string" hpcc:displayName="Description" use="optional" hpcc:presetValue="Roxie cluster" hpcc:tooltip="Description for this process"/>
                     <xs:attribute name="daliServers" type="xs:string" hpcc:displayName="Dali Server" use="optional" hpcc:tooltip="Specifies the dali server to which this roxie is attached"/>
-                    <xs:attribute name="lockDali" type="xs:boolean" hpcc:displayName="Lock Dali" use="optional" default="false" hpcc:tooltip="If set, Roxie will use cached info from dali only, and will not connect to dali or refresh the cache"/>
-                    <!-- hpcc:defaultInCode instead? -->
-                    <xs:attribute name="multicastBase" type="ipV4Address" hpcc:displayName="Multicast Base IP Address" use="optional" default="239.1.1.1" hpcc:tooltip="The base multicast IP for this roxie cluster. Multicast ranges must not overlap for any roxie clusters in the same multicast domain"/>
-                    <!-- hpcc:defaultInCode instead? current default looks pretty specific -->
-                    <xs:attribute name="multicastLast" type="ipV4Address" hpcc:displayName="Multicast Last IP Address" use="optional" default="239.1.254.254" hpcc:tooltip="The last multicast IP available for this roxie cluster. Multicast ranges must not overlap for any roxie clusters in the same multicast domain"/>
-                    <!-- hpcc:defaultInCode instead? current default looks pretty specific, should this be required if multicastBase is set? -->
-                    <xs:attribute name="multicastTTL" type="xs:nonNegativeInteger" hpcc:displayName="Multicat Time To Live" use="optional" default="1" hpcc:tooltip="The multicast TTL (Time To Live) setting for this roxie cluster.  Zero means do not explicitly set TTL, and use the default OS setting"/>
-                    <xs:attribute name="directory" type="absolutePath" hpcc:displayName="Directory" use="optional" default="${EXEC_PREFIX}/lib/${DIR_NAME}/roxie/" hpcc:tooltip="Specifies the directory to which the software will be deployed"/>
+                    <xs:attribute name="lockDali" type="xs:boolean" hpcc:displayName="Lock Dali" use="optional" hpcc:presetValue="false" hpcc:tooltip="If set, Roxie will use cached info from dali only, and will not connect to dali or refresh the cache"/>
+                    <xs:attribute name="multicastBase" type="ipV4Address" hpcc:displayName="Multicast Base IP Address" use="optional" hpcc:presetValue="239.1.1.1" hpcc:tooltip="The base multicast IP for this roxie cluster. Multicast ranges must not overlap for any roxie clusters in the same multicast domain"/>
+                    <xs:attribute name="multicastLast" type="ipV4Address" hpcc:displayName="Multicast Last IP Address" use="optional" hpcc:presetValue="239.1.254.254" hpcc:tooltip="The last multicast IP available for this roxie cluster. Multicast ranges must not overlap for any roxie clusters in the same multicast domain"/>
+                    <xs:attribute name="multicastTTL" type="xs:nonNegativeInteger" hpcc:displayName="Multicat Time To Live" use="optional" hpcc:presetValue="1" hpcc:tooltip="The multicast TTL (Time To Live) setting for this roxie cluster.  Zero means do not explicitly set TTL, and use the default OS setting"/>
+                    <xs:attribute name="directory" type="absolutePath" hpcc:displayName="Directory" use="optional" hpcc:presetValue="${EXEC_PREFIX}/lib/${DIR_NAME}/roxie/" hpcc:tooltip="Specifies the directory to which the software will be deployed"/>
                     <!-- @XSD_PLUGIN_DEFINITION@ LN injects an attribute!! -->
-                    <xs:attribute name="pluginsPath" type="relativePath" hpcc:displayName="Plugins Path" use="optional" default="${PLUGINS_PATH}" hpcc:tooltip="Alternate path where plugin files are deployed (./plugins is assumed if not specified)"/>
+                    <xs:attribute name="pluginsPath" type="relativePath" hpcc:displayName="Plugins Path" use="optional" hpcc:presetValue="${PLUGINS_PATH}" hpcc:tooltip="Alternate path where plugin files are deployed (./plugins is assumed if not specified)"/>
 
                     <xs:attributeGroup ref="ldap"/>
                     <xs:attributeGroup ref="options"/>
@@ -329,12 +326,12 @@
                     <xs:attributeGroup ref="udp"/>
                     <xs:attributeGroup ref="cache"/>
                     <!-- SSH attributes Options for using remote SSH execution -->
-                    <xs:attribute name="SSHidentityfile" type="absolutePath" hpcc:displayName="SSH IdentityFile" hpcc:groupByName="SSH" use="optional" default="$HOME/.ssh/id_rsa" hpcc:tooltip="location of identity file (private key) on Thor master"/>
-                    <xs:attribute name="SSHusername" type="xs:string" hpcc:displayName="SSH Username" hpcc:groupByName="SSH" use="optional" default="hpcc" hpcc:tooltip="Username to use when running Thor slaves"/>
-                    <xs:attribute name="SSHpassword" type="xs:string" hpcc:modifiers="mask,verify" hpcc:displayName="SSH Password" hpcc:groupByName="SSH" use="optional" default="" hpcc:tooltip="Fixed password - only required if no identity file present NB **insecure**"/>
+                    <xs:attribute name="SSHidentityfile" type="absolutePath" hpcc:displayName="SSH IdentityFile" hpcc:groupByName="SSH" use="optional" hpcc:presetValue="$HOME/.ssh/id_rsa" hpcc:tooltip="location of identity file (private key) on Thor master"/>
+                    <xs:attribute name="SSHusername" type="xs:string" hpcc:displayName="SSH Username" hpcc:groupByName="SSH" use="optional" hpcc:presetValue="hpcc" hpcc:tooltip="Username to use when running Thor slaves"/>
+                    <xs:attribute name="SSHpassword" type="xs:string" hpcc:modifiers="mask,verify" hpcc:displayName="SSH Password" hpcc:groupByName="SSH" use="optional" hpcc:presetValue="" hpcc:tooltip="Fixed password - only required if no identity file present NB **insecure**"/>
                     <!-- required if username set? -->
-                    <xs:attribute name="SSHtimeout" type="xs:nonNegativeInteger" hpcc:displayName="SSH Timeout (s)" hpcc:groupByName="SSH" use="optional" default="0" hpcc:tooltip="Timeout in seconds for SSH connects"/>
-                    <xs:attribute name="SSHretries" type="xs:nonNegativeInteger" hpcc:displayName="SSH Retries" hpcc:groupByName="SSH" use="optional" default="3" hpcc:tooltip="Number of times to retry failed connect"/>
+                    <xs:attribute name="SSHtimeout" type="xs:nonNegativeInteger" hpcc:displayName="SSH Timeout (s)" hpcc:groupByName="SSH" use="optional" hpcc:presetValue="0" hpcc:tooltip="Timeout in seconds for SSH connects"/>
+                    <xs:attribute name="SSHretries" type="xs:nonNegativeInteger" hpcc:displayName="SSH Retries" hpcc:groupByName="SSH" use="optional" hpcc:presetValue="3" hpcc:tooltip="Number of times to retry failed connect"/>
 
                     <xs:attributeGroup ref="debug"/>
                 </xs:complexType>

+ 1 - 1
initfiles/componentfiles/configschema/xsd/secmgr_singleuser.xsd

@@ -26,7 +26,7 @@
             <xs:element name="SingleUserSecMgr" hpcc:class="component" hpcc:category="Security Manager"
                         hpcc:itemType="secmgr_singleuser" hpcc:displayName="Single User">
                 <xs:complexType>
-                    <xs:attributeGroup ref="secmgrplugin_reqd" hpcc:defaultInCode="libName=libsingleUserSecurity.so"/>
+                    <xs:attributeGroup ref="secmgrplugin_reqd" hpcc:presetValue="libName=libsingleUserSecurity.so"/>
                 </xs:complexType>
             </xs:element>
         </xs:sequence>

+ 13 - 7
initfiles/componentfiles/configschema/xsd/types.xsd

@@ -70,11 +70,17 @@
         <xs:restriction base="xs:string" hpcc:autoType="requestUser"/>
     </xs:simpleType>
 
+    <xs:simpleType name="timeOfDay">
+        <xs:restriction base="xs:string">
+            <xs:pattern value="^([0-1]?\d|2[0-3])(?::([0-5]?\d))?(?::([0-5]?\d))?$"/>
+        </xs:restriction>
+    </xs:simpleType>
+
     <xs:attributeGroup name="computerNodeReference">
-        <xs:attribute name="computer" hpcc:displayName="Computer" group="Attributes" type="nodeName" use="required"
-            hpcc:sourceKey="computer_name" hpcc:mirrorFrom="/Environment/Hardware/Computer[@name]"
-            hpcc:valueLimitRuleType="addDependencies_FromSiblingAttributeValue" hpcc:valueLimitRuleData="/Environment/Hardware/Computer,name,netAddress,netAddress"/>
-        <xs:attribute name="netAddress" group="Attributes" hpcc:displayName="Net Address" type="ipV4Address" use="required" hpcc:readOnly="true"
+        <xs:attribute name="computer" hpcc:displayName="Computer" type="nodeName" use="required" hpcc:sourceKey="computer_name"
+            hpcc:mirrorFrom="/Environment/Hardware/Computer[@name]" hpcc:valueLimitRuleType="addDependencies_FromSiblingAttributeValue"
+            hpcc:valueLimitRuleData="/Environment/Hardware/Computer,name,netAddress,netAddress"/>
+        <xs:attribute name="netAddress" hpcc:displayName="Net Address" type="ipV4Address" use="required" hpcc:readOnly="true"
             hpcc:sourceKey="computer_netaddress" hpcc:mirrorFrom="/Environment/Hardware/Computer[@netAddress]"/>
     </xs:attributeGroup>
 
@@ -95,7 +101,7 @@
                 <xs:sequence>
                     <xs:element name="Note" type="xs:string" minOccurs="0"/>
                 </xs:sequence>
-                <xs:attribute name="severity" hpcc:displayName="Severity" use="optional" default="Minor" hpcc:tooltip="Significance of this note">
+                <xs:attribute name="severity" hpcc:displayName="Severity" use="optional" hpcc:presetValue="Minor" hpcc:tooltip="Significance of this note">
                     <xs:simpleType>
                         <xs:restriction base="xs:string">
                             <xs:enumeration value="Minor"/>
@@ -149,7 +155,7 @@
                                                             </xs:element>
                                                         </xs:sequence>
                                                         <xs:attribute name="name" type="xs:string" use="required"/>
-                                                        <xs:attribute name="multipleInstances" type="xs:boolean" default="false" use="optional"/>
+                                                        <xs:attribute name="multipleInstances" type="xs:boolean" hpcc:presetValue="false" use="optional"/>
                                                     </xs:complexType>
                                                 </xs:element>
                                             </xs:sequence>
@@ -185,7 +191,7 @@
     <xs:attributeGroup name="secmgrplugin_reqd">
         <xs:attribute name="type" type="SecurityManager" use="required" hpcc:hidden="true" hpcc:readOnly="true"/>
         <xs:attribute name="libName" type="xs:string" use="required" hpcc:displayName="Library Name" hpcc:tooltip="The Security Manager plugin library name (.so)"/>
-        <xs:attribute name="instanceFactoryName" type="xs:string" use="required" hpcc:displayName="Instance Factory Method Name" default="createInstance"
+        <xs:attribute name="instanceFactoryName" type="xs:string" use="required" hpcc:displayName="Instance Factory Method Name" hpcc:presetValue="createInstance"
                       hpcc:tooltip="Name of the factory method to create the Security Manager instacne"/>
         <xs:attribute name="name" type="xs:string" use="required" hpcc:displayName="Name" hpcc:uniqueKey="secmgrplugin_name" hpcc:tooltip="Name for this SingleUser Security Manager instance"/>
     </xs:attributeGroup>