Skip to content

Commit 6816d48

Browse files
authored
Merge pull request #207 from troettinger/vnext
Add Drain/Resume
2 parents 910d5b7 + fe41b35 commit 6816d48

2 files changed

Lines changed: 142 additions & 4 deletions

File tree

Infrastructure/AzureStack.Infra.psm1

Lines changed: 86 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,9 @@ Function Get-AzSInfraRole{
162162
$subscription, $headers = (Get-AzureStackAdminSubTokenHeader -TenantId $tenantId -AzureStackCredentials $azureStackCredentials -EnvironmentName $EnvironmentName)
163163
$URI= "${ArmEndpoint}/subscriptions/${subscription}/resourceGroups/system.$region/providers/Microsoft.Fabric.Admin/fabricLocations/$region/InfraRoles?api-version=2016-05-01"
164164
$Roles=Invoke-RestMethod -Method GET -Uri $uri -ContentType 'application/json' -Headers $Headers
165-
$roles.value
165+
166+
$roles.value|select name,properties
167+
166168

167169
}
168170
export-modulemember -function Get-AzSInfraRole
@@ -428,7 +430,9 @@ Function Close-AzSAlert{
428430
[ValidateNotNull()]
429431
[System.Management.Automation.PSCredential] $azureStackCredentials,
430432

431-
[Parameter(Mandatory=$true, HelpMessage="The Azure Stack Administrator Environment Name")]
433+
434+
[Parameter(Mandatory=$true, HelpMessage="The Azure Stack Administrator Environment Name", ParameterSetName='closealert')]
435+
432436
[string] $EnvironmentName,
433437

434438
[Parameter(Mandatory=$false)]
@@ -449,7 +453,6 @@ Function Close-AzSAlert{
449453
$Alerts.properties.state = "Closed"
450454
$AlertUpdateBody = $Alerts | ConvertTo-Json
451455
$URI= "${ArmEndpoint}/subscriptions/${subscription}/resourceGroups/system.$region/providers/Microsoft.InfrastructureInsights.Admin/regionHealths/$region/Alerts/${alertname}?api-version=2016-05-01"
452-
$URI
453456
$Close=Invoke-RestMethod -Method PUT -Uri $uri -ContentType 'application/json' -Headers $Headers -Body $AlertUpdateBody
454457
$CloseRun=$Close.value
455458
$closeRun
@@ -713,7 +716,9 @@ Function Restart-AzSInfraRoleInstance{
713716
[ValidateNotNull()]
714717
[System.Management.Automation.PSCredential] $azureStackCredentials,
715718

716-
[Parameter(Mandatory=$true, HelpMessage="The Azure Stack Administrator Environment Name")]
719+
720+
[Parameter(Mandatory=$true, HelpMessage="The Azure Stack Administrator Environment Name", ParameterSetName='RestartInfraRoleInstance')]
721+
717722
[string] $EnvironmentName,
718723

719724
[string] $region = 'local',
@@ -787,6 +792,83 @@ $IPPoolBodyJson =$IPPoolBody |ConvertTo-Json
787792
}
788793
export-modulemember -function Add-AzSIPPool
789794

795+
796+
<#
797+
.SYNOPSIS
798+
Enable Maintenance Mode
799+
#>
800+
801+
Function Disable-AzSScaleUnitNode{
802+
[CmdletBinding(DefaultParameterSetName='DisableAzSScaleUnitNode')]
803+
Param(
804+
805+
[Parameter(Mandatory=$true, ParameterSetName='DisableAzSScaleUnitNode')]
806+
[ValidateNotNullorEmpty()]
807+
[String] $TenantId,
808+
809+
[Parameter(Mandatory=$true, ParameterSetName='DisableAzSScaleUnitNode')]
810+
[ValidateNotNullorEmpty()]
811+
[System.Management.Automation.PSCredential] $azureStackCredentials,
812+
813+
[Parameter(Mandatory=$true, HelpMessage="The Azure Stack Administrator Environment Name", ParameterSetName='DisableAzSScaleUnitNode')]
814+
[string] $EnvironmentName,
815+
816+
[Parameter(ParameterSetName='DisableAzSScaleUnitNode')]
817+
[string] $region = 'local',
818+
819+
[Parameter(Mandatory=$true, ParameterSetName='DisableAzSScaleUnitNode')]
820+
[string] $Name
821+
822+
)
823+
$ARMEndpoint = GetARMEndpoint -EnvironmentName $EnvironmentName -ErrorAction Stop
824+
825+
$subscription, $headers = (Get-AzureStackAdminSubTokenHeader -TenantId $tenantId -AzureStackCredentials $azureStackCredentials -EnvironmentName $EnvironmentName)
826+
$URI= "${ArmEndpoint}/subscriptions/${subscription}/resourceGroups/system.$region/providers/Microsoft.Fabric.Admin/fabricLocations/$region/scaleunitnodes/$name/StartMaintenanceMode?api-version=2016-05-01"
827+
$Drain=Invoke-RestMethod -Method Post -Uri $uri -ContentType 'application/json' -Headers $Headers
828+
$Drain
829+
830+
}
831+
export-modulemember -function Disable-AzSScaleUnitNode
832+
833+
834+
<#
835+
.SYNOPSIS
836+
Disable Maintenance Mode
837+
#>
838+
839+
Function Enable-AzSScaleUnitNode{
840+
[CmdletBinding(DefaultParameterSetName='EnableAzSScaleUnitNode')]
841+
Param(
842+
843+
[Parameter(Mandatory=$true, ParameterSetName='EnableAzSScaleUnitNode')]
844+
[ValidateNotNullorEmpty()]
845+
[String] $TenantId,
846+
847+
[Parameter(Mandatory=$true, ParameterSetName='EnableAzSScaleUnitNode')]
848+
[ValidateNotNullorEmpty()]
849+
[System.Management.Automation.PSCredential] $azureStackCredentials,
850+
851+
[Parameter(Mandatory=$true, HelpMessage="The Azure Stack Administrator Environment Name", ParameterSetName='EnableAzSScaleUnitNode')]
852+
[string] $EnvironmentName,
853+
854+
[Parameter(ParameterSetName='EnableAzSScaleUnitNode')]
855+
[string] $region = 'local',
856+
857+
[Parameter(Mandatory=$true, ParameterSetName='EnableAzSScaleUnitNode')]
858+
[string] $Name
859+
860+
)
861+
$ARMEndpoint = GetARMEndpoint -EnvironmentName $EnvironmentName -ErrorAction Stop
862+
863+
$subscription, $headers = (Get-AzureStackAdminSubTokenHeader -TenantId $tenantId -AzureStackCredentials $azureStackCredentials -EnvironmentName $EnvironmentName)
864+
$URI= "${ArmEndpoint}/subscriptions/${subscription}/resourceGroups/system.$region/providers/Microsoft.Fabric.Admin/fabricLocations/$region/scaleunitnodes/$name/StopMaintenanceMode?api-version=2016-05-01"
865+
$Resume=Invoke-RestMethod -Method Post -Uri $uri -ContentType 'application/json' -Headers $Headers
866+
$Resume
867+
868+
}
869+
export-modulemember -function Enable-AzSScaleUnitNode
870+
871+
790872
Function Set-AzSLocationInformation {
791873
Param(
792874
[Parameter(Mandatory = $true)]

Infrastructure/README.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,37 @@ The command does the following:
401401
- Adds an IP Pool
402402

403403

404+
### Enable Maintenance Mode
405+
406+
Does put a ScaleUnitNode in Maintenance Mode
407+
408+
```powershell
409+
$credential = Get-Credential
410+
Disable-AzSScaleUnitNode -TenantId $TenantID -AzureStackCredentials $credential -EnvironmentName "AzureStackAdmin" -Name NodeName
411+
```
412+
413+
Note: The cmdlet requires credentials to enable Maintenance Mode. Provide the administrator Azure Active Directory credentials, such as *&lt;Admin Account&gt;*@*&lt;mydirectory&gt;*.onmicrosoft.com or the ADFS credentials, to the prompt.
414+
415+
The command does the following:
416+
- Authenticates to the Azure Stack environment
417+
- Enables Maintenance Mode for a specified ScaleUnitNode
418+
419+
420+
### Disable Maintenance Mode
421+
422+
Does resume a ScaleUnitNode from Maintenance Mode
423+
424+
```powershell
425+
$credential = Get-Credential
426+
Enable-AzSScaleUnitNode -TenantId $TenantID -AzureStackCredentials $credential -EnvironmentName "AzureStackAdmin" -Name NodeName
427+
```
428+
429+
Note: The cmdlet requires credentials to disable Maintenance Mode. Provide the administrator Azure Active Directory credentials, such as *&lt;Admin Account&gt;*@*&lt;mydirectory&gt;*.onmicrosoft.com or the ADFS credentials, to the prompt.
430+
431+
The command does the following:
432+
- Authenticates to the Azure Stack environment
433+
- Resume from Maintenance Mode for a specified ScaleUnitNode
434+
404435
## Scenario Command Usage
405436
Demonstrates using multiple commands together for an end to end scenario.
406437

@@ -456,6 +487,31 @@ Get-AzSUpdateRun -AzureStackCredentials $credential -TenantID $TenantID -Environ
456487
Get-AzSUpdateSummary -AzureStackCredentials $credential -TenantID $TenantID -EnvironmentName "AzureStackAdmin"
457488
```
458489

490+
491+
### Perfmon FRU procedure
492+
```powershell
493+
#Review current ScaleUnitNode State
494+
$node=Get-AzSScaleUnitNode -TenantId $TenantID -AzureStackCredentials $credentials-EnvironmentName AzureStackAdmin
495+
$node.properties | fl
496+
497+
498+
#Enable Maintenance Mode for that node which drains all active resources
499+
Disable-AzSScaleUnitNode -TenantId $TenantID -AzureStackCredentials $credential -EnvironmentName "AzureStackAdmin" -Name $node.name
500+
501+
#Power Off Server using build in KVN or physical power button
502+
#BMC IP Address is returned by previous command $node.properties | fl
503+
#Apply FRU Procedure
504+
#Power On Server using build in KVN or physical power button
505+
506+
#Resume ScaleUnitNode from Maintenance Mode
507+
Enable-AzSScaleUnitNode -TenantId $TenantID -AzureStackCredentials $credential -EnvironmentName "AzureStackAdmin" -Name $node.name
508+
509+
#Validate ScaleUnitNode Status
510+
$node=Get-AzSScaleUnitNode -TenantId $TenantID -AzureStackCredentials $credentials-EnvironmentName AzureStackAdmin
511+
$node.properties | fl
512+
```
513+
514+
459515
### Set Azure Stack's Latitude and Longitude
460516

461517
This command modifies an Azure Stack instance's latitude and longitude location

0 commit comments

Comments
 (0)