Panel | ||||
---|---|---|---|---|
| ||||
|
...
For requirementsprerequisites, see refer to Deploying the Survivable Branch Appliance and Using REST with Powershell 3 to Access REST.
The action below defines the ogin login resource used to login to log into the Sonus SBC REST API. This is the first request that needs to be made before you can access any of the other REST Resources on the Sonus SBC 1000/2000 system. Using Refer to Resource - login.
Code Block |
---|
### Allow self Sign Cert add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class IDontCarePolicy : ICertificatePolicy { public IDontCarePolicy() {} public bool CheckValidationResult( ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy ### Login $BodyValue = "Username=restuser&Password=restpass" $url = "https://134.56.226.215/rest/login" $Result = Invoke-RestMethod -Uri $url -Method Post -Body $BodyValue -SessionVariable ps |
This The action below enables you to load new software into the Recovery partition of the ASM through USB. See Refer to Resource - sbaconfig.
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaconfig?action=asmupdaterecoverypartition" Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps |
...
The action below retrieves the information of the factory image information available on ASM. See Refer to Resource - asmfactoryimage.
...
The action below retrieves the detailed information of the factory image information on ASM. See Refer to Resource - asmfactoryimage.
...
This The action below re-initializes the ASM and puts it in default factory state. See Refer to Resource - sbaconfig.
...
This The action below modifies the SBA configuration resource. This is the first step in setting up the SBA. See Refer to Resource - sbaconfig.
...
This The action below configures the domain in which the SBA will connect. See Refer to Resource - sbaconfig.
...
This The action below performs a number of low-level steps necessary to deploy the ASM packages. See Refer to Resource - sbaconfig.
...
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>22</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>1502</rt_Duration> <rt_StatusText>Complete</rt_StatusText> <rt_AllActionsBitmap>3</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root> |
...
This The action below causes the Communications Server (CS) to begin configuration replication with the domain. This is a necessary step for bringing up the CS configuration, as well as receiving updates from the domain. See Refer to Resource - sbaconfig.
...
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>20</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>268</rt_Duration> <rt_StatusText>replication started</rt_StatusText> <rt_AllActionsBitmap>7</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root> |
...
This The action below activates the Communications Server (CS) and must be done before the certificates are installed. Using Refer to Resource - sbaconfig.
...
Code Block |
---|
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root> |
...
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>7</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>12</rt_Duration> <rt_StatusText>Activation Complete</rt_StatusText> <rt_AllActionsBitmap>15</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root> |
...
This resource defines the generatecsr action on the SBA CSR Resource Resource. It returns the CSR as the response. It is also able to auto-submit the request. Using Refer to Resource - sbacsr.
Code Block |
---|
$CA = "RDC.UX2013.COM\UX2013-RDC-CA" $CALogin = "ux2013\Administrator" $CAPassword = "Password1" $Domain = "ux2013.com" $Email = "Adrien@ux2013.com" $Organization = "SONUS" $OU = "AUTOMAITON" $City = "FREMONT" $State = "CA" $Country = "US" $CsrTemplate = "WebServer" $KeySize = 2048 ########## $BodyValue = "CA=$CA&CALogin=$CALogin&CAPassword=$CAPassword&Domain=$Domain&Email=$Email&Organization=$Organization&OU=$OU&City=$City&State=$State&Country=$Country&CsrTemplate=$CsrTemplate&KeySize=$KeySize" $url = "https://134.56.226.215/rest/sbacsr?action=generatecsr" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps |
...
Code Block |
---|
<?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> </root> |
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>14</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>11</rt_Duration> <rt_StatusText>Certificate successfully applied</rt_StatusText> <rt_AllActionsBitmap>31</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root> |
This The action below starts the network daemons for the services indicated. See Refer to Resource - sbaconfig.
...
Code Block |
---|
<?xml version="1.0"?><root> <status> <http_code>200</http_code> </status> </root> |
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>1</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>139</rt_Duration> <rt_StatusText>Services successfully started (16)</rt_StatusText> <rt_AllActionsBitmap>63</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root> |
This The action below applies a security template to the node to prevent unauthorized changes from being made to the system. See Refer to Resource - sbaconfig.
...
Code Block |
---|
<?xml version="1.0"?><root> <status> <http_code>200</http_code> </status> </root> |
Code Block |
---|
$url = "https://134.56.226.215/rest/sbaactionstatus" Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs <?xml version="1.0"?> <root> <status> <http_code>200</http_code> </status> <sbaactionstatus href="https://134.56.226.215/rest/sbaactionstatus"> <rt_Success>1</rt_Success> <rt_ActionType>21</rt_ActionType> <rt_PercentComplete>100</rt_PercentComplete> <rt_Duration>1</rt_Duration> <rt_StatusText>Security Template Applied</rt_StatusText> <rt_AllActionsBitmap>127</rt_AllActionsBitmap> <rt_ActionStartTime>0</rt_ActionStartTime> </sbaactionstatus> </root> |
...
To confirm that all the SBA services are running properly, check the status via refer to Viewing the SBA Operational Status to check the status.
Code Block |
---|
$url = "https://134.56.226.215/rest/asmfactoryimage/1" $Result = Invoke-RestMethod -Uri $url -Method GET -WebSession $ps |
...
Code Block |
---|
### 1. Login
$NodeUrl = "134.56.226.215"
$NodeLogin = "restuser"
$NodePassword = "restpass"
### 2. Re-initialize the ASM
$LyncVersion = "Lync 2013"
### 3. Configuring the ASM IP Settings
$DHCPEnabled = 0
$ipv4Address = "134.56.226.214"
$ipv4Netmask = "255.255.255.0"
$ipv4Gateway = "134.56.226.5"
$RemoteDesktopEnabled = 1
$DNSServer1 = "134.56.227.32"
$DNSServer2 = "134.56.226.75"
$AclEnable = 1
### 4. Update SbcComms
$SbcCommsFilePath = "c:\setup.msi"
### 5. Joining the ASM to a Domain
$hostName = "AUTO-SBA226-214"
$domainName = "UX2013.COM"
$userName = "UX2013\administrator"
$userPassword = "Password1"
|
Code Block |
---|
### 7. Generate and Import an SBA Certificate $CA = "RDC.UX2013.COM\UX2013-RDC-CA" $CALogin = "ux2013\Administrator" $CAPassword = "Password1" $Domain = "ux2013.com" $Email = "Adrien@ux2013.com" $Organization = "SONUS" $OU = "AUTOMAITON" $City = "FREMONT" $State = "CA" $Country = "US" $CsrTemplate = "WebServer" $KeySize = 2048 ### 10. Install the Latest Lync SBA Cumulative Update (CU) $CUFilePath = "c:\CU.pkg" ################################### #### Define some function Helper ################################### |
Code Block |
---|
### Re-initialize the ASM with the correct ASM Image function SearchImageDirectoryName { Param($MyLyncVersion, $MyNodeUrl, $MyPs) $url = "https://$MyNodeUrl/rest/asmfactoryimage" $ImageCmd = Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs if ((BasicHandler $ImageCmd) -ne 1) { write-host "Failed on SearchImageDirectoryName: "(BasicHandler $ImageCmd) return 0 } [xml]$ImageCmdXml= $ImageCmd.Substring(5) foreach ($image in $ImageCmdXml.root.asmfactoryimage_list.asmfactoryimage_pk.href) { $url = $image $ImageDetail = Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs [xml]$ImageDetailXml= $ImageDetail.Substring(5) if($ImageDetailXml.root.asmfactoryimage.Description.contains($MyLyncVersion)) { return $ImageDetailXml.root.asmfactoryimage.ImageDirectoryName} } return 0 } ### Return the result of the request Function BasicHandler { Param($MyResult) |
Code Block |
---|
[xml]$XmlResult = $MyResult.Substring(5)
if($XmlResult.root.status.http_code.contains("200")) {
return 1
} else {
return "Error Code:<"+$XmlResult.root.status.app_status.app_status_entry.code+"> Param:<"+$XmlResult.root.status.app_status.app_status_entry.params+">"
}
}
### Return the result of the request
Function BasicHandlerCurl {
Param($MyResult)
$FiltredMyResult = ""
foreach ($line in $MyResult) {
if ($line.StartsWith("<")) {
$FiltredMyResult += $line
} elseif ($line.StartsWith(" ")) {
$FiltredMyResult += $line
}
}
[xml]$XmlResult = $FiltredMyResult
if($XmlResult.root.status.http_code.contains("200")) {
return 1
} else {
return "Error Code:<"+$XmlResult.root.status.app_status.app_status_entry.code+"> Param:<"+$XmlResult.root.status.app_status.app_status_entry.params+">"
}
} |
Code Block |
---|
### Return the result of the last action
function LookCompletionStatus {
Param($MyNodeUrl, $MyPs)
$url = "https://$MyNodeUrl/rest/sbaactionstatus"
$timer = 0
while($timer -lt 3600) {
$Result = Invoke-RestMethod -Uri $url -Method GET -WebSession $MyPs
if ((BasicHandler $Result) -ne 1) { return 0}
[xml]$FinalResult= $Result.Substring(5)
if ($FinalResult.root.sbaactionstatus.rt_Success -eq 1) {
if ($FinalResult.root.sbaactionstatus.rt_PercentComplete -eq 100) { return 1 }
} else {
return $FinalResult.root.sbaactionstatus.rt_StatusText
}
sleep 10
$timer += 10
write-host "- "$FinalResult.root.sbaactionstatus.rt_PercentComplete"% "$FinalResult.root.sbaactionstatus.rt_StatusText
}
return "Timout out"
}
###################################
#### Main Code
###################################
$ActualStep = 0 |
Code Block |
---|
### 1. Login
$ActualStep = "1. Login"
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class IDontCarePolicy : ICertificatePolicy {
public IDontCarePolicy() {}
public bool CheckValidationResult(
ServicePoint sPoint, X509Certificate cert,
WebRequest wRequest, int certProb) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy
$BodyValue = "Username=$NodeLogin&Password=$NodePassword"
$url = "https://$NodeUrl/rest/login"
$Result = Invoke-RestMethod -Uri $url -Method Post -Body $BodyValue -SessionVariable ps
if ((BasicHandler $Result) -ne 1) {
write-host "Failed on "$ActualStep": "(BasicHandler $Result)
return 0
}
|
Code Block |
---|
### 2. Re-initialize the ASM $ActualStep = "2. Re-initialize the ASM" $dirName = SearchImageDirectoryName $LyncVersion $NodeUrl $ps if ($dirName -eq 0) { write-host $ActualStep" Failed: Unable to find the proper ASM Image" return 0 } $BodyValue = "dirName=$dirName" $url = "https://$NodeUrl/rest/sbaconfig?action=asmreinitialize" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } |
Code Block |
---|
### 3. Configuring the ASM IP Settings $ActualStep = "3. Configuring the ASM IP Settings" $BodyValue = "DHCPEnabled=$DHCPEnabled&ipv4Address=$ipv4Address&ipv4Netmask=$ipv4Netmask&ipv4Gateway=$ipv4Gateway&RemoteDesktopEnabled=$RemoteDesktopEnabled&DNSServer1=$DNSServer1&DNSServer2=$DNSServer2&AclEnable=$AclEnable" $url = "https://$NodeUrl/rest/sbaconfig" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } ### 4. Update SbcComms ### 5. Joining the ASM to a Domain $ActualStep = "5. Joining the ASM to a Domain" $BodyValue = "hostName=$hostName&domainName=$domainName&userName=$userName&userPassword=$userPassword" $url = "https://$NodeUrl/rest/sbaconfig?action=joindomain" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } |
Code Block |
---|
if ((LookCompletionStatus $NodeUrl $ps) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
### 6. Deploying the SBA
$ActualStep = "6. Deploying the SBA"
$url = "https://$NodeUrl/rest/sbaconfig?action=deploy"
$Result = Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
if ((BasicHandler $Result) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
if ((LookCompletionStatus $NodeUrl $ps) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
$url = "https://$NodeUrl/rest/sbaconfig?action=startreplication"
$Result = Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
if ((BasicHandler $Result) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
|
Code Block |
---|
if ((LookCompletionStatus $NodeUrl $ps) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
$url = "https://$NodeUrl/rest/sbaconfig?action=activatewithlync"
$Result = Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps
if ((BasicHandler $Result) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
if ((LookCompletionStatus $NodeUrl $ps) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
### 7. Generate and Import an SBA Certificate
$ActualStep = "7. Generate and Import an SBA Certificate"
$BodyValue = "CA=$CA&CALogin=$CALogin&CAPassword=$CAPassword&Domain=$Domain&Email=$Email&Organization=$Organization&OU=$OU&City=$City&State=$State&Country=$Country&CsrTemplate=$CsrTemplate&KeySize=$KeySize"
$url = "https://$NodeUrl/rest/sbacsr?action=generatecsr"
$Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
|
Code Block |
---|
if ((BasicHandler $Result) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
if ((LookCompletionStatus $NodeUrl $ps) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
### 8. Starting the SBA Services
$ActualStep = "8. Starting the SBA Services"
$BodyValue = "serviceName=16"
$url = "https://$NodeUrl/rest/sbaconfig?action=enablesvc"
$Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps
if ((BasicHandler $Result) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
if ((LookCompletionStatus $NodeUrl $ps) -ne 1) {
write-host $ActualStep" Failed: "(BasicHandler $Result)
return 0
}
|
Code Block |
---|
### 9. Applying an SBA Security Template $ActualStep = "9. Applying an SBA Security Template" $BodyValue = "templateType=0&sbaInstallFilename=0" $url = "https://$NodeUrl/rest/sbaconfig?action=applysectemplate" $Result = Invoke-RestMethod -Uri $url -Method POST -Body $BodyValue -WebSession $ps if ((BasicHandler $Result) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } if ((LookCompletionStatus $NodeUrl $ps) -ne 1) { write-host $ActualStep" Failed: "(BasicHandler $Result) return 0 } ### 10. Install the Latest Lync SBA Cumulative Update |
Pagebreak |
---|