Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds Marathon support. #4415

Merged
merged 5 commits into from
Jan 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion cmd/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ import (
"github.com/containous/traefik/old/provider/etcd"
"github.com/containous/traefik/old/provider/eureka"
"github.com/containous/traefik/old/provider/kubernetes"
"github.com/containous/traefik/old/provider/marathon"
"github.com/containous/traefik/old/provider/mesos"
"github.com/containous/traefik/old/provider/rancher"
"github.com/containous/traefik/old/provider/zk"
"github.com/containous/traefik/ping"
"github.com/containous/traefik/provider/docker"
"github.com/containous/traefik/provider/file"
"github.com/containous/traefik/provider/marathon"
"github.com/containous/traefik/provider/rest"
"github.com/containous/traefik/tracing/datadog"
"github.com/containous/traefik/tracing/jaeger"
Expand Down Expand Up @@ -170,6 +170,7 @@ func NewTraefikDefaultPointersConfiguration() *TraefikConfiguration {
defaultMarathon.ResponseHeaderTimeout = parse.Duration(60 * time.Second)
defaultMarathon.TLSHandshakeTimeout = parse.Duration(5 * time.Second)
defaultMarathon.KeepAlive = parse.Duration(10 * time.Second)
defaultMarathon.DefaultRule = marathon.DefaultTemplateRule

// default Consul
var defaultConsul consul.Provider
Expand Down
2 changes: 1 addition & 1 deletion config/static/static_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ import (
"github.com/containous/traefik/old/provider/etcd"
"github.com/containous/traefik/old/provider/eureka"
"github.com/containous/traefik/old/provider/kubernetes"
"github.com/containous/traefik/old/provider/marathon"
"github.com/containous/traefik/old/provider/mesos"
"github.com/containous/traefik/old/provider/rancher"
"github.com/containous/traefik/old/provider/zk"
"github.com/containous/traefik/ping"
acmeprovider "github.com/containous/traefik/provider/acme"
"github.com/containous/traefik/provider/docker"
"github.com/containous/traefik/provider/file"
"github.com/containous/traefik/provider/marathon"
"github.com/containous/traefik/provider/rest"
"github.com/containous/traefik/tls"
"github.com/containous/traefik/tracing/datadog"
Expand Down
6 changes: 2 additions & 4 deletions integration/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,8 @@ func init() {
// check.Suite(&ConsulSuite{})
// check.Suite(&DynamoDBSuite{})
// check.Suite(&EurekaSuite{})
// check.Suite(&MarathonSuite{})
// check.Suite(&MarathonSuite15{})
// check.Suite(&MesosSuite{})

// FIXME use docker

// FIXME use consulcatalog
// check.Suite(&ConstraintSuite{})

Expand All @@ -64,6 +60,8 @@ func init() {
check.Suite(&HostResolverSuite{})
check.Suite(&HTTPSSuite{})
check.Suite(&LogRotationSuite{})
check.Suite(&MarathonSuite{})
check.Suite(&MarathonSuite15{})
check.Suite(&RateLimitSuite{})
check.Suite(&RestSuite{})
check.Suite(&RetrySuite{})
Expand Down
5 changes: 2 additions & 3 deletions integration/marathon15_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"time"

"github.com/containous/traefik/integration/try"
"github.com/containous/traefik/old/provider/label"
"github.com/gambol99/go-marathon"
"github.com/go-check/check"
checker "github.com/vdemeester/shakers"
Expand Down Expand Up @@ -98,7 +97,7 @@ func (s *MarathonSuite15) TestConfigurationUpdate(c *check.C) {
CPU(0.1).
Memory(32).
EmptyNetworks().
AddLabel(label.TraefikFrontendRule, "PathPrefix:/service")
AddLabel("traefik.Routers.rt.Rule", "PathPrefix:/service")
app.Container.
Expose(80).
Docker.
Expand All @@ -118,7 +117,7 @@ func (s *MarathonSuite15) TestConfigurationUpdate(c *check.C) {
CPU(0.1).
Memory(32).
EmptyNetworks().
AddLabel(label.Prefix+"app"+label.TraefikFrontendRule, "PathPrefix:/app")
AddLabel("traefik.Routers.app.Rule", "PathPrefix:/app")
app.Container.
Expose(80).
Docker.
Expand Down
5 changes: 2 additions & 3 deletions integration/marathon_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"time"

"github.com/containous/traefik/integration/try"
"github.com/containous/traefik/old/provider/label"
"github.com/gambol99/go-marathon"
"github.com/go-check/check"
checker "github.com/vdemeester/shakers"
Expand Down Expand Up @@ -109,7 +108,7 @@ func (s *MarathonSuite) TestConfigurationUpdate(c *check.C) {
Name("/whoami").
CPU(0.1).
Memory(32).
AddLabel(label.TraefikFrontendRule, "PathPrefix:/service")
AddLabel("traefik.Routers.rt.Rule", "PathPrefix:/service")
app.Container.Docker.Bridged().
Expose(80).
Container("containous/whoami")
Expand All @@ -126,7 +125,7 @@ func (s *MarathonSuite) TestConfigurationUpdate(c *check.C) {
Name("/whoami").
CPU(0.1).
Memory(32).
AddLabel(label.Prefix+"app"+label.TraefikFrontendRule, "PathPrefix:/app")
AddLabel("traefik.Routers.app.Rule", "PathPrefix:/app")
app.Container.Docker.Bridged().
Expose(80).
Container("containous/whoami")
Expand Down
61 changes: 60 additions & 1 deletion log/deprecated.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package log

import "github.com/sirupsen/logrus"
import (
"bufio"
"io"
"runtime"

"github.com/sirupsen/logrus"
)

// Debug logs a message at level Debug on the standard logger.
// Deprecated
Expand Down Expand Up @@ -78,3 +84,56 @@ func Fatalf(format string, args ...interface{}) {
func AddHook(hook logrus.Hook) {
logrus.AddHook(hook)
}

// CustomWriterLevel logs writer for a specific level. (with a custom scanner buffer size.)
// adapted from github.com/Sirupsen/logrus/writer.go
func CustomWriterLevel(level logrus.Level, maxScanTokenSize int) *io.PipeWriter {
reader, writer := io.Pipe()

var printFunc func(args ...interface{})

switch level {
case logrus.DebugLevel:
printFunc = Debug
case logrus.InfoLevel:
printFunc = Info
case logrus.WarnLevel:
printFunc = Warn
case logrus.ErrorLevel:
printFunc = Error
case logrus.FatalLevel:
printFunc = Fatal
case logrus.PanicLevel:
printFunc = Panic
default:
printFunc = mainLogger.Print
}

go writerScanner(reader, maxScanTokenSize, printFunc)
runtime.SetFinalizer(writer, writerFinalizer)

return writer
}

// extract from github.com/Sirupsen/logrus/writer.go
// Hack the buffer size
func writerScanner(reader io.ReadCloser, scanTokenSize int, printFunc func(args ...interface{})) {
scanner := bufio.NewScanner(reader)

if scanTokenSize > bufio.MaxScanTokenSize {
buf := make([]byte, bufio.MaxScanTokenSize)
scanner.Buffer(buf, scanTokenSize)
}

for scanner.Scan() {
printFunc(scanner.Text())
}
if err := scanner.Err(); err != nil {
Errorf("Error while reading from Writer: %s", err)
}
reader.Close()
}

func writerFinalizer(writer *io.PipeWriter) {
writer.Close()
}
2 changes: 0 additions & 2 deletions old/configuration/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"github.com/containous/traefik/old/provider/etcd"
"github.com/containous/traefik/old/provider/eureka"
"github.com/containous/traefik/old/provider/kubernetes"
"github.com/containous/traefik/old/provider/marathon"
"github.com/containous/traefik/old/provider/mesos"
"github.com/containous/traefik/old/provider/rancher"
"github.com/containous/traefik/old/provider/rest"
Expand Down Expand Up @@ -88,7 +87,6 @@ type GlobalConfiguration struct {
KeepTrailingSlash bool `description:"Do not remove trailing slash." export:"true"` // Deprecated
Docker *docker.Provider `description:"Enable Docker backend with default settings" export:"true"`
File *file.Provider `description:"Enable File backend with default settings" export:"true"`
Marathon *marathon.Provider `description:"Enable Marathon backend with default settings" export:"true"`
Consul *consul.Provider `description:"Enable Consul backend with default settings" export:"true"`
ConsulCatalog *consulcatalog.Provider `description:"Enable Consul catalog backend with default settings" export:"true"`
Etcd *etcd.Provider `description:"Enable Etcd backend with default settings" export:"true"`
Expand Down