mirror of
https://github.com/yusing/godoxy.git
synced 2025-07-21 20:04:03 +02:00
feat: add AgentProvider implementation and integrate with provider types
This commit is contained in:
parent
cdb3ffe439
commit
95fe294f7d
3 changed files with 46 additions and 2 deletions
34
internal/route/provider/agent.go
Normal file
34
internal/route/provider/agent.go
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
package provider
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/rs/zerolog"
|
||||||
|
"github.com/yusing/go-proxy/agent/pkg/agent"
|
||||||
|
"github.com/yusing/go-proxy/internal/gperr"
|
||||||
|
"github.com/yusing/go-proxy/internal/route"
|
||||||
|
"github.com/yusing/go-proxy/internal/watcher"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AgentProvider struct {
|
||||||
|
*agent.AgentConfig
|
||||||
|
docker ProviderImpl
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *AgentProvider) ShortName() string {
|
||||||
|
return p.AgentConfig.Name()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *AgentProvider) NewWatcher() watcher.Watcher {
|
||||||
|
return p.docker.NewWatcher()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *AgentProvider) IsExplicitOnly() bool {
|
||||||
|
return p.docker.IsExplicitOnly()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *AgentProvider) loadRoutesImpl() (route.Routes, gperr.Error) {
|
||||||
|
return p.docker.loadRoutesImpl()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *AgentProvider) Logger() *zerolog.Logger {
|
||||||
|
return p.docker.Logger()
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
"github.com/yusing/go-proxy/agent/pkg/agent"
|
||||||
"github.com/yusing/go-proxy/internal/gperr"
|
"github.com/yusing/go-proxy/internal/gperr"
|
||||||
"github.com/yusing/go-proxy/internal/route"
|
"github.com/yusing/go-proxy/internal/route"
|
||||||
"github.com/yusing/go-proxy/internal/route/provider/types"
|
"github.com/yusing/go-proxy/internal/route/provider/types"
|
||||||
|
@ -65,8 +66,15 @@ func NewDockerProvider(name string, dockerHost string) *Provider {
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewAgentProvider(cfg *agent.AgentConfig) *Provider {
|
||||||
|
p := newProvider(types.ProviderTypeAgent)
|
||||||
|
agent := &AgentProvider{
|
||||||
|
AgentConfig: cfg,
|
||||||
|
docker: DockerProviderImpl(cfg.Name(), cfg.FakeDockerHost()),
|
||||||
|
}
|
||||||
|
p.ProviderImpl = agent
|
||||||
p.watcher = p.NewWatcher()
|
p.watcher = p.NewWatcher()
|
||||||
return
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) GetType() types.ProviderType {
|
func (p *Provider) GetType() types.ProviderType {
|
||||||
|
@ -78,7 +86,7 @@ func (p *Provider) MarshalText() ([]byte, error) {
|
||||||
return []byte(p.String()), nil
|
return []byte(p.String()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) startRoute(parent task.Parent, r *route.Route) E.Error {
|
func (p *Provider) startRoute(parent task.Parent, r *route.Route) gperr.Error {
|
||||||
err := r.Start(parent)
|
err := r.Start(parent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
delete(p.routes, r.Alias)
|
delete(p.routes, r.Alias)
|
||||||
|
@ -150,6 +158,7 @@ func (p *Provider) loadRoutes() (routes route.Routes, err gperr.Error) {
|
||||||
delete(routes, alias)
|
delete(routes, alias)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
r.FinalizeHomepageConfig()
|
||||||
}
|
}
|
||||||
return routes, errs.Error()
|
return routes, errs.Error()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,4 +5,5 @@ type ProviderType string
|
||||||
const (
|
const (
|
||||||
ProviderTypeDocker ProviderType = "docker"
|
ProviderTypeDocker ProviderType = "docker"
|
||||||
ProviderTypeFile ProviderType = "file"
|
ProviderTypeFile ProviderType = "file"
|
||||||
|
ProviderTypeAgent ProviderType = "agent"
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue