[chef] Re: torrent hash is same for every torrent after the first


Chronological Thread 
  • From: Chris McClimans < >
  • To:
  • Subject: [chef] Re: torrent hash is same for every torrent after the first
  • Date: Tue, 30 Aug 2011 12:33:49 +1200

http://tickets.opscode.com/browse/COOK-729

https://github.com/opscode/cookbooks/blob/master/transmission/providers/torrent_file.rb#L117
is @@torrent_hash a global variable that never gets reset? YES!

Thanks to fujin for the help on #chef. Nice to know there are other
New Zealanders doing great things with chef.

Cheers,
-chris

On Tue, Aug 30, 2011 at 8:22 AM, Chris McClimans 
< >
 wrote:
> **The short of it**
>
> I'm forced to opscode transmission cookbook on local files as the
> cookbook requires urls that end it .torrent. (Not that big of a deal,
> but I'm unsure of a clean solution)
> Every transmission_torrent_file[] after the first one, reports the
> torrent hash of the first, keeping it from being loaded into
> transmission.
> I'm unsure how to debug or proceed.
>
>
> **Possibly useful background**
>
> The opscode transmission cookbook will only treat torrents as remote
> files if the start with 'http' and end with '.torrent'.
> * 
> https://github.com/opscode/cookbooks/blob/master/transmission/providers/torrent_file.rb#L97
> :
> * if(new_resource.torrent =~ /^(https?:\/\/)(.*\/)(.*\.torrent)$/)
>
> The urls I have for the torrents I want to use don't follow that logic:
> * ie 
> http://driverpacks.net/driverpacks/windows/xp/x86/chipset/11.08/download/torrent
>
> However the driverpack urls do have the filename in the
> Content-Disposition header.
> * http://en.wikipedia.org/wiki/MIME#Content-Disposition
>
> To help decide the local target filename I decided parse the body/blob
> of the torrent file to give us the name of the file that will result
> from running the torrent:
> * resp.body.bdecode["info"]["name"]
>
> So I wrote a script to generate the the default attributes:
> * http://ix.io/1Rl
>
> Which results in a somewhat readable dictionary.
> * 
> https://github.com/passionengine/ii/blob/master/site-cookbooks/unattended/attributes/default.rb#L40
>
> That looks something like this:
> default[:unattended][:driverpack][:torrents] = [
>  {:url=>"http://driverpacks.net/driverpacks/windows/xp/x86/bluetooth/9.10/download/torrent";,
>  :sha256=>"1bc4d487fae0c0b963e8f5a98778fe5ebd07ce403d0b6bc48f748a8363e0caaf",
>  :content_filename=>"DP_Bluetooth_wnt5_x86-32_910.7z",
>  :torrent_filename=>"DP_Bluetooth_wnt5_x86-32_910.torrent"},
>  {:url=>"http://driverpacks.net/driverpacks/windows/xp/x86/chipset/11.08/download/torrent";,
>  :sha256=>"fcbcd23b21b29b36db2e5e7899b40757a3b40a006e3f837c6e7678a6477dc432",
>  :content_filename=>"DP_Chipset_wnt5_x86-32_1108.7z",
>  :torrent_filename=>"DP_Chipset_wnt5_x86-32_1108.torrent"}]
>
> I updated the recipe to utilize the new array:
> * 
> https://github.com/passionengine/ii/blob/master/site-cookbooks/unattended/recipes/default.rb#L139
>
>
> **Now onto the meat of the matter:**
>
>
> I have debug logs of the relevant parts my chef run:
> * http://ix.io/1Rm
>
> However when I do my chef-client run, the first torrent works fine:
>
> DEBUG: Caching a copy of torrent file
> /var/cache/chef/unattended/torrents/DP_Bluetooth_wnt5_x86-32_910.torrent
> at /var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent
> INFO: Processing
> file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
> DEBUG: /var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent is about
> to be hashed!
> DEBUG: Caching a copy of torrent file
> /var/cache/chef/unattended/torrents/DP_Bluetooth_wnt5_x86-32_910.torrent
> at /var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent
> DEBUG: Setting file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent]
> to the state of the prior
> file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent]
> INFO: Processing
> file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
> DEBUG: 
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Bluetooth_wnt5_x86-32_910.7z]
> torrent hash = 4551e4bcfcd85ec04e0c28d5a151a0c1829fec19
> DEBUG: Caching a copy of torrent file
> /var/cache/chef/unattended/torrents/DP_Bluetooth_wnt5_x86-32_910.torrent
> at /var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent
> DEBUG: Setting file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent]
> to the state of the prior
> file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent]
> INFO: Processing
> file[/var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
> DEBUG: /var/cache/chef/DP_Bluetooth_wnt5_x86-32_910.torrent is about
> to be hashed!
> INFO: Found existing
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Bluetooth_wnt5_x86-32_910.7z]
> in swarm with name of 'DP_Bluetooth_wnt5_x86-32_910.7z' and status of
> 'SEED'
> DEBUG: Downloading
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Bluetooth_wnt5_x86-32_910.7z]...100%
> complete
>
> ### CORE PROBLEM
> # We should be done with Bluetooth right? No every torrent after that
> reports a torrent hash = 4551e4bcfcd85ec04e0c28d5a151a0c1829fec19 and
> doesn't get loaded into transmission.
>
> # Begin processing DP_Chipset of the next torrent
>
> DEBUG: Processing
> remote_file[/var/cache/chef/unattended/torrents/DP_Chipset_wnt5_x86-32_1108.torrent]
> on breeze.local
> INFO: Processing
> remote_file[/var/cache/chef/unattended/torrents/DP_Chipset_wnt5_x86-32_1108.torrent]
> action create (unattended::default line 149)
> DEBUG: 
> remote_file[/var/cache/chef/unattended/torrents/DP_Chipset_wnt5_x86-32_1108.torrent]
> checking for changes
> DEBUG: 
> remote_file[/var/cache/chef/unattended/torrents/DP_Chipset_wnt5_x86-32_1108.torrent]
> checksum matches target checksum
> (fcbcd23b21b29b36db2e5e7899b40757a3b40a006e3f837c6e7678a6477dc432) -
> not updating
> DEBUG: Processing
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Chipset_wnt5_x86-32_1108.7z]
> on breeze.local
> INFO: Processing
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Chipset_wnt5_x86-32_1108.7z]
> action create (unattended::default line 156)
> DEBUG: Caching a copy of torrent file
> /var/cache/chef/unattended/torrents/DP_Chipset_wnt5_x86-32_1108.torrent
> at /var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent
> INFO: Processing
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
> DEBUG: /var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent is about to
> be hashed!
> DEBUG: 
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Chipset_wnt5_x86-32_1108.7z]
> torrent hash = 4551e4bcfcd85ec04e0c28d5a151a0c1829fec19
> DEBUG: Caching a copy of torrent file
> /var/cache/chef/unattended/torrents/DP_Chipset_wnt5_x86-32_1108.torrent
> at /var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent
> DEBUG: Setting file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent]
> to the state of the prior
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent]
> INFO: Processing
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
>
> # Note that we should be about to hash this local torrent torrent file:
>
> DEBUG: /var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent is about to
> be hashed!
>
> # However it matches the DP_Bluetooth swarm!!!!!
>
> INFO: Found existing
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Chipset_wnt5_x86-32_1108.7z]
> in swarm with name of 'DP_Bluetooth_wnt5_x86-32_910.7z' and status of
> 'SEED'
>
> # And it thinks we are done without even loading our torrent file into
> transmission!!!!
>
> DEBUG: Downloading
> transmission_torrent_file[/var/cache/chef/unattended/drivers/DP_Chipset_wnt5_x86-32_1108.7z]...100%
> complete
>
> # Still unsure why we have so many of these file processes
>
> DEBUG: Processing
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent] on
> breeze.local
> INFO: Processing
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
> DEBUG: Processing
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent] on
> breeze.local
> INFO: Processing
> file[/var/cache/chef/DP_Chipset_wnt5_x86-32_1108.torrent] action
> create (/var/cache/chef/cookbooks/transmission/providers/torrent_file.rb
> line 114)
>



Archive powered by MHonArc 2.6.16.

§