go.ligato.io/vpp-agent/v3@v3.5.0/plugins/vpp/l3plugin/descriptor/adapter/proxyarp.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 ProxyARPKVWithMetadata struct {
    14  	Key      string
    15  	Value    *vpp_l3.ProxyARP
    16  	Metadata interface{}
    17  	Origin   ValueOrigin
    18  }
    19  
    20  ////////// type-safe Descriptor structure //////////
    21  
    22  type ProxyARPDescriptor 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.ProxyARP) bool
    28  	NBKeyPrefix          string
    29  	WithMetadata         bool
    30  	MetadataMapFactory   MetadataMapFactory
    31  	Validate             func(key string, value *vpp_l3.ProxyARP) error
    32  	Create               func(key string, value *vpp_l3.ProxyARP) (metadata interface{}, err error)
    33  	Delete               func(key string, value *vpp_l3.ProxyARP, metadata interface{}) error
    34  	Update               func(key string, oldValue, newValue *vpp_l3.ProxyARP, oldMetadata interface{}) (newMetadata interface{}, err error)
    35  	UpdateWithRecreate   func(key string, oldValue, newValue *vpp_l3.ProxyARP, metadata interface{}) bool
    36  	Retrieve             func(correlate []ProxyARPKVWithMetadata) ([]ProxyARPKVWithMetadata, error)
    37  	IsRetriableFailure   func(err error) bool
    38  	DerivedValues        func(key string, value *vpp_l3.ProxyARP) []KeyValuePair
    39  	Dependencies         func(key string, value *vpp_l3.ProxyARP) []Dependency
    40  	RetrieveDependencies []string /* descriptor name */
    41  }
    42  
    43  ////////// Descriptor adapter //////////
    44  
    45  type ProxyARPDescriptorAdapter struct {
    46  	descriptor *ProxyARPDescriptor
    47  }
    48  
    49  func NewProxyARPDescriptor(typedDescriptor *ProxyARPDescriptor) *KVDescriptor {
    50  	adapter := &ProxyARPDescriptorAdapter{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 *ProxyARPDescriptorAdapter) ValueComparator(key string, oldValue, newValue proto.Message) bool {
    93  	typedOldValue, err1 := castProxyARPValue(key, oldValue)
    94  	typedNewValue, err2 := castProxyARPValue(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 *ProxyARPDescriptorAdapter) Validate(key string, value proto.Message) (err error) {
   102  	typedValue, err := castProxyARPValue(key, value)
   103  	if err != nil {
   104  		return err
   105  	}
   106  	return da.descriptor.Validate(key, typedValue)
   107  }
   108  
   109  func (da *ProxyARPDescriptorAdapter) Create(key string, value proto.Message) (metadata Metadata, err error) {
   110  	typedValue, err := castProxyARPValue(key, value)
   111  	if err != nil {
   112  		return nil, err
   113  	}
   114  	return da.descriptor.Create(key, typedValue)
   115  }
   116  
   117  func (da *ProxyARPDescriptorAdapter) Update(key string, oldValue, newValue proto.Message, oldMetadata Metadata) (newMetadata Metadata, err error) {
   118  	oldTypedValue, err := castProxyARPValue(key, oldValue)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  	newTypedValue, err := castProxyARPValue(key, newValue)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	typedOldMetadata, err := castProxyARPMetadata(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 *ProxyARPDescriptorAdapter) Delete(key string, value proto.Message, metadata Metadata) error {
   134  	typedValue, err := castProxyARPValue(key, value)
   135  	if err != nil {
   136  		return err
   137  	}
   138  	typedMetadata, err := castProxyARPMetadata(key, metadata)
   139  	if err != nil {
   140  		return err
   141  	}
   142  	return da.descriptor.Delete(key, typedValue, typedMetadata)
   143  }
   144  
   145  func (da *ProxyARPDescriptorAdapter) UpdateWithRecreate(key string, oldValue, newValue proto.Message, metadata Metadata) bool {
   146  	oldTypedValue, err := castProxyARPValue(key, oldValue)
   147  	if err != nil {
   148  		return true
   149  	}
   150  	newTypedValue, err := castProxyARPValue(key, newValue)
   151  	if err != nil {
   152  		return true
   153  	}
   154  	typedMetadata, err := castProxyARPMetadata(key, metadata)
   155  	if err != nil {
   156  		return true
   157  	}
   158  	return da.descriptor.UpdateWithRecreate(key, oldTypedValue, newTypedValue, typedMetadata)
   159  }
   160  
   161  func (da *ProxyARPDescriptorAdapter) Retrieve(correlate []KVWithMetadata) ([]KVWithMetadata, error) {
   162  	var correlateWithType []ProxyARPKVWithMetadata
   163  	for _, kvpair := range correlate {
   164  		typedValue, err := castProxyARPValue(kvpair.Key, kvpair.Value)
   165  		if err != nil {
   166  			continue
   167  		}
   168  		typedMetadata, err := castProxyARPMetadata(kvpair.Key, kvpair.Metadata)
   169  		if err != nil {
   170  			continue
   171  		}
   172  		correlateWithType = append(correlateWithType,
   173  			ProxyARPKVWithMetadata{
   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 *ProxyARPDescriptorAdapter) DerivedValues(key string, value proto.Message) []KeyValuePair {
   199  	typedValue, err := castProxyARPValue(key, value)
   200  	if err != nil {
   201  		return nil
   202  	}
   203  	return da.descriptor.DerivedValues(key, typedValue)
   204  }
   205  
   206  func (da *ProxyARPDescriptorAdapter) Dependencies(key string, value proto.Message) []Dependency {
   207  	typedValue, err := castProxyARPValue(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 castProxyARPValue(key string, value proto.Message) (*vpp_l3.ProxyARP, error) {
   217  	typedValue, ok := value.(*vpp_l3.ProxyARP)
   218  	if !ok {
   219  		return nil, ErrInvalidValueType(key, value)
   220  	}
   221  	return typedValue, nil
   222  }
   223  
   224  func castProxyARPMetadata(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  }