From 1033656f6ced0618796358fce9f7e73ff4583df0 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Tue, 23 Jul 2024 11:05:50 +0900 Subject: [PATCH] Accept array/dict for affinity options write_affinity and read_affinity accepts values which represent array (for write) or hash (for read). Allow using native array or hash so that users can manage the values passed more easily. Change-Id: Id628cf07ec78e6239d91be3a8ab22dd4c609e348 --- manifests/internal_client.pp | 10 ++++++++-- manifests/proxy.pp | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/manifests/internal_client.pp b/manifests/internal_client.pp index fdfb63ba..11ceab55 100644 --- a/manifests/internal_client.pp +++ b/manifests/internal_client.pp @@ -122,8 +122,9 @@ class swift::internal_client ( } if $write_affinity { + $write_affinity_real = join(any2array($write_affinity), ',') swift_internal_client_config { - 'app:proxy-server/write_affinity': value => $write_affinity; + 'app:proxy-server/write_affinity': value => $write_affinity_real; 'app:proxy-server/write_affinity_node_count': value => $write_affinity_node_count; 'app:proxy-server/write_affinity_handoff_delete_count': value => $write_affinity_handoff_delete_count; } @@ -145,9 +146,14 @@ class swift::internal_client ( if $sorting_method and $sorting_method != 'affinity' { fail('sorting_method should be \'affinity\' to use read affinity') } + $read_affinity_real = $read_affinity ? { + Hash => join(join_keys_to_values($read_affinity, '='), ','), + default => join(any2array($read_affinity), ',') + } + swift_internal_client_config { 'app:proxy-server/sorting_method': value => 'affinity'; - 'app:proxy-server/read_affinity': value => $read_affinity; + 'app:proxy-server/read_affinity': value => $read_affinity_real; } } else { swift_internal_client_config { diff --git a/manifests/proxy.pp b/manifests/proxy.pp index f2383eb4..22b4d2c7 100644 --- a/manifests/proxy.pp +++ b/manifests/proxy.pp @@ -306,8 +306,9 @@ class swift::proxy( } if $write_affinity { + $write_affinity_real = join(any2array($write_affinity), ',') swift_proxy_config { - 'app:proxy-server/write_affinity': value => $write_affinity; + 'app:proxy-server/write_affinity': value => $write_affinity_real; 'app:proxy-server/write_affinity_node_count': value => $write_affinity_node_count; 'app:proxy-server/write_affinity_handoff_delete_count': value => $write_affinity_handoff_delete_count; } @@ -329,9 +330,14 @@ class swift::proxy( if $sorting_method and $sorting_method != 'affinity' { fail('sorting_method should be \'affinity\' to use read affinity') } + $read_affinity_real = $read_affinity ? { + Hash => join(join_keys_to_values($read_affinity, '='), ','), + default => join(any2array($read_affinity), ',') + } + swift_proxy_config { 'app:proxy-server/sorting_method': value => 'affinity'; - 'app:proxy-server/read_affinity': value => $read_affinity; + 'app:proxy-server/read_affinity': value => $read_affinity_real; } } else { swift_proxy_config {