Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dsc properties are not compared correctly #308

Open
nickgw opened this issue Jan 5, 2023 · 1 comment
Open

Dsc properties are not compared correctly #308

nickgw opened this issue Jan 5, 2023 · 1 comment
Labels

Comments

@nickgw
Copy link

nickgw commented Jan 5, 2023

Describe the Bug

Somewhere between ruby-pwsh and the resource api, properties are getting lost and compared incorrectly.

for a relatively simple manifest with one dsc resource:

  dsc_virtualmemory { "set_page_file_size_of_24576" :
    dsc_type        => 'customsize',
    dsc_drive       => 'c',
    dsc_initialsize => 24576,
    dsc_maximumsize => 24576,
  }

The following is the truncated output on a verbose run:

Notice: /Stage[main]/Main/Dsc_virtualmemory[set_page_file_size_of_24576]/dsc_initialsize: dsc_initialsize changed  to 24576
Notice: /Stage[main]/Main/Dsc_virtualmemory[set_page_file_size_of_24576]/dsc_maximumsize: dsc_maximumsize changed  to 24576
Notice: dsc_virtualmemory[{:name=>"set_page_file_size_of_24576", :dsc_drive=>"c", :dsc_type=>"customsize"}]: Updating: Finished in 0.933907 seconds

Note that the change lines have a blank where the current value is omitted: dsc_initialsize changed to 24576

I've attached debug runs with and without the powershell to the issue, but this is the relevant part imo:

#PowerShell GET runs
2023-01-05 14:43:22 -0500 Puppet (debug): dsc_virtualmemory: raw data received: {"ResourceId"=>nil, "PsDscRunAsCredential"=>nil, "Type"=>"CustomSize", "InitialSize"=>24576, "ModuleVersion"=>"8.5.0", "SourceInfo"=>nil, "ConfigurationName"=>nil, "Drive"=>"C:\\", "MaximumSize"=>24576, "ModuleName"=>"C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet_x/computermanagementdsc/dsc_resources/ComputerManagementDsc/ComputerManagementDsc.psd1", "DependsOn"=>nil}
2023-01-05 14:43:22 -0500 Puppet (debug): dsc_virtualmemory: Returned to Puppet as {:dsc_drive=>"C:\\", :dsc_initialsize=>24576, :dsc_maximumsize=>24576, :dsc_type=>"CustomSize", :name=>"set_page_file_size_of_24576"}
2023-01-05 14:43:22 -0500 Puppet (debug): Current State: {:name=>"set_page_file_size_of_24576", :dsc_drive=>"c", :dsc_type=>"customsize"}
2023-01-05 14:43:22 -0500 Puppet (debug): dsc_virtualmemory: Canonicalized Resources: [{:name=>"set_page_file_size_of_24576", :dsc_drive=>"c", :dsc_type=>"customsize", :dsc_initialsize=>24576, :dsc_maximumsize=>24576, :validation_mode=>"property"}]
2023-01-05 14:43:22 -0500 /Stage[main]/Main/Dsc_virtualmemory[set_page_file_size_of_24576]/dsc_initialsize (notice): dsc_initialsize changed  to 24576
2023-01-05 14:43:22 -0500 /Stage[main]/Main/Dsc_virtualmemory[set_page_file_size_of_24576]/dsc_maximumsize (notice): dsc_maximumsize changed  to 24576

You can see that the raw data received has the correct data, and that that data is canonicalized correctly:
2023-01-05 14:43:22 -0500 Puppet (debug): dsc_virtualmemory: Canonicalized Resources: [{:name=>"set_page_file_size_of_24576", :dsc_drive=>"c", :dsc_type=>"customsize", :dsc_initialsize=>24576, :dsc_maximumsize=>24576, :validation_mode=>"property"}]

however, the current state has an incomplete list of properties:
2023-01-05 14:43:22 -0500 Puppet (debug): Current State: {:name=>"set_page_file_size_of_24576", :dsc_drive=>"c", :dsc_type=>"customsize"}

causing the resource's set function to run and printing this info:
2023-01-05 14:43:22 -0500 /Stage[main]/Main/Dsc_virtualmemory[set_page_file_size_of_24576]/dsc_initialsize (notice): dsc_initialsize changed to 24576

dsc_initialsize is changed from null to the correct value because the current state is incomplete.

Expected Behavior

I expect the current state to be the complete current state, and in this instance where the resource is in sync, nothing to happen.

Steps to Reproduce

Steps to reproduce the behavior:
On a system where ComputerManagementDsc is available, puppet apply a manifest with the resource at the beginning of the issue.

Environment

  • Version 7.19.0
  • Platform Windows 2019

Additional Context

This applies to a large portion of Dsc resources in Puppet. Flipping validation mode to resource "resolves" the problem, but negates much of the benefit of moving from the old dsc module to the newly released puppet dsc modules.
virtualmemory_debug_nopowershell.log
virtualmemory_debug_powershell.log

@nickgw nickgw added the bug label Jan 5, 2023
@jordanbreen28
Copy link
Contributor

Hi @nickgw! Thanks for raising this one.
Its been added to our backlog.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants