Skip to content

Commit b3b06a6

Browse files
committed
fixed conversion
1 parent 34a6dbc commit b3b06a6

File tree

2 files changed

+53
-61
lines changed

2 files changed

+53
-61
lines changed

apix/v1alpha2/inferencepool_conversion.go

Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -19,108 +19,92 @@ package v1alpha2
1919
import (
2020
"fmt"
2121

22-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2322
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2423
runtime "k8s.io/apimachinery/pkg/runtime"
2524

2625
v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1"
2726
)
2827

2928
// ConvertTo converts this InferencePool (v1alpha2) to the v1 version.
30-
func (src *InferencePool) ConvertTo() (*v1.InferencePool, error) {
31-
if src == nil {
32-
return nil, nil
29+
func (src *InferencePool) ConvertTo(dst *v1.InferencePool) error {
30+
if dst == nil {
31+
return fmt.Errorf("dst cannot be nil")
3332
}
34-
35-
v1Extension, err := convertExtensionRefToV1(*src.Spec.ExtensionRef)
33+
v1Extension, err := convertExtensionRefToV1(src.Spec.ExtensionRef)
3634
if err != nil {
37-
return nil, err
35+
return err
3836
}
39-
v1Status, err := converStatusToV1(src.Status)
37+
v1Status, err := convertStatusToV1(&src.Status)
4038
if err != nil {
41-
return nil, err
42-
}
43-
dst := &v1.InferencePool{
44-
TypeMeta: src.TypeMeta,
45-
ObjectMeta: src.ObjectMeta,
46-
Spec: v1.InferencePoolSpec{
47-
TargetPortNumber: src.Spec.TargetPortNumber,
48-
ExtensionRef: v1Extension,
49-
},
50-
Status: *v1Status,
39+
return err
5140
}
41+
dst.TypeMeta = src.TypeMeta
42+
dst.ObjectMeta = src.ObjectMeta
43+
dst.Spec.TargetPortNumber = src.Spec.TargetPortNumber
44+
dst.Spec.ExtensionRef = v1Extension
45+
dst.Status = *v1Status
5246
if src.Spec.Selector != nil {
5347
dst.Spec.Selector.MatchLabels = make(map[v1.LabelKey]v1.LabelValue, len(src.Spec.Selector))
5448
for k, v := range src.Spec.Selector {
5549
dst.Spec.Selector.MatchLabels[v1.LabelKey(k)] = v1.LabelValue(v)
5650
}
5751
}
58-
return dst, nil
52+
return nil
5953
}
6054

6155
// ConvertFrom converts from the v1 version to this version (v1alpha2).
62-
func ConvertFrom(src *v1.InferencePool) (*InferencePool, error) {
56+
func (dst *InferencePool) ConvertFrom(src *v1.InferencePool) error {
6357
if src == nil {
64-
return nil, nil
58+
return fmt.Errorf("src cannot be nil")
6559
}
66-
67-
extensionRef, err := convertExtensionRefFromV1(*src.Spec.ExtensionRef)
60+
extensionRef, err := convertExtensionRefFromV1(src.Spec.ExtensionRef)
6861
if err != nil {
69-
return nil, err
62+
return err
7063
}
71-
status, err := converStatusFromV1(src.Status)
64+
status, err := convertStatusFromV1(&src.Status)
7265
if err != nil {
73-
return nil, err
74-
}
75-
dst := &InferencePool{
76-
TypeMeta: metav1.TypeMeta{
77-
Kind: "InferencePool",
78-
APIVersion: "inference.networking.x-k8s.io/v1alpha2",
79-
},
80-
ObjectMeta: src.ObjectMeta,
81-
Spec: InferencePoolSpec{
82-
TargetPortNumber: src.Spec.TargetPortNumber,
83-
ExtensionRef: extensionRef,
84-
},
85-
Status: *status,
66+
return err
8667
}
87-
68+
dst.TypeMeta = src.TypeMeta
69+
dst.ObjectMeta = src.ObjectMeta
70+
dst.Spec.TargetPortNumber = src.Spec.TargetPortNumber
71+
dst.Spec.ExtensionRef = extensionRef
72+
dst.Status = *status
8873
if src.Spec.Selector.MatchLabels != nil {
8974
dst.Spec.Selector = make(map[LabelKey]LabelValue, len(src.Spec.Selector.MatchLabels))
9075
for k, v := range src.Spec.Selector.MatchLabels {
9176
dst.Spec.Selector[LabelKey(k)] = LabelValue(v)
9277
}
9378
}
94-
95-
return dst, nil
79+
return nil
9680
}
9781

98-
func converStatusToV1(src InferencePoolStatus) (*v1.InferencePoolStatus, error) {
99-
u, err := toUnstructured(&src)
82+
func convertStatusToV1(src *InferencePoolStatus) (*v1.InferencePoolStatus, error) {
83+
u, err := toUnstructured(src)
10084
if err != nil {
10185
return nil, err
10286
}
10387
return convert[v1.InferencePoolStatus](u)
10488
}
10589

106-
func converStatusFromV1(src v1.InferencePoolStatus) (*InferencePoolStatus, error) {
107-
u, err := toUnstructured(&src)
90+
func convertStatusFromV1(src *v1.InferencePoolStatus) (*InferencePoolStatus, error) {
91+
u, err := toUnstructured(src)
10892
if err != nil {
10993
return nil, err
11094
}
11195
return convert[InferencePoolStatus](u)
11296
}
11397

114-
func convertExtensionRefToV1(src Extension) (*v1.Extension, error) {
115-
u, err := toUnstructured(&src)
98+
func convertExtensionRefToV1(src *Extension) (*v1.Extension, error) {
99+
u, err := toUnstructured(src)
116100
if err != nil {
117101
return nil, err
118102
}
119103
return convert[v1.Extension](u)
120104
}
121105

122-
func convertExtensionRefFromV1(src v1.Extension) (*Extension, error) {
123-
u, err := toUnstructured(&src)
106+
func convertExtensionRefFromV1(src *v1.Extension) (*Extension, error) {
107+
u, err := toUnstructured(src)
124108
if err != nil {
125109
return nil, err
126110
}

apix/v1alpha2/inferencepool_conversion_test.go

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ func TestInferencePoolConvertTo(t *testing.T) {
4747
{
4848
name: "full conversion from v1alpha2 to v1 including status",
4949
src: &InferencePool{
50+
TypeMeta: metav1.TypeMeta{
51+
Kind: "InferencePool",
52+
APIVersion: "inference.networking.x-k8s.io/v1alpha2",
53+
},
5054
ObjectMeta: metav1.ObjectMeta{
5155
Name: "test-pool",
5256
Namespace: "test-ns",
@@ -81,6 +85,10 @@ func TestInferencePoolConvertTo(t *testing.T) {
8185
},
8286
},
8387
want: &v1.InferencePool{
88+
TypeMeta: metav1.TypeMeta{
89+
Kind: "InferencePool",
90+
APIVersion: "inference.networking.x-k8s.io/v1alpha2",
91+
},
8492
ObjectMeta: metav1.ObjectMeta{
8593
Name: "test-pool",
8694
Namespace: "test-ns",
@@ -118,17 +126,12 @@ func TestInferencePoolConvertTo(t *testing.T) {
118126
},
119127
wantErr: false,
120128
},
121-
{
122-
name: "nil source should return nil and no error",
123-
src: nil,
124-
want: nil,
125-
wantErr: false,
126-
},
127129
}
128130

129131
for _, tt := range tests {
130132
t.Run(tt.name, func(t *testing.T) {
131-
got, err := tt.src.ConvertTo()
133+
got := &v1.InferencePool{}
134+
err := tt.src.ConvertTo(got)
132135
if (err != nil) != tt.wantErr {
133136
t.Fatalf("ConvertTo() error = %v, wantErr %v", err, tt.wantErr)
134137
}
@@ -149,6 +152,10 @@ func TestInferencePoolConvertFrom(t *testing.T) {
149152
{
150153
name: "full conversion from v1 to v1alpha2 including status",
151154
src: &v1.InferencePool{
155+
TypeMeta: metav1.TypeMeta{
156+
Kind: "InferencePool",
157+
APIVersion: "inference.networking.k8s.io/v1",
158+
},
152159
ObjectMeta: metav1.ObjectMeta{
153160
Name: "test-pool",
154161
Namespace: "test-ns",
@@ -187,7 +194,7 @@ func TestInferencePoolConvertFrom(t *testing.T) {
187194
want: &InferencePool{
188195
TypeMeta: metav1.TypeMeta{
189196
Kind: "InferencePool",
190-
APIVersion: "inference.networking.x-k8s.io/v1alpha2",
197+
APIVersion: "inference.networking.k8s.io/v1",
191198
},
192199
ObjectMeta: metav1.ObjectMeta{
193200
Name: "test-pool",
@@ -225,16 +232,17 @@ func TestInferencePoolConvertFrom(t *testing.T) {
225232
wantErr: false,
226233
},
227234
{
228-
name: "nil source should return nil and no error",
235+
name: "nil source",
229236
src: nil,
230-
want: nil,
231-
wantErr: false,
237+
want: &InferencePool{},
238+
wantErr: true,
232239
},
233240
}
234241

235242
for _, tt := range tests {
236243
t.Run(tt.name, func(t *testing.T) {
237-
got, err := ConvertFrom(tt.src)
244+
got := &InferencePool{}
245+
err := got.ConvertFrom(tt.src)
238246
if (err != nil) != tt.wantErr {
239247
t.Fatalf("ConvertFrom() error = %v, wantErr %v", err, tt.wantErr)
240248
}

0 commit comments

Comments
 (0)