@@ -16,14 +16,52 @@ package v1alpha1
16
16
17
17
import (
18
18
"errors"
19
+ "fmt"
19
20
20
21
"gopkg.in/yaml.v3"
21
22
appsv1 "k8s.io/api/apps/v1"
22
23
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24
+ "sigs.k8s.io/controller-runtime/pkg/conversion"
23
25
24
26
"github.com/open-telemetry/opentelemetry-operator/apis/v1beta1"
25
27
)
26
28
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
+
27
65
func Tov1beta1 (in OpenTelemetryCollector ) (v1beta1.OpenTelemetryCollector , error ) {
28
66
copy := in .DeepCopy ()
29
67
cfg := & v1beta1.Config {}
0 commit comments