~ubuntu-branches/ubuntu/vivid/python-heatclient/vivid

« back to all changes in this revision

Viewing changes to heatclient/common/environment_format.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2014-03-06 17:41:15 UTC
  • mto: This revision was merged to the branch mainline in revision 8.
  • Revision ID: package-import@ubuntu.com-20140306174115-ecpzxbyb30tl5i7a
Tags: upstream-0.2.8
ImportĀ upstreamĀ versionĀ 0.2.8

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# vim: tabstop=4 shiftwidth=4 softtabstop=4
 
2
 
 
3
#
 
4
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
 
5
#    not use this file except in compliance with the License. You may obtain
 
6
#    a copy of the License at
 
7
#
 
8
#         http://www.apache.org/licenses/LICENSE-2.0
 
9
#
 
10
#    Unless required by applicable law or agreed to in writing, software
 
11
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 
12
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 
13
#    License for the specific language governing permissions and limitations
 
14
#    under the License.
 
15
 
 
16
from heatclient.common.template_format import yaml_loader
 
17
 
 
18
import yaml
 
19
 
 
20
 
 
21
SECTIONS = (PARAMETERS, RESOURCE_REGISTRY) = \
 
22
           ('parameters', 'resource_registry')
 
23
 
 
24
 
 
25
def parse(env_str):
 
26
    '''Takes a string and returns a dict containing the parsed structure.
 
27
 
 
28
    This includes determination of whether the string is using the
 
29
    YAML format.
 
30
    '''
 
31
    try:
 
32
        env = yaml.load(env_str, Loader=yaml_loader)
 
33
    except yaml.YAMLError as yea:
 
34
        raise ValueError(yea)
 
35
    else:
 
36
        if env is None:
 
37
            env = {}
 
38
        elif not isinstance(env, dict):
 
39
            raise ValueError('The environment is not a valid '
 
40
                             'YAML mapping data type.')
 
41
 
 
42
    for param in env:
 
43
        if param not in SECTIONS:
 
44
            raise ValueError('environment has wrong section "%s"' % param)
 
45
 
 
46
    return env
 
47
 
 
48
 
 
49
def default_for_missing(env):
 
50
    '''Checks a parsed environment for missing sections.
 
51
    '''
 
52
    for param in SECTIONS:
 
53
        if param not in env:
 
54
            env[param] = {}