state: convert config-entries kind index to new pattern
This commit is contained in:
parent
bfcf463c3a
commit
1b8f8b135e
|
@ -1246,3 +1246,9 @@ func NewConfigEntryKindName(kind, name string, entMeta *structs.EnterpriseMeta)
|
|||
func newConfigEntryQuery(c structs.ConfigEntry) ConfigEntryKindName {
|
||||
return NewConfigEntryKindName(c.GetKind(), c.GetName(), c.GetEnterpriseMeta())
|
||||
}
|
||||
|
||||
// ConfigEntryKindQuery is used to lookup config entries by their kind.
|
||||
type ConfigEntryKindQuery struct {
|
||||
Kind string
|
||||
structs.EnterpriseMeta
|
||||
}
|
||||
|
|
|
@ -39,6 +39,33 @@ func indexFromConfigEntry(raw interface{}) ([]byte, error) {
|
|||
return b.Bytes(), nil
|
||||
}
|
||||
|
||||
// indexKindFromConfigEntry indexes kinds, it is a shim for enterprise.
|
||||
func indexKindFromConfigEntry(raw interface{}) ([]byte, error) {
|
||||
c, ok := raw.(structs.ConfigEntry)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("type must be structs.ConfigEntry: %T", raw)
|
||||
}
|
||||
|
||||
if c.GetKind() == "" {
|
||||
return nil, errMissingValueForIndex
|
||||
}
|
||||
|
||||
var b indexBuilder
|
||||
b.String(strings.ToLower(c.GetKind()))
|
||||
return b.Bytes(), nil
|
||||
}
|
||||
|
||||
func indexFromConfigEntryKindQuery(raw interface{}) ([]byte, error) {
|
||||
q, ok := raw.(ConfigEntryKindQuery)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("type must be structs.ConfigEntry: %T", raw)
|
||||
}
|
||||
|
||||
var b indexBuilder
|
||||
b.String(strings.ToLower(q.Kind))
|
||||
return b.Bytes(), nil
|
||||
}
|
||||
|
||||
func validateConfigEntryEnterprise(_ ReadTxn, _ structs.ConfigEntry) error {
|
||||
return nil
|
||||
}
|
||||
|
@ -48,7 +75,7 @@ func getAllConfigEntriesWithTxn(tx ReadTxn, _ *structs.EnterpriseMeta) (memdb.Re
|
|||
}
|
||||
|
||||
func getConfigEntryKindsWithTxn(tx ReadTxn, kind string, _ *structs.EnterpriseMeta) (memdb.ResultIterator, error) {
|
||||
return tx.Get(tableConfigEntries, indexKind, kind)
|
||||
return tx.Get(tableConfigEntries, indexKind, ConfigEntryKindQuery{Kind: kind})
|
||||
}
|
||||
|
||||
func configIntentionsConvertToList(iter memdb.ResultIterator, _ *structs.EnterpriseMeta) structs.Intentions {
|
||||
|
|
|
@ -32,9 +32,9 @@ func configTableSchema() *memdb.TableSchema {
|
|||
Name: indexKind,
|
||||
AllowMissing: false,
|
||||
Unique: false,
|
||||
Indexer: &memdb.StringFieldIndex{
|
||||
Field: "Kind",
|
||||
Lowercase: true,
|
||||
Indexer: indexerSingle{
|
||||
readIndex: readIndex(indexFromConfigEntryKindQuery),
|
||||
writeIndex: writeIndex(indexKindFromConfigEntry),
|
||||
},
|
||||
},
|
||||
indexLink: {
|
||||
|
|
|
@ -66,7 +66,7 @@ table=config-entries
|
|||
index=intention-source allow-missing
|
||||
indexer=github.com/hashicorp/consul/agent/consul/state.ServiceIntentionSourceIndex
|
||||
index=kind
|
||||
indexer=github.com/hashicorp/go-memdb.StringFieldIndex Field=Kind Lowercase=true
|
||||
indexer=github.com/hashicorp/consul/agent/consul/state.indexerSingle readIndex=github.com/hashicorp/consul/agent/consul/state.indexFromConfigEntryKindQuery writeIndex=github.com/hashicorp/consul/agent/consul/state.indexKindFromConfigEntry
|
||||
index=link allow-missing
|
||||
indexer=github.com/hashicorp/consul/agent/consul/state.ConfigEntryLinkIndex
|
||||
|
||||
|
|
Loading…
Reference in New Issue