On Sun 04 Dec 2011 03:45:10 AM EST, Ayal Baron wrote:
>
>
> ----- Original Message -----
>> On Sat, Dec 03, 2011 at 06:08:45PM -0500, Ayal Baron wrote:
>>>
>>>
>>> ----- Original Message -----
>>>> On Thu, Dec 01, 2011 at 10:13:53PM -0500, Saggi Mizrahi wrote:
>>>>> I want to suggest a different way of handling constants.py and
>>>>> config.py
>>>>> the current way is clumsy and makes making convoluted code
>>>>> easy.
>>>>>
>>>>> GLOBAL VARIABLES ARE BAD. It's not something I invented. It's
>>>>> well
>>>>> accepted that proper scoping yields better code.
>>>>
>>>> FOLLOWING UPERCASE MAXIMS BLINDLY IS BAD. (and that's something I
>>>> have invented.)
>>>>
>>>>>
>>>>> The way we use those two files shows how much of a mess
>>>>> globally
>>>>> accessible variable can be.
>>>>>
>>>>> Not putting paths to executable in constants.py
>>>>> -----------------------------------------------
>>>>> Instead we should have a module for each utility executable.
>>>>> The
>>>>> module
>>>>> should wrap the utility with a pythonic interface. That way
>>>>> there
>>>>> is no
>>>>> reason for more then one module to have access to a utility's
>>>>> path.
>>>>>
>>>>> For example:
>>>>>
>>>>> cat.py
>>>>> ------
>>>>>
>>>>> _CAT_PATH = @CAT_PATH@
>>>>>
>>>>> def cat(files):
>>>>>      cmd = [_CAT_PATH] + files
>>>>>      out, err = exec(cmd)
>>>>>      return out
>>>>>
>>>>> Now there is no need to know where cat is. You have a proper
>>>>> interface
>>>>> to use. Preventing people from re-wrapping the utility over and
>>>>> over.
>>>>> This in turn means you have a canonical wrapper that is more
>>>>> likely
>>>>> to work.
>>>>
>>>> I agree that our current behavior is clunky. Most external
>>>> executable
>>>> should be
>>>> wrapped by functions that exposes the functionality which we need
>>>> from them.
>>>>
>>>> I am not sure that having a module per executable makes the most
>>>> sense; I'd
>>>> separate modularity based on Vdsm usage of them. Anyway, the only
>>>> up
>>>> side of our
>>>> current constants-aggregating approach, is that the number of
>>>> files
>>>> editted by
>>>> autoconf is limitted.
>>>>
>>>> P.S. EXT_CAT is a horrible example. It exists only for letting
>>>> Vdsm
>>>> read
>>>> /etc/multipath.conf. This functionality must be wrapped properly
>>>> and
>>>> shoved into
>>>> supervdsm.
>>>
>>> That doesn't mean that supervdsm shouldn't have a canonical way of
>>> using it which could be later on leveraged in other places.
>>> i.e. assuming we converge on this way of doing things, it should
>>> apply to supervdsm as well.
>>
>> I'm not sure what you are saying here...
>> But I would like to stress again that "cat" is way too low-level and
>> generic to be exposed by supervdsm. supervdsm should expose
>> higher-level
>> functions that cannot harm irrelevant parts of the host.
>
> You are 100% correct.  What I'm saying is that when *supervdsm* uses cat, it 
> should do so like above.
> The API it exposes should not include a generic 'cat', no doubt about that.
>
>>
>> Dan.
>>

Who is talking about supervdsm?
_______________________________________________
vdsm-devel mailing list
vdsm-devel@lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/vdsm-devel

Reply via email to