dsccommunity / dsccommunity/SqlServerDsc

SqlRSUrlReservation: New resource proposal

Open
#2,418 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement help wanted resource proposal
Dominant language
PowerShell
Stars
385
Forks
224
PR merge metrics
No merged PRs in 30d

Description

Resource proposal

Manages URL reservations for ReportServer web service and Reports web portal. Supports multiple URLs per application. This resource is separated from virtual directories to allow independent management of URL reservations per application. The old SqlRS mixed virtual directories and URL reservations which made partial changes difficult.

Parent Issue: #2415

Features
  • Configures URL reservations for ReportServerWebService and ReportServerWebApp applications
  • Supports multiple URL reservations per application
  • Supports both replacement pattern (set exact values) and include/exclude pattern (add/remove specific values)
  • Supports both SQL Server Reporting Services (SSRS) and Power BI Report Server (PBIRS)
  • SQL Server 2019+ only
Commands Used
Method Commands
Get Get-SqlDscRSUrlReservation, Get-SqlDscRSWebPortalApplicationName
Test Compare current URL reservations with desired
Set Set-SqlDscRSUrlReservation, Add-SqlDscRSUrlReservation, Remove-SqlDscRSUrlReservation, Restart-SqlDscRSService

Proposed properties

Property Type qualifier Data type Description Default value Allowed values
InstanceName Key String The RS instance name (SSRS or PBIRS) None None
Application Key String The application to configure None ReportServerWebService, ReportServerWebApp
UrlString Write String[] The exact URL reservations to set (replaces all existing). Mutually exclusive with ToInclude/ToExclude. None None
UrlStringToInclude Write String[] URL reservations to add if not present None None
UrlStringToExclude Write String[] URL reservations to remove if present None None
Lcid Write UInt32 Language code identifier None None
RestartTimeout Write UInt32 Seconds to wait after service restart None None
SuppressServiceRestart Write Boolean Suppress automatic service restart $false None

Special considerations or limitations

  1. Proposed File: source/Classes/020.SqlRSUrlReservation.ps1

  2. Inheritance: Inherits from ResourceBase (from DscResource.Base module), not SqlResourceBase.

  3. Mutually exclusive properties: UrlString is mutually exclusive with UrlStringToInclude and UrlStringToExclude. When using UrlString, all existing URL reservations are replaced with the specified list. When using UrlStringToInclude and/or UrlStringToExclude, existing URL reservations are preserved and only the specified changes are made.

  4. URL format examples: URLs follow the format http://+:80, https://+:443, http://hostname:8080, etc.

  5. Recommended usage order: This resource should be used after SqlRSVirtualDirectory and before SqlRSDatabase.

  6. Integration tests: Should follow the patterns in Integration_Test_Commands_ReportingServices and Integration_Test_Commands_BIReportServer stages.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the proposed file source/Classes/020.SqlRSUrlReservation.ps1 and review ResourceBase usage in the DscResource.Base module. Then study the Integration_Test_Commands_ReportingServices and Integration_Test_Commands_BIReportServer stages. Done means the resource supports the listed URL reservation properties, replacement and include/exclude behavior, and the specified integration coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
powershell
Domain
devops, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.