Documentation
¶
Index ¶
- Constants
- func LevelFilter() *logutils.LevelFilter
- func ValidateLevelFilter(minLevel logutils.LogLevel, filter *logutils.LevelFilter) bool
- type Addresses
- type AdvertiseAddrs
- type HTTPCodedError
- type HTTPServer
- func (s *HTTPServer) GetVolumePlugin(name string) (volume.VolumeInterface, error)
- func (s *HTTPServer) MetaSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- func (s *HTTPServer) Shutdown()
- func (s *HTTPServer) VolumeSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
- type LogHandler
- type LogWriter
- type MayaConfig
- type MayaServer
- type Ports
- type SyslogWrapper
Constants ¶
const ( // OpenEBS can be used as a persistence mechanism for // any type of compute instance AnyInstance = "any-compute" // TODO We shall see how to construct an Availability Zone AnyZone = "any-zone" )
const (
// ErrInvalidMethod is used if the HTTP method is not supported
ErrInvalidMethod = "Invalid method"
)
Variables ¶
This section is empty.
Functions ¶
func LevelFilter ¶
func LevelFilter() *logutils.LevelFilter
LevelFilter returns a LevelFilter that is configured with the log levels that we use.
func ValidateLevelFilter ¶
func ValidateLevelFilter(minLevel logutils.LogLevel, filter *logutils.LevelFilter) bool
ValidateLevelFilter verifies that the log levels within the filter are valid.
Types ¶
type Addresses ¶
type Addresses struct {
HTTP string `mapstructure:"http"`
}
Addresses encapsulates all of the addresses we bind to for various network services. Everything is optional and defaults to BindAddr.
type AdvertiseAddrs ¶
type AdvertiseAddrs struct {
HTTP string `mapstructure:"http"`
}
AdvertiseAddrs is used to control the addresses we advertise out for different network services. All are optional and default to BindAddr and their default Port.
func (*AdvertiseAddrs) Merge ¶
func (a *AdvertiseAddrs) Merge(b *AdvertiseAddrs) *AdvertiseAddrs
Merge merges two advertise addrs configs together.
type HTTPCodedError ¶
HTTPCodedError is used to provide the HTTP error code
func CodedError ¶
func CodedError(c int, s string) HTTPCodedError
type HTTPServer ¶
type HTTPServer struct {
// contains filtered or unexported fields
}
HTTPServer is used to wrap Maya server and expose it over an HTTP interface
func NewHTTPServer ¶
func NewHTTPServer(maya *MayaServer, config *MayaConfig, logOutput io.Writer) (*HTTPServer, error)
NewHTTPServer starts new HTTP server over Maya server
func (*HTTPServer) GetVolumePlugin ¶
func (s *HTTPServer) GetVolumePlugin(name string) (volume.VolumeInterface, error)
GetVolumePlugin is a pass through function that provides a particular volume plugin
func (*HTTPServer) MetaSpecificRequest ¶
func (s *HTTPServer) MetaSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
func (*HTTPServer) Shutdown ¶
func (s *HTTPServer) Shutdown()
Shutdown is used to shutdown the HTTP server
func (*HTTPServer) VolumeSpecificRequest ¶
func (s *HTTPServer) VolumeSpecificRequest(resp http.ResponseWriter, req *http.Request) (interface{}, error)
VolumeSpecificRequest is a http handler implementation. The URL path is parsed to match specific implementations. TODO
Should it return specific types ?
type LogHandler ¶
type LogHandler interface {
HandleLog(string)
}
LogHandler interface is used for clients that want to subscribe to logs, for example to stream them over an IPC mechanism
type LogWriter ¶
LogWriter implements io.Writer so it can be used as a log sink. It maintains a circular buffer of logs, and a set of handlers to which it can stream the logs to.
func NewLogWriter ¶
NewLogWriter creates a logWriter with the given buffer capacity
func (*LogWriter) DeregisterHandler ¶
func (l *LogWriter) DeregisterHandler(lh LogHandler)
DeregisterHandler removes a LogHandler and prevents more invocations
func (*LogWriter) RegisterHandler ¶
func (l *LogWriter) RegisterHandler(lh LogHandler)
RegisterHandler adds a log handler to receive logs, and sends the last buffered logs to the handler
type MayaConfig ¶
type MayaConfig struct {
// Region is the region this Maya server is supposed to deal in.
// Defaults to global.
Region string `mapstructure:"region"`
// Datacenter is the datacenter this Maya server is supposed to deal in.
// Defaults to dc1
Datacenter string `mapstructure:"datacenter"`
// NodeName is the name we register as. Defaults to hostname.
NodeName string `mapstructure:"name"`
// DataDir is the directory to store Maya server's state in
DataDir string `mapstructure:"data_dir"`
// LogLevel is the level of the logs to putout
LogLevel string `mapstructure:"log_level"`
// BindAddr is the address on which maya's services will
// be bound. If not specified, this defaults to 127.0.0.1.
BindAddr string `mapstructure:"bind_addr"`
// EnableDebug is used to enable debugging HTTP endpoints
EnableDebug bool `mapstructure:"enable_debug"`
// Mayaserver can make use of various providers e.g. Nomad,
// k8s etc
ServiceProvider string `mapstructure:"service_provider"`
// Ports is used to control the network ports we bind to.
Ports *Ports `mapstructure:"ports"`
// Addresses is used to override the network addresses we bind to.
//
// Use normalizedAddrs if you need the host+port to bind to.
Addresses *Addresses `mapstructure:"addresses"`
// AdvertiseAddrs is used to control the addresses we advertise.
AdvertiseAddrs *AdvertiseAddrs `mapstructure:"advertise"`
// LeaveOnInt is used to gracefully leave on the interrupt signal
LeaveOnInt bool `mapstructure:"leave_on_interrupt"`
// LeaveOnTerm is used to gracefully leave on the terminate signal
LeaveOnTerm bool `mapstructure:"leave_on_terminate"`
// EnableSyslog is used to enable sending logs to syslog
EnableSyslog bool `mapstructure:"enable_syslog"`
// SyslogFacility is used to control the syslog facility used.
SyslogFacility string `mapstructure:"syslog_facility"`
// Version information is set at compilation time
Revision string
Version string
VersionPrerelease string
// List of config files that have been loaded (in order)
Files []string `mapstructure:"-"`
// HTTPAPIResponseHeaders allows users to configure the Nomad http agent to
// set arbritrary headers on API responses
HTTPAPIResponseHeaders map[string]string `mapstructure:"http_api_response_headers"`
// contains filtered or unexported fields
}
MayaConfig is the configuration for Maya server.
func DefaultMayaConfig ¶
func DefaultMayaConfig() *MayaConfig
DefaultMayaConfig is a the baseline configuration for Maya server
func LoadMayaConfig ¶
func LoadMayaConfig(path string) (*MayaConfig, error)
LoadMayaConfig loads the configuration at the given path, regardless if its a file or directory.
func LoadMayaConfigDir ¶
func LoadMayaConfigDir(dir string) (*MayaConfig, error)
LoadMayaConfigDir loads all the configurations in the given directory in alphabetical order.
func ParseMayaConfig ¶
func ParseMayaConfig(r io.Reader) (*MayaConfig, error)
ParseMayaConfig parses the config from the given io.Reader.
Due to current internal limitations, the entire contents of the io.Reader will be copied into memory first before parsing.
func ParseMayaConfigFile ¶
func ParseMayaConfigFile(path string) (*MayaConfig, error)
ParseMayaConfigFile parses the given path as a config file.
func (*MayaConfig) Listener ¶
Listener can be used to get a new listener using a custom bind address. If the bind provided address is empty, the BindAddr is used instead.
func (*MayaConfig) Merge ¶
func (mc *MayaConfig) Merge(b *MayaConfig) *MayaConfig
Merge merges two configurations & returns a new one.
func (*MayaConfig) NormalizeAddrs ¶
func (mc *MayaConfig) NormalizeAddrs() error
NormalizeAddrs normalizes Addresses and AdvertiseAddrs to always be initialized and have sane defaults.
type MayaServer ¶
type MayaServer struct {
// contains filtered or unexported fields
}
MayaServer is a long running stateless daemon that runs at openebs maya master(s)
func NewMayaServer ¶
func NewMayaServer(config *MayaConfig, logOutput io.Writer) (*MayaServer, error)
NewMayaServer is used to create a new maya server with the given configuration
func (*MayaServer) BootstrapPlugins ¶
func (ms *MayaServer) BootstrapPlugins() error
TODO Create a Bootstrap interface that facilitates initialization Create another Bootstraped interface that provides the initialized instances Perhaps at lib/bootstrap MayaServer struct will make use of above interfaces & hence specialized structs that cater to bootstraping & bootstraped features.
NOTE:
The current implementation is tightly coupled & cannot be unit tested.
func (*MayaServer) GetVolumePlugin ¶
func (ms *MayaServer) GetVolumePlugin(name string) (volume.VolumeInterface, error)
GetVolumePlugin is an accessor that fetches a volume.VolumeInterface instance The volume.VolumeInterface should have been initialized earlier.
func (*MayaServer) Shutdown ¶
func (ms *MayaServer) Shutdown() error
Shutdown is used to terminate MayaServer.
type Ports ¶
type Ports struct {
HTTP int `mapstructure:"http"`
}
Ports encapsulates the various ports we bind to for network services. If any are not specified then the defaults are used instead.
type SyslogWrapper ¶
type SyslogWrapper struct {
L gsyslog.Syslogger
Filt *logutils.LevelFilter
}
SyslogWrapper is used to cleaup log messages before writing them to a Syslogger. Implements the io.Writer interface.