Skip to content

Commit 0c802a1

Browse files
committed
Add conversion go APIs
Signed-off-by: Pavol Loffay <[email protected]>
1 parent 5b59a10 commit 0c802a1

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

apis/v1alpha1/convert.go

+38
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,52 @@ package v1alpha1
1616

1717
import (
1818
"errors"
19+
"fmt"
1920

2021
"gopkg.in/yaml.v3"
2122
appsv1 "k8s.io/api/apps/v1"
2223
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24+
"sigs.k8s.io/controller-runtime/pkg/conversion"
2325

2426
"github.com/open-telemetry/opentelemetry-operator/apis/v1beta1"
2527
)
2628

29+
var _ conversion.Convertible = &OpenTelemetryCollector{}
30+
31+
func (src *OpenTelemetryCollector) ConvertTo(dstRaw conversion.Hub) error {
32+
switch t := dstRaw.(type) {
33+
case *v1beta1.OpenTelemetryCollector:
34+
dst := dstRaw.(*v1beta1.OpenTelemetryCollector)
35+
convertedSrc, err := Tov1beta1(*src)
36+
if err != nil {
37+
return fmt.Errorf("failed to convert to v1beta1: %w", err)
38+
}
39+
dst.ObjectMeta = convertedSrc.ObjectMeta
40+
dst.Spec = convertedSrc.Spec
41+
dst.Status = convertedSrc.Status
42+
default:
43+
return fmt.Errorf("unsupported type %v", t)
44+
}
45+
return nil
46+
}
47+
48+
func (dst *OpenTelemetryCollector) ConvertFrom(srcRaw conversion.Hub) error {
49+
switch t := srcRaw.(type) {
50+
case *v1beta1.OpenTelemetryCollector:
51+
src := srcRaw.(*v1beta1.OpenTelemetryCollector)
52+
srcConverted, err := tov1alpha1(*src)
53+
if err != nil {
54+
return fmt.Errorf("failed to convert to v1alpha1: %w", err)
55+
}
56+
dst.ObjectMeta = srcConverted.ObjectMeta
57+
dst.Spec = srcConverted.Spec
58+
dst.Status = srcConverted.Status
59+
default:
60+
return fmt.Errorf("unsupported type %v", t)
61+
}
62+
return nil
63+
}
64+
2765
func Tov1beta1(in OpenTelemetryCollector) (v1beta1.OpenTelemetryCollector, error) {
2866
copy := in.DeepCopy()
2967
cfg := &v1beta1.Config{}

apis/v1beta1/opentelemetrycollector_types.go

+2
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,8 @@ type OpenTelemetryCollector struct {
334334
Status OpenTelemetryCollectorStatus `json:"status,omitempty"`
335335
}
336336

337+
func (*OpenTelemetryCollector) Hub() {}
338+
337339
//+kubebuilder:object:root=true
338340

339341
// OpenTelemetryCollectorList contains a list of OpenTelemetryCollector.

0 commit comments

Comments
 (0)