Skip to content

v16.0.0-preview0011

Pre-release
Pre-release
Compare
Choose a tag to compare
@dscbot dscbot released this 13 Aug 09:23
d741244

[v16.0.0-preview0011]

Removed

  • The deprecated DSC resource SqlDatabaseOwner have been removed (and replaced
    by a property in SqlDatabase)
    (issue #1725).
  • The deprecated DSC resource SqlDatabaseRecoveryModel have been removed (and
    replaced by a property in SqlDatabase)
    (issue #1725).
  • The deprecated DSC resource SqlServerEndpointState have been removed (and
    replaced by a property in SqlEndpoint)
    (issue #1725).
  • The deprecated DSC resource SqlServerNetwork have been removed (and replaced by
    SqlProtocol
    and SqlProtocolTcpIp)
    (issue #1725).
  • CommonTestHelper
    • Remove the helper function Wait-ForIdleLcm since it has been moved
      to the module DscResource.Test.
    • Remove the helper function Get-InvalidOperationRecord since it has
      been moved to the module DscResource.Test.
    • Remove the helper function Get-InvalidResultRecord since it has been
      moved to the module DscResource.Test.

Added

  • SqlServerDsc
    • Added recommended VS Code extensions.
      • Added settings for VS Code extension Pester Test Adapter.
    • Added new Script Analyzer rules from the module Indented.ScriptAnalyzerRules
      to help development and review process. The rules that did not contradict
      the existing DSC Community rules and style guideline were added.
    • Added the Visual Studio Code extension Code Spell Checker to the list
      of recommended Visual Studio Code extensions.
    • Added a file prefix.ps1 which content is placed first in the built module
      (.psm1). This file imports dependent modules, and imports localized strings
      used by private and public commands.
    • The following classes were added to the module:
      • DatabasePermission - complex type for the DSC resource SqlDatabasePermission.
      • Ensure - Enum to be used for the property Ensure in class-based
        resources.
      • Reason - Used by method Get() to return the reason a property is not
        in desired state.
      • ResourceBase - class that can be inherited by class-based resource and
        provides functionality meant simplify the creating of class-based resource.
      • SqlResourceBase - class that can be inherited by class-based resource and
        provides default DSC properties and method for get a [Server]-object.
      • ServerPermission - complex type for the DSC resource SqlPermission.
    • The following private functions were added to the module (see comment-based
      help for more information):
      • ConvertFrom-CompareResult
      • ConvertTo-Reason
      • Get-ClassName
      • Get-DscProperty
      • Get-LocalizedDataRecursive
      • Test-ResourceHasDscProperty
      • Test-ResourceDscPropertyIsAssigned
    • The following public functions were added to the module (see comment-based
      help for more information):
      • Connect-SqlDscDatabaseEngine
      • ConvertFrom-SqlDscDatabasePermission
      • ConvertTo-SqlDscDatabasePermission
      • Get-SqlDscDatabasePermission
      • Set-SqlDscDatabasePermission
      • Test-SqlDscIsDatabasePrincipal
      • Test-SqlDscIsLogin
      • ConvertFrom-SqlDscServerPermission
      • ConvertTo-SqlDscServerPermission
      • Get-SqlDscServerPermission
      • Set-SqlDscServerPermission
      • Invoke-SqlDscQuery
      • Get-SqlDscAudit
      • New-SqlDscAudit
      • Set-SqlDscAudit
      • Remove-SqlDscAudit
      • Enable-SqlDscAudit
      • Disable-SqlDscAudit
    • Support for debugging of integration tests in AppVeyor.
      • Only run for pull requests
    • Add new resource SqlAudit.
  • CommonTestHelper
    • Import-SqlModuleStub
      • Added the optional parameter PasThru that, if used, will return the
        name of the stub module.
      • When removing stub modules from the session that is not supposed to
        be loaded, it uses Get-Module -All to look for previously loaded
        stub modules.
    • Remove-SqlModuleStub
      • Added a new helper function Remove-SqlModuleStub for tests to remove
        the PowerShell SqlServer stub module when a test has run.
  • SqlWindowsFirewall
    • Added integration tests for SqlWindowsFirewall (issue #747).
  • Get-DscProperty
    • Added parameter ExcludeName to exclude property names from being returned.

Changed

  • SqlServerDsc
    • Updated pipeline to use the build worker image 'ubuntu-latest'.
    • Switch to installing GitVersion using 'dotnet tool install' (issue #1732).
    • Bumped Stale task to v5 in the GitHub workflow.
    • Make it possible to publish code coverage on failed test runs, and
      when re-run a fail job.
    • Exclude Script Analyzer rule TypeNotFound in the file .vscode/analyzersettings.psd1.
    • Update CONTRIBUTING.md describing error handling in commands and class-based
      resources.
    • The QA tests are now run in Windows PowerShell due to a bug in PowerShell 7
      that makes class-based resource using inheritance to not work.
    • The QA test are excluding the rule TypeNotFound because it cannot
      run on the source files (there is a new issue that is tracking so this
      rule is only run on the built module).
    • The Pester code coverage has been switched to use the older functionality
      that uses breakpoints to calculate coverage. Newer functionality sometimes
      throw an exception when used in conjunction with class-based resources.¨
    • SMO stubs (used in the unit tests)
      • Was updated to remove a bug related to the type DatabasePermissionInfo
        when used with the type DatabasePermissionSet.
        The stubs suggested that the property PermissionType (of type DatabasePermissionSet)
        in DatabasePermissionInfo should have been a array DatabasePermissionSet[].
        This conflicted with real SMO as it does not pass an array, but instead
        a single DatabasePermissionSet. The stubs was modified to mimic the
        real SMO. At the same time some old mock code in the SMO stubs was removed
        as it was no longer in use.
      • Was updated to remove a bug related to the type ServerPermissionInfo
        when used with the type ServerPermissionSet. The stubs suggested that
        the property PermissionType (of type ServerPermissionSet)
        in ServerPermissionInfo should have been a array ServerPermissionSet[].
        This conflicted with real SMO as it does not pass an array, but instead
        a single ServerPermissionSet. The stubs was modified to mimic the
        real SMO. At the same time some old mock code in the SMO stubs was removed
        as it was no longer in use.
    • Updated integration tests README.md to describe how to use Appveyor to
      debug integration tests.
  • Wiki
    • add introduction and links to DSC technology
  • SqlServerDsc.Common
    • The parameter SetupCredential of the function Connect-SQL was renamed
      to Credential and the parameter name SetupCredential was made a
      parameter alias.
  • SqlLogin
    • BREAKING CHANGE: The parameters LoginMustChangePassword, LoginPasswordExpirationEnabled,
      and LoginPasswordPolicyEnforced no longer have a default value of $true.
      This means that when creating a new login, and not specifically setting
      these parameters to $true in the configuration, the login that is created
      will have these properties set to $false.
    • BREAKING CHANGE: LoginMustChangePassword, LoginPasswordExpirationEnabled,
      and LoginPasswordPolicyEnforced parameters no longer enforce default
      values (issue #1669).
  • SqlServerDsc
    • All tests have been converted to run in Pester 5 (Pester 4 can no
      longer be supported) (issue #1654).
    • Pipeline build and deploy now runs on Ubuntu 18.04, see more information
      in actions/runner-images#3287.
    • Update the pipeline file azure-pipelines.yml to use the latest version
      from the Sampler project.
  • SqlRs
    • BREAKING CHANGE: Now the Reporting Services is always restarted after
      the call to CIM method SetDatabaseConnection when setting up the
      Reporting Services. This so to try to finish the initialization of
      Reporting Services. This was prior only done for SQL Server Reporting
      Services 2019 (issue #1721).
    • Added some verbose messages to better indicate which CIM methods are run
      and when they are run.
    • Minor refactor to support running unit test with strict mode enabled.
  • SqlLogin
    • Only enforces optional parameter LoginType when it is specified in the
      configuration.
    • Only enforces optional parameters LoginPasswordExpirationEnabled and
      LoginPasswordPolicyEnforced for a SQL login when the parameters are
      specified in the configuration.
    • A localized string for an error message was updated to correctly reflect
      the code that says that to use a SQL login the authentication mode must
      be either Mixed or Normal, prio it just stated Mixed.
  • SqlSecureConnection
    • BREAKING CHANGE: Now Get-TargetResource returns the value 'Empty'
      for the property thumbprint if there is no thumbprint set in the current
      state. Returning the value 'Empty' was always intended, but it due to
      a bug it was never returned, but instead it returned an empty string
      or $null value.
  • SqlWindowsFirewall
    • Now the property Features always return the features in the order
      'SQLENGINE', 'RS', 'AS', and 'IS' if they are installed.
  • SqlAGListener
    • Removed unnecessary exception that is very unlikely to be thrown in
      Set-TargetResource and Test-TargetResource.
    • Simplified the logic that checks if the properties are in desired state
      as the new unit tests did not pass with the previous logic.
    • Updated the verbose message when the listener does not exist to write
      out the name of the listener that is meant to be updated, added, or
      dropped.
    • Only update values for the properties that are actually enforced by the
      configuration.
  • SqlAGDatabase
    • Added StatementTimeout optional parameter with default value of 600 seconds
      (10 mins) to SqlAGDatabase to fix issue #1743. Users will be able to specify
      the backup and restore timeout with it.
  • SqlDatabaseUser
    • Test-TargetResource returns true if the IsUpdateable property of the
      database is $false to resolve issue #1748.
  • SqlDatabaseRole
    • Test-TargetResource returns true if the IsUpdateable property of the
      database is $false to resolve issue #1750.
  • SqlAlwaysOnService
    • BREAKING CHANGE: The parameter IsHadrEnabled is no longer returned by
      Get-TargetResource. The Ensure parameter now returns Present if
      Always On HADR is enabled and Absent if it is disabled.
  • SqlDatabasePermission
    • BREAKING CHANGE: The resource has been refactored. The parameters
      ParameterState and Permissions has been replaced by parameters
      Permission, PermissionToInclude, and PermissionToExclude. These
      permissions parameters are now an instance of the type DatabasePermission.
      The type DatabasePermission contains two properties; State and
      Permission. This fixes issue issue #1555.
    • The resource was refactored into a class-based resource.
  • SqlPermission
    • BREAKING CHANGE: The resource has been refactored. The parameters
      Permissions has been replaced by parameters Permission,
      PermissionToInclude, and PermissionToExclude. These permissions
      parameters are now an instance of the type ServerPermission.
      The type ServerPermission contains two properties; State and
      Permission. This closes the issue issue #1761,
      it also fixes the issues issue #1773,
      issue #1704,
      and issue #752.
    • The resource was refactored into a class-based resource.

Fixed

  • SqlServerDsc
    • URLs the referenced TechNet in the documentation has been update to link to
      new pages at docs.microsoft.com.
    • Fix pipeline so code coverage is published on fail.
    • Remove duplicate deploy step (already present in azure-pipelines.yml).
  • CommonTestHelper
    • The test helper function Import-SqlModuleStub was using wrong casing for
      one of the stub modules which failed test when running cross plattform.
  • SqlDatabaseObjectPermission
    • Fix for issue (issue #1724).
      • BREAKING CHANGE: Updated class DSC_DatabaseObjectPermission.
        • Changed Permission from an array to a string.
        • Updated Permission to a key property.
        • Updated Integration Tests to test permission grants on multiple objects.
  • SqlProtocolTcpIp
    • Output verbose information in integration tests so it is shown what NICs
      are available and what IP address the tests will use.
  • SqlAlias
    • Now the code passes strict mode during unit testing.
    • When an existing alias existed with a static TCP port but the desired
      state was to have a dynamic port, the function Test-TargetResource did
      not correctly return $false. Same for an alias that existed with a
      dynamic port but the desired state was to have a static port. Now the
      function Test-TargetResource returns $false in both these scenarios.
  • SqlAgentOperator
    • In a certain case the Test-TargetResource function returned the wrong
      verbose message. If passing an e-mail address and the operator did not
      exist it would wrongly say operator exist but had wrong e-mail address.
      Truth was that the operator did not exist at all.
  • SqlDatabaseMail
    • Improved the verification of an empty description so that it can handle
      both empty string and $null.
  • SqlDatabaseRole
    • Some variables where not initialized correctly which was discovered when
      running the unit tests using strict mode. Now the variables are initialized
      and should not cause any issues in the object returned from the function
      Get-TargetResource.
  • SqlEndpointPermission
    • Verbose messages did not use the correct variable name, so the messages
      did not contain the correct information.
    • Minor style guideline changes.
  • SqlMaxDop
    • The function Get-TargetResource did not initialize some of the variables
      correctly which was discovered when running the unit tests using strict
      mode.
    • The function Test-TargetResource did not correctly evaluate if the
      node was the active node..
  • SqlMemory
    • Now it possible to just set the minimum memory without it throwing because
      the maximum memory is not specified.
    • In a certain scenario the maximum memory would be enforced even if it was
      not specified in the configuration.
  • SqlWindowsFirewall
    • Now the variables in Get-TargetResource are correctly initialized so
      they pass the new unit test that use strict mode.
    • The verbose message in Test-TargetResource did not use the correct
      variable name, so the message did not contain the correct information.
    • Removed unnecessary logic in Set-TargetResource that did just evaluated
      the same thing that the call to function Get-TargetResource already
      does.
  • SqlSetup
    • Now the variables in Set-TargetResource are correctly initialized so
      they pass the new unit test that use strict mode.
    • Some verbose messages in Get-TargetResource wrongly reference a variable
      that was not available.
    • The loop that evaluates what features are installed did an unnecessary
      step for each iteration. A line of code was moved outside of the loop.
    • The SourcePath parameter is now mandatory for all *-TargetResource
      (issue #1755).
  • SqlDatabasePermission
    • It is no longer possible to have one permission that has two different
      states in the same configuration, e.g. denying and granting update
      in the same configuration.
    • Fixed comment-based help and cleaned up comments.
    • Fix localized string that referenced 'user' instead of 'principal',
      and correct localized string ID for each string.
    • Fix comment-based help.
  • SqlPermission
    • Fix comment-based help.
  • Set-SqlDscDatabasePermission
    • Minor code cleanup.
  • ConvertTo-Reason
    • Fix to handle $null values on Windows PowerShell.
    • If the property name contain the word 'Path' the value will be parsed to
      replace backslash or slashes at the end of the string, e.g. '/mypath/'
      will become '/mypath'.
  • ResourceBase
    • Now handles Ensure correctly from derived GetCurrentState(). But
      requires that the GetCurrentState() only return key property if object
      is present, and does not return key property if object is absent.
      Optionally the resource's derived GetCurrentState() can handle Ensure
      itself.