Summary of the new feature / enhancement
It's possible a resource supports export, but not set and with an upcoming change, get will be called when attempting an export if the resource doesn't support it directly. Now imagine you've exported current state (which might even include the OSinfo resource which only supports get).
I can imagine a scenario where a user wants to turn around and deploy this exported config as set, but it will fail once it hits a resource that doesn't support set.
Proposed technical implementation details (optional)
A potential solution is that the user can either opt-in or opt-out of the default behavior of whether set ignores (or warns) on resources that don't implement set rather than outright error and fail.
In this case, a resource that ONLY supports get is effectively read-only. So I would argue that the user should understand this and thus read-only properties are ignored instead of erroring. In which case, the default behavior is to ignore (and if not explicitly opt-ed out emit a warning message) and the user can apply metadata per resource or at document level to explicitly opt-in or opt-out of ignoring:
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
contentVersion: 1.0.0
resources:
- metadata:
Microsoft.DSC:
setNotImplemented: Ignore | Warning | Error
type: Microsoft/OSInfo
name: Microsoft/OSInfo-0
properties:
$id: https://developer.microsoft.com/json-schemas/dsc/os_info/20230303/Microsoft.Dsc.OS_Info.schema.json
family: macOS
version: 15.6.0
bitness: '64'
architecture: arm64
Summary of the new feature / enhancement
It's possible a resource supports
export, but notsetand with an upcoming change,getwill be called when attempting anexportif the resource doesn't support it directly. Now imagine you've exported current state (which might even include theOSinforesource which only supportsget).I can imagine a scenario where a user wants to turn around and deploy this exported config as
set, but it will fail once it hits a resource that doesn't supportset.Proposed technical implementation details (optional)
A potential solution is that the user can either opt-in or opt-out of the default behavior of whether
setignores (or warns) on resources that don't implementsetrather than outright error and fail.In this case, a resource that ONLY supports
getis effectivelyread-only. So I would argue that the user should understand this and thusread-onlyproperties are ignored instead of erroring. In which case, the default behavior is to ignore (and if not explicitly opt-ed out emit a warning message) and the user can apply metadata per resource or at document level to explicitly opt-in or opt-out of ignoring: