@@ -374,7 +374,7 @@ function Remove-AzsRegistration{
374374
375375 # Remove registration resource from Azure
376376 Log- Output " Removing registration resource from Azure..."
377- Remove-RegistrationResource - ResourceId $registrationResource.ResourceId
377+ Remove-RegistrationResource - ResourceId $registrationResource.ResourceId - ResourceGroupName $ResourceGroupName
378378 }
379379 else
380380 {
@@ -792,7 +792,7 @@ Function UnRegister-AzsEnvironment{
792792 {
793793 Log- Output " Found registration resource in Azure: $ ( $registrationResource.ResourceId ) "
794794 Log- Output " Removing registration resource from Azure..."
795- Remove-RegistrationResource - ResourceId $registrationResource.ResourceId
795+ Remove-RegistrationResource - ResourceId $registrationResource.ResourceId - ResourceGroupName $ResourceGroupName
796796 }
797797 else
798798 {
@@ -1171,13 +1171,24 @@ function New-RegistrationResource{
11711171 }
11721172
11731173 Log- Output " Resource creation params: $ ( ConvertTo-Json $resourceCreationParams ) "
1174-
1174+ $resourceType = ' Microsoft.Azurestack/registrations '
11751175 do
11761176 {
11771177 try
11781178 {
1179+
1180+ # # Remove any existing locks on the resource group
1181+
1182+ $lock = Get-AzureRmResourceLock - LockName ' RegistrationResourceLock' - ResourceGroupName $ResourceGroupName - ResourceType $resourceType - ResourceName $RegistrationName - ErrorAction SilentlyContinue
1183+ if ($lock )
1184+ {
1185+ Write-Verbose " Unlocking Registration resource lock 'RegistrationResourceLock'..." - Verbose
1186+ Remove-AzureRmResourceLock - LockId $lock.LockId - Force
1187+ }
1188+
11791189 Log- Output " Creating resource group '$ResourceGroupName ' in location $ResourceGroupLocation ."
11801190 $resourceGroup = New-AzureRmResourceGroup - Name $ResourceGroupName - Location $ResourceGroupLocation - Force
1191+
11811192 break
11821193 }
11831194 catch
@@ -1214,6 +1225,19 @@ function New-RegistrationResource{
12141225 }
12151226 }
12161227 } while ($currentAttempt -lt $maxAttempt )
1228+
1229+
1230+ # # Registration resource is needed for syndication. Placing resource lock to prevent accidental deletion.
1231+ Write-Verbose - Message " Registration resource $RegistrationName is needed for syndication. Placing resource lock to prevent accidental deletion."
1232+ $lockNotes = " Registration resource $RegistrationName is needed for syndication. Placing resource lock to prevent accidental deletion."
1233+ New-AzureRmResourceLock - LockLevel CanNotDelete `
1234+ - LockNotes $lockNotes `
1235+ - LockName ' RegistrationResourceLock' `
1236+ - ResourceName $RegistrationName `
1237+ - ResourceGroupName $ResourceGroupName `
1238+ - ResourceType $resourceType `
1239+ - Force - Verbose
1240+ Write-Verbose - Message " Resource lock placed successfully."
12171241}
12181242
12191243<#
@@ -1622,7 +1646,10 @@ function Remove-RegistrationResource{
16221646[CmdletBinding ()]
16231647 param (
16241648 [Parameter (Mandatory = $true )]
1625- [String ] $ResourceId
1649+ [String ] $ResourceId ,
1650+
1651+ [Parameter (Mandatory = $false )]
1652+ [String ] $ResourceGroupName = ' azurestack'
16261653 )
16271654
16281655 $currentAttempt = 0
@@ -1632,6 +1659,18 @@ function Remove-RegistrationResource{
16321659 {
16331660 try
16341661 {
1662+ # # Remove any existing Resource level lock before deleting the resource
1663+ $existingRegistrationResource = Get-AzureRmResource - ResourceId $ResourceId
1664+ $resourceName = $existingRegistrationResource.Name
1665+
1666+ $resourceType = ' Microsoft.Azurestack/registrations'
1667+ $lock = Get-AzureRmResourceLock - LockName ' RegistrationResourceLock' - ResourceGroupName $ResourceGroupName - ResourceType $resourceType - ResourceName $resourceName - ErrorAction SilentlyContinue
1668+ if ($lock )
1669+ {
1670+ Write-Verbose " Removing Registration resource lock 'RegistrationResourceLock'..." - Verbose
1671+ Remove-AzureRmResourceLock - LockId $lock.LockId - Force
1672+ }
1673+
16351674 Remove-AzureRmResource - ResourceId $ResourceId - Force - Verbose
16361675 break
16371676 }
0 commit comments