blob: db3f6cb923b8cb494c759c8cd3f6c00608dd2512 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package cache
import (
types "github.com/apache/apisix-ingress-controller/api/adc"
)
type Cache interface {
Insert(obj any) error
Delete(obj any) error
// InsertSSL adds or updates ssl to cache.
InsertSSL(*types.SSL) error
// InsertUpstream adds or updates upstream to cache.
InsertService(*types.Service) error
// InsertConsumer adds or updates consumer to cache.
InsertConsumer(*types.Consumer) error
// InsertGlobalRule adds or updates global rule to cache.
InsertGlobalRule(*types.GlobalRuleItem) error
// GetSSL finds the ssl from cache according to the primary index (id).
GetSSL(string) (*types.SSL, error)
// GetUpstream finds the upstream from cache according to the primary index (id).
GetService(string) (*types.Service, error)
// GetConsumer finds the consumer from cache according to the primary index (username).
GetConsumer(string) (*types.Consumer, error)
// GetGlobalRule finds the global rule from cache according to the primary index (id).
GetGlobalRule(string) (*types.GlobalRuleItem, error)
// DeleteSSL deletes the specified ssl in cache.
DeleteSSL(*types.SSL) error
// DeleteUpstream deletes the specified upstream in cache.
DeleteService(*types.Service) error
// DeleteConsumer deletes the specified consumer in cache.
DeleteConsumer(*types.Consumer) error
// DeleteGlobalRule deletes the specified global rule in cache.
DeleteGlobalRule(*types.GlobalRuleItem) error
// ListSSL lists all ssl objects in cache.
ListSSL(...ListOption) ([]*types.SSL, error)
// ListUpstreams lists all upstreams in cache.
ListServices(...ListOption) ([]*types.Service, error)
// ListConsumers lists all consumer objects in cache.
ListConsumers(...ListOption) ([]*types.Consumer, error)
// ListGlobalRules lists all global rule objects in cache.
ListGlobalRules(...ListOption) ([]*types.GlobalRuleItem, error)
}
type ListOption interface {
ApplyToList(*ListOptions)
}
type ListOptions struct {
KindLabelSelector *KindLabelSelector
}
func (o *ListOptions) ApplyToList(lo *ListOptions) {
if o.KindLabelSelector != nil {
lo.KindLabelSelector = o.KindLabelSelector
}
}
func (o *ListOptions) ApplyOptions(opts []ListOption) *ListOptions {
for _, opt := range opts {
opt.ApplyToList(o)
}
return o
}
type KindLabelSelector struct {
Kind string
Name string
Namespace string
}
func (o *KindLabelSelector) ApplyToList(opts *ListOptions) {
opts.KindLabelSelector = o
}