# Define swift::storage::policy # # Setting any optional parameter to undef will remove it # from the storage policy defined in swift.conf. # # == Parameters # [*ensure*] # (optional) To ensure a storage policy exists in swift.conf # set to 'present'. To remove a storage policy from swift.conf # set to 'absent'. # Defaults to 'present' # # [*policy_name*] # (required) Storage policy name in swift.conf # Names and aliases must be unique across all policies. # # [*default_policy*] # (optional) Boolean to specify if this is the default storage policy # Defaults to true # # [*policy_aliases*] # (optional) A comma separated string of aliases to use for this storage # policy. ex: 'gold, silver, taco' Names and aliases must be unique across # all policies. # Defaults to undef. # # [*policy_index*] # (required) storage policy index. Becomes a storage policy section # header in swift.conf. # Defaults to '0' # # [*policy_type*] # (required) Storage policy type. Can be 'replication' or 'erasure_coding' # Defaults 'replication'. # # [*deprecated*] # (optional) Any policy may be deprecated by setting deprecated = yes. # Choices are 'yes', 'no', undef # Defaults to undef # # [*ec_type*] # (optional) Specifies the EC scheme that is to be used # Defaults to undef # # [*ec_num_data_fragments*] # (optional) The total number of fragments that will be # comprised of data. # Defaults to undef # # [*ec_num_parity_fragments*] # (optional) The total number of fragments that will be # comprised of parity. # Defaults to undef # # [*ec_object_segment_size*] # (optional) The amount of data that will be buffered up before # feeding a segment into the encoder/decoder in bytes. # Defaults to undef # define swift::storage::policy ( $policy_name, $default_policy, $ensure = 'present', $policy_aliases = undef, $policy_index = $name, $policy_type = 'replication', $deprecated = undef, $ec_type = undef, $ec_num_data_fragments = undef, $ec_num_parity_fragments = undef, $ec_object_segment_size = undef, ) { include swift::deps Swift_storage_policy<| |> ~> Service<| tag == 'swift-service' |> if (downcase($policy_name) == 'policy-0') and ($policy_index != '0') { fail('The name Policy-0 can only be used with policy index 0') } if ($default_policy == true) and ($deprecated == 'yes') { fail('a deprecated policy may not also be declared the default') } swift_storage_policy { $policy_index: ensure => $ensure, policy_name => $policy_name, aliases => $policy_aliases, policy_type => $policy_type, default => bool2str($default_policy), deprecated => $deprecated, ec_type => $ec_type, ec_num_data_fragments => $ec_num_data_fragments, ec_num_parity_fragments => $ec_num_parity_fragments, ec_object_segment_size => $ec_object_segment_size, } }