summaryrefslogtreecommitdiffstats
path: root/manifests/profile/base/swift
diff options
context:
space:
mode:
authorChristian Schwede <cschwede@redhat.com>2017-02-17 16:31:52 +0000
committerChristian Schwede <cschwede@redhat.com>2017-04-05 16:09:56 +0200
commit3412150d91dc7fe6e9f168b4ffdbb4d54c39fc55 (patch)
treebdde8500bcfb44139e67c82a302400324ff65012 /manifests/profile/base/swift
parentccb78ad309d36e9f68983330ed02698b8a5d0666 (diff)
Migrate Swift ring handling from tripleo-heat-templates to puppet-tripleo
This allows decoupling the Swift ringbuilding logic from the Controller and ObjectStorage roles. A follow up patch will modify tripleo-heat-templates and use this modified class. Actually this downloads the Swift rings even if ring building is disabled or if there is no need to rebalance. This is required, because operators can disable ring building, but use the same mechanism to distribute pre-built rings to the nodes. If ring building is disabled, these won't be uploaded at the end back to the undercloud. Related-Bug: 1665641 Change-Id: Ifd6fa5b398d98e8998630ea0c9a2ce9867ceba2b
Diffstat (limited to 'manifests/profile/base/swift')
-rw-r--r--manifests/profile/base/swift/ringbuilder.pp36
1 files changed, 36 insertions, 0 deletions
diff --git a/manifests/profile/base/swift/ringbuilder.pp b/manifests/profile/base/swift/ringbuilder.pp
index 7e5fc74..f7cfea4 100644
--- a/manifests/profile/base/swift/ringbuilder.pp
+++ b/manifests/profile/base/swift/ringbuilder.pp
@@ -63,6 +63,12 @@
# Minimum amount of time before partitions can be moved.
# Defaults to undef
#
+# [*swift_ring_get_tempurl*]
+# GET tempurl to fetch Swift rings from
+#
+# [*swift_ring_put_tempurl*]
+# PUT tempurl to upload Swift rings to
+#
class tripleo::profile::base::swift::ringbuilder (
$replicas,
$build_ring = true,
@@ -74,7 +80,23 @@ class tripleo::profile::base::swift::ringbuilder (
$swift_storage_node_ips = hiera('swift_storage_node_ips', []),
$part_power = undef,
$min_part_hours = undef,
+ $swift_ring_get_tempurl = hiera('swift_ring_get_tempurl', ''),
+ $swift_ring_put_tempurl = hiera('swift_ring_put_tempurl', ''),
) {
+
+ if $step == 2 and $swift_ring_get_tempurl != '' {
+ exec{'fetch_swift_ring_tarball':
+ path => ['/usr/bin'],
+ command => "curl --insecure --silent '${swift_ring_get_tempurl}' -o /tmp/swift-rings.tar.gz",
+ returns => [0, 3]
+ } ~>
+ exec{'extract_swift_ring_tarball':
+ path => ['/bin'],
+ command => 'tar xzf /tmp/swift-rings.tar.gz -C /',
+ returns => [0, 2]
+ }
+ }
+
if $step >= 2 {
# pre-install swift here so we can build rings
include ::swift
@@ -112,4 +134,18 @@ class tripleo::profile::base::swift::ringbuilder (
Ring_object_device<| |> ~> Exec['rebalance_container']
}
}
+
+ if $step == 5 and $build_ring and $swift_ring_put_tempurl != '' {
+ exec{'create_swift_ring_tarball':
+ path => ['/bin', '/usr/bin'],
+ command => 'tar cvzf /tmp/swift-rings.tar.gz /etc/swift/*.builder /etc/swift/*.ring.gz /etc/swift/backups/',
+ unless => 'swift-recon --md5 | grep -q "doesn\'t match"'
+ } ~>
+ exec{'upload_swift_ring_tarball':
+ path => ['/usr/bin'],
+ command => "curl --insecure --silent -X PUT '${$swift_ring_put_tempurl}' --data-binary @/tmp/swift-rings.tar.gz",
+ require => Exec['create_swift_ring_tarball'],
+ refreshonly => true,
+ }
+ }
}