Documentation ¶
Overview ¶
Package config contains a client to access LUCI configuration service.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNoConfig = errors.New("no such config")
ErrNoConfig is returned if requested config does not exist.
Functions ¶
func ValidateProjectName ¶
ValidateProjectName returns an error if the supplied string is not a valid project name.
A valid project name may only include:
- Lowercase letters [a-z]
- Numbers [0-9]
- Hyphen (-)
- Underscore (_)
It also must begin with a letter.
Types ¶
type Config ¶
type Config struct { Meta // FormatSpec, if non-empty, qualifies the format of the Content. // // It is set only if config was obtained through cfgclient guts that does // reformatting (e.g. formats text protos into binary protos). FormatSpec FormatSpec `json:"formatSpec,omitempty"` // Error is not nil if there where troubles fetching this config. Used only // by functions that operate with multiple configs at once, such as // GetProjectConfigs and GetRefConfigs. Error error `json:"error,omitempty"` // Content is the actual body of the config file. Content string `json:"content,omitempty"` }
Config is a configuration file along with its metadata.
type FormatSpec ¶
type FormatSpec struct { // Formatter is the name of the formatter that produces the content data. // // An empty string means the original config service format. Formatter string // Data is additional format data describing the type. It may be empty. Data string }
FormatSpec is a specification for formatted data.
func (*FormatSpec) Unformatted ¶
func (fs *FormatSpec) Unformatted() bool
Unformatted returns true if fs does not specify a format.
type Interface ¶
type Interface interface { // GetConfig returns a config at a path in a config set or ErrNoConfig // if missing. If metaOnly is true, returned Config struct has only Meta set // (and the call is faster). GetConfig(ctx context.Context, configSet Set, path string, metaOnly bool) (*Config, error) // GetConfigByHash returns the contents of a config, as identified by its // content hash, or ErrNoConfig if missing. GetConfigByHash(ctx context.Context, contentHash string) (string, error) // GetConfigSetLocation returns the URL location of a config set. GetConfigSetLocation(ctx context.Context, configSet Set) (*url.URL, error) // GetProjectConfigs returns all the configs at the given path in all // projects that have such config. If metaOnly is true, returned Config // structs have only Meta set (and the call is faster). GetProjectConfigs(ctx context.Context, path string, metaOnly bool) ([]Config, error) // GetProjects returns all the registered projects in the configuration // service. GetProjects(ctx context.Context) ([]Project, error) // GetRefConfigs returns the config at the given path in all refs of all // projects that have such config. If metaOnly is true, returned Config // structs have only Meta set (and the call is faster). GetRefConfigs(ctx context.Context, path string, metaOnly bool) ([]Config, error) // GetRefs returns the list of refs for a project. GetRefs(ctx context.Context, projectID string) ([]string, error) // ListFiles returns the list of files for a config set. ListFiles(ctx context.Context, configSet Set) ([]string, error) }
Interface represents low-level luci-config service API.
All methods accept context.Context they use for deadlines and for passing to callbacks (if the implementation uses any). Contexts here don't necessary relate to a "global" package context (used by GetImplementation and SetImplementation), though very often they are the same (as is the case when using package-level functions like GetConfig).
For example, unit tests may instantiate an implementation of Interface directly and don't bother registering it in the context with SetImplementation(...).
Transient errors are wrapped in errors.Transient. See common/errors.
type Meta ¶
type Meta struct { // ConfigSet is the config set name (e.g. "projects/<id>") this config // belongs to. ConfigSet Set `json:"configSet,omitempty"` // Path is the filename relative to the root of the config set, // without leading slash, e.g. "luci-scheduler.cfg". Path string `json:"path,omitempty"` // ContentHash can be used to quickly check that content didn't change. ContentHash string `json:"contentHash,omitempty"` // Revision is git SHA1 of a repository the config was fetched from. Revision string `json:"revision,omitempty"` // ViewURL is the URL surfaced for viewing the config. ViewURL string `json:"view_url,omitempty"` }
Meta is metadata about a single configuration file.
type Project ¶
type Project struct { // ID is unique project identifier. ID string // Name is a short friendly display name of the project. Name string // RepoType specifies in what kind of storage projects configs are stored. RepoType RepoType // RepoUrl is the location of this project code repository. May be nil if // unknown or cannot be parsed. RepoURL *url.URL }
Project is a project registered in the luci-config service.
type Set ¶
type Set string
Set is a name of a configuration set: a bunch of config files versioned and stored as a single unit in a same repository.
A config set name consists of a domain and a series of path components: domain/target/refs...
- Service config sets are config sets in the "services" domain, with the service name as the target.
- Project config sets are config sets in the "projects" domain. The target is the project name.
func ProjectSet ¶
ProjectSet returns the config set for the specified project.
func RefSet ¶
RefSet returns the config set for the specified project and ref. If ref is empty, this will equal the ProjectSet value.
func ServiceSet ¶
ServiceSet returns the name of a config set for the specified service.
func (Set) Project ¶
Project returns a project name for a project-rooted config set or empty string for all other sets.
Use ProjectAndRef if you need to get both the project name and the ref.
func (Set) ProjectAndRef ¶
ProjectAndRef splits a project-rooted config set (projects/<name>[/...]) into its project name and ref components.
For example, "projects/foo/bar/baz" is a config set that belongs to project "foo". It will be parsed into ("foo", "bar/baz").
If configSet is not a project config set, empty strings will be returned.
func (Set) Ref ¶
Ref returns a ref component of a project-rooted config set or empty string for all other sets.
Use ProjectAndRef if you need to get both the project name and the ref.
Directories ¶
Path | Synopsis |
---|---|
appengine
|
|
backend/memcache
Package memcache implements a caching config client backend backed by AppEngine's memcache service.
|
Package memcache implements a caching config client backend backed by AppEngine's memcache service. |
gaeconfig
Package gaeconfig implements LUCI-config service bindings backed by AppEngine storage and caching.
|
Package gaeconfig implements LUCI-config service bindings backed by AppEngine storage and caching. |
impl
|
|
erroring
Package erroring implements a backend that always returns an error for all of its calls.
|
Package erroring implements a backend that always returns an error for all of its calls. |
filesystem
Package filesystem implements a file system backend for the config client.
|
Package filesystem implements a file system backend for the config client. |
memory
Package memory implements in-memory backend for the config client.
|
Package memory implements in-memory backend for the config client. |
server
|
|
cfgclient
Package cfgclient contains service implementations for the LUCI configuration service defined in go.chromium.org/luci/config.
|
Package cfgclient contains service implementations for the LUCI configuration service defined in go.chromium.org/luci/config. |
cfgclient/access
Package access implements a config service access check against a project config client.
|
Package access implements a config service access check against a project config client. |
cfgclient/backend
Package backend implements configuration client backend interface and associated data types.
|
Package backend implements configuration client backend interface and associated data types. |
cfgclient/backend/caching
Package caching implements a config.Interface that uses a caching layer to store its configuration values.
|
Package caching implements a config.Interface that uses a caching layer to store its configuration values. |
cfgclient/backend/client
Package client implements a config client backend for a configuration client.
|
Package client implements a config client backend for a configuration client. |
cfgclient/backend/erroring
Package erroring implements config.Backend that simply returns an error.
|
Package erroring implements config.Backend that simply returns an error. |
cfgclient/backend/format
Package format implements a config client Backend that performs formatting on items.
|
Package format implements a config client Backend that performs formatting on items. |
cfgclient/textproto
Package textproto implements a textproto config service Resolver.
|
Package textproto implements a textproto config service Resolver. |
Package validation provides helpers for performing and setting up handlers for config validation related requests from luci-config.
|
Package validation provides helpers for performing and setting up handlers for config validation related requests from luci-config. |