Skip to content

Commit

Permalink
ceph-volume lvm.batch.bluestore allow osds-per-device with SingleType
Browse files Browse the repository at this point in the history
Signed-off-by: Alfredo Deza <adeza@redhat.com>
(cherry picked from commit 8c0e707)
  • Loading branch information
Alfredo Deza committed Sep 13, 2018
1 parent 11b4385 commit ceddcdf
Showing 1 changed file with 22 additions and 15 deletions.
37 changes: 22 additions & 15 deletions src/ceph-volume/ceph_volume/devices/lvm/strategies/bluestore.py
Expand Up @@ -16,6 +16,7 @@ class SingleType(object):

def __init__(self, devices, args):
self.args = args
self.osds_per_device = args.osds_per_device
self.devices = devices
# TODO: add --fast-devices and --slow-devices so these can be customized
self.hdds = [device for device in devices if device.sys_api['rotational'] == '1']
Expand All @@ -24,13 +25,20 @@ def __init__(self, devices, args):
self.validate()
self.compute()

@property
def total_osds(self):
if self.hdds:
return len(self.hdds) * self.osds_per_device
else:
return len(self.ssds) * self.osds_per_device

def report_json(self):
print(json.dumps(self.computed, indent=4, sort_keys=True))

def report_pretty(self):
string = ""
string += templates.total_osds.format(
total_osds=len(self.hdds) or len(self.ssds) * 2
total_osds=self.total_osds,
)
string += templates.osd_component_titles

Expand Down Expand Up @@ -62,27 +70,26 @@ def compute(self):
a dictionary with the result
"""
osds = self.computed['osds']
vgs = self.computed['vgs']
for device in self.hdds:
vgs.append({'devices': [device.abspath], 'parts': 1})
osd = {'data': {}, 'block.db': {}}
osd['data']['path'] = device.abspath
osd['data']['size'] = device.sys_api['size']
osd['data']['parts'] = 1
osd['data']['percentage'] = 100
osd['data']['human_readable_size'] = str(disk.Size(b=device.sys_api['size']))
osds.append(osd)
for hdd in range(self.osds_per_device):
osd = {'data': {}, 'block.db': {}}
osd['data']['path'] = device.abspath
osd['data']['size'] = device.sys_api['size'] / self.osds_per_device
osd['data']['parts'] = self.osds_per_device
osd['data']['percentage'] = 100 / self.osds_per_device
osd['data']['human_readable_size'] = str(
disk.Size(b=device.sys_api['size']) / self.osds_per_device
)
osds.append(osd)

for device in self.ssds:
# TODO: creates 2 OSDs per device, make this configurable (env var?)
extents = lvm.sizing(device.sys_api['size'], parts=2)
vgs.append({'devices': [device.abspath], 'parts': 2})
for ssd in range(2):
extents = lvm.sizing(device.sys_api['size'], parts=self.osds_per_device)
for ssd in range(self.osds_per_device):
osd = {'data': {}, 'block.db': {}}
osd['data']['path'] = device.abspath
osd['data']['size'] = extents['sizes']
osd['data']['parts'] = extents['parts']
osd['data']['percentage'] = 50
osd['data']['percentage'] = 100 / self.osds_per_device
osd['data']['human_readable_size'] = str(disk.Size(b=extents['sizes']))
osds.append(osd)

Expand Down

0 comments on commit ceddcdf

Please sign in to comment.