Merge lp:~heut2008/charms/trusty/ceph-radosgw/auth_protocol into lp:~openstack-charmers-archive/charms/trusty/ceph-radosgw/trunk
- Trusty Tahr (14.04)
- auth_protocol
- Merge into trunk
Proposed by
Yaguang Tang
Status: | Superseded |
---|---|
Proposed branch: | lp:~heut2008/charms/trusty/ceph-radosgw/auth_protocol |
Merge into: | lp:~openstack-charmers-archive/charms/trusty/ceph-radosgw/trunk |
Diff against target: |
392 lines (+169/-46) (has conflicts) 8 files modified
hooks/ceph.py (+0/-15) hooks/charmhelpers/contrib/storage/linux/utils.py (+1/-0) hooks/charmhelpers/core/fstab.py (+116/-0) hooks/charmhelpers/core/hookenv.py (+5/-4) hooks/charmhelpers/core/host.py (+8/-6) hooks/charmhelpers/fetch/__init__.py (+33/-16) hooks/hooks.py (+5/-4) templates/ceph.conf (+1/-1) Conflict adding file hooks/charmhelpers/core/fstab.py. Moved existing file to hooks/charmhelpers/core/fstab.py.moved. |
To merge this branch: | bzr merge lp:~heut2008/charms/trusty/ceph-radosgw/auth_protocol |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
OpenStack Charmers | Pending | ||
Review via email:
|
This proposal has been superseded by a proposal from 2014-08-28.
Commit message
Description of the change
To post a comment you must log in.
Unmerged revisions
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'hooks/ceph.py' | |||
2 | --- hooks/ceph.py 2014-01-24 16:04:49 +0000 | |||
3 | +++ hooks/ceph.py 2014-08-28 10:55:53 +0000 | |||
4 | @@ -11,7 +11,6 @@ | |||
5 | 11 | import subprocess | 11 | import subprocess |
6 | 12 | import time | 12 | import time |
7 | 13 | import os | 13 | import os |
8 | 14 | import apt_pkg as apt | ||
9 | 15 | 14 | ||
10 | 16 | from socket import gethostname as get_unit_hostname | 15 | from socket import gethostname as get_unit_hostname |
11 | 17 | 16 | ||
12 | @@ -220,17 +219,3 @@ | |||
13 | 220 | if 'key' in element: | 219 | if 'key' in element: |
14 | 221 | key = element.split(' = ')[1].strip() # IGNORE:E1103 | 220 | key = element.split(' = ')[1].strip() # IGNORE:E1103 |
15 | 222 | return key | 221 | return key |
16 | 223 | |||
17 | 224 | |||
18 | 225 | def get_ceph_version(package=None): | ||
19 | 226 | apt.init() | ||
20 | 227 | cache = apt.Cache() | ||
21 | 228 | pkg = cache[package or 'ceph'] | ||
22 | 229 | if pkg.current_ver: | ||
23 | 230 | return apt.upstream_version(pkg.current_ver.ver_str) | ||
24 | 231 | else: | ||
25 | 232 | return None | ||
26 | 233 | |||
27 | 234 | |||
28 | 235 | def version_compare(a, b): | ||
29 | 236 | return apt.version_compare(a, b) | ||
30 | 237 | 222 | ||
31 | === modified file 'hooks/charmhelpers/contrib/storage/linux/utils.py' | |||
32 | --- hooks/charmhelpers/contrib/storage/linux/utils.py 2014-05-19 11:37:27 +0000 | |||
33 | +++ hooks/charmhelpers/contrib/storage/linux/utils.py 2014-08-28 10:55:53 +0000 | |||
34 | @@ -37,6 +37,7 @@ | |||
35 | 37 | check_call(['dd', 'if=/dev/zero', 'of=%s' % (block_device), | 37 | check_call(['dd', 'if=/dev/zero', 'of=%s' % (block_device), |
36 | 38 | 'bs=512', 'count=100', 'seek=%s' % (gpt_end)]) | 38 | 'bs=512', 'count=100', 'seek=%s' % (gpt_end)]) |
37 | 39 | 39 | ||
38 | 40 | |||
39 | 40 | def is_device_mounted(device): | 41 | def is_device_mounted(device): |
40 | 41 | '''Given a device path, return True if that device is mounted, and False | 42 | '''Given a device path, return True if that device is mounted, and False |
41 | 42 | if it isn't. | 43 | if it isn't. |
42 | 43 | 44 | ||
43 | === added file 'hooks/charmhelpers/core/fstab.py' | |||
44 | --- hooks/charmhelpers/core/fstab.py 1970-01-01 00:00:00 +0000 | |||
45 | +++ hooks/charmhelpers/core/fstab.py 2014-08-28 10:55:53 +0000 | |||
46 | @@ -0,0 +1,116 @@ | |||
47 | 1 | #!/usr/bin/env python | ||
48 | 2 | # -*- coding: utf-8 -*- | ||
49 | 3 | |||
50 | 4 | __author__ = 'Jorge Niedbalski R. <jorge.niedbalski@canonical.com>' | ||
51 | 5 | |||
52 | 6 | import os | ||
53 | 7 | |||
54 | 8 | |||
55 | 9 | class Fstab(file): | ||
56 | 10 | """This class extends file in order to implement a file reader/writer | ||
57 | 11 | for file `/etc/fstab` | ||
58 | 12 | """ | ||
59 | 13 | |||
60 | 14 | class Entry(object): | ||
61 | 15 | """Entry class represents a non-comment line on the `/etc/fstab` file | ||
62 | 16 | """ | ||
63 | 17 | def __init__(self, device, mountpoint, filesystem, | ||
64 | 18 | options, d=0, p=0): | ||
65 | 19 | self.device = device | ||
66 | 20 | self.mountpoint = mountpoint | ||
67 | 21 | self.filesystem = filesystem | ||
68 | 22 | |||
69 | 23 | if not options: | ||
70 | 24 | options = "defaults" | ||
71 | 25 | |||
72 | 26 | self.options = options | ||
73 | 27 | self.d = d | ||
74 | 28 | self.p = p | ||
75 | 29 | |||
76 | 30 | def __eq__(self, o): | ||
77 | 31 | return str(self) == str(o) | ||
78 | 32 | |||
79 | 33 | def __str__(self): | ||
80 | 34 | return "{} {} {} {} {} {}".format(self.device, | ||
81 | 35 | self.mountpoint, | ||
82 | 36 | self.filesystem, | ||
83 | 37 | self.options, | ||
84 | 38 | self.d, | ||
85 | 39 | self.p) | ||
86 | 40 | |||
87 | 41 | DEFAULT_PATH = os.path.join(os.path.sep, 'etc', 'fstab') | ||
88 | 42 | |||
89 | 43 | def __init__(self, path=None): | ||
90 | 44 | if path: | ||
91 | 45 | self._path = path | ||
92 | 46 | else: | ||
93 | 47 | self._path = self.DEFAULT_PATH | ||
94 | 48 | file.__init__(self, self._path, 'r+') | ||
95 | 49 | |||
96 | 50 | def _hydrate_entry(self, line): | ||
97 | 51 | # NOTE: use split with no arguments to split on any | ||
98 | 52 | # whitespace including tabs | ||
99 | 53 | return Fstab.Entry(*filter( | ||
100 | 54 | lambda x: x not in ('', None), | ||
101 | 55 | line.strip("\n").split())) | ||
102 | 56 | |||
103 | 57 | @property | ||
104 | 58 | def entries(self): | ||
105 | 59 | self.seek(0) | ||
106 | 60 | for line in self.readlines(): | ||
107 | 61 | try: | ||
108 | 62 | if not line.startswith("#"): | ||
109 | 63 | yield self._hydrate_entry(line) | ||
110 | 64 | except ValueError: | ||
111 | 65 | pass | ||
112 | 66 | |||
113 | 67 | def get_entry_by_attr(self, attr, value): | ||
114 | 68 | for entry in self.entries: | ||
115 | 69 | e_attr = getattr(entry, attr) | ||
116 | 70 | if e_attr == value: | ||
117 | 71 | return entry | ||
118 | 72 | return None | ||
119 | 73 | |||
120 | 74 | def add_entry(self, entry): | ||
121 | 75 | if self.get_entry_by_attr('device', entry.device): | ||
122 | 76 | return False | ||
123 | 77 | |||
124 | 78 | self.write(str(entry) + '\n') | ||
125 | 79 | self.truncate() | ||
126 | 80 | return entry | ||
127 | 81 | |||
128 | 82 | def remove_entry(self, entry): | ||
129 | 83 | self.seek(0) | ||
130 | 84 | |||
131 | 85 | lines = self.readlines() | ||
132 | 86 | |||
133 | 87 | found = False | ||
134 | 88 | for index, line in enumerate(lines): | ||
135 | 89 | if not line.startswith("#"): | ||
136 | 90 | if self._hydrate_entry(line) == entry: | ||
137 | 91 | found = True | ||
138 | 92 | break | ||
139 | 93 | |||
140 | 94 | if not found: | ||
141 | 95 | return False | ||
142 | 96 | |||
143 | 97 | lines.remove(line) | ||
144 | 98 | |||
145 | 99 | self.seek(0) | ||
146 | 100 | self.write(''.join(lines)) | ||
147 | 101 | self.truncate() | ||
148 | 102 | return True | ||
149 | 103 | |||
150 | 104 | @classmethod | ||
151 | 105 | def remove_by_mountpoint(cls, mountpoint, path=None): | ||
152 | 106 | fstab = cls(path=path) | ||
153 | 107 | entry = fstab.get_entry_by_attr('mountpoint', mountpoint) | ||
154 | 108 | if entry: | ||
155 | 109 | return fstab.remove_entry(entry) | ||
156 | 110 | return False | ||
157 | 111 | |||
158 | 112 | @classmethod | ||
159 | 113 | def add(cls, device, mountpoint, filesystem, options=None, path=None): | ||
160 | 114 | return cls(path=path).add_entry(Fstab.Entry(device, | ||
161 | 115 | mountpoint, filesystem, | ||
162 | 116 | options=options)) | ||
163 | 0 | 117 | ||
164 | === renamed file 'hooks/charmhelpers/core/fstab.py' => 'hooks/charmhelpers/core/fstab.py.moved' | |||
165 | === modified file 'hooks/charmhelpers/core/hookenv.py' | |||
166 | --- hooks/charmhelpers/core/hookenv.py 2014-05-19 11:37:27 +0000 | |||
167 | +++ hooks/charmhelpers/core/hookenv.py 2014-08-28 10:55:53 +0000 | |||
168 | @@ -25,7 +25,7 @@ | |||
169 | 25 | def cached(func): | 25 | def cached(func): |
170 | 26 | """Cache return values for multiple executions of func + args | 26 | """Cache return values for multiple executions of func + args |
171 | 27 | 27 | ||
173 | 28 | For example: | 28 | For example:: |
174 | 29 | 29 | ||
175 | 30 | @cached | 30 | @cached |
176 | 31 | def unit_get(attribute): | 31 | def unit_get(attribute): |
177 | @@ -445,18 +445,19 @@ | |||
178 | 445 | class Hooks(object): | 445 | class Hooks(object): |
179 | 446 | """A convenient handler for hook functions. | 446 | """A convenient handler for hook functions. |
180 | 447 | 447 | ||
182 | 448 | Example: | 448 | Example:: |
183 | 449 | |||
184 | 449 | hooks = Hooks() | 450 | hooks = Hooks() |
185 | 450 | 451 | ||
186 | 451 | # register a hook, taking its name from the function name | 452 | # register a hook, taking its name from the function name |
187 | 452 | @hooks.hook() | 453 | @hooks.hook() |
188 | 453 | def install(): | 454 | def install(): |
190 | 454 | ... | 455 | pass # your code here |
191 | 455 | 456 | ||
192 | 456 | # register a hook, providing a custom hook name | 457 | # register a hook, providing a custom hook name |
193 | 457 | @hooks.hook("config-changed") | 458 | @hooks.hook("config-changed") |
194 | 458 | def config_changed(): | 459 | def config_changed(): |
196 | 459 | ... | 460 | pass # your code here |
197 | 460 | 461 | ||
198 | 461 | if __name__ == "__main__": | 462 | if __name__ == "__main__": |
199 | 462 | # execute a hook based on the name the program is called by | 463 | # execute a hook based on the name the program is called by |
200 | 463 | 464 | ||
201 | === modified file 'hooks/charmhelpers/core/host.py' | |||
202 | --- hooks/charmhelpers/core/host.py 2014-07-24 10:00:43 +0000 | |||
203 | +++ hooks/charmhelpers/core/host.py 2014-08-28 10:55:53 +0000 | |||
204 | @@ -12,7 +12,6 @@ | |||
205 | 12 | import string | 12 | import string |
206 | 13 | import subprocess | 13 | import subprocess |
207 | 14 | import hashlib | 14 | import hashlib |
208 | 15 | import apt_pkg | ||
209 | 16 | 15 | ||
210 | 17 | from collections import OrderedDict | 16 | from collections import OrderedDict |
211 | 18 | 17 | ||
212 | @@ -212,13 +211,13 @@ | |||
213 | 212 | def restart_on_change(restart_map, stopstart=False): | 211 | def restart_on_change(restart_map, stopstart=False): |
214 | 213 | """Restart services based on configuration files changing | 212 | """Restart services based on configuration files changing |
215 | 214 | 213 | ||
217 | 215 | This function is used a decorator, for example | 214 | This function is used a decorator, for example:: |
218 | 216 | 215 | ||
219 | 217 | @restart_on_change({ | 216 | @restart_on_change({ |
220 | 218 | '/etc/ceph/ceph.conf': [ 'cinder-api', 'cinder-volume' ] | 217 | '/etc/ceph/ceph.conf': [ 'cinder-api', 'cinder-volume' ] |
221 | 219 | }) | 218 | }) |
222 | 220 | def ceph_client_changed(): | 219 | def ceph_client_changed(): |
224 | 221 | ... | 220 | pass # your code here |
225 | 222 | 221 | ||
226 | 223 | In this example, the cinder-api and cinder-volume services | 222 | In this example, the cinder-api and cinder-volume services |
227 | 224 | would be restarted if /etc/ceph/ceph.conf is changed by the | 223 | would be restarted if /etc/ceph/ceph.conf is changed by the |
228 | @@ -314,10 +313,13 @@ | |||
229 | 314 | 313 | ||
230 | 315 | def cmp_pkgrevno(package, revno, pkgcache=None): | 314 | def cmp_pkgrevno(package, revno, pkgcache=None): |
231 | 316 | '''Compare supplied revno with the revno of the installed package | 315 | '''Compare supplied revno with the revno of the installed package |
235 | 317 | 1 => Installed revno is greater than supplied arg | 316 | |
236 | 318 | 0 => Installed revno is the same as supplied arg | 317 | * 1 => Installed revno is greater than supplied arg |
237 | 319 | -1 => Installed revno is less than supplied arg | 318 | * 0 => Installed revno is the same as supplied arg |
238 | 319 | * -1 => Installed revno is less than supplied arg | ||
239 | 320 | |||
240 | 320 | ''' | 321 | ''' |
241 | 322 | import apt_pkg | ||
242 | 321 | if not pkgcache: | 323 | if not pkgcache: |
243 | 322 | apt_pkg.init() | 324 | apt_pkg.init() |
244 | 323 | # Force Apt to build its cache in memory. That way we avoid race | 325 | # Force Apt to build its cache in memory. That way we avoid race |
245 | 324 | 326 | ||
246 | === modified file 'hooks/charmhelpers/fetch/__init__.py' | |||
247 | --- hooks/charmhelpers/fetch/__init__.py 2014-05-19 11:37:27 +0000 | |||
248 | +++ hooks/charmhelpers/fetch/__init__.py 2014-08-28 10:55:53 +0000 | |||
249 | @@ -13,7 +13,6 @@ | |||
250 | 13 | config, | 13 | config, |
251 | 14 | log, | 14 | log, |
252 | 15 | ) | 15 | ) |
253 | 16 | import apt_pkg | ||
254 | 17 | import os | 16 | import os |
255 | 18 | 17 | ||
256 | 19 | 18 | ||
257 | @@ -56,6 +55,15 @@ | |||
258 | 56 | 'icehouse/proposed': 'precise-proposed/icehouse', | 55 | 'icehouse/proposed': 'precise-proposed/icehouse', |
259 | 57 | 'precise-icehouse/proposed': 'precise-proposed/icehouse', | 56 | 'precise-icehouse/proposed': 'precise-proposed/icehouse', |
260 | 58 | 'precise-proposed/icehouse': 'precise-proposed/icehouse', | 57 | 'precise-proposed/icehouse': 'precise-proposed/icehouse', |
261 | 58 | # Juno | ||
262 | 59 | 'juno': 'trusty-updates/juno', | ||
263 | 60 | 'trusty-juno': 'trusty-updates/juno', | ||
264 | 61 | 'trusty-juno/updates': 'trusty-updates/juno', | ||
265 | 62 | 'trusty-updates/juno': 'trusty-updates/juno', | ||
266 | 63 | 'juno/proposed': 'trusty-proposed/juno', | ||
267 | 64 | 'juno/proposed': 'trusty-proposed/juno', | ||
268 | 65 | 'trusty-juno/proposed': 'trusty-proposed/juno', | ||
269 | 66 | 'trusty-proposed/juno': 'trusty-proposed/juno', | ||
270 | 59 | } | 67 | } |
271 | 60 | 68 | ||
272 | 61 | # The order of this list is very important. Handlers should be listed in from | 69 | # The order of this list is very important. Handlers should be listed in from |
273 | @@ -108,6 +116,7 @@ | |||
274 | 108 | 116 | ||
275 | 109 | def filter_installed_packages(packages): | 117 | def filter_installed_packages(packages): |
276 | 110 | """Returns a list of packages that require installation""" | 118 | """Returns a list of packages that require installation""" |
277 | 119 | import apt_pkg | ||
278 | 111 | apt_pkg.init() | 120 | apt_pkg.init() |
279 | 112 | 121 | ||
280 | 113 | # Tell apt to build an in-memory cache to prevent race conditions (if | 122 | # Tell apt to build an in-memory cache to prevent race conditions (if |
281 | @@ -226,31 +235,39 @@ | |||
282 | 226 | sources_var='install_sources', | 235 | sources_var='install_sources', |
283 | 227 | keys_var='install_keys'): | 236 | keys_var='install_keys'): |
284 | 228 | """ | 237 | """ |
286 | 229 | Configure multiple sources from charm configuration | 238 | Configure multiple sources from charm configuration. |
287 | 239 | |||
288 | 240 | The lists are encoded as yaml fragments in the configuration. | ||
289 | 241 | The frament needs to be included as a string. | ||
290 | 230 | 242 | ||
291 | 231 | Example config: | 243 | Example config: |
293 | 232 | install_sources: | 244 | install_sources: | |
294 | 233 | - "ppa:foo" | 245 | - "ppa:foo" |
295 | 234 | - "http://example.com/repo precise main" | 246 | - "http://example.com/repo precise main" |
297 | 235 | install_keys: | 247 | install_keys: | |
298 | 236 | - null | 248 | - null |
299 | 237 | - "a1b2c3d4" | 249 | - "a1b2c3d4" |
300 | 238 | 250 | ||
301 | 239 | Note that 'null' (a.k.a. None) should not be quoted. | 251 | Note that 'null' (a.k.a. None) should not be quoted. |
302 | 240 | """ | 252 | """ |
310 | 241 | sources = safe_load(config(sources_var)) | 253 | sources = safe_load((config(sources_var) or '').strip()) or [] |
311 | 242 | keys = config(keys_var) | 254 | keys = safe_load((config(keys_var) or '').strip()) or None |
312 | 243 | if keys is not None: | 255 | |
313 | 244 | keys = safe_load(keys) | 256 | if isinstance(sources, basestring): |
314 | 245 | if isinstance(sources, basestring) and ( | 257 | sources = [sources] |
315 | 246 | keys is None or isinstance(keys, basestring)): | 258 | |
316 | 247 | add_source(sources, keys) | 259 | if keys is None: |
317 | 260 | for source in sources: | ||
318 | 261 | add_source(source, None) | ||
319 | 248 | else: | 262 | else: |
325 | 249 | if not len(sources) == len(keys): | 263 | if isinstance(keys, basestring): |
326 | 250 | msg = 'Install sources and keys lists are different lengths' | 264 | keys = [keys] |
327 | 251 | raise SourceConfigError(msg) | 265 | |
328 | 252 | for src_num in range(len(sources)): | 266 | if len(sources) != len(keys): |
329 | 253 | add_source(sources[src_num], keys[src_num]) | 267 | raise SourceConfigError( |
330 | 268 | 'Install sources and keys lists are different lengths') | ||
331 | 269 | for source, key in zip(sources, keys): | ||
332 | 270 | add_source(source, key) | ||
333 | 254 | if update: | 271 | if update: |
334 | 255 | apt_update(fatal=True) | 272 | apt_update(fatal=True) |
335 | 256 | 273 | ||
336 | 257 | 274 | ||
337 | === modified file 'hooks/hooks.py' | |||
338 | --- hooks/hooks.py 2014-03-25 18:44:22 +0000 | |||
339 | +++ hooks/hooks.py 2014-08-28 10:55:53 +0000 | |||
340 | @@ -38,6 +38,7 @@ | |||
341 | 38 | ) | 38 | ) |
342 | 39 | 39 | ||
343 | 40 | from charmhelpers.payload.execd import execd_preinstall | 40 | from charmhelpers.payload.execd import execd_preinstall |
344 | 41 | from charmhelpers.core.host import cmp_pkgrevno | ||
345 | 41 | from socket import gethostname as get_unit_hostname | 42 | from socket import gethostname as get_unit_hostname |
346 | 42 | 43 | ||
347 | 43 | hooks = Hooks() | 44 | hooks = Hooks() |
348 | @@ -73,13 +74,13 @@ | |||
349 | 73 | 'auth_supported': get_auth() or 'none', | 74 | 'auth_supported': get_auth() or 'none', |
350 | 74 | 'mon_hosts': ' '.join(get_mon_hosts()), | 75 | 'mon_hosts': ' '.join(get_mon_hosts()), |
351 | 75 | 'hostname': get_unit_hostname(), | 76 | 'hostname': get_unit_hostname(), |
353 | 76 | 'version': ceph.get_ceph_version('radosgw'), | 77 | 'old_auth': cmp_pkgrevno('radosgw', "0.51") < 0, |
354 | 77 | 'use_syslog': str(config('use-syslog')).lower() | 78 | 'use_syslog': str(config('use-syslog')).lower() |
355 | 78 | } | 79 | } |
356 | 79 | 80 | ||
357 | 80 | # Check to ensure that correct version of ceph is | 81 | # Check to ensure that correct version of ceph is |
358 | 81 | # in use | 82 | # in use |
360 | 82 | if ceph.get_ceph_version('radosgw') >= "0.55": | 83 | if cmp_pkgrevno('radosgw', '0.55') >= 0: |
361 | 83 | # Add keystone configuration if found | 84 | # Add keystone configuration if found |
362 | 84 | ks_conf = get_keystone_conf() | 85 | ks_conf = get_keystone_conf() |
363 | 85 | if ks_conf: | 86 | if ks_conf: |
364 | @@ -161,7 +162,7 @@ | |||
365 | 161 | for unit in related_units(relid): | 162 | for unit in related_units(relid): |
366 | 162 | ks_auth = { | 163 | ks_auth = { |
367 | 163 | 'auth_type': 'keystone', | 164 | 'auth_type': 'keystone', |
369 | 164 | 'auth_protocol': 'http', | 165 | 'auth_protocol': relation_get('auth_protocol', unit, relid), |
370 | 165 | 'auth_host': relation_get('auth_host', unit, relid), | 166 | 'auth_host': relation_get('auth_host', unit, relid), |
371 | 166 | 'auth_port': relation_get('auth_port', unit, relid), | 167 | 'auth_port': relation_get('auth_port', unit, relid), |
372 | 167 | 'admin_token': relation_get('admin_token', unit, relid), | 168 | 'admin_token': relation_get('admin_token', unit, relid), |
373 | @@ -208,7 +209,7 @@ | |||
374 | 208 | 209 | ||
375 | 209 | @hooks.hook('identity-service-relation-joined') | 210 | @hooks.hook('identity-service-relation-joined') |
376 | 210 | def identity_joined(relid=None): | 211 | def identity_joined(relid=None): |
378 | 211 | if ceph.get_ceph_version('radosgw') < "0.55": | 212 | if cmp_pkgrevno('radosgw', '0.55') < 0: |
379 | 212 | log('Integration with keystone requires ceph >= 0.55') | 213 | log('Integration with keystone requires ceph >= 0.55') |
380 | 213 | sys.exit(1) | 214 | sys.exit(1) |
381 | 214 | 215 | ||
382 | 215 | 216 | ||
383 | === modified file 'templates/ceph.conf' | |||
384 | --- templates/ceph.conf 2014-03-25 18:44:22 +0000 | |||
385 | +++ templates/ceph.conf 2014-08-28 10:55:53 +0000 | |||
386 | @@ -1,5 +1,5 @@ | |||
387 | 1 | [global] | 1 | [global] |
389 | 2 | {% if version < "0.51" %} | 2 | {% if old_auth %} |
390 | 3 | auth supported = {{ auth_supported }} | 3 | auth supported = {{ auth_supported }} |
391 | 4 | {% else %} | 4 | {% else %} |
392 | 5 | auth cluster required = {{ auth_supported }} | 5 | auth cluster required = {{ auth_supported }} |