def METHOD_NAME(configuration: str = None) -> WeightedComposite:
    configuration = Configuration(configuration)
    composites = []
    batch_system = configuration.BatchSystem
    batch_system_adapter = getattr(
        import_module(
            name=f"tardis.adapters.batchsystems.{batch_system.adapter.lower()}"
        ),
        f"{batch_system.adapter}Adapter",
    )
    batch_system_agent = BatchSystemAgent(batch_system_adapter=batch_system_adapter())
    plugins = load_plugins()
    for site in configuration.Sites:
        site_composites = []
        site_adapter = getattr(
            import_module(name=f"tardis.adapters.sites.{site.adapter.lower()}"),
            f"{site.adapter}Adapter",
        )
        for machine_type in getattr(configuration, site.name).MachineTypes:
            site_agent = SiteAgent(
                site_adapter(machine_type=machine_type, site_name=site.name)
            )
            check_pointed_resources = get_drones_to_restore(plugins, site, machine_type)
            check_pointed_drones = [
                create_drone(
                    site_agent=site_agent,
                    batch_system_agent=batch_system_agent,
                    plugins=plugins.values(),
                    **resource_attributes,
                )
                for resource_attributes in check_pointed_resources
            ]
            # create drone factory for COBalD FactoryPool
            drone_factory = partial(
                create_drone,
                site_agent=site_agent,
                batch_system_agent=batch_system_agent,
                plugins=plugins.values(),
            )
            site_composites.append(
                Logger(
                    FactoryPool(*check_pointed_drones, factory=drone_factory),
                    name=f"{site.name.lower()}_{machine_type.lower()}",
                )
            )
        composites.append(
            Standardiser(
                WeightedComposite(*site_composites, weight="utilisation"),
                maximum=site.quota if site.quota >= 0 else inf,
            )
        )
    return WeightedComposite(*composites, weight="utilisation")