pull out workercmd from cmd/concourse

Signed-off-by: Divya Dadlani <ddadlani@pivotal.io>
Signed-off-by: Denise Yu <dyu@pivotal.io>
This commit is contained in:
Nader Ziada 2019-09-12 10:00:39 -04:00
parent bdcb9d0d85
commit e5066df1db
17 changed files with 71 additions and 51 deletions

13
cmd/cmd_suite_test.go Normal file
View File

@ -0,0 +1,13 @@
package cmd_test
import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"testing"
)
func TestCmd(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Cmd Suite")
}

View File

@ -4,15 +4,16 @@ import (
"github.com/concourse/concourse/atc/atccmd"
"github.com/concourse/concourse/worker/land"
"github.com/concourse/concourse/worker/retire"
flags "github.com/jessevdk/go-flags"
"github.com/concourse/concourse/worker/workercmd"
"github.com/jessevdk/go-flags"
)
type ConcourseCommand struct {
Version func() `short:"v" long:"version" description:"Print the version of Concourse and exit"`
Web WebCommand `command:"web" description:"Run the web UI and build scheduler."`
Worker WorkerCommand `command:"worker" description:"Run and register a worker."`
Migrate atccmd.Migration `command:"migrate" description:"Run database migrations."`
Web WebCommand `command:"web" description:"Run the web UI and build scheduler."`
Worker workercmd.WorkerCommand `command:"worker" description:"Run and register a worker."`
Migrate atccmd.Migration `command:"migrate" description:"Run database migrations."`
Quickstart QuickstartCommand `command:"quickstart" description:"Run both 'web' and 'worker' together, auto-wired. Not recommended for production."`
@ -22,8 +23,8 @@ type ConcourseCommand struct {
GenerateKey GenerateKeyCommand `command:"generate-key" description:"Generate RSA key for use with Concourse components."`
}
func (cmd ConcourseCommand) lessenRequirements(parser *flags.Parser) {
cmd.Quickstart.lessenRequirements(parser.Find("quickstart"))
cmd.Web.lessenRequirements(parser.Find("web"))
cmd.Worker.lessenRequirements("", parser.Find("worker"))
func (cmd ConcourseCommand) LessenRequirements(parser *flags.Parser) {
cmd.Quickstart.LessenRequirements(parser.Find("quickstart"))
cmd.Web.LessenRequirements(parser.Find("web"))
cmd.Worker.LessenRequirements("", parser.Find("worker"))
}

View File

@ -21,7 +21,7 @@ func main() {
parser := flags.NewParser(&cmd, flags.HelpFlag|flags.PassDoubleDash)
parser.NamespaceDelimiter = "-"
cmd.lessenRequirements(parser)
cmd.LessenRequirements(parser)
cmd.Web.WireDynamicFlags(parser.Command.Find("web"))
cmd.Quickstart.WebCommand.WireDynamicFlags(parser.Command.Find("quickstart"))

View File

@ -6,8 +6,10 @@ import (
"fmt"
"os"
concourseCmd "github.com/concourse/concourse/cmd"
"github.com/concourse/concourse/worker/workercmd"
"github.com/concourse/flag"
flags "github.com/jessevdk/go-flags"
"github.com/jessevdk/go-flags"
"github.com/tedsuo/ifrit"
"github.com/tedsuo/ifrit/grouper"
"github.com/tedsuo/ifrit/sigmon"
@ -15,13 +17,13 @@ import (
)
type QuickstartCommand struct {
*WebCommand `group:"Web Configuration"`
*WorkerCommand `group:"Worker Configuration" namespace:"worker"`
*WebCommand `group:"Web Configuration"`
*workercmd.WorkerCommand `group:"Worker Configuration" namespace:"worker"`
}
func (cmd QuickstartCommand) lessenRequirements(command *flags.Command) {
cmd.WebCommand.lessenRequirements(command)
cmd.WorkerCommand.lessenRequirements("worker-", command)
func (cmd QuickstartCommand) LessenRequirements(command *flags.Command) {
cmd.WebCommand.LessenRequirements(command)
cmd.WorkerCommand.LessenRequirements("worker-", command)
// autogenerated
command.FindOptionByLongName("session-signing-key").Required = false
@ -106,9 +108,9 @@ func (cmd *QuickstartCommand) Runner(args []string) (ifrit.Runner, error) {
return grouper.NewParallel(os.Interrupt, grouper.Members{
{
Name: "web",
Runner: NewLoggingRunner(logger.Session("web-runner"), webRunner)},
Runner: concourseCmd.NewLoggingRunner(logger.Session("web-runner"), webRunner)},
{
Name: "worker",
Runner: NewLoggingRunner(logger.Session("worker-runner"), workerRunner)},
Runner: concourseCmd.NewLoggingRunner(logger.Session("worker-runner"), workerRunner)},
}), nil
}

View File

@ -6,10 +6,12 @@ import (
"fmt"
"os"
concourseCmd "github.com/concourse/concourse/cmd"
"github.com/concourse/concourse/atc/atccmd"
"github.com/concourse/concourse/tsa/tsacmd"
"github.com/concourse/flag"
flags "github.com/jessevdk/go-flags"
"github.com/jessevdk/go-flags"
"github.com/tedsuo/ifrit"
"github.com/tedsuo/ifrit/grouper"
"github.com/tedsuo/ifrit/sigmon"
@ -22,7 +24,7 @@ type WebCommand struct {
*tsacmd.TSACommand `group:"TSA Configuration" namespace:"tsa"`
}
func (WebCommand) lessenRequirements(command *flags.Command) {
func (WebCommand) LessenRequirements(command *flags.Command) {
// defaults to atc external URL
command.FindOptionByLongName("tsa-atc-url").Required = false
@ -41,7 +43,7 @@ func (cmd *WebCommand) Execute(args []string) error {
func (cmd *WebCommand) Runner(args []string) (ifrit.Runner, error) {
if cmd.RunCommand.CLIArtifactsDir == "" {
cmd.RunCommand.CLIArtifactsDir = flag.Dir(discoverAsset("fly-assets"))
cmd.RunCommand.CLIArtifactsDir = flag.Dir(concourseCmd.DiscoverAsset("fly-assets"))
}
cmd.populateTSAFlagsFromATCFlags()
@ -60,11 +62,11 @@ func (cmd *WebCommand) Runner(args []string) (ifrit.Runner, error) {
return grouper.NewParallel(os.Interrupt, grouper.Members{
{
Name: "atc",
Runner: NewLoggingRunner(logger.Session("atc-runner"), atcRunner),
Runner: concourseCmd.NewLoggingRunner(logger.Session("atc-runner"), atcRunner),
},
{
Name: "tsa",
Runner: NewLoggingRunner(logger.Session("tsa-runner"), tsaRunner),
Runner: concourseCmd.NewLoggingRunner(logger.Session("tsa-runner"), tsaRunner),
},
}), nil
}

View File

@ -1,4 +1,4 @@
package main
package cmd
import (
"os"
@ -8,7 +8,7 @@ import (
// discoverAsset will find an asset path relative to the executable, assuming
// the executable is installed as /usr/local/concourse/bin/concourse, and the
// asset lives under /usr/local/concourse
func discoverAsset(name string) string {
func DiscoverAsset(name string) string {
self, err := os.Executable()
if err != nil {
return ""

View File

@ -1,4 +1,4 @@
package main
package cmd
import (
"os"

View File

@ -1,11 +1,11 @@
package main_test
package cmd_test
import (
"errors"
"os"
"code.cloudfoundry.org/lager/lagertest"
. "github.com/concourse/concourse/cmd/concourse"
. "github.com/concourse/concourse/cmd"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/tedsuo/ifrit"

View File

@ -323,7 +323,7 @@ func listenForTokenCallback(tokenChannel chan string, errorChannel chan error, p
w.Header().Set("Access-Control-Allow-Origin", targetUrl)
tokenChannel <- r.FormValue("token")
w.WriteHeader(200)
_,_ = fmt.Fprint(w, "token received by fly")
_, _ = fmt.Fprint(w, "token received by fly")
}),
}

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"os"

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"fmt"

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"os"

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"fmt"

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"fmt"
@ -13,6 +13,7 @@ import (
"github.com/concourse/baggageclaim/baggageclaimcmd"
bclient "github.com/concourse/baggageclaim/client"
"github.com/concourse/concourse"
concourseCmd "github.com/concourse/concourse/cmd"
"github.com/concourse/concourse/worker"
"github.com/concourse/flag"
"github.com/tedsuo/ifrit"
@ -70,7 +71,7 @@ func (cmd *WorkerCommand) Execute(args []string) error {
func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) {
if cmd.ResourceTypes == "" {
cmd.ResourceTypes = flag.Dir(discoverAsset("resource-types"))
cmd.ResourceTypes = flag.Dir(concourseCmd.DiscoverAsset("resource-types"))
}
logger, _ := cmd.Logger.Logger("worker")
@ -150,18 +151,18 @@ func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) {
if !cmd.gardenIsExternal() {
members = append(members, grouper.Member{
Name: "garden",
Runner: NewLoggingRunner(logger.Session("garden-runner"), gardenRunner),
Runner: concourseCmd.NewLoggingRunner(logger.Session("garden-runner"), gardenRunner),
})
}
members = append(members, grouper.Members{
{
Name: "baggageclaim",
Runner: NewLoggingRunner(logger.Session("baggageclaim-runner"), baggageclaimRunner),
Runner: concourseCmd.NewLoggingRunner(logger.Session("baggageclaim-runner"), baggageclaimRunner),
},
{
Name: "debug",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("debug-runner"),
http_server.New(
fmt.Sprintf("%s:%d", cmd.DebugBindIP.IP, cmd.DebugBindPort),
@ -171,7 +172,7 @@ func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) {
},
{
Name: "healthcheck",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("healthcheck-runner"),
http_server.New(
fmt.Sprintf("%s:%d", cmd.HealthcheckBindIP.IP, cmd.HealthcheckBindPort),
@ -181,21 +182,21 @@ func (cmd *WorkerCommand) Runner(args []string) (ifrit.Runner, error) {
},
{
Name: "beacon",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("beacon-runner"),
beaconRunner,
),
},
{
Name: "container-sweeper",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("container-sweeper"),
containerSweeper,
),
},
{
Name: "volume-sweeper",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("volume-sweeper"),
volumeSweeper,
),

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"time"

View File

@ -1,4 +1,4 @@
package main
package workercmd
import (
"encoding/json"
@ -15,8 +15,9 @@ import (
"code.cloudfoundry.org/lager"
"code.cloudfoundry.org/localip"
"github.com/concourse/concourse/atc"
concourseCmd "github.com/concourse/concourse/cmd"
"github.com/concourse/flag"
flags "github.com/jessevdk/go-flags"
"github.com/jessevdk/go-flags"
"github.com/tedsuo/ifrit"
"github.com/tedsuo/ifrit/grouper"
)
@ -34,7 +35,7 @@ type GardenBackend struct {
DNS DNSConfig `group:"DNS Proxy Configuration" namespace:"dns-proxy"`
}
func (cmd WorkerCommand) lessenRequirements(prefix string, command *flags.Command) {
func (cmd WorkerCommand) LessenRequirements(prefix string, command *flags.Command) {
// configured as work-dir/volumes
command.FindOptionByLongName(prefix + "baggageclaim-volumes").Required = false
}
@ -76,7 +77,7 @@ func (cmd *WorkerCommand) gardenRunner(logger lager.Logger) (atc.Worker, ifrit.R
}
func (cmd *WorkerCommand) gdnRunner(logger lager.Logger) (ifrit.Runner, error) {
if binDir := discoverAsset("bin"); binDir != "" {
if binDir := concourseCmd.DiscoverAsset("bin"); binDir != "" {
// ensure packaged 'gdn' executable is available in $PATH
err := os.Setenv("PATH", binDir+":"+os.Getenv("PATH"))
if err != nil {
@ -130,7 +131,7 @@ func (cmd *WorkerCommand) gdnRunner(logger lager.Logger) (ifrit.Runner, error) {
members = append(members, grouper.Member{
Name: "dns-proxy",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("dns-proxy-runner"),
dnsProxyRunner,
),
@ -153,7 +154,7 @@ func (cmd *WorkerCommand) gdnRunner(logger lager.Logger) (ifrit.Runner, error) {
members = append(members, grouper.Member{
Name: "gdn",
Runner: NewLoggingRunner(
Runner: concourseCmd.NewLoggingRunner(
logger.Session("gdn-runner"),
cmdRunner{gdnCmd},
),

View File

@ -1,13 +1,13 @@
// +build !linux
package main
package workercmd
import (
"runtime"
"code.cloudfoundry.org/lager"
"github.com/concourse/concourse/atc"
flags "github.com/jessevdk/go-flags"
"github.com/jessevdk/go-flags"
"github.com/tedsuo/ifrit"
)
@ -15,7 +15,7 @@ type GardenBackend struct{}
type Certs struct{}
func (cmd WorkerCommand) lessenRequirements(prefix string, command *flags.Command) {
func (cmd WorkerCommand) LessenRequirements(prefix string, command *flags.Command) {
// created in the work-dir
command.FindOptionByLongName(prefix + "baggageclaim-volumes").Required = false
}