mirror of
https://github.com/tuna/tunasync.git
synced 2025-06-15 14:12:47 +00:00
feature(worker): implemented mirror role (master/slave) option
This commit is contained in:
parent
8399417880
commit
56459f2ce0
@ -29,6 +29,7 @@ command = "/tmp/tunasync/bin/myrsync2.sh"
|
|||||||
upstream = "https://aosp.google.com/"
|
upstream = "https://aosp.google.com/"
|
||||||
interval = 2
|
interval = 2
|
||||||
mirror_dir = "/tmp/tunasync/git/AOSP"
|
mirror_dir = "/tmp/tunasync/git/AOSP"
|
||||||
|
role = "slave"
|
||||||
[mirrors.env]
|
[mirrors.env]
|
||||||
REPO = "/usr/local/bin/aosp-repo"
|
REPO = "/usr/local/bin/aosp-repo"
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ type mirrorConfig struct {
|
|||||||
MirrorDir string `toml:"mirror_dir"`
|
MirrorDir string `toml:"mirror_dir"`
|
||||||
LogDir string `toml:"log_dir"`
|
LogDir string `toml:"log_dir"`
|
||||||
Env map[string]string `toml:"env"`
|
Env map[string]string `toml:"env"`
|
||||||
|
Role string `toml:"role"`
|
||||||
|
|
||||||
ExecOnSuccess string `toml:"exec_on_success"`
|
ExecOnSuccess string `toml:"exec_on_success"`
|
||||||
ExecOnFailure string `toml:"exec_on_failure"`
|
ExecOnFailure string `toml:"exec_on_failure"`
|
||||||
|
@ -44,6 +44,7 @@ type mirrorProvider interface {
|
|||||||
WorkingDir() string
|
WorkingDir() string
|
||||||
LogDir() string
|
LogDir() string
|
||||||
LogFile() string
|
LogFile() string
|
||||||
|
IsMaster() bool
|
||||||
|
|
||||||
// enter context
|
// enter context
|
||||||
EnterContext() *Context
|
EnterContext() *Context
|
||||||
@ -59,6 +60,7 @@ type baseProvider struct {
|
|||||||
ctx *Context
|
ctx *Context
|
||||||
name string
|
name string
|
||||||
interval time.Duration
|
interval time.Duration
|
||||||
|
isMaster bool
|
||||||
|
|
||||||
cmd *cmdJob
|
cmd *cmdJob
|
||||||
isRunning atomic.Value
|
isRunning atomic.Value
|
||||||
@ -92,6 +94,10 @@ func (p *baseProvider) Interval() time.Duration {
|
|||||||
return p.interval
|
return p.interval
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *baseProvider) IsMaster() bool {
|
||||||
|
return p.isMaster
|
||||||
|
}
|
||||||
|
|
||||||
func (p *baseProvider) WorkingDir() string {
|
func (p *baseProvider) WorkingDir() string {
|
||||||
if v, ok := p.ctx.Get(_WorkingDirKey); ok {
|
if v, ok := p.ctx.Get(_WorkingDirKey); ok {
|
||||||
if s, ok := v.(string); ok {
|
if s, ok := v.(string); ok {
|
||||||
|
@ -90,6 +90,16 @@ func (w *Worker) initProviders() {
|
|||||||
}
|
}
|
||||||
logDir = formatLogDir(logDir, mirror)
|
logDir = formatLogDir(logDir, mirror)
|
||||||
|
|
||||||
|
// IsMaster
|
||||||
|
isMaster := true
|
||||||
|
if mirror.Role == "slave" {
|
||||||
|
isMaster = false
|
||||||
|
} else {
|
||||||
|
if mirror.Role != "" && mirror.Role != "master" {
|
||||||
|
logger.Warningf("Invalid role configuration for %s", mirror.Name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var provider mirrorProvider
|
var provider mirrorProvider
|
||||||
|
|
||||||
switch mirror.Provider {
|
switch mirror.Provider {
|
||||||
@ -105,6 +115,7 @@ func (w *Worker) initProviders() {
|
|||||||
env: mirror.Env,
|
env: mirror.Env,
|
||||||
}
|
}
|
||||||
p, err := newCmdProvider(pc)
|
p, err := newCmdProvider(pc)
|
||||||
|
p.isMaster = isMaster
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -123,6 +134,7 @@ func (w *Worker) initProviders() {
|
|||||||
interval: time.Duration(mirror.Interval) * time.Minute,
|
interval: time.Duration(mirror.Interval) * time.Minute,
|
||||||
}
|
}
|
||||||
p, err := newRsyncProvider(rc)
|
p, err := newRsyncProvider(rc)
|
||||||
|
p.isMaster = isMaster
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -142,6 +154,7 @@ func (w *Worker) initProviders() {
|
|||||||
interval: time.Duration(mirror.Interval) * time.Minute,
|
interval: time.Duration(mirror.Interval) * time.Minute,
|
||||||
}
|
}
|
||||||
p, err := newTwoStageRsyncProvider(rc)
|
p, err := newTwoStageRsyncProvider(rc)
|
||||||
|
p.isMaster = isMaster
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -395,7 +408,7 @@ func (w *Worker) updateStatus(jobMsg jobMessage) {
|
|||||||
smsg := MirrorStatus{
|
smsg := MirrorStatus{
|
||||||
Name: jobMsg.name,
|
Name: jobMsg.name,
|
||||||
Worker: w.cfg.Global.Name,
|
Worker: w.cfg.Global.Name,
|
||||||
IsMaster: true,
|
IsMaster: p.IsMaster(),
|
||||||
Status: jobMsg.status,
|
Status: jobMsg.status,
|
||||||
Upstream: p.Upstream(),
|
Upstream: p.Upstream(),
|
||||||
Size: "unknown",
|
Size: "unknown",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user