Parcourir la source

Merge pull request #9198 from gaojx/mysql-config-port-and-host2

HPCC-15655: Allow port number and direct host for mysql server

Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman il y a 8 ans
Parent
commit
b4c10b3631

+ 12 - 6
initfiles/componentfiles/configxml/@temp/esp_service.xsl

@@ -497,13 +497,19 @@ xmlns:seisint="http://seisint.com"  xmlns:set="http://exslt.org/sets" exclude-re
             <xsl:when test="$serviceType='WsAttributes'">
                 <!--Note that plugins.xsl already validated that @eclServer is specified-->
                 <xsl:variable name="eclServerNode" select="/Environment/Software/EclServerProcess[@name=current()/@eclServer]"/>
-                <xsl:variable name="mySqlServer" select="string($eclServerNode/@MySQL)"/>
-                 <xsl:if test="$mySqlServer = ''">
+                <xsl:variable name="mySqlServerName" select="string($eclServerNode/@MySQL)"/>
+                 <xsl:if test="$mySqlServerName = ''">
                     <xsl:message terminate="yes">WsAttributes: No MySQL server is defined for the specified ECL server!</xsl:message>
                 </xsl:if>
-                <xsl:variable name="mySqlServerComputer" select="/Environment/Software/MySQLProcess[@name=$mySqlServer]/@computer"/>
-                <xsl:variable name="mySqlServerIP" select="/Environment/Hardware/Computer[@name=$mySqlServerComputer]/@netAddress"/>
-                <xsl:if test="string($mySqlServerComputer) = '' or string($mySqlServerIP) = ''">
+                <xsl:variable name="mySqlServer" select="/Environment/Software/MySQLProcess[@name=$mySqlServerName]"/>
+                <xsl:variable name="mySqlServerComputer" select="$mySqlServer/@computer"/>
+                <xsl:variable name="mySqlServerHost">
+                    <xsl:choose>
+                        <xsl:when test="$mySqlServerComputer = ''"><xsl:value-of select="$mySqlServer/@host"/></xsl:when>
+                        <xsl:otherwise><xsl:value-of select="/Environment/Hardware/Computer[@name=$mySqlServerComputer]/@netAddress"/></xsl:otherwise>
+                    </xsl:choose>
+                </xsl:variable>
+                <xsl:if test="string($mySqlServerHost) = ''">
                     <xsl:message terminate="yes">Invalid MySQL server specified for WsAttributes service</xsl:message>
                 </xsl:if>
                 <xsl:if test="string($eclServerNode/@dbUser) = '' or string($eclServerNode/@dbPassword) = ''">
@@ -512,7 +518,7 @@ xmlns:seisint="http://seisint.com"  xmlns:set="http://exslt.org/sets" exclude-re
                 <xsl:if test="string($eclServerNode/@repository) = ''">
                     <xsl:message terminate="yes">WsAttributes: No repository specified for the specified ECL server!</xsl:message>
                 </xsl:if>
-                <Mysql server="{$mySqlServerIP}" repository="{$eclServerNode/@repository}" user="{$eclServerNode/@dbUser}" password="{$eclServerNode/@dbPassword}" poolSize="{@poolSize}" waitTimeout="{@waitTimeout}"/>
+                <Mysql server="{$mySqlServerHost}" port="{$mySqlServer/@port}" repository="{$eclServerNode/@repository}" user="{$eclServerNode/@dbUser}" password="{$eclServerNode/@dbPassword}" poolSize="{@poolSize}" waitTimeout="{@waitTimeout}"/>
                 <xsl:if test="string(@viewTimeout) != ''">
                     <ViewTimeout>
                         <xsl:value-of select="@viewTimeout"/>

+ 9 - 3
initfiles/componentfiles/configxml/mysqlserver.xsd

@@ -116,19 +116,25 @@
                     </xs:appinfo>
                 </xs:annotation>
             </xs:attribute>
-            <xs:attribute name="computer" type="computerType" use="required">
+            <xs:attribute name="computer" type="computerType" use="optional">
                 <xs:annotation>
                     <xs:appinfo>
-                        <tooltip>The computer on which the MySQL database is deployed.</tooltip>
+                        <tooltip>The computer on which the MySQL database is deployed. This is used before host option.</tooltip>
                         <autogenforwizard>1</autogenforwizard>
                     </xs:appinfo>
                 </xs:annotation>
             </xs:attribute>
+            <xs:attribute name="host" type="xs:string" use="optional">
+                <xs:annotation>
+                    <xs:appinfo>
+                        <tooltip>The host name on which the MySQL database is deployed.</tooltip>
+                    </xs:appinfo>
+                </xs:annotation>
+            </xs:attribute>
             <xs:attribute name="port" type="xs:nonNegativeInteger" use="optional">
                 <xs:annotation>
                     <xs:appinfo>
                         <tooltip>The port on which the MySQL database is listening.</tooltip>
-                        <viewType>hidden</viewType>
                     </xs:appinfo>
                 </xs:annotation>
             </xs:attribute>