The swift pipeline is commonly used to plug
capabilities in.
This pipeline should be implemented in a way that
is easier to extend as people desire additional
pipelines.
This commit implements classes that can be used
to configure the following pipelines:
- proxy::cache
- proxy::healthcheck
- proxy::keystone
- proxy::swauth
It also reimplements swift::proxy to utilize those
pipelines for configuration.
This commit performs a refactor of the
swift::storage::config to use fragments.
Updates server templates
- makes workers,user, and mount_checks configurable
- adds a default for concurrency
- makes the pipeline configurable
- remove vm_test_mode flag
Updates swift::storage::server to use fragments for
the config file.
This has been refactored to allow the end user a
greater level of flexibility over how they can
configure custom plugins for swift.
Also adds additional class params: pipeline,
mount_check, user, workers, concurrency.
Update the unit tests for swift::storage:server
I was using older versions of the Ubuntu packages
that shipped with broken upstart scripts.
I am removing these patches now that I am using packages
that work.
Also updates the spec tests to account for the changes.
This commit adds support for fedora.
It introduces a params namespace class
to hold data differences between ubuntu and fedora.
It also moves the xfs packages into their own class (swift::xfs)
I am not so sure that having multiple resource
types in the same file is supported as of 2.7.11
I am refactoring this code so that the upstart define
resides in its own file according to our standards.
This commit adds puppet code to handle syncing of the ring
databases.
The class swift::ringserver is used to set up an rsync server
that serve out the ring databases.
The define swift::ringsync is used to rsync these ring databases
to the other hosts.
Since rsync is now managed by xinetd, it is
necessary to remove the references to the rsync
service.
This was previously causing catalog compilation failures.
Also updates travisci and the unit tests
Previously, using the rsync sevices on Ubuntu
did not actually work.
After reading the init script, I decided that it
is annoyingly different from Redhat's implementation
so I have chosen to use xinetd to make the module more
consistent between the distros.
It is possible that the memcache server(s) may
reside on different machines than the swift
proxy.
This commit decouples the configurations of the
two services.
Previously, the binding address for all services
was set to localhost.
This is not going to be a commonly used value
for production deployments.
The defaults for address have been removes b/c
there isn't really a sensible default. This is
something that the users should have to set.
Previously, all of the storage server types
(account, container, proxy) were always
configured to be installed on the same node.
It often makes sense to only have the account and
container together, and to put the object server on
a different node. (or its possible that other
configurations make sense)
This commit refactors the swift module so that
each of the types of nodes can be built
independently of each other.
Previously, swift::storage::xfs was not passing
the correct variable for mnt_base_dir to
swift::storage::mount. $mount_base_dir was incorrectly
specified.
This commit resolves this mistake and ensures that the correct
variable is passed.
Previously, the package for swauth of the swift
proxy was being added based on a variable that
was never set.
This commit updates that conditional to use the
correct variable.
Previously, a copy and paste error had resulted
in 3 definitions of the trunk ppa class.
Two of those were intended to be swift::repo::trunk
and swift::repo::release.
This commit corrects this error.
The default devices path for the storage class
was incorrectly set to /srv/nodes.
This commits updates it to /srv/node so that it is
consistent with the rest of manifests in this module.
Previously, all of the ports used by the storage
class were hardcoded.
This commits adds the following class parameters to
the swift::storage class to allow for configuration
of the ports used by a storage server:
- object_port
- container_port
- account_port
Changed the name of the defined resource type:
swift::storage::device to be swift::storage::server.
This change was made in order to better align with
the swift terminology since this define was
configuring a swift component server which has no
direct association with a device.
This commit also makes the swift::storage::server
the only place where the swift server template is
used. This allowed me to assume that the variables
device and bind_port will always be available.
Also updates declarations of the renamed type to
use the correct type name.
Removes the direct server file config from
swift::storage, replacing it instead with
declarations of swift::storage::server.
In the current trunk PPA for oneiric (which is what
I am using for testing), the upstart files seem
to have a problem where they only will start the
swift servers if the file:
/etc/swift/<server_name>-server
exists. Raised as issue: 931893
in Launchpad.
This commit adds puppet code to deploy custom
upstart scripts that have fixed this issue.
Previously, I had created a define intended to
wrap the creation of the storage device endpoints
with their associated ring configs.
I wound up decided against this for two reasons:
- Abtstracting storage endpoints together with
the ring configurations can be confusing b/c it
conflates actions associated with the storage role
with actions associated with the ringbuilding role.
- Abstracting the ring building hides side effects
of this manifest from the user (that it will effect
the ringbuilder role)
This pull request does the following:
- removes the swift::storage::device::* defines
- update the following code to use
swift::storage::device in combination with
ring_*_device
-- examples/multi
-- swift::storage::node
This commit updates the node class from using
Swift::Storage::Device to the individual defines.
This change was made b/c we could not dyncamically
set the names of the native types.
This commit removes The swift::storage::node
declaration from the swift::storage::loopback
definition.
This is done to decouple the code that creates
and mounts partitions from the code that creates
swift devices.
Implements three defines that can be used to manage
the three kinds of swift devices:
- objects
- accounts
- containers
These defines wrap swift::storage::device (which
manages rsync modules and swift device configuration)
and add additional resources for managing the
ring device entries.
The defines accept a parameter called manage_ring
which can be used to specify rather the ringbuilding
resources should be declared or exported.
the defined resource types ringbuilder::create
and ringbuilder::rebalance were incorrectly
named.
This commit updates them to the correct names:
- swift::ringbuilder::create
- swift::ringbuilder::rebalance
This commit adds a class, defined resources and
native types that can be used together to manage
the creation, configuration, and rebalancing of
rings.
Creates the following native types:
ring_account_device
ring_container_device
ring_object_device
The implementation of these types is provided
by swift-ring-builder and most of the functionality
is provided by the parent provider (SwiftRingBuilder)
Each of the providers is hard-coded to find the
relevent ring database in /etc/swift. This directory
location can currently not be configured.
Each provider implements self.instances so the
current state can of the ring can be queried from
puppet.
These providers do not handle either the creation
or the rebalancing of the rings, they are intended
to be used in combination with defined resource types
that perform that functionality:
swift::ringbuilder::create
swift::ringbuilder::rebalance
The swift::ringbuilder class is also created as
a part of this commit. This class does the following:
- creates object, account, and container rings
(it uses the same parameters to create these rings)
- creates the rebalance defines
- sets up the following relationships:
for each ring type, create should be applied before
the native types which should refresh the rebalance