mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-20 15:31:24 +02:00
fix route provider name
This commit is contained in:
@@ -19,7 +19,6 @@ import (
|
||||
|
||||
type DockerProvider struct {
|
||||
name, dockerHost string
|
||||
ExplicitOnly bool
|
||||
l zerolog.Logger
|
||||
}
|
||||
|
||||
@@ -30,14 +29,13 @@ const (
|
||||
|
||||
var ErrAliasRefIndexOutOfRange = E.New("index out of range")
|
||||
|
||||
func DockerProviderImpl(name, dockerHost string, explicitOnly bool) (ProviderImpl, error) {
|
||||
func DockerProviderImpl(name, dockerHost string) (ProviderImpl, error) {
|
||||
if dockerHost == common.DockerHostFromEnv {
|
||||
dockerHost = common.GetEnvString("DOCKER_HOST", client.DefaultDockerHost)
|
||||
}
|
||||
return &DockerProvider{
|
||||
name,
|
||||
dockerHost,
|
||||
explicitOnly,
|
||||
logger.With().Str("type", "docker").Str("name", name).Logger(),
|
||||
}, nil
|
||||
}
|
||||
@@ -46,6 +44,14 @@ func (p *DockerProvider) String() string {
|
||||
return "docker@" + p.name
|
||||
}
|
||||
|
||||
func (p *DockerProvider) ShortName() string {
|
||||
return p.name
|
||||
}
|
||||
|
||||
func (p *DockerProvider) IsExplicitOnly() bool {
|
||||
return p.name[len(p.name)-1] == '!'
|
||||
}
|
||||
|
||||
func (p *DockerProvider) Logger() *zerolog.Logger {
|
||||
return &p.l
|
||||
}
|
||||
@@ -92,7 +98,7 @@ func (p *DockerProvider) loadRoutesImpl() (route.Routes, E.Error) {
|
||||
|
||||
func (p *DockerProvider) shouldIgnore(container *docker.Container) bool {
|
||||
return container.IsExcluded ||
|
||||
!container.IsExplicit && p.ExplicitOnly ||
|
||||
!container.IsExplicit && p.IsExplicitOnly() ||
|
||||
!container.IsExplicit && container.IsDatabase ||
|
||||
strings.HasSuffix(container.ContainerName, "-old")
|
||||
}
|
||||
|
||||
@@ -39,6 +39,12 @@ func makeEntries(cont *types.Container, dockerHostIP ...string) route.RawEntries
|
||||
return entries
|
||||
}
|
||||
|
||||
func TestExplicitOnly(t *testing.T) {
|
||||
p, err := NewDockerProvider("a!", "")
|
||||
ExpectNoError(t, err)
|
||||
ExpectTrue(t, p.IsExplicitOnly())
|
||||
}
|
||||
|
||||
func TestApplyLabel(t *testing.T) {
|
||||
pathPatterns := `
|
||||
- /
|
||||
|
||||
@@ -3,6 +3,7 @@ package provider
|
||||
import (
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/yusing/go-proxy/internal/common"
|
||||
@@ -48,6 +49,14 @@ func (p *FileProvider) String() string {
|
||||
return p.fileName
|
||||
}
|
||||
|
||||
func (p *FileProvider) ShortName() string {
|
||||
return strings.Split(p.fileName, ".")[0]
|
||||
}
|
||||
|
||||
func (p *FileProvider) IsExplicitOnly() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (p *FileProvider) Logger() *zerolog.Logger {
|
||||
return &p.l
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"path"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
@@ -21,7 +20,6 @@ type (
|
||||
Provider struct {
|
||||
ProviderImpl `json:"-"`
|
||||
|
||||
name string
|
||||
t types.ProviderType
|
||||
routes R.Routes
|
||||
|
||||
@@ -29,6 +27,8 @@ type (
|
||||
}
|
||||
ProviderImpl interface {
|
||||
fmt.Stringer
|
||||
ShortName() string
|
||||
IsExplicitOnly() bool
|
||||
loadRoutesImpl() (R.Routes, E.Error)
|
||||
NewWatcher() W.Watcher
|
||||
Logger() *zerolog.Logger
|
||||
@@ -46,9 +46,8 @@ const (
|
||||
|
||||
var ErrEmptyProviderName = errors.New("empty provider name")
|
||||
|
||||
func newProvider(name string, t types.ProviderType) *Provider {
|
||||
func newProvider(t types.ProviderType) *Provider {
|
||||
return &Provider{
|
||||
name: name,
|
||||
t: t,
|
||||
routes: R.NewRoutes(),
|
||||
}
|
||||
@@ -59,7 +58,7 @@ func NewFileProvider(filename string) (p *Provider, err error) {
|
||||
if name == "" {
|
||||
return nil, ErrEmptyProviderName
|
||||
}
|
||||
p = newProvider(strings.ReplaceAll(name, ".", "_"), types.ProviderTypeFile)
|
||||
p = newProvider(types.ProviderTypeFile)
|
||||
p.ProviderImpl, err = FileProviderImpl(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -73,8 +72,8 @@ func NewDockerProvider(name string, dockerHost string) (p *Provider, err error)
|
||||
return nil, ErrEmptyProviderName
|
||||
}
|
||||
|
||||
p = newProvider(name, types.ProviderTypeDocker)
|
||||
p.ProviderImpl, err = DockerProviderImpl(name, dockerHost, p.IsExplicitOnly())
|
||||
p = newProvider(types.ProviderTypeDocker)
|
||||
p.ProviderImpl, err = DockerProviderImpl(name, dockerHost)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -82,14 +81,6 @@ func NewDockerProvider(name string, dockerHost string) (p *Provider, err error)
|
||||
return
|
||||
}
|
||||
|
||||
func (p *Provider) IsExplicitOnly() bool {
|
||||
return p.name[len(p.name)-1] == '!'
|
||||
}
|
||||
|
||||
func (p *Provider) GetName() string {
|
||||
return p.name
|
||||
}
|
||||
|
||||
func (p *Provider) GetType() types.ProviderType {
|
||||
return p.t
|
||||
}
|
||||
@@ -111,7 +102,7 @@ func (p *Provider) startRoute(parent task.Parent, r *R.Route) E.Error {
|
||||
|
||||
// Start implements task.TaskStarter.
|
||||
func (p *Provider) Start(parent task.Parent) E.Error {
|
||||
t := parent.Subtask("provider."+p.name, false)
|
||||
t := parent.Subtask("provider."+p.String(), false)
|
||||
|
||||
// routes and event queue will stop on config reload
|
||||
errs := p.routes.CollectErrorsParallel(
|
||||
|
||||
Reference in New Issue
Block a user