- 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.