]> git.proxmox.com Git - ceph.git/blame - ceph/src/ceph-volume/ceph_volume/tests/devices/lvm/test_activate.py
import 15.2.5
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / devices / lvm / test_activate.py
CommitLineData
181888fb 1import pytest
f6b5b4d7 2from copy import deepcopy
3efd9988
FG
3from ceph_volume.devices.lvm import activate
4from ceph_volume.api import lvm as api
94b18763 5from ceph_volume.tests.conftest import Capture
181888fb
FG
6
7
8class Args(object):
9
10 def __init__(self, **kw):
3efd9988
FG
11 # default flags
12 self.bluestore = False
13 self.filestore = False
94b18763 14 self.no_systemd = False
3efd9988 15 self.auto_detect_objectstore = None
181888fb
FG
16 for k, v in kw.items():
17 setattr(self, k, v)
18
19
20class TestActivate(object):
21
22 # these tests are very functional, hence the heavy patching, it is hard to
23 # test the negative side effect with an actual functional run, so we must
24 # setup a perfect scenario for this test to check it can really work
25 # with/without osd_id
f6b5b4d7
TL
26 def test_no_osd_id_matches_fsid(self, is_root, monkeypatch, capture):
27 FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
28 lv_tags="ceph.osd_fsid=1234")
29 volumes = []
181888fb 30 volumes.append(FooVolume)
f6b5b4d7 31 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: volumes)
181888fb 32 monkeypatch.setattr(activate, 'activate_filestore', capture)
3efd9988
FG
33 args = Args(osd_id=None, osd_fsid='1234', filestore=True)
34 activate.Activate([]).activate(args)
35 assert capture.calls[0]['args'][0] == [FooVolume]
36
f6b5b4d7
TL
37 def test_no_osd_id_matches_fsid_bluestore(self, is_root, monkeypatch, capture):
38 FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
39 lv_tags="ceph.osd_fsid=1234")
40 volumes = []
3efd9988 41 volumes.append(FooVolume)
f6b5b4d7 42 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: volumes)
3efd9988
FG
43 monkeypatch.setattr(activate, 'activate_bluestore', capture)
44 args = Args(osd_id=None, osd_fsid='1234', bluestore=True)
181888fb
FG
45 activate.Activate([]).activate(args)
46 assert capture.calls[0]['args'][0] == [FooVolume]
47
f6b5b4d7
TL
48 def test_no_osd_id_no_matching_fsid(self, is_root, monkeypatch, capture):
49 FooVolume = api.Volume(lv_name='foo', lv_path='/dev/vg/foo',
50 lv_tags="ceph.osd_fsid=1111")
51 volumes = []
181888fb 52 volumes.append(FooVolume)
f6b5b4d7
TL
53 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: [])
54 monkeypatch.setattr(api, 'get_first_lv', lambda **kwargs: [])
181888fb 55 monkeypatch.setattr(activate, 'activate_filestore', capture)
f6b5b4d7
TL
56
57 args = Args(osd_id=None, osd_fsid='2222')
181888fb
FG
58 with pytest.raises(RuntimeError):
59 activate.Activate([]).activate(args)
3efd9988 60
f6b5b4d7 61 def test_filestore_no_systemd(self, is_root, monkeypatch, capture):
91327a77 62 monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
94b18763
FG
63 fake_enable = Capture()
64 fake_start_osd = Capture()
65 monkeypatch.setattr('ceph_volume.util.system.device_is_mounted', lambda *a, **kw: True)
66 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
67 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
68 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
69 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
70 JournalVolume = api.Volume(
71 lv_name='journal',
72 lv_path='/dev/vg/journal',
73 lv_uuid='000',
74 lv_tags=','.join([
75 "ceph.cluster_name=ceph", "ceph.journal_device=/dev/vg/journal",
76 "ceph.journal_uuid=000", "ceph.type=journal",
91327a77
AA
77 "ceph.osd_id=0", "ceph.osd_fsid=1234"])
78 )
94b18763
FG
79 DataVolume = api.Volume(
80 lv_name='data',
81 lv_path='/dev/vg/data',
f6b5b4d7
TL
82 lv_uuid='001',
83 lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
84 "journal,ceph.journal_uuid=000,ceph.type=data," + \
85 "ceph.osd_id=0,ceph.osd_fsid=1234")
86 volumes = []
94b18763
FG
87 volumes.append(DataVolume)
88 volumes.append(JournalVolume)
f6b5b4d7
TL
89 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
90
94b18763
FG
91 args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, filestore=True)
92 activate.Activate([]).activate(args)
93 assert fake_enable.calls == []
94 assert fake_start_osd.calls == []
95
f6b5b4d7 96 def test_filestore_no_systemd_autodetect(self, is_root, monkeypatch, capture):
91327a77
AA
97 monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
98 fake_enable = Capture()
99 fake_start_osd = Capture()
100 monkeypatch.setattr('ceph_volume.util.system.device_is_mounted', lambda *a, **kw: True)
101 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
102 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
103 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
104 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
105 JournalVolume = api.Volume(
106 lv_name='journal',
107 lv_path='/dev/vg/journal',
108 lv_uuid='000',
109 lv_tags=','.join([
110 "ceph.cluster_name=ceph", "ceph.journal_device=/dev/vg/journal",
111 "ceph.journal_uuid=000", "ceph.type=journal",
112 "ceph.osd_id=0", "ceph.osd_fsid=1234"])
113 )
114 DataVolume = api.Volume(
115 lv_name='data',
116 lv_path='/dev/vg/data',
f6b5b4d7
TL
117 lv_uuid='001',
118 lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
119 "journal,ceph.journal_uuid=000,ceph.type=data," + \
120 "ceph.osd_id=0,ceph.osd_fsid=1234")
121 volumes = []
91327a77
AA
122 volumes.append(DataVolume)
123 volumes.append(JournalVolume)
f6b5b4d7
TL
124 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
125
126 args = Args(osd_id=None, osd_fsid='1234', no_systemd=True,
127 filestore=True, auto_detect_objectstore=True)
91327a77
AA
128 activate.Activate([]).activate(args)
129 assert fake_enable.calls == []
130 assert fake_start_osd.calls == []
131
f6b5b4d7 132 def test_filestore_systemd_autodetect(self, is_root, monkeypatch, capture):
91327a77
AA
133 fake_enable = Capture()
134 fake_start_osd = Capture()
135 monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
136 monkeypatch.setattr('ceph_volume.util.system.device_is_mounted', lambda *a, **kw: True)
137 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
138 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
139 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
140 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
141 JournalVolume = api.Volume(
142 lv_name='journal',
143 lv_path='/dev/vg/journal',
144 lv_uuid='000',
145 lv_tags=','.join([
146 "ceph.cluster_name=ceph", "ceph.journal_device=/dev/vg/journal",
147 "ceph.journal_uuid=000", "ceph.type=journal",
148 "ceph.osd_id=0","ceph.osd_fsid=1234"])
149 )
150 DataVolume = api.Volume(
151 lv_name='data',
152 lv_path='/dev/vg/data',
f6b5b4d7
TL
153 lv_uuid='001',
154 lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
155 "journal,ceph.journal_uuid=000,ceph.type=data," + \
156 "ceph.osd_id=0,ceph.osd_fsid=1234")
157 volumes = []
91327a77
AA
158 volumes.append(DataVolume)
159 volumes.append(JournalVolume)
f6b5b4d7
TL
160 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
161
162 args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
163 filestore=True, auto_detect_objectstore=False)
91327a77
AA
164 activate.Activate([]).activate(args)
165 assert fake_enable.calls != []
166 assert fake_start_osd.calls != []
167
f6b5b4d7 168 def test_filestore_systemd(self, is_root, monkeypatch, capture):
94b18763
FG
169 fake_enable = Capture()
170 fake_start_osd = Capture()
91327a77 171 monkeypatch.setattr('ceph_volume.configuration.load', lambda: None)
94b18763
FG
172 monkeypatch.setattr('ceph_volume.util.system.device_is_mounted', lambda *a, **kw: True)
173 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
174 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
175 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
176 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
177 JournalVolume = api.Volume(
178 lv_name='journal',
179 lv_path='/dev/vg/journal',
180 lv_uuid='000',
181 lv_tags=','.join([
182 "ceph.cluster_name=ceph", "ceph.journal_device=/dev/vg/journal",
183 "ceph.journal_uuid=000", "ceph.type=journal",
184 "ceph.osd_id=0","ceph.osd_fsid=1234"])
185 )
186 DataVolume = api.Volume(
187 lv_name='data',
188 lv_path='/dev/vg/data',
f6b5b4d7
TL
189 lv_uuid='001',
190 lv_tags="ceph.cluster_name=ceph,ceph.journal_device=/dev/vg/" + \
191 "journal,ceph.journal_uuid=000,ceph.type=data," + \
192 "ceph.osd_id=0,ceph.osd_fsid=1234")
193 volumes = []
94b18763
FG
194 volumes.append(DataVolume)
195 volumes.append(JournalVolume)
f6b5b4d7
TL
196 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
197
198 args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
199 filestore=True)
94b18763
FG
200 activate.Activate([]).activate(args)
201 assert fake_enable.calls != []
202 assert fake_start_osd.calls != []
203
f6b5b4d7 204 def test_bluestore_no_systemd(self, is_root, monkeypatch, capture):
94b18763
FG
205 fake_enable = Capture()
206 fake_start_osd = Capture()
207 monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
208 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
209 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
210 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
211 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
212 DataVolume = api.Volume(
213 lv_name='data',
214 lv_path='/dev/vg/data',
f6b5b4d7
TL
215 lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
216 "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
217 volumes = []
94b18763 218 volumes.append(DataVolume)
f6b5b4d7
TL
219 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
220
94b18763
FG
221 args = Args(osd_id=None, osd_fsid='1234', no_systemd=True, bluestore=True)
222 activate.Activate([]).activate(args)
223 assert fake_enable.calls == []
224 assert fake_start_osd.calls == []
225
f6b5b4d7 226 def test_bluestore_systemd(self, is_root, monkeypatch, capture):
94b18763
FG
227 fake_enable = Capture()
228 fake_start_osd = Capture()
229 monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
230 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
231 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
232 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
233 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
234 DataVolume = api.Volume(
235 lv_name='data',
236 lv_path='/dev/vg/data',
f6b5b4d7
TL
237 lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
238 "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
239 volumes = []
94b18763 240 volumes.append(DataVolume)
f6b5b4d7
TL
241 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
242
243 args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
244 bluestore=True)
94b18763
FG
245 activate.Activate([]).activate(args)
246 assert fake_enable.calls != []
247 assert fake_start_osd.calls != []
248
f6b5b4d7 249 def test_bluestore_no_systemd_autodetect(self, is_root, monkeypatch, capture):
91327a77
AA
250 fake_enable = Capture()
251 fake_start_osd = Capture()
252 monkeypatch.setattr('ceph_volume.util.system.path_is_mounted', lambda *a, **kw: True)
253 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw: True)
254 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
255 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
256 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
257 DataVolume = api.Volume(
258 lv_name='data',
259 lv_path='/dev/vg/data',
f6b5b4d7
TL
260 lv_tags="ceph.cluster_name=ceph,,ceph.block_uuid=000," + \
261 "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
262 volumes = []
91327a77 263 volumes.append(DataVolume)
f6b5b4d7
TL
264 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
265
266 args = Args(osd_id=None, osd_fsid='1234', no_systemd=True,
267 bluestore=True, auto_detect_objectstore=True)
91327a77
AA
268 activate.Activate([]).activate(args)
269 assert fake_enable.calls == []
270 assert fake_start_osd.calls == []
271
f6b5b4d7 272 def test_bluestore_systemd_autodetect(self, is_root, monkeypatch, capture):
91327a77
AA
273 fake_enable = Capture()
274 fake_start_osd = Capture()
f6b5b4d7
TL
275 monkeypatch.setattr('ceph_volume.util.system.path_is_mounted',
276 lambda *a, **kw: True)
277 monkeypatch.setattr('ceph_volume.util.system.chown', lambda *a, **kw:
278 True)
91327a77
AA
279 monkeypatch.setattr('ceph_volume.process.run', lambda *a, **kw: True)
280 monkeypatch.setattr(activate.systemctl, 'enable_volume', fake_enable)
281 monkeypatch.setattr(activate.systemctl, 'start_osd', fake_start_osd)
282 DataVolume = api.Volume(
283 lv_name='data',
284 lv_path='/dev/vg/data',
f6b5b4d7
TL
285 lv_tags="ceph.cluster_name=ceph,,ceph.journal_uuid=000," + \
286 "ceph.type=block,ceph.osd_id=0,ceph.osd_fsid=1234")
287 volumes = []
91327a77 288 volumes.append(DataVolume)
f6b5b4d7
TL
289 monkeypatch.setattr(api, 'get_lvs', lambda **kwargs: deepcopy(volumes))
290
291 args = Args(osd_id=None, osd_fsid='1234', no_systemd=False,
292 bluestore=True, auto_detect_objectstore=False)
91327a77
AA
293 activate.Activate([]).activate(args)
294 assert fake_enable.calls != []
295 assert fake_start_osd.calls != []
3efd9988
FG
296
297class TestActivateFlags(object):
298
299 def test_default_objectstore(self, capture):
300 args = ['0', 'asdf-ljh-asdf']
301 activation = activate.Activate(args)
302 activation.activate = capture
303 activation.main()
304 parsed_args = capture.calls[0]['args'][0]
305 assert parsed_args.filestore is False
306 assert parsed_args.bluestore is True
307
308 def test_uses_filestore(self, capture):
309 args = ['--filestore', '0', 'asdf-ljh-asdf']
310 activation = activate.Activate(args)
311 activation.activate = capture
312 activation.main()
313 parsed_args = capture.calls[0]['args'][0]
314 assert parsed_args.filestore is True
315 assert parsed_args.bluestore is False
316
317 def test_uses_bluestore(self, capture):
318 args = ['--bluestore', '0', 'asdf-ljh-asdf']
319 activation = activate.Activate(args)
320 activation.activate = capture
321 activation.main()
322 parsed_args = capture.calls[0]['args'][0]
323 assert parsed_args.filestore is False
324 assert parsed_args.bluestore is True
94b18763
FG
325
326
327class TestActivateAll(object):
328
329 def test_does_not_detect_osds(self, capsys, is_root, capture, monkeypatch):
330 monkeypatch.setattr('ceph_volume.devices.lvm.activate.direct_report', lambda: {})
331 args = ['--all']
332 activation = activate.Activate(args)
333 activation.main()
334 out, err = capsys.readouterr()
494da23a
TL
335 assert 'Was unable to find any OSDs to activate' in err
336 assert 'Verify OSDs are present with ' in err
94b18763
FG
337
338 def test_detects_running_osds(self, capsys, is_root, capture, monkeypatch):
339 monkeypatch.setattr('ceph_volume.devices.lvm.activate.direct_report', lambda: direct_report)
340 monkeypatch.setattr('ceph_volume.devices.lvm.activate.systemctl.osd_is_active', lambda x: True)
341 args = ['--all']
342 activation = activate.Activate(args)
343 activation.main()
344 out, err = capsys.readouterr()
494da23a
TL
345 assert 'a8789a96ce8b process is active. Skipping activation' in err
346 assert 'b8218eaa1634 process is active. Skipping activation' in err
94b18763
FG
347
348 def test_detects_osds_to_activate(self, is_root, capture, monkeypatch):
349 monkeypatch.setattr('ceph_volume.devices.lvm.activate.direct_report', lambda: direct_report)
350 monkeypatch.setattr('ceph_volume.devices.lvm.activate.systemctl.osd_is_active', lambda x: False)
351 args = ['--all']
352 activation = activate.Activate(args)
353 activation.activate = capture
354 activation.main()
355 calls = sorted(capture.calls, key=lambda x: x['kwargs']['osd_id'])
356 assert calls[0]['kwargs']['osd_id'] == '0'
357 assert calls[0]['kwargs']['osd_fsid'] == '957d22b7-24ce-466a-9883-b8218eaa1634'
358 assert calls[1]['kwargs']['osd_id'] == '1'
359 assert calls[1]['kwargs']['osd_fsid'] == 'd0f3e4ad-e52a-4520-afc0-a8789a96ce8b'
360
361#
362# Activate All fixture
363#
364
365direct_report = {
366 "0": [
367 {
368 "lv_name": "osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
369 "lv_path": "/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
370 "lv_tags": "ceph.block_device=/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634,ceph.block_uuid=6MixOd-2Q1I-f8K3-PPOq-UJGV-L3A0-0XwUm4,ceph.cephx_lockbox_secret=,ceph.cluster_fsid=d4962338-46ff-4cd5-8ea6-c033dbdc5b44,ceph.cluster_name=ceph,ceph.crush_device_class=None,ceph.encrypted=0,ceph.osd_fsid=957d22b7-24ce-466a-9883-b8218eaa1634,ceph.osd_id=0,ceph.type=block",
371 "lv_uuid": "6MixOd-2Q1I-f8K3-PPOq-UJGV-L3A0-0XwUm4",
372 "name": "osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
373 "path": "/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
374 "tags": {
375 "ceph.block_device": "/dev/ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44/osd-block-957d22b7-24ce-466a-9883-b8218eaa1634",
376 "ceph.block_uuid": "6MixOd-2Q1I-f8K3-PPOq-UJGV-L3A0-0XwUm4",
377 "ceph.cephx_lockbox_secret": "",
378 "ceph.cluster_fsid": "d4962338-46ff-4cd5-8ea6-c033dbdc5b44",
379 "ceph.cluster_name": "ceph",
380 "ceph.crush_device_class": "None",
381 "ceph.encrypted": "0",
382 "ceph.osd_fsid": "957d22b7-24ce-466a-9883-b8218eaa1634",
383 "ceph.osd_id": "0",
384 "ceph.type": "block"
385 },
386 "type": "block",
387 "vg_name": "ceph-d4962338-46ff-4cd5-8ea6-c033dbdc5b44"
388 }
389 ],
390 "1": [
391 {
392 "lv_name": "osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
393 "lv_path": "/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
394 "lv_tags": "ceph.block_device=/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b,ceph.block_uuid=1igwLb-ZlmV-eLgp-hapx-c1Hr-M5gz-sHjnyW,ceph.cephx_lockbox_secret=,ceph.cluster_fsid=d4962338-46ff-4cd5-8ea6-c033dbdc5b44,ceph.cluster_name=ceph,ceph.crush_device_class=None,ceph.encrypted=0,ceph.osd_fsid=d0f3e4ad-e52a-4520-afc0-a8789a96ce8b,ceph.osd_id=1,ceph.type=block",
395 "lv_uuid": "1igwLb-ZlmV-eLgp-hapx-c1Hr-M5gz-sHjnyW",
396 "name": "osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
397 "path": "/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
398 "tags": {
399 "ceph.block_device": "/dev/ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532/osd-block-d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
400 "ceph.block_uuid": "1igwLb-ZlmV-eLgp-hapx-c1Hr-M5gz-sHjnyW",
401 "ceph.cephx_lockbox_secret": "",
402 "ceph.cluster_fsid": "d4962338-46ff-4cd5-8ea6-c033dbdc5b44",
403 "ceph.cluster_name": "ceph",
404 "ceph.crush_device_class": "None",
405 "ceph.encrypted": "0",
406 "ceph.osd_fsid": "d0f3e4ad-e52a-4520-afc0-a8789a96ce8b",
407 "ceph.osd_id": "1",
408 "ceph.type": "block"
409 },
410 "type": "block",
411 "vg_name": "ceph-7538bcf0-f155-4d3f-a9fd-d8b15905e532"
412 }
413 ]
414}