1 Subject: Missing configuration opts from cinder.sample.conf
2 The logic for writing opts registered with register_opt() to the
3 auto-generated opts.py file was flawed in that the directories where
4 there were opts being registered with this method would be imported,
5 but the actual opt would be missed when looking through the file for
6 the name of the opt being registered. Now the singular opts are being
7 caught and written to opts.py for the oslo-config-generator to process.
9 The 'backend' section was added to generate_cinder_opts.py
10 due to some of the missing opts being a part of that section.
12 Also the way some of the opts that were being registered with groups
13 were incorrect and so this addresses those in both how they were
14 processed in generate_cinder_opts.py and the files in which they are being
17 There is also one change to the name of an opt in cinder/volume/api.py.
18 Instances such as this one will be caught by the in-progress hacking
19 check patch: https://review.openstack.org/#/c/223375/
20 Author: Kendall Nelson <kjnelson@us.ibm.com>
21 Date: Mon, 21 Sep 2015 18:11:19 +0000 (-0500)
22 X-Git-Url: https://review.openstack.org/gitweb?p=openstack%2Fcinder.git;a=commitdiff_plain;h=10f5e92e1246dd33b244c4a7031bb81b17b240a3
23 Change-Id: I8d333d7529d40f3a3b3651ca3a52c0048d96b99a
24 Bug-Ubuntu: https://bugs.launchpad.net/cinder/+bug/1498122
25 Origin: upstream, https://review.openstack.org/#/c/225974/
26 Last-Update: 2015-09-01
28 diff --git a/cinder/config/generate_cinder_opts.py b/cinder/config/generate_cinder_opts.py
29 index 9fa8d13..50c206b 100644
30 --- a/cinder/config/generate_cinder_opts.py
31 +++ b/cinder/config/generate_cinder_opts.py
32 @@ -19,6 +19,8 @@ if __name__ == "__main__":
33 opt_file = open("cinder/opts.py", 'a')
36 + REGISTER_OPTS_STR = "CONF.register_opts("
37 + REGISTER_OPT_STR = "CONF.register_opt("
39 opt_file.write("import copy\n")
40 opt_file.write("import itertools\n\n")
41 @@ -31,11 +33,11 @@ if __name__ == "__main__":
42 '+ | sed -e "s/^' + basedir +
45 - cmd_opts = common_string % "CONF.register_opts("
46 + cmd_opts = common_string % REGISTER_OPTS_STR
47 output_opts = subprocess.check_output('{}'.format(cmd_opts), shell = True)
48 dir_trees_list = output_opts.split()
50 - cmd_opt = common_string % "CONF.register_opt("
51 + cmd_opt = common_string % REGISTER_OPT_STR
52 output_opt = subprocess.check_output('{}'.format(cmd_opt), shell = True)
53 temp_list = output_opt.split()
55 @@ -84,21 +86,29 @@ if __name__ == "__main__":
56 'BRCD_FABRIC_EXAMPLE': [],
57 'CISCO_FABRIC_EXAMPLE': [],
62 def _write_item(opts):
64 - if list_name.lower() == "opts":
65 + if list_name.lower() == "opt":
66 opt_file.write(" [" + opts.strip("\n") + "],\n")
68 opt_file.write(" " + opts.strip("\n") + ",\n")
70 + def _retrieve_name(aline):
71 + if REGISTER_OPT_STR in aline:
72 + str_to_replace = REGISTER_OPT_STR
74 + str_to_replace = REGISTER_OPTS_STR
75 + return aline.replace(str_to_replace, "")
78 fd = os.open(opt_dict[key], os.O_RDONLY)
79 afile = os.fdopen(fd, "r")
82 - exists = aline.find("CONF.register_opts(")
83 + exists = aline.find("CONF.register_opt")
85 # TODO(kjnelson) FIX THIS LATER. These are instances where
86 # CONF.register_opts is happening without actually registering
87 @@ -109,41 +119,48 @@ if __name__ == "__main__":
90 if aline.find("fc-zone-manager") != -1:
91 - fc_zm_list = aline.replace("CONF.register_opts(", '')
92 - fc_zm_list = fc_zm_list.replace(", 'fc-zone-manager')", '')
94 + fc_zm_list = _retrieve_name(aline)
95 + replace_string = ", group='fc-zone-manager')"
96 + fc_zm_list = fc_zm_list.replace(replace_string, '')
97 + fc_zm_list = fc_zm_list.strip()
98 line = key + "." + fc_zm_list
99 registered_opts_dict['fc-zone-manager'].append(line)
100 elif aline.find("keymgr") != -1:
101 - keymgr_list = aline.replace("CONF.register_opts(", '')
102 + keymgr_list = _retrieve_name(aline)
103 keymgr_list = keymgr_list.replace(", group='keymgr')", '')
104 - keymgr_list = keymgr_list.replace(", 'keymgr')", '')
105 - keymgr_list.strip()
106 + keymgr_list = keymgr_list.strip()
107 line = key + "." + keymgr_list
108 registered_opts_dict['keymgr'].append(line)
109 elif aline.find("BRCD_FABRIC_EXAMPLE") != -1:
110 - brcd_list = aline.replace("CONF.register_opts(", '')
111 - replace_string = ", 'BRCD_FABRIC_EXAMPLE')"
112 + brcd_list = _retrieve_name(aline)
113 + replace_string = ", group='BRCD_FABRIC_EXAMPLE')"
114 brcd_list = brcd_list.replace(replace_string, '')
116 + brcd_list = brcd_list.strip()
117 line = key + "." + brcd_list
118 registered_opts_dict['BRCD_FABRIC_EXAMPLE'].append(line)
119 elif aline.find("CISCO_FABRIC_EXAMPLE") != -1:
120 - cisco_list = aline.replace("CONF.register_opts(", '')
121 - replace_string = ", 'CISCO_FABRIC_EXAMPLE')"
122 + cisco_list = _retrieve_name(aline)
123 + replace_string = ", group='CISCO_FABRIC_EXAMPLE')"
124 cisco_list = cisco_list.replace(replace_string, '')
126 + cisco_list = cisco_list.strip()
127 line = key + "." + cisco_list
128 registered_opts_dict['CISCO_FABRIC_EXAMPLE'].append(line)
129 elif aline.find("profiler") != -1:
130 - profiler_list = aline.replace("CONF.register_opts(", '')
131 + profiler_list = _retrieve_name(aline)
132 replace_string = ', group="profiler")'
133 profiler_list = profiler_list.replace(replace_string, '')
134 - profiler_list.strip()
135 + profiler_list = profiler_list.strip()
136 line = key + "." + profiler_list
137 registered_opts_dict['profiler'].append(line)
138 + elif aline.find("backend") != -1:
139 + backend_list = _retrieve_name(aline)
140 + replace_string = ', group=backend)'
141 + backend_list = backend_list.replace(replace_string, '')
142 + backend_list = backend_list.strip()
143 + line = key + "." + backend_list
144 + registered_opts_dict['backend'].append(line)
146 - default_list = aline.replace("CONF.register_opts(", '')
147 + default_list = _retrieve_name(aline)
148 default_list = default_list.replace(')', '').strip()
149 line = key + "." + default_list
150 registered_opts_dict['DEFAULT'].append(line)
151 @@ -166,6 +183,14 @@ if __name__ == "__main__":
152 for item in registered_opts_dict["profiler"]:
155 + backend_str = (" )),\n"
157 + " itertools.chain(\n")
158 + opt_file.write(backend_str)
160 + for item in registered_opts_dict["backend"]:
163 cisco_str = (" )),\n"
164 " ('CISCO_FABRIC_EXAMPLE',\n"
165 " itertools.chain(\n")
166 diff --git a/cinder/keymgr/key_mgr.py b/cinder/keymgr/key_mgr.py
167 index 4d8bbdb..71ed7a7 100644
168 --- a/cinder/keymgr/key_mgr.py
169 +++ b/cinder/keymgr/key_mgr.py
170 @@ -32,7 +32,7 @@ encryption_opts = [
174 -CONF.register_opts(encryption_opts, 'keymgr')
175 +CONF.register_opts(encryption_opts, group='keymgr')
178 @six.add_metaclass(abc.ABCMeta)
179 diff --git a/cinder/volume/api.py b/cinder/volume/api.py
180 index 03f1d74..5db3a7b 100644
181 --- a/cinder/volume/api.py
182 +++ b/cinder/volume/api.py
183 @@ -52,12 +52,13 @@ from cinder.volume import utils as volume_utils
184 from cinder.volume import volume_types
187 -allow_force_upload = cfg.BoolOpt('enable_force_upload',
189 - help='Enables the Force option on '
190 - 'upload_to_image. This enables '
191 - 'running upload_volume on in-use '
192 - 'volumes for backends that support it.')
193 +allow_force_upload_opt = cfg.BoolOpt('enable_force_upload',
195 + help='Enables the Force option on '
196 + 'upload_to_image. This enables '
197 + 'running upload_volume on in-use '
198 + 'volumes for backends that '
200 volume_host_opt = cfg.BoolOpt('snapshot_same_host',
202 help='Create volume from snapshot at the host '
203 @@ -73,7 +74,7 @@ az_cache_time_opt = cfg.IntOpt('az_cache_duration',
207 -CONF.register_opt(allow_force_upload)
208 +CONF.register_opt(allow_force_upload_opt)
209 CONF.register_opt(volume_host_opt)
210 CONF.register_opt(volume_same_az_opt)
211 CONF.register_opt(az_cache_time_opt)
212 diff --git a/cinder/zonemanager/drivers/brocade/brcd_fabric_opts.py b/cinder/zonemanager/drivers/brocade/brcd_fabric_opts.py
213 index 6c1276a..26c8fbe 100644
214 --- a/cinder/zonemanager/drivers/brocade/brcd_fabric_opts.py
215 +++ b/cinder/zonemanager/drivers/brocade/brcd_fabric_opts.py
216 @@ -50,7 +50,7 @@ brcd_zone_opts = [
220 -CONF.register_opts(brcd_zone_opts, 'BRCD_FABRIC_EXAMPLE')
221 +CONF.register_opts(brcd_zone_opts, group='BRCD_FABRIC_EXAMPLE')
222 LOG = logging.getLogger(__name__)
225 diff --git a/cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py b/cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py
226 index 696af1f..506888d 100644
227 --- a/cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py
228 +++ b/cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py
229 @@ -52,7 +52,7 @@ brcd_opts = [
233 -CONF.register_opts(brcd_opts, 'fc-zone-manager')
234 +CONF.register_opts(brcd_opts, group='fc-zone-manager')
237 class BrcdFCZoneDriver(fc_zone_driver.FCZoneDriver):
238 diff --git a/cinder/zonemanager/drivers/cisco/cisco_fabric_opts.py b/cinder/zonemanager/drivers/cisco/cisco_fabric_opts.py
239 index c105b31..0aa0cea 100644
240 --- a/cinder/zonemanager/drivers/cisco/cisco_fabric_opts.py
241 +++ b/cinder/zonemanager/drivers/cisco/cisco_fabric_opts.py
242 @@ -47,7 +47,7 @@ cisco_zone_opts = [
246 -CONF.register_opts(cisco_zone_opts, 'CISCO_FABRIC_EXAMPLE')
247 +CONF.register_opts(cisco_zone_opts, group='CISCO_FABRIC_EXAMPLE')
250 def load_fabric_configurations(fabric_names):
251 diff --git a/cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py b/cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py
252 index 98d4535..85d69b6 100644
253 --- a/cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py
254 +++ b/cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py
255 @@ -50,7 +50,7 @@ cisco_opts = [
259 -CONF.register_opts(cisco_opts, 'fc-zone-manager')
260 +CONF.register_opts(cisco_opts, group='fc-zone-manager')
263 class CiscoFCZoneDriver(fc_zone_driver.FCZoneDriver):
264 diff --git a/cinder/zonemanager/fc_zone_manager.py b/cinder/zonemanager/fc_zone_manager.py
265 index ecbbe23..011890b 100644
266 --- a/cinder/zonemanager/fc_zone_manager.py
267 +++ b/cinder/zonemanager/fc_zone_manager.py
268 @@ -64,7 +64,7 @@ zone_manager_opts = [
272 -CONF.register_opts(zone_manager_opts, 'fc-zone-manager')
273 +CONF.register_opts(zone_manager_opts, group='fc-zone-manager')
276 class ZoneManager(fc_common.FCCommon):