~eday/burrow/prototype-conversion

« back to all changes in this revision

Viewing changes to burrowd/config.py

  • Committer: Eric Day
  • Date: 2011-03-17 23:42:41 UTC
  • Revision ID: eday@oddments.org-20110317234241-ult80xn9d1lon867
First chunk of code from prototype. Beyond the prototype, configuration, module loading, and log handling was added.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2011 OpenStack LLC.
 
2
#
 
3
# Licensed under the Apache License, Version 2.0 (the "License");
 
4
# you may not use this file except in compliance with the License.
 
5
# You may obtain a copy of the License at
 
6
#
 
7
#     http://www.apache.org/licenses/LICENSE-2.0
 
8
#
 
9
# Unless required by applicable law or agreed to in writing, software
 
10
# distributed under the License is distributed on an "AS IS" BASIS,
 
11
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
12
# See the License for the specific language governing permissions and
 
13
# limitations under the License.
 
14
 
 
15
'''Configuration module for the burrow server.'''
 
16
 
 
17
import ConfigParser
 
18
 
 
19
 
 
20
class Config(object):
 
21
    '''Configuration class that wraps the ConfigParser get*
 
22
    methods. These wrappers automatically check for options in
 
23
    a specific instance section first before the regular section
 
24
    (section:instance and then section). They will also return a
 
25
    default value if given instead of throwing an exception.'''
 
26
 
 
27
    def __init__(self, config, section, instance=None):
 
28
        self.config = config
 
29
        self.section = section
 
30
        if instance is None:
 
31
            self.instance = None
 
32
        else:
 
33
            self.instance = '%s:%s' % (section, instance)
 
34
 
 
35
    def get(self, option, default=None):
 
36
        return self._get(self.config.get, option, default)
 
37
 
 
38
    def getboolean(self, option, default=None):
 
39
        return self._get(self.config.getboolean, option, default)
 
40
 
 
41
    def getfloat(self, option, default=None):
 
42
        return self._get(self.config.getfloat, option, default)
 
43
 
 
44
    def getint(self, option, default=None):
 
45
        return self._get(self.config.getint, option, default)
 
46
 
 
47
    def _get(self, method, option, default):
 
48
        if self.instance is not None:
 
49
            if self.config.has_option(self.instance, option):
 
50
                return method(self.instance, option)
 
51
        if self.config.has_option(self.section, option):
 
52
            return method(self.section, option)
 
53
        if self.config.has_option(ConfigParser.DEFAULTSECT, option):
 
54
            return method(ConfigParser.DEFAULTSECT, option)
 
55
        return default