mongo-tools-common: github.com/mongodb/mongo-tools-common/options Index | Files

package options

import "github.com/mongodb/mongo-tools-common/options"

Package options implements command-line options that are used by all of the mongo tools.

Index

Package Files

options.go options_fp_disabled.go

Constants

const IncompatibleArgsErrorFormat = "illegal argument combination: cannot specify %s and --uri"

Variables

var (
    KnownURIOptionsAuth           = []string{"authsource", "authmechanism"}
    KnownURIOptionsConnection     = []string{"connecttimeoutms"}
    KnownURIOptionsSSL            = []string{"ssl"}
    KnownURIOptionsReadPreference = []string{"readpreference"}
    KnownURIOptionsKerberos       = []string{"gssapiservicename", "gssapihostname"}
    KnownURIOptionsWriteConcern   = []string{"wtimeout", "w", "j", "fsync"}
    KnownURIOptionsReplicaSet     = []string{"replicaset"}
)
var (
    BuiltWithSSL    = true
    BuiltWithGSSAPI = true
)

XXX Force these true as the Go driver supports them always. Once the conditionals that depend on them are removed, these can be removed.

var ConnectionOptFunctions []OptionRegistrationFunction

func ConflictingArgsErrorFormat Uses

func ConflictingArgsErrorFormat(optionName, uriValue, cliValue, cliOptionName string) error

func EnableFailpoints Uses

func EnableFailpoints(opts *ToolOptions)

EnableFailpoints removes the failpoints options

type Auth Uses

type Auth struct {
    Username  string `short:"u" value-name:"<username>" long:"username" description:"username for authentication"`
    Password  string `short:"p" value-name:"<password>" long:"password" description:"password for authentication"`
    Source    string `long:"authenticationDatabase" value-name:"<database-name>" description:"database that holds the user's credentials"`
    Mechanism string `long:"authenticationMechanism" value-name:"<mechanism>" description:"authentication mechanism to use"`
}

Struct holding auth-related options

func (*Auth) IsSet Uses

func (auth *Auth) IsSet() bool

func (*Auth) RequiresExternalDB Uses

func (auth *Auth) RequiresExternalDB() bool

func (*Auth) ShouldAskForPassword Uses

func (auth *Auth) ShouldAskForPassword() bool

ShouldAskForPassword returns true if the user specifies a username flag but no password, and the authentication mechanism requires a password.

type Connection Uses

type Connection struct {
    Host string `short:"h" long:"host" value-name:"<hostname>" description:"mongodb host to connect to (setname/host1,host2 for replica sets)"`
    Port string `long:"port" value-name:"<port>" description:"server port (can also use --host hostname:port)"`

    Timeout                int    `long:"dialTimeout" default:"3" hidden:"true" description:"dial timeout in seconds"`
    SocketTimeout          int    `long:"socketTimeout" default:"0" hidden:"true" description:"socket timeout in seconds (0 for no timeout)"`
    TCPKeepAliveSeconds    int    `long:"TCPKeepAliveSeconds" default:"30" hidden:"true" description:"seconds between TCP keep alives"`
    ServerSelectionTimeout int    `long:"serverSelectionTimeout" hidden:"true" description:"seconds to wait for server selection; 0 means driver default"`
    Compressors            string `long:"compressors" default:"none" hidden:"true" value-name:"<snappy,...>" description:"comma-separated list of compressors to enable. Use 'none' to disable."`
}

Struct holding connection-related options

type EnabledOptions Uses

type EnabledOptions struct {
    Auth       bool
    Connection bool
    Namespace  bool
    URI        bool
}

type ExtraOptions Uses

type ExtraOptions interface {
    // Name specifying what type of options these are
    Name() string
}

Interface for extra options that need to be used by specific tools

type General Uses

type General struct {
    Help    bool `long:"help" description:"print usage"`
    Version bool `long:"version" description:"print the tool version and exit"`

    MaxProcs   int    `long:"numThreads" hidden:"true"`
    Failpoints string `long:"failpoints" hidden:"true"`
    Trace      bool   `long:"trace" hidden:"true"`
}

Struct holding generic options

type Kerberos Uses

type Kerberos struct {
    Service     string `long:"gssapiServiceName" value-name:"<service-name>" description:"service name to use when authenticating using GSSAPI/Kerberos (default: mongodb)"`
    ServiceHost string `long:"gssapiHostName" value-name:"<host-name>" description:"hostname to use when authenticating using GSSAPI/Kerberos (default: <remote server's address>)"`
}

Struct for Kerberos/GSSAPI-specific options

type Namespace Uses

type Namespace struct {
    // Specified database and collection
    DB         string `short:"d" long:"db" value-name:"<database-name>" description:"database to use"`
    Collection string `short:"c" long:"collection" value-name:"<collection-name>" description:"collection to use"`
}

func (Namespace) String Uses

func (ns Namespace) String() string

type OptionRegistrationFunction Uses

type OptionRegistrationFunction func(*ToolOptions) error

type SSL Uses

type SSL struct {
    UseSSL              bool   `long:"ssl" description:"connect to a mongod or mongos that has ssl enabled"`
    SSLCAFile           string `long:"sslCAFile" value-name:"<filename>" description:"the .pem file containing the root certificate chain from the certificate authority"`
    SSLPEMKeyFile       string `long:"sslPEMKeyFile" value-name:"<filename>" description:"the .pem file containing the certificate and key"`
    SSLPEMKeyPassword   string `long:"sslPEMKeyPassword" value-name:"<password>" description:"the password to decrypt the sslPEMKeyFile, if necessary"`
    SSLCRLFile          string `long:"sslCRLFile" value-name:"<filename>" description:"the .pem file containing the certificate revocation list"`
    SSLAllowInvalidCert bool   `long:"sslAllowInvalidCertificates" description:"bypass the validation for server certificates"`
    SSLAllowInvalidHost bool   `long:"sslAllowInvalidHostnames" description:"bypass the validation for server name"`
    SSLFipsMode         bool   `long:"sslFIPSMode" description:"use FIPS mode of the installed openssl library"`
}

Struct holding ssl-related options

type ToolOptions Uses

type ToolOptions struct {

    // The name of the tool
    AppName string

    // The version of the tool
    VersionStr string

    // The git commit reference of the tool
    GitCommit string

    // Sub-option types
    *URI
    *General
    *Verbosity
    *Connection
    *SSL
    *Auth
    *Kerberos
    *Namespace

    // Force direct connection to the server and disable the
    // drivers automatic repl set discovery logic.
    Direct bool

    // ReplicaSetName, if specified, will prevent the obtained session from
    // communicating with any server which is not part of a replica set
    // with the given name. The default is to communicate with any server
    // specified or discovered via the servers contacted.
    ReplicaSetName string

    // ReadPreference, if specified, sets the client default
    ReadPreference *readpref.ReadPref

    // WriteConcern, if specified, sets the client default
    WriteConcern *writeconcern.WriteConcern

    // RetryWrites, if specified, sets the client default.
    RetryWrites *bool
    // contains filtered or unexported fields
}

Struct encompassing all of the options that are reused across tools: "help", "version", verbosity settings, ssl settings, etc.

func New Uses

func New(appName, versionStr, gitCommit, usageStr string, parsePositionalArgsAsURI bool, enabled EnabledOptions) *ToolOptions

Ask for a new instance of tool options

func (*ToolOptions) AddOptions Uses

func (opts *ToolOptions) AddOptions(extraOpts ExtraOptions)

AddOptions registers an additional options group to this instance

func (*ToolOptions) EnabledToolOptions Uses

func (opts *ToolOptions) EnabledToolOptions() EnabledOptions

func (*ToolOptions) FindOptionByLongName Uses

func (opts *ToolOptions) FindOptionByLongName(name string) *flags.Option

FindOptionByLongName finds an option in any of the added option groups by matching its long name; useful for modifying the attributes (e.g. description or name) of an option

func (*ToolOptions) GetAuthenticationDatabase Uses

func (opts *ToolOptions) GetAuthenticationDatabase() string

Get the authentication database to use. Should be the value of --authenticationDatabase if it's provided, otherwise, the database that's specified in the tool's --db arg.

func (*ToolOptions) NormalizeOptionsAndURI Uses

func (opts *ToolOptions) NormalizeOptionsAndURI() error

NormalizeOptionsAndURI syncs the connection string an toolOptions objects. It returns an error if there is any conflict between options and the connection string. If a value is set on the options, but not the connection string, that value is added to the connection string. If a value is set on the connection string, but not the options, that value is added to the options.

func (*ToolOptions) ParseArgs Uses

func (opts *ToolOptions) ParseArgs(args []string) ([]string, error)

Parse the command line args. Returns any extra args not accounted for by parsing, as well as an error if the parsing returns an error.

func (*ToolOptions) PrintHelp Uses

func (opts *ToolOptions) PrintHelp(force bool) bool

Print the usage message for the tool to stdout. Returns whether or not the help flag is specified.

func (*ToolOptions) PrintVersion Uses

func (opts *ToolOptions) PrintVersion() bool

Print the tool version to stdout. Returns whether or not the version flag is specified.

func (*ToolOptions) UseReadOnlyHostDescription Uses

func (opts *ToolOptions) UseReadOnlyHostDescription()

UseReadOnlyHostDescription changes the help description of the --host arg to not mention the shard/host:port format used in the data-mutating tools

type URI Uses

type URI struct {
    ConnectionString string `long:"uri" value-name:"mongodb-uri" description:"mongodb uri connection string"`

    ConnString connstring.ConnString
    // contains filtered or unexported fields
}

func NewURI Uses

func NewURI(unparsed string) (*URI, error)

func (*URI) AddKnownURIParameters Uses

func (uri *URI) AddKnownURIParameters(uriFieldNames []string)

func (*URI) GetConnectionAddrs Uses

func (uri *URI) GetConnectionAddrs() []string

func (*URI) LogUnsupportedOptions Uses

func (uri *URI) LogUnsupportedOptions()

func (*URI) ParsedConnString Uses

func (uri *URI) ParsedConnString() *connstring.ConnString

type URISetter Uses

type URISetter interface {
    // SetOptionsFromURI provides a way for tools to fetch any options that were
    // set in the URI and set them on the ExtraOptions that they pass to the options
    // package.
    SetOptionsFromURI(connstring.ConnString) error
}

type Verbosity Uses

type Verbosity struct {
    SetVerbosity func(string) `short:"v" long:"verbose" value-name:"<level>" description:"more detailed log output (include multiple times for more verbosity, e.g. -vvvvv, or specify a numeric value, e.g. --verbose=N)" optional:"true" optional-value:""`
    Quiet        bool         `long:"quiet" description:"hide all log output"`
    VLevel       int          `no-flag:"true"`
}

Struct holding verbosity-related options

func (Verbosity) IsQuiet Uses

func (v Verbosity) IsQuiet() bool

func (Verbosity) Level Uses

func (v Verbosity) Level() int

type WriteConcern Uses

type WriteConcern struct {
    // Specifies the write concern for each write operation that mongofiles writes to the target database.
    // By default, mongofiles waits for a majority of members from the replica set to respond before returning.
    WriteConcern string `long:"writeConcern" value-name:"<write-concern>" default:"majority" default-mask:"-" description:"write concern options e.g. --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}'"`
    // contains filtered or unexported fields
}

Package options imports 14 packages (graph) and is imported by 14 packages. Updated 2020-04-08. Refresh now. Tools for package owners.