@@ -36,6 +36,7 @@ import (
3636 "github.com/NexusGPU/tensor-fusion/internal/constants"
3737 "github.com/NexusGPU/tensor-fusion/internal/controller"
3838 "github.com/NexusGPU/tensor-fusion/internal/gpuallocator"
39+ "github.com/NexusGPU/tensor-fusion/internal/indexallocator"
3940 "github.com/NexusGPU/tensor-fusion/internal/metrics"
4041 "github.com/NexusGPU/tensor-fusion/internal/portallocator"
4142 "github.com/NexusGPU/tensor-fusion/internal/scheduler/expander"
@@ -232,17 +233,25 @@ func main() {
232233 // Initialize GPU allocator and set up watches
233234 allocator , portAllocator := startTensorFusionAllocators (ctx , mgr )
234235
236+ // Initialize Index allocator for Device Plugin communication
237+ indexAllocator , err := indexallocator .NewIndexAllocator (ctx , mgr .GetClient ())
238+ if err != nil {
239+ setupLog .Error (err , "unable to set up index allocator" )
240+ os .Exit (1 )
241+ }
242+ _ = indexAllocator .SetupWithManager (ctx , mgr )
243+
235244 startAutoScaler (mgr , allocator )
236245
237246 // Create pricing provider for webhook
238247 pricingProvider := pricing .NewStaticPricingProvider ()
239- startWebhook (mgr , portAllocator , pricingProvider )
248+ startWebhook (mgr , portAllocator , indexAllocator , pricingProvider )
240249
241250 scheduler , nodeExpander := startScheduler (ctx , allocator , mgr , k8sVersion )
242251
243252 startCustomResourceController (ctx , mgr , metricsRecorder , allocator , portAllocator , nodeExpander )
244253
245- startHttpServerForTFClient (ctx , kc , portAllocator , allocator , scheduler , mgr .Elected ())
254+ startHttpServerForTFClient (ctx , kc , portAllocator , indexAllocator , allocator , scheduler , mgr .Elected ())
246255
247256 // +kubebuilder:scaffold:builder
248257 addHealthCheckAPI (mgr )
@@ -291,6 +300,7 @@ func startHttpServerForTFClient(
291300 ctx context.Context ,
292301 kc * rest.Config ,
293302 portAllocator * portallocator.PortAllocator ,
303+ indexAllocator * indexallocator.IndexAllocator ,
294304 allocator * gpuallocator.GpuAllocator ,
295305 scheduler * scheduler.Scheduler ,
296306 leaderChan <- chan struct {},
@@ -310,12 +320,19 @@ func startHttpServerForTFClient(
310320 setupLog .Error (err , "failed to create assign host port router" )
311321 os .Exit (1 )
312322 }
323+ assignIndexRouter , err := router .NewAssignIndexRouter (ctx , indexAllocator )
324+ if err != nil {
325+ setupLog .Error (err , "failed to create assign index router" )
326+ os .Exit (1 )
327+ }
313328 allocatorInfoRouter , err := router .NewAllocatorInfoRouter (ctx , allocator , scheduler )
314329 if err != nil {
315330 setupLog .Error (err , "failed to create allocator info router" )
316331 os .Exit (1 )
317332 }
318- httpServer := server .NewHTTPServer (connectionRouter , assignHostPortRouter , allocatorInfoRouter , leaderChan )
333+ httpServer := server .NewHTTPServer (
334+ connectionRouter , assignHostPortRouter , assignIndexRouter , allocatorInfoRouter , leaderChan ,
335+ )
319336 go func () {
320337 err := httpServer .Run ()
321338 if err != nil {
@@ -468,12 +485,13 @@ func startCustomResourceController(
468485func startWebhook (
469486 mgr manager.Manager ,
470487 portAllocator * portallocator.PortAllocator ,
488+ indexAllocator * indexallocator.IndexAllocator ,
471489 pricingProvider pricing.PricingProvider ,
472490) {
473491 if os .Getenv (constants .EnableWebhookEnv ) == constants .FalseStringValue {
474492 return
475493 }
476- if err := webhookcorev1 .SetupPodWebhookWithManager (mgr , portAllocator , pricingProvider ); err != nil {
494+ if err := webhookcorev1 .SetupPodWebhookWithManager (mgr , portAllocator , indexAllocator , pricingProvider ); err != nil {
477495 setupLog .Error (err , "unable to create webhook" , "webhook" , "Pod" )
478496 os .Exit (1 )
479497 }
0 commit comments