Documentation
¶
Overview ¶
Package config contains a client to access LUCI configuration service.
Index ¶
Constants ¶
const ServiceNamePattern = `[a-z0-9\-_]+`
ServiceNamePattern is the regexp pattern string that matches valid service name.
Variables ¶
var ErrNoConfig = errors.New("no such config")
ErrNoConfig is returned if requested config does not exist.
Functions ¶
func DownloadConfigFromSignedURL ¶
func DownloadConfigFromSignedURL(ctx context.Context, client *http.Client, signedURL string) ([]byte, error)
DownloadConfigFromSignedURL downloads the config file content from the provided GCS signed url. The signed url is generated by Config Service V2.
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
// 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.
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 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)
// GetConfigs returns a bunch of config files fetched at the same revision.
// If filter is nil, will return all files in the config set. Otherwise only
// files that pass the filter are returned. The filter is called sequentially
// in the same goroutine as GetConfigs itself and it receives paths in some
// arbitrary order. If metaOnly is true, returned Config structs have only
// Meta set (and the call is much faster). If there's no such config set at
// all, returns ErrNoConfig.
GetConfigs(ctx context.Context, configSet Set, filter func(path string) bool, metaOnly bool) (map[string]Config, 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)
// ListFiles returns the list of files for a config set.
ListFiles(ctx context.Context, configSet Set) ([]string, error)
// Close closes resources the config.Interface uses.
// The caller is expected to call Close() after the config.Interface is no
// longer used.
Close() error
}
Interface represents low-level pull-based LUCI Config API.
This is roughly a wrapper over LUCI Config RPC interface, and all methods are generally slow and depend on available of LUCI Config service. They *must not* be used in a hot path of requests.
Transient errors are tagged with transient.Tag.
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.
// In remote_v2 implementation, Name and ID are always the same.
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 target.
- 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 MustProjectSet ¶
MustProjectSet is like `ProjectSet` but panic on invalid project name.
func MustServiceSet ¶
MustServiceSet is like `ServiceSet` but panic on invalid service name.
func ProjectSet ¶
ProjectSet returns the config set for the specified project.
Returns error if the project name is invalid. See `ValidateProjectName`.
func ServiceSet ¶
ServiceSet returns the name of a config set for the specified service.
Returns error if the service name doesn't match `ServiceNamePattern`.
func (Set) Project ¶
Project returns a project name for a project config set or empty string for all other sets.
func (Set) Service ¶
Service returns a service name for a service config set or empty string for all other sets.
Directories
¶
| Path | Synopsis |
|---|---|
|
appengine
|
|
|
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. |
|
Package cfgclient contains glue code to use config.Interface client.
|
Package cfgclient contains glue code to use config.Interface client. |
|
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. |
|
remote
Package remote implements backends for config client which will make calls to the real Config Service.
|
Package remote implements backends for config client which will make calls to the real Config Service. |
|
resolving
Package resolving implements an interface that resolves ${var} placeholders in config set names and file paths before forwarding calls to some other interface.
|
Package resolving implements an interface that resolves ${var} placeholders in config set names and file paths before forwarding calls to some other interface. |
|
server
|
|
|
cfgcache
Package cfgcache provides a datastore-based cache of individual config files.
|
Package cfgcache provides a datastore-based cache of individual config files. |
|
cfgmodule
Package cfgmodule provides a server module with a LUCI Config client.
|
Package cfgmodule provides a server module with a LUCI Config client. |
|
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. |
|
Package vars implements a registry of ${var} placeholders.
|
Package vars implements a registry of ${var} placeholders. |