1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import sys
23
24
25 if sys.version_info[0] == 3:
26 import configparser as ConfigParser
27 else:
28 import ConfigParser
29
30
31
32
33
34
36
37 _instance = None
38
39 - def __init__(self, filename=None, ensure_consistency=False):
40
41
42
43 self.options_defaults = {
44 'newest': '0',
45 'usage': '0',
46 'header': '0',
47 'test': '0',
48 'nullorg': '0',
49 'source': '0',
50 'stdin': '0',
51 'verbose': '0',
52 'force': '0',
53 'nosig': '0',
54 'list': '0',
55 'exclude': '',
56 'files': '',
57 'orgid': '',
58 'reldir': '',
59 'count': '',
60 'dir': '',
61 'server': 'http://rhn.redhat.com/APP',
62 'channel': '',
63 'cache_lifetime': '600',
64 'new_cache': '0',
65 'extended_test': '0',
66 'no_session_caching': '0',
67 'proxy': '',
68 'tolerant': '0',
69 'ca_chain': '/usr/share/rhn/RHN-ORG-TRUSTED-SSL-CERT',
70 'timeout': None
71 }
72
73
74 self.settings = ConfigParser.ConfigParser()
75
76
77 self.section = "rhnpush"
78
79 self.username = None
80 self.password = None
81
82 if filename:
83 self.filename = filename
84 self._read_config_files()
85
86
87
88 self._add_config_as_attr(ensure_consistency=ensure_consistency)
89
90
92 try:
93 self.settings.read([self.filename])
94 except IOError:
95 e = sys.exc_info()[1]
96 print(("Config File Error: line %s, file %s: %s" % (e.lineno, e.filename, e)))
97 sys.exit(1)
98
99 - def write(self, fileobj):
100 try:
101 self.settings.write(fileobj)
102 except IOError:
103 e = sys.exc_info()[1]
104 print(("Config File Error: line %s, file %s: %s" % (e.lineno, e.filename, e)))
105 sys.exit(1)
106
107
108
109
111 try:
112 return self.settings.get(self.section, option)
113 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
114 e = sys.exc_info()[1]
115 print("Option/Section Error: line %s, file %s: %s" % (e.lineno, e.filename, e))
116 sys.exit(1)
117
118
121
122
124 if self.settings.has_section(self.section):
125 return self.settings.options(self.section)
126
127 return ()
128
129
132
135
138
141
142
144 for k in self._keys():
145 self.__dict__[k] = self.settings.get(self.section, k)
146
147
148 if ensure_consistency:
149 for thiskey in self.options_defaults:
150 if thiskey not in self.__dict__:
151 self.__dict__[thiskey] = self.options_defaults[thiskey]
152