[chef-dev] Re: local file copy resource?


Chronological Thread 
  • From: Jesse Campbell < >
  • To: Noah Kantrowitz < >
  • Cc: Chef Dev < >
  • Subject: [chef-dev] Re: local file copy resource?
  • Date: Sat, 8 Dec 2012 19:09:02 -0500

I think I'd like to see consistency with the Template resource, using
a "source" option to specify a string filename.

I'm not exactly an expert at inheritance and composition in Ruby, but
maybe someone on here is?

Could we have a simple file resource that depending on specified
options it merges in partial classes adding required functionality?
Specify a  "source" option, it merges in the necessary file copy partial class
Specify a "template_source" option it merges in the necessary
templating partial class
Specify a "remote" option it merges a partial class with the ability
to fetch things remotely



On Sat, Dec 8, 2012 at 6:46 PM, Noah Kantrowitz 
< >
 wrote:
>
> On Dec 8, 2012, at 3:41 PM, Jesse Campbell wrote:
>
>> Looking at CHEF 1716 and CHEF-3676, I'm trying to figure out the best
>> way to implement local file copies.
>>
>> My thoughts:
>> - The File resource is very simple, and that is a good thing, don't
>> want to over load it doing too many things
>> - CookbookFile is specific to installing files from a cookbook, but is
>> almost identical to a local file copy. Adding a "local" option as for
>> 1716 doesn't make sense, simply based on the naming
>>
>> Here's a commit that adds the local option and would close 1716:
>https://github.com/jcam/chef/commit/f0df80d0aac1cced64dc3d6d8cd064968dac473b
>>
>>
>> Here's Dan DeLeo's comments:
>>
>> cookbook_file feels a bit wrong, since we've scoped it to have the
>> functionality of pulling down files from the files/ section of a
>> cookbook.
>>
>> Putting it directly in the file resource also seems wrong, since it
>> doesn't currently have a concept of a source where the file comes
>> from.
>>
>> This leaves two options I can think of:
>>
>> 1. Add a local option to remote_file. This seems weird, since it's not
>> really remote, but it fits with the idea of pulling a file from one
>> place and putting it somewhere on the local system, just in this case
>> that somewhere happens to be a file system available to the local box.
>>
>> 2. Add a local_file resource and provider. This is the best conceptual
>> fit, and it shouldn't be too bad to share functionality from other
>> resources and providers via inheritance and composition. An argument
>> against is that you're creating "resource sprawl".
>
> How about 3. augment file so that #content can be a block returning a Ruby 
> file object (or string) so you could do
>
> file "foo" do
>   owner "whatever"
>   content { ::File.new("other") }
> end
>
> --Noah
>



Archive powered by MHonArc 2.6.16.

§