1. Software Stack Installation

The DolphinExpressIxInstall.ps1 script can be used to install binaries needed on a machine belonging to the interconnect topology or on a machine used to manage the topology.

The script can be downloaded from http://ww.dolphinics.no/download/DolphinExpressIxInstall.ps1.

PS C:\> Get-Content .\DolphinExpressIxInstall.ps1

param([switch]$Compute, [switch]$Management, [switch]$ComputeAndManagement)

$start = Get-Date;
$s = $Compute.GetHashCode()+$Management.GetHashCode()+$ComputeAndManagement.GetHashCode();
if($s -gt 1) {
    Write-Host "You can specify only one switch to this script: -Compute, -ComputeAndManag
ement, -Management";
    exit 1;
}

if($s -eq 0) {
    Write-Host "This script installs the PCI Express software stack.
Use one of the following switches:";
    Write-Host "-Compute   " -ForegroundColor Yellow -NoNewline;
    Write-Host "to install the binaries that compose a Cluster Node";
    Write-Host "-Management " -ForegroundColor Yellow -NoNewline;
    Write-Host "to install the Cluster Management Node binaries";
    Write-Host "-ComputeAndManagement " -ForegroundColor Yellow -NoNewline;
    Write-Host "to install the binaries on a machine that is both a Cluster Node and a Cluster Management Node";
    exit 1;
}

$os = (Get-WmiObject Win32_OperatingSystem).Version.Substring(0,3) -replace "\.","";
& reg query HKU\S-1-5-19 2>&1 | Out-Null
if($LASTEXITCODE) {
    Write-Host "The script requires administrative privileges.";
    if($os -ge 60) {
        Write-Host "On Window Vista/Server 2008 and above, type
    cmd
on the Start menu, right click on the result and select
    Run as administrator.
Relaunch the script.";
    }
    exit 1;
}

if($Compute) { 
  Write-Host "
With -Compute, the SW stack is installed from the command line. The stack is made by: Driv
ers, Demos, ExpressWay, NMPI and SuperSockets components.

The GUI alternative is to launch the MSI without any parameters and specify Compute on the
Setup Type page.
";
} elseif($ComputeAndManagement) {
    Write-Host "
With -ComputeAndManagement, the SW stack is installed from the command line and the interc
onnect topology is specified and propagated. The stack is made by: Drivers, Demos, Express
Way, NMPI, Administration, Graphical and Manager components.

After the installation, the configuration stage asks for the topology characteristics and 
calls dis_mkconf. The tool is called while the dis_networkmgr service is st
opped. The new topology characteristics are propagated to each interconnected Cluster Node after s
tarting dis_networkmgr service.

The GUI alternative is to launch the MSI without any parameters and specify Custom on the 
Setup Type page, then select each of the aforementioned components.
"
} elseif($Management) {
    Write-Host "
With -Management, the SW stack is installed from the command line and the interconnect top
ology is specified and propagated. The stack is made by: Administration, Graphical and Man
ager components.

After the installation, the configuration stage asks for the topology characteristics and 
calls dis_mkconf. This tool is called while the dis_networkmgr service is s
topped. The new topology characteristics are propagated to each interconnected Cluster Node after 
starting dis_networkmgr service.
    
The GUI alternative is to launch the MSI without any parameters and specify Management on 
the Setup Type page.
";
}

Write-Host "Please specify the path to MSI package: " -NoNewline;
$msi = Read-Host;

$gi = gi $msi;
$msi = $gi.Name;
$full = $gi.FullName;

if($Compute -or $ComputeAndManagement) {
    $msiargs = "ADDLOCAL=Drivers,Demos,ExpressWay,NMPI";
    if($ComputeAndManagement) {
        $msiargs = "${msiargs},Administration,Graphical,Manager";
    }
    Write-Host "
msiexec /i $msi $msiargs /qb" -ForegroundColor Yellow;
    if($os -ge 60) {
        Write-Host "
    During the process you will be asked for permission to install each driver.
    Acknowledge the Security Warning by clicking on " -NoNewLine;
        Write-Host "Install" -ForegroundColor Yellow -NoNewLine;
        Write-Host ". A failure to install drivers may appear in the TrayIcon area.
";
    } else {
        Write-Host "
    A New Hardware Wizard can pop up during the drivers installation.
    You can either " -NoNewLine;
        Write-Host "Cancel" -ForegroundColor Yellow -NoNewLine;
        Write-Host " it or leave it as it is. It disappears by itself in a few seconds.
";
    }
    $a = Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList "/i", $full, $msiargs,
"/qb" -PassThru;
    if($a.ExitCode -ne 0 -and $a.ExitCode -ne 3010) {
        Write-Host "The installation procedure failed.";
        exit 1;
    }
} else {
    $msiargs = "ADDLOCAL=Administration,Graphical,Manager";
    Write-Host "
msiexec /i $msi $msiargs /qb
" -ForegroundColor Yellow;
    $a = Start-Process msiexec.exe -Wait -NoNewWindow -ArgumentList "/i", $full, $msiargs,
"/qb" -PassThru;
    if($a.ExitCode -ne 0) {
        Write-Host "The installation procedure failed.";
        exit 1;
    }
}

if($Management -or $ComputeAndManagement) {
    Write-Host "Please specify the Cluster Nodes that belong to the interconnect topology.
Separate the names with spaces: " -NoNewLine;
    $nodes = Read-Host;
    $nodes = $nodes.Trim() -split " +";
    do {
        Write-Host "Please specify the topology type: [" -NoNewline;
        Write-Host "D" -ForegroundColor Yellow -NoNewline;
        Write-Host "]irect, [" -NoNewline;
        Write-Host "S" -ForegroundColor Yellow -NoNewline;
        Write-Host "]witch: " -NoNewline;
        $t = Read-Host;
        $t = $t.ToLower();
    } until ($t -eq "d" -or $t -eq "s");
    if($t -eq "d") {
        $t = 2;
    } else {
        $t = 9;
    }
    Write-Host "
Stop-Service dis_networkmgr" -ForegroundColor Yellow;
    Stop-Service dis_networkmgr -ErrorAction SilentlyContinue;
    Write-Host "& '${env:ProgramFiles}\Dolphin Express IX\Util\dis_mkconf.e
xe' -fabrics 1 -sctt $t -nodes $nodes" -ForegroundColor Yellow;
    & "${env:ProgramFiles}\Dolphin Express IX\Util\dis_mkconf.exe" -fabrics
1 -sctt $t -nodes $nodes | Out-Null;
    Write-Host "Start-Service dis_networkmgr
" -ForegroundColor Yellow;
    Start-Service dis_networkmgr;
    Write-Host "Launching dis_admin. Press Ctrl+O to connect to localhost and view the inter
connect status. Launch applications from " -NoNewLine;
    Write-Host "Cluster/Run Application" -ForegroundColor Yellow -NoNewLine;
    Write-Host " menu.
";
    Start-Process "${env:ProgramFiles}\Dolphin Express IX\Util\dis_admin.exe";
}
$stop = Get-Date;
$diff = $stop.Subtract($start);
Write-Host "Installation time is",$diff.Minutes,"min,",$diff.Seconds,"sec.
";
if($a.ExitCode -eq 3010) {
    Write-Host "The software stack installation demands a reboot.
";
}