internal

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 19, 2018 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package internal houses code for wr's general utility functions.

It also implements the the config system used by the cmd package (see config.go).

import "github.com/VertebrateResequencing/wr/internal"
import "github.com/inconshreveable/log15"
deployment := internal.DefaultDeployment()
logger := log15.New()
logger.SetHandler(log15.LvlFilterHandler(log15.LvlWarn, log15.StderrHandler))
config := internal.ConfigLoad(deployment, false, logger)
port := config.ManagerPort

Index

Constants

View Source
const (

	// S3Prefix is the prefix used by S3 paths
	S3Prefix = "s3://"

	// Production is the name of the main deployment
	Production = "production"

	// Development is the name of the development deployment, used during testing
	Development = "development"
)

Variables

This section is empty.

Functions

func DefaultDeployment

func DefaultDeployment(logger log15.Logger) string

DefaultDeployment works out the default deployment.

func DefaultServer

func DefaultServer(logger log15.Logger) (server string)

DefaultServer works out the default server (we need this to be able to report this default before we know what deployment the user has actually chosen, ie. before we have a final config).

func DiskSize added in v0.11.0

func DiskSize() int

DiskSize returns the size of the disk (mounted at the given directory, "." for current) in GB.

func InS3 added in v0.10.0

func InS3(path string) bool

InS3 tells you if a path is to a file in S3.

func IsRemote added in v0.10.0

func IsRemote(path string) bool

IsRemote tells you if a path is to a remote file system or object store, based on its URI.

func LogClose added in v0.11.0

func LogClose(logger log15.Logger, obj io.Closer, msg string, extra ...interface{})

LogClose is for use to Close() an object during a defer when you don't care if the Close() returns an error, but do want non-EOF errors logged. Extra args are passed as additional context for the logger.

func LogPanic added in v0.11.0

func LogPanic(logger log15.Logger, desc string, die bool)

LogPanic is for use in a go routines, deferred at the start of them, to figure out what is causing runtime panics. If the die bool is true, the program exits, otherwise it continues, after logging the error message and stack trace. Desc string should be used to describe briefly what the goroutine you call this in does.

func ProcMeminfoMBs added in v0.11.0

func ProcMeminfoMBs() (int, error)

ProcMeminfoMBs uses gopsutil (amd64 freebsd, linux, windows, darwin, openbds only!) to find the total number of MBs of memory physically installed on the current system.

func SortMapKeysByIntValue

func SortMapKeysByIntValue(imap map[string]int, reverse bool) []string

SortMapKeysByIntValue sorts the keys of a map[string]int by its values, reversed if you supply true as the second arg.

func SortMapKeysByMapIntValue

func SortMapKeysByMapIntValue(imap map[string]map[string]int, criterion string, reverse bool) []string

SortMapKeysByMapIntValue sorts the keys of a map[string]map[string]int by a the values found at a given sub value, reversed if you supply true as the second arg.

func TildaToHome added in v0.8.0

func TildaToHome(path string) string

TildaToHome converts a path beginning with ~/ to the absolute path based in the current home directory (according to the environment variable $HOME).

func Userid

func Userid() (int, error)

Userid returns the user id of the current user. This avoids problems with static compilation as it avoids the use of os/user. It will only work on linux-like systems where 'id -u' works.

func Username

func Username() (string, error)

Username returns the username of the current user. This avoids problems with static compilation as it avoids the use of os/user. It will only work on linux-like systems where 'id -u -n' works.

Types

type Config

type Config struct {
	ManagerPort      string `default:""`
	ManagerWeb       string `default:""`
	ManagerHost      string `default:"localhost"`
	ManagerDir       string `default:"~/.wr"`
	ManagerPidFile   string `default:"pid"`
	ManagerLogFile   string `default:"log"`
	ManagerDbFile    string `default:"db"`
	ManagerDbBkFile  string `default:"db_bk"`
	ManagerUmask     int    `default:"007"`
	ManagerScheduler string `default:"local"`
	RunnerExecShell  string `default:"bash"`
	Deployment       string `default:"production"`
	CloudFlavor      string `default:""`
	CloudKeepAlive   int    `default:"120"`
	CloudServers     int    `default:"-1"`
	CloudCIDR        string `default:"192.168.0.0/18"`
	CloudGateway     string `default:"192.168.0.1"`
	CloudDNS         string `default:"8.8.4.4,8.8.8.8"`
	CloudOS          string `default:"Ubuntu Xenial"`
	CloudUser        string `default:"ubuntu"`
	CloudRAM         int    `default:"2048"`
	CloudDisk        int    `default:"1"`
	CloudScript      string `default:""`
	CloudConfigFiles string `default:"~/.s3cfg,~/.aws/credentials,~/.aws/config"`
}

Config holds the configuration options for jobqueue server and client

func ConfigLoad

func ConfigLoad(deployment string, useparentdir bool, logger log15.Logger) Config

ConfigLoad loads configuration settings from files and environment variables. Note, this function exits on error, since without config we can't do anything.

We prefer settings in config file in current dir (or the current dir's parent dir if the useparentdir option is true (used for test scripts)) over config file in home directory over config file in dir pointed to by WR_CONFIG_DIR.

The deployment argument determines if we read .wr_config.production.yml or .wr_config.development.yml; we always read .wr_config.yml. If the empty string is supplied, deployment is development if you're in the git repository directory. Otherwise, deployment is taken from the environment variable WR_DEPLOYMENT, and if that's not set it defaults to production.

Multiple of these files can be used to have settings that are common to multiple users and deployments, and settings specific to users or deployments.

Settings found in no file can be set with the environment variable WR_<setting name in caps>, eg. export WR_MANAGER_PORT="11301"

func DefaultConfig added in v0.6.0

func DefaultConfig(logger log15.Logger) Config

DefaultConfig works out the default config for when we need to be able to report the default before we know what deployment the user has actually chosen, ie. before we have a final config.

func (Config) IsDevelopment added in v0.10.0

func (c Config) IsDevelopment() bool

IsDevelopment tells you if we're in the development deployment.

func (Config) IsProduction added in v0.10.0

func (c Config) IsProduction() bool

IsProduction tells you if we're in the production deployment.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL