Skip to content

Commit 083d56a

Browse files
Adding support to set inferencing platform on NIMService CRD
Signed-off-by: Vishesh Tanksale <vtanksale@nvidia.com>
1 parent 8a91dd0 commit 083d56a

3 files changed

Lines changed: 18 additions & 25 deletions

File tree

cmd/main.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ import (
4343
appsv1alpha1 "github.com/NVIDIA/k8s-nim-operator/api/apps/v1alpha1"
4444
"github.com/NVIDIA/k8s-nim-operator/internal/conditions"
4545
"github.com/NVIDIA/k8s-nim-operator/internal/controller"
46-
"github.com/NVIDIA/k8s-nim-operator/internal/controller/platform"
4746
"github.com/NVIDIA/k8s-nim-operator/internal/render"
4847
// +kubebuilder:scaffold:imports
4948
)
@@ -96,16 +95,13 @@ func main() {
9695
setupLog.Info("DEPRECATED: Global platform flag is deprecated. Use 'platform' field in NIMService CR instead.", "platform", platformType)
9796
switch platformType {
9897
case "standalone", "kserve":
99-
// Valid platform types
98+
// Valid platform types for the deprecated global platform flag. No need to throw an error.
10099
default:
101100
setupLog.Error(nil, "unsupported model-serving platform type", "platformType", platformType)
102101
os.Exit(1)
103102
}
104103
}
105104

106-
// Create platform factory
107-
platformFactory := platform.NewFactory()
108-
109105
// if the enable-http2 flag is false (the default), http/2 should be disabled
110106
// due to its vulnerabilities. More specifically, disabling http/2 will
111107
// prevent from being vulnerable to the HTTP/2 Stream Cancellation and
@@ -179,7 +175,6 @@ func main() {
179175
discoveryClient,
180176
render.NewRenderer("/manifests"),
181177
ctrl.Log.WithName("controllers").WithName("NIMService"),
182-
platformFactory,
183178
).SetupWithManager(mgr); err != nil {
184179
setupLog.Error(err, "unable to create controller", "controller", "NIMService")
185180
os.Exit(1)

internal/controller/nimservice_controller.go

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,30 +59,28 @@ const NIMServiceFinalizer = "finalizer.nimservice.apps.nvidia.com"
5959
// NIMServiceReconciler reconciles a NIMService object.
6060
type NIMServiceReconciler struct {
6161
client.Client
62-
scheme *runtime.Scheme
63-
log logr.Logger
64-
updater conditions.Updater
65-
discoveryClient discovery.DiscoveryInterface
66-
renderer render.Renderer
67-
Config *rest.Config
68-
InferencePlatformFactory *platform.Factory
69-
orchestratorType k8sutil.OrchestratorType
70-
recorder record.EventRecorder
62+
scheme *runtime.Scheme
63+
log logr.Logger
64+
updater conditions.Updater
65+
discoveryClient discovery.DiscoveryInterface
66+
renderer render.Renderer
67+
Config *rest.Config
68+
orchestratorType k8sutil.OrchestratorType
69+
recorder record.EventRecorder
7170
}
7271

7372
// Ensure NIMServiceReconciler implements the Reconciler interface.
7473
var _ shared.Reconciler = &NIMServiceReconciler{}
7574

7675
// NewNIMServiceReconciler creates a new reconciler for NIMService with the given platform factory.
77-
func NewNIMServiceReconciler(client client.Client, scheme *runtime.Scheme, updater conditions.Updater, discoveryClient discovery.DiscoveryInterface, renderer render.Renderer, log logr.Logger, platformFactory *platform.Factory) *NIMServiceReconciler {
76+
func NewNIMServiceReconciler(client client.Client, scheme *runtime.Scheme, updater conditions.Updater, discoveryClient discovery.DiscoveryInterface, renderer render.Renderer, log logr.Logger) *NIMServiceReconciler {
7877
return &NIMServiceReconciler{
79-
Client: client,
80-
scheme: scheme,
81-
updater: updater,
82-
discoveryClient: discoveryClient,
83-
renderer: renderer,
84-
log: log,
85-
InferencePlatformFactory: platformFactory,
78+
Client: client,
79+
scheme: scheme,
80+
updater: updater,
81+
discoveryClient: discoveryClient,
82+
renderer: renderer,
83+
log: log,
8684
}
8785
}
8886

@@ -134,7 +132,7 @@ func (r *NIMServiceReconciler) Reconcile(ctx context.Context, req ctrl.Request)
134132
logger.Info("Reconciling", "NIMService", nimService.Name)
135133

136134
// Get platform implementation based on NIMService's platform field
137-
platformImpl, err := r.InferencePlatformFactory.GetInferencePlatform(nimService.Spec.InferencePlatform)
135+
platformImpl, err := platform.GetInferencePlatform(nimService.Spec.InferencePlatform)
138136
if err != nil {
139137
logger.Error(err, "failed to get platform implementation", "platform", nimService.Spec.InferencePlatform)
140138
return ctrl.Result{}, err

internal/controller/platform/platform.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func NewFactory() *Factory {
4444
}
4545

4646
// GetInferencePlatform returns an inference platform implementation based on the platform type.
47-
func (f *Factory) GetInferencePlatform(inferencePlatformType appsv1alpha1.PlatformType) (InferencePlatform, error) {
47+
func GetInferencePlatform(inferencePlatformType appsv1alpha1.PlatformType) (InferencePlatform, error) {
4848
switch inferencePlatformType {
4949
case appsv1alpha1.PlatformTypeStandalone, "": // Default to standalone for empty values
5050
return &standalone.Standalone{}, nil

0 commit comments

Comments
 (0)