Merge pull request #72223 from misterikkit/godocs

Add godoc to pkg/util/configz.
pull/564/head
Kubernetes Prow Robot 2018-12-21 13:49:53 -08:00 committed by GitHub
commit fa2cffbd4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 1 deletions

View File

@ -360,7 +360,6 @@ pkg/serviceaccount
pkg/ssh
pkg/util/bandwidth
pkg/util/config
pkg/util/configz
pkg/util/ebtables
pkg/util/env
pkg/util/file

View File

@ -14,6 +14,29 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
// Package configz serves ComponentConfig objects from running components.
//
// Each component that wants to serve its ComponentConfig creates a Config
// object, and the program should call InstallHandler once. e.g.,
// func main() {
// boatConfig := getBoatConfig()
// planeConfig := getPlaneConfig()
//
// bcz, err := configz.New("boat")
// if err != nil {
// panic(err)
// }
// bcz.Set(boatConfig)
//
// pcz, err := configz.New("plane")
// if err != nil {
// panic(err)
// }
// pcz.Set(planeConfig)
//
// configz.InstallHandler(http.DefaultServeMux)
// http.ListenAndServe(":8080", http.DefaultServeMux)
// }
package configz
import (
@ -28,10 +51,14 @@ var (
configs = map[string]*Config{}
)
// Config is a handle to a ComponentConfig object. Don't create these directly;
// use New() instead.
type Config struct {
val interface{}
}
// InstallHandler adds an HTTP handler on the given mux for the "/configz"
// endpoint which serves all registered ComponentConfigs in JSON format.
func InstallHandler(m mux) {
m.Handle("/configz", http.HandlerFunc(handle))
}
@ -40,6 +67,8 @@ type mux interface {
Handle(string, http.Handler)
}
// New creates a Config object with the given name. Each Config is registered
// with this package's "/configz" handler.
func New(name string) (*Config, error) {
configsGuard.Lock()
defer configsGuard.Unlock()
@ -51,18 +80,22 @@ func New(name string) (*Config, error) {
return &newConfig, nil
}
// Delete removes the named ComponentConfig from this package's "/configz"
// handler.
func Delete(name string) {
configsGuard.Lock()
defer configsGuard.Unlock()
delete(configs, name)
}
// Set sets the ComponentConfig for this Config.
func (v *Config) Set(val interface{}) {
configsGuard.Lock()
defer configsGuard.Unlock()
v.val = val
}
// MarshalJSON marshals the ComponentConfig as JSON data.
func (v *Config) MarshalJSON() ([]byte, error) {
return json.Marshal(v.val)
}