Add :test group to Gemfile (exclude testing gems in production).
Eliminate MicroKernel path lookups from File server

The MK file server had two API endpoints, for OS images, and for
MicroKernel images.  The former was fairly direct - look up a path relative to
the image document root, and serve up the content.

The later was more complex: it would invoke the Razor tool to extract the path
for the component, which was either the kernel or the initrd from the
default MicroKernel.

It would then serve up that content from disk; this gave an abstract URL set
to access that content, unlike the OS images:

    /razor/image/mk/kernel
    /razor/image/mk/initrd

However, the only place that referenced that content was the default
MicroKernel boot script - an iPXE script that was generated by the `boot
default` REST API slice.

Since that is invoked in the content of the engine, it can return the direct
URL for the MicroKernel images in the script, without needing to go through
the indirection.

That, in turn, allows us to eliminate the extra file server API, and remove a
whole bunch of code.  It also eliminates two fork/exec pairs during the boot
process, something that was identifies as costing ~ 1 second under load
in testing.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Update performance tests to reflect new MK load pattern

This updates the microkernel scenario, and the performance simulator, to match
the new paths for the microkernel boot.  Ideally I should teach the simulator
to read a real iPXE script, but for now this will do.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge pull request #220 from fnichol/gemfile-groups

Add :test group to Gemfile (exclude testing gems in production).
Added mailing list and IRC channel

This points users to the Puppet Razor mailing list and IRC
channel when they are looking for help.
Added an optional version configuration to the broker CLI. Puppet broker now consumes the version option on gem install.
Merge pull request #228 from bmarcaur/BrokerVersioning

Added Versioning to the Broker, and Puppet Consumption
Publish the Project Razor project governance documents

This includes a contributing guide for new members of the community, pointers
to the resources we make available, and a list of the committers on
the project.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge pull request #229 from daniel-pittman/community/master/add-contribution-guide-and-governance

Publish the Project Razor project governance documents
Merge pull request #221 from daniel-pittman/perf/master/put-mk-path-in-default-boot-script

Eliminate MicroKernel path lookups from File server
Hoist base Slice class into ProjectRazor::Slice

All the common slice functionality was held in the `ProjectRazor::Slice::Base`
class, which was quite confusing when you consider that every implementation
is-a slice, and they are used in compliance with the Liskov substitution
principal by the rest of the system.

This rewrites the code to implement all the functionality in a base class,
with subclasses nested below it.  There is no change to the capability of the
system, just less surprising code structure.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Pass arguments rather than using global member variables

The main razor script used member variables at global scope where a simple
function argument would do.  This eliminates one of those variables.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
More arguments rather than global variables

This eliminates another global (member of Object) variable from Razor.
There should be no functional changes, just cleaner code.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Perform file to constant translation the Ruby way

The slice definition used some simple meta-programming to transform a slice
name into a Ruby constant, associated with the appropriate class, as well as
to identify the set of available slices by mapping through files on disk.

It didn't quite match the Ruby model for file to constant translation, though,
which made for some surprising class names - it assumed that `.capitalize` was
sufficient, while really you need to split on `_` and rejoin the components
after mapping leading caps across them.

There should be no functional changes from this, just cleaner code.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Simplify condition handling around missing slices

Now, rather than doing a whole lot of pre-testing of slices to determine if
they are valid we just go right ahead and try and use them.  When they are
found missing we report that nicely, and otherwise carry on.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Remove "slices loaded" and associated global state

The code around "loaded" slices was a bit of a mess: it actually looked to see
what was available on disk, not just loaded.  It also used global state to
pass data between methods that were separated in time, but not
actually decoupled.

With the rework of condition handling for missing slices we can eliminate most
of that, then inline the "discover available slices" facility into the method
that prints available slices.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Move CLI handling into a class, not a script

This moves the command line handling and dispatch out of the `bin/razor`
script and into a class.  There is no current functional change, but rather a
cleaner separation of objects.

This opens the door to better testing of the command line dispatch related
code, to ensure that it behaves correctly, than the script permitted.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Refactor the CLI handling to be a little cleaner

This is part of a series of refactorings that should have no externally
visible effect, but which make the CLI handling substantially
cleaner internally.

This replaces an init method with object initialization.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Adding openssh-server to preseed.erb for precise
Merge pull request #231 from bunchc/precise_preseed

Adding openssh-server to preseed.erb for precise