~ubuntu-branches/ubuntu/trusty/heat/trusty-security

« back to all changes in this revision

Viewing changes to heat/engine/resources/__init__.py

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-10-12 16:53:03 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20131012165303-0sc41ujl3luuu56q
Tags: 2013.2~rc2-0ubuntu1
New upstream release candidate (LP: #1239156).

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
import os
17
17
import os.path
18
18
 
 
19
from oslo.config import cfg
 
20
 
19
21
from heat.common import environment_format
20
22
from heat.openstack.common import log
21
23
from heat.openstack.common.gettextutils import _
25
27
LOG = log.getLogger(__name__)
26
28
 
27
29
 
28
 
def _register_resources(type_pairs):
 
30
def _register_resources(env, type_pairs):
29
31
 
30
32
    for res_name, res_class in type_pairs:
31
 
        _environment.register_class(res_name, res_class)
 
33
        env.register_class(res_name, res_class)
32
34
 
33
35
 
34
36
def _get_module_resources(module):
41
43
        return []
42
44
 
43
45
 
44
 
def _register_modules(modules):
 
46
def _register_modules(env, modules):
45
47
    import itertools
46
48
 
47
49
    resource_lists = (_get_module_resources(m) for m in modules)
48
 
    _register_resources(itertools.chain.from_iterable(resource_lists))
 
50
    _register_resources(env, itertools.chain.from_iterable(resource_lists))
49
51
 
50
52
 
51
53
_environment = None
67
69
        return []
68
70
 
69
71
 
70
 
def _load_global_environment(env_dir):
 
72
def _load_all(env):
 
73
    _load_global_resources(env)
 
74
    _load_global_environment(env)
 
75
 
 
76
 
 
77
def _load_global_environment(env, env_dir=None):
 
78
    if env_dir is None:
 
79
        cfg.CONF.import_opt('environment_dir', 'heat.common.config')
 
80
        env_dir = cfg.CONF.environment_dir
 
81
 
71
82
    for env_name in _list_environment_files(env_dir):
72
83
        try:
73
84
            file_path = os.path.join(env_dir, env_name)
75
86
                LOG.info('Loading %s' % file_path)
76
87
                env_body = environment_format.parse(env_fd.read())
77
88
                environment_format.default_for_missing(env_body)
78
 
                _environment.load(env_body)
 
89
                env.load(env_body)
79
90
        except ValueError as vex:
80
91
            LOG.error('Failed to parse %s/%s' % (env_dir, env_name))
81
92
            LOG.exception(vex)
88
99
    global _environment
89
100
    if _environment is not None:
90
101
        return
 
102
 
 
103
    _environment = environment.Environment({}, user_env=False)
 
104
    _load_all(_environment)
 
105
 
 
106
 
 
107
def _load_global_resources(env):
91
108
    import sys
92
 
    from oslo.config import cfg
93
109
    from heat.common import plugin_loader
94
110
 
95
 
    _environment = environment.Environment({}, user_env=False)
96
 
    cfg.CONF.import_opt('environment_dir', 'heat.common.config')
97
 
    _load_global_environment(cfg.CONF.environment_dir)
98
 
    _register_modules(plugin_loader.load_modules(sys.modules[__name__]))
 
111
    # load plugin modules
 
112
    _register_modules(env, plugin_loader.load_modules(sys.modules[__name__]))
99
113
 
100
114
    cfg.CONF.import_opt('plugin_dirs', 'heat.common.config')
101
 
 
102
115
    plugin_pkg = plugin_loader.create_subpackage(cfg.CONF.plugin_dirs,
103
116
                                                 'heat.engine')
104
 
    _register_modules(plugin_loader.load_modules(plugin_pkg, True))
105
 
    _initialized = True
 
117
    _register_modules(env, plugin_loader.load_modules(plugin_pkg, True))