26 Commits

Author SHA1 Message Date
Takashi Kajinami
119d8fc819 ceilometer: Use dedicated config file for oslo.messaging options
The mechanism to load additional config files for oslo.messaging option
was introduced to ceilometermiddleware. Use this mechanism to inject
oslo.messaging options so that we can customize behavior of the library
like use_ssl.

Depends-on: https://review.opendev.org/904328
Change-Id: I5a82a52ddea610b4dda6658378d78a6cf13e3bb2
2024-04-23 01:18:01 +09:00
Takashi Kajinami
9bd09b15bb Allow defining a section without settings
(account|container|object)-server.conf requires sections for each
services but these sections sometimes don't require settings when
service defaults are used.

This change allows defining only sections using *_config resources.

Depends-on: https://review.opendev.org/849235
Change-Id: I827c06cc994e13b900a9eeaeaec7849a243732e2
2023-05-11 13:53:32 +09:00
Takashi Kajinami
249f466f94 Ensure consistent IPv6 address format
This change ensures the shortened address representations are always
used for ring devices to avoid broken idempotency caused by different
representations (shortened[1] vs canonical[2]).

[1] ::1
[2] 0000:0000:0000:0000:0000:0000:0000:0001

Closes-Bug: #1997313
Change-Id: I762f0780ba25536aa616482a49d59c7db69924d6
2022-11-22 14:44:48 +09:00
Takashi Kajinami
efcef86de7 Support customizing internal-client.conf
This change introduces capability to customize internal-client.conf,
which is used by several daemon processes like container-sharder.

Closes-Bug: #1986599
Related-Bug: #1921319
Change-Id: I200e3a4ff323a07778ec6c4d7dd96824c72a12cf
2022-08-16 11:26:43 +09:00
Zuul
58db6b4ba6 Merge "Allow single alias in swift_storage_policy provider" 2022-05-24 10:55:15 +00:00
Simeon Gourlin
19fa1ca37f Allow single alias in swift_storage_policy provider
Regex validation for aliases in swift_storage_policy provider does not
allow single alias value, like for exemple:
  swift::storage::policy { '1':
      policy_name    => '3-Replica-Policy',
      policy_aliases => 'green',
This fixes the accepted pattenr to allow single-value for policy_aliases
parameter.

Also, the whole expression is updated to more strictly validate
the pattern, especially when more than 2 aliases are given.

Change-Id: I62c86097c717d2a74c100386cf20e07976571805
2022-05-15 23:41:05 +00:00
Thomas Goirand
4d92952345 Add a swift_drive_audit_config puppet type
This patch adds what's necessary to configure drive-audit.conf

Change-Id: I9bee191412ead21f8fd765b8839b6d63f628bb9c
2021-05-19 21:21:53 +09:00
Thomas Goirand
51f4ad1cb3 Add support for swift_{proxy,account,container}_uwsgi_config in Debian
This patch is adding the configuration of the number of workers,
and the size of the listen queue in Debian, which uses uwsgi to run
Swift. Therefore, this patch adds new swift_proxy_uwsgi_config,
swift_account_uwsgi_config, and swift_container_uwsgi_config, providers
as well as e new swift::wsgi::uwsgi_proxy, swift::wsgi::uwsgi_container,
and swift::wsgi::uwsgi_account classes.

Change-Id: Ib18f3479bc6a4513a7b3d823cda480c4ace2f2c0
2021-04-09 23:50:00 +02:00
Takashi Kajinami
115be330eb Use anchor to require necessary packages
... so that correct packages are required without re-defining them in
resource implementations.

Change-Id: I5be94c01b9ec1bbfdae37b3a7e282f1b457fe3e0
2020-05-04 12:00:45 +09:00
Rocky
0a6ac4addc Support to configure memcache.conf
Change-Id: Iab2520403edd47004c3edbeda66b4eb16eed587a
2020-04-24 06:54:17 +10:00
Thiago da Silva
c85beff334 Adding barbican configuration to swift
Adding barbican configuration to Swift will
allow enabling data-at-rest encryption in Swift.

Change-Id: I78c6003f5f599a422193dc47422ee607ce05c715
Signed-off-by: Thiago da Silva <thiago@redhat.com>
2018-02-07 12:03:19 -05:00
zhangyanxian
2628d0fae8 Fix some typos in swift_storage_policy.rb
TrivialFix

Change-Id: Idf396283dc0d1c0c9dfd28c702bba826cffc2414
2017-03-17 02:55:40 +00:00
Marcus Furlong
d4922bee39 memcache_servers support in object-expirer and container-reconciler
This commit adds support for the memcache_servers option in
object-expirer and container-reconciler. Without this, both
currently default to 127.0.0.1:11211.

Closes-Bug: #1627927
Change-Id: Ie139f018c4a742b014dd4d682970e154d66a8c6d
2016-12-05 15:30:35 +11:00
Adam Vinsh
63688a14e5 Add support for swift storage policies
This change implements storage policies as defined by swift:
http://docs.openstack.org/developer/swift/overview_policies.html

There are two primary areas of change in this review
- Add storage policy support to the ringbuilder and ring devices, along with
  associated spec tests.
- Adding storage policy support and enforcing rules in swift.conf using the
  swift_storage_policy type and provider. Also: updated spec tests and an
  update to swift acceptance test to use storage policies to configure an
  additional 3 replica based ring.

See release notes and the README update for more details/instructions.

Change-Id: I2b8db751790704df3f1027a14f61e231591537f3
2016-11-22 16:17:52 +00:00
Denis Egorenko
ec4db849c8 Allow to configure container_sync middleware
Add possibility to configure container_sync middleware. Also
allow to configure swift container-sync-realms, which specifying
the allowable clusters and their information, which is required
for container_sync.

Change-Id: I183841cca3daf72a30db160b88c9e3a9335ad7dc
2016-05-30 16:03:44 +03:00
Cody Herriges
dbfa88f684 Make sure Facter is only executed on agent
This commit moves conditionals based on values obtained from Facter
  inside code blocks that are only executed on agents and replaces
  the use of Facter['osfamily'].value with Facter.value:(:osfamily).

  Without this change we are returning values based off the master's
  facts, so if a Debian agent checks into a RedHat master then the type
  is currently making a decision based off of RedHat and not the actual
  OS of the agent running the catalog.  Code ran outside blocks is
  evaluated on masters and inside a block is evaluated by the agent when
  the catalog is executed.  We do not notice this because all our
  testing uses "puppet apply" and autorequire only matters when they
  find a matching resource name in the catalog.  The latter results
  in no error because the relationship is simply ignored on the Debian
  agent if a package resource with the RedHat name is not found.

  This issue was found by running facter 3, the C++11 re-implementation
  under the jruby and clojure implemented puppetserver.  The clojure
  jni shim written so that facter can be ran inside of puppetserver does
  not implement the [] method for the Facter module but the ruby shim
  does.  So I noticed that the code had an issue when
  Facter['osfamily'].value was executed on the master, which returned a
  not method error.  Once again, something we didn't notice becuase we
  do not test against a master.  I decided to migrate to
  Facter.value(:osfamily) to simply keep to an API that is consistent
  across both puppet and puppetserver but fixing where the code runs
  does actually solve the not method found error.

Change-Id: I24b0b20b2839c7bc33a76ac14849783f2285579f
2015-11-12 15:09:58 -08:00
Javier Pena
d8a8b70547 Add support for swift-object-expirer service
The swift-object-expirer service was not supported by
puppet-swift. Adding support by creating a new class
(swift::objectexpirer), and its associated custom type/provider.

Change-Id: I498ffe525a7316c0091e4c9d8b7d9658234231f6
2015-09-30 10:09:09 +02:00
Yanis Guenane
e6e8c9d836 Reflect provider change in puppet-openstacklib
With the creation of the new openstack_config provider, some processing
that was done in swift_config has been centralized in
openstack_config.

Impacted methods are :

  * section
  * setting
  * separator

Also, this commit adds the fact that, when passing a specific string
(ensure_absent_val) the provider will behave as if ensure => absent was
specified. '<SERVICE DEFAULT>' is the default value for
ensure_absent_val.

The use case is the following :

swift_config { 'DEFAULT/foo' : value => 'bar' } # will work as usual

swift_config { 'DEFAULT/foo' : value => '<SERVICE DEFAULT>' } # will mean absent

That means that all the current :

if $myvar {
  swift_config { 'DEFAULT/foo' : value => $myvar }
} else {
  swift_config { 'DEFAULT/foo' : ensure => absent }
}

can be removed in favor of :

swift_config { 'DEFAULT/foo' : value => $myvar }

If for any reason '<SERVICE DEFAULT>' turns out to be a valid value for
a specific parameter. One could by pass that doing the following :

swift_config { 'DEFAULT/foo' : value => '<SERVICE DEFAULT>',
ensure_absent_val => 'foo' }

Change-Id: I9281d2cae81f9799327f7f6e04498d6bc723f233
Depends-On: I0eeebde3aac2662cc7e69bfad7f8d2481463a218
2015-08-19 12:00:34 +02:00
Yanis Guenane
a72e27f83c Rely on autorequire for config resource ordering
Currently we specify the ordering of config resources wherever it is
necessary based on the presence of the file it will write to, or the
presence of the package in charge of providing the file it will write
to.

Those kind of ordering can be specified directly at the resource level
using the autorequire mechanism. With this patch, any config resource
will make sure the package in charge of providing the file will be
installed first.

Change-Id: Icb3464cc0a747d40326d610d38806d059c9a0fc3
2015-08-13 09:54:06 +02:00
Lukas Bezdicka
b6ba9f09b2 Fix ipv6 support
One shold never parse uri with split(':') as it was in types
ring_account_device, ring_container_device and ring_object_device.
This is fixed by using uri and just setting variables from that.
Also swift_ring_builder didn't add brackets to ipv6 address before
adding port information to it.

Change-Id: I55b7032143c8446abeed4f6c266c0fff0cb6b3b3
2015-04-07 12:54:14 +02:00
David Moreau Simard
bb3007615f Add swift-ring-builder multi region support
Since Swift 1.8.0, there is the region layer of topology above zones.
swift-ring-builder supports this natively and this commit allows a user to
specify a region when creating devices.
We maintain backwards compatibility by defaulting to region '1'.
The coverage of the ring builder spec tests were also improved as part of
this commit.

Change-Id: I67cbe6b87c84778f71df59cf00f2c5175342bc1b
2014-05-09 15:45:28 -04:00
Dan Prince
c89e327fb8 Use swift_config to configure swift.conf
This change also adds an autorequire in the swift_config
type to ensure the /etc/swift/swift.conf exists.

Change-Id: Ic591a3ceb040c4599339ed7f750a5273d2052ac1
Implements: blueprint puppet-swift-ini-settings
2013-08-26 20:54:06 -04:00
Mathieu Gagné
e41a552afe Add ini_setting based custom types for configs
Previous configuration file management method used templates.
This method had limited flexibility and was cumbersome
to use and maintain between upstream versions.

This change introduces new custom types based on ini_setting:
  * swift_account_config: /etc/swift/account-server.conf
  * swift_bench_config: /etc/swift/swift-bench.conf
  * swift_config: /etc/swift/swift.conf
  * swift_container_config: /etc/swift/container-server.conf
  * swift_dispersion_config: /etc/swift/dispersion.conf
  * swift_object_config: /etc/swift/object-server.conf
  * swift_proxy_config: /etc/swift/proxy-server.conf

The use of ini_setting offers multiple advantages:
  * Ability to individually manage configuration settings without
    the need to modify templates. This allows the user to manage or
    override settings that aren't handled by the module.
  * Use upstream default values if none is provided.
  * Remove the need to maintain and synchronize templates
    to match upstream versions. Such maintenance could become
    problematic and complicated if multiple upstream versions
    are supported but have different base configuration files.

Implements: blueprint puppet-swift-ini-settings
Change-Id: Iba7be64581b81b8ab4f33cf7096df37e64ccc4b4
2013-07-25 10:19:30 -04:00
Dan Bode
09f726c363 Allow multiple devices per endpoint.
Previously, the Puppet modules only supported a single device per
endpoint.

This commits allows multiple devices per endpoint by making the device
name a part of the namevar for the swift ring devices.

it also updates the relevent configs.
2012-06-05 16:45:47 -07:00
Dan
f93ba72fbb Munge weights to be in the format %.2f
The swift ring db converts integers into floats with 2 decimal
points percisions. This was causing the ring resources to constantly
resync.

This commit munges weight in the type to the proper format.
2012-03-14 05:41:41 +00:00
Dan Bode
917426380e Implement ringbuilder
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
2012-01-23 11:42:42 -08:00