Package flumotion :: Package admin :: Module config
[hide private]

Source Code for Module flumotion.admin.config

 1  # -*- Mode: Python; test-case-name: flumotion.test.test_config -*- 
 2  # vi:si:et:sw=4:sts=4:ts=4 
 3  # 
 4  # Flumotion - a streaming media server 
 5  # Copyright (C) 2004,2005,2006,2007 Fluendo, S.L. (www.fluendo.com). 
 6  # All rights reserved. 
 7   
 8  # This file may be distributed and/or modified under the terms of 
 9  # the GNU General Public License version 2 as published by 
10  # the Free Software Foundation. 
11  # This file is distributed without any warranty; without even the implied 
12  # warranty of merchantability or fitness for a particular purpose. 
13  # See "LICENSE.GPL" in the source distribution for more information. 
14   
15  # Licensees having purchased or holding a valid Flumotion Advanced 
16  # Streaming Server license may use this file in accordance with the 
17  # Flumotion Advanced Streaming Server Commercial License Agreement. 
18  # See "LICENSE.Flumotion" in the source distribution for more information. 
19   
20  # Headers in this file shall remain intact. 
21   
22  """ 
23  parsing of admin configuration files 
24  """ 
25   
26  from flumotion.common import errors 
27  from flumotion.common import config as fluconfig 
28   
29  __version__ = "$Rev: 6628 $" 
30   
31   
32 -class AdminConfigParser(fluconfig.BaseConfigParser):
33 """ 34 Admin configuration file parser. 35 """ 36 logCategory = 'config' 37
38 - def __init__(self, sockets, file):
39 """ 40 @param file: The file to parse, either as an open file object, 41 or as the name of a file to open. 42 @type file: str or file. 43 """ 44 self.plugs = {} 45 for socket in sockets: 46 self.plugs[socket] = [] 47 48 # will start the parse via self.add() 49 fluconfig.BaseConfigParser.__init__(self, file)
50
51 - def _parse(self):
52 # <admin> 53 # <plugs> 54 root = self.doc.documentElement 55 if not root.nodeName == 'admin': 56 raise errors.ConfigError("unexpected root node': %s" % 57 (root.nodeName,)) 58 59 def parseplugs(node): 60 return fluconfig.buildPlugsSet(self.parsePlugs(node), 61 self.plugs.keys())
62 def addplugs(plugs): 63 for socket in plugs: 64 self.plugs[socket].extend(plugs[socket])
65 parsers = {'plugs': (parseplugs, addplugs)} 66 67 self.parseFromTable(root, parsers) 68 self.doc.unlink() 69 self.doc = None 70
71 - def add(self, file):
72 """ 73 @param file: The file to parse, either as an open file object, 74 or as the name of a file to open. 75 @type file: str or file. 76 """ 77 fluconfig.BaseConfigParser.add(self, file) 78 self._parse()
79