James Shubin 2e718c0e9d resources: Improve notification system and notify refreshes
Resources can send "refresh" notifications along edges. These messages
are sent whenever the upstream (initiating vertex) changes state. When
the changed state propagates downstream, it will be paired with a
refresh flag which can be queried in the CheckApply method of that
resource.

Future work will include a stateful refresh tracking mechanism so that
if a refresh event is generated and not consumed, it will be saved
across an interrupt (shutdown) or a crash so that it can be re-applied
on the subsequent run. This is important because the unapplied refresh
is a form of hysteresis which needs to be tracked and remembered or we
won't be able to determine that the state is wrong!

Still to do:
* Update the autogrouping code to handle the edge notify properties!
* Actually finish the stateful bool code
2016-12-03 01:35:31 -05:00
2016-09-18 05:47:33 -04:00
2016-10-18 23:03:55 -04:00
2016-05-21 12:57:28 -04:00
2016-09-26 12:30:28 -04:00
2016-05-21 11:08:14 +02:00
2016-11-07 13:22:40 +01:00
2016-04-26 02:19:24 +00:00
2015-09-25 01:16:03 -04:00
2016-01-08 02:43:38 -05:00
2016-09-26 12:30:28 -04:00
2016-10-23 20:23:04 -04:00
2016-01-04 21:00:13 -05:00
2016-09-12 02:40:09 +02:00
2015-09-25 01:16:03 -04:00
2016-12-03 00:06:03 -05:00
2015-09-25 01:16:03 -04:00
2016-10-19 20:10:11 -04:00
2015-10-02 11:05:19 -04:00
2016-04-07 21:08:26 -04:00
2016-09-27 05:07:34 -04:00

mgmt: next generation config management!

mgmt!

Go Report Card Build Status Documentation GoDoc IRC Jenkins COPR arch

Community:

Come join us on IRC in #mgmtconfig on Freenode! You may like the #mgmtconfig hashtag if you're on Twitter.

Status:

Mgmt is a fairly new project. We're working towards being minimally useful for production environments. We aren't feature complete for what we'd consider a 1.x release yet. With your help you'll be able to influence our design and get us there sooner!

Questions:

Please join the #mgmtconfig IRC community! If you have a well phrased question that might benefit others, consider asking it by sending a patch to the documentation FAQ section. I'll merge your question, and a patch with the answer!

Quick start:

  • Make sure you have golang version 1.6 or greater installed.
  • If you do not have a GOPATH yet, create one and export it:
mkdir $HOME/gopath
export GOPATH=$HOME/gopath
  • You might also want to add the GOPATH to your ~/.bashrc or ~/.profile.
  • For more information you can read the GOPATH documentation.
  • Next download the mgmt code base, and switch to that directory:
go get -u github.com/purpleidea/mgmt
cd $GOPATH/src/github.com/purpleidea/mgmt
  • Get the remaining golang deps with go get ./..., or run make deps if you're comfortable with how we install them.
  • Run make build to get a freshly built mgmt binary.
  • Run time ./mgmt run --yaml examples/graph0.yaml --converged-timeout=5 --tmp-prefix to try out a very simple example!
  • To run continuously in the default mode of operation, omit the --converged-timeout option.
  • Have fun hacking on our future technology!

Examples:

Please look in the examples/ folder for more examples!

Documentation:

Please see: the manually created DOCUMENTATION.md (also available as PDF) and the automatically generated GoDoc documentation.

Roadmap:

Please see: TODO.md for a list of upcoming work and TODO items. Please get involved by working on one of these items or by suggesting something else! Feel free to grab one of the straightforward #mgmtlove issues if you're a first time contributor to the project or if you're unsure about what to hack on!

Bugs:

Please set the DEBUG constant in main.go to true, and post the logs when you report the issue. Bonus points if you provide a shell or OMV reproducible test case. Feel free to read my article on debugging golang programs.

Dependencies:

  • golang 1.6 or higher (required, available in most distros)
  • golang libraries (required, available with go get)
go get github.com/coreos/etcd/client
go get gopkg.in/yaml.v2
go get gopkg.in/fsnotify.v1
go get github.com/urfave/cli
go get github.com/coreos/go-systemd/dbus
go get github.com/coreos/go-systemd/util
go get github.com/coreos/pkg/capnslog
go get github.com/rgbkrk/libvirt-go
  • stringer (optional for building), available as a package on some platforms, otherwise via go get
go get golang.org/x/tools/cmd/stringer
  • pandoc (optional, for building a pdf of the documentation)
  • graphviz (optional, for building a visual representation of the graph)

Patches:

We'd love to have your patches! Please send them by email, or as a pull request.

On the web:

Happy hacking!

Description
No description provided
Readme 12 MiB
Languages
Go 95%
Shell 2.3%
Yacc 0.9%
Makefile 0.8%
JavaScript 0.4%
Other 0.6%