Documentation
¶
Overview ¶
osdconfig is a package to work with distributed config parameters
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AWSConfig ¶
type AWSConfig struct {
AccessKeyId string `json:"aws_access_key_id,omitempty" enable:"true" hidden:"false" usage:"AWS access key ID"`
SecretAccessKey string `json:"aws_secret_access_key,omitempty" enable:"true" hidden:"false" usage:"AWS secret access key"`
SecretTokenKey string `json:"aws_secret_token_key,omitempty" enable:"true" hidden:"false" usage:"AWS secret token key"`
Cmk string `json:"aws_cmk,omitempty" enable:"true" hidden:"false" usage:"AWS CMK"`
Region string `json:"aws_region,omitempty" enable:"true" hidden:"false" usage:"AWS region"`
}
AWS configuration parameters struct swagger:model
type CallbackClusterConfigFunc ¶
type CallbackClusterConfigFunc func(config *ClusterConfig) error
type for callback func for cluster
type CallbackNodeConfigFunc ¶
type CallbackNodeConfigFunc func(config *NodeConfig) error
type ClusterConfig ¶
type ClusterConfig struct {
Description string `json:"description,omitempty" enable:"true" hidden:"false" usage:"Cluster description"`
Mode string `json:"mode,omitempty" enable:"true" hidden:"false" usage:"Mode for cluster"`
Version string `json:"version,omitempty" enable:"true" hidden:"false" usage:"Version info for cluster"`
Created time.Time `json:"created,omitempty" enable:"true" hidden:"false" usage:"Creation info for cluster"`
ClusterId string `json:"cluster_id,omitempty" enable:"true" hidden:"false" usage:"Cluster ID info"`
Domain string `json:"domain,omitempty" enable:"true" hidden:"false" usage:"usage to be added"`
Secrets *SecretsConfig `json:"secrets,omitempty" enable:"true" hidden:"false" usage:"usage to be added" description:"description to be added"`
Kvdb *KvdbConfig `json:"kvdb,omitempty" enable:"false" hidden:"false" usage:"usage to be added" description:"description to be added"`
Private interface{} `json:"private,omitempty" enable:"true" hidden:"false" usage:"usage to be added"`
}
ClusterConfig is a cluster level config parameter struct swagger:model
func (*ClusterConfig) Init ¶
func (conf *ClusterConfig) Init() *ClusterConfig
type ConfigCaller ¶
type ConfigCaller interface {
// GetClusterConf fetches cluster configuration data from a backend such as kvdb
GetClusterConf() (*ClusterConfig, error)
// GetNodeConf fetches node configuration data using node id
GetNodeConf(nodeID string) (*NodeConfig, error)
// EnumerateNodeConf fetches data for all nodes
EnumerateNodeConf() (*NodesConfig, error)
// SetClusterConf pushes cluster configuration data to the backend
// It is assumed that the backend will notify the implementor of this interface
// when a change is triggered
SetClusterConf(config *ClusterConfig) error
// SetNodeConf pushes node configuration data to the backend
// It is assumed that the backend will notify the implementor of this interface
// when a change is triggered
SetNodeConf(config *NodeConfig) error
// DeleteNodeConf removes node config for a particular node
DeleteNodeConf(nodeID string) error
}
ConfigCaller interface defines the setters/getters for osdconfig
type ConfigManager ¶
type ConfigManager interface {
ConfigCaller
ConfigWatcher
}
ConfigManager is the overall osdconfig interface including callers and watchers
func NewManager ¶
func NewManager(kv kvdb.Kvdb) (ConfigManager, error)
NewManager can be used to instantiate ConfigManager Users of this function are expected to manage the execution via context github.com/sirupsen/logrus package is used for logging internally
type ConfigWatcher ¶
type ConfigWatcher interface {
// WatchCluster registers a user defined function as callback watching for changes
// in the cluster configuration
WatchCluster(name string, cb func(config *ClusterConfig) error) error
// WatchNode registers a user defined function as callback watching for changes
// in the node configuration
WatchNode(name string, cb func(config *NodeConfig) error) error
}
ConfigWatcher defines watches on cluster and nodes
type GeoConfig ¶
type GeoConfig struct {
Rack string `json:"rack,omitempty" enable:"true" hidden:"false" usage:"Rack info"`
Zone string `json:"zone,omitempty" enable:"true" hidden:"false" usage:"Zone info"`
Region string `json:"region,omitempty" enable:"true" hidden:"false" usage:"Region info"`
}
GeoConfig holds geographic information
type KvdbConfig ¶
type KvdbConfig struct {
Name string `json:"name,omitempty" enable:"true" hidden:"false" usage:"Name for kvdb"`
Username string `json:"username,omitempty" enable:"true" hidden:"false" usage:"Username for kvdb"`
Password string `json:"password,omitempty" enable:"true" hidden:"false" usage:"Passwd for kvdb"`
CAFile string `json:"ca_file,omitempty" enable:"true" hidden:"false" usage:"CA file for kvdb"`
CertFile string `json:"cert_file,omitempty" enable:"true" hidden:"false" usage:"Cert file for kvdb"`
CertKeyFile string `json:"cert_key_file,omitempty" enable:"true" hidden:"false" usage:"Cert key file for kvdb"`
TrustedCAFile string `json:"trusted_ca_file,omitempty" enable:"true" hidden:"false" usage:"Trusted CA file for kvdb"`
ClientCertAuth string `json:"client_cert_auth,omitempty" enable:"true" hidden:"false" usage:"Client cert auth"`
AclToken string `json:"acl_token,omitempty" enable:"true" hidden:"false" usage:"ACL token"`
Discovery []string `json:"discovery,omitempty" enable:"true" hidden:"false" usage:"List of etcd endpoints"`
}
KvdbConfig stores parameters defining kvdb configuration swagger:model
func (*KvdbConfig) Init ¶
func (conf *KvdbConfig) Init() *KvdbConfig
type NetworkConfig ¶
type NetworkConfig struct {
MgtIface string `json:"mgt_interface,omitempty" enable:"true" hidden:"false" usage:"Management interface"`
DataIface string `json:"data_interface,omitempty" enable:"true" hidden:"false" usage:"Data interface"`
}
NetworkConfig is a network configuration parameters struct swagger:model
func (*NetworkConfig) Init ¶
func (conf *NetworkConfig) Init() *NetworkConfig
type NodeConfig ¶
type NodeConfig struct {
NodeId string `json:"node_id,omitempty" enable:"true" hidden:"false" usage:"ID for the node"`
CSIEndpoint string `json:"csi_endpoint,omitempty" enable:"true" hidden:"false" usage:"CSI endpoint"`
Network *NetworkConfig `` /* 133-byte string literal not displayed */
Storage *StorageConfig `` /* 133-byte string literal not displayed */
Geo *GeoConfig `json:"geo,omitempty" enable:"true" hidden:"false" usage:"Geographic configuration" description:"Stores geo info for node"`
Private interface{} `json:"private,omitempty" enable:"false" hidden:"false" usage:"Private node data"`
}
NodeConfig is a node level config data swagger:model
func (*NodeConfig) Init ¶
func (conf *NodeConfig) Init() *NodeConfig
type NodesConfig ¶
type NodesConfig []*NodeConfig
NodesConfig contains all of node level data swagger:model
type SecretsConfig ¶
type SecretsConfig struct {
SecretType string `json:"secret_type,omitempty" enable:"true" hidden:"false" usage:"Secret type"`
ClusterSecretKey string `json:"cluster_secret_key,omitempty" enable:"true" hidden:"false" usage:"Secret key"`
Vault *VaultConfig `json:"vault,omitempty" enable:"true" hidden:"false" usage:"Vault configuration"`
Aws *AWSConfig `json:"aws,omitempty" enable:"true" hidden:"false" usage:"AWS configuration"`
}
SecretsConfig is a secrets configuration parameters struct swagger:model
func (*SecretsConfig) Init ¶
func (conf *SecretsConfig) Init() *SecretsConfig
type StorageConfig ¶
type StorageConfig struct {
DevicesMd []string `json:"devices_md,omitempty" enable:"true" hidden:"false" usage:"Devices MD"`
Devices []string `json:"devices,omitempty" enable:"true" hidden:"false" usage:"Devices list"`
MaxCount uint32 `json:"max_count,omitempty" enable:"true" hidden:"false" usage:"Maximum count"`
MaxDriveSetCount uint32 `json:"max_drive_set_count,omitempty" enable:"true" hidden:"false" usage:"Max drive set count"`
RaidLevel string `json:"raid_level,omitempty" enable:"true" hidden:"false" usage:"RAID level info"`
RaidLevelMd string `json:"raid_level_md,omitempty" enable:"true" hidden:"false" usage:"RAID level MD"`
}
StorageConfig is a storage configuration parameters struct swagger:model
func (*StorageConfig) Init ¶
func (conf *StorageConfig) Init() *StorageConfig
type VaultConfig ¶
type VaultConfig struct {
Token string `json:"token,omitempty" enable:"true" hidden:"false" usage:"Vault token"`
Address string `json:"address,omitempty" enable:"true" hidden:"false" usage:"Vault address"`
CACert string `json:"ca_cert,omitempty" enable:"true" hidden:"false" usage:"Vault CA certificate"`
CAPath string `json:"ca_path,omitempty" enable:"true" hidden:"false" usage:"Vault CA path"`
ClientCert string `json:"client_cert,omitempty" enable:"true" hidden:"false" usage:"Vault client certificate"`
ClientKey string `json:"client_key,omitempty" enable:"true" hidden:"false" usage:"Vault client key"`
TLSSkipVerify string `json:"skip_verify,omitempty" enable:"true" hidden:"false" usage:"Vault skip verification"`
TLSServerName string `json:"tls_server_name,omitempty" enable:"true" hidden:"false" usage:"Vault TLS server name"`
BasePath string `json:"base_path,omitempty" enable:"true" hidden:"false" usage:"Vault base path"`
BackendPath string `json:"backend_path,omitempty" enable:"true" hidden:"false" usage:"Vault secrets backend mount path"`
}
VaultConfig is a vault configuration parameters struct swagger:model
func (*VaultConfig) Init ¶
func (conf *VaultConfig) Init() *VaultConfig