-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathtempconfigfile_fixture.py
More file actions
64 lines (52 loc) · 2.06 KB
/
tempconfigfile_fixture.py
File metadata and controls
64 lines (52 loc) · 2.06 KB
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
58
59
60
61
62
63
64
# Copyright (c) 2013 NEC Corporation
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# @author: Akihiro Motoki, NEC Corporation
import os
import tempfile
import fixtures
from neutron.common.test_lib import test_config
class TempConfigFile(fixtures.NestedTempfile):
"""Create a temporary config file with given configs.
The format of the argument passed to the constructor is:
{"<section1>": {"key1": "value1"},
"<section2>": {"key2": "value2",
"key3": "value3"}}
It generates a temporary config file as follows:
[section1]
key1 = value1
[section2]
key2 = value2
key3 = value3
"""
def __init__(self, configs):
super(TempConfigFile, self).__init__()
self.configs = configs
def setUp(self):
super(TempConfigFile, self).setUp()
fd, self.cfg_file = tempfile.mkstemp()
with os.fdopen(fd, 'w') as f:
for group in self.configs:
f.write('[%s]\n' % group)
for key, value in self.configs[group].items():
f.write('%(key)s = %(value)s\n' %
{'key': key, 'value': value})
if 'config_files' not in test_config:
test_config['config_files'] = []
self.addCleanup(self.clean_test_config)
test_config['config_files'].append(self.cfg_file)
def clean_test_config(self):
if self.cfg_file in test_config['config_files']:
test_config['config_files'].remove(self.cfg_file)