About dsadmin
Dsadmin is the shiny integrated administration system we use over here at dotsrc.org. It's still far from complete, but the groundwork is laid, parts are already in use and additional functionality is relatively easily added.
Existing and planned tasks include:
- Managing mirrors, including automated updates and status information (done)
- Managing DNS aliases (done)
- Managing general info on hosted projects (done)
- Managing apache virtual hosts for hosted projects (almost done)
- Managing (creating, destroying, sometimes editing) all kinds of services for hosted projects -- mailing lists, mysql databases, users (and their homedirs), cvs and subversion repositories, ...
- Collecting detailed status information on hosted projects -- resource usage, activity etc
Obviously there's still a lot to be done, but most of that can be done rather easily, step by step.
More Information
Since people tend to like colorful pictures, I've taken a set of screenshots. They are not particularly meaningful of course, as most of the functionality is of the "messin' around in the system" type.
If you're more curious, there's also some developer documentation. Nothing very extensive I'm afraid, since (a) I am (and most likely will stay) the only person working on this and (b) dsadmin is custom software for dotsrc.org, so interest to others is expected to be, uh, "limited"...
And if you're really curious, you can have a look at the source itself. Anonymous access to the svn repository is not set up yet, but there's a snapshot you can download. Alternatively you can simply browse the copy of the source tree on this site.
Trivia
This is the output of "rake stats" (as of 2006-11-11):
+----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Helpers | 163 | 102 | 1 | 13 | 13 | 5 | | Controllers | 603 | 324 | 8 | 47 | 5 | 4 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Functional tests | 675 | 365 | 17 | 48 | 2 | 5 | | Models | 533 | 266 | 9 | 40 | 4 | 4 | | Unit tests | 4059 | 2392 | 65 | 224 | 3 | 8 | | Libraries | 9850 | 5224 | 120 | 553 | 4 | 7 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 15883 | 8673 | 220 | 925 | 4 | 7 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 5916 Test LOC: 2757 Code to Test Ratio: 1:0.5
As you can see, it's not quite a trivial project anymore. The figure of 138 non-test classes is probably a bit higher
than the actual value though -- I'm counting 51 source files in lib/, and only a few of those contain multiple classes.
The numbers also show that I should invest some more time in writing tests (especially since ruby code requires lots of tests), but considering that much of the dsadmin code is bloody hard to cover in automated tests(*), I think I'm doing reasonably fine.
(*) Think stuff like filesystem operations, network operations, distributed processing, exec()ing of other programs, timed execution etc.
And of course sometimes all of that (e.g. once a day telling another admind instance to execute the lftp-mirror.rb
wrapper script which executes lftp which mirrors some directory tree from a remote server, then execute du to get the
actual size of the tree, and finally write a file containing some timestamp information so that the upstream mirror can see that we are
in fact up-to-date).
Author and Stuff
Dsadmin has been (and is being) developed by me, Christian Reiniger.
The code is under the GPL. That should be noted in all source files anyway, but now you have it conveniently here as well.
