def test_recalculates_vg_sizes_when_disks_volumes_size_update(self): node_db = self.create_node() disks = self.get(node_db.id) vgs_before_update = filter( lambda volume: volume.get('type') == 'vg', VolumeManagerExtension.get_node_volumes(node_db)) new_volume_size = 4200 updated_disks_count = 0 for disk in disks: if disk['size'] > 0: for volume in disk['volumes']: volume['size'] = new_volume_size updated_disks_count += 1 self.put(node_db.id, disks) vgs_after_update = filter( lambda volume: volume.get('type') == 'vg', VolumeManagerExtension.get_node_volumes(node_db)) for vg_before, vg_after in zip(vgs_before_update, vgs_after_update): size_volumes_before = sum( [volume.get('size', 0) for volume in vg_before['volumes']]) size_volumes_after = sum( [volume.get('size', 0) for volume in vg_after['volumes']]) self.assertNotEqual(size_volumes_before, size_volumes_after) volume_group_size = new_volume_size * updated_disks_count self.assertEqual(size_volumes_after, volume_group_size)
def test_recalculates_vg_sizes_when_disks_volumes_size_update(self): node_db = self.create_node() disks = self.get(node_db.id) vgs_before_update = filter( lambda volume: volume.get('type') == 'vg', VolumeManagerExtension.get_node_volumes(node_db)) new_volume_size = 4200 updated_disks_count = 0 for disk in disks: if disk['size'] > 0: for volume in disk['volumes']: volume['size'] = new_volume_size updated_disks_count += 1 self.put(node_db.id, disks) vgs_after_update = filter( lambda volume: volume.get('type') == 'vg', VolumeManagerExtension.get_node_volumes(node_db)) for vg_before, vg_after in zip(vgs_before_update, vgs_after_update): size_volumes_before = sum([ volume.get('size', 0) for volume in vg_before['volumes']]) size_volumes_after = sum([ volume.get('size', 0) for volume in vg_after['volumes']]) self.assertNotEqual(size_volumes_before, size_volumes_after) volume_group_size = new_volume_size * updated_disks_count self.assertEqual(size_volumes_after, volume_group_size)
def test_allocates_all_free_space_for_vm_for_compute_role(self): node = self.create_node('compute') self.should_contain_os_with_minimal_size(VolumeManager(node)) self.all_free_space_except_os_for_volume( VolumeManager(node).volumes, 'vm') self.logical_volume_sizes_should_equal_all_phisical_volumes( VolumeManagerExtension.get_node_volumes(node)) self.check_disk_size_equal_sum_of_all_volumes( VolumeManagerExtension.get_node_volumes(node))
def test_multirole_controller_cinder_ceph(self): node = self.create_node('controller', 'cinder', 'ceph-osd') self.should_contain_os_with_minimal_size(VolumeManager(node)) self.should_allocates_same_size( VolumeManager(node).volumes, ['image', 'cinder', 'ceph']) self.logical_volume_sizes_should_equal_all_phisical_volumes( VolumeManagerExtension.get_node_volumes(node)) self.check_disk_size_equal_sum_of_all_volumes( VolumeManagerExtension.get_node_volumes(node))
class NodeVolumes(Base): __tablename__ = '{0}node_volumes'.format( VolumeManagerExtension.table_prefix()) id = Column(Integer, primary_key=True) node_id = Column(Integer, nullable=False, unique=True) volumes = Column(JSON, server_default='[]', nullable=False)
def test_allocates_space_single_disk_for_ceph_for_ceph_role(self): node = self.create_node('ceph-osd') self.update_node_with_single_disk(node, 30000) self.should_contain_os_with_minimal_size(VolumeManager(node)) self.all_free_space_except_os_for_volume( VolumeManager(node).volumes, 'ceph') self.check_disk_size_equal_sum_of_all_volumes( VolumeManagerExtension.get_node_volumes(node))
def setUp(self): super(TestVolumeManagerHelpers, self).setUp() self.env.create(nodes_kwargs=[ { 'roles': ['controller'] }, ]) self.node = self.env.nodes[0] self.volumes = VolumeManagerExtension.get_node_volumes(self.node)
def test_allocates_all_free_space_for_os_for_controller_role(self): node = self.create_node('controller') disks = only_disks(VolumeManager(node).volumes) disks_size_sum = sum([disk['size'] for disk in disks]) os_sum_size = self.os_size(disks) mysql_sum_size = self.mysql_size(disks) glance_sum_size = self.glance_size(disks) horizon_sum_size = self.horizon_size(disks) logs_sum_size = self.logs_size(disks) reserved_size = self.reserved_size(disks) self.assertEqual( disks_size_sum - reserved_size, os_sum_size + glance_sum_size + mysql_sum_size + logs_sum_size + horizon_sum_size) self.logical_volume_sizes_should_equal_all_phisical_volumes( VolumeManagerExtension.get_node_volumes(node)) self.check_disk_size_equal_sum_of_all_volumes( VolumeManagerExtension.get_node_volumes(node))
def setUp(self): super(TestVolumeManagerHelpers, self).setUp() self.env.create( nodes_kwargs=[ {'roles': ['controller']}, ] ) self.node = self.env.nodes[0] self.volumes = VolumeManagerExtension.get_node_volumes(self.node)
def test_allocates_all_free_space_for_os_for_controller_role(self): node = self.create_node('controller') disks = only_disks(VolumeManager(node).volumes) disks_size_sum = sum([disk['size'] for disk in disks]) os_sum_size = self.os_size(disks) mysql_sum_size = self.mysql_size(disks) glance_sum_size = self.glance_size(disks) horizon_sum_size = self.horizon_size(disks) logs_sum_size = self.logs_size(disks) reserved_size = self.reserved_size(disks) self.assertEqual(disks_size_sum - reserved_size, os_sum_size + glance_sum_size + mysql_sum_size + logs_sum_size + horizon_sum_size) self.logical_volume_sizes_should_equal_all_phisical_volumes( VolumeManagerExtension.get_node_volumes(node)) self.check_disk_size_equal_sum_of_all_volumes( VolumeManagerExtension.get_node_volumes(node))
def test_update_ceph_partition(self): node = self.create_node(roles=['ceph-osd']) disks = self.get(node.id) new_volume_size = 4321 for disk in disks: if disk['size'] > 0: for volume in disk['volumes']: volume['size'] = new_volume_size self.put(node.id, disks) partitions_after_update = filter( lambda volume: volume.get('type') == 'partition', VolumeManagerExtension.get_node_volumes(node)) for partition_after in partitions_after_update: self.assertEqual(partition_after['size'], new_volume_size)
def test_on_node_collection_delete(self, obj_call_mock): ids = [1, 2, 3] VolumeManagerExtension.on_node_collection_delete(ids) obj_call_mock.assert_called_once_with(ids)
def is_checking_required(self): return VolumeManagerExtension._is_disk_checking_required(self.node)
def test_on_node_delete(self, obj_call_mock): node_mock = mock.MagicMock(id=1) VolumeManagerExtension.on_node_delete(node_mock) obj_call_mock.assert_called_once_with([1])