blob: 687b86c5ada8bb7231b5624acc1a71eaa7fee193 (
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
|
"""
Public transport routines
"""
import sys
from Bcfg2.Reporting.Transport.base import TransportImportError
def load_transport(transport_name, setup):
"""
Try to load the transport. Raise TransportImportError on failure
"""
try:
mod_name = "%s.%s" % (__name__, transport_name)
mod = getattr(__import__(mod_name).Reporting.Transport, transport_name)
except ImportError:
try:
mod = __import__(transport_name)
except:
raise TransportImportError("Error importing transport %s: %s" %
(transport_name, sys.exc_info()[1]))
try:
return getattr(mod, transport_name)(setup)
except:
raise TransportImportError("Error instantiating transport %s: %s" %
(transport_name, sys.exc_info()[1]))
def load_transport_from_config(setup):
"""Load the transport in the config... eventually"""
try:
return load_transport(setup['reporting_transport'], setup)
except KeyError:
raise TransportImportError('Transport missing in config')
|