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)
Exemplo n.º 2
0
    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"))