def __init__(self, hypervisor, option): self._logger = logging.getLogger(__name__) self._hypervisor = hypervisor self._option = option self._reserved_vms = {} self._reserved_disks = {} self._diskutil = DiskUtil() self._vm_manager = hypervisor.vm_manager self._image_manager = hypervisor.image_manager self._datastore_manager = hypervisor.datastore_manager self._system = hypervisor.system self._optimal_placement = OptimalPlaceEngine(self._datastore_manager, option) self._best_effort_placement = BestEffortPlaceEngine( self._datastore_manager, option) self._constrainted_placement = ConstraintDiskPlaceEngine( self._datastore_manager, option)
def test_optimal_place_engine(self, result, ratio, disk_sizes, use_image_ds): # Create optimal place engine image_datastore = "datastore_id_1" image_datastores = [{ "name": image_datastore, "used_for_vms": use_image_ds }] option = PlacementOption(1, 1, image_datastores) ds_map = { "datastore_id_1": DatastoreInfo(1 * 1024, 0), "datastore_id_2": DatastoreInfo(2 * 1024, 0), "datastore_id_3": DatastoreInfo(3 * 1024, 0) } ds_mgr = self.create_datastore_manager(ds_map, image_datastore) engine = OptimalPlaceEngine(ds_mgr, option) ds = engine.placeable_datastores() selector = DatastoreSelector.init_datastore_selector(ds_mgr, ds) disks_placement = DisksPlacement(self.create_disks(disk_sizes), selector) # Verify place result place_result = engine.place(disks_placement, []) assert_that(place_result.result, equal_to(result)) assert_that(place_result.disks_placement.selector.ratio(), equal_to(ratio)) # Verify placements if disk_sizes and place_result.result == PlaceResultCode.OK: placement_list = place_result.disks_placement.placement_list assert_that(placement_list, has_length(1)) assert_that(placement_list[0].type, equal_to(AgentResourcePlacement.DISK)) assert_that(placement_list[0].container_id, equal_to("datastore_id_3"))