Skip to content
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

- SqlServerDsc
- Integration tests now also run using SQLPS.
- Added a new build task `fastbuild` that can be used during development
process when there are no need to generate documentation.
- Added new public command:
Expand Down
9 changes: 8 additions & 1 deletion RequiredModules.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,14 @@
Sampler = 'latest'
'Sampler.GitHubTasks' = 'latest'
MarkdownLinkCheck = 'latest'
'DscResource.Test' = 'latest'

'DscResource.Test' = @{
Version = 'latest'
Parameters = @{
AllowPrerelease = $true
}
}

xDscResourceDesigner = 'latest'
'DscResource.DocGenerator' = 'latest'

Expand Down
792 changes: 441 additions & 351 deletions azure-pipelines.yml

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions source/DSCResources/DSC_SqlReplication/DSC_SqlReplication.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,16 @@ function Get-TargetResource
$script:localizedData.GetCurrentState -f $InstanceName
)

Write-Verbose -Message ('All assemblies: {0}' -f ([System.AppDomain]::CurrentDomain.GetAssemblies() | Out-String)) -Verbose
Write-Verbose -Message ('All SQL assemblies: {0}' -f ([System.AppDomain]::CurrentDomain.GetAssemblies() | ? Location -like '*SQL*' | Out-String)) -Verbose
Write-Verbose -Message ('ConnectionInfo assembly: {0}' -f ([System.AppDomain]::CurrentDomain.GetAssemblies() | ? Location -like '*ConnectionInfo*' | fl * | Out-String)) -Verbose

Import-SqlDscPreferredModule

Write-Verbose -Message ('All assemblies: {0}' -f ([System.AppDomain]::CurrentDomain.GetAssemblies() | Out-String)) -Verbose
Write-Verbose -Message ('All SQL assemblies: {0}' -f ([System.AppDomain]::CurrentDomain.GetAssemblies() | ? Location -like '*SQL*' | Out-String)) -Verbose
Write-Verbose -Message ('ConnectionInfo assembly: {0}' -f ([System.AppDomain]::CurrentDomain.GetAssemblies() | ? Location -like '*ConnectionInfo*' | fl * | Out-String)) -Verbose

$sqlMajorVersion = Get-SqlInstanceMajorVersion -InstanceName $InstanceName
$localSqlName = Get-SqlLocalServerName -InstanceName $InstanceName

Expand Down Expand Up @@ -439,6 +447,7 @@ function New-ServerConnection

if ($SqlMajorVersion -eq 16)
{
Write-Verbose -Message 'DEBUG100' -Verbose
<#
For SQL Server 2022 the object must be created with New-Object and
also requires the module SqlServer v22 (minimum v22.0.49-preview).
Expand All @@ -447,6 +456,7 @@ function New-ServerConnection
}
else
{
Write-Verbose -Message 'DEBUG101' -Verbose
<#
SQL Server 2016, 2017, and 2019 must use the assembly in the GAC. If the
method for SQL Server 2022 is used it throws the error:
Expand Down
13 changes: 12 additions & 1 deletion source/DSCResources/DSC_SqlSetup/DSC_SqlSetup.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -1639,8 +1639,15 @@ function Set-TargetResource
$forceReloadPowerShellModule = $true
}

Write-Verbose -Message 'DEBUG1' -Verbose
Write-Verbose -Message ('Force Reload: {0}' -f ($forceReloadPowerShellModule | Out-String)) -Verbose

if ((-not $setupEndedInError) -and $forceReloadPowerShellModule)
{
Write-Verbose -Message ('Session PSModulePath: {0}' -f $env:PSModulePath) -Verbose
Write-Verbose -Message ('Available modules: {0}' -f (Get-Module -Name @('SqlServer', 'SqlServerDsc', 'SQLPS') -ListAvailable | Out-String)) -Verbose
Write-Verbose -Message ('All PSModulePath: {0}' -f (Get-PSModulePath -FromTarget 'Session', 'User', 'Machine')) -Verbose

<#
Force reload of SQLPS module in case a newer version of
SQL Server was installed that contains a newer version
Expand All @@ -1650,7 +1657,11 @@ function Set-TargetResource
matches the latest assemblies in GAC, mitigating for example
issue #1151.
#>
Import-SqlDscPreferredModule -Force
Import-SqlDscPreferredModule -Force -Verbose

Write-Verbose -Message ('Session PSModulePath: {0}' -f $env:PSModulePath) -Verbose
Write-Verbose -Message ('Available modules: {0}' -f (Get-Module -Name @('SqlServer', 'SqlServerDsc', 'SQLPS') -ListAvailable | Out-String)) -Verbose
Write-Verbose -Message ('All PSModulePath: {0}' -f (Get-PSModulePath -FromTarget 'Session', 'User', 'Machine')) -Verbose
}

if (-not (Test-TargetResource @PSBoundParameters))
Expand Down
13 changes: 12 additions & 1 deletion source/Modules/SqlServerDsc.Common/SqlServerDsc.Common.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,18 @@ function Connect-SQL
$Encrypt
)

Import-SqlDscPreferredModule
Write-Verbose -Message 'DEBUG2' -Verbose
Write-Verbose -Message ('Session PSModulePath: {0}' -f $env:PSModulePath) -Verbose
Write-Verbose -Message ('Available modules: {0}' -f (Get-Module -Name @('SqlServer', 'SqlServerDsc', 'SQLPS') -ListAvailable | Out-String)) -Verbose
Write-Verbose -Message ('All PSModulePath: {0}' -f (Get-PSModulePath -FromTarget 'Session', 'User', 'Machine')) -Verbose

Write-Verbose -Message 'DEBUG3' -Verbose
Write-Verbose -Message ('Found module: {0}' -f (Get-SqlDscPreferredModule -ErrorAction 'Continue')) -Verbose
Write-Verbose -Message ('Found module (refresh): {0}' -f (Get-SqlDscPreferredModule -Refresh -ErrorAction 'Stop')) -Verbose

Import-SqlDscPreferredModule -Force

Write-Verbose -Message (Get-Module -Name @('SqlServer', 'SqlServerDsc', 'SQLPS') -ListAvailable | Out-String) -Verbose

if ($InstanceName -eq 'MSSQLSERVER')
{
Expand Down
13 changes: 12 additions & 1 deletion source/Public/Get-SqlDscPreferredModule.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,13 @@ function Get-SqlDscPreferredModule
}
}

if ($Refresh.IsPresent)
Write-Verbose -Message ('Get-SqlDscPreferredModule: DEBUG Session: {0}' -f (Get-PSModulePath -FromTarget 'Session')) -Verbose
Write-Verbose -Message ('Get-SqlDscPreferredModule: DEBUG User: {0}' -f (Get-PSModulePath -FromTarget 'User')) -Verbose
Write-Verbose -Message ('Get-SqlDscPreferredModule: DEBUG Machine: {0}' -f (Get-PSModulePath -FromTarget 'Machine')) -Verbose
Write-Verbose -Message ('Get-SqlDscPreferredModule: DEBUG $env: {0}' -f $env:PSModulePath) -Verbose

#if ($Refresh.IsPresent)
if ($true)
{
# Only run on Windows that has Machine state.
if (-not ($IsLinux -or $IsMacOS))
Expand Down Expand Up @@ -127,11 +133,16 @@ function Get-SqlDscPreferredModule
}
)

Write-Verbose -Message ('Get-SqlDscPreferredModule: Available Modules: {0}' -f ($availableModule | Out-String)) -Verbose

foreach ($preferredModuleName in $Name)
{
$preferredModule = $availableModule |
Where-Object -Property 'Name' -EQ -Value $preferredModuleName

Write-Verbose -Message ('Get-SqlDscPreferredModule: PreferredModuleName: {0}' -f $preferredModuleName) -Verbose
Write-Verbose -Message ('Get-SqlDscPreferredModule: Found PreferredModule: {0}' -f ($preferredModule | Out-String)) -Verbose

if ($preferredModule)
{
if ($preferredModule.Name -eq 'SQLPS')
Expand Down
15 changes: 15 additions & 0 deletions tests/Integration/DSC_SqlAgentAlert.Integration.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ BeforeDiscovery {
}

BeforeAll {
Write-Verbose -Message ('SqlAgentAlert: DEBUG2 Session: {0}' -f (Get-PSModulePath -FromTarget 'Session')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG2 User: {0}' -f (Get-PSModulePath -FromTarget 'User')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG2 Machine: {0}' -f (Get-PSModulePath -FromTarget 'Machine')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG2 $env: {0}' -f $env:PSModulePath) -Verbose

# Need to define the variables here which will be used in Pester Run.
$script:dscModuleName = 'SqlServerDsc'
$script:dscResourceFriendlyName = 'SqlAgentAlert'
Expand All @@ -42,8 +47,18 @@ BeforeAll {
-ResourceType 'Mof' `
-TestType 'Integration'

Write-Verbose -Message ('SqlAgentAlert: DEBUG3 Session: {0}' -f (Get-PSModulePath -FromTarget 'Session')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG3 User: {0}' -f (Get-PSModulePath -FromTarget 'User')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG3 Machine: {0}' -f (Get-PSModulePath -FromTarget 'Machine')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG3 $env: {0}' -f $env:PSModulePath) -Verbose

$configFile = Join-Path -Path $PSScriptRoot -ChildPath "$($script:dscResourceName).config.ps1"
. $configFile

Write-Verbose -Message ('SqlAgentAlert: DEBUG4 Session: {0}' -f (Get-PSModulePath -FromTarget 'Session')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG4 User: {0}' -f (Get-PSModulePath -FromTarget 'User')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG4 Machine: {0}' -f (Get-PSModulePath -FromTarget 'Machine')) -Verbose
Write-Verbose -Message ('SqlAgentAlert: DEBUG4 $env: {0}' -f $env:PSModulePath) -Verbose
}

AfterAll {
Expand Down
14 changes: 12 additions & 2 deletions tests/Integration/DSC_SqlSetup.Integration.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,17 @@ BeforeAll {
}

AfterAll {
Restore-TestEnvironment -TestEnvironment $script:testEnvironment
Write-Verbose -Message ('SqlSetup: DEBUG1 Session: {0}' -f (Get-PSModulePath -FromTarget 'Session')) -Verbose
Write-Verbose -Message ('SqlSetup: DEBUG1 User: {0}' -f (Get-PSModulePath -FromTarget 'User')) -Verbose
Write-Verbose -Message ('SqlSetup: DEBUG1 Machine: {0}' -f (Get-PSModulePath -FromTarget 'Machine')) -Verbose
Write-Verbose -Message ('SqlSetup: DEBUG1 $env: {0}' -f $env:PSModulePath) -Verbose

Restore-TestEnvironment -TestEnvironment $script:testEnvironment -KeepNewMachinePSModulePath

Write-Verbose -Message ('SqlSetup: DEBUG2 Session: {0}' -f (Get-PSModulePath -FromTarget 'Session')) -Verbose
Write-Verbose -Message ('SqlSetup: DEBUG2 User: {0}' -f (Get-PSModulePath -FromTarget 'User')) -Verbose
Write-Verbose -Message ('SqlSetup: DEBUG2 Machine: {0}' -f (Get-PSModulePath -FromTarget 'Machine')) -Verbose
Write-Verbose -Message ('SqlSetup: DEBUG2 $env: {0}' -f $env:PSModulePath) -Verbose

Get-Module -Name 'CommonTestHelper' -All | Remove-Module -Force
}
Expand Down Expand Up @@ -214,7 +224,7 @@ Describe "$($script:dscResourceName)_Integration" -Tag @('Integration_SQL2016',
}
}

Context ('When using configuration <_>') -ForEach @(
Context ('When using configuration <_>') -Skip:($null -ne $env:SkipInstallSMO) -ForEach @(
"$($script:dscResourceName)_InstallSMOModule_Config"
) {
BeforeAll {
Expand Down
14 changes: 12 additions & 2 deletions tests/Integration/DSC_SqlSetup.config.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,16 @@ else
}
}

# Do not use the feature flag AnalysisServicesConnection when running tests with SQLPS.
$featureFlag = if ((Get-Module -Name 'SqlServer', 'dbatools' -ListAvailable))
{
@('AnalysisServicesConnection')
}
else
{
@()
}

<#
Creating all the credential objects to save some repeating code.
#>
Expand Down Expand Up @@ -691,7 +701,7 @@ Configuration DSC_SqlSetup_InstallMultiDimensionalAnalysisServicesAsSystem_Confi
{
SqlSetup 'Integration_Test'
{
FeatureFlag = @('AnalysisServicesConnection')
FeatureFlag = [System.String[]] $featureFlag

InstanceName = $Node.AnalysisServicesMultiInstanceName
Features = $Node.AnalysisServicesMultiFeatures
Expand Down Expand Up @@ -745,7 +755,7 @@ Configuration DSC_SqlSetup_InstallTabularAnalysisServicesAsSystem_Config
{
SqlSetup 'Integration_Test'
{
FeatureFlag = @('AnalysisServicesConnection')
FeatureFlag = [System.String[]] $featureFlag

InstanceName = $Node.AnalysisServicesTabularInstanceName
Features = $Node.AnalysisServicesTabularFeatures
Expand Down