config

package
v0.0.56 Latest Latest
Warning

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

Go to latest
Published: Sep 17, 2020 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Package config providers configuration type and load configuration logic

Index

Constants

View Source
const (
	GOB compressAlgorithm = 1 + iota
	GZIP
	LZ4
	ZSTD
)

Variables

This section is empty.

Functions

func CompressAlgorithm

func CompressAlgorithm(ca string) compressAlgorithm

func GetActualValue

func GetActualValue(val string) (res string)

GetActualValue returns the environment variable value if the val has prefix and suffix "_", if actual value start with file://{path} the return value will read from file otherwise the val will directly return.

func GetActualValues

func GetActualValues(vals []string) []string

func Read

func Read(path string, cfg interface{}) error

New returns config struct or error when decode the configuration file to actually *Config struct.

func ToRawYaml

func ToRawYaml(data interface{}) string

Types

type AgentSidecar added in v0.0.38

type AgentSidecar struct {
	// Mode represents sidecar mode
	Mode string `yaml:"mode" json:"mode"`

	// WatchDir represents watch target directory for backup
	WatchDir string `yaml:"watch_dir" json:"watch_dir"`

	// WatchEnabled represent auto backup triggered by file changes is enabled or not
	WatchEnabled bool `yaml:"watch_enabled" json:"watch_enabled"`

	// AutoBackupEnabled represent auto backup triggered by timer is enabled or not
	AutoBackupEnabled bool `yaml:"auto_backup_enabled" json:"auto_backup_enabled"`

	// AutoBackupDuration represent checking loop duration for auto backup execution
	AutoBackupDuration string `yaml:"auto_backup_duration" json:"auto_backup_duration"`

	// PostStopTimeout represent timeout duration for file changing during post stop
	PostStopTimeout string `yaml:"post_stop_timeout" json:"post_stop_timeout"`

	// Filename represent backup filename
	Filename string `yaml:"filename" json:"filename"`

	// FilenameSuffix represent suffix of backup filename
	FilenameSuffix string `yaml:"filename_suffix" json:"filename_suffix"`

	// BlobStorage represent blob storage configurations
	BlobStorage *Blob `yaml:"blob_storage" json:"blob_storage"`

	// Compress represent compression configurations
	Compress *CompressCore `yaml:"compress" json:"compress"`

	// RestoreBackoffEnabled represent backoff enabled or not
	RestoreBackoffEnabled bool `yaml:"restore_backoff_enabled" json:"restore_backoff_enabled"`

	// RestoreBackoff represent backoff configurations for restoring process
	RestoreBackoff *Backoff `yaml:"restore_backoff" json:"restore_backoff"`

	// Client represent HTTP client configurations
	Client *Client `yaml:"client" json:"client"`
}

func (*AgentSidecar) Bind added in v0.0.38

func (s *AgentSidecar) Bind() *AgentSidecar

type Backoff

type Backoff struct {
	InitialDuration  string  `json:"initial_duration" yaml:"initial_duration"`
	BackoffTimeLimit string  `json:"backoff_time_limit" yaml:"backoff_time_limit"`
	MaximumDuration  string  `json:"maximum_duration" yaml:"maximum_duration"`
	JitterLimit      string  `json:"jitter_limit" yaml:"jitter_limit"`
	BackoffFactor    float64 `json:"backoff_factor" yaml:"backoff_factor"`
	RetryCount       int     `json:"retry_count" yaml:"retry_count"`
	EnableErrorLog   bool    `json:"enable_error_log" yaml:"enable_error_log"`
}

func (*Backoff) Bind

func (b *Backoff) Bind() *Backoff

func (*Backoff) Opts

func (b *Backoff) Opts() []backoff.Option

type BackupManager

type BackupManager struct {
	Host   string      `json:"host" yaml:"host"`
	Port   int         `json:"port" yaml:"port"`
	Client *GRPCClient `json:"client" yaml:"client"`
}

func (*BackupManager) Bind

func (b *BackupManager) Bind() *BackupManager

type Blob added in v0.0.38

type Blob struct {
	// StorageType represents blob storaget type
	StorageType string `json:"storage_type" yaml:"storage_type"`

	// Bucket represents bucket name
	Bucket string `json:"bucket" yaml:"bucket"`

	// S3 represents S3 config
	S3 *S3Config `json:"s3" yaml:"s3"`
}

func (*Blob) Bind added in v0.0.38

func (b *Blob) Bind() *Blob

type BlobStorageType added in v0.0.38

type BlobStorageType uint8
const (
	S3 BlobStorageType = 1 + iota
)

func AtoBST added in v0.0.38

func AtoBST(bst string) BlobStorageType

func (BlobStorageType) String added in v0.0.38

func (bst BlobStorageType) String() string

type CallOption

type CallOption struct {
	WaitForReady          bool `json:"wait_for_ready" yaml:"wait_for_ready"`
	MaxRetryRPCBufferSize int  `json:"max_retry_rpc_buffer_size" yaml:"max_retry_rpc_buffer_size"`
	MaxRecvMsgSize        int  `json:"max_recv_msg_size" yaml:"max_recv_msg_size"`
	MaxSendMsgSize        int  `json:"max_send_msg_size" yaml:"max_send_msg_size"`
}

func (*CallOption) Bind

func (c *CallOption) Bind() *CallOption

type Cassandra

type Cassandra struct {
	Hosts             []string `json:"hosts" yaml:"hosts"`
	CQLVersion        string   `json:"cql_version" yaml:"cql_version"`
	ProtoVersion      int      `json:"proto_version" yaml:"proto_version"`
	Timeout           string   `json:"timeout" yaml:"timeout"`
	ConnectTimeout    string   `json:"connect_timeout" yaml:"connect_timeout"`
	Port              int      `json:"port" yaml:"port"`
	Keyspace          string   `json:"keyspace" yaml:"keyspace"`
	NumConns          int      `json:"num_conns" yaml:"num_conns"`
	Consistency       string   `json:"consistency" yaml:"consistency"`
	SerialConsistency string   `json:"serial_consistency" yaml:"serial_consistency"`

	Username string `json:"username" yaml:"username"`
	Password string `json:"password" yaml:"password"`

	PoolConfig         *PoolConfig         `json:"pool_config" yaml:"pool_config"`
	RetryPolicy        *RetryPolicy        `json:"retry_policy" yaml:"retry_policy"`
	ReconnectionPolicy *ReconnectionPolicy `json:"reconnection_policy" yaml:"reconnection_policy"`
	HostFilter         *HostFilter         `json:"host_filter" yaml:"host_filter"`

	SocketKeepalive          string `json:"socket_keepalive" yaml:"socket_keepalive"`
	MaxPreparedStmts         int    `json:"max_prepared_stmts" yaml:"max_prepared_stmts"`
	MaxRoutingKeyInfo        int    `json:"max_routing_key_info" yaml:"max_routing_key_info"`
	PageSize                 int    `json:"page_size" yaml:"page_size"`
	TLS                      *TLS   `json:"tls" yaml:"tls"`
	TCP                      *TCP   `json:"tcp" yaml:"tcp"`
	EnableHostVerification   bool   `json:"enable_host_verification" yaml:"enable_host_verification"`
	DefaultTimestamp         bool   `json:"default_timestamp" yaml:"default_timestamp"`
	ReconnectInterval        string `json:"reconnect_interval" yaml:"reconnect_interval"`
	MaxWaitSchemaAgreement   string `json:"max_wait_schema_agreement" yaml:"max_wait_schema_agreement"`
	IgnorePeerAddr           bool   `json:"ignore_peer_addr" yaml:"ignore_peer_addr"`
	DisableInitialHostLookup bool   `json:"disable_initial_host_lookup" yaml:"disable_initial_host_lookup"`
	DisableNodeStatusEvents  bool   `json:"disable_node_status_events" yaml:"disable_node_status_events"`
	DisableTopologyEvents    bool   `json:"disable_topology_events" yaml:"disable_topology_events"`
	DisableSchemaEvents      bool   `json:"disable_schema_events" yaml:"disable_schema_events"`
	DisableSkipMetadata      bool   `json:"disable_skip_metadata" yaml:"disable_skip_metadata"`
	DefaultIdempotence       bool   `json:"default_idempotence" yaml:"default_idempotence"`
	WriteCoalesceWaitTime    string `json:"write_coalesce_wait_time" yaml:"write_coalesce_wait_time"`

	// meta
	KVTable string `json:"kv_table" yaml:"kv_table"`
	VKTable string `json:"vk_table" yaml:"vk_table"`

	// backup manager
	MetaTable string `json:"meta_table" yaml:"meta_table"`
}

func (*Cassandra) Bind

func (c *Cassandra) Bind() *Cassandra

func (*Cassandra) Opts

func (cfg *Cassandra) Opts() (opts []cassandra.Option, err error)

type Client

type Client struct {
	TCP       *TCP       `json:"tcp" yaml:"tcp"`
	Transport *Transport `json:"transport" yaml:"transport"`
}

func (*Client) Bind

func (c *Client) Bind() *Client

type Collector added in v0.0.19

type Collector struct {
	Duration string   `json:"duration" yaml:"duration"`
	Metrics  *Metrics `json:"metrics" yaml:"metrics"`
}

func (*Collector) Bind added in v0.0.42

func (c *Collector) Bind() *Collector

type CompressCore added in v0.0.38

type CompressCore struct {
	// CompressorAlgorithm represents compression algorithm type
	CompressAlgorithm string `json:"compress_algorithm" yaml:"compress_algorithm"`

	// CompressionLevel represents compression level
	CompressionLevel int `json:"compression_level" yaml:"compression_level"`
}

func (*CompressCore) Bind added in v0.0.38

func (c *CompressCore) Bind() *CompressCore

type Compressor

type Compressor struct {
	CompressCore `json:",inline" yaml:",inline"`

	// ConcurrentLimit represents limitation of compression worker concurrency
	ConcurrentLimit int `json:"concurrent_limit" yaml:"concurrent_limit"`

	// QueueCheckDuration represents duration of queue daemon block
	QueueCheckDuration string `json:"queue_check_duration" yaml:"queue_check_duration"`
}

func (*Compressor) Bind

func (c *Compressor) Bind() *Compressor

type CompressorRegisterer added in v0.0.28

type CompressorRegisterer struct {
	// ConcurrentLimit represents limitation of worker
	ConcurrentLimit int `json:"concurrent_limit" yaml:"concurrent_limit"`

	// QueueCheckDuration represents duration of queue daemon block
	QueueCheckDuration string `json:"queue_check_duration" yaml:"queue_check_duration"`

	// Compressor represents gRPC client config of compressor client (for forwarding use)
	Compressor *BackupManager `json:"compressor" yaml:"compressor"`
}

func (*CompressorRegisterer) Bind added in v0.0.28

type ConnectionPool added in v0.0.27

type ConnectionPool struct {
	ResolveDNS           bool   `json:"enable_dns_resolver" yaml:"enable_dns_resolver"`
	EnableRebalance      bool   `json:"enable_rebalance" yaml:"enable_rebalance"`
	RebalanceDuration    string `json:"rebalance_duration" yaml:"rebalance_duration"`
	Size                 int    `json:"size" yaml:"size"`
	OldConnCloseDuration string `json:"old_conn_close_duration" yaml:"old_conn_close_duration"`
}

type DNS

type DNS struct {
	CacheEnabled    bool   `yaml:"cache_enabled" json:"cache_enabled"`
	RefreshDuration string `yaml:"refresh_duration" json:"refresh_duration"`
	CacheExpiration string `yaml:"cache_expiration" json:"cache_expiration"`
}

func (*DNS) Bind

func (d *DNS) Bind() *DNS

type Debug

type Debug struct {
	// Profile represent profiling the server
	Profile struct {
		Enable bool    `yaml:"enable" json:"enable"`
		Server *Server `yaml:"server" json:"server"`
	} `yaml:"profile" json:"profile"`

	// Log represent the server enable debug log or not.
	Log struct {
		Level string `yaml:"level" json:"level"`
		Mode  string `yaml:"mode" json:"mode"`
	} `yaml:"log" json:"log"`
}

func (*Debug) Bind

func (d *Debug) Bind() *Debug

type DialOption

type DialOption struct {
	WriteBufferSize             int                  `json:"write_buffer_size" yaml:"write_buffer_size"`
	ReadBufferSize              int                  `json:"read_buffer_size" yaml:"read_buffer_size"`
	InitialWindowSize           int                  `json:"initial_window_size" yaml:"initial_window_size"`
	InitialConnectionWindowSize int                  `json:"initial_connection_window_size" yaml:"initial_connection_window_size"`
	MaxMsgSize                  int                  `json:"max_msg_size" yaml:"max_msg_size"`
	MaxBackoffDelay             string               `json:"max_backoff_delay" yaml:"max_backoff_delay"`
	EnableBackoff               bool                 `json:"enable_backoff" yaml:"enable_backoff"`
	Insecure                    bool                 `json:"insecure" yaml:"insecure"`
	Timeout                     string               `json:"timeout" yaml:"timeout"`
	TCP                         *TCP                 `json:"tcp" yaml:"tcp"`
	KeepAlive                   *GRPCClientKeepalive `json:"keep_alive" yaml:"keep_alive"`
}

func (*DialOption) Bind

func (d *DialOption) Bind() *DialOption

type Dialer

type Dialer struct {
	Timeout          string `yaml:"timeout" json:"timeout"`
	KeepAlive        string `yaml:"keep_alive" json:"keep_alive"`
	DualStackEnabled bool   `yaml:"dual_stack_enabled" json:"dual_stack_enabled"`
}

func (*Dialer) Bind

func (d *Dialer) Bind() *Dialer

type Discoverer

type Discoverer struct {
	Name              string `json:"name" yaml:"name"`
	Namespace         string `json:"namespace" yaml:"namespace"`
	DiscoveryDuration string `json:"discovery_duration" yaml:"discovery_duration"`
}

func (*Discoverer) Bind

func (d *Discoverer) Bind() *Discoverer

type DiscovererClient added in v0.0.5

type DiscovererClient struct {
	Host        string      `json:"host" yaml:"host"`
	Port        int         `json:"port" yaml:"port"`
	Duration    string      `json:"duration" yaml:"duration"`
	Client      *GRPCClient `json:"discover_client" yaml:"discover_client"`
	AgentClient *GRPCClient `json:"agent_client" yaml:"agent_client"`
}

func (*DiscovererClient) Bind added in v0.0.5

type EgressFilter

type EgressFilter struct {
	Client *GRPCClient `json:"client" yaml:"client"`
}

func (*EgressFilter) Bind

func (e *EgressFilter) Bind() *EgressFilter

type GRPC

type GRPC struct {
	BidirectionalStreamConcurrency int            `json:"bidirectional_stream_concurrency" yaml:"bidirectional_stream_concurrency"`
	MaxReceiveMessageSize          int            `json:"max_receive_message_size" yaml:"max_receive_message_size"`
	MaxSendMessageSize             int            `json:"max_send_message_size" yaml:"max_send_message_size"`
	InitialWindowSize              int            `json:"initial_window_size" yaml:"initial_window_size"`
	InitialConnWindowSize          int            `json:"initial_conn_window_size" yaml:"initial_conn_window_size"`
	Keepalive                      *GRPCKeepalive `json:"keepalive" yaml:"keepalive"`
	WriteBufferSize                int            `json:"write_buffer_size" yaml:"write_buffer_size"`
	ReadBufferSize                 int            `json:"read_buffer_size" yaml:"read_buffer_size"`
	ConnectionTimeout              string         `json:"connection_timeout" yaml:"connection_timeout"`
	MaxHeaderListSize              int            `json:"max_header_list_size" yaml:"max_header_list_size"`
	HeaderTableSize                int            `json:"header_table_size" yaml:"header_table_size"`
	Interceptors                   []string       `json:"interceptors" yaml:"interceptors"`
}

func (*GRPC) Bind

func (g *GRPC) Bind() *GRPC

type GRPCClient

type GRPCClient struct {
	Addrs               []string        `json:"addrs" yaml:"addrs"`
	HealthCheckDuration string          `json:"health_check_duration" yaml:"health_check_duration"`
	ConnectionPool      *ConnectionPool `json:"connection_pool" yaml:"connection_pool"`
	Backoff             *Backoff        `json:"backoff" yaml:"backoff"`
	CallOption          *CallOption     `json:"call_option" yaml:"call_option"`
	DialOption          *DialOption     `json:"dial_option" yaml:"dial_option"`
	TLS                 *TLS            `json:"tls" yaml:"tls"`
}

func (*GRPCClient) Bind

func (g *GRPCClient) Bind() *GRPCClient

func (*GRPCClient) Opts

func (g *GRPCClient) Opts() []grpc.Option

type GRPCClientKeepalive

type GRPCClientKeepalive struct {
	Time                string `json:"time" yaml:"time"`
	Timeout             string `json:"timeout" yaml:"timeout"`
	PermitWithoutStream bool   `json:"permit_without_stream" yaml:"permit_without_stream"`
}

func (*GRPCClientKeepalive) Bind

type GRPCKeepalive

type GRPCKeepalive struct {
	MaxConnIdle     string `json:"max_conn_idle" yaml:"max_conn_idle"`
	MaxConnAge      string `json:"max_conn_age" yaml:"max_conn_age"`
	MaxConnAgeGrace string `json:"max_conn_age_grace" yaml:"max_conn_age_grace"`
	Time            string `json:"time" yaml:"time"`
	Timeout         string `json:"timeout" yaml:"timeout"`
}

func (*GRPCKeepalive) Bind

func (k *GRPCKeepalive) Bind() *GRPCKeepalive

type Gateway

type Gateway struct {
	// AgentPort represent agent port number
	AgentPort int `json:"agent_port" yaml:"agent_port"`

	// AgentName represent agents meta_name for service discovery
	AgentName string `json:"agent_name" yaml:"agent_name"`

	// AgentNamespace represent agent namespace location
	AgentNamespace string `json:"agent_namespace" yaml:"agent_namespace"`

	// AgentDNS represent agents dns A record for service discovery
	AgentDNS string `json:"agent_dns" yaml:"agent_dns"`

	// NodeName represents node name
	NodeName string `json:"node_name" yaml:"node_name"`

	// IndexReplica represents index replication count
	IndexReplica int `json:"index_replica" yaml:"index_replica"`

	// Discoverer represent agent discoverer service configuration
	Discoverer *DiscovererClient `json:"discoverer" yaml:"discoverer"`

	// Meta represent meta data service configuration
	Meta *Meta `json:"meta" yaml:"meta"`

	// BackupManager represent backup manager configuration
	BackupManager *BackupManager `json:"backup" yaml:"backup"`

	// EgressFilter represents egress filter configuration
	EgressFilter *EgressFilter `json:"egress_filter" yaml:"egress_filter"`
}

func (*Gateway) Bind

func (g *Gateway) Bind() *Gateway

type GlobalConfig added in v0.0.2

type GlobalConfig struct {
	// Version represent configuration file version.
	Version string `json:"version" yaml:"version"`

	// TZ represent system time location .
	TZ string `json:"time_zone" yaml:"time_zone"`

	// Log represent log configuration.
	Logging *Logging `json:"logging,omitempty" yaml:"logging,omitempty"`
}

GlobalConfig represent a application setting data content (config.yaml).

func (*GlobalConfig) Bind added in v0.0.2

func (c *GlobalConfig) Bind() *GlobalConfig

func (*GlobalConfig) UnmarshalJSON added in v0.0.2

func (c *GlobalConfig) UnmarshalJSON(data []byte) (err error)

type HTTP

type HTTP struct {
	ShutdownDuration  string `json:"shutdown_duration" yaml:"shutdown_duration"`
	HandlerTimeout    string `json:"handler_timeout" yaml:"handler_timeout"`
	IdleTimeout       string `json:"idle_timeout" yaml:"idle_timeout"`
	ReadHeaderTimeout string `json:"read_header_timeout" yaml:"read_header_timeout"`
	ReadTimeout       string `json:"read_timeout" yaml:"read_timeout"`
	WriteTimeout      string `json:"write_timeout" yaml:"write_timeout"`
}

func (*HTTP) Bind

func (h *HTTP) Bind() *HTTP

type HostFilter added in v0.0.34

type HostFilter struct {
	Enabled    bool     `json:"enabled"`
	DataCenter string   `json:"data_center" yaml:"data_center"`
	WhiteList  []string `json:"white_list" yaml:"white_list"`
}

type Indexer added in v0.0.5

type Indexer struct {
	// AgentPort represent agent port number
	AgentPort int `json:"agent_port" yaml:"agent_port"`

	// AgentName represent agents meta_name for service discovery
	AgentName string `json:"agent_name" yaml:"agent_name"`

	// AgentNamespace represent agent namespace location
	AgentNamespace string `json:"agent_namespace" yaml:"agent_namespace"`

	// AgentDNS represent agents dns A record for service discovery
	AgentDNS string `json:"agent_dns" yaml:"agent_dns"`

	// Concurrency represents indexing concurrency
	Concurrency int `json:"concurrency" yaml:"concurrency"`

	// AutoIndexDurationLimit represents auto indexing duration limit
	AutoIndexDurationLimit string `yaml:"auto_index_duration_limit" json:"auto_index_duration_limit"`

	// AutoIndexCheckDuration represent checking loop duration about auto indexing execution
	AutoIndexCheckDuration string `yaml:"auto_index_check_duration" json:"auto_index_check_duration"`

	// AutoIndexLength represent minimum auto index length
	AutoIndexLength uint32 `yaml:"auto_index_length" json:"auto_index_length"`

	// CreationPoolSize represent create index batch pool size
	CreationPoolSize uint32 `yaml:"creation_pool_size" json:"creation_pool_size"`

	// NodeName represents node name
	NodeName string `json:"node_name" yaml:"node_name"`

	// Discoverer represent agent discoverer service configuration
	Discoverer *DiscovererClient `json:"discoverer" yaml:"discoverer"`
}

func (*Indexer) Bind added in v0.0.5

func (im *Indexer) Bind() *Indexer

type Jaeger added in v0.0.19

type Jaeger struct {
	Enabled bool `json:"enabled" yaml:"enabled"`

	CollectorEndpoint string `json:"collector_endpoint" yaml:"collector_endpoint"`
	AgentEndpoint     string `json:"agent_endpoint" yaml:"agent_endpoint"`

	Username string `json:"username" yaml:"username"`
	Password string `json:"password" yaml:"password"`

	ServiceName string `json:"service_name" yaml:"service_name"`

	BufferMaxCount int `json:"buffer_max_count" yaml:"buffer_max_count"`
}

type Logging added in v0.0.2

type Logging struct {
	Logger string `json:"logger" yaml:"logger"`
	Level  string `json:"level" yaml:"level"`
	Format string `json:"format" yaml:"format"`
}

Logging represents Logging configuration.

func (*Logging) Bind added in v0.0.2

func (l *Logging) Bind() *Logging

Bind returns Logging object whose every value is field value or envirionment value.

type Meta

type Meta struct {
	Host                      string      `json:"host" yaml:"host"`
	Port                      int         `json:"port" yaml:"port"`
	Client                    *GRPCClient `json:"client" yaml:"client"`
	EnableCache               bool        `json:"enable_cache" yaml:"enable_cache"`
	CacheExpiration           string      `json:"cache_expiration" yaml:"cache_expiration"`
	ExpiredCacheCheckDuration string      `json:"expired_cache_check_duration" yaml:"expired_cache_check_duration"`
}

func (*Meta) Bind

func (m *Meta) Bind() *Meta

type Metrics added in v0.0.19

type Metrics struct {
	EnableVersionInfo bool     `json:"enable_version_info" yaml:"enable_version_info"`
	VersionInfoLabels []string `json:"version_info_labels" yaml:"version_info_labels"`
	EnableMemory      bool     `json:"enable_memory" yaml:"enable_memory"`
	EnableGoroutine   bool     `json:"enable_goroutine" yaml:"enable_goroutine"`
	EnableCGO         bool     `json:"enable_cgo" yaml:"enable_cgo"`
}

type MySQL

type MySQL struct {
	DB                   string `json:"db" yaml:"db"`
	Host                 string `json:"host" yaml:"host"`
	Port                 int    `json:"port" yaml:"port"`
	User                 string `json:"user" yaml:"user"`
	Pass                 string `json:"pass" yaml:"pass"`
	Name                 string `json:"name" yaml:"name"`
	Charset              string `json:"charset" yaml:"charset"`
	Timezone             string `json:"timezone" yaml:"timezone"`
	InitialPingTimeLimit string `json:"initial_ping_time_limit" yaml:"initial_ping_time_limit"`
	InitialPingDuration  string `json:"initial_ping_duration" yaml:"initial_ping_duration"`
	ConnMaxLifeTime      string `json:"conn_max_life_time" yaml:"conn_max_life_time"`
	MaxOpenConns         int    `json:"max_open_conns" yaml:"max_open_conns"`
	MaxIdleConns         int    `json:"max_idle_conns" yaml:"max_idle_conns"`
	TLS                  *TLS   `json:"tls" yaml:"tls"`
	TCP                  *TCP   `json:"tcp" yaml:"tcp"`
}

MySQL represent the mysql configuration.

func (*MySQL) Bind

func (m *MySQL) Bind() *MySQL

Bind returns MySQL object whose some string value is filed value or environment value.

func (*MySQL) Opts added in v0.0.51

func (m *MySQL) Opts() ([]mysql.Option, error)

type NGT

type NGT struct {
	// IndexPath represent the ngt index file path
	IndexPath string `yaml:"index_path" json:"index_path"`

	// Dimension represent the ngt index dimension
	Dimension int `yaml:"dimension" json:"dimension"`

	// BulkInsertChunkSize represent the bulk insert chunk size
	BulkInsertChunkSize int `yaml:"bulk_insert_chunk_size" json:"bulk_insert_chunk_size"`

	// DistanceType represent the ngt index distance type
	DistanceType string `yaml:"distance_type" json:"distance_type"`

	// ObjectType represent the ngt index object type float or int
	ObjectType string `yaml:"object_type" json:"object_type"`

	// CreationEdgeSize represent the index edge count
	CreationEdgeSize int `yaml:"creation_edge_size" json:"creation_edge_size"`

	// SearchEdgeSize represent the search edge size
	SearchEdgeSize int `yaml:"search_edge_size" json:"search_edge_size"`

	// AutoIndexDurationLimit represents auto indexing duration limit
	AutoIndexDurationLimit string `yaml:"auto_index_duration_limit" json:"auto_index_duration_limit"`

	// AutoIndexCheckDuration represent checking loop duration about auto indexing execution
	AutoIndexCheckDuration string `yaml:"auto_index_check_duration" json:"auto_index_check_duration"`

	// AutoSaveIndexDuration represent checking loop duration about auto save index execution
	AutoSaveIndexDuration string `yaml:"auto_save_index_duration" json:"auto_save_index_duration"`

	// AutoIndexLength represent auto index length limit
	AutoIndexLength int `yaml:"auto_index_length" json:"auto_index_length"`

	// InitialDelayMaxDuration represent maximum duration for initial delay
	InitialDelayMaxDuration string `yaml:"initial_delay_max_duration" json:"initial_delay_max_duration"`

	// EnableInMemoryMode enables on memory ngt indexing mode
	EnableInMemoryMode bool `yaml:"enable_in_memory_mode" json:"enable_in_memory_mode"`

	// DefaultPoolSize represent default create index batch pool size
	DefaultPoolSize uint32 `yaml:"default_pool_size" json:"default_pool_size"`

	// DefaultRadius represent default radius used for search
	DefaultRadius float32 `yaml:"default_radius" json:"default_radius"`

	// DefaultEpsilon represent default epsilon used for search
	DefaultEpsilon float32 `yaml:"default_epsilon" json:"default_epsilon"`

	// MinLoadIndexTimeout represents minimum duration of load index timeout
	MinLoadIndexTimeout string `yaml:"min_load_index_timeout" json:"min_load_index_timeout"`

	// MaxLoadIndexTimeout represents maximum duration of load index timeout
	MaxLoadIndexTimeout string `yaml:"max_load_index_timeout" json:"max_load_index_timeout"`

	// LoadIndexTimeoutFactor represents a factor of load index timeout
	LoadIndexTimeoutFactor string `yaml:"load_index_timeout_factor" json:"load_index_timeout_factor"`

	// EnableProactiveGC enables more proactive GC call for reducing heap memory allocation
	EnableProactiveGC bool `yaml:"enable_proactive_gc" json:"enable_proactive_gc"`
}

NGT represent the ngt core configuration for server.

func (*NGT) Bind

func (n *NGT) Bind() *NGT

Bind returns NGT object whose some string value is filed value or environment value.

type Observability added in v0.0.19

type Observability struct {
	Enabled     bool         `json:"enabled" yaml:"enabled"`
	Collector   *Collector   `json:"collector" yaml:"collector"`
	Trace       *Trace       `json:"trace" yaml:"trace"`
	Prometheus  *Prometheus  `json:"prometheus" yaml:"prometheus"`
	Jaeger      *Jaeger      `json:"jaeger" yaml:"jaeger"`
	Stackdriver *Stackdriver `json:"stackdriver" yaml:"stackdriver"`
}

func (*Observability) Bind added in v0.0.19

func (o *Observability) Bind() *Observability

type PoolConfig

type PoolConfig struct {
	DataCenter               string `json:"data_center" yaml:"data_center"`
	DCAwareRouting           bool   `json:"dc_aware_routing" yaml:"dc_aware_routing"`
	NonLocalReplicasFallback bool   `json:"non_local_replicas_fallback" yaml:"non_local_replicas_fallback"`
	ShuffleReplicas          bool   `json:"shuffle_replicas" yaml:"shuffle_replicas"`
	TokenAwareHostPolicy     bool   `json:"token_aware_host_policy" yaml:"token_aware_host_policy"`
}

type Prometheus added in v0.0.19

type Prometheus struct {
	Enabled   bool   `json:"enabled" yaml:"enabled"`
	Endpoint  string `json:"endpoint" yaml:"endpoint"`
	Namespace string `json:"namespace" yaml:"namespace"`
}

type ReconnectionPolicy

type ReconnectionPolicy struct {
	MaxRetries      int    `json:"max_retries" yaml:"max_retries"`
	InitialInterval string `json:"initial_interval" yaml:"initial_interval"`
}

type Redis

type Redis struct {
	Addrs                []string `json:"addrs" yaml:"addrs"`
	DB                   int      `json:"db" yaml:"db"`
	DialTimeout          string   `json:"dial_timeout" yaml:"dial_timeout"`
	IdleCheckFrequency   string   `json:"idle_check_frequency" yaml:"idle_check_frequency"`
	IdleTimeout          string   `json:"idle_timeout" yaml:"idle_timeout"`
	InitialPingTimeLimit string   `json:"initial_ping_time_limit" yaml:"initial_ping_time_limit"`
	InitialPingDuration  string   `json:"initial_ping_duration" yaml:"initial_ping_duration"`
	KeyPref              string   `json:"key_pref" yaml:"key_pref"`
	MaxConnAge           string   `json:"max_conn_age" yaml:"max_conn_age"`
	MaxRedirects         int      `json:"max_redirects" yaml:"max_redirects"`
	MaxRetries           int      `json:"max_retries" yaml:"max_retries"`
	MaxRetryBackoff      string   `json:"max_retry_backoff" yaml:"max_retry_backoff"`
	MinIdleConns         int      `json:"min_idle_conns" yaml:"min_idle_conns"`
	MinRetryBackoff      string   `json:"min_retry_backoff" yaml:"min_retry_backoff"`
	Password             string   `json:"password" yaml:"password"`
	PoolSize             int      `json:"pool_size" yaml:"pool_size"`
	PoolTimeout          string   `json:"pool_timeout" yaml:"pool_timeout"`
	ReadOnly             bool     `json:"read_only" yaml:"read_only"`
	ReadTimeout          string   `json:"read_timeout" yaml:"read_timeout"`
	RouteByLatency       bool     `json:"route_by_latency" yaml:"route_by_latency"`
	RouteRandomly        bool     `json:"route_randomly" yaml:"route_randomly"`
	TLS                  *TLS     `json:"tls" yaml:"tls"`
	TCP                  *TCP     `json:"tcp" yaml:"tcp"`
	WriteTimeout         string   `json:"write_timeout" yaml:"write_timeout"`
	KVPrefix             string   `json:"kv_prefix" yaml:"kv_prefix"`
	VKPrefix             string   `json:"vk_prefix" yaml:"vk_prefix"`
	PrefixDelimiter      string   `json:"prefix_delimiter" yaml:"prefix_delimiter"`
}

func (*Redis) Bind

func (r *Redis) Bind() *Redis

func (*Redis) Opts added in v0.0.51

func (r *Redis) Opts() (opts []redis.Option, err error)

type RetryPolicy

type RetryPolicy struct {
	NumRetries  int    `json:"num_retries" yaml:"num_retries"`
	MinDuration string `json:"min_duration" yaml:"min_duration"`
	MaxDuration string `json:"max_duration" yaml:"max_duration"`
}

type RoundTripper

type RoundTripper struct {
	TLSHandshakeTimeout   string `yaml:"tls_handshake_timeout" json:"tls_handshake_timeout"`
	MaxIdleConns          int    `yaml:"max_idle_conns" json:"max_idle_conns"`
	MaxIdleConnsPerHost   int    `yaml:"max_idle_conns_per_host" json:"max_idle_conns_per_host"`
	MaxConnsPerHost       int    `yaml:"max_conns_per_host" json:"max_conns_per_host"`
	IdleConnTimeout       string `yaml:"idle_conn_timeout" json:"idle_conn_timeout"`
	ResponseHeaderTimeout string `yaml:"response_header_timeout" json:"response_header_timeout"`
	ExpectContinueTimeout string `yaml:"expect_continue_timeout" json:"expect_continue_timeout"`
	MaxResponseHeaderSize int64  `yaml:"max_response_header_size" json:"max_response_header_size"`
	WriteBufferSize       int64  `yaml:"write_buffer_size" json:"write_buffer_size"`
	ReadBufferSize        int64  `yaml:"read_buffer_size" json:"read_buffer_size"`
	ForceAttemptHTTP2     bool   `yaml:"force_attempt_http_2" json:"force_attempt_http_2"`
}

func (*RoundTripper) Bind

func (r *RoundTripper) Bind() *RoundTripper

type S3Config added in v0.0.38

type S3Config struct {
	Endpoint        string `json:"endpoint" yaml:"endpoint"`
	Region          string `json:"region" yaml:"region"`
	AccessKey       string `json:"access_key" yaml:"access_key"`
	SecretAccessKey string `json:"secret_access_key" yaml:"secret_access_key"`
	Token           string `json:"token" yaml:"token"`

	MaxRetries                 int  `json:"max_retries" yaml:"max_retries"`
	ForcePathStyle             bool `json:"force_path_style" yaml:"force_path_style"`
	UseAccelerate              bool `json:"use_accelerate" yaml:"use_accelerate"`
	UseARNRegion               bool `json:"use_arn_region" yaml:"use_arn_region"`
	UseDualStack               bool `json:"use_dual_stack" yaml:"use_dual_stack"`
	EnableSSL                  bool `json:"enable_ssl" yaml:"enable_ssl"`
	EnableParamValidation      bool `json:"enable_param_validation" yaml:"enable_param_validation"`
	Enable100Continue          bool `json:"enable_100_continue" yaml:"enable_100_continue"`
	EnableContentMD5Validation bool `json:"enable_content_md5_validation" yaml:"enable_content_md5_validation"`
	EnableEndpointDiscovery    bool `json:"enable_endpoint_discovery" yaml:"enable_endpoint_discovery"`
	EnableEndpointHostPrefix   bool `json:"enable_endpoint_host_prefix" yaml:"enable_endpoint_host_prefix"`

	MaxPartSize  string `json:"max_part_size" yaml:"max_part_size"`
	MaxChunkSize string `json:"max_chunk_size" yaml:"max_chunk_size"`
}

func (*S3Config) Bind added in v0.0.38

func (s *S3Config) Bind() *S3Config

type Server

type Server struct {
	Name          string `json:"name" yaml:"name"`
	Host          string `json:"host" yaml:"host"`
	Port          uint   `json:"port" yaml:"port"`
	Mode          string `json:"mode" yaml:"mode"` // gRPC, REST, GraphQL
	ProbeWaitTime string `json:"probe_wait_time" yaml:"probe_wait_time"`
	HTTP          *HTTP  `json:"http" yaml:"http"`
	GRPC          *GRPC  `json:"grpc" yaml:"grpc"`
	Restart       bool   `json:"restart" yaml:"restart"`
}

func (*Server) Bind

func (s *Server) Bind() *Server

func (*Server) Opts

func (s *Server) Opts() []server.Option

type Servers

type Servers struct {
	// Server represent server configuration.
	Servers []*Server `json:"servers" yaml:"servers"`

	// HealthCheckServers represent health check server configuration
	HealthCheckServers []*Server `json:"health_check_servers" yaml:"health_check_servers"`

	// MetricsServers represent metrics exporter server such as prometheus or opentelemetly or golang's pprof server
	MetricsServers []*Server `json:"metrics_servers" yaml:"metrics_servers"`

	// StartUpStrategy represent starting order of server name
	StartUpStrategy []string `json:"startup_strategy" yaml:"startup_strategy"`
	// ShutdownStrategy represent shutdonw order of server name
	ShutdownStrategy []string `json:"shutdown_strategy" yaml:"shutdown_strategy"`

	// FullShutdownDuration represent summary duration of shutdown time
	FullShutdownDuration string `json:"full_shutdown_duration" yaml:"full_shutdown_duration"`

	// TLS represent server tls configuration.
	TLS *TLS `json:"tls" yaml:"tls"`
}

func (*Servers) Bind

func (s *Servers) Bind() *Servers

func (*Servers) GetGRPCStreamConcurrency added in v0.0.5

func (s *Servers) GetGRPCStreamConcurrency() (c int)

type Stackdriver added in v0.0.42

type Stackdriver struct {
	ProjectID string `json:"project_id" yaml:"project_id"`

	Client *StackdriverClient `json:"client" yaml:"client"`

	Exporter *StackdriverExporter `json:"exporter" yaml:"exporter"`
	Profiler *StackdriverProfiler `json:"profiler" yaml:"profiler"`
}

func (*Stackdriver) Bind added in v0.0.42

func (sd *Stackdriver) Bind() *Stackdriver

type StackdriverClient added in v0.0.42

type StackdriverClient struct {
	APIKey                string   `json:"api_key" yaml:"api_key"`
	Audiences             []string `json:"audiences" yaml:"audiences"`
	CredentialsFile       string   `json:"credentials_file" yaml:"credentials_file"`
	CredentialsJSON       string   `json:"credentials_json" yaml:"credentials_json"`
	Endpoint              string   `json:"endpoint" yaml:"endpoint"`
	QuotaProject          string   `json:"quota_project" yaml:"quota_project"`
	RequestReason         string   `json:"request_reason" yaml:"request_reason"`
	Scopes                []string `json:"scopes" yaml:"scopes"`
	UserAgent             string   `json:"user_agent" yaml:"user_agent"`
	TelemetryEnabled      bool     `json:"telemetry_enabled" yaml:"telemetry_enabled"`
	AuthenticationEnabled bool     `json:"authentication_enabled" yaml:"authentication_enabled"`
}

type StackdriverExporter added in v0.0.42

type StackdriverExporter struct {
	MonitoringEnabled bool `json:"monitoring_enabled" yaml:"monitoring_enabled"`
	TracingEnabled    bool `json:"tracing_enabled" yaml:"tracing_enabled"`

	Location                 string `json:"location" yaml:"location"`
	BundleDelayThreshold     string `json:"bundle_delay_threshold" yaml:"bundle_delay_threshold"`
	BundleCountThreshold     int    `json:"bundle_count_threshold" yaml:"bundle_count_threshold"`
	TraceSpansBufferMaxBytes int    `json:"trace_spans_buffer_max_bytes" yaml:"trace_spans_buffer_max_bytes"`

	MetricPrefix string `json:"metric_prefix" yaml:"metric_prefix"`

	SkipCMD           bool   `json:"skip_cmd" yaml:"skip_cmd"`
	Timeout           string `json:"timeout" yaml:"timeout"`
	ReportingInterval string `json:"reporting_interval" yaml:"reporting_interval"`
	NumberOfWorkers   int    `json:"number_of_workers" yaml:"number_of_workers"`
}

type StackdriverProfiler added in v0.0.42

type StackdriverProfiler struct {
	Enabled        bool   `json:"enabled" yaml:"enabled"`
	Service        string `json:"service" yaml:"service"`
	ServiceVersion string `json:"service_version" yaml:"service_version"`
	DebugLogging   bool   `json:"debug_logging" yaml:"debug_logging"`

	MutexProfiling     bool `json:"mutex_profiling" yaml:"mutex_profiling"`
	CPUProfiling       bool `json:"cpu_profiling" yaml:"cpu_profiling"`
	AllocProfiling     bool `json:"alloc_profiling" yaml:"alloc_profiling"`
	HeapProfiling      bool `json:"heap_profiling" yaml:"heap_profiling"`
	GoroutineProfiling bool `json:"goroutine_profiling" yaml:"goroutine_profiling"`

	AllocForceGC bool `json:"alloc_force_gc" yaml:"alloc_force_gc"`

	APIAddr string `json:"api_addr" yaml:"api_addr"`

	Instance string `json:"instance" yaml:"instance"`
	Zone     string `json:"zone" yaml:"zone"`
}

type TCP

type TCP struct {
	DNS    *DNS    `yaml:"dns" json:"dns"`
	Dialer *Dialer `yaml:"dialer" json:"dialer"`
	TLS    *TLS    `yaml:"tls" json:"tls"`
}

TCP represent the TCP configuration for server.

func (*TCP) Bind

func (t *TCP) Bind() *TCP

func (*TCP) Opts

func (t *TCP) Opts() []tcp.DialerOption

type TLS

type TLS struct {
	// Enable represent the server enable TLS or not.
	Enabled bool `yaml:"enabled" json:"enabled"`

	// Cert represent the certificate environment variable key used to start server.
	Cert string `yaml:"cert" json:"cert"`

	// Key represent the private key environment variable key used to start server.
	Key string `yaml:"key" json:"key"`

	// CA represent the CA certificate environment variable key used to start server.
	CA string `yaml:"ca" json:"ca"`
}

TLS represent the TLS configuration for server.

func (*TLS) Bind

func (t *TLS) Bind() *TLS

Bind returns TLS object whose every value except Enabled is field value of environment value.

func (*TLS) Opts

func (t *TLS) Opts() []tls.Option

Opts returns []tls.Option object whose every value is field value.

type Trace added in v0.0.19

type Trace struct {
	Enabled      bool    `json:"enabled" yaml:"enabled"`
	SamplingRate float64 `json:"sampling_rate" yaml:"sampling_rate"`
}

type Transport

type Transport struct {
	RoundTripper *RoundTripper `yaml:"round_tripper" json:"round_tripper"`
	Backoff      *Backoff      `yaml:"backoff" json:"backoff"`
}

TCP represent the TCP configuration for server.

func (*Transport) Bind

func (t *Transport) Bind() *Transport

Jump to

Keyboard shortcuts

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