400c3669 |
package main
import (
"flag"
"fmt" |
48620b92 |
"math/rand" |
1449c5f0 |
"net/http"
_ "net/http/pprof" |
400c3669 |
"os" |
223412fa |
"runtime" |
48620b92 |
"time" |
400c3669 |
log "github.com/Sirupsen/logrus" |
ac04088a |
"k8s.io/kubernetes/pkg/util/logs"
|
400c3669 |
"github.com/openshift/origin/pkg/cmd/dockerregistry" |
39615ee3 |
cmdutil "github.com/openshift/origin/pkg/cmd/util"
"github.com/openshift/origin/pkg/cmd/util/serviceability" |
3bd83be4 |
// install all APIs
_ "github.com/openshift/origin/pkg/api/install"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install" |
400c3669 |
)
func main() { |
ac04088a |
logs.InitLogs()
defer logs.FlushLogs() |
39615ee3 |
defer serviceability.BehaviorOnPanic(os.Getenv("OPENSHIFT_ON_PANIC"))()
defer serviceability.Profile(os.Getenv("OPENSHIFT_PROFILE")).Stop()
startProfiler() |
1449c5f0 |
|
48620b92 |
rand.Seed(time.Now().UTC().UnixNano()) |
223412fa |
runtime.GOMAXPROCS(runtime.NumCPU()) |
400c3669 |
flag.Parse()
// TODO convert to flags instead of a config file?
configurationPath := ""
if flag.NArg() > 0 {
configurationPath = flag.Arg(0)
}
if configurationPath == "" { |
d714558d |
configurationPath = os.Getenv("REGISTRY_CONFIGURATION_PATH")
}
if configurationPath == "" { |
400c3669 |
fmt.Println("configuration path unspecified")
os.Exit(1)
} |
d714558d |
// Prevent a warning about unrecognized environment variable
os.Unsetenv("REGISTRY_CONFIGURATION_PATH") |
400c3669 |
configFile, err := os.Open(configurationPath)
if err != nil {
log.Fatalf("Unable to open configuration file: %s", err)
}
dockerregistry.Execute(configFile)
} |
39615ee3 |
func startProfiler() {
if cmdutil.Env("OPENSHIFT_PROFILE", "") == "web" {
go func() {
runtime.SetBlockProfileRate(1) |
4d15ef8f |
profilePort := cmdutil.Env("OPENSHIFT_PROFILE_PORT", "6060")
profileHost := cmdutil.Env("OPENSHIFT_PROFILE_HOST", "127.0.0.1")
log.Infof(fmt.Sprintf("Starting profiling endpoint at http://%s:%s/debug/pprof/", profileHost, profilePort))
log.Fatal(http.ListenAndServe(fmt.Sprintf("%s:%s", profileHost, profilePort), nil)) |
39615ee3 |
}()
}
} |