On 10 March 2010 06:41, Luke Kanies <l...@reductivelabs.com> wrote:
>
> On Mar 9, 2010, at 10:35 PM, Paul Nasrat wrote:
>
>> On 10 March 2010 03:56, Nigel Kersten <nig...@google.com> wrote:
>>>
>>> On Tue, Mar 9, 2010 at 5:52 PM, Luke Kanies <l...@reductivelabs.com>
>>> wrote:
>>>>
>>>> On Mar 9, 2010, at 5:09 AM, Michael DeHaan wrote:
>>>>
>>>>>> {
>>>>>>  "facts": {
>>>>>>  "network": {
>>>>>>   "interface": "eth0",
>>>>>>   "ip": "192.168.0.1",
>>>>>>   "netmask": "255.255.255.0",
>>>>>>  },
>>>>>>  "disk": {
>>>>>>   "name": "sda1",
>>>>>>   "size": "1000",
>>>>>>  }
>>>>>>  },
>>>>>> }
>>>>>
>>>>>
>>>>> Yep, that's pretty much what I was proposing.   I'm a big fan of
>>>>> structured stdin/stdout interfaces for quick extensibiility (and
>>>>> JSON).
>>>>>
>>>>> We could start by doing something that supports non-datastructured
>>>>> facts now, and add datastructures later.
>>>>> For now, it could just assert in the code that the type of each hash
>>>>> key was a string or int.
>>>>
>>>> I concur on the basic plan.
>>>>
>>>> I'd add that having some plain data, like /etc/facter.d/foo, wouldn't be
>>>> all
>>>> bad, either, so you could just statically declare facts.
>>>
>>>
>>> ++
>>>
>>> I reckon something like:
>>>
>>> /etc/facter/facter.conf (main config file)
>>> /var/lib/facter/data.d/ (plain text files containing fact values)
>>> /var/lib/facter/plugins.d/ (foreign language executables returning fact
>>> values)
>>>
>>> The natural location for all these things differs across platforms, so
>>> it should be added to the install.rb script to make them
>>> configurable... http://projects.reductivelabs.com/issues/3361
>>>
>>
>> I'd also love to move the default search path logic not to be
>> $LOAD_PATH.collect { |d| File.join(d, "facter") }, so we can have a
>> sensible (ie not everything under util/) hierachy for facter's core
>> functionality. But that's probably a breaking change, but we can
>> safely add say a configurable location for native facts in parallel
>> with config, key/value fact files and executable fact files.
>
> Can you explain in more detail what you mean here?
>

Currently facter consists of basically

facter.rb
facter/[facts].rb
facter/util/actual_facter_code/helpers

The classes responsible for actually doing things in facter -
resolution, loading, etc are buried under util. It's not a major thing
but I think it's cleaner to split it the other way (make the facts in
a special place, and the code under facter), having
facter/util/config.rb for handling the config seems wrong .

So eg we could eventually try move to having

facter/facts (for ruby facts)
FACTERLIB

I can also see us potentially wanting to think about how we deal with
fact hierachies potentially moving things into directories so that we
can split up or conditionalize/collapse the order of loading a bit. A
lot of facts have implicit dependencies on just one, or two core facts
for the purposes of confines. It

It's not something I'm overly worried about for now, but if we're
changing the code related to ordering I'd like to be provide the
ability to configure the equivalent of FACTERLIB in the config, and
potentially override the behaviour to say *only look here*. That could
work around some of the issues in the past that have bitten us with
testing under Hudson when we change facter and have an earlier facter
installed on the system we pick up stuff from the system and you get
unexpected failures due to the interaction.

Paul

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to