summaryrefslogtreecommitdiffstats
path: root/server/config_data.py
blob: 9ccca75c1cbfbe56fd3d46d945a65e843aea77db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/python

# Virt-factory backend code.
#
# Copyright 2006, Red Hat, Inc
# Michael DeHaan <mdehaan@redhat.com>
# Scott Seago <sseago@redhat.com>
# Adrian Likins <alikins@redhat.com>
#
# This software may be freely redistributed under the terms of the GNU
# general public license.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


from codes import *

import os
import yaml

CONFIG_FILE = "/etc/virt-factory/settings"

# from the comments in http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531
#class Singleton(object):
#    def __new__(type):
#        if not '_the_instance' in type.__dict__:
#            type._the_instance = object.__new__(type)
#        return type._the_instance


class Config:

    # this class is a Borg
    __shared_state = {}
    has_read = False

    def __init__(self):
        self.__dict__ = self.__shared_state
        if not self.has_read:
            self.read()
            print "***** CONFIG RELOAD *****"
            Config.has_read = True

    def read(self):
        if not os.path.exists(CONFIG_FILE):
            raise MisconfiguredException(comment="Missing %s" % CONFIG_FILE)
        config_file = open(CONFIG_FILE)
        data = config_file.read()
        self.ds = yaml.load(data).next()
   

    def get(self):
        return self.ds