diff --git a/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd.go b/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd.go index 8866f01bc1..91a9cbaac3 100644 --- a/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd.go +++ b/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd.go @@ -105,6 +105,12 @@ func renderInstanceType(w io.Writer, it *publicv1.InstanceType) { fmt.Fprintf(writer, "Cores:\t%d\n", spec.GetCores()) fmt.Fprintf(writer, "Memory (GiB):\t%d\n", spec.GetMemoryGib()) + if gpu := spec.GetGpu(); gpu != nil { + fmt.Fprintf(writer, "GPU Count:\t%d\n", gpu.GetCount()) + fmt.Fprintf(writer, "GPU Resource Name:\t%s\n", gpu.GetResourceName()) + fmt.Fprintf(writer, "GPU PCI Device Selector:\t%s\n", gpu.GetPciDeviceSelector()) + } + // State with prefix stripping (D-02): state := strings.TrimPrefix(spec.GetState().String(), "INSTANCE_TYPE_STATE_") fmt.Fprintf(writer, "State:\t%s\n", state) diff --git a/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd_test.go b/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd_test.go index 453b5e539d..5ec599a564 100644 --- a/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd_test.go +++ b/fulfillment-service/internal/cmd/cli/describe/instancetype/describe_instancetype_cmd_test.go @@ -148,4 +148,45 @@ var _ = Describe("Rendering tests", func() { output := formatInstanceType(it) Expect(output).To(MatchRegexp(`Description:\s+High memory`)) }) + + It("should display GPU fields when GpuSpec is present", func() { + it := publicv1.InstanceType_builder{ + Id: "gpu-a100-4-16", + Metadata: publicv1.Metadata_builder{ + Name: "gpu-a100-4-16", + }.Build(), + Spec: publicv1.InstanceTypeSpec_builder{ + Cores: 4, + MemoryGib: 16, + State: publicv1.InstanceTypeState_INSTANCE_TYPE_STATE_ACTIVE, + Gpu: publicv1.GpuSpec_builder{ + PciDeviceSelector: "10DE:20B0", + ResourceName: "nvidia.com/A100", + Count: 2, + }.Build(), + }.Build(), + }.Build() + output := formatInstanceType(it) + Expect(output).To(MatchRegexp(`GPU PCI Device Selector:\s+10DE:20B0`)) + Expect(output).To(MatchRegexp(`GPU Resource Name:\s+nvidia.com/A100`)) + Expect(output).To(MatchRegexp(`GPU Count:\s+2`)) + }) + + It("should omit GPU fields when GpuSpec is absent", func() { + it := publicv1.InstanceType_builder{ + Id: "standard-4-16", + Metadata: publicv1.Metadata_builder{ + Name: "standard-4-16", + }.Build(), + Spec: publicv1.InstanceTypeSpec_builder{ + Cores: 4, + MemoryGib: 16, + State: publicv1.InstanceTypeState_INSTANCE_TYPE_STATE_ACTIVE, + }.Build(), + }.Build() + output := formatInstanceType(it) + Expect(output).NotTo(ContainSubstring("GPU PCI Device Selector:")) + Expect(output).NotTo(ContainSubstring("GPU Resource Name:")) + Expect(output).NotTo(ContainSubstring("GPU Count:")) + }) })