<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<NCMDeviceTemplate baseTemplateName="DLink DGS Switch" category="Switch" description="For DLink Switch DGS models" displayName="DLink DGS Switch" multiConfigTemplate="false" osType="[NA]" templateName="DLink_DGS_Switch">
    <RestTemplate name=""/>
    <Vendor displayName="DLink" vendorName="DLink">
        <Commands/>
        <LoggingLevels>
            <Level name="all" number="5" sequenceid="1"/>
        </LoggingLevels>
    </Vendor>
    <Protocols>
        <Protocol name="SSH/TELNET - TFTP">
            <OperationGroup type="backup">
                <Operation name="Running">
                    <Command commandecho="false" commandstr="upload cfg_toTFTP ${UserInput:tftp_server_address} ${UserInput:file_name}" delay="0" messagesuffix="${LF}" prompt="${UserInput:Prompt}" promptactionid="dlinkActionId" promptecho="true" readfromresponse="false" sequenceid="1" timeout="120000"/>
                </Operation>
            </OperationGroup>
            <OperationGroup type="upload">
                <Operation name="Running">
                    <Command commandecho="false" commandstr="download cfg_fromTFTP ${UserInput:tftp_server_address} ${UserInput:file_name}" delay="0" messagesuffix="${LF}" prompt="${UserInput:Prompt}" promptactionid="dlinkActionId" promptecho="true" readfromresponse="false" sequenceid="1" timeout="120000"/>
                </Operation>
            </OperationGroup>
            <OperationGroup type="others">
                <Operation name="Syncconfiguration">
                    <Command commandecho="false" commandstr="save" delay="0" messagesuffix="${LF}" prompt="${UserInput:Prompt}" promptactionid="dlinkActionId" promptecho="true" readfromresponse="false" sequenceid="1" timeout="120000"/>
                </Operation>
            </OperationGroup>
        </Protocol>
    </Protocols>
    <NCMPersonality displayName="DLink Switch" personalityName="DLinkSwitch">
        <Login enablecommand="enable admin" postlogincommand="" postloginprompt="" prelogincommand="" preloginprompt="" suffix="${LF}"/>
        <PersonalityTable>
            <Columns>
                <Column defaultvalue="Not Available" desc="Boot PROM Version" displayname="Boot PROM Version" name="BOOT_PROM_VERSION" sequenceid="2" size="6"/>
                <Column defaultvalue="Not Available" desc="Hardware Version" displayname="Hardware Version" name="HARDWARE_VERSION" sequenceid="4" size="6"/>
            </Columns>
        </PersonalityTable>
        <ConfigurationFile format="Text">
            <ExcludeLines/>
            <SyslogStateCheckers>
                <SyslogState state="enable">
                    <Regex>enable syslog</Regex>
                    <Regex>config\ssystem_severity\slog\sinformation</Regex>
                    <Regex>config\ssystem_severity\strap\sinformation</Regex>
                    <Regex>create\ssyslog\shost\s[0-9]\sseverity\sall\sfacility\slocal[0-9]\sudp_port\s514\sipaddress\s$SYSLOG_SERVER_IP$\sstate\senable</Regex>
                    <Regex>config\slog_save_timing\son_demand</Regex>
                </SyslogState>
            </SyslogStateCheckers>
        </ConfigurationFile>
        <HardwareDetails>
            <HardwareParser parserFileName="DLinkHardwarePropParser.xml">
                <MESSAGE-PARSER>
                    <PARSER CLASSNAME="com.adventnet.util.parser.regex.scalar.RegExScalarParser" TYPE="rule1">
                        <COMMAND NAME="hardware_prop_dlink_switch">
                            <VALID-RULE>
                                <METADATA>
                                    <SCALAR REFERENCEREQ="false">
                                        <REGEX EXPRESSION="\s*(--More--)*\s*Device Type\s*:\s*(\S+).*" NAME="MODEL">
                                            <PARAM NAME="MODEL" TOKENNO="2"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="MAC Address\s*:\s*(\S+)" NAME="MAC_ADDRESS1">
                                            <PARAM NAME="MACADDRESS" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="System MAC Address\s*:\s*(\S+)" NAME="MAC_ADDRESS2">
                                            <PARAM NAME="MACADDRESS" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="Boot PROM Version\s*:\s*Build\s(.*)" NAME="BOOT_PROM_VERSION1">
                                            <PARAM NAME="BOOT_PROM_VERSION" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="Boot version\s*(\S*)\s*(.*)" NAME="BOOT_PROM_VERSION2">
                                            <PARAM NAME="BOOT_PROM_VERSION" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="Hardware Version\s*:\s*(.*)" NAME="HARDWARE_VERSION1">
                                            <PARAM NAME="HARDWARE_VERSION" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="HW version\s*(\S+)" NAME="HARDWARE_VERSION2">
                                            <PARAM NAME="HARDWARE_VERSION" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION=".*(DGS+\S*)\s*H\/W\s*:\s*(\S*).*" NAME="HARDWARE_VERSION3">
                                            <PARAM NAME="MODEL" TOKENNO="1"/>
                                            <PARAM NAME="HARDWARE_VERSION" TOKENNO="2"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="Device S/N\s*:\s*(\S+)" NAME="SERIALNUMBER">
                                            <PARAM NAME="SERIALNUMBER" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="Firmware Version\s*:\s*Build\s(.*)" NAME="OSVERSION1">
                                            <PARAM NAME="OSVERSION" TOKENNO="1"/>
                                        </REGEX>
                                        <REGEX EXPRESSION="SW version\s*(\S*)\s*.*" NAME="OSVERSION2">
                                            <PARAM NAME="OSVERSION" TOKENNO="1"/>
                                        </REGEX>
                                    </SCALAR>
                                </METADATA>
                            </VALID-RULE>
                            <ERROR-RULE>
                                <!-- Error rule specific to the command -->
                                <METADATA>
                                    <SCALAR>
                                        <!-- error message for command  -->
                                        <REGEX EXPRESSION=".*(Incomplete command).*" NAME="CmdError1">
                                            <PARAM NAME="ErrorMsg" TOKENNO="0"/>
                                        </REGEX>
                                    </SCALAR>
                                </METADATA>
                            </ERROR-RULE>
                        </COMMAND>
                    </PARSER>
                </MESSAGE-PARSER>
            </HardwareParser>
            <Protocols>
                <Protocol name="">
                    <Commands operation="">
                        <Command commandstr="show switch" messagesuffix="${LF}" parsercommandname="hardware_prop_dlink_switch" prompt="${UserInput:Prompt}" promptactionid="dlinkActionId" responseparserid="dlink_hardware_prop_parser" timeout="20000"/>
                        <Command commandstr="show version" messagesuffix="${LF}" parsercommandname="hardware_prop_dlink_switch" prompt="${UserInput:Prompt}" promptactionid="dlinkActionId" responseparserid="dlink_hardware_prop_parser" timeout="20000"/>
                        <Command commandstr="show system" messagesuffix="${LF}" parsercommandname="hardware_prop_dlink_switch" prompt="${UserInput:Prompt}" promptactionid="dlinkActionId" responseparserid="dlink_hardware_prop_parser" timeout="20000"/>
                    </Commands>
                </Protocol>
            </Protocols>
        </HardwareDetails>
    </NCMPersonality>
    <NCMDeviceSysOIDList>
        <NCMDeviceSysOID model="DGS_3400" ostype="[NA]" series="DGS_3400" sysoid=".1.3.6.1.4.1.171.10.70.3"/>
        <NCMDeviceSysOID model="DGS_3200" ostype="[NA]" series="DGS_3200" sysoid=".1.3.6.1.4.1.171.10.101.1"/>
        <NCMDeviceSysOID model="DGS_3324SR" ostype="[NA]" series="DGS_3324SR" sysoid=".1.3.6.1.4.1.171.10.59.5"/>
        <NCMDeviceSysOID model="DGS-3612G" ostype="NA" series="DGS-3600" sysoid=".1.3.6.1.4.1.171.10.70.9"/>
        <NCMDeviceSysOID model="DGS-1510-20" ostype="[NA]" series="DGS-1510" sysoid=".1.3.6.1.4.1.171.10.137.1.1"/>
    </NCMDeviceSysOIDList>
    <CustDeviceSysOIDList/>
    <PromptActionIds/>
</NCMDeviceTemplate>
