69fbcfb13d | ||
---|---|---|
.. | ||
arthur | ||
config | ||
logger | ||
sync | ||
test | ||
.gitignore | ||
README.md | ||
go.mod | ||
go.sum | ||
merlin-config-all.ini | ||
merlin-config.ini | ||
merlin.go |
README.md
Merlin
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
- ensure that the proper permissions (file mode, group, user) are used
- 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)