TestCases/SVT/AppService/AppServiceResource.ps1
Set-StrictMode -Version Latest class AppServiceResource:TestResource{ [bool] $RetainResource = $false AppServiceResource([TestCase] $testcase, [TestSettings] $testsettings):Base($testcase, $testsettings){ } #Setting the properties as required by this resource type. [void]SetDerivedResourceProps(){ $this.SetSubscriptionId() #Fetch the resource name from Template file if its not null if(![string]::IsNullOrEmpty($this.Template)){ $this.ResourceName = $this.GetResourceNameFromARMJson($this.Template, "ResourceName","defaultValue") } else{ $this.ResourceName = "azsdktestappservice" #Else set the default resource name } $this.ResourceType = "Microsoft.Web/sites" } #Since app service is upgradable, ARM deploy it to assign new properties instead of running any other functions. [void] InitializeResource( ){ $this.ARMDeployResource() } #Set App backup [void] SetAppBackup(){ try{ $StorageAccountContainerName = "appservicebackup" $storageAccountKey = Get-AzureRmStorageAccountKey -ResourceGroupName $this.ResourceGroupName -Name $this.Settings.CommonStorageAcctName $context = New-AzureStorageContext -StorageAccountName $this.Settings.CommonStorageAcctName -StorageAccountKey $storageAccountKey[0].Value $token = New-AzureStorageContainerSASToken -Name $StorageAccountContainerName -Permission rwdl -Context $context -ExpiryTime (Get-Date).AddMonths(1) $sasUrl = $context.BlobEndPoint + $StorageAccountContainerName + $token Edit-AzureRmWebAppBackupConfiguration -FrequencyInterval 1 -FrequencyUnit "Day" -RetentionPeriodInDays "0" -StartTime $(Get-Date) -KeepAtLeastOneBackup -ResourceGroupName $this.ResourceGroupName -Name $this.ResourceName -StorageAccountUrl $sasUrl } catch{ $_ } } #Add WEBSITE_LOAD_CERTIFICATES [void] AddWebsiteLoadCertificates(){ try{ $AppSettings = @{"WEBSITE_LOAD_CERTIFICATES" = "*"} Set-AzureRmWebAppSlot -ResourceGroupName $this.ResourceGroupName -Name $this.ResourceName -Slot 'Production' -AppSettings $AppSettings } catch{ $_ } } #Set App backup [void] RemoveAppBackup(){ try{ $StorageAccountContainerName = "appservicebackup" $storageAccountKey = Get-AzureRmStorageAccountKey -ResourceGroupName $this.ResourceGroupName -Name $this.Settings.CommonStorageAcctName $context = New-AzureStorageContext -StorageAccountName $this.Settings.CommonStorageAcctName -StorageAccountKey $storageAccountKey[0].Value $token = New-AzureStorageContainerSASToken -Name $StorageAccountContainerName -Permission rwdl -Context $context -ExpiryTime (Get-Date).AddMonths(1) $sasUrl = $context.BlobEndPoint + $StorageAccountContainerName + $token Edit-AzureRmWebAppBackupConfiguration -FrequencyInterval 1 -FrequencyUnit "Day" -RetentionPeriodInDays "10" -StartTime $(Get-Date) -KeepAtLeastOneBackup -ResourceGroupName $this.ResourceGroupName -Name $this.ResourceName -StorageAccountUrl $sasUrl } catch{ $_ } } #Add WEBSITE_LOAD_CERTIFICATES [void] RemoveWebsiteLoadCertificates(){ try{ $AppSettings = @{"WEBSITE_LOAD_CERTIFICATES" = ""} Set-AzureRmWebAppSlot -ResourceGroupName $this.ResourceGroupName -Name $this.ResourceName -Slot 'Production' -AppSettings $AppSettings } catch{ $_ } } #Setting the Subscription Id in App Service ARM template [void] SetSubscriptionId(){ try{ $templateFile = [CommonHelper]::GetRootPath() + "\TestCases\"+$this.TestCase.Feature+"\"+$this.TestCase.ModuleName+"\TestData\"+$this.TestCase.TemplateFileName if(!([string]::IsNullOrEmpty($templateFile))){ [CommonHelper]::SetValueIntoJson($templateFile, "subscriptionId", "defaultValue", $this.settings.SubscriptionId) } } catch{ [CommonHelper]::Log("Failed to set subscription id in template file!", [MessageType]::Error) } } } |