@@ -19,7 +19,7 @@ package v1alpha1
19
19
import (
20
20
"errors"
21
21
22
- osspec "sigs.k8s.io/container-object-storage-interface-spec"
22
+ cosi "sigs.k8s.io/container-object-storage-interface-spec"
23
23
)
24
24
25
25
type ProtocolName string
@@ -29,84 +29,62 @@ const (
29
29
ProtocolNameAzure ProtocolName = "azureBlob"
30
30
ProtocolNameGCS ProtocolName = "gcs"
31
31
32
- MissingS3Protocol = "missing s3 in protocol"
33
- MissingAzureProtocol = "missing azure in protocol"
34
- MissingGCSProtocol = "missing gcs in protocol"
35
- InvalidProtocolName = "invalid protocol name"
32
+ InvalidProtocol = "invalid protocol"
36
33
)
37
34
38
35
type Protocol struct {
39
- // +kubebuilder:validation:Enum:={s3,azureBlob,gcs}
40
- Name ProtocolName `json:"name"`
41
- // +optional
42
- Version string `json:"version,omitempty"`
43
36
// +optional
44
37
S3 * S3Protocol `json:"s3,omitempty"`
38
+
45
39
// +optional
46
40
AzureBlob * AzureProtocol `json:"azureBlob,omitempty"`
41
+
47
42
// +optional
48
43
GCS * GCSProtocol `json:"gcs,omitempty"`
49
44
}
50
45
51
- func (in * Protocol ) ConvertToExternal () (* osspec.Protocol , error ) {
52
- external := & osspec.Protocol {
53
- Version : in .Version ,
54
- }
46
+ func (in * Protocol ) ConvertToExternal () (* cosi.Protocol , error ) {
47
+ external := & cosi.Protocol {}
55
48
56
- switch in .Name {
57
- case ProtocolNameS3 :
58
- if in .S3 == nil {
59
- return nil , errors .New (MissingS3Protocol )
60
- }
61
- external .Name = osspec .ProtocolName_S3
49
+ protoFound := false
50
+ if in .S3 != nil {
51
+ protoFound = true
62
52
external .Type = in .S3 .ConvertToExternal ()
63
- case ProtocolNameAzure :
64
- if in .AzureBlob == nil {
65
- return nil , errors .New (MissingAzureProtocol )
66
- }
67
- external .Name = osspec .ProtocolName_AZURE
53
+ }
54
+ if in .AzureBlob != nil {
55
+ protoFound = true
68
56
external .Type = in .AzureBlob .ConvertToExternal ()
69
- case ProtocolNameGCS :
70
- if in .GCS == nil {
71
- return nil , errors .New (MissingGCSProtocol )
72
- }
73
- external .Name = osspec .ProtocolName_GCS
57
+ }
58
+ if in .GCS != nil {
59
+ protoFound = true
74
60
external .Type = in .GCS .ConvertToExternal ()
75
- default :
76
- external .Name = osspec .ProtocolName_UnknownProtocol
77
- return external , errors .New (InvalidProtocolName )
61
+ }
78
62
63
+ if ! protoFound {
64
+ return external , errors .New (InvalidProtocol )
79
65
}
80
66
81
67
return external , nil
82
68
}
83
69
84
- func ConvertFromProtocolExternal (external * osspec .Protocol ) (* Protocol , error ) {
70
+ func ConvertFromProtocolExternal (external * cosi .Protocol ) (* Protocol , error ) {
85
71
in := & Protocol {}
86
- in .Version = external .Version
87
-
88
- switch external .Name {
89
- case osspec .ProtocolName_S3 :
90
- if external .GetS3 () == nil {
91
- return nil , errors .New (MissingS3Protocol )
92
- }
93
- in .Name = ProtocolNameS3
72
+
73
+ protoFound := false
74
+ if external .GetS3 () != nil {
75
+ protoFound = true
94
76
in .S3 = ConvertFromS3External (external .GetS3 ())
95
- case osspec .ProtocolName_AZURE :
96
- if external .GetAzureBlob () == nil {
97
- return nil , errors .New (MissingAzureProtocol )
98
- }
99
- in .Name = ProtocolNameAzure
77
+ }
78
+ if external .GetAzureBlob () != nil {
79
+ protoFound = true
100
80
in .AzureBlob = ConvertFromAzureExternal (external .GetAzureBlob ())
101
- case osspec .ProtocolName_GCS :
102
- if external .GetGcs () == nil {
103
- return nil , errors .New (MissingGCSProtocol )
104
- }
105
- in .Name = ProtocolNameGCS
81
+ }
82
+ if external .GetGcs () != nil {
83
+ protoFound = true
106
84
in .GCS = ConvertFromGCSExternal (external .GetGcs ())
107
- default :
108
- // TODO - Do we to set the protocol Name to specific value here?
109
- return nil , errors .New (InvalidProtocolName )
85
+ }
86
+ if ! protoFound {
87
+ return nil , errors .New (InvalidProtocol )
110
88
}
111
89
112
90
return in , nil
0 commit comments