Skip to content

Commit f9c68b7

Browse files
committed
WIP
Signed-off-by: Jun Duan <jun.duan.phd@outlook.com>
1 parent 6051dc7 commit f9c68b7

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

cmd/dual-pods-controller/main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import (
3232
"k8s.io/klog/v2"
3333

3434
dpctlr "github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/controller/dual-pods"
35+
fmaclient "github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/generated/clientset/versioned"
36+
fmainformers "github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/generated/informers/externalversions"
3537
)
3638

3739
func main() {
@@ -83,12 +85,14 @@ func main() {
8385

8486
kubeClient := kubernetes.NewForConfigOrDie(restConfig)
8587
kubePreInformers := kubeinformers.NewSharedInformerFactoryWithOptions(kubeClient, 0, kubeinformers.WithNamespace(overrides.Context.Namespace))
86-
88+
fmaClient := fmaclient.NewForConfigOrDie(restConfig)
89+
fmaPreInformers := fmainformers.NewSharedInformerFactoryWithOptions(fmaClient, 0, fmainformers.WithNamespace(overrides.Context.Namespace))
8790
ctlr, err := config.NewController(
8891
logger,
8992
kubeClient.CoreV1(),
9093
overrides.Context.Namespace,
9194
kubePreInformers.Core().V1(),
95+
fmaPreInformers,
9296
)
9397
if err != nil {
9498
klog.Fatal(err)

pkg/controller/dual-pods/controller.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,11 @@ import (
4040
"k8s.io/client-go/tools/cache"
4141
"k8s.io/klog/v2"
4242

43+
fmav1aplha1 "github.com/llm-d-incubation/llm-d-fast-model-actuation/api/fma/v1alpha1"
4344
"github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/api"
4445
genctlr "github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/controller/generic"
46+
fmainformers "github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/generated/informers/externalversions"
47+
fmalisters "github.com/llm-d-incubation/llm-d-fast-model-actuation/pkg/generated/listers/fma/v1alpha1"
4548
)
4649

4750
// This package implements the dual-pods controller.
@@ -147,6 +150,7 @@ func (config ControllerConfig) NewController(
147150
coreClient coreclient.CoreV1Interface,
148151
namespace string,
149152
corev1PreInformers corev1preinformers.Interface,
153+
fmaInformerFactory fmainformers.SharedInformerFactory,
150154
) (*controller, error) {
151155
ctl := &controller{
152156
enqueueLogger: logger.WithName(ControllerName),
@@ -158,6 +162,7 @@ func (config ControllerConfig) NewController(
158162
cmLister: corev1PreInformers.ConfigMaps().Lister(),
159163
nodeInformer: corev1PreInformers.Nodes().Informer(),
160164
nodeLister: corev1PreInformers.Nodes().Lister(),
165+
lcInformer: fmaInformerFactory.Fma().V1alpha1().LauncherConfigs().Informer(),
161166
sleeperLimit: config.SleeperLimit,
162167
debugAccelMemory: config.AcceleratorSleepingMemoryLimitMiB < math.MaxInt32,
163168
accelMemoryLimitMiB: config.AcceleratorSleepingMemoryLimitMiB,
@@ -194,6 +199,10 @@ func (config ControllerConfig) NewController(
194199
if err != nil {
195200
panic(err)
196201
}
202+
_, err = ctl.lcInformer.AddEventHandler(ctl)
203+
if err != nil {
204+
panic(err)
205+
}
197206
return ctl, nil
198207
}
199208

@@ -207,6 +216,8 @@ type controller struct {
207216
cmLister corev1listers.ConfigMapLister
208217
nodeInformer cache.SharedIndexInformer
209218
nodeLister corev1listers.NodeLister
219+
lcInformer cache.SharedIndexInformer
220+
lcLister fmalisters.LauncherConfigLister
210221
genctlr.KnowsProcessedSync[queueItem]
211222

212223
sleeperLimit int
@@ -382,6 +393,9 @@ func (ctl *controller) OnAdd(obj any, isInInitialList bool) {
382393
ctl.enqueueLogger.V(5).Info("Enqueuing ConfigMap reference due to notification of add", "item", item, "isInInitialList", isInInitialList, "resourceVersion", typed.ResourceVersion)
383394
ctl.Queue.Add(item)
384395
}
396+
case *fmav1aplha1.LauncherConfig:
397+
ctl.Queue.Add(nodeItem{"fakeNodeName"})
398+
ctl.enqueueLogger.V(5).Info("Enqueuing LauncherConfig reference due to notification of add", "ref", cache.MetaObjectToName(typed), "isInInitialList", isInInitialList, "resourceVersion", typed.ResourceVersion)
385399
default:
386400
ctl.enqueueLogger.Error(nil, "Notified of add of unexpected type of object", "type", fmt.Sprintf("%T", obj))
387401
return
@@ -478,7 +492,7 @@ func getProviderNodeName(pod *corev1.Pod) (string, error) {
478492
}
479493

480494
func (ctl *controller) Start(ctx context.Context) error {
481-
if !cache.WaitForNamedCacheSync(ControllerName, ctx.Done(), ctl.cmInformer.HasSynced, ctl.podInformer.HasSynced, ctl.nodeInformer.HasSynced) {
495+
if !cache.WaitForNamedCacheSync(ControllerName, ctx.Done(), ctl.cmInformer.HasSynced, ctl.podInformer.HasSynced, ctl.nodeInformer.HasSynced, ctl.lcInformer.HasSynced) {
482496
return fmt.Errorf("caches not synced before end of Start context")
483497
}
484498
err := ctl.StartWorkers(ctx)

0 commit comments

Comments
 (0)