func AppList(rw http.ResponseWriter, r *http.Request) *httperr.Error { apps, err := models.ListApps() if err != nil { return httperr.Server(err) } sort.Sort(apps) return RenderJson(rw, apps) }
func StartImages() { var log = logger.New("ns=app_images") if os.Getenv("DEVELOPMENT") == "true" { return } maxRetries := 5 var err error for i := 0; i < maxRetries; i++ { err := dockerLogin() if err == nil { break } time.Sleep(30 * time.Second) } if err != nil { return } apps, err := models.ListApps() if err != nil { log.Error(err) return } for _, app := range apps { a, err := models.GetApp(app.Name) if err != nil { log.Error(err) continue } for key, value := range a.Parameters { if strings.HasSuffix(key, "Image") { log.Log("cmd=%q", fmt.Sprintf("docker pull %s", value)) data, err := exec.Command("docker", "pull", value).CombinedOutput() if err != nil { fmt.Printf("%+v\n", string(data)) log.Error(err) continue } } } } }
func heartbeat() { system, err := models.GetSystem() if err != nil { log.Error(err) return } apps, err := models.ListApps() if err != nil { log.Error(err) return } helpers.TrackEvent("kernel-heartbeat", map[string]interface{}{ "app_count": len(apps), "instance_count": system.Count, "instance_type": system.Type, "region": os.Getenv("AWS_REGION"), "version": system.Version, }) }
// Set up rack instance Docker environment for builds // Log into all configured private registries // Pull down latest images for all apps func StartImages() { var log = logger.New("ns=app_images") if os.Getenv("DEVELOPMENT") == "true" { return } // doing this in development updates a ~/.docker file and causes a rerun loop models.LoginRegistries() maxRetries := 5 var err error for i := 0; i < maxRetries; i++ { err = models.DockerLogin(docker.AuthConfiguration{ Email: "*****@*****.**", Username: "******", Password: os.Getenv("PASSWORD"), ServerAddress: os.Getenv("REGISTRY_HOST"), }) if err == nil { break } time.Sleep(30 * time.Second) } if err != nil { return } apps, err := models.ListApps() if err != nil { log.Error(err) return } for _, app := range apps { a, err := models.GetApp(app.Name) if err != nil { log.Error(err) continue } for key, value := range a.Parameters { if strings.HasSuffix(key, "Image") { log.Log("cmd=%q", fmt.Sprintf("docker pull %s", value)) data, err := exec.Command("docker", "pull", value).CombinedOutput() if err != nil { fmt.Printf("%+v\n", string(data)) log.Error(err) continue } } } } }