Ignore:
Timestamp:
Oct 29, 2008, 12:44:45 AM (15 years ago)
Author:
price
Message:

use /etc/invirt/conf.d/ too in invirt.config

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/invirt-base/python/invirt/config.py

    r1421 r1422  
    33import json
    44from invirt.common import *
     5import os
    56from os import rename
    67from os.path import getmtime
     
    1112except: loader = yaml.SafeLoader
    1213
    13 src_path   = '/etc/invirt/master.yaml'
    14 cache_path = '/var/lib/invirt/cache.json'
    15 lock_path  = '/var/lib/invirt/cache.lock'
     14src_path    = '/etc/invirt/master.yaml'
     15src_dirpath = '/etc/invirt/conf.d'
     16cache_path  = '/var/lib/invirt/cache.json'
     17lock_path   = '/var/lib/invirt/cache.lock'
     18
     19def augment(d1, d2):
     20    """Splice dict-tree d2 into d1.  Return d1.
     21
     22    Example:
     23    >>> d = {'a': {'b': 1}, 'c': 2}
     24    >>> augment(d, {'a': {'d': 3}})
     25    {'a': {'b', 1, 'd': 3}, 'c': 2}
     26    >>> d
     27    {'a': {'b', 1, 'd': 3}, 'c': 2}
     28    """
     29    for k in d2:
     30        if k in d1 and isinstance(d1[k], dict):
     31            augment(d1[k], d2[k])
     32        else:
     33            d1[k] = d2[k]
     34    return d1
     35
     36def list_files():
     37    yield src_path
     38    for name in os.listdir(src_dirpath):
     39        yield os.path.join(src_dirpath, name)
    1640
    1741def load_master():
    18     with closing(file(src_path)) as f:
    19         return yaml.load(f, loader)
     42    config = dict()
     43    for filename in list_files():
     44        with closing(file(filename)) as f:
     45            augment(config, yaml.load(f, loader))
     46    return config
    2047
    2148def get_src_mtime():
    22     return getmtime(src_path)
     49    return max(max(getmtime(filename) for filename in list_files()),
     50               getmtime(src_dirpath))
    2351
    2452def load(force_refresh = False):
Note: See TracChangeset for help on using the changeset viewer.