Skip to content

Commit

Permalink
fix: allow to start Traefik even if plugin services have an issue
Browse files Browse the repository at this point in the history
  • Loading branch information
ldez authored and traefiker committed Sep 2, 2022
1 parent d3e4d56 commit 3890ac6
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
6 changes: 5 additions & 1 deletion cmd/traefik/traefik.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,16 @@ func setupServer(staticConfiguration *static.Configuration) (*server.Server, err

pluginBuilder, err := createPluginBuilder(staticConfiguration)
if err != nil {
return nil, err
log.WithoutContext().WithError(err).Error("Plugins are disabled because an error has occurred.")
}

// Providers plugins

for name, conf := range staticConfiguration.Providers.Plugin {
if pluginBuilder == nil {
break
}

p, err := pluginBuilder.BuildProvider(name, conf)
if err != nil {
return nil, fmt.Errorf("plugin: failed to build provider: %w", err)
Expand Down
17 changes: 9 additions & 8 deletions pkg/plugins/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,12 @@ func (c *Client) Download(ctx context.Context, pName, pVersion string) (string,

defer func() { _ = resp.Body.Close() }()

if resp.StatusCode == http.StatusOK {
switch resp.StatusCode {
case http.StatusNotModified:
// noop
return hash, nil

case http.StatusOK:
err = os.MkdirAll(filepath.Dir(filename), 0o755)
if err != nil {
return "", fmt.Errorf("failed to create directory: %w", err)
Expand All @@ -189,15 +194,11 @@ func (c *Client) Download(ctx context.Context, pName, pVersion string) (string,
}

return hash, nil
}

if resp.StatusCode == http.StatusNotModified {
// noop
return hash, nil
default:
data, _ := io.ReadAll(resp.Body)
return "", fmt.Errorf("error: %d: %s", resp.StatusCode, string(data))
}

data, _ := io.ReadAll(resp.Body)
return "", fmt.Errorf("error: %d: %s", resp.StatusCode, string(data))
}

// Check checks the plugin archive integrity.
Expand Down
3 changes: 2 additions & 1 deletion pkg/server/middleware/middlewares.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"net/http"
"reflect"
"strings"

"github.com/containous/alice"
Expand Down Expand Up @@ -340,7 +341,7 @@ func (b *Builder) buildConstructor(ctx context.Context, middlewareName string) (
}

// Plugin
if config.Plugin != nil {
if config.Plugin != nil && !reflect.ValueOf(b.pluginBuilder).IsNil() { // Using "reflect" because "b.pluginBuilder" is an interface.
if middleware != nil {
return nil, badConf
}
Expand Down

0 comments on commit 3890ac6

Please sign in to comment.