func AppList(configStore *config.Store, env string) error { envs := []string{env} if env == "" { var err error envs, err = configStore.ListEnvs() if err != nil { return err } } columns := []string{"NAME | ENV | VERSION | IMAGE ID | CONFIG | POOLS "} for _, env := range envs { appList, err := configStore.ListApps(env) if err != nil { return err } pools, err := configStore.ListPools(env) if err != nil { return err } for _, app := range appList { name := app.Name() versionDeployed := app.Version() versionID := app.VersionID() if len(versionID) > 12 { versionID = versionID[:12] } assignments := []string{} for _, pool := range pools { aa, err := configStore.ListAssignments(env, pool) if err != nil { return err } if utils.StringInSlice(app.Name(), aa) { assignments = append(assignments, pool) } } columns = append(columns, strings.Join([]string{ name, env, versionDeployed, versionID, strconv.FormatInt(app.ID(), 10), strings.Join(assignments, ","), }, " | ")) } } output := columnize.SimpleFormat(columns) fmt.Println(output) return nil }
func RuntimeList(configStore *config.Store, app, env, pool string) error { envs := []string{env} if env == "" { var err error envs, err = configStore.ListEnvs() if err != nil { return err } } columns := []string{"ENV | NAME | POOL | PS | MEM | VHOSTS | PORT | MAINT"} for _, env := range envs { appList, err := configStore.ListApps(env) if err != nil { return err } for _, appCfg := range appList { if app != "" && appCfg.Name() != app { continue } for _, p := range appCfg.RuntimePools() { if pool != "" && p != pool { continue } name := appCfg.Name() ps := appCfg.GetProcesses(p) mem := appCfg.GetMemory(p) columns = append(columns, strings.Join([]string{ env, name, p, strconv.FormatInt(int64(ps), 10), mem, appCfg.Env()["VIRTUAL_HOST"], appCfg.Env()["GALAXY_PORT"], fmt.Sprint(appCfg.GetMaintenanceMode(p)), }, " | ")) } } } output := columnize.SimpleFormat(columns) fmt.Println(output) return nil }
func HostsList(configStore *config.Store, env, pool string) error { envs := []string{env} if env == "" { var err error envs, err = configStore.ListEnvs() if err != nil { return err } } columns := []string{"ENV | POOL | HOST IP "} for _, env := range envs { var err error pools := []string{pool} if pool == "" { pools, err = configStore.ListPools(env) if err != nil { return err } } for _, pool := range pools { hosts, err := configStore.ListHosts(env, pool) if err != nil { return err } if len(hosts) == 0 { columns = append(columns, strings.Join([]string{ env, pool, "", }, " | ")) continue } for _, p := range hosts { columns = append(columns, strings.Join([]string{ env, pool, p.HostIP, }, " | ")) } } } output, _ := columnize.SimpleFormat(columns) log.Println(output) return nil }
// TODO: shouldn't the command cmd be printing the output, and not the package? // The app, config, host, and runtime sections all do this too. (otherwise we // should just combine the two packages). And why do we print the output here, // but print the error in main??? func ListPools(configStore *config.Store, env string) error { var envs []string var err error if env != "" { envs = []string{env} } else { envs, err = configStore.ListEnvs() if err != nil { return err } } columns := []string{"ENV | POOL | APPS "} for _, env := range envs { pools, err := configStore.ListPools(env) if err != nil { return fmt.Errorf("ERROR: cannot list pools: %s", err) } if len(pools) == 0 { columns = append(columns, strings.Join([]string{ env, "", ""}, " | ")) continue } for _, pool := range pools { assigments, err := configStore.ListAssignments(env, pool) if err != nil { fmt.Printf("ERROR: cannot list pool assignments for %s/%s: %s", env, pool, err) } columns = append(columns, strings.Join([]string{ env, pool, strings.Join(assigments, ",")}, " | ")) } } fmt.Println(columnize.SimpleFormat(columns)) return nil }