Documentation ¶
Index ¶
- Constants
- func ConfigGetMinDiskSpaceScratch() uint64
- func ConvertLevelStringToUint32Mask(levels string) uint32
- func ConvertLevelUint32MaskToString(mask uint32) string
- func ConvertTagStringToUint32(tag string) uint32
- func ConvertTagUint32ToString(tag uint32) string
- func GetGlobalConfigDictionary() (ret *templates.TemplateVarDictionary)
- func GetInterpolatedConfigString(s string) string
- type Config
- type ConfigError
- type ConfigWrapper
- type DDBConfig
- type DDBRelayConfigClient
- func CreateDDBRelayConfigClient(ddbConnConfig *DeviceDBConnConfig) (*DDBRelayConfigClient, error)
- func GetDDBRelayConfigClient(ddbConnConfig *DeviceDBConnConfig) (*DDBRelayConfigClient, error)
- func NewDDBRelayConfigClient(tlsConfig *tls.Config, uri string, relay string, prefix string, bucket string) *DDBRelayConfigClient
- func (this *DDBRelayConfigClient) AddMonitorConfig(config interface{}, updatedConfig interface{}, configName string, ...) (err error)
- func (ddbClient *DDBRelayConfigClient) Config(name string) Config
- func (rcc *DDBRelayConfigClient) IsAvailable() bool
- func (this *DDBRelayConfigClient) RemoveMonitorConfig(configName string) (err error)
- type DDBWatcher
- type DebugOptions
- type DeviceDBConnConfig
- type GatewayResource
- type GcdConfig
- type MdnsSetup
- type PlatformReader
- type Plugin
- type RelayConfigClient
- type StaticFileOp
- type SubstVars
- type Watcher
- type YAMLMaestroConfig
- func (ysc *YAMLMaestroConfig) FillInDefaults()
- func (ysc *YAMLMaestroConfig) FinalizeConfig()
- func (ysc *YAMLMaestroConfig) GetDBPath() (ret string)
- func (ysc *YAMLMaestroConfig) GetHttpUnixSocket() (ret string)
- func (ysc *YAMLMaestroConfig) GetImagePath() (ret string)
- func (ysc *YAMLMaestroConfig) GetScratchPath() (ret string)
- func (ysc *YAMLMaestroConfig) GetSyslogSocket() (ret string)
- func (ysc *YAMLMaestroConfig) GetUnixLogSocket() (ret string)
- func (ysc *YAMLMaestroConfig) InterpolateAllStrings()
- func (ysc *YAMLMaestroConfig) LoadFromFile(file string) error
Constants ¶
const INCREASED_DEVICEDB_STATUS_CHECK_INTERVAL_IN_SECS int = 120 //Exponential retry backoff interval
const INITIAL_DEVICEDB_STATUS_CHECK_INTERVAL_IN_SECS int = 5 //5 secs
const LOOP_WAIT_TIME_INCREMENT_WINDOW int = (6 * 60) //6 minutes which is the exponential retry backoff window
const MAX_DEVICEDB_WAIT_TIME_IN_SECS int = (24 * 60 * 60) //24 hours
Constants used in the logic for connecting to devicedb
Variables ¶
This section is empty.
Functions ¶
func ConfigGetMinDiskSpaceScratch ¶
func ConfigGetMinDiskSpaceScratch() uint64
func ConvertLevelStringToUint32Mask ¶
@param levels is a string of one or more comma separated value for levels, like: "warn, error"
func GetGlobalConfigDictionary ¶
func GetGlobalConfigDictionary() (ret *templates.TemplateVarDictionary)
func GetInterpolatedConfigString ¶
replaces the {{VAR}} macro strings with their appropriate names values Currently the config files supports: {{thisdir}} - the directory where the maestro exec resides {{cwd}} the 'current working directory' of the Maestro process
Types ¶
type Config ¶
type Config interface { Get(t interface{}) error Put(t interface{}) error Delete() error Watch() Watcher }
Config interface provides the means for client to get the specified config, and also could watch the updates about the config.
type ConfigError ¶
type ConfigError struct {
// contains filtered or unexported fields
}
ConfigError is the error type when there is an issue in the config parsing
type ConfigWrapper ¶
type ConfigWrapper struct { Name string `json:"name"` Relay string `json:"relay"` Body interface{} `json:"body"` }
Generic wrapper for storing the config structs
type DDBConfig ¶
type DDBConfig struct { Key string Bucket string ConfigClient *DDBRelayConfigClient }
DDBConfig has the name of the config and also include the instance of DDBRelayConfigClient, which is used by the implementation of the Config interface
func (*DDBConfig) Delete ¶
Delete function will remove the config object with the configName in ddbConfig object
func (*DDBConfig) DeviceDBKey ¶
get the devicedb key used for this config monitor
func (*DDBConfig) Get ¶
Get function will get the config with the expecting format and fill it into the parameter t. It will return nil error when there is no such config exists or the config value could be parsed as the format that client specified, otherwise it will return false when the config value could not be parsed as expecting format
type DDBRelayConfigClient ¶
type DDBRelayConfigClient struct { Uri string Relay string Bucket string Prefix string Client client_relay.Client }
DDBRelayConfigClient specifies some attributes for devicedb server that use to setup the client
func CreateDDBRelayConfigClient ¶
func CreateDDBRelayConfigClient(ddbConnConfig *DeviceDBConnConfig) (*DDBRelayConfigClient, error)
This function is called during bootup. It waits for devicedb to be up and running to connect to it
func GetDDBRelayConfigClient ¶
func GetDDBRelayConfigClient(ddbConnConfig *DeviceDBConnConfig) (*DDBRelayConfigClient, error)
This function creates and returns a singleton DDBRelayConfigClient
func NewDDBRelayConfigClient ¶
func NewDDBRelayConfigClient(tlsConfig *tls.Config, uri string, relay string, prefix string, bucket string) *DDBRelayConfigClient
NewDDBRelayConfigClient will initialize an client from devicedb/client_relay, and it will setup an instance of DDBRelayConfigClient
func (*DDBRelayConfigClient) AddMonitorConfig ¶
func (this *DDBRelayConfigClient) AddMonitorConfig(config interface{}, updatedConfig interface{}, configName string, configAnalyzer *maestroSpecs.ConfigAnalyzer) (err error)
This function is used to add a configuration monitor for the "config" object with name "configName". configAnalyzer object is used for comparing new and old config objects which is used by the monitor when it detects a config object change
func (*DDBRelayConfigClient) Config ¶
func (ddbClient *DDBRelayConfigClient) Config(name string) Config
Config return a config instance which is a monitoring client that specified by the given config name
func (*DDBRelayConfigClient) IsAvailable ¶
func (rcc *DDBRelayConfigClient) IsAvailable() bool
func (*DDBRelayConfigClient) RemoveMonitorConfig ¶
func (this *DDBRelayConfigClient) RemoveMonitorConfig(configName string) (err error)
This function is used to delete a configuration monitor with name "configName".
type DDBWatcher ¶
type DDBWatcher struct { Updates chan string Config *DDBConfig // contains filtered or unexported fields }
DDBWatcher provides a channel that process the updates, and the config could be used while handling the updates from devicedb
func (*DDBWatcher) Next ¶
func (watcher *DDBWatcher) Next(t interface{}) bool
Next would parse the config as the given interface and return true when the configuration with given key still exists, otherwise it will return false
func (*DDBWatcher) Run ¶
func (watcher *DDBWatcher) Run()
Run will start the go routine that handle the updates from the monitoring config value or errors from the devicedb
func (*DDBWatcher) Stop ¶
func (watcher *DDBWatcher) Stop()
Stop will stop the handleWatched go routine in preparation for removing this watcher
type DebugOptions ¶
type DebugOptions struct { // PidFile if provided will write a file with the current PID PidFile string `yaml:"pid_file"` // KeepPids if true, will append the PID number instead of truncate and write KeepPids bool `yaml:"keep_pids"` // PidFileDara prints the current date/time next to the pid number in the file upod pid file creation PidFileDates bool `yaml:"pid_file_dates"` }
type DeviceDBConnConfig ¶
type DeviceDBConnConfig struct { // The URI of the relay's local DeviceDB instance DeviceDBUri string `yaml:"devicedb_uri"` // The prefix where keys related to configuration are stored DeviceDBPrefix string `yaml:"devicedb_prefix"` // The devicedb bucket where configurations are stored DeviceDBBucket string `yaml:"devicedb_bucket"` // The ID of the relay whose configuration should be monitored RelayId string `yaml:"relay_id"` // The file path to a PEM encoded CA chain used to validate the server certificate used by the DeviceDB instance CaChainCert string `yaml:"ca_chain"` }
type GatewayResource ¶
type GcdConfig ¶
type GcdConfig struct { EdgeCoreSocketPath string `yaml:"edge_core_socketpath"` ConfigObjectId int `yaml:"lwm2m_objectid"` GatewayResources []GatewayResource `yaml:"gateway_resources"` }
type MdnsSetup ¶
type MdnsSetup struct { Disable bool `yaml:"disable"` StaticRecords []*mdns.ConfigEntry `yaml:"static_records"` }
type PlatformReader ¶
type PlatformReader struct { Platform string `yaml:"platform"` // Opts is an optional PluginOpts config Opts *maestroSpecs.PluginOpts `yaml:"opts"` Params map[string]interface{} `yaml:"params,omitempty"` }
type Plugin ¶
type Plugin struct { // Id is an identifier used to call out this generic plugin in the // logging system and in errors. Generic plugins are plugins which are // not a platform or watchdog plugin. Id is like a name ID string `yaml:"id"` // A path to the plugin .so file Path string `yaml:"path"` // Opts is an optional PluginOpts config Opts *maestroSpecs.PluginOpts `yaml:"opts"` }
type RelayConfigClient ¶
RelayConfigClient will be used by a gateway program. It will provide a client to monitor the relative configuration file.
type StaticFileOp ¶
type Watcher ¶
type Watcher interface { // Run would start the go routine that handles the updates about the monitoring config Run() // Stop would stop the go routine that handles the updates about the monitoring config Stop() // Next would parse the config as the given interface and return true when the // configuration with given key still exists, otherwise it will return false Next(t interface{}) bool }
Watcher interface lets the client could use it to run the monitor, receive the updates about the config and parse it as expected format
type YAMLMaestroConfig ¶
type YAMLMaestroConfig struct { UnixLogSocket string `yaml:"unixLogSocket"` SyslogSocket string `yaml:"sysLogSocket"` LinuxKernelLog bool `yaml:"linuxKernelLog"` LinuxKernelLogLegacy bool `yaml:"linuxKernelLogLegacy"` // ApiUnixDgramSocket string `yaml:"apiUnixDgramSocket"` // not used yet HttpUnixSocket string `yaml:"httpUnixSocket"` VarDefs []SubstVars `yaml:"var_defs"` TimeServer *time.ClientConfig `yaml:"time_server"` Mdns *MdnsSetup `yaml:"mdns"` Watchdog *maestroSpecs.WatchdogConfig `yaml:"watchdog"` Symphony *wwrmi.ClientConfig `yaml:"symphony"` SysStats *sysstats.StatsConfig `yaml:"sys_stats"` Tags []string `yaml:"tags"` Targets []maestroSpecs.LogTarget `yaml:"targets"` ClientId string `yaml:"clientId"` ConfigDBPath string `yaml:"configDBPath"` // where Maestro should look for it's database Stats maestroSpecs.StatsConfigPayload `yaml:"stats"` JobStarts []maestroSpecs.JobDefinitionPayload `yaml:"jobs"` ContainerTemplates []maestroSpecs.ContainerTemplatePayload `yaml:"container_templates"` ImagePath string `yaml:"imagePath"` // where we should place Job images ScratchPath string `yaml:"scratchPath"` // where we should place temporary file, downloads, etc. StaticFileGenerators []StaticFileOp `yaml:"static_file_generators"` PlatformReaders []PlatformReader `yaml:"platform_readers"` Plugins []Plugin `yaml:"plugins"` Network *maestroSpecs.NetworkConfigPayload `yaml:"network"` GatewayCapabilities *GcdConfig `yaml:"gateway_capabilities"` Processes *configs.ProcessesConfig `yaml:"processes"` DebugOpts *DebugOptions `yaml:"debug_opts"` DDBConnConfig *DeviceDBConnConfig `yaml:"devicedb_conn_config"` ConfigEnd bool `yaml:"config_end"` }
func (*YAMLMaestroConfig) FillInDefaults ¶
func (ysc *YAMLMaestroConfig) FillInDefaults()
FillInDefaults goes through specific parts of the config and puts in defaults if strings were missing or empty.
func (*YAMLMaestroConfig) FinalizeConfig ¶
func (ysc *YAMLMaestroConfig) FinalizeConfig()
FinalizeConfig Interpolates all config strings and fills in defaults
func (*YAMLMaestroConfig) GetDBPath ¶
func (ysc *YAMLMaestroConfig) GetDBPath() (ret string)
func (*YAMLMaestroConfig) GetHttpUnixSocket ¶
func (ysc *YAMLMaestroConfig) GetHttpUnixSocket() (ret string)
func (*YAMLMaestroConfig) GetImagePath ¶
func (ysc *YAMLMaestroConfig) GetImagePath() (ret string)
func (*YAMLMaestroConfig) GetScratchPath ¶
func (ysc *YAMLMaestroConfig) GetScratchPath() (ret string)
func (*YAMLMaestroConfig) GetSyslogSocket ¶
func (ysc *YAMLMaestroConfig) GetSyslogSocket() (ret string)
func (*YAMLMaestroConfig) GetUnixLogSocket ¶
func (ysc *YAMLMaestroConfig) GetUnixLogSocket() (ret string)
func (*YAMLMaestroConfig) InterpolateAllStrings ¶
func (ysc *YAMLMaestroConfig) InterpolateAllStrings()
func (*YAMLMaestroConfig) LoadFromFile ¶
func (ysc *YAMLMaestroConfig) LoadFromFile(file string) error
LoadFromFile load the config file