mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-11-10 09:12:47 +08:00
0b7dabacc8
Co-authored-by: Jeffrey Cafferata <jeffrey@jcid.nl>
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
package models
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
|
|
"github.com/gobwas/glob"
|
|
)
|
|
|
|
// UnmanagedConfig describes an IGNORE() rule.
|
|
// NB(tlim): This is called "Unmanaged" because the original design
|
|
// was to call this function UNMANAGED(). However we then realized
|
|
// that we could repurpose IGNORE() without any compatibility issues.
|
|
// NB(tlim): TechDebt: UnmanagedConfig and DebugUnmanagedConfig should
|
|
// be moved to pkg/diff2/handsoff.go and the following fields could be
|
|
// unexported: LabelGlob, RTypeMap, and TargetGlob
|
|
type UnmanagedConfig struct {
|
|
// Glob pattern for matching labels.
|
|
LabelPattern string `json:"label_pattern,omitempty"`
|
|
LabelGlob glob.Glob `json:"-"` // Compiled version
|
|
|
|
// Comma-separated list of DNS Resource Types.
|
|
RTypePattern string `json:"rType_pattern,omitempty"`
|
|
RTypeMap map[string]struct{} `json:"-"` // map of RTypes or len()=0 for all
|
|
|
|
// Glob pattern for matching targets.
|
|
TargetPattern string `json:"target_pattern,omitempty"`
|
|
TargetGlob glob.Glob `json:"-"` // Compiled version
|
|
}
|
|
|
|
// DebugUnmanagedConfig returns a string version of an []*UnmanagedConfig for debugging purposes.
|
|
func DebugUnmanagedConfig(uc []*UnmanagedConfig) string {
|
|
if len(uc) == 0 {
|
|
return "UnmanagedConfig{}"
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
b := &buf
|
|
|
|
fmt.Fprint(b, "UnmanagedConfig{\n")
|
|
for i, c := range uc {
|
|
fmt.Fprintf(b, "%00d: (%v, %+v, %v)\n",
|
|
i,
|
|
c.LabelGlob,
|
|
c.RTypeMap,
|
|
c.TargetGlob,
|
|
)
|
|
}
|
|
fmt.Fprint(b, "}")
|
|
|
|
return b.String()
|
|
}
|