TestCases/SVT/AnalysisServices/AnalysisServicesResource.ps1
Set-StrictMode -Version Latest class AnalysisServicesResource:TestResource{ AnalysisServicesResource([TestCase] $testcase, [TestSettings] $testsettings):Base($testcase, $testsettings){ } #Setting the properties as required by this resource type. [void]SetDerivedResourceProps(){ $this.SetAdmin() #Pick the resource name from Params file if its not null if(![string]::IsNullOrEmpty($this.Params)){ $this.ResourceName = $this.GetResourceNameFromARMJson($this.Params, "ResName", "value") } else{ $this.ResourceName = "azsktestanalysisservice" #Else set the default resource name } $this.ResourceType = "Microsoft.AnalysisServices/servers" } #Set Two Analysis Service Admin [void] AddTwoAnalysisServiceAdmin(){ try{ if($this.ProvisioningState -eq "Succeeded"){ if(($this.settings.EmailAccounts | Measure-Object).Count -gt 1){ [string] $emailAccounts = ($this.settings.EmailAccounts | Select-Object -ExpandProperty Name) -join "," set-azurermanalysisservicesserver -Name $this.ResourceName -ResourceGroupName $this.ResourceGroupName -Administrator $emailAccounts } else{ [CommonHelper]::Log("2 Email accounts are not configured, not able to set correct properties for the test case!", [MessageType]::Warning) } } } catch{ [CommonHelper]::Log("Error while setting the two Analysis Services Admin for: " + $this.ResourceName, [MessageType]::Error) } } #Set Three Analysis Service Admin [void] AddThreeAnalysisServiceAdmin() { try{ if($this.ProvisioningState -eq "Succeeded"){ if(($this.settings.EmailAccounts | Measure-Object).Count -gt 2){ [string] $emailAccounts = ($this.settings.EmailAccounts | Select-Object -ExcludeProperty *) -join "," set-azurermanalysisservicesserver -Name $this.ResourceName -ResourceGroupName $this.ResourceGroupName -Administrator $emailAccounts } else{ [CommonHelper]::Log("3 Email accounts are not configured, not able to set correct properties for the test case!", [MessageType]::Warning) } } } catch{ [CommonHelper]::Log("Error while setting the three Analysis Services Admin for:" + $this.ResourceName, [MessageType]::Error) } } #Reset Analysis Service with default analysis service admin [void] AddDefaultAnalysisServiceAdmin() { try{ if($this.ProvisioningState -eq "Succeeded"){ if(($this.settings.EmailAccounts | Measure-Object).Count -gt 0){ if(($this.settings.EmailAccounts | Measure-Object).Count -gt 1){ set-azurermanalysisservicesserver -Name $this.ResourceName -ResourceGroupName $this.ResourceGroupName -Administrator $this.settings.EmailAccounts[0] } else{ set-azurermanalysisservicesserver -Name $this.ResourceName -ResourceGroupName $this.ResourceGroupName -Administrator $this.settings.EmailAccounts } } else{ [CommonHelper]::Log("No email account is configured, please check the Test Settings file!", [MessageType]::Error) $this.ProvisioningState = "Failed" } } } catch{ [CommonHelper]::Log("Error while setting the default Analysis Services Admin for:" + $this.ResourceName, [MessageType]::Error) } } #Pause Analysis Services [void] PauseAnalysisServices() { try{ if($this.ProvisioningState -eq "Succeeded"){ #Getting Azure Resource details $resourceDetails = Get-AzureRmAnalysisServicesServer -Name $this.ResourceName -ResourceGroupName $this.ResourceGroupName -ErrorAction Stop if($resourceDetails.State -eq "Succeeded") { #Pause Analysis Service Suspend-AzureRmAnalysisServicesServer -ResourceGroupName $this.ResourceGroupName -Name $this.ResourceName } } } catch{ [CommonHelper]::Log("Error while pausing Analysis Services" + $this.ResourceName, [MessageType]::Error) } } #Start Analysis Services [void] StartAnalysisServices() { try{ if($this.ProvisioningState -eq "Succeeded"){ #Getting Azure Resource details $resourceDetails = Get-AzureRmAnalysisServicesServer -Name $this.ResourceName -ResourceGroupName $this.ResourceGroupName -ErrorAction Stop if($resourceDetails.State -eq "Paused") { #Start Analysis Service Resume-AzureRmAnalysisServicesServer -ResourceGroupName $this.ResourceGroupName -Name $this.ResourceName } } } catch{ [CommonHelper]::Log("Error while re-starting Analysis Services :" + $this.ResourceName, [MessageType]::Error) } } #Setting the admin field value in parameters file [void] SetAdmin(){ try{ $paramFile = [CommonHelper]::GetRootPath() + "\TestCases\"+$this.TestCase.Feature+"\"+$this.TestCase.ModuleName+"\TestData\"+$this.TestCase.ParamFileName if(!([string]::IsNullOrEmpty($paramFile))){ if(($this.settings.EmailAccounts | Measure-Object).Count -gt 0){ if(($this.settings.EmailAccounts | Measure-Object).Count -gt 1){ [CommonHelper]::SetValueIntoJson($paramFile, "analysisservicesadmin", "value", $this.settings.EmailAccounts[0]) } else{ [CommonHelper]::SetValueIntoJson($paramFile, "analysisservicesadmin", "value", $this.settings.EmailAccounts) } } else{ [CommonHelper]::Log("Failed to set analysis services admin in parameters file, please verify the test settings!", [MessageType]::Error) } } } catch{ [CommonHelper]::Log("Failed to set analysis service admin in parameters file!", [MessageType]::Error) } } } |