Documentation
¶
Overview ¶
Package searchrun wires CLI flags and YAML config to host search and caching.
Index ¶
- Constants
- func FirstNonEmpty(vals ...string) string
- func MergeDockerDiscover(defaults, override config.DockerDiscover) config.DockerDiscover
- func RegisterCRUD(c ProviderCRUD)
- func RegisterDockerDiscover(fn DockerDiscoverFunc)
- func RunSearch(ctx context.Context, q hosts.Query, provs []hosts.Backend, cacheDir string, ...) ([]hosts.Record, error)
- func WithDockerDiscover(b hosts.Backend, d config.DockerDiscover) hosts.Backend
- type BackendConfigRegistry
- type ConfigReloader
- type DockerDiscoverFunc
- type ExecutorProvider
- type FlagRegistrar
- type ProviderCRUD
- type ProviderFactory
- type ProviderOverrides
- type Registry
- func (r *Registry) BuildProviders(cfg *config.File, overrides ProviderOverrides) []hosts.Backend
- func (r *Registry) GetBackendSliceByKind(cfg *config.File, kind string) (reflect.Value, error)
- func (r *Registry) ListBackendRows(cfg *config.File) []config.BackendRow
- func (r *Registry) ListSearchProviderIDs(overrides ProviderOverrides) []string
- func (r *Registry) ReconfigureFromConfig(cfg *config.File)
- func (r *Registry) RegisterAllProviderFlags(cmd *cobra.Command)
- func (r *Registry) RegisteredBackendKinds() []string
- func (r *Registry) ResolveExecutor(rec hosts.Record, reg hostexec.Registry) hostexec.Executor
Constants ¶
const DefaultCacheTTL = 10 * time.Minute
DefaultCacheTTL is the product default time-to-live for host-discovery disk cache when neither CLI flags, API fields, nor config defaults.cache_ttl override it.
Variables ¶
This section is empty.
Functions ¶
func FirstNonEmpty ¶ added in v0.3.3
FirstNonEmpty returns the first non-blank string from vals.
func MergeDockerDiscover ¶ added in v0.3.0
func MergeDockerDiscover(defaults, override config.DockerDiscover) config.DockerDiscover
MergeDockerDiscover merges a backend-specific discover config over defaults.
func RegisterCRUD ¶ added in v0.2.6
func RegisterCRUD(c ProviderCRUD)
RegisterCRUD registers a ProviderCRUD implementation.
func RegisterDockerDiscover ¶ added in v0.3.0
func RegisterDockerDiscover(fn DockerDiscoverFunc)
RegisterDockerDiscover registers the docker auto-discover hook from dockerprovider.
This stays an init-registered extension point (like RegisterCRUD) rather than a constructor-injected dependency: the hook is consumed by dockerDiscoverWrapper instances created across many unrelated provider factories (aws, gcp, proxmox, local, consul) that must not import dockerprovider. Registration is the idiomatic Go pattern for that one-to-many optional extension wiring.
func RunSearch ¶
func RunSearch( ctx context.Context, q hosts.Query, provs []hosts.Backend, cacheDir string, cacheTTL time.Duration, noCache bool, refresh bool, ) ([]hosts.Record, error)
RunSearch executes hosts.RunParallel with an on-disk cache under cacheDir. If cacheDir is empty, hosts.DefaultCacheDir is used.
func WithDockerDiscover ¶ added in v0.3.0
WithDockerDiscover wraps a backend to inject Docker auto-discover metadata into its records.
Types ¶
type BackendConfigRegistry ¶ added in v0.2.8
BackendConfigRegistry can be implemented by a ProviderFactory so backend CRUD handlers can locate the matching cfg.Backends.<kind> slice dynamically.
type ConfigReloader ¶ added in v0.3.3
ConfigReloader is optionally implemented by factories that hold provider-specific runtime state. ReconfigureFromConfig is called whenever the honey config is (re)loaded.
type DockerDiscoverFunc ¶ added in v0.3.0
type DockerDiscoverFunc func(ctx context.Context, q hosts.Query, vms []hosts.Record) ([]hosts.Record, error)
DockerDiscoverFunc lists containers on cloud VM records from a completed search pass.
type ExecutorProvider ¶ added in v0.3.3
type ExecutorProvider interface {
// ProviderName returns the r.Provider value this factory owns.
ProviderName() string
// ExecutorFor returns the executor for r, or nil to fall through to SSH.
ExecutorFor(r hosts.Record, reg hostexec.Registry) hostexec.Executor
}
ExecutorProvider is optionally implemented by factories that provide a custom exec transport. The resolver routes records by ProviderName() before calling ExecutorFor, so ExecutorFor never needs to re-check the provider — only record-specific metadata (kind, etc.).
type FlagRegistrar ¶ added in v0.3.3
FlagRegistrar is optionally implemented by provider factories that expose CLI flags.
type ProviderCRUD ¶ added in v0.2.6
type ProviderCRUD interface {
// ID returns the provider identifier (e.g. "gcp", "aws")
ID() string
// Name returns the human readable name (e.g. "GCP", "AWS")
Name() string
// ListOptions returns a list of huh options for the edit/delete menus
ListOptions(cfg *config.File) []huh.Option[string]
// Add runs the interactive prompt to add a new backend to the config
Add(cfg *config.File) error
// Edit runs the interactive prompt to edit an existing backend at the given index
Edit(cfg *config.File, idx int) error
// Delete removes the backend at the given index
Delete(cfg *config.File, idx int) error
}
ProviderCRUD defines the interface for creating, editing, and deleting backends interactively.
func CRUDHandler ¶ added in v0.3.4
func CRUDHandler(id string) ProviderCRUD
CRUDHandler returns a specific ProviderCRUD implementation by ID.
func CRUDHandlers ¶ added in v0.3.4
func CRUDHandlers() []ProviderCRUD
CRUDHandlers returns all registered ProviderCRUD implementations.
type ProviderFactory ¶ added in v0.2.3
type ProviderFactory interface {
// FromConfig returns a list of configured backends based on the user's YAML config.
// overrides is an opaque map; each factory extracts its own key and deserializes its section.
FromConfig(cfg *config.File, overrides ProviderOverrides) []hosts.Backend
// Default returns a single backend instance using CLI flags / defaults when no config is provided.
Default(overrides ProviderOverrides) hosts.Backend
// BackendRows returns a summary of configured backends for listing purposes (e.g. `honey backends`).
BackendRows(cfg *config.File) []config.BackendRow
}
ProviderFactory defines the interface that each backend provider must implement to register itself with the search engine.
type ProviderOverrides ¶ added in v0.3.3
type ProviderOverrides map[string]json.RawMessage
ProviderOverrides is an opaque map of provider key → raw JSON config override. Each factory knows its own key and unmarshals its own section — callers need not know what fields any provider accepts.
type Registry ¶ added in v0.3.4
type Registry struct {
Factories []ProviderFactory
// contains filtered or unexported fields
}
Registry provides access to registered provider factories.
func NewRegistry ¶ added in v0.3.4
func NewRegistry(factories []ProviderFactory) *Registry
NewRegistry initializes a registry with given factories and registers backend slices.
func (*Registry) BuildProviders ¶ added in v0.3.4
BuildProviders returns backends from the config file when it defines at least one backend entry; otherwise it requests the default backend from each registered provider.
func (*Registry) GetBackendSliceByKind ¶ added in v0.3.4
GetBackendSliceByKind resolves cfg.Backends.<kind> as a reflect.Value slice.
func (*Registry) ListBackendRows ¶ added in v0.3.4
func (r *Registry) ListBackendRows(cfg *config.File) []config.BackendRow
ListBackendRows queries all registered providers to build a list of configured backends.
func (*Registry) ListSearchProviderIDs ¶ added in v0.3.4
func (r *Registry) ListSearchProviderIDs(overrides ProviderOverrides) []string
ListSearchProviderIDs returns hosts.Backend.ID() for each registered factory's default backend.
func (*Registry) ReconfigureFromConfig ¶ added in v0.3.4
ReconfigureFromConfig propagates config to all registered provider factories.
func (*Registry) RegisterAllProviderFlags ¶ added in v0.3.4
RegisterAllProviderFlags calls RegisterFlags on each factory that implements FlagRegistrar.
func (*Registry) RegisteredBackendKinds ¶ added in v0.3.4
RegisteredBackendKinds returns registered backend YAML kind names, sorted.