@@ -394,9 +394,13 @@ var _ = Describe("NIMServiceReconciler for a standalone platform", func() {
394394
395395 // Start mock test server to serve nimservice endpoint.
396396 testServerHandler = http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
397- w .WriteHeader (http .StatusOK )
398- _ , err := w .Write ([]byte (`{"object": "list", "data":[{"id": "dummy-model", "object": "model", "root": "dummy-model", "parent": null}]}` ))
399- Expect (err ).ToNot (HaveOccurred ())
397+ if r .URL .Path == "/v1/models" {
398+ w .WriteHeader (http .StatusOK )
399+ _ , err := w .Write ([]byte (`{"object": "list", "data":[{"id": "dummy-model", "object": "model", "root": "dummy-model", "parent": null}]}` ))
400+ Expect (err ).ToNot (HaveOccurred ())
401+ } else {
402+ w .WriteHeader (http .StatusNotFound )
403+ }
400404 })
401405 testServer = httptest .NewServer (testServerHandler )
402406 http .DefaultTransport = & mockTransport {
@@ -772,9 +776,13 @@ var _ = Describe("NIMServiceReconciler for a standalone platform", func() {
772776
773777 It ("should fail when models response is unmarshallable" , func () {
774778 testServer .Config .Handler = http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
775- w .WriteHeader (http .StatusOK )
776- _ , err := w .Write ([]byte (`{"data": "invalid response"}` ))
777- Expect (err ).ToNot (HaveOccurred ())
779+ if r .URL .Path == "/v1/models" {
780+ w .WriteHeader (http .StatusOK )
781+ _ , err := w .Write ([]byte (`{"data": "invalid response"}` ))
782+ Expect (err ).ToNot (HaveOccurred ())
783+ } else {
784+ w .WriteHeader (http .StatusNotFound )
785+ }
778786 })
779787 svc := & corev1.Service {
780788 ObjectMeta : metav1.ObjectMeta {
@@ -800,10 +808,14 @@ var _ = Describe("NIMServiceReconciler for a standalone platform", func() {
800808
801809 It ("should have empty model name when it cannot be inferred" , func () {
802810 testServer .Config .Handler = http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
803- w .WriteHeader (http .StatusOK )
804- // Set dummy object type for model.
805- _ , err := w .Write ([]byte (`{"object": "list", "data":[{"id": "dummy-model", "object": "dummy", "root": "dummy-model", "parent": null}]}` ))
806- Expect (err ).ToNot (HaveOccurred ())
811+ if r .URL .Path == "/v1/models" {
812+ w .WriteHeader (http .StatusOK )
813+ // Set dummy object type for model.
814+ _ , err := w .Write ([]byte (`{"object": "list", "data":[{"id": "dummy-model", "object": "dummy", "root": "dummy-model", "parent": null}]}` ))
815+ Expect (err ).ToNot (HaveOccurred ())
816+ } else {
817+ w .WriteHeader (http .StatusNotFound )
818+ }
807819 })
808820 svc := & corev1.Service {
809821 ObjectMeta : metav1.ObjectMeta {
@@ -857,10 +869,14 @@ var _ = Describe("NIMServiceReconciler for a standalone platform", func() {
857869
858870 It ("should succeed when nimservice has lora adapter models attached" , func () {
859871 testServer .Config .Handler = http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
860- w .WriteHeader (http .StatusOK )
861- // Set dummy object type for model.
862- _ , err := w .Write ([]byte (`{"object": "list", "data":[{"id": "dummy-model-adapter1", "object": "model", "root": "dummy-model", "parent": null}, {"id": "dummy-model-adapter2", "object": "model", "root": "dummy-model", "parent": null}, {"id": "dummy-model", "object": "model", "root": "dummy-model", "parent": null}]}` ))
863- Expect (err ).ToNot (HaveOccurred ())
872+ if r .URL .Path == "/v1/models" {
873+ w .WriteHeader (http .StatusOK )
874+ // Set dummy object type for model.
875+ _ , err := w .Write ([]byte (`{"object": "list", "data":[{"id": "dummy-model-adapter1", "object": "model", "root": "dummy-model", "parent": null}, {"id": "dummy-model-adapter2", "object": "model", "root": "dummy-model", "parent": null}, {"id": "dummy-model", "object": "model", "root": "dummy-model", "parent": null}]}` ))
876+ Expect (err ).ToNot (HaveOccurred ())
877+ } else {
878+ w .WriteHeader (http .StatusNotFound )
879+ }
864880 })
865881 svc := & corev1.Service {
866882 ObjectMeta : metav1.ObjectMeta {
@@ -888,6 +904,47 @@ var _ = Describe("NIMServiceReconciler for a standalone platform", func() {
888904 Expect (modelStatus .Name ).To (Equal ("dummy-model" ))
889905 })
890906
907+ Context ("when nimservice only supports /v1/metadata" , func () {
908+ It ("should succeed when nimservice only supports /v1/metadata" , func () {
909+ testServer .Config .Handler = http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
910+ switch r .URL .Path {
911+ case "/v1/models" :
912+ w .WriteHeader (http .StatusNotFound )
913+ case "/v1/metadata" :
914+ w .WriteHeader (http .StatusOK )
915+ _ , err := w .Write ([]byte (`{"modelInfo": [{"shortName": "dummy-model:dummy-version", "modelUrl": "ngc://org/team/dummy-model:dummy-version"}]}` ))
916+ Expect (err ).ToNot (HaveOccurred ())
917+ default :
918+ w .WriteHeader (http .StatusNotFound )
919+ }
920+ })
921+ svc := & corev1.Service {
922+ ObjectMeta : metav1.ObjectMeta {
923+ Name : "test-nimservice" ,
924+ Namespace : "default" ,
925+ },
926+ Spec : corev1.ServiceSpec {
927+ Type : corev1 .ServiceTypeClusterIP ,
928+ ClusterIP : "127.0.0.1" ,
929+ Ports : []corev1.ServicePort {
930+ {
931+ Port : 8123 ,
932+ Name : "service-port" ,
933+ },
934+ },
935+ },
936+ }
937+ _ = client .Create (context .TODO (), svc )
938+ err := reconciler .updateModelStatus (context .Background (), nimService )
939+ Expect (err ).ToNot (HaveOccurred ())
940+ modelStatus := nimService .Status .Model
941+ Expect (modelStatus ).ToNot (BeNil ())
942+ Expect (modelStatus .ClusterEndpoint ).To (Equal ("127.0.0.1:8123" ))
943+ Expect (modelStatus .ExternalEndpoint ).To (Equal ("test-nimservice.default.example.com" ))
944+ Expect (modelStatus .Name ).To (Equal ("dummy-model" ))
945+
946+ })
947+ })
891948 })
892949
893950 Describe ("getNIMModelEndpoints" , func () {
0 commit comments