mirror/merlin
Andrew Wang 8d572a0c3f split into packages 2021-12-11 18:28:09 -05:00
..
arthur split into packages 2021-12-11 18:28:09 -05:00
config split into packages 2021-12-11 18:28:09 -05:00
logger split into packages 2021-12-11 18:28:09 -05:00
sync split into packages 2021-12-11 18:28:09 -05:00
test fix gitignore 2021-09-09 00:31:28 -04:00
.gitignore write merlin.go 2021-09-17 00:31:49 -04:00
README.md fix nil dereference and start adding unit tests 2021-12-06 00:41:12 -05:00
go.mod write merlin.go 2021-09-17 00:31:49 -04:00
go.sum write merlin.go 2021-09-17 00:31:49 -04:00
merlin-config-all.ini start merlin_old and make changes to merlin go 2021-11-01 23:34:15 -04:00
merlin-config.ini write merlin.go 2021-09-17 00:31:49 -04:00
merlin.go split into packages 2021-12-11 18:28:09 -05:00

README.md

Merlin

Build Status

This folder contains the code for merlin (which does the actual syncing) and arthur (which sends commands to merlin).

TODO FOR SYNC SCRIPTS

  • apache
  • archlinux
  • badperms
  • cdimage
  • ceph
  • chmod
  • debian
  • debian-cd
  • gentoo
  • s3
  • ssh
  • standard
  • standard-ipv6
  • wget

TODO

  • detect if an rsync process is stuck (**)
  • place each rsync process in a separate cgroup (***)

** This is optional. If you decide to implement it, you may want to watch the stdout/stderr of the rsync process.

*** I need to do more research into this - don't worry about it for now.

Completed

  • write process manager
  • save state (last attempted time, last attempted status) for each repo, and restore state on startup (e.g. use JSON/INI file for each repo)
  • calculate difference between the scheduled time of a job and the time at which it actually ran; log this
  • add all repos to merlin-config.ini (*)
  • handle termination signals in merlin (SIGINT, SIGTERM); close stopChan for this
  • listen on Unix socket in merlin
  • implement arthur.go (commands: sync and status)
  • allow dynamic reloading in merlin
  • use separate log file for each child process (currently sharing stdout/stderr with parent)
  • implement zfssync in merlin (just invoke the existing Python script)

* there are some parts that I don't understand (trace_host, csc-sync-ceph, csc-sync-saltstack, etc)