@@ -423,11 +423,32 @@ ResourceLink WorkloadResourceManager::Classifier::get(const String & resource_na
423423 }
424424}
425425
426- void WorkloadResourceManager::Classifier::attach (const ResourcePtr & resource, const VersionPtr & version, ResourceLink link)
426+ WorkloadSettings WorkloadResourceManager::Classifier::getWorkloadSettings (const String & resource_name) const
427+ {
428+ std::unique_lock lock{mutex};
429+ auto iter = attachments.find (resource_name);
430+ if (iter != attachments.end ())
431+ {
432+ // Extract settings from the attached resource
433+ return iter->second .settings ;
434+ }
435+ return {};
436+ }
437+
438+ void WorkloadResourceManager::Classifier::attach (const ResourcePtr & resource, const VersionPtr & version, UnifiedSchedulerNode * node)
427439{
428440 std::unique_lock lock{mutex};
429441 chassert (!attachments.contains (resource->getName ()));
430- attachments[resource->getName ()] = Attachment{.resource = resource, .version = version, .link = link};
442+ ResourceLink link;
443+ WorkloadSettings wl_settings{};
444+ if (node)
445+ {
446+ auto queue = node->getQueue ();
447+ if (queue)
448+ link = ResourceLink{.queue = queue.get ()};
449+ wl_settings = node->getSettings ();
450+ }
451+ attachments[resource->getName ()] = Attachment{.resource = resource, .version = version, .link = link, .settings = wl_settings};
431452}
432453
433454void WorkloadResourceManager::Resource::updateResource (const ASTPtr & new_resource_entity)
@@ -447,11 +468,12 @@ std::future<void> WorkloadResourceManager::Resource::attachClassifier(Classifier
447468 {
448469 if (auto iter = node_for_workload.find (workload_name); iter != node_for_workload.end ())
449470 {
471+ auto nodePtr = iter->second ;
450472 auto queue = iter->second ->getQueue ();
451473 if (!queue)
452474 throw Exception (ErrorCodes::INVALID_SCHEDULER_NODE, " Unable to use workload '{}' that have children for resource '{}'" ,
453475 workload_name, resource_name);
454- classifier.attach (shared_from_this (), current_version, ResourceLink{. queue = queue. get ()} );
476+ classifier.attach (shared_from_this (), current_version, nodePtr. get ());
455477 }
456478 else
457479 {
0 commit comments