def __create_controller(self, controller_info): controller_obj = None model = controller_info.get("type", "ahci") if model.startswith("megasas"): controller_obj = MegaSASController(controller_info) elif model.startswith("lsi"): controller_obj = LSISASController(controller_info) elif model.startswith("pmc"): controller_obj = PMCSASController(controller_info) elif "nvme" in model: controller_obj = NVMeController(controller_info) elif "ahci" in model: controller_obj = AHCIController(controller_info, self.__is_cdrom_connected) elif "disk_array" in model: if self.__diskarray: raise ArgsNotCorrect( "[BackendStorage] Only 1 disk array object allowed") controller_obj = DiskArrayController(controller_info) self.__diskarray = controller_obj else: raise ArgsNotCorrect( "[BackendStorage] Unsupported controller type: {}".format( model)) controller_obj.logger = self.logger # set owner controller_obj.owner = self return controller_obj
def __init_diskarray(self): ws = os.path.join(helper.get_ws_folder(self), "data") diskarray = DiskArrayController(ws) diskarray.add_storage_backend(self.__backend_storage_info) dae_topo = diskarray.get_topo() if dae_topo is not None: filename = os.path.join(ws, "sas_topo.bin") with open(filename, "w") as f: f.write(dae_topo) diskarray.set_topo_file(self.__backend_storage_info, filename) diskarray.export_drv_data() diskarray.merge_drv_data(self.__backend_storage_info) self.__backend_storage_info = filter(lambda x: x["type"] != "disk_array", self.__backend_storage_info)
def __process_disk_array(self): ws = self.workspace.get_workspace_data() diskarray = DiskArrayController(ws) # set sharemeory id for sub node. for node in self.__chassis.get("nodes", []): storage = node["compute"].get("storage_backend") diskarray.add_storage_chassis_backend(storage) topo = diskarray.get_topo() if topo: for node in self.__chassis.get("nodes", []): storage = node["compute"].get("storage_backend") diskarray.set_topo_file(storage, "sas_topo") self.__dataset.append("sas_topo", topo) diskarray.export_drv_data()