// DefaultOpenShiftUserAgent returns the default user agent that clients can use. func DefaultOpenShiftUserAgent() string { commit := version.Get().GitCommit if len(commit) > 7 { commit = commit[:7] } if len(commit) == 0 { commit = "unknown" } version := version.Get().GitVersion seg := strings.SplitN(version, "-", 2) version = seg[0] return fmt.Sprintf("%s/%s (%s/%s) openshift/%s", path.Base(os.Args[0]), version, runtime.GOOS, runtime.GOARCH, commit) }
// NewSentryMonitor creates a class that can capture panics and errors from OpenShift // and Kubernetes that can roll up to a Sentry server. func NewSentryMonitor(url string) (*SentryMonitor, error) { client, err := raven.NewClient(url, nil) if err != nil { return nil, err } client.SetRelease(version.Get().GitCommit) return &SentryMonitor{ client: client, }, nil }
func (c *AssetConfig) buildHandler() (http.Handler, error) { assets.RegisterMimeTypes() masterURL, err := url.Parse(c.Options.MasterPublicURL) if err != nil { return nil, err } publicURL, err := url.Parse(c.Options.PublicURL) if err != nil { glog.Fatal(err) } config := assets.WebConsoleConfig{ MasterAddr: masterURL.Host, MasterPrefix: LegacyOpenShiftAPIPrefix, // TODO: change when the UI changes from v1beta3 to v1 KubernetesAddr: masterURL.Host, KubernetesPrefix: KubernetesAPIPrefix, OAuthAuthorizeURI: OpenShiftOAuthAuthorizeURL(masterURL.String()), OAuthRedirectBase: c.Options.PublicURL, OAuthClientID: OpenShiftWebConsoleClientID, LogoutURI: c.Options.LogoutURL, } handler := http.FileServer( &assetfs.AssetFS{ assets.Asset, assets.AssetDir, "", }, ) // Map of context roots (no leading or trailing slash) to the asset path to serve for requests to a missing asset subcontextMap := map[string]string{ "": "index.html", "java": "java/index.html", } handler, err = assets.HTML5ModeHandler(publicURL.Path, subcontextMap, handler) if err != nil { return nil, err } // Cache control should happen after all Vary headers are added, but before // any asset related routing (HTML5ModeHandler and FileServer) handler = assets.CacheControlHandler(version.Get().GitCommit, handler) // Generated config.js can not be cached since it changes depending on startup options handler = assets.GeneratedConfigHandler(config, handler) // Gzip first so that inner handlers can react to the addition of the Vary header handler = assets.GzipHandler(handler) return handler, nil }
s := OverrideVersion.GitCommit if len(s) > 7 { s = s[:7] } return s, true case "version": s := OverrideVersion.GitVersion seg := strings.SplitN(s, "-", 2) return seg[0], true default: return "", false } } // Env is a KeyFunc which always returns a string func Env(key string) (string, bool) { return os.Getenv(key), true } // EnvPresent is a KeyFunc which returns an environment variable if it is present. func EnvPresent(key string) (string, bool) { s := os.Getenv(key) if len(s) == 0 { return "", false } return s, true } // OverrideVersion is the latest version, exposed for testing. var OverrideVersion = version.Get()