mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-19 20:32:35 +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"
|
||||
|
||||
"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/route/provider/types"
|
||||
|
@ -65,8 +66,15 @@ func NewDockerProvider(name string, dockerHost string) *Provider {
|
|||
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()
|
||||
return
|
||||
return p
|
||||
}
|
||||
|
||||
func (p *Provider) GetType() types.ProviderType {
|
||||
|
@ -78,7 +86,7 @@ func (p *Provider) MarshalText() ([]byte, error) {
|
|||
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)
|
||||
if err != nil {
|
||||
delete(p.routes, r.Alias)
|
||||
|
@ -150,6 +158,7 @@ func (p *Provider) loadRoutes() (routes route.Routes, err gperr.Error) {
|
|||
delete(routes, alias)
|
||||
continue
|
||||
}
|
||||
r.FinalizeHomepageConfig()
|
||||
}
|
||||
return routes, errs.Error()
|
||||
}
|
||||
|
|
|
@ -5,4 +5,5 @@ type ProviderType string
|
|||
const (
|
||||
ProviderTypeDocker ProviderType = "docker"
|
||||
ProviderTypeFile ProviderType = "file"
|
||||
ProviderTypeAgent ProviderType = "agent"
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue