Documentation ¶
Overview ¶
Package config provides types and functions to collect, validate and apply user-provided settings.
Index ¶
Constants ¶
const ( HelpFlagLong string = "help" HelpFlagShort string = "h" VersionFlagLong string = "version" VerboseFlagLong string = "verbose" BrandingFlag string = "branding" TrustCertFlagLong string = "trust-cert" TimeoutFlagLong string = "timeout" TimeoutFlagShort string = "t" ReadLimitFlagLong string = "read-limit" PerPageLimitFlagLong string = "page-limit" LogLevelFlagLong string = "log-level" LogLevelFlagShort string = "ll" ServerFlagLong string = "server" UsernameFlagLong string = "username" PasswordFlagLong string = "password" PortFlagLong string = "port" NetTypeFlagLong string = "net-type" CACertificateFlagLong string = "ca-cert" PermitTLSRenegotiationFlagLong string = "permit-tls-renegotiation" OmitOKSyncPlansFlagLong string = "omit-ok" InspectorOutputFormatFlagLong string = "output-format" )
Flag names for consistent references. Exported so that they're available from tests.
const ( InspectorOutputFormatOverview string = "overview" InspectorOutputFormatPrettyTable string = "pretty-table" InspectorOutputFormatSimpleTable string = "simple-table" InspectorOutputFormatVerbose string = "verbose" )
Supported Inspector type application output formats
const ( // LogLevelDisabled maps to zerolog.Disabled logging level LogLevelDisabled string = "disabled" // LogLevelPanic maps to zerolog.PanicLevel logging level LogLevelPanic string = "panic" // LogLevelFatal maps to zerolog.FatalLevel logging level LogLevelFatal string = "fatal" // LogLevelError maps to zerolog.ErrorLevel logging level LogLevelError string = "error" // LogLevelWarn maps to zerolog.WarnLevel logging level LogLevelWarn string = "warn" // LogLevelInfo maps to zerolog.InfoLevel logging level LogLevelInfo string = "info" // LogLevelDebug maps to zerolog.DebugLevel logging level LogLevelDebug string = "debug" // LogLevelTrace maps to zerolog.TraceLevel logging level LogLevelTrace string = "trace" )
const ExitCodeCatchall int = 1
ExitCodeCatchall indicates a general or miscellaneous error has occurred. This exit code is not directly used by monitoring plugins in this project. See https://tldp.org/LDP/abs/html/exitcodes.html for additional details.
const MB int64 = 1048576
MB represents 1 Megabyte
Variables ¶
var ( // ErrVersionRequested indicates that the user requested application version // information. ErrVersionRequested = errors.New("version information requested") // ErrHelpRequested indicates that the user requested application // help/usage information. ErrHelpRequested = errors.New("help/usage information requested") // ErrUnsupportedOption indicates that an unsupported option was specified. ErrUnsupportedOption = errors.New("unsupported option") // ErrConfigNotInitialized indicates that the configuration is not in a // usable state and application execution can not successfully proceed. ErrConfigNotInitialized = errors.New("configuration not initialized") )
Functions ¶
func Branding ¶
Branding accepts a message and returns a function that concatenates that message with version information. This function is intended to be called as a final step before application exit after any other output has already been emitted.
Types ¶
type AppType ¶
type AppType struct { // Plugin represents an application used as a Nagios plugin. Plugin bool // Inspector represents an application used for one-off or isolated // checks. Unlike a Nagios plugin which is focused on specific attributes // resulting in a severity-based outcome, an Inspector application is // intended for examining a small set of targets for // informational/troubleshooting purposes. Inspector bool }
AppType represents the type of application that is being configured/initialized. Not all application types will use the same features and as a result will not accept the same flags. Unless noted otherwise, each of the application types are incompatible with each other, though some flags are common to all types.
type Config ¶
type Config struct { // LoggingLevel is the supported logging level for this application. LoggingLevel string // InspectorOutputFormat is the output format used for Inspector type // applications. InspectorOutputFormat string // NetworkType indicates whether an attempt should be made to connect to // only IPv4, only IPv6 or Red Hat Satellite API endpoints listening on // either of IPv4 or IPv6 addresses ("auto"). NetworkType string // Server is the Red Hat Satellite API endpoint FQDN or IP Address. Server string // Username is the valid user for the given Red Hat Satellite API // endpoint. Username string // Password is the valid password for the specified user. Password string // CACertificate is the path to a CA certificate used to validate the // certificate chain used by the Red Hat Satellite server. CACertificate string // TCPPort is the port used by the Red Hat Satellite API endpoint. TCPPort int // ReadLimit is a limit in bytes set to help prevent abuse when reading // input that could be larger than expected. The default value is overly // generous and is unlikely to be met unless something is broken. ReadLimit int64 // PerPageLimit overrides the default pagination limit for API calls. If // not specified by the client the remote API uses a per-page default // value of 20 results. Our goal is to have our default higher than this // in order to support most Red Hat Satellite instances "out of the box". // // TODO: This will be less important once GH-245 is implemented. PerPageLimit int // Log is an embedded zerolog Logger initialized via config.New(). Log zerolog.Logger // TrustCert controls whether the certificate should be trusted as-is // without validation. TrustCert bool // PermitTLSRenegotiation controls whether the server is allowed to // request TLS renegotiation. PermitTLSRenegotiation bool // OmitOKSyncPlans indicates whether the user opted to omit sync plans // with a non-problematic or "OK" state from the output. OmitOKSyncPlans bool // EmitBranding controls whether "generated by" text is included at the // bottom of application output. This output is included in the Nagios // dashboard and notifications. This output may not mix well with branding // output from other tools such as atc0005/send2teams which also insert // their own branding output. EmitBranding bool // ShowVersion is a flag indicating whether the user opted to display only // the version string and then immediately exit the application. ShowVersion bool // ShowVerbose is a flag indicating whether the user opted to display // verbose details in the final plugin output. ShowVerbose bool // ShowHelp indicates whether the user opted to display usage information // and exit the application. ShowHelp bool // contains filtered or unexported fields }
Config represents the application configuration as specified via command-line flags.
func New ¶
New is a factory function that produces a new Config object based on user provided flag and config file values. It is responsible for validating user-provided values and initializing the logging settings used by this application.
func (*Config) Help ¶
Help emits application usage information to the previously configured destination for usage and error messages.