go.ligato.io/vpp-agent/v3@v3.5.0/plugins/vpp/l3plugin/descriptor/adapter/arpentry.go (about) 1 // Code generated by adapter-generator. DO NOT EDIT. 2 3 package adapter 4 5 import ( 6 "google.golang.org/protobuf/proto" 7 . "go.ligato.io/vpp-agent/v3/plugins/kvscheduler/api" 8 "go.ligato.io/vpp-agent/v3/proto/ligato/vpp/l3" 9 ) 10 11 ////////// type-safe key-value pair with metadata ////////// 12 13 type ARPEntryKVWithMetadata struct { 14 Key string 15 Value *vpp_l3.ARPEntry 16 Metadata interface{} 17 Origin ValueOrigin 18 } 19 20 ////////// type-safe Descriptor structure ////////// 21 22 type ARPEntryDescriptor struct { 23 Name string 24 KeySelector KeySelector 25 ValueTypeName string 26 KeyLabel func(key string) string 27 ValueComparator func(key string, oldValue, newValue *vpp_l3.ARPEntry) bool 28 NBKeyPrefix string 29 WithMetadata bool 30 MetadataMapFactory MetadataMapFactory 31 Validate func(key string, value *vpp_l3.ARPEntry) error 32 Create func(key string, value *vpp_l3.ARPEntry) (metadata interface{}, err error) 33 Delete func(key string, value *vpp_l3.ARPEntry, metadata interface{}) error 34 Update func(key string, oldValue, newValue *vpp_l3.ARPEntry, oldMetadata interface{}) (newMetadata interface{}, err error) 35 UpdateWithRecreate func(key string, oldValue, newValue *vpp_l3.ARPEntry, metadata interface{}) bool 36 Retrieve func(correlate []ARPEntryKVWithMetadata) ([]ARPEntryKVWithMetadata, error) 37 IsRetriableFailure func(err error) bool 38 DerivedValues func(key string, value *vpp_l3.ARPEntry) []KeyValuePair 39 Dependencies func(key string, value *vpp_l3.ARPEntry) []Dependency 40 RetrieveDependencies []string /* descriptor name */ 41 } 42 43 ////////// Descriptor adapter ////////// 44 45 type ARPEntryDescriptorAdapter struct { 46 descriptor *ARPEntryDescriptor 47 } 48 49 func NewARPEntryDescriptor(typedDescriptor *ARPEntryDescriptor) *KVDescriptor { 50 adapter := &ARPEntryDescriptorAdapter{descriptor: typedDescriptor} 51 descriptor := &KVDescriptor{ 52 Name: typedDescriptor.Name, 53 KeySelector: typedDescriptor.KeySelector, 54 ValueTypeName: typedDescriptor.ValueTypeName, 55 KeyLabel: typedDescriptor.KeyLabel, 56 NBKeyPrefix: typedDescriptor.NBKeyPrefix, 57 WithMetadata: typedDescriptor.WithMetadata, 58 MetadataMapFactory: typedDescriptor.MetadataMapFactory, 59 IsRetriableFailure: typedDescriptor.IsRetriableFailure, 60 RetrieveDependencies: typedDescriptor.RetrieveDependencies, 61 } 62 if typedDescriptor.ValueComparator != nil { 63 descriptor.ValueComparator = adapter.ValueComparator 64 } 65 if typedDescriptor.Validate != nil { 66 descriptor.Validate = adapter.Validate 67 } 68 if typedDescriptor.Create != nil { 69 descriptor.Create = adapter.Create 70 } 71 if typedDescriptor.Delete != nil { 72 descriptor.Delete = adapter.Delete 73 } 74 if typedDescriptor.Update != nil { 75 descriptor.Update = adapter.Update 76 } 77 if typedDescriptor.UpdateWithRecreate != nil { 78 descriptor.UpdateWithRecreate = adapter.UpdateWithRecreate 79 } 80 if typedDescriptor.Retrieve != nil { 81 descriptor.Retrieve = adapter.Retrieve 82 } 83 if typedDescriptor.Dependencies != nil { 84 descriptor.Dependencies = adapter.Dependencies 85 } 86 if typedDescriptor.DerivedValues != nil { 87 descriptor.DerivedValues = adapter.DerivedValues 88 } 89 return descriptor 90 } 91 92 func (da *ARPEntryDescriptorAdapter) ValueComparator(key string, oldValue, newValue proto.Message) bool { 93 typedOldValue, err1 := castARPEntryValue(key, oldValue) 94 typedNewValue, err2 := castARPEntryValue(key, newValue) 95 if err1 != nil || err2 != nil { 96 return false 97 } 98 return da.descriptor.ValueComparator(key, typedOldValue, typedNewValue) 99 } 100 101 func (da *ARPEntryDescriptorAdapter) Validate(key string, value proto.Message) (err error) { 102 typedValue, err := castARPEntryValue(key, value) 103 if err != nil { 104 return err 105 } 106 return da.descriptor.Validate(key, typedValue) 107 } 108 109 func (da *ARPEntryDescriptorAdapter) Create(key string, value proto.Message) (metadata Metadata, err error) { 110 typedValue, err := castARPEntryValue(key, value) 111 if err != nil { 112 return nil, err 113 } 114 return da.descriptor.Create(key, typedValue) 115 } 116 117 func (da *ARPEntryDescriptorAdapter) Update(key string, oldValue, newValue proto.Message, oldMetadata Metadata) (newMetadata Metadata, err error) { 118 oldTypedValue, err := castARPEntryValue(key, oldValue) 119 if err != nil { 120 return nil, err 121 } 122 newTypedValue, err := castARPEntryValue(key, newValue) 123 if err != nil { 124 return nil, err 125 } 126 typedOldMetadata, err := castARPEntryMetadata(key, oldMetadata) 127 if err != nil { 128 return nil, err 129 } 130 return da.descriptor.Update(key, oldTypedValue, newTypedValue, typedOldMetadata) 131 } 132 133 func (da *ARPEntryDescriptorAdapter) Delete(key string, value proto.Message, metadata Metadata) error { 134 typedValue, err := castARPEntryValue(key, value) 135 if err != nil { 136 return err 137 } 138 typedMetadata, err := castARPEntryMetadata(key, metadata) 139 if err != nil { 140 return err 141 } 142 return da.descriptor.Delete(key, typedValue, typedMetadata) 143 } 144 145 func (da *ARPEntryDescriptorAdapter) UpdateWithRecreate(key string, oldValue, newValue proto.Message, metadata Metadata) bool { 146 oldTypedValue, err := castARPEntryValue(key, oldValue) 147 if err != nil { 148 return true 149 } 150 newTypedValue, err := castARPEntryValue(key, newValue) 151 if err != nil { 152 return true 153 } 154 typedMetadata, err := castARPEntryMetadata(key, metadata) 155 if err != nil { 156 return true 157 } 158 return da.descriptor.UpdateWithRecreate(key, oldTypedValue, newTypedValue, typedMetadata) 159 } 160 161 func (da *ARPEntryDescriptorAdapter) Retrieve(correlate []KVWithMetadata) ([]KVWithMetadata, error) { 162 var correlateWithType []ARPEntryKVWithMetadata 163 for _, kvpair := range correlate { 164 typedValue, err := castARPEntryValue(kvpair.Key, kvpair.Value) 165 if err != nil { 166 continue 167 } 168 typedMetadata, err := castARPEntryMetadata(kvpair.Key, kvpair.Metadata) 169 if err != nil { 170 continue 171 } 172 correlateWithType = append(correlateWithType, 173 ARPEntryKVWithMetadata{ 174 Key: kvpair.Key, 175 Value: typedValue, 176 Metadata: typedMetadata, 177 Origin: kvpair.Origin, 178 }) 179 } 180 181 typedValues, err := da.descriptor.Retrieve(correlateWithType) 182 if err != nil { 183 return nil, err 184 } 185 var values []KVWithMetadata 186 for _, typedKVWithMetadata := range typedValues { 187 kvWithMetadata := KVWithMetadata{ 188 Key: typedKVWithMetadata.Key, 189 Metadata: typedKVWithMetadata.Metadata, 190 Origin: typedKVWithMetadata.Origin, 191 } 192 kvWithMetadata.Value = typedKVWithMetadata.Value 193 values = append(values, kvWithMetadata) 194 } 195 return values, err 196 } 197 198 func (da *ARPEntryDescriptorAdapter) DerivedValues(key string, value proto.Message) []KeyValuePair { 199 typedValue, err := castARPEntryValue(key, value) 200 if err != nil { 201 return nil 202 } 203 return da.descriptor.DerivedValues(key, typedValue) 204 } 205 206 func (da *ARPEntryDescriptorAdapter) Dependencies(key string, value proto.Message) []Dependency { 207 typedValue, err := castARPEntryValue(key, value) 208 if err != nil { 209 return nil 210 } 211 return da.descriptor.Dependencies(key, typedValue) 212 } 213 214 ////////// Helper methods ////////// 215 216 func castARPEntryValue(key string, value proto.Message) (*vpp_l3.ARPEntry, error) { 217 typedValue, ok := value.(*vpp_l3.ARPEntry) 218 if !ok { 219 return nil, ErrInvalidValueType(key, value) 220 } 221 return typedValue, nil 222 } 223 224 func castARPEntryMetadata(key string, metadata Metadata) (interface{}, error) { 225 if metadata == nil { 226 return nil, nil 227 } 228 typedMetadata, ok := metadata.(interface{}) 229 if !ok { 230 return nil, ErrInvalidMetadataType(key) 231 } 232 return typedMetadata, nil 233 }