Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ExtensionInfo ¶
type ExtensionInfo struct { // Image is the agent image name to install as a sidecar in order to use this extension. // // Alternatively, instead of a Docker image name, you may give an "http://", https://", or // "grpc+https://" URL. For an "http://" or "https://" URL, the URL must return an HTTP 200 // response where the response body will be used as the Docker image name. For a // "grpc+https://" url, it will make a `/telepresence.systema/PreferredAgentResponse` // request to the server specified in the URL. This is done recursively. // // The initial string has environment variables expanded via os.Expand. Strings returned // from HTTP or gRPC requests do not have environment variables expanded. Image string `json:"image"` // RequiresAPIKey identifies whether the agent sidecar image requires a SystemA API key (via // `telepresence login`) in order to function. RequiresAPIKey bool `json:"requiresAPIKey,omitempty"` // Mechanisms describes the mechanisms that the agent sidecar image supports. The keys in // the map are the mechanism names. Mechanisms map[string]MechanismInfo `json:"mechanisms"` }
ExtensionInfo is the type that the data in an extension YAML file must be.
type ExtensionsState ¶
type ExtensionsState struct {
// contains filtered or unexported fields
}
func LoadExtensions ¶
LoadExtensions loads any extension YAML files, and adds the appropriate flags to existingFlags.
Extension YAML files are loaded from the the "extensions/" subdirectories in filelocation.AppUserConfigDir and filelocation.AppSystemConfigDirs (eg: on GNU/Linux: "~/.config/telepresence/extensions/" and "/etc/xdg/telepresence/extensions/"). Files are ignored if they begin with "." or if they don't end with ".yml". Files with the same name in multiple directories will mask eachother (eg: "~/.config/telepresence/extensions/foo.yml" will mask "/etc/xdg/telepresence/extensions/foo.yml").
The basename of the extension YAML filename (i.e. the non-directory part, with the ".yml" suffix removed) identifies the name of the extension. The content of the extension YAML file must be an ExtensionInfo object serialized as YAML. See the docs for ExtensionInfo for more information.
func (*ExtensionsState) AgentImage ¶
func (*ExtensionsState) Mechanism ¶
func (es *ExtensionsState) Mechanism() (string, error)
func (*ExtensionsState) MechanismArgs ¶
func (es *ExtensionsState) MechanismArgs() ([]string, error)
func (*ExtensionsState) RequiresAPIKey ¶
func (es *ExtensionsState) RequiresAPIKey() (bool, error)
type FlagInfo ¶
type FlagInfo struct { // Usage is the usage text for the flag to include in `--help` output. It follows pflag // semantics around the backtick charater being used to identify metavariables. Strictly // speaking, this field is optional, but you should probably include it. Usage string `json:"usage"` // Type identifies the type identifies the datatype to use both for (1) parsing the default // value of a flag (below), and for (2) validating and normalizing the flag value that the // user passes on the CLI. See the `flagTypes` variable in `flagtypes.go` for a list of // possible values. This field is required. Type TypeEnum `json:"type"` // Default is the default value for this flag. This field is optional; if it isn't // specitified then the zero value is used. Default json.RawMessage `json:"default,omitempty"` }
type MechanismInfo ¶
type MechanismInfo struct { // Preference identifies an ordering of preference for choosing the default mechanism if not // told explicitly via a flag. The highest preference mechanism will be used as the // default; with the exception that the mechanism(s) of a requiresAPIKey extension will not // be considered if not logged in. Ties are decided by lexicographic ordering. Preference int `json:"preference,omitempty"` // Flags describes which CLI flags this mechanism introduces to `telepresence intercept`. // The flag will be exposed to the user as `--{{mechname}}-{{mapkey}}`, and will be passed // to the agent sidecar gRPC responses as `--{{mapkey}}`. Flags map[string]FlagInfo `json:"flags"` }
MechanismInfo is the information about a mechanism in ExtensionInfo.
type TypeEnum ¶
type TypeEnum string
TypeEnum is an enum-string that identifies the datatype to use both for (1) parsing the default value of a flag, and for (2) validating and normalizing the flag value that the user passes on the CLI.
See the `flagTypes` variable in `flagtypes.go` for a listing of valid values.