#---------------------------------------------------------------------------------------#
# #
# GLOBAL VARIABLE SECTION #
# #
#---------------------------------------------------------------------------------------#
$url = "http://FabricInterconnectIP/nuova"
$numServers = "1"
$zoneFileLocation = "C:\ZoningOutputDirectory\"
#---------------------------------------------------------------------------------------#
# #
# FUNCTIONS SECTION #
# #
#---------------------------------------------------------------------------------------#
#SendUCScmd with optional command(xml) and xml filter(switch statement)
function SendUCScmd{
param([string]$command, [string]$xmlFilter)
$request = [System.Net.HttpWebRequest] [System.Net.HttpWebRequest]::Create($url)
$request.Method = "POST"
$request.ContentType = "text/xml"
$sendData = new-object System.IO.StreamWriter($request.GetRequestStream())
$sendData.Write($command)
$sendData.Close()
$response = $request.GetResponse()
$sr = new-object System.IO.StreamReader($response.GetResponseStream())
$xml = [xml]$sr.ReadToEnd()
switch ($xmlFilter)
{
"login" {$output = $xml.aaaLogin.outCookie}
"serverName" {$output = $xml.lsInstantiateNTemplate.outConfigs.lsServer.name}
"wwnn" {$output = $xml.configResolveChildren.outConfigs.vnicFcNode.addr}
"wwpn" {$output = $xml.configResolveChildren.outConfigs.vnicFcIf.initiator}
}
return $output
}
#End SendUCScmd Function
#createZoning Function - creates the Cisco MDS Zone configuration Files for each HBA
function createZoning{
param ([string]$hba0, [string]$hba1, [string]$hbaName0, [string]$hbaName1)
$hba0File = New-Item -type file "$zoneFileLocation$hbaName0.txt" -Force
$hba1File = New-Item -type file "$zoneFileLocation$hbaName1.txt" -Force
Add-Content $hba0File "fcalias name $hbaName0 vsan 10"
Add-Content $hba0File "`tmember pwwn $hba0"
Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPA0 vsan 10"
Add-Content $hba0File "`tmember fcalias $hbaName0 "
Add-Content $hba0File "`tmember fcalias CX380-1`_SPA0"
Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPA2 vsan 10"
Add-Content $hba0File "`tmember fcalias $hbaName0"
Add-Content $hba0File "`tmember fcalias CX380-1`_SPA2"
Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPB1 vsan 10"
Add-Content $hba0File "`tmember fcalias $hbaName0"
Add-Content $hba0File "`tmember fcalias CX380-1`_SPB1"
Add-Content $hba0File "zone name $hbaName0`_CX380-1`_SPB3 vsan 10"
Add-Content $hba0File "`tmember fcalias $hbaName0"
Add-Content $hba0File "`tmember fcalias CX380-1`_SPB3"
Add-Content $hba0File "zoneset name ActiveZoneSet vsan 20"
Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPA0"
Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPA2"
Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPB1"
Add-Content $hba0File "`tmember $hbaName0`_CX380-1`_SPB3"
Add-Content $hba1File "fcalias name $hbaName1 vsan 20"
Add-Content $hba1File "`tmember pwwn $hba1"
Add-Content $hba1File "zone name $hbaName1`_CX380-1`_SPA1 vsan 20"
Add-Content $hba1File "`tmember fcalias $hbaName1"
Add-Content $hba1File "`tmember fcalias CX380-1`_SPA1"
Add-Content $hba1File "zone name$hbaName1`_CX380-1`_SPA3 vsan 20"
Add-Content $hba1File "`tmember fcalias $hbaName1"
Add-Content $hba1File "`tmember fcalias CX380-1`_SPA3"
Add-Content $hba1File "zone name $hbaName1`_CX380-1`_SPB0 vsan 20"
Add-Content $hba1File "`tmember fcalias $hbaName1"
Add-Content $hba1File "`tmember fcalias CX380-1`_SPB0"
Add-Content $hba1File "zone name $hbaName1`_CX380-1`_SPB2 vsan 20"
Add-Content $hba1File "`tmember fcalias $hbaName1"
Add-Content $hba1File "`tmember fcalias CX380-1`_SPB2"
Add-Content $hba1File "zoneset name ActiveZoneSet vsan 20"
Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPA1"
Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPA3"
Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPB0"
Add-Content $hba1File "`tmember $hbaName1`_CX380-1`_SPB2"
}
#End createZoning Funcation
#---------------------------------------------------------------------------------------#
# #
# USER INPUT SECTION #
# #
#---------------------------------------------------------------------------------------#
#Gather Parameter Routine
#Get Username
do
{
$username = Read-Host "Please enter the username"
if ($username -eq "")
{Write-Host "`n`nYou must enter a username"}
}
while ($username -eq "")
#Get Password
do
{
$password = Read-Host -assecurestring "`n`nPlease enter the password"
if ($password -eq "")
{Write-Host "`n`nYou must enter a password"}
}
while ($password -eq "")
#Get Server Type and set $serverDN
do
{
$serverDN = Read-Host "`n`n[1] = ESX`n[2] = Windows`n[3] = SQL`nWhat type of server"
if ($serverDN -eq ""){Write-Host "`n`nYou must choose one"}
if ($serverDN -eq "1"){$serverDN = "org-root/ls-site-esx"; $serverPrefix = "site-esx0"}
if ($serverDN -eq "2"){$serverDN = "org-root/ls-site-sql"
do
{
$serverPrefix = Read-Host "`n`nPlease enter the server prefix (e.g., for ESX = site-esx0)"
if ($serverPrefix -eq "")
{Write-Host "`n`nYou must enter a prefix"}
if ($serverPrefix -ne ""){Write-Host "Your service profile(s) has been created`n`n"}
}
while ($serverPrefix -eq "") }
if ($serverDN -eq "3"){$serverDN = "org-root/ls-site-win"
do
{
$serverPrefix = Read-Host "`n`nPlease enter the server prefix (e.g., for ESX = site-esx0)"
if ($serverPrefix -eq "")
{Write-Host "`n`nYou must enter a prefix"}
if ($serverPrefix -ne ""){Write-Host "Your service profile(s) has been created`n`n"}
}
while ($serverPrefix -eq "") }
}
while ($serverDN -eq "")
#---------------------------------------------------------------------------------------#
# #
# EXECUTION SECTION #
# #
#---------------------------------------------------------------------------------------#
#Login Process
$aaaLogin = '""'
$outCookie = SendUCScmd -command $aaaLogin -xmlFilter "login"
#Server Creation From Template Command
$buildCommand = '""'
$serverName = SendUCScmd -command $buildCommand -xmlFilter "serverName"
#Retrieve Server Information
$wwnncmd = '""'
$hba0cmd = '""'
$hba1cmd = '""'
$wwnn = SendUCScmd -command $wwnncmd -xmlFilter "wwnn"
$hba0 = SendUCScmd -command $hba0cmd -xmlFilter "wwpn"
$hba1 = SendUCScmd -command $hba1cmd -xmlFilter "wwpn"
#Create Zone Configuration Files
$hbaName0 = $serverName + "-hba0"
$hbaName1 = $serverName + "-hba1"
createZoning -hba0 $hba0 -hba1 $hba1 -hbaName0 $hbaName0 -hbaName1 $hbaName1
#Logout Process
$aaaLogout = ''
SendUCScmd ($aaaLogout)