sous-chefs / apt

Development repository for the apt cookbook
https://supermarket.chef.io/cookbooks/apt
Apache License 2.0
201 stars 266 forks source link

Lots of log WARNings when using apt cookbook ("Deprecation class overwrites LWRP resource apt_preference from cookbook apt") #163

Closed tknerr closed 7 years ago

tknerr commented 9 years ago

I recently noticed that I'm getting lots of these warnings when using the apt cookbook:

[2015-09-22T21:35:22+00:00] WARN: You declared a new resource #<Class:0x0000000641b418> for resource apt_preference, but it comes alphabetically after LWRP resource apt_preference from cookbook apt and has the same filters ({}), so it will not be used. Use override: true if you want to use it for apt_preference.
[2015-09-22T21:35:22+00:00] WARN: AptPreference already exists!  Deprecation class overwrites LWRP resource apt_preference from cookbook apt
[2015-09-22T21:35:22+00:00] WARN: You declared a new resource #<Class:0x00000006412368> for resource apt_repository, but it comes alphabetically after LWRP resource apt_repository from cookbook apt and has the same filters ({}), so it will not be used. Use override: true if you want to use it for apt_repository.
[2015-09-22T21:35:22+00:00] WARN: AptRepository already exists!  Deprecation class overwrites LWRP resource apt_repository from cookbook apt

This is using Chef 12.4.1 with chef zero provisioner, happening during a chefspec run

tknerr commented 9 years ago

Googling doesn't help too much, the only stuff I'm finding are logs from travis-ci: http://www.google.com/search?q="AptRepository+already+exists!+Deprecation+class+overwrites+LWRP+resource+apt_repository+from+cookbook+apt"

andrewjamesbrown commented 9 years ago

This appears to be coming from Chef::Platform::HandlerMap in 12.4.1, though it isn't obvious why ChefSpec is triggering these warnings. FWIW, I see similar errors using the sudo cookbook. @jkeiser, can you shed any light on why we've begun to see these messages?

Thanks!

WarFox commented 9 years ago

I'm getting similar warning for a custom LWRP

[2015-10-01T10:16:47+01:00] WARN: You declared a new resource #<Class:0x007fa901bac690> for resource #{resource_name}, but it comes alphabetically after LWRP resource #{resource_name} from cookbook #{cookbook_name} and has the same filters ({}), so it will not be used. Use override: true if you want to use it for #{resource_name}.
[2015-10-01T10:16:47+01:00] WARN: #{resource_name} already exists!  Deprecation class overwrites LWRP resource #{resource_name} from cookbook #{cookbook_name}

I've also noticed that this warning only comes when I use ChefSpec::Runner

runner = ChefSpec::ServerRunner.new do |node, server|

ChefSpec::SoloRunner doesn't go around whining about this.

Hope this helps to narrow down the issue a bit.

tknerr commented 9 years ago

Is this still present with the recently released Chefspec 4.4.0 version? Am 01.10.2015 11:46 vorm. schrieb "Deepu Mohan Puthrote" < notifications@github.com>:

I'm getting similar warning for a custom LWRP

[2015-10-01T10:16:47+01:00] WARN: You declared a new resource #Class:0x007fa901bac690 for resource #{resource_name}, but it comes alphabetically after LWRP resource #{resource_name} from cookbook #{cookbook_name} and has the same filters ({}), so it will not be used. Use override: true if you want to use it for #{resource_name}. [2015-10-01T10:16:47+01:00] WARN: #{resource_name} already exists! Deprecation class overwrites LWRP resource #{resource_name} from cookbook #{cookbook_name}

I've also noticed that this warning only comes when I use ChefSpec::Runner

runner = ChefSpec::ServerRunner.new do |node, server|

ChefSpec::SoloRunner doesn't go around whining about this.

Hope this helps to narrow down the issue a bit.

— Reply to this email directly or view it on GitHub https://github.com/chef-cookbooks/apt/issues/163#issuecomment-144679318.

andrewjamesbrown commented 9 years ago

@tknerr, yes I can confirm I'm still seeing this with ChefSpec 4.4.0

jzohrab commented 8 years ago

(Posted in issue 642 above, reposting here) Hey all, a hack workaround for this is to redirect stdout during the chefspec converge, and restore it afterwards. Code:

  let (:chef_run) do
    # Redirecting stdout to suppress 'Deprecation class overwrites LWRP' noise.
    # (ref https://github.com/sethvargo/chefspec/issues/642)
    old_std_out = $stdout.clone
    $stdout.reopen('tmp_std_out.txt', 'w')
    result = chef_runner.converge(described_recipe)
    $stdout.reopen(old_std_out)
    File.read('tmp_std_out.txt').each_line do |lin|
      puts lin unless lin =~ /Deprecation class overwrites LWRP resource/
    end
    File.delete('tmp_std_out.txt')
    result
  end
tas50 commented 7 years ago

We'll be solving this soon by using compat_resource to provide the update and repository functionality. This aligns the code base with core chef and eliminates double code loading

tas50 commented 7 years ago

We've removed the sources from this cookbook so you shouldn't see this warnings in the 6.0 release now.