├── .gemfile ├── .gitignore ├── .gitreview ├── .pdkignore ├── .sync.yml ├── .zuul.yaml ├── CHANGELOG.md ├── CONTRIBUTING.rst ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── bindep.txt ├── doc └── requirements.txt ├── examples ├── all.pp └── site.pp ├── lib └── puppet │ ├── functions │ └── validate_tempauth_account.rb │ ├── provider │ ├── ring_account_device │ │ └── swift_ring_builder.rb │ ├── ring_container_device │ │ └── swift_ring_builder.rb │ ├── ring_object_device │ │ └── swift_ring_builder.rb │ ├── service │ │ └── swiftinit.rb │ ├── swift_account_config │ │ └── ini_setting.rb │ ├── swift_account_uwsgi_config │ │ └── ini_setting.rb │ ├── swift_bench_config │ │ └── ini_setting.rb │ ├── swift_ceilometer_config │ │ └── openstackconfig.rb │ ├── swift_config │ │ └── ini_setting.rb │ ├── swift_container_config │ │ └── ini_setting.rb │ ├── swift_container_reconciler_config │ │ └── ini_setting.rb │ ├── swift_container_sync_realms_config │ │ └── ini_setting.rb │ ├── swift_container_uwsgi_config │ │ └── ini_setting.rb │ ├── swift_dispersion_config │ │ └── ini_setting.rb │ ├── swift_drive_audit_config │ │ └── ini_setting.rb │ ├── swift_internal_client_config │ │ └── ini_setting.rb │ ├── swift_keymaster_config │ │ └── ini_setting.rb │ ├── swift_memcache_config │ │ └── ini_setting.rb │ ├── swift_object_config │ │ └── ini_setting.rb │ ├── swift_object_expirer_config │ │ └── ini_setting.rb │ ├── swift_proxy_config │ │ └── ini_setting.rb │ ├── swift_proxy_uwsgi_config │ │ └── ini_setting.rb │ ├── swift_ring_builder.rb │ └── swift_storage_policy │ │ └── ruby.rb │ └── type │ ├── ring_account_device.rb │ ├── ring_container_device.rb │ ├── ring_object_device.rb │ ├── swift_account_config.rb │ ├── swift_account_uwsgi_config.rb │ ├── swift_bench_config.rb │ ├── swift_ceilometer_config.rb │ ├── swift_config.rb │ ├── swift_container_config.rb │ ├── swift_container_reconciler_config.rb │ ├── swift_container_sync_realms_config.rb │ ├── swift_container_uwsgi_config.rb │ ├── swift_dispersion_config.rb │ ├── swift_drive_audit_config.rb │ ├── swift_internal_client_config.rb │ ├── swift_keymaster_config.rb │ ├── swift_memcache_config.rb │ ├── swift_object_config.rb │ ├── swift_object_expirer_config.rb │ ├── swift_proxy_config.rb │ ├── swift_proxy_uwsgi_config.rb │ └── swift_storage_policy.rb ├── manifests ├── auth_file.pp ├── bench.pp ├── client.pp ├── config.pp ├── constraints.pp ├── containerreconciler.pp ├── deps.pp ├── dispersion.pp ├── init.pp ├── internal_client.pp ├── internal_client │ ├── cache.pp │ ├── catch_errors.pp │ ├── proxy_logging.pp │ └── symlink.pp ├── keymaster.pp ├── keystone │ ├── auth.pp │ └── dispersion.pp ├── memcache.pp ├── objectexpirer.pp ├── params.pp ├── proxy.pp ├── proxy │ ├── account_quotas.pp │ ├── audit.pp │ ├── authtoken.pp │ ├── bulk.pp │ ├── cache.pp │ ├── catch_errors.pp │ ├── ceilometer.pp │ ├── cname_lookup.pp │ ├── container_quotas.pp │ ├── container_sync.pp │ ├── copy.pp │ ├── crossdomain.pp │ ├── dlo.pp │ ├── domain_remap.pp │ ├── encryption.pp │ ├── etag_quoter.pp │ ├── formpost.pp │ ├── gatekeeper.pp │ ├── healthcheck.pp │ ├── keymaster.pp │ ├── keystone.pp │ ├── kms_keymaster.pp │ ├── listing_formats.pp │ ├── proxy_logging.pp │ ├── ratelimit.pp │ ├── read_only.pp │ ├── s3api.pp │ ├── s3token.pp │ ├── slo.pp │ ├── staticweb.pp │ ├── symlink.pp │ ├── tempauth.pp │ ├── tempauth_account.pp │ ├── tempurl.pp │ └── versioned_writes.pp ├── ringbuilder.pp ├── ringbuilder │ ├── create.pp │ ├── policy_ring.pp │ └── rebalance.pp ├── ringserver.pp ├── ringsync.pp ├── service.pp ├── storage.pp ├── storage │ ├── account.pp │ ├── all.pp │ ├── container.pp │ ├── cron │ │ └── recon.pp │ ├── disk.pp │ ├── disks.pp │ ├── drive_audit.pp │ ├── ext4.pp │ ├── filter │ │ ├── backend_ratelimit.pp │ │ ├── healthcheck.pp │ │ └── recon.pp │ ├── generic.pp │ ├── loopback.pp │ ├── loopbacks.pp │ ├── mount.pp │ ├── node.pp │ ├── object.pp │ ├── policy.pp │ ├── server.pp │ └── xfs.pp ├── wsgi │ ├── uwsgi_account.pp │ ├── uwsgi_container.pp │ └── uwsgi_proxy.pp └── xfs.pp ├── metadata.json ├── releasenotes ├── notes │ ├── Enable-SSL-options-for-ceilometermiddleware-notifications-bbd3b7cbb9ba0910.yaml │ ├── add-device-mount-type-support-2a5f1df26c2d1e68.yaml │ ├── add-ignore-projects-b1ab3629320a39ed.yaml │ ├── add-parted-external-command-c89bcce3b3ea54dc.yaml │ ├── add-swift-memcache-conf-f119f4e1027bcdda.yaml │ ├── add-swift-proxy-audit-3ee76986d46aa9f4.yaml │ ├── add-swift-proxy-domain_remap-d3b316fb6e964716.yaml │ ├── add-swift-proxy-etag_quoter-2a55ef5b7e0ac029.yaml │ ├── add-swift-proxy-symlink-4864e7c1755567d4.yaml │ ├── add-tls-options-cfc659d2a0ad42bc.yaml │ ├── add_object-replicator_rsync_parameters-15936a0bfc76b670.yaml │ ├── add_rsync_use_xinetd_and_max_connections-48c6b86b1bfed6f8.yaml │ ├── add_s3token_params-89215880c6e2507a.yaml │ ├── allowed_digests-1b12b2f0483c4c68.yaml │ ├── amqp_auto_delete-6324867e420e9e08.yaml │ ├── authtoken-auth_type-c315ce3b88c9ef02.yaml │ ├── authtoken-b49c75db4b7429cb.yaml │ ├── authtoken-service_token-f2e7209b778c2eb5.yaml │ ├── backend_ratelimit-d10d25bbce1b0242.yaml │ ├── barbican-endpoint-in-keymaster-ef3fe756cbd0a735.yaml │ ├── bug-1980613-b2e589f74602f11f.yaml │ ├── bulk-delete-opts-fa2e67271dcac415.yaml │ ├── bulk-yield_frequency-2ad6dc679ef17452.yaml │ ├── cap-default-swift-server-workers-90b6206b37c6866b.yaml │ ├── centos-9-support-b14e163f02d99aeb.yaml │ ├── change-keystone-v3-dd97e1db169b9b62.yaml │ ├── cleanup-deprecated-params-victoria-8783e8274f9c12a7.yaml │ ├── client-timeout-c110deab64aa1944.yaml │ ├── cname_lookup-a545519cb21e37cd.yaml │ ├── consistent-project-name-9b53534b86710ff3.yaml │ ├── constraints-cleanup-3c8aee96638459b5.yaml │ ├── container-ratelimit-9d38553d9512934e.yaml │ ├── container-reconciler-enable-cache-1f05743579752b13.yaml │ ├── container-reconciler-tunables-1f11dc77181dd68c.yaml │ ├── container-sharder-7b000d34210dbe08.yaml │ ├── container_sync-5869bca433355047.yaml │ ├── container_sync-middleware-opts-91c555d96826b91d.yaml │ ├── db_preallocation-4226028636c46c4d.yaml │ ├── default-mount-options-changed-23d7969ef826f8be.yaml │ ├── deprecate-allow_versions-2f161fbe7522c218.yaml │ ├── deprecate-ceilometer-group-81408169438202b6.yaml │ ├── deprecate-config_file_path-a0ae640ddfe329f9.yaml │ ├── deprecate-default-password-4458163e3580d6fb.yaml │ ├── deprecate-expiring_objects_account_name-1e623eb32f24efa2.yaml │ ├── deprecate-keystone-pki-opts-c5e390dfbbf6f4d8.yaml │ ├── deprecate-rabbit_heartbeat_in_pthread-0ec47c8c9ca82696.yaml │ ├── deprecate-s3api-ensure-3d036cfc32340b16.yaml │ ├── deprecate-swauth-6fa98d40e43dfe63.yaml │ ├── deprecate-swift-proxy-authtoken-auth-uri-1ed1f096c4eca137.yaml │ ├── deprecate-swift3-ccc754b60e6ab25d.yaml │ ├── deprecate-test_file-fcb300e2e5117d15.yaml │ ├── device-path-validation-331b52cbc9c70ae6.yaml │ ├── drive-audit-206e1c6e04e8decf.yaml │ ├── drop-fedora-aef9a5060f19722d.yaml │ ├── expose-worker-count-07bde2c47a7c0329.yaml │ ├── ext4-interface-sync-daaef41347bfe3e1.yaml │ ├── external_install_mgmt_hooks-32ca80d2280efc53.yaml │ ├── fallocate-opts-6a181c96d0a0cc31.yaml │ ├── fix-memcached-require-for-proxy-cache-cbb2726d22b53d80.yaml │ ├── gatekeeper-opts-73ef4db32c2e702e.yaml │ ├── hosts_allow-7795d5f8f9ccd24e.yaml │ ├── init-client-package-ensure-6daa722ad33783c4.yaml │ ├── internal-client-ce022fa93df88aaa.yaml │ ├── keystone-auth-name-d2f0ea23d797b555.yaml │ ├── keystone-authtoken-interface-a0cdde390fca1a46.yaml │ ├── keystone-authtoken-service_type-135867e7fa30d712.yaml │ ├── keystone-region-416dd0806629397a.yaml │ ├── keystone-service_type-2985ebd5dffd2380.yaml │ ├── listing_formats-middleware-2ccb0d3462bc1bff.yaml │ ├── log-facility-81dd7fff80e5f2f1.yaml │ ├── log_max_line_length-140039c59299e878.yaml │ ├── log_name_per_daemon-6e2b522316ab38e4.yaml │ ├── manage_partition_and_filesystem-64cd4086d1bb5b0a.yaml │ ├── memcache-servers-support-092ed535a0c26ae1.yaml │ ├── meta_version_to_write-5644a0ce81936572.yaml │ ├── mitaka_deprecation-3344541c884cfed8.yaml │ ├── mitaka_features-52ecf51429531fbb.yaml │ ├── modernize-proxy-pipeline-c84ad4609210919c.yaml │ ├── more-log-address-8b213a4efcb3e364.yaml │ ├── more-log-opts-a6cfc6204a7e5d8a.yaml │ ├── non-blocking-ceilometermiddleware-3ed113824614016c.yaml │ ├── object-relinker-cafa2c2f45a66b50.yaml │ ├── objectexpirer-pipeline-8bf98622bdb0e91a.yaml │ ├── os_workers_for_worker_count-74ffbcb7c18c00e9.yaml │ ├── oslo-messaging-rabbit-opts-e4da4a73d1f2c788.yaml │ ├── per-method-backend-ratelimit-d242e8c1bbc3d7cb.yaml │ ├── proxy-allow_open_expired-7fbf1625c0cdd0df.yaml │ ├── proxy-ceilometer-rabbitmq-params-ff1f9c5e81195a4b.yaml │ ├── proxy-cors_expose_headers-7ff397892879ff91.yaml │ ├── proxy-keepalive_timeout-e2e0ded00a36bf61.yaml │ ├── proxy-pipeline-order-d6a1a6412451f95e.yaml │ ├── proxy-recoverable-node-timeout-setting-f2520a2f6ff79433.yaml │ ├── proxy-ssl-f9ca617598b2a1a3.yaml │ ├── proxy_template_to_ini-536250b1f409e40f.yaml │ ├── puppet-8-0e6db4a6a2d5edb2.yaml │ ├── purge_config-1732c9ffe8979d26.yaml │ ├── rabbit-connection-params-deprecation-0ac64b83c83ee58f.yaml │ ├── rabbit_transient_queues_ttl-dacc8bf7e5c4898d.yaml │ ├── read_only-f0e5b52bfcbbe99d.yaml │ ├── rebalance-exit-codes-ee79621190315a5a.yaml │ ├── recon-cron-6f90f5d626d70aa5.yaml │ ├── release-note-ubuntu-py3-166e8825549d2981.yaml │ ├── remove-admin_token-14b3fd9fe23c018a.yaml │ ├── remove-allow_versions-5322f36b2efff0f6.yaml │ ├── remove-amqp1-2736619e17ce8b1e.yaml │ ├── remove-amqp_ssl_key_password-18693f75f10d218c.yaml │ ├── remove-authtoken-auth_plugin-43478ec4f2df8ec8.yaml │ ├── remove-authtoken-signing_dir-989e2c10724b70fe.yaml │ ├── remove-ceilometer-auth_uri-0ff63e4d4702d4ce.yaml │ ├── remove-ceilometer-auth_uri-dc349418e546cc34.yaml │ ├── remove-ceilometer-group-268171ee2387e7bd.yaml │ ├── remove-centos-8-d2977f312220e2be.yaml │ ├── remove-config_file_path-b7cbcff8d732ad9e.yaml │ ├── remove-deprecated-rabbitmq-params-3a97ecbde4dfd55b.yaml │ ├── remove-object-expirer-auto_create_account_prefix-f7c7dbc3a764791b.yaml │ ├── remove-puppet-6-7ea56963ed8a90d2.yaml │ ├── remove-s3api-ensure-f277f4f7933f7fa8.yaml │ ├── remove-s3token-old-auth-params-1e7a68fa41e7a222.yaml │ ├── remove-slo-min_segment_size-b1d5ffaa4112cfba.yaml │ ├── remove-swauth-f2316eab90d0549b.yaml │ ├── remove-swift3-ded25eb5da08c388.yaml │ ├── remove-test_file-b6297826dcc22267.yaml │ ├── remove_deprecated_parameters_auth-18a35f2387567df1.yaml │ ├── remove_swift_hash_suffix-cd6b8bdf62990b7b.yaml │ ├── request-opts-d5dd2a93ecfee6b7.yaml │ ├── require-password-a524fb4dc86a4d83.yaml │ ├── restart-specific-services-1b0a0e9d45afa0bc.yaml │ ├── s3api-acl-parameters-b0127aa19ece53a4.yaml │ ├── s3api-d3fe2afefaaa8e9d.yaml │ ├── s3api-location-4f482f468f484861.yaml │ ├── s3api-more-parameters-54a8d24510a662ea.yaml │ ├── signing-dir-543b814469e76728.yaml │ ├── slo-opts-7b4aaa369ed6fa40.yaml │ ├── slo-smaller-segments-5f1cdf02cdc95dcc.yaml │ ├── sorting_method-671d31caec09044d.yaml │ ├── stale_worker_timeout-36629f8634fde065.yaml │ ├── statsd-configuration-c839c5485f761109.yaml │ ├── storage-all-log_name_per_daemon-fd0fc2524477154b.yaml │ ├── storage-config-43804c0fae439026.yaml │ ├── storage-disk-opts-65e4866c26090854.yaml │ ├── storage-timeouts-10be849b3eb52217.yaml │ ├── swift-add-reconstructor-service-25dd7df5a7d25612.yaml │ ├── swift-add-role-parameters-0caf7caa8bf6a931.yaml │ ├── swift-chunk-sizes-b2d3a41363d560ac.yaml │ ├── swift-client-timeout-295562f78eba486b.yaml │ ├── swift-constraints-818407c7fc2c1025.yaml │ ├── swift-containersync-service-f188d18796e7affe.yaml │ ├── swift-loopbacks-class-9b24b216099c7d98.yaml │ ├── swift-max-containers-per-account-f033e8f28c87a802.yaml │ ├── swift-memcache-max-connections-50876054c14dbdd5.yaml │ ├── swift-port-warning-0ac39e6905f977b5.yaml │ ├── swift-proxy-keymaster-32b86ec03556762d.yaml │ ├── swift-storage-policies-5d20b2623ca87f84.yaml │ ├── swift_cors-31b9a30d0eca57ce.yaml │ ├── swift_keystone_middleware_is_admin-3743720dc053f65e.yaml │ ├── swift_owner_headers-521593f973dcd1c5.yaml │ ├── switch_rsync_use_xinetd-a3c857e5ef13b0a8.yaml │ ├── system_scope-keystone-30d9867d48b6ab11.yaml │ ├── ubuntu-jammy-7ed8d71c8bb07072.yaml │ ├── ubuntu-noble-0cb185815bf6cde8.yaml │ ├── update-default-max_manifst_size-1077b1abd8813d7f.yaml │ ├── updater-reaper-interval-23f30950cf7cdd19.yaml │ ├── use-reno-1caaec4ba5aa4285.yaml │ ├── uwsgi-d10bf5ebcf3ff07d.yaml │ ├── xenial-supported-b17094c90a89945c.yaml │ └── xfs-label-mount-type-1f80ea3bb0a32e0c.yaml └── source │ ├── 2023.1.rst │ ├── 2023.2.rst │ ├── 2024.1.rst │ ├── 2024.2.rst │ ├── 2025.1.rst │ ├── _static │ └── .placeholder │ ├── conf.py │ ├── index.rst │ ├── mitaka.rst │ ├── newton.rst │ ├── ocata.rst │ ├── pike.rst │ ├── queens.rst │ ├── rocky.rst │ ├── stein.rst │ ├── train.rst │ ├── unreleased.rst │ ├── ussuri.rst │ ├── victoria.rst │ ├── wallaby.rst │ ├── xena.rst │ ├── yoga.rst │ └── zed.rst ├── setup.cfg ├── setup.py ├── spec ├── acceptance │ ├── 10_basic_swift_spec.rb │ └── 99_swift_config_spec.rb ├── classes │ ├── swift_bench_spec.rb │ ├── swift_client_spec.rb │ ├── swift_config_spec.rb │ ├── swift_constraints_spec.rb │ ├── swift_containerreconciler_spec.rb │ ├── swift_dispersion_spec.rb │ ├── swift_internal_client_cache_spec.rb │ ├── swift_internal_client_catch_errors_spec.rb │ ├── swift_internal_client_spec.rb │ ├── swift_internal_client_symlink_spec.rb │ ├── swift_keymaster_spec.rb │ ├── swift_keystone_auth_spec.rb │ ├── swift_keystone_dispersion_spec.rb │ ├── swift_memcache_spec.rb │ ├── swift_objectexpirer_spec.rb │ ├── swift_proxy_account_quotas_spec.rb │ ├── swift_proxy_audit_spec.rb │ ├── swift_proxy_authtoken_spec.rb │ ├── swift_proxy_bulk_spec.rb │ ├── swift_proxy_cache_spec.rb │ ├── swift_proxy_catch_errors_spec.rb │ ├── swift_proxy_ceilometer_spec.rb │ ├── swift_proxy_cname_lookup_spec.rb │ ├── swift_proxy_container_quotas_spec.rb │ ├── swift_proxy_container_sync_spec.rb │ ├── swift_proxy_copy_spec.rb │ ├── swift_proxy_crossdomain_spec.rb │ ├── swift_proxy_dlo_spec.rb │ ├── swift_proxy_domain_remap_spec.rb │ ├── swift_proxy_encryption_spec.rb │ ├── swift_proxy_etag_quoter_spec.rb │ ├── swift_proxy_formpost_spec.rb │ ├── swift_proxy_gatekeeper_spec.rb │ ├── swift_proxy_healthcheck_spec.rb │ ├── swift_proxy_keymaster_spec.rb │ ├── swift_proxy_keystone_spec.rb │ ├── swift_proxy_kms_keymaster_spec.rb │ ├── swift_proxy_listing_formats_spec.rb │ ├── swift_proxy_ratelimit_spec.rb │ ├── swift_proxy_read_only_spec.rb │ ├── swift_proxy_s3api_spec.rb │ ├── swift_proxy_s3token_spec.rb │ ├── swift_proxy_slo_spec.rb │ ├── swift_proxy_spec.rb │ ├── swift_proxy_staticweb_spec.rb │ ├── swift_proxy_symlink_spec.rb │ ├── swift_proxy_tempauth_spec.rb │ ├── swift_proxy_tempurl_spec.rb │ ├── swift_proxy_versioned_writes_spec.rb │ ├── swift_ringbuilder_spec.rb │ ├── swift_ringserver_spec.rb │ ├── swift_spec.rb │ ├── swift_storage_account_spec.rb │ ├── swift_storage_all_spec.rb │ ├── swift_storage_container_spec.rb │ ├── swift_storage_cron_recon_spec.rb │ ├── swift_storage_disks_spec.rb │ ├── swift_storage_driver_audit_spec.rb │ ├── swift_storage_loopbacks_spec.rb │ ├── swift_storage_object_spec.rb │ ├── swift_storage_spec.rb │ ├── swift_wsgi_uwsgi_account_spec.rb │ ├── swift_wsgi_uwsgi_container_spec.rb │ ├── swift_wsgi_uwsgi_proxy_spec.rb │ └── swift_xfs_spec.rb ├── defines │ ├── swift_proxy_tempauth_account_spec.rb │ ├── swift_ringbuilder_create_spec.rb │ ├── swift_ringbuilder_policy_ring_spec.rb │ ├── swift_ringbuilder_rebalance_spec.rb │ ├── swift_storage_disk_spec.rb │ ├── swift_storage_ext4_spec.rb │ ├── swift_storage_filter_backend_ratelimit_spec.rb │ ├── swift_storage_filter_healthcheck_spec.rb │ ├── swift_storage_filter_recon_spec.rb │ ├── swift_storage_generic_spec.rb │ ├── swift_storage_loopback_spec.rb │ ├── swift_storage_mount_spec.rb │ ├── swift_storage_node_spec.rb │ ├── swift_storage_server_spec.rb │ └── swift_storage_xfs_spec.rb ├── functions │ └── validate_tempauth_account_spec.rb ├── shared_examples.rb ├── spec.opts ├── spec_helper.rb ├── spec_helper_acceptance.rb ├── type_aliases │ ├── mountdevice_spec.rb │ ├── ringtype_spec.rb │ └── storageservertype_spec.rb └── unit │ ├── provider │ ├── swift_account_config │ │ └── ini_setting_spec.rb │ ├── swift_account_uwsgi_config │ │ └── ini_setting_spec.rb │ ├── swift_bench_config │ │ └── ini_setting_spec.rb │ ├── swift_ceilometer_config │ │ └── openstackconfig_spec.rb │ ├── swift_config │ │ └── ini_setting_spec.rb │ ├── swift_container_config │ │ └── ini_setting_spec.rb │ ├── swift_container_sync_realms_config │ │ └── ini_setting_spec.rb │ ├── swift_container_uwsgi_config │ │ └── ini_setting_spec.rb │ ├── swift_dispersion_config │ │ └── ini_setting_spec.rb │ ├── swift_drive_audit_config │ │ └── ini_setting_spec.rb │ ├── swift_internal_client_config │ │ └── ini_setting_spec.rb │ ├── swift_keymaster_config │ │ └── ini_setting_spec.rb │ ├── swift_object_config │ │ └── ini_setting_spec.rb │ ├── swift_object_expirer_config │ │ └── ini_setting_spec.rb │ ├── swift_proxy_config │ │ └── ini_setting_spec.rb │ └── swift_proxy_uwsgi_config │ │ └── ini_setting_spec.rb │ ├── puppet │ ├── provider │ │ ├── ring_account_device │ │ │ └── swift_ring_builder_spec.rb │ │ ├── ring_container_device │ │ │ └── swift_ring_builder_spec.rb │ │ ├── ring_object_device │ │ │ └── swift_ring_builder_spec.rb │ │ ├── service │ │ │ └── swiftinit_spec.rb │ │ └── swift_storage_policy │ │ │ └── ruby.rb │ └── type │ │ ├── ring_account_device_spec.rb │ │ ├── ring_container_device_spec.rb │ │ ├── ring_object_device_spec.rb │ │ └── swift_storage_policy.rb │ └── type │ ├── swift_account_config_spec.rb │ ├── swift_account_uwsgi_config_spec.rb │ ├── swift_bench_config_spec.rb │ ├── swift_ceilometer_config_spec.rb │ ├── swift_config_spec.rb │ ├── swift_container_config_spec.rb │ ├── swift_container_sync_realms_config.rb │ ├── swift_container_uwsgi_config_spec.rb │ ├── swift_dispersion_config_spec.rb │ ├── swift_drive_audit_config_spec.rb │ ├── swift_internal_client_config_spec.rb │ ├── swift_keymaster_config_spec.rb │ ├── swift_object_config_spec.rb │ ├── swift_object_expirer_config_spec.rb │ ├── swift_proxy_config_spec.rb │ └── swift_proxy_uwsgi_config_spec.rb ├── tox.ini └── types ├── mountdevice.pp ├── pipeline.pp ├── ringtype.pp ├── serviceprovider.pp ├── sortingmethod.pp └── storageservertype.pp /.gemfile: -------------------------------------------------------------------------------- 1 | source :rubygems 2 | 3 | puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 2.7'] 4 | gem 'puppet', puppetversion 5 | gem 'puppetlabs_spec_helper', '>= 0.1.0' 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Add patterns in here to exclude files created by tools integrated with this 2 | # repository, such as test frameworks from the project's recommended workflow, 3 | # rendered documentation and package builds. 4 | # 5 | # Don't add patterns to exclude files created by preferred personal tools 6 | # (editors, IDEs, your operating system itself even). These should instead be 7 | # maintained outside the repository, for example in a ~/.gitignore file added 8 | # with: 9 | # 10 | # git config --global core.excludesfile '~/.gitignore' 11 | 12 | pkg/ 13 | Gemfile.lock 14 | vendor/ 15 | spec/fixtures/ 16 | .vagrant/ 17 | .bundle/ 18 | coverage/ 19 | .idea/ 20 | *.iml 21 | /openstack 22 | /log 23 | 24 | # Files created by releasenotes build 25 | releasenotes/build 26 | .tox 27 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/puppet-swift.git 5 | -------------------------------------------------------------------------------- /.pdkignore: -------------------------------------------------------------------------------- 1 | # common list used in puppetlabs repos 2 | .git/ 3 | .*.sw[op] 4 | .metadata 5 | .yardoc 6 | .yardwarns 7 | *.iml 8 | /.bundle/ 9 | /.idea/ 10 | /.vagrant/ 11 | /coverage/ 12 | /bin/ 13 | /doc/ 14 | /Gemfile.local 15 | /Gemfile.lock 16 | /junit/ 17 | /log/ 18 | /pkg/ 19 | /spec/fixtures/manifests/ 20 | /spec/fixtures/modules/* 21 | /tmp/ 22 | /vendor/ 23 | /convert_report.txt 24 | /update_report.txt 25 | .DS_Store 26 | .project 27 | .envrc 28 | /inventory.yaml 29 | /spec/fixtures/litmus_inventory.yaml 30 | /.fixtures.yml 31 | /Gemfile 32 | /.gitattributes 33 | /.gitignore 34 | /.pdkignore 35 | /.puppet-lint.rc 36 | /Rakefile 37 | /rakelib/ 38 | /.rspec 39 | /..yml 40 | /.yardopts 41 | /spec/ 42 | /.vscode/ 43 | /.sync.yml 44 | /.devcontainer/ 45 | # OpenStack-specific files 46 | /bindep.txt 47 | /.gitreview 48 | /releasenotes/ 49 | /setup.cfg 50 | /setup.py 51 | /tox.ini 52 | /.zuul.yaml 53 | -------------------------------------------------------------------------------- /.sync.yml: -------------------------------------------------------------------------------- 1 | --- 2 | spec/spec_helper.rb: 3 | unmanaged: true 4 | -------------------------------------------------------------------------------- /.zuul.yaml: -------------------------------------------------------------------------------- 1 | - project: 2 | templates: 3 | - puppet-openstack-check-jobs 4 | - puppet-openstack-module-unit-jobs 5 | - puppet-openstack-integration-jobs-scenario002 6 | - puppet-openstack-litmus-jobs 7 | - release-notes-jobs-python3 8 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | The source repository for this project can be found at: 2 | 3 | https://opendev.org/openstack/puppet-swift 4 | 5 | Pull requests submitted through GitHub are not monitored. 6 | 7 | To start contributing to OpenStack, follow the steps in the contribution guide 8 | to set up and use Gerrit: 9 | 10 | https://docs.openstack.org/contributors/code-and-documentation/quick-start.html 11 | 12 | Bugs should be filed on Launchpad: 13 | 14 | https://bugs.launchpad.net/puppet-swift 15 | 16 | For more specific information about contributing to this repository, see the 17 | Puppet OpenStack contributor guide: 18 | 19 | https://docs.openstack.org/puppet-openstack-guide/latest/contributor/contributing.html 20 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source ENV['GEM_SOURCE'] || "https://rubygems.org" 2 | 3 | group :development, :test, :system_tests do 4 | spec_helper_dir = '/home/zuul/src/opendev.org/openstack/puppet-openstack_spec_helper' 5 | if File.directory?(spec_helper_dir) 6 | if ENV['ZUUL_PROJECT'] == 'openstack/puppet-openstack_spec_helper' 7 | gem 'puppet-openstack_spec_helper', 8 | :path => '../..', 9 | :require => 'false' 10 | else 11 | gem 'puppet-openstack_spec_helper', 12 | :path => spec_helper_dir, 13 | :require => 'false' 14 | end 15 | else 16 | spec_helper_version = ENV['ZUUL_BRANCH'] || "master" 17 | gem 'puppet-openstack_spec_helper', 18 | :git => 'https://opendev.org/openstack/puppet-openstack_spec_helper', 19 | :ref => spec_helper_version, 20 | :require => 'false' 21 | end 22 | end 23 | 24 | if facterversion = ENV['FACTER_GEM_VERSION'] 25 | gem 'facter', facterversion, :require => false 26 | else 27 | gem 'facter', :require => false 28 | end 29 | 30 | if puppetversion = ENV['PUPPET_GEM_VERSION'] 31 | gem 'puppet', puppetversion, :require => false 32 | else 33 | gem 'puppet', :require => false 34 | end 35 | 36 | # vim:ft=ruby 37 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'puppet-openstack_spec_helper/rake_tasks' 2 | -------------------------------------------------------------------------------- /bindep.txt: -------------------------------------------------------------------------------- 1 | # This is a cross-platform list tracking distribution packages needed by tests; 2 | # see https://docs.openstack.org/infra/bindep/ for additional information. 3 | 4 | libxml2-devel [test platform:rpm] 5 | libxml2-dev [test platform:dpkg] 6 | libxslt-devel [test platform:rpm] 7 | libxslt1-dev [test platform:dpkg] 8 | ruby-devel [test platform:rpm] 9 | ruby-dev [test platform:dpkg] 10 | zlib1g-dev [test platform:dpkg] 11 | zlib-devel [test platform:rpm] 12 | puppet [build] 13 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | # This is required for the docs build jobs 2 | sphinx>=3.5.1 # BSD 3 | openstackdocstheme>=2.2.7 # Apache-2.0 4 | 5 | # This is required for the releasenotes build jobs 6 | reno>=3.2.0 # Apache-2.0 7 | -------------------------------------------------------------------------------- /lib/puppet/functions/validate_tempauth_account.rb: -------------------------------------------------------------------------------- 1 | Puppet::Functions.create_function(:validate_tempauth_account) do 2 | def validate_tempauth_account(*args) 3 | if args.size > 1 4 | raise Puppet::Error, "validate_tempauth_account takes only a single argument, #{args.size} provided" 5 | end 6 | arg = args[0] 7 | 8 | if not arg.kind_of?(Hash) 9 | raise Puppet::Error, "non-hash argument provided to validate_tempauth_account" 10 | end 11 | 12 | ['user', 'account', 'key'].each do |key| 13 | if arg.has_key?(key) 14 | key_real = key 15 | elsif arg.has_key?(key.to_sym) 16 | key_real = key.to_sym 17 | else 18 | raise Puppet::Error, "The required key #{key} is missing" 19 | end 20 | 21 | if not arg[key_real].kind_of?(String) 22 | raise Puppet::Error, "The key #{key} is not a string value" 23 | end 24 | 25 | if arg[key_real].length == 0 26 | raise Puppet::Error, "The key #{key} is empty" 27 | end 28 | end 29 | 30 | ['groups'].each do |key| 31 | if arg.has_key?(key) 32 | key_real = key 33 | elsif arg.has_key?(key.to_sym) 34 | key_real = key.to_sym 35 | else 36 | raise Puppet::Error, "The required key #{key} is missing" 37 | end 38 | 39 | if not arg[key_real].kind_of?(Array) 40 | raise Puppet::Error, "The key #{key} is not an array value" 41 | end 42 | end 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /lib/puppet/provider/ring_account_device/swift_ring_builder.rb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), '..', 'swift_ring_builder') 2 | Puppet::Type.type(:ring_account_device).provide( 3 | :swift_ring_builder, 4 | :parent => Puppet::Provider::SwiftRingBuilder 5 | ) do 6 | 7 | optional_commands :swift_ring_builder => 'swift-ring-builder' 8 | 9 | def prefetch(resource) 10 | @my_ring = lookup_ring 11 | end 12 | 13 | def ring 14 | @my_ring ||= lookup_ring 15 | end 16 | 17 | def self.builder_file_path(policy_index) 18 | '/etc/swift/account.builder' 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /lib/puppet/provider/ring_container_device/swift_ring_builder.rb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), '..', 'swift_ring_builder') 2 | Puppet::Type.type(:ring_container_device).provide( 3 | :swift_ring_builder, 4 | :parent => Puppet::Provider::SwiftRingBuilder 5 | ) do 6 | 7 | optional_commands :swift_ring_builder => 'swift-ring-builder' 8 | 9 | def prefetch(resource) 10 | @my_ring = lookup_ring 11 | end 12 | 13 | def ring 14 | @my_ring ||= lookup_ring 15 | end 16 | 17 | def self.builder_file_path(policy_index) 18 | '/etc/swift/container.builder' 19 | end 20 | 21 | end 22 | -------------------------------------------------------------------------------- /lib/puppet/provider/ring_object_device/swift_ring_builder.rb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), '..', 'swift_ring_builder') 2 | Puppet::Type.type(:ring_object_device).provide( 3 | :swift_ring_builder, 4 | :parent => Puppet::Provider::SwiftRingBuilder 5 | ) do 6 | 7 | optional_commands :swift_ring_builder => 'swift-ring-builder' 8 | 9 | def prefetch(resource) 10 | @my_ring = lookup_ring 11 | end 12 | 13 | def ring 14 | @my_ring ||= lookup_ring 15 | end 16 | 17 | def self.builder_file_path(policy_index) 18 | if policy_index.nil? 19 | '/etc/swift/object.builder' 20 | elsif policy_index == 0 21 | '/etc/swift/object.builder' 22 | else 23 | "/etc/swift/object-#{policy_index}.builder" 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_account_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_account_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def setting 7 | val = super 8 | return nil if val == '' 9 | val 10 | end 11 | 12 | def self.file_path 13 | '/etc/swift/account-server.conf' 14 | end 15 | 16 | end 17 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_account_uwsgi_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_account_uwsgi_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | def self.file_path 6 | '/etc/swift/swift-account-server-uwsgi.ini' 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_bench_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_bench_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/swift-bench.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_ceilometer_config/openstackconfig.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_ceilometer_config).provide( 2 | :openstackconfig, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ruby) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/ceilometer.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/swift.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_container_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_container_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def setting 7 | val = super 8 | return nil if val == '' 9 | val 10 | end 11 | 12 | def self.file_path 13 | '/etc/swift/container-server.conf' 14 | end 15 | 16 | end 17 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_container_reconciler_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_container_reconciler_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/container-reconciler.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_container_sync_realms_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_container_sync_realms_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/container-sync-realms.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_container_uwsgi_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_container_uwsgi_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | def self.file_path 6 | '/etc/swift/swift-container-server-uwsgi.ini' 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_dispersion_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_dispersion_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/dispersion.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_drive_audit_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_drive_audit_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/drive-audit.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_internal_client_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_internal_client_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/internal-client.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_keymaster_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_keymaster_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/keymaster.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_memcache_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_memcache_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/memcache.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_object_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_object_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def setting 7 | val = super 8 | return nil if val == '' 9 | val 10 | end 11 | 12 | def self.file_path 13 | '/etc/swift/object-server.conf' 14 | end 15 | 16 | end 17 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_object_expirer_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_object_expirer_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/object-expirer.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_proxy_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_proxy_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/swift/proxy-server.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/swift_proxy_uwsgi_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:swift_proxy_uwsgi_config).provide( 2 | :ini_setting, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ini_setting) 4 | ) do 5 | def self.file_path 6 | '/etc/swift/swift-proxy-server-uwsgi.ini' 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/type/ring_account_device.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:ring_account_device) do 2 | require 'ipaddr' 3 | require 'uri' 4 | 5 | ensurable 6 | 7 | newparam(:name, :namevar => true) do 8 | validate do |value| 9 | if !value.split(/^\d+:/)[1].nil? 10 | raise(Puppet::Error, "Policy_index is not supported on account device") 11 | end 12 | # we have to have URI Scheme so we just add http:// and ignore it later 13 | uri = URI('http://' + value) 14 | if ['','/'].include?(uri.path) 15 | raise(Puppet::Error, "namevar should contain a device") 16 | end 17 | IPAddr.new(uri.host) 18 | end 19 | 20 | munge do |value| 21 | # we have to have URI Scheme so we just add http:// and ignore it later 22 | uri = URI('http://' + value) 23 | ip = IPAddr.new(uri.host) 24 | if ip.ipv6? 25 | value.gsub(uri.host, '[' + ip.to_s + ']') 26 | else 27 | value 28 | end 29 | end 30 | end 31 | 32 | newproperty(:region) 33 | 34 | newproperty(:zone) 35 | 36 | newproperty(:weight) do 37 | munge do |value| 38 | "%.2f" % value 39 | end 40 | end 41 | 42 | newproperty(:meta) 43 | 44 | [:id, :partitions, :balance].each do |param| 45 | newproperty(param) do 46 | validate do |value| 47 | raise(Puppet::Error, "#{param} is a read only property, cannot be assigned") 48 | end 49 | end 50 | end 51 | 52 | end 53 | -------------------------------------------------------------------------------- /lib/puppet/type/ring_container_device.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:ring_container_device) do 2 | require 'ipaddr' 3 | require 'uri' 4 | 5 | ensurable 6 | 7 | newparam(:name, :namevar => true) do 8 | validate do |value| 9 | if !value.split(/^\d+:/)[1].nil? 10 | raise(Puppet::Error, "Policy_index is not supported on container device") 11 | end 12 | # we have to have URI Scheme so we just add http:// and ignore it later 13 | uri = URI('http://' + value) 14 | if ['','/'].include?(uri.path) 15 | raise(Puppet::Error, "namevar should contain a device") 16 | end 17 | IPAddr.new(uri.host) 18 | end 19 | 20 | munge do |value| 21 | # we have to have URI Scheme so we just add http:// and ignore it later 22 | uri = URI('http://' + value) 23 | ip = IPAddr.new(uri.host) 24 | if ip.ipv6? 25 | value.gsub(uri.host, '[' + ip.to_s + ']') 26 | else 27 | value 28 | end 29 | end 30 | end 31 | 32 | newproperty(:region) 33 | 34 | newproperty(:zone) 35 | 36 | newproperty(:weight) do 37 | munge do |value| 38 | "%.2f" % value 39 | end 40 | end 41 | 42 | newproperty(:meta) 43 | 44 | [:id, :partitions, :balance].each do |param| 45 | newproperty(param) do 46 | validate do |value| 47 | raise(Puppet::Error, "#{param} is a read only property, cannot be assigned") 48 | end 49 | end 50 | end 51 | 52 | end 53 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_account_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_account_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/account-server.conf' 7 | newvalues(/\S+\/\S*/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_account_uwsgi_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_account_uwsgi_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/swift-account-server-uwsgi.ini' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newparam(:ensure_absent_val) do 11 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 12 | defaultto('') 13 | end 14 | 15 | autorequire(:anchor) do 16 | ['swift::install::end'] 17 | end 18 | 19 | newproperty(:value) do 20 | desc 'The value of the setting to be defined.' 21 | munge do |value| 22 | value = value.to_s.strip 23 | value.capitalize! if value =~ /^(true|false)$/i 24 | value 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_bench_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_bench_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/swift-bench.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/swift.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | # Require the swift.conf to be present 50 | autorequire(:anchor) do 51 | ['swift::install::end'] 52 | end 53 | 54 | end 55 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_container_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_container_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/container-server.conf' 7 | newvalues(/\S+\/\S*/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_container_reconciler_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_container_reconciler_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/container-reconciler.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | 18 | def is_to_s( currentvalue ) 19 | if resource.secret? 20 | return '[old secret redacted]' 21 | else 22 | return currentvalue 23 | end 24 | end 25 | 26 | def should_to_s( newvalue ) 27 | if resource.secret? 28 | return '[new secret redacted]' 29 | else 30 | return newvalue 31 | end 32 | end 33 | end 34 | 35 | newparam(:secret, :boolean => true) do 36 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 37 | newvalues(:true, :false) 38 | defaultto false 39 | end 40 | 41 | newparam(:ensure_absent_val) do 42 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 43 | defaultto('') 44 | end 45 | 46 | # Require the package providing container-reconciler to be present 47 | autorequire(:anchor) do 48 | ['swift::install::end'] 49 | end 50 | 51 | end 52 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_container_sync_realms_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_container_sync_realms_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/container-sync-realms.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_container_uwsgi_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_container_uwsgi_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/swift-container-server-uwsgi.ini' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newparam(:ensure_absent_val) do 11 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 12 | defaultto('') 13 | end 14 | 15 | autorequire(:anchor) do 16 | ['swift::install::end'] 17 | end 18 | 19 | newproperty(:value) do 20 | desc 'The value of the setting to be defined.' 21 | munge do |value| 22 | value = value.to_s.strip 23 | value.capitalize! if value =~ /^(true|false)$/i 24 | value 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_dispersion_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_dispersion_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/dispersion.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_drive_audit_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_drive_audit_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/drive-audit.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_internal_client_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_internal_client_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/internal-client.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_keymaster_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_keymaster_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/keymaster.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_memcache_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_memcache_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/memcache.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_object_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_object_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/object-server.conf' 7 | newvalues(/\S+\/\S*/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_object_expirer_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_object_expirer_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/object-expirer.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | 18 | def is_to_s( currentvalue ) 19 | if resource.secret? 20 | return '[old secret redacted]' 21 | else 22 | return currentvalue 23 | end 24 | end 25 | 26 | def should_to_s( newvalue ) 27 | if resource.secret? 28 | return '[new secret redacted]' 29 | else 30 | return newvalue 31 | end 32 | end 33 | end 34 | 35 | newparam(:secret, :boolean => true) do 36 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 37 | newvalues(:true, :false) 38 | defaultto false 39 | end 40 | 41 | newparam(:ensure_absent_val) do 42 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 43 | defaultto('') 44 | end 45 | 46 | # Require the package providing object-expirer to be present 47 | autorequire(:anchor) do 48 | ['swift::install::end'] 49 | end 50 | 51 | end 52 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_proxy_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_proxy_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/proxy-server.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value) do 11 | desc 'The value of the setting to be defined.' 12 | munge do |value| 13 | value = value.to_s.strip 14 | value.capitalize! if value =~ /^(true|false)$/i 15 | value 16 | end 17 | newvalues(/^[\S ]*$/) 18 | 19 | def is_to_s( currentvalue ) 20 | if resource.secret? 21 | return '[old secret redacted]' 22 | else 23 | return currentvalue 24 | end 25 | end 26 | 27 | def should_to_s( newvalue ) 28 | if resource.secret? 29 | return '[new secret redacted]' 30 | else 31 | return newvalue 32 | end 33 | end 34 | end 35 | 36 | newparam(:secret, :boolean => true) do 37 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 38 | 39 | newvalues(:true, :false) 40 | 41 | defaultto false 42 | end 43 | 44 | newparam(:ensure_absent_val) do 45 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 46 | defaultto('') 47 | end 48 | 49 | autorequire(:anchor) do 50 | ['swift::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/puppet/type/swift_proxy_uwsgi_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:swift_proxy_uwsgi_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/swift/swift-proxy-server-uwsgi.ini' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newparam(:ensure_absent_val) do 11 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 12 | defaultto('') 13 | end 14 | 15 | autorequire(:anchor) do 16 | ['swift::install::end'] 17 | end 18 | 19 | newproperty(:value) do 20 | desc 'The value of the setting to be defined.' 21 | munge do |value| 22 | value = value.to_s.strip 23 | value.capitalize! if value =~ /^(true|false)$/i 24 | value 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /manifests/auth_file.pp: -------------------------------------------------------------------------------- 1 | # == Class: swift::auth_file 2 | # 3 | # Create a RC credentials file for Swift v1 authentication 4 | # 5 | # === Parameters: 6 | # 7 | # [*admin_tenant*] 8 | # (required) The name of the tenant used to authenticate 9 | # 10 | # [*admin_user*] 11 | # (optional) The name of the user to create in keystone for use by the ironic services 12 | # Defaults to 'admin' 13 | # 14 | # [*auth_url*] 15 | # (optional) The authentication URL 16 | # Defaults to 'http://127.0.0.1:5000/v3/' 17 | # 18 | # [*admin_password*] 19 | # (required) The password for the swift user 20 | # 21 | class swift::auth_file ( 22 | $admin_tenant, 23 | $admin_password, 24 | $admin_user = 'admin', 25 | $auth_url = 'http://127.0.0.1:5000/v3/' 26 | ) { 27 | 28 | include swift::deps 29 | 30 | file { '/root/swiftrc': 31 | ensure => file, 32 | owner => 'root', 33 | group => 'root', 34 | mode => '0600', 35 | tag => 'swift-file', 36 | content => 37 | " 38 | export ST_USER=${admin_tenant}:${admin_user} 39 | export ST_KEY=${admin_password} 40 | export ST_AUTH=${auth_url} 41 | ", 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /manifests/client.pp: -------------------------------------------------------------------------------- 1 | # == Class: swift::client 2 | # 3 | # Installs swift client. 4 | # 5 | # === Parameters 6 | # 7 | # [*ensure*] 8 | # (optional) Ensure state of the package. 9 | # Defaults to 'present'. 10 | # 11 | class swift::client ( 12 | $ensure = 'present', 13 | ) { 14 | 15 | include swift::deps 16 | include swift::params 17 | 18 | package { 'swiftclient': 19 | ensure => $ensure, 20 | name => $::swift::params::client_package, 21 | tag => 'openstack', 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /manifests/internal_client/catch_errors.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift cache_errors. 3 | # 4 | # == Dependencies 5 | # 6 | # == Examples 7 | # 8 | # include swift::internal_client::catch_errors 9 | # 10 | # == Authors 11 | # 12 | # Francois Charlier fcharlier@ploup.net 13 | # 14 | # == Copyright 15 | # 16 | # Copyright 2012 eNovance licensing@enovance.com 17 | # 18 | class swift::internal_client::catch_errors() { 19 | 20 | include swift::deps 21 | 22 | swift_internal_client_config { 23 | 'filter:catch_errors/use': value => 'egg:swift#catch_errors'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /manifests/internal_client/proxy_logging.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift proxy-logging. 3 | # 4 | # == Authors 5 | # 6 | # Joe Topjian joe@topjian.net 7 | # 8 | class swift::internal_client::proxy_logging { 9 | 10 | include swift::deps 11 | 12 | swift_internal_client_config { 13 | 'filter:proxy-logging/use': value => 'egg:swift#proxy_logging'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /manifests/internal_client/symlink.pp: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | # 13 | # Configure swift symlink middleware. 14 | # 15 | # == Example 16 | # 17 | # include swift::internal_client::symlink 18 | # 19 | # == Parameters 20 | # 21 | # [*symloop_max*] 22 | # Symlinks can point to other symlinks provided the number of symlinks in a 23 | # chain does not exceed the symloop_max value. If the number of chained 24 | # symlinks exceeds the limit symloop_max a 409 (HTTPConflict) error 25 | # response will be produced. 26 | # Default to $facts['os_service_default'] 27 | # 28 | # == Authors 29 | # 30 | # shi.yan@ardc.edu.au 31 | # 32 | class swift::internal_client::symlink( 33 | $symloop_max = $facts['os_service_default'], 34 | ) { 35 | 36 | include swift::deps 37 | 38 | swift_internal_client_config { 39 | 'filter:symlink/use': value => 'egg:swift#symlink'; 40 | 'filter:symlink/symloop_max': value => $symloop_max; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /manifests/keystone/dispersion.pp: -------------------------------------------------------------------------------- 1 | # == Class: swift::keystone::dispersion 2 | # 3 | # This class creates a user in Keystone for the swift-dispersion-report 4 | # and swift-dispersion-populate tools. 5 | # 6 | # The user is given the admin role in the services tenant. 7 | # 8 | # Use the class swift::dispersion to create the matching config file. 9 | # 10 | # === Parameters 11 | # 12 | # [*auth_user*] 13 | # String. The name of the user. 14 | # Optional. Defaults to 'dispersion'. 15 | # 16 | # [*auth_pass*] 17 | # String. The user's password. 18 | # Optional. Defaults to 'dispersion_password'. 19 | # 20 | # [*email*] 21 | # (Optional) The email address for the swift service user 22 | # Defaults to 'swift@localhost' 23 | # 24 | # [*tenant*] 25 | # (Optional) The tenant to use for the swift service user 26 | # Defaults to 'services' 27 | # 28 | # === Authors 29 | # 30 | # Francois Charlier fcharlier@ploup.net 31 | # 32 | class swift::keystone::dispersion( 33 | $auth_user = 'dispersion', 34 | $auth_pass = 'dispersion_password', 35 | $email = 'swift@localhost', 36 | $tenant = 'services' 37 | ) { 38 | 39 | include swift::deps 40 | 41 | keystone_user { $auth_user: 42 | ensure => present, 43 | password => $auth_pass, 44 | email => $email, 45 | } 46 | 47 | keystone_user_role { "${auth_user}@${tenant}": 48 | ensure => present, 49 | roles => 'admin', 50 | } 51 | 52 | Keystone_user<| title == $auth_user |> 53 | ~> Keystone_user_role<| title == "${auth_user}@${tenant}" |> 54 | 55 | } 56 | -------------------------------------------------------------------------------- /manifests/proxy/account_quotas.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2013 eNovance SAS 3 | # 4 | # Author: Emilien Macchi 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | # Configure Swift Account Quotas 19 | # 20 | class swift::proxy::account_quotas() { 21 | 22 | include swift::deps 23 | 24 | swift_proxy_config { 25 | 'filter:account_quotas/use': value => 'egg:swift#account_quotas'; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /manifests/proxy/audit.pp: -------------------------------------------------------------------------------- 1 | # == Class: swift::proxy::audit 2 | # 3 | # Configure audit middleware for Swift proxy. 4 | # 5 | # === Parameters 6 | # 7 | # [*filter_factory*] 8 | # (Optional) The audit filter factory. 9 | # Defaults to 'keystonemiddleware.audit:filter_factory' 10 | # 11 | # [*audit_map_file*] 12 | # (Optional) The audit map file. 13 | # Defaults to '/etc/pycadf/swift_api_audit_map.conf' 14 | # 15 | # == Authors 16 | # 17 | # Christian Schwede 18 | # Tobias Urdin 19 | # 20 | class swift::proxy::audit ( 21 | $filter_factory = 'keystonemiddleware.audit:filter_factory', 22 | $audit_map_file = '/etc/pycadf/swift_api_audit_map.conf', 23 | ) { 24 | 25 | include swift::deps 26 | 27 | swift_proxy_config { 28 | 'filter:audit/paste.filter_factory': value => $filter_factory; 29 | 'filter:audit/audit_map_file': value => $audit_map_file; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /manifests/proxy/catch_errors.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift cache_errors. 3 | # 4 | # == Dependencies 5 | # 6 | # == Examples 7 | # 8 | # include swift::proxy::catch_errors 9 | # 10 | # == Authors 11 | # 12 | # Francois Charlier fcharlier@ploup.net 13 | # 14 | # == Copyright 15 | # 16 | # Copyright 2012 eNovance licensing@enovance.com 17 | # 18 | class swift::proxy::catch_errors() { 19 | 20 | include swift::deps 21 | 22 | swift_proxy_config { 23 | 'filter:catch_errors/use': value => 'egg:swift#catch_errors'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /manifests/proxy/container_quotas.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2013 eNovance SAS 3 | # 4 | # Author: Emilien Macchi 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | # Configure Swift Container Quotas 19 | # 20 | class swift::proxy::container_quotas() { 21 | 22 | include swift::deps 23 | 24 | swift_proxy_config { 25 | 'filter:container_quotas/use': value => 'egg:swift#container_quotas'; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /manifests/proxy/container_sync.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure Swift Container Sync 3 | # 4 | # == Parameters 5 | # 6 | # [*allow_full_urls*] 7 | # (Optional) Allow full URL values to be set for new X-Container-Sync-To 8 | # headers. 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*current*] 12 | # (Optional) Set this to specify this clusters //realm/cluster as "current" in 13 | # /info. 14 | # Defaults to $facts['os_service_default'] 15 | # 16 | # == Authors 17 | # 18 | # Denis Egorenko 19 | # 20 | class swift::proxy::container_sync( 21 | $allow_full_urls = $facts['os_service_default'], 22 | $current = $facts['os_service_default'], 23 | ) { 24 | 25 | include swift::deps 26 | 27 | swift_proxy_config { 28 | 'filter:container_sync/use': value => 'egg:swift#container_sync'; 29 | 'filter:container_sync/allow_full_urls': value => $allow_full_urls; 30 | 'filter:container_sync/current': value => $current; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /manifests/proxy/copy.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift copy. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::copy 7 | # 8 | # == Parameters 9 | # 10 | # [*object_post_as_copy*] 11 | # Set object_post_as_copy = false to turn on fast posts where only the metadata 12 | # changes are stored anew and the original data file is kept in place. This 13 | # makes for quicker posts. 14 | # When object_post_as_copy is set to true, a POST request will be transformed 15 | # into a COPY request where source and destination objects are the same. This 16 | # is the current default in Swift. 17 | # 18 | class swift::proxy::copy ( 19 | $object_post_as_copy = true 20 | ) { 21 | 22 | include swift::deps 23 | 24 | swift_proxy_config { 25 | 'filter:copy/use': value => 'egg:swift#copy'; 26 | 'filter:copy/object_post_as_copy': value => $object_post_as_copy; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /manifests/proxy/crossdomain.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift crossdomain. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::crossdomain 7 | # 8 | # == Parameters 9 | # 10 | # [*cross_domain_policy*] 11 | # cross_domain_policy value according to https://docs.openstack.org/swift/latest/crossdomain.html 12 | # default: 13 | # 14 | class swift::proxy::crossdomain ( 15 | $cross_domain_policy = '', 16 | ) { 17 | 18 | include swift::deps 19 | 20 | swift_proxy_config { 21 | 'filter:crossdomain/use': value => 'egg:swift#crossdomain'; 22 | 'filter:crossdomain/cross_domain_policy': value => $cross_domain_policy; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /manifests/proxy/dlo.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift dlo. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::dlo 7 | # 8 | # == Parameters 9 | # 10 | # [*rate_limit_after_segment*] 11 | # (Optional) Start rate-limiting DLO segment serving after the Nth segment of 12 | # a segmented object. 13 | # Defaults to $facts['os_service_default']. 14 | # 15 | # [*rate_limit_segments_per_sec*] 16 | # (Optional) Once segment rate-limiting kicks in for an object, limit segments 17 | # served to N per second. 0 means no rate-limiting. 18 | # Defaults to $facts['os_service_default']. 19 | # 20 | # [*max_get_time*] 21 | # (Optional) Time limit on GET requests (seconds). 22 | # Defaults to $facts['os_service_default']. 23 | # 24 | # == Authors 25 | # 26 | # Aleksandr Didenko adidenko@mirantis.com 27 | # 28 | # == Copyright 29 | # 30 | # Copyright 2015 Mirantis Inc, unless otherwise noted. 31 | # 32 | class swift::proxy::dlo ( 33 | $rate_limit_after_segment = $facts['os_service_default'], 34 | $rate_limit_segments_per_sec = $facts['os_service_default'], 35 | $max_get_time = $facts['os_service_default'], 36 | ) { 37 | 38 | include swift::deps 39 | 40 | swift_proxy_config { 41 | 'filter:dlo/use': value => 'egg:swift#dlo'; 42 | 'filter:dlo/rate_limit_after_segment': value => $rate_limit_after_segment; 43 | 'filter:dlo/rate_limit_segments_per_sec': value => $rate_limit_segments_per_sec; 44 | 'filter:dlo/max_get_time': value => $max_get_time; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /manifests/proxy/encryption.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure Swift encryption. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::encryption 7 | # 8 | # == Parameters 9 | # 10 | # [*disable_encryption*] 11 | # By default all PUT or POST'ed object data and/or metadata will be encrypted. 12 | # Encryption of new data and/or metadata may be disabled by setting 13 | # disable_encryption to True. However, all encryption middleware should remain 14 | # in the pipeline in order for existing encrypted data to be read. 15 | # 16 | class swift::proxy::encryption ( 17 | $disable_encryption = false 18 | ) { 19 | 20 | include swift::deps 21 | 22 | swift_proxy_config { 23 | 'filter:encryption/use': value => 'egg:swift#encryption'; 24 | 'filter:encryption/disable_encryption': value => $disable_encryption; 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /manifests/proxy/etag_quoter.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift etag quoter. 3 | # 4 | # == Parameters 5 | # 6 | # [*enabled_by_default*] 7 | # Enable quoting ETag header cluster-wide by default. 8 | # Defaults to $facts['os_service_default']. 9 | # 10 | # == Examples 11 | # 12 | # class {'swift::proxy::etag_quoter': 13 | # enable_by_default => true, 14 | # } 15 | # 16 | # == Authors 17 | # 18 | # Takashi Kajinami 19 | # 20 | # == Copyright 21 | # 22 | # Copyright (C) 2020 Red Hat 23 | # 24 | class swift::proxy::etag_quoter ( 25 | $enabled_by_default = $facts['os_service_default'] 26 | ) { 27 | 28 | include swift::deps 29 | 30 | swift_proxy_config { 31 | 'filter:etag-quoter/use': value => 'egg:swift#etag_quoter'; 32 | 'filter:etag-quoter/enabled_by_default': value => $enabled_by_default; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /manifests/proxy/formpost.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift formpost. 3 | # 4 | # == Parameters 5 | # 6 | # [*allowed_digests*] 7 | # The digest algorithm(s) supported for generating signatures. 8 | # Optional. Defaults to $facts['os_service_default']. 9 | # 10 | # == Dependencies 11 | # 12 | # == Examples 13 | # 14 | # include swift::proxy::formpost 15 | # 16 | # == Authors 17 | # 18 | # Mehdi Abaakouk 19 | # 20 | # == Copyright 21 | # 22 | # Copyright 2012 eNovance licensing@enovance.com 23 | # 24 | class swift::proxy::formpost( 25 | $allowed_digests = $facts['os_service_default'], 26 | ) { 27 | 28 | include swift::deps 29 | 30 | swift_proxy_config { 31 | 'filter:formpost/use': value => 'egg:swift#formpost'; 32 | 'filter:formpost/allowed_digests': value => join(any2array($allowed_digests), ' '); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /manifests/proxy/healthcheck.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift healthcheck. 3 | # 4 | # == Dependencies 5 | # 6 | # == Examples 7 | # 8 | # == Authors 9 | # 10 | # Dan Bode dan@puppetlabs.com 11 | # 12 | # == Copyright 13 | # 14 | # Copyright 2011 Puppetlabs Inc, unless otherwise noted. 15 | # 16 | class swift::proxy::healthcheck() { 17 | 18 | include swift::deps 19 | 20 | swift_proxy_config { 21 | 'filter:healthcheck/use': value => 'egg:swift#healthcheck'; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /manifests/proxy/keymaster.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure Swift Keymaster middleware. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::keymaster 7 | # 8 | # == Parameters 9 | # 10 | # [*encryption_root_secret*] 11 | # Encryption root secret value. 12 | # 13 | class swift::proxy::keymaster ( 14 | $encryption_root_secret, 15 | ) { 16 | 17 | include swift::deps 18 | 19 | swift_proxy_config { 20 | 'filter:keymaster/use': value => 'egg:swift#keymaster'; 21 | 'filter:keymaster/encryption_root_secret': value => $encryption_root_secret, secret => true; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /manifests/proxy/kms_keymaster.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure Swift KMS Keymaster middleware. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::kms_keymaster 7 | # 8 | # == Parameters 9 | # 10 | # [*keymaster_config_path*] 11 | # Sets the path from which the keymaster config options should be read 12 | # 13 | class swift::proxy::kms_keymaster ( 14 | $keymaster_config_path = '/etc/swift/keymaster.conf' 15 | ) { 16 | 17 | include swift::deps 18 | 19 | swift_proxy_config { 20 | 'filter:kms_keymaster/use': value => 'egg:swift#kms_keymaster'; 21 | 'filter:kms_keymaster/keymaster_config_path': value => $keymaster_config_path; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /manifests/proxy/listing_formats.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift listing_formats. 3 | # 4 | # == Parameters 5 | # 6 | # == Examples 7 | # 8 | # include swift::proxy::listing_formats 9 | # 10 | # == Authors 11 | # 12 | # Takashi Kajinami 13 | # 14 | # == Copyright 15 | # 16 | # Copyright (C) 2021 Red Hat 17 | # 18 | class swift::proxy::listing_formats ( 19 | ) { 20 | 21 | include swift::deps 22 | 23 | swift_proxy_config { 24 | 'filter:listing_formats/use': value => 'egg:swift#listing_formats'; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /manifests/proxy/proxy_logging.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift proxy-logging. 3 | # 4 | # == Authors 5 | # 6 | # Joe Topjian joe@topjian.net 7 | # 8 | class swift::proxy::proxy_logging { 9 | 10 | include swift::deps 11 | 12 | swift_proxy_config { 13 | 'filter:proxy-logging/use': value => 'egg:swift#proxy_logging'; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /manifests/proxy/read_only.pp: -------------------------------------------------------------------------------- 1 | # == Class: swift::proxy::read_only 2 | # 3 | # Configure read_only middleware 4 | # 5 | # === Parameters 6 | # 7 | # [*read_only*] 8 | # (optional) Turn on global read only. 9 | # Defauls to $facts['os_service_default'] 10 | # 11 | # [*allow_deletes*] 12 | # (optional) Allow deletes. 13 | # Defauls to $facts['os_service_default'] 14 | # 15 | class swift::proxy::read_only( 16 | $read_only = $facts['os_service_default'], 17 | $allow_deletes = $facts['os_service_default'] 18 | ) { 19 | 20 | include swift::deps 21 | 22 | swift_proxy_config { 23 | 'filter:read_only/use': value => 'egg:swift#read_only'; 24 | 'filter:read_only/read_only': value => $read_only; 25 | 'filter:read_only/allow_deletes': value => $allow_deletes; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /manifests/proxy/staticweb.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift staticweb, see documentation for Swift staticweb middleware 3 | # to understand more about configuration. 4 | # 5 | # == Dependencies 6 | # 7 | # == Examples 8 | # 9 | # include 'swift::proxy::staticweb' 10 | # 11 | # == Parameters 12 | # 13 | # [*url_base*] 14 | # (optional) The URL scheme and/or the host name used to generate redirects. 15 | # Defaults to $facts['os_service_default']. 16 | # 17 | # == Authors 18 | # 19 | # Mehdi Abaakouk 20 | # 21 | # == Copyright 22 | # 23 | # Copyright 2012 eNovance licensing@enovance.com 24 | # 25 | class swift::proxy::staticweb( 26 | $url_base = $facts['os_service_default'] 27 | ) { 28 | 29 | include swift::deps 30 | 31 | swift_proxy_config { 32 | 'filter:staticweb/use': value => 'egg:swift#staticweb'; 33 | 'filter:staticweb/url_base': value => $url_base; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /manifests/proxy/symlink.pp: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | # 13 | # Configure swift symlink middleware. 14 | # 15 | # == Example 16 | # 17 | # include swift::proxy::symlink 18 | # 19 | # == Parameters 20 | # 21 | # [*symloop_max*] 22 | # Symlinks can point to other symlinks provided the number of symlinks in a 23 | # chain does not exceed the symloop_max value. If the number of chained 24 | # symlinks exceeds the limit symloop_max a 409 (HTTPConflict) error 25 | # response will be produced. 26 | # Default to $facts['os_service_default'] 27 | # 28 | # == Authors 29 | # 30 | # shi.yan@ardc.edu.au 31 | # 32 | class swift::proxy::symlink( 33 | $symloop_max = $facts['os_service_default'], 34 | ) { 35 | 36 | include swift::deps 37 | 38 | swift_proxy_config { 39 | 'filter:symlink/use': value => 'egg:swift#symlink'; 40 | 'filter:symlink/symloop_max': value => $symloop_max; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /manifests/proxy/tempauth_account.pp: -------------------------------------------------------------------------------- 1 | # == class: swift::proxy::tempauth_account 2 | # This class manages tempauth account_users 3 | # 4 | # [*title*] 5 | # A string containing account data to write to proxy.conf 6 | # Required 7 | # Example: "user__, . ." 8 | # Result in proxy.conf: user__ = . . 9 | # 10 | # == Authors 11 | # 12 | # Adam Vinsh 13 | # 14 | define swift::proxy::tempauth_account() { 15 | 16 | include swift::deps 17 | 18 | # strip white space and split string into array elements around ',' 19 | $account_data = strip(split($title,',')) 20 | if $account_data[0] != '' { 21 | swift_proxy_config { 22 | "filter:tempauth/${account_data[0]}": value => $account_data[1], secret => true; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /manifests/proxy/versioned_writes.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure Swift versioned_writes. 3 | # 4 | # == Examples 5 | # 6 | # include swift::proxy::versioned_writes 7 | # 8 | # == Parameters 9 | # 10 | # [*allow_versioned_writes*] 11 | # Enables using versioned writes middleware and exposing configuration 12 | # settings via HTTP GET /info. 13 | # 14 | class swift::proxy::versioned_writes ( 15 | $allow_versioned_writes = false 16 | ) { 17 | 18 | include swift::deps 19 | 20 | swift_proxy_config { 21 | 'filter:versioned_writes/use': value => 'egg:swift#versioned_writes'; 22 | 'filter:versioned_writes/allow_versioned_writes': value => $allow_versioned_writes; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /manifests/ringbuilder/rebalance.pp: -------------------------------------------------------------------------------- 1 | # == Class: swift::ringbuilder::rebalance 2 | # 3 | # Reblances the specified ring. Assumes that the ring already exists 4 | # and is stored at /etc/swift/${name}.builder 5 | # 6 | # == Parameters 7 | # 8 | # [*ring_type*] 9 | # Optional. Type of ring to rebalance. The ring file is assumed to be at 10 | # the path /etc/swift/${ring_type}.builder 11 | # 12 | # [*seed*] 13 | # Optional. Seed value used to seed pythons pseudo-random for ringbuilding. 14 | # 15 | define swift::ringbuilder::rebalance( 16 | Swift::RingType $ring_type = $name, 17 | Optional[Variant[Integer[0], Pattern[/^\d+$/]]] $seed = undef 18 | ) { 19 | 20 | include swift::deps 21 | 22 | exec { "rebalance_${ring_type}": 23 | command => strip("swift-ring-builder /etc/swift/${ring_type}.builder rebalance ${seed}"), 24 | path => ['/usr/bin'], 25 | refreshonly => true, 26 | before => Anchor['swift::config::end'], 27 | returns => [0, 1], 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /manifests/ringsync.pp: -------------------------------------------------------------------------------- 1 | # == Define: swift::ringsync 2 | # 3 | # [*ring_server*] 4 | # (required) IP or hostname of ring servers 5 | # [*ring_type*] 6 | # (optional) The type of ring to create. Accepts object|container|account 7 | # 8 | define swift::ringsync( 9 | String[1] $ring_server, 10 | Swift::RingType $ring_type = $name, 11 | ) { 12 | 13 | include swift::deps 14 | 15 | Exec { path => '/usr/bin' } 16 | 17 | rsync::get { "/etc/swift/${ring_type}.ring.gz": 18 | source => "rsync://${ring_server}/swift_server/${ring_type}.ring.gz", 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /manifests/storage.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configures dependencies that are common for all storage 3 | # types. 4 | # - installs an rsync server 5 | # - installs required packages 6 | # 7 | # == Parameters 8 | # [*storage_local_net_ip*] ip address that the swift servers should 9 | # bind to. Required. 10 | # 11 | # [*rsync_use_xinetd*] 12 | # (optional) Override whether to use xinetd to manage rsync service 13 | # Defaults to swift::params::xinetd_available 14 | # 15 | # == Dependencies 16 | # 17 | # == Examples 18 | # 19 | # == Authors 20 | # 21 | # Dan Bode dan@puppetlabs.com 22 | # 23 | # == Copyright 24 | # 25 | # Copyright 2011 Puppetlabs Inc, unless otherwise noted. 26 | # 27 | class swift::storage( 28 | $storage_local_net_ip, 29 | $rsync_use_xinetd = $::swift::params::xinetd_available, 30 | ) inherits swift::params { 31 | 32 | include swift::deps 33 | 34 | if $rsync_use_xinetd and ! $::swift::params::xinetd_available { 35 | fail('xinetd is not available in this distro') 36 | } 37 | 38 | ensure_resource('class', 'rsync::server', { 39 | 'use_xinetd' => $rsync_use_xinetd, 40 | 'address' => $storage_local_net_ip, 41 | 'use_chroot' => 'no', 42 | }) 43 | } 44 | -------------------------------------------------------------------------------- /manifests/storage/disks.pp: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Red Hat, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | # 15 | # == Class: swift::storage::disks 16 | # 17 | # Class wrapper for the benefit of Hiera users 18 | # 19 | # === Parameters: 20 | # 21 | # [*args*] A Swift 'disk' config hash 22 | # Optional. Defaults to a empty hash 23 | # 24 | # [*defaults*] A config hash 25 | # Optional. Defaults to a empty hash 26 | # 27 | class swift::storage::disks($args = {}, $defaults = {}) { 28 | create_resources(swift::storage::disk, $args, $defaults) 29 | } 30 | -------------------------------------------------------------------------------- /manifests/storage/filter/healthcheck.pp: -------------------------------------------------------------------------------- 1 | # 2 | # == Copyright 3 | # 4 | # Copyright 2011 Puppetlabs Inc, unless otherwise noted. 5 | # 6 | define swift::storage::filter::healthcheck( 7 | ) { 8 | 9 | include swift::deps 10 | 11 | $config_type = "swift_${name}_config" 12 | 13 | create_resources($config_type, { 14 | 'filter:healthcheck/use' => {'value' => 'egg:swift#healthcheck'}, 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /manifests/storage/filter/recon.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configure swift recon. 3 | # 4 | # == Parameters 5 | # [*cache_path*] 6 | # (Optional) The path for recon cache 7 | # Defaults to $facts['os_service_default'] 8 | # 9 | # == Dependencies 10 | # 11 | # == Examples 12 | # 13 | # == Authors 14 | # 15 | # Dan Bode dan@puppetlabs.com 16 | # Francois Charlier fcharlier@ploup.net 17 | # 18 | # == Copyright 19 | # 20 | # Copyright 2011 Puppetlabs Inc, unless otherwise noted. 21 | # 22 | define swift::storage::filter::recon( 23 | $cache_path = $facts['os_service_default'], 24 | ) { 25 | 26 | include swift::deps 27 | 28 | $config_type = "swift_${name}_config" 29 | 30 | create_resources($config_type, { 31 | 'filter:recon/use' => {'value' => 'egg:swift#recon'}, 32 | 'filter:recon/recon_cache_path' => {'value' => $cache_path}, 33 | }) 34 | 35 | } 36 | -------------------------------------------------------------------------------- /manifests/storage/loopbacks.pp: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Red Hat, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | # 15 | # == Class: swift::storage::loopbacks 16 | # 17 | # Class wrapper for the benefit of Hiera users 18 | # 19 | # === Parameters: 20 | # 21 | # [*args*] A Swift 'loopback' config hash 22 | # Optional. Defaults to a empty hash 23 | # 24 | # [*defaults*] A config hash 25 | # Optional. Defaults to a empty hash 26 | # 27 | class swift::storage::loopbacks($args = {}, $defaults = {}) { 28 | create_resources(swift::storage::loopback, $args, $defaults) 29 | } 30 | -------------------------------------------------------------------------------- /manifests/wsgi/uwsgi_account.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021 Thomas Goirand 3 | # 4 | # Author: Thomas Goirand 5 | # 6 | # == Class: swift::wsgi::uwsgi_account 7 | # 8 | # Configure the UWSGI service for Swift Account. 9 | # 10 | # == Parameters 11 | # 12 | # [*processes*] 13 | # (Optional) Number of processes. 14 | # Defaults to $facts['os_workers']. 15 | # 16 | # [*listen_queue_size*] 17 | # (Optional) Socket listen queue size. 18 | # Defaults to 100 19 | # 20 | class swift::wsgi::uwsgi_account ( 21 | $processes = $facts['os_workers'], 22 | $listen_queue_size = 100, 23 | ){ 24 | 25 | include swift::deps 26 | 27 | if $facts['os']['name'] != 'Debian'{ 28 | warning('This class is only valid for Debian, as other operating systems are not using uwsgi by default.') 29 | } 30 | 31 | swift_account_uwsgi_config { 32 | 'uwsgi/processes': value => $processes; 33 | 'uwsgi/listen': value => $listen_queue_size; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /manifests/wsgi/uwsgi_container.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021 Thomas Goirand 3 | # 4 | # Author: Thomas Goirand 5 | # 6 | # == Class: swift::wsgi::uwsgi_container 7 | # 8 | # Configure the UWSGI service for Swift Container. 9 | # 10 | # == Parameters 11 | # 12 | # [*processes*] 13 | # (Optional) Number of processes. 14 | # Defaults to $facts['os_workers']. 15 | # 16 | # [*listen_queue_size*] 17 | # (Optional) Socket listen queue size. 18 | # Defaults to 100 19 | # 20 | class swift::wsgi::uwsgi_container ( 21 | $processes = $facts['os_workers'], 22 | $listen_queue_size = 100, 23 | ){ 24 | 25 | include swift::deps 26 | 27 | if $facts['os']['name'] != 'Debian'{ 28 | warning('This class is only valid for Debian, as other operating systems are not using uwsgi by default.') 29 | } 30 | 31 | swift_container_uwsgi_config { 32 | 'uwsgi/processes': value => $processes; 33 | 'uwsgi/listen': value => $listen_queue_size; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /manifests/wsgi/uwsgi_proxy.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021 Thomas Goirand 3 | # 4 | # Author: Thomas Goirand 5 | # 6 | # == Class: swift::wsgi::uwsgi_proxy 7 | # 8 | # Configure the UWSGI service for Swift Proxy. 9 | # 10 | # == Parameters 11 | # 12 | # [*processes*] 13 | # (Optional) Number of processes. 14 | # Defaults to $facts['os_workers']. 15 | # 16 | # [*listen_queue_size*] 17 | # (Optional) Socket listen queue size. 18 | # Defaults to 100 19 | # 20 | class swift::wsgi::uwsgi_proxy ( 21 | $processes = $facts['os_workers'], 22 | $listen_queue_size = 100, 23 | ){ 24 | 25 | include swift::deps 26 | 27 | if $facts['os']['name'] != 'Debian'{ 28 | warning('This class is only valid for Debian, as other operating systems are not using uwsgi by default.') 29 | } 30 | 31 | swift_proxy_uwsgi_config { 32 | 'uwsgi/processes': value => $processes; 33 | 'uwsgi/listen': value => $listen_queue_size; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /manifests/xfs.pp: -------------------------------------------------------------------------------- 1 | # 2 | # package dependencies for creating 3 | # xfs partitions 4 | class swift::xfs { 5 | 6 | include swift::deps 7 | 8 | $packages = ['xfsprogs', 'parted'] 9 | ensure_packages($packages) 10 | 11 | } 12 | -------------------------------------------------------------------------------- /releasenotes/notes/Enable-SSL-options-for-ceilometermiddleware-notifications-bbd3b7cbb9ba0910.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - It is possible to set the basic SSL options for the ceilometermiddleware's 4 | notifications on swift-proxy. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-device-mount-type-support-2a5f1df26c2d1e68.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add device_type param to support mount disk partitions by UUID, 4 | this is more helpful than device path in production environment. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-ignore-projects-b1ab3629320a39ed.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Add ignore projects setting to filter:ceilometer in proxy server config. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-parted-external-command-c89bcce3b3ea54dc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add support of external args in running parted command. When mounting device by uuid, 4 | this param should be set to a appropriate value. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-swift-memcache-conf-f119f4e1027bcdda.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Support to configure memcache.conf file. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-swift-proxy-audit-3ee76986d46aa9f4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added swift::proxy::audit class to configure audit middleware for Swift proxy. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-swift-proxy-domain_remap-d3b316fb6e964716.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add swift::proxy::domain_remap class to configure domain_remap middleware for swift proxy. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-swift-proxy-etag_quoter-2a55ef5b7e0ac029.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add swift::proxy::etag_quoter to configure etag_quoter middleware for swift 5 | proxy. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-swift-proxy-symlink-4864e7c1755567d4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add swift::proxy::symlink class to configure symlink middleware for swift proxy. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-tls-options-cfc659d2a0ad42bc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add TLS options for Memcached TLS connections. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add_object-replicator_rsync_parameters-15936a0bfc76b670.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add object-replicator rsync_timeout and rsync_bwlimit parameters. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add_rsync_use_xinetd_and_max_connections-48c6b86b1bfed6f8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add rsync max_connections config and add rsync_use_xinetd 5 | parameter to support to not use xinetd for rsync 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add_s3token_params-89215880c6e2507a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | For s3token class, add more parameters: reseller_prefix, delay_auth_decision, http_timeout, 5 | secret_cache_duration, and keystone credential parameters used for secret caching: auth_uri, 6 | auth_type, username, password, project_name, project_domain_id, user_domain_id 7 | -------------------------------------------------------------------------------- /releasenotes/notes/allowed_digests-1b12b2f0483c4c68.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following classes now support the new ``allowed_digests`` parameter. 5 | 6 | - ``swift::proxy::formpost`` 7 | - ``swift::proxy::tempurl`` 8 | -------------------------------------------------------------------------------- /releasenotes/notes/amqp_auto_delete-6324867e420e9e08.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The class swift::proxy::ceilometer now has a new ``amqp_auto_delete`` 5 | parameter, so that transient queues are automatically deleted. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/authtoken-auth_type-c315ce3b88c9ef02.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::proxy::authtoken::auth_plugin`` parameter has been deprecated 5 | and will be removed in a future release. Use the ``auth_type`` parameter 6 | instead. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/authtoken-b49c75db4b7429cb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - add new parameters to configure authtoken for swift, like 4 | username, password, project_name, auth_url, auth_plugin, 5 | project_domain_id, user_domain_id, include_service_catalog 6 | deprecations: 7 | - admin_token 8 | - admin_tenant_name in favor of project_name 9 | - admin_password in favor of password 10 | - admin_user in favor of username 11 | - identity_uri in favor of auth_url 12 | fixes: 13 | - remove auth_host, auth_port, auth_protocol, auth_admin_prefix 14 | -------------------------------------------------------------------------------- /releasenotes/notes/authtoken-service_token-f2e7209b778c2eb5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | swift::proxy::authtoken::service_token_roles and 5 | swift::proxy::authtoken::service_token_roles_required were added to 6 | add support for the authtoken parameters related to service token feature 7 | -------------------------------------------------------------------------------- /releasenotes/notes/backend_ratelimit-d10d25bbce1b0242.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::storage::filter::backend_ratelimit`` defined resource type 5 | has been added. This defined type configures the backend ratelimit 6 | middleware. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/barbican-endpoint-in-keymaster-ef3fe756cbd0a735.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new parameter `barbican_endpoint` has been added to the class 5 | `swift::keymaster`, that makes it possible to specify the 6 | Barbican endpoint, which is needed in a multi-region deployment. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1980613-b2e589f74602f11f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Now the ``swift::ringbuilder::create`` defined type generates a ring 5 | builder file by root user, instead of swift user, by default. Set the user 6 | parameter if a different should be used. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/bulk-delete-opts-fa2e67271dcac415.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::proxy::bulk`` class now supports the following new parameters. 5 | 6 | - ``max_failed_deletes`` 7 | - ``delete_container_retry_count`` 8 | - ``delete_concurrency`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/bulk-yield_frequency-2ad6dc679ef17452.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of ``swift::proxy::bulk`` has been changed from ``60`` to 5 | ``10``, which is consistent with the service default. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/cap-default-swift-server-workers-90b6206b37c6866b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Default number of account/container/object server workers 4 | capped to os_workers fact unless overridden. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/centos-9-support-b14e163f02d99aeb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now this module supports CentOS 9 and Red Hat Enterprise Linux 9. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/change-keystone-v3-dd97e1db169b9b62.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The default value for swift::dispersion::auth_url is changed 5 | from http://127.0.0.1:5000/v2.0/ to http://127.0.0.1:5000/v3/ 6 | - | 7 | The default value for swift::auth_file::auth_url is changed 8 | from http://127.0.0.1:5000/v2.0/ to http://127.0.0.1:5000/v3/ 9 | -------------------------------------------------------------------------------- /releasenotes/notes/cleanup-deprecated-params-victoria-8783e8274f9c12a7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following deprecated parameters were removed fron 5 | ``swift::proxy::authtoken`` class. 6 | 7 | - ``identity_uri`` 8 | - ``admin_user`` 9 | - ``admin_tenant_name`` 10 | - ``admin_password`` 11 | - ``auth_uri`` 12 | 13 | - | 14 | The ``swift::proxy::keystone::is_admin`` parameter was removed. 15 | 16 | - | 17 | The ``swift::client_package_ensure`` parameter was removed. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/client-timeout-c110deab64aa1944.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new parameter client_timeout has been added to the storage::server class 5 | (useful only if type=object). It is similar to the client_timeout parameter 6 | used in the proxy class, except that it is for object. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/cname_lookup-a545519cb21e37cd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Support for the cname_lookup middlehware has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/consistent-project-name-9b53534b86710ff3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The default value for swift::keymaster::project_name has been changed 5 | from 'service' to 'services'. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/constraints-cleanup-3c8aee96638459b5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::max_header_size`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/container-ratelimit-9d38553d9512934e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::proxy::ratelimit`` class now supports the following two new 5 | parameters. These parameters accept hash of container size and limit. 6 | 7 | - ``container_ratelimit`` 8 | - ``container_listing_ratelimit`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/container-reconciler-enable-cache-1f05743579752b13.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of ``swift::containererconciler::pipeline`` has been updated 5 | and the default pipeline now contains the cache middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/container-reconciler-tunables-1f11dc77181dd68c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to 5 | the ``swift::container::reconciler`` class. 6 | 7 | - ``concurrency`` 8 | - ``process`` 9 | - ``processes`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/container-sharder-7b000d34210dbe08.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now puppet-swift supports configurations required by the container-sharder 5 | service. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/container_sync-5869bca433355047.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add ability to configure container_sync middleware. 4 | - Add ability to manage swift container-sync-realms config for 5 | specifying the allowable clusters and their information. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/container_sync-middleware-opts-91c555d96826b91d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::proxy::container_sync`` class now supports the following two 5 | parameters of the ``container_sync`` middleware. 6 | 7 | - ``allow_full_urls`` 8 | - ``current`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/db_preallocation-4226028636c46c4d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::storage::server::db_preallocation`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/default-mount-options-changed-23d7969ef826f8be.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The nobarrier XFS mount option is removed from kernel 4.19.0 and beyond. 5 | It has no effect on kernel 4.10.0. Therefore, it is now removed from the 6 | default mount options. 7 | Also, puppet-swift now adds the nofail option, so that a swift store node 8 | finishes to boot even if an HDD mount is failed. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-allow_versions-2f161fbe7522c218.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following two parameters have been deprecated, and will be removed 5 | in a future release. 6 | 7 | - ``swift::storage::all::allow_versions`` 8 | - ``swift::storage::server::allow_versions`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-ceilometer-group-81408169438202b6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::proxy::ceilometer::group`` parameter has been deprecated and 5 | has no effect now. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-config_file_path-a0ae640ddfe329f9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::storage::server::config_file_path`` parameter has been 5 | deprecated and has no effect. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-default-password-4458163e3580d6fb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following password parameters currently use the default value when the 5 | parameters are not set in manifests, but this behavior has been deprecated. 6 | Please set actual password explicitly to avoid failure before the default 7 | values are removed. 8 | 9 | - swift::keymaster::password 10 | - swift::keystone::auth::password 11 | - swift::proxy::authtoken::password 12 | - swift::proxy::ceilometer::password 13 | - swift::proxy::s3token::password 14 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-expiring_objects_account_name-1e623eb32f24efa2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::objectexpirer::expiring_objects_account_name`` parameter has 5 | been deprecated and will be removed in a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-keystone-pki-opts-c5e390dfbbf6f4d8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::proxy::authtoken::signing_dir`` parameter has been deprecated 5 | and has no effect now. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-rabbit_heartbeat_in_pthread-0ec47c8c9ca82696.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::proxy::ceilometer::rabbit_heartbeat_in_pthread`` parameter has 5 | been deprecated and will be removed in the future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-s3api-ensure-3d036cfc32340b16.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::proxy::s3api`` parameter has been deprecated, since this 5 | parameter has had no effect. It will be removed in a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-swauth-6fa98d40e43dfe63.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::proxy::swauth`` class, which configures the ``swauth`` 5 | middleware, has been deprecated and will be removed in a future release, 6 | because the middleware is no longer maintained. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-swift-proxy-authtoken-auth-uri-1ed1f096c4eca137.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | swift::proxy::authtoken::auth_uri is now deprecated, please use the 5 | www_authenticate_uri parameter instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-swift3-ccc754b60e6ab25d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | puppet-swift now fails if swift3 is included in ``swift::proxy::pipeline``, 5 | because it no longer supports configuration for swift3 middleware. Use 6 | s3api instead to provide S3-compatible API. 7 | deprecations: 8 | - | 9 | The ``swift::proxy::swift3`` class has been deprecated because swift3 10 | middleware is no longer maintained. Use ``swift::proxy::s3api`` instead 11 | to use built-in s3api middleware in swift. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-test_file-fcb300e2e5117d15.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``swift::test_file`` class has been deprecated and will be removed 5 | in a future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/device-path-validation-331b52cbc9c70ae6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters are now optional and default to ``/dev/${name}``. 5 | 6 | - ``swift::storage::ext4::device`` 7 | - ``swift::storage::mount::device`` 8 | 9 | upgrade: 10 | - | 11 | The ``swift::storage::xfs::device`` parameter no longer accepts an empty 12 | string. Use the default value or give an actual device path. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/drive-audit-206e1c6e04e8decf.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::storage::drive_audit`` class has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-fedora-aef9a5060f19722d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Fedora is no longer supported. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/expose-worker-count-07bde2c47a7c0329.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Expose the account, container and object server worker count. This allows 5 | operators to tune their settings depending on their needs. The current 6 | default is kept unchanged. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/ext4-interface-sync-daaef41347bfe3e1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``swift::storage::ext4`` 5 | defined resource type. 6 | 7 | - ``mount_type`` 8 | - ``manage_filesystem`` 9 | - ``label`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/external_install_mgmt_hooks-32ca80d2280efc53.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Add hooks for external install & svc management. 4 | features: 5 | - This adds defined anchor points for external modules to 6 | hook into the software install, config and service dependency 7 | chain. This allows external modules to manage software 8 | installation (virtualenv, containers, etc) and service management 9 | (pacemaker) without needing rely on resources that may change or 10 | be renamed. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/fallocate-opts-6a181c96d0a0cc31.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following new parameters have been added to 5 | the ``swift::storage::server`` defined resource type. 6 | 7 | - ``disable_fallocate`` 8 | - ``fallocate_reserve`` 9 | - ``server_fallocate_reserve`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-memcached-require-for-proxy-cache-cbb2726d22b53d80.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Fixed the incorrect inclusion of a requirement for the memcached class 4 | to be in the catalog for swift::proxy::cache due to a bad grep of the 5 | memcached server list. LP#1628967 6 | -------------------------------------------------------------------------------- /releasenotes/notes/gatekeeper-opts-73ef4db32c2e702e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following two parameters have been added to 5 | the ``swift::proxy::gatekeeper`` class. 6 | 7 | - ``shunt_inbound_x_timestamp`` 8 | - ``allow_reserved_names_header`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/hosts_allow-7795d5f8f9ccd24e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``hosts_new`` parameter and the ``hosts_deny`` parameter have been 5 | added to the following resources. These allows limiting access to the rsync 6 | server. 7 | 8 | - ``swift::storage::all`` class 9 | - ``swift::storage::server`` defined resource type 10 | -------------------------------------------------------------------------------- /releasenotes/notes/init-client-package-ensure-6daa722ad33783c4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The swift::client_ensure_package parameter is deprecated and has no effect 5 | if you use the swift::client class please define the ensure parameter there. 6 | deprecations: 7 | - | 8 | The swift::client_ensure_package parameter is deprecated, if you use the 9 | swift::client class please define the ensure parameter there. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/internal-client-ce022fa93df88aaa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now this module supports configurion options in 5 | `/etc/swift/internal-client.conf``. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-auth-name-d2f0ea23d797b555.yaml: -------------------------------------------------------------------------------- 1 | fixes: 2 | - The keystone auth class has been updated to provide a default service_name 3 | to allow a user to specify a custom auth_name that may not contain the 4 | name of the service. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-authtoken-interface-a0cdde390fca1a46.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::authtoken::interface`` parameter has been added, 5 | which can be used to set the interface parameter in authtoken middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-authtoken-service_type-135867e7fa30d712.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::authtoken::service_type`` parameter has been 5 | added to configure the service_type parameter in authtoken middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-region-416dd0806629397a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add swift::proxy::authtoken::region_name and 5 | swift::proxy::ceilometer::region_name to specify keystone region 6 | where we expect identity resources like swift user are created. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-service_type-2985ebd5dffd2380.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now service type of the swift service and swift_s3 service is configurable 5 | by the ``service_type`` parameter. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/listing_formats-middleware-2ccb0d3462bc1bff.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::listing_formats`` class has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/log-facility-81dd7fff80e5f2f1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Set the default log facility to LOCAL2 for all services. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/log_max_line_length-140039c59299e878.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``log_max_line_length`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/log_name_per_daemon-6e2b522316ab38e4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::storage::server::log_name_per_daemon`` parameter has been 5 | added. If this parameter is set to ``true``, it configures the log_name 6 | option differently for each daemon, which may help splitting log 7 | destinations per daemon. For example, the object-replicator log_name will 8 | be object-replicator, the object-updater log_name will be object-updater 9 | and so on. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/manage_partition_and_filesystem-64cd4086d1bb5b0a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The class swift::storage::disk now has 2 new parameters called 5 | manage_partition and manage_filesystem. The swift::storage::xfs now has 6 | a new parameter manage_filesystem. Both have a value of true by default. 7 | These new options may be used to skip running parted and xfs_admin once 8 | the storage disks are setup. The goal is to avoid the kernel to flush 9 | the HDD buffer, which can seriously increase the load and IO wait on a 10 | (busy) production server. These parameters should be left to true when 11 | setting-up a new server, or when changing a disk, and can be set to false 12 | otherwise, or always set to false if the formating is done outside of 13 | puppet. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/memcache-servers-support-092ed535a0c26ae1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - memcache_servers support in object-expirer and container-reconciler 4 | -------------------------------------------------------------------------------- /releasenotes/notes/meta_version_to_write-5644a0ce81936572.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added a new meta_version_to_write for the keymaster config. 5 | upgrade: 6 | - | 7 | When upgrading from Swift 2.20.0 or Swift 2.19.1 or earlier, set 8 | meta_version_to_write to 1. When upgrading from 2.25.0 or earlier, set 9 | meta_version_to_write to 2. After upgrading all proxy servers, set this to 10 | 3 (currently the highest version). 11 | critical: 12 | - | 13 | Failing to set the correct version of meta_version_to_write can lead to 14 | unrecoverable data. 15 | -------------------------------------------------------------------------------- /releasenotes/notes/mitaka_deprecation-3344541c884cfed8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - Create ring builders under swift user instead of root. 4 | - Change defaults fro incoming/outgoing chmod for rsync. 5 | Defaults are now Du=rwx,g=rx,o=rx,Fu=rw,g=r,o=r. 6 | - Set mount_check to True by default. 7 | - Stop calling ::concat::setup, that is a deprecate class. 8 | - swift_hash_suffix is now deprecated and swift_hash_path_suffix 9 | with swift_hash_path_prefix should be used. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/mitaka_features-52ecf51429531fbb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Update Ceilometer proxy to support Oslo Messaging. 4 | - Allow to manage Swift service with swiftinit service provider. 5 | This is an initial step towards using swift-init to manage 6 | multiple swift services out of different configuration files such 7 | as is needed to run a separate replication network. 8 | - swift-ring-builder 2.2.2+ output parsing support. 9 | - Add support to change meta entry for ring devices. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/modernize-proxy-pipeline-c84ad4609210919c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The default value of ``swift::proxy::pipeline`` has been updated to enable 5 | some fundamental middlewares by default. 6 | Because of this change, the following classes should be included unless 7 | the pipeline parameter is explicitly set. 8 | 9 | - ``swift::proxy::catch_errors`` 10 | - ``swift::proxy::gatekeeper`` 11 | - ``swift::proxy::proxy_logging`` 12 | - ``swift::proxy::listing_formats`` 13 | - ``swift::proxy::copy`` 14 | -------------------------------------------------------------------------------- /releasenotes/notes/more-log-address-8b213a4efcb3e364.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::objectexpirer::log_address`` option has been added. 5 | 6 | - | 7 | The new ``swift::containerreconciler::log_address`` option has been added. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/more-log-opts-a6cfc6204a7e5d8a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::objectexpirer::log_name`` option has been added. 5 | 6 | - | 7 | The following options have been added to the ``swift::containerreconciler`` 8 | class. 9 | 10 | - ``log_name`` 11 | - ``log_level`` 12 | - ``log_facility`` 13 | 14 | fixes: 15 | - | 16 | container-reconciler is now configured to use the local2 facility by 17 | default. 18 | -------------------------------------------------------------------------------- /releasenotes/notes/non-blocking-ceilometermiddleware-3ed113824614016c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - A new ceilometermiddleware option "nonblocking_notify" has been 4 | added and can be used to send notifications in a separate background 5 | thread. This avoids blocking of Swift if RabbitMQ is not able to 6 | process new notifications. In this case notifications will be 7 | dropped after the local queue (defaults to 1000 entries) is 8 | exhausted. It requires the Newton release of ceilometermiddleware. 9 | This option is disabled by default and not changing the current 10 | behavior. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/object-relinker-cafa2c2f45a66b50.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now ``object-server.conf`` file contains the ``[object-relinker]`` section, 5 | which is used by the swift-object-relinker CLI tool. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/objectexpirer-pipeline-8bf98622bdb0e91a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of the ``swift::objectexpirer::pipeline`` parameter has been 5 | changed and now includes ``proxy-logging`` and ``cache`` by default. 6 | The updated value is consistent with the one described in the default 7 | object-expirer.conf in swift. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/os_workers_for_worker_count-74ffbcb7c18c00e9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - Parameters that control the number of spawned child processes for 4 | distributing processing have had their default value changed from 5 | ::processorcount to ::os_workers. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/oslo-messaging-rabbit-opts-e4da4a73d1f2c788.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::proxy::ceilometer`` class now supports the following new 5 | parameters to manage options for Rabbit driver in oslo.messaging library. 6 | 7 | - ``rabbit_ha_queues`` 8 | - ``heartbeat_timeout_threshold`` 9 | - ``heartbeat_rate`` 10 | - ``heartbeat_in_pthread`` 11 | - ``rabbit_qos_prefetch_count`` 12 | - ``amqp_durable_queues`` 13 | - ``kombu_reconnect_delay`` 14 | - ``kombu_failover_strategy`` 15 | - ``kombu_compression`` 16 | -------------------------------------------------------------------------------- /releasenotes/notes/per-method-backend-ratelimit-d242e8c1bbc3d7cb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::storage::filter::backend_ratelimite`` defined resource type 5 | supports options for per-method rate limits. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-allow_open_expired-7fbf1625c0cdd0df.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::allow_open_expired`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-ceilometer-rabbitmq-params-ff1f9c5e81195a4b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | New parameters for the class ``swift::proxy::ceilometer`` have been added: 5 | ``rabbit_quorum_queue``, ``rabbit_transient_quorum_queue`` and 6 | ``rabbit_quorum_delivery_limit``. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-cors_expose_headers-7ff397892879ff91.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::cors_expose_headers`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-keepalive_timeout-e2e0ded00a36bf61.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::proxy::keepalive_timeout`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-pipeline-order-d6a1a6412451f95e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Fix the middleware order in the proxy server pipeline according to 4 | upstream documentation 5 | features: 6 | - Add missing copy and versioned_writes middlewares 7 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-recoverable-node-timeout-setting-f2520a2f6ff79433.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds a new proxy config option to set recoverable_node_timeout. This 5 | setting defaults to node_timeout, which affects HEAD, GET and PUT requests. 6 | However, it makes sense to keep the timeout for GET and HEAD requests 7 | shorter to allow quicker recovery and prevent client timeouts. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy-ssl-f9ca617598b2a1a3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``cert_file`` parameter and the ``key_file`` parameter have been added 5 | to the ``swift::proxy`` class. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/proxy_template_to_ini-536250b1f409e40f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | - swift_proxy_config ini provider is now used to mange 4 | all sections in proxy-server.conf. The erb templates 5 | and use of concat for proxy.conf sections has been removed. 6 | All template logic is moved into proxy middleware classes. 7 | To purge proxy.conf of settings that are not specified 8 | set the new paramater "purge_config" to "true". 9 | upgrade: 10 | - Maintains backward compatibility. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/puppet-8-0e6db4a6a2d5edb2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | This module now officially supports Puppet 8. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/purge_config-1732c9ffe8979d26.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``purge_config`` parameter has been added to the following classes and 5 | defined resource types 6 | 7 | - ``swift`` 8 | - ``swift::containerreconciler`` 9 | - ``swift::internal_client`` 10 | - ``swift::memcache`` 11 | - ``swift::objectexpirer`` 12 | - ``swift::storage::server`` 13 | -------------------------------------------------------------------------------- /releasenotes/notes/rabbit-connection-params-deprecation-0ac64b83c83ee58f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - swift::proxy::ceilometer::rabbit_host, 4 | swift::proxy::ceilometer::rabbit_hosts, 5 | swift::proxy::ceilometer::rabbit_password, 6 | swift::proxy::ceilometer::rabbit_port, 7 | swift::proxy::ceilometer::rabbit_userid and 8 | swift::proxy::ceilometer::rabbit_virtual_host are deprecated. 9 | swift::proxy::ceilometer::default_transport_url should be used instead. 10 | 11 | -------------------------------------------------------------------------------- /releasenotes/notes/rabbit_transient_queues_ttl-dacc8bf7e5c4898d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new parameter ``rabbit_transient_queues_ttl`` has been added to the 5 | swift::proxy::ceilometer class to configure how long transtient queue 6 | should stay until they are automatically deleted. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/read_only-f0e5b52bfcbbe99d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::read_only`` class has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/rebalance-exit-codes-ee79621190315a5a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - puppet-swift will no longer raise an error if 4 | swift-ring-builder rebalance returns an exit code of 1. 5 | This is a warning but not an error in 6 | swift-ring-builder; errors use an exit code of 2 in 7 | swift-ring-builder. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/recon-cron-6f90f5d626d70aa5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add ability to configure swift-recon-cron job. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/release-note-ubuntu-py3-166e8825549d2981.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | In this release Ubuntu has moved all projects that supported it to python3 4 | which means that there will be a lot of changes. The Puppet OpenStack project 5 | does not test the upgrade path from python2 to python3 packages so there might 6 | be manual steps required when moving to the python3 packages. 7 | upgrade: 8 | - | 9 | Ubuntu packages are now using python3, the upgrade path is not tested by 10 | Puppet OpenStack. Manual steps may be required when upgrading. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-admin_token-14b3fd9fe23c018a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated parameter admin_token in swift::proxy::authtoken is now removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-allow_versions-5322f36b2efff0f6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following two parameters have been removed. 5 | 6 | - ``swift::storage::all::allow_versions`` 7 | - ``swift::storage::server::allow_versions`` 8 | 9 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-amqp1-2736619e17ce8b1e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for amqp1 messaging driver by the ``swift::proxy::ceilometer`` 5 | class has been removed. 6 | 7 | - | 8 | The ``swift::proxy::ceilometer::amqp_ssl_key_password`` parameter has 9 | been deprecated and has no effect now. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-amqp_ssl_key_password-18693f75f10d218c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::ceilometer::amqp_ssl_key_password`` parameter has been 5 | removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-authtoken-auth_plugin-43478ec4f2df8ec8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::authtoken::auth_plugin`` parameter has been removed. 5 | Use the ``auth_type`` parameter instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-authtoken-signing_dir-989e2c10724b70fe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::authtoken::signing_dir`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-ceilometer-auth_uri-0ff63e4d4702d4ce.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::ceilometer::auth_uri`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-ceilometer-auth_uri-dc349418e546cc34.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | swift::proxy::ceilometer::auth_uri was deprecated and has no affect, 5 | because auth_uri parameter is no more valid in ceilometer middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-ceilometer-group-268171ee2387e7bd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated ``swift::proxy::ceilometer::group`` parameter has been 5 | removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-centos-8-d2977f312220e2be.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | CentOS 8 Stream is no longer supported by this module. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-config_file_path-b7cbcff8d732ad9e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::storage::server::config_file_path`` parameter has been 5 | removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-rabbitmq-params-3a97ecbde4dfd55b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated options rabbit_host, rabbit_hosts, rabbit_password, 5 | rabbit_port, rabbit_userid and rabbit_virtual_host in 6 | swift::proxy::ceilometer has been removed. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-object-expirer-auto_create_account_prefix-f7c7dbc3a764791b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::objectexpirer::auto_create_account_prefix`` parameter has 5 | been removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-puppet-6-7ea56963ed8a90d2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Puppet 6 is no longer supported. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-s3api-ensure-f277f4f7933f7fa8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::s3api::ensure`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-s3token-old-auth-params-1e7a68fa41e7a222.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following three deprecated parameters have been removed from 5 | the ``swift::proxy::s3token`` class. 6 | 7 | - ``auth_host`` 8 | - ``auth_port`` 9 | - ``auth_protocol`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-slo-min_segment_size-b1d5ffaa4112cfba.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::slo::min_segment_size`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-swauth-f2316eab90d0549b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::swauth`` class has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-swift3-ded25eb5da08c388.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::proxy::swift3`` class has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-test_file-b6297826dcc22267.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``swift::test_file`` class has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_deprecated_parameters_auth-18a35f2387567df1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - Remove deprecated parameters for keystone::auth, including 4 | endpoint_prefix, port, public_protocol, public_address, public_port, 5 | internal_protocol, internal_address, admin_protocol, admin_address. 6 | Use the new parameters public_url, admin_url and internal_url instead. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_swift_hash_suffix-cd6b8bdf62990b7b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - remove swift_hash_suffix deprecated in Mitaka and change 4 | tests to use swift_hash_path_suffix. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/request-opts-d5dd2a93ecfee6b7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following new parameters have been added to the ``swift::proxy`` class 5 | and the ``swift::internal_client`` class. 6 | 7 | - ``timing_expiry`` 8 | - ``request_node_count`` 9 | - ``write_affinity_handoff_delete_count`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/require-password-a524fb4dc86a4d83.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The default password value has been removed and now the ``password`` 5 | parameters are required. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/restart-specific-services-1b0a0e9d45afa0bc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``service_tag`` parameter has been added to 5 | the ``swift::service`` defined resource type. This parameter controls 6 | the additional tag added to the service resource in addition to 7 | the default ``swift-service`` tag. 8 | 9 | fixes: 10 | - | 11 | This module no longer restarts all services after updating config files, 12 | but restrts only the relevant services. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/s3api-acl-parameters-b0127aa19ece53a4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``swift::proxy::s3api`` 5 | class to support more ACL parameters of s3api middleware. 6 | 7 | - ``allow_no_owner`` 8 | - ``s3_acl`` 9 | - ``check_bucket_owner`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/s3api-d3fe2afefaaa8e9d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | Swift has now merged the swift3 middleware into its own source tree and 4 | renamed it to s3api. 5 | features: 6 | - | 7 | The s3api middleware provides S3API support to a Swift cluster. 8 | upgrade: 9 | - | 10 | For previous users of Swift3 middleware, it is a simple change to use 11 | the s3api middleware, no APIs have been changed. Simply substitute in the 12 | new middleware in the pipeline and remember to add the filter. 13 | deprecations: 14 | - | 15 | In s3token middleware, the use of auth_host, auth_port and auth_protocol 16 | have been deprecated in favor of auth_uri 17 | -------------------------------------------------------------------------------- /releasenotes/notes/s3api-location-4f482f468f484861.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::s3api::location`` parameter has been added to set 5 | a region of the Swift cluster. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/s3api-more-parameters-54a8d24510a662ea.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``swift::proxy::s3api`` 5 | class. 6 | 7 | - ``dns_compliant_bucket_names`` 8 | - ``max_bucket_listing`` 9 | - ``max_parts_listing`` 10 | - ``max_multi_delete_objects`` 11 | - ``multi_delete_concurrency`` 12 | - ``storage_domain`` 13 | - ``allow_multipart_uploads`` 14 | - ``force_swift_request_proxy_log`` 15 | - ``min_segment_size`` 16 | - ``log_name`` 17 | -------------------------------------------------------------------------------- /releasenotes/notes/signing-dir-543b814469e76728.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | The default signing_dir is changed to /var/lib/swift for Debian. For all 4 | other OSes, /var/cache/swift is kept. This is due to the fact that the 5 | Debian sysv-init / systemd scripts are setting /var/cache/swift with the 6 | unix rights 0755, which isn't safe for this OS. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/slo-opts-7b4aaa369ed6fa40.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following four parameters have been added to the ``swift::proxy::slo`` 5 | class. 6 | 7 | - ``rate_limit_under_size`` 8 | - ``concurrency`` 9 | - ``delete_concurrency`` 10 | - ``yield_frequency`` 11 | - ``allow_async_delete`` 12 | -------------------------------------------------------------------------------- /releasenotes/notes/slo-smaller-segments-5f1cdf02cdc95dcc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of the ``swift::proxy::slo::rate_limit_segments_per_sec`` 5 | parameter has been changed from ``0`` to ``1``. 6 | 7 | deprecations: 8 | - | 9 | The ``swift::proxy::slo::min_segment_size`` parameter has been deprecated 10 | and has no effect now. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/sorting_method-671d31caec09044d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``sorting_method`` parameter has been added to the following 5 | classes. 6 | 7 | - ``swift::proxy`` 8 | - ``swift::internal_client`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/stale_worker_timeout-36629f8634fde065.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``stale_worker_timeout`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/statsd-configuration-c839c5485f761109.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Added parameters to configure the statsd integration 4 | for the account, container, object and proxy services. 5 | log_statsd_host, log_statsd_port, log_statsd_default_sample_rate, 6 | log_statsd_sample_rate_factor and log_statsd_metric_prefix can 7 | be configured if statsd_enabled is set to true for the 8 | swift::storage::services resource. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/storage-all-log_name_per_daemon-fd0fc2524477154b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``log_name_per_daemon`` parameter has been added to 5 | the ``swift::storage::all`` class. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/storage-config-43804c0fae439026.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::config`` class now supports the following three parameters. 5 | 6 | - ``swift_account_config`` 7 | - ``swift_container_config`` 8 | - ``swift_object_config`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/storage-disk-opts-65e4866c26090854.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::storage::disk`` defined resource type now supports 5 | the following parameters. 6 | 7 | - ``filesystem_type`` 8 | - ``mount_type`` 9 | - ``label`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/storage-timeouts-10be849b3eb52217.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::storage::server`` defined resource type now supports 5 | the following parameters. 6 | 7 | - ``conn_timeout`` and ``node_timeout`` for global values 8 | - ``updater_conn_timeout`` and ``updater_node_timeout`` for 9 | container-updater and account-updater 10 | - ``replicator_conn_timeout`` and ``replicator_node_timeout`` for 11 | object-replicator, container-replicator and account-replicator 12 | - ``reaper_node_timeout`` and ``reaper_node_timeout`` for 13 | account-reaper 14 | - ``container_sharder_container_timeout`` and 15 | ``container_sharder_node_timeout`` for container-sharder 16 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-add-reconstructor-service-25dd7df5a7d25612.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Added the object-reconstructor service and enabled it by default. 4 | This is required for erasure coding. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-add-role-parameters-0caf7caa8bf6a931.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds new parameters to set system and project reader role configs in Swift. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-chunk-sizes-b2d3a41363d560ac.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | On proxy class, added two new parameters object_chunk_size and 5 | client_chunk_size, that can be used to configure chunk size to 6 | read from object servers and from clients side. 7 | On storage::server class, added three new parameters network_chunk_size, 8 | disk_chunk_size and auditor_disk_chunk_size, that can be used to 9 | configure chunk size to read/write over the network and to the disk. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-client-timeout-295562f78eba486b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameter client_timeout to proxy class that can be used to 5 | configure the timeout to read one chunk from a client. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-constraints-818407c7fc2c1025.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::constraints`` class, which manages the 5 | ``[swift-constraints]`` options, has been added. 6 | 7 | deprecations: 8 | - | 9 | The ``swift::max_header_size`` parameter has been deprecated in favor of 10 | the new ``swift::constraints`` class. 11 | 12 | - | 13 | The ``swift::objectexpirer::auto_create_account_prefix`` parameter has been 14 | deprecated. Use the ``swift::constraints::auto_create_account_prefix`` 15 | parameter instead. 16 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-containersync-service-f188d18796e7affe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The systemd service for Swift containersync is now enabled by 5 | default without a distribution check. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-loopbacks-class-9b24b216099c7d98.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Adds a wrapper class for the storage::loopback 4 | definition, making it possible to add multiple loopback 5 | devices using a Hiera hash. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-max-containers-per-account-f033e8f28c87a802.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameters max_containers_per_account and 5 | max_containers_whitelist to proxy class that can be used to configure 6 | the maximum authorized container number for an account. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-memcache-max-connections-50876054c14dbdd5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameter memcache_max_connections to proxy::cache class that 5 | can be used to configure the maximum number of connections to each 6 | memcached server per worker. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-port-warning-0ac39e6905f977b5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Adds a warning when ports 6000-6002 are used for object, container, 4 | and/or account storage servers. LP#1521339 5 | upgrade: 6 | - Operators shoud prepare for the port change by specifying ports for the 7 | object storage server, container storage server, and account storage 8 | server. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/swift-proxy-keymaster-32b86ec03556762d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new class ``swift::proxy::keymaster`` has been added. This supports the 5 | configuration of swift-proxy keymaster middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/swift_cors-31b9a30d0eca57ce.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Allows configuring CORS settings. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/swift_keystone_middleware_is_admin-3743720dc053f65e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - The Swift Keystone middleware option is_admin has been deprecated in the 4 | Mitaka release and should be no longer used. It has no more effect and will 5 | be removed in a future version. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/swift_owner_headers-521593f973dcd1c5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``swift::proxy::swift_owner_headers`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/switch_rsync_use_xinetd-a3c857e5ef13b0a8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new rsync_use_xinetd parameter has been added to the following classes, 5 | to add the ability to enable/disable usage of xinetd to run rsync server. 6 | 7 | - ``swift::ringserver`` 8 | - ``swift::storage::all`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/system_scope-keystone-30d9867d48b6ab11.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``system_scope`` parameter has been added to the following classes. 5 | 6 | - ``swift::proxy::authtoken`` 7 | - ``swift::proxy::ceilometer`` 8 | - ``swift::proxy::s3token`` 9 | 10 | - | 11 | The ``swift::keystone::auth`` class now supports customizing roles 12 | assigned to the swift service user. 13 | 14 | - | 15 | The ``swift::keystone::auth`` class now supports defining assignmet of 16 | system-scoped roles to the swift service user. 17 | -------------------------------------------------------------------------------- /releasenotes/notes/ubuntu-jammy-7ed8d71c8bb07072.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | This module now supports Ubuntu 22.04 (Jammy Jellyfish). 5 | 6 | upgrade: 7 | - | 8 | This module no longer supports Ubuntu 20.04 (Focal Fossa). 9 | -------------------------------------------------------------------------------- /releasenotes/notes/ubuntu-noble-0cb185815bf6cde8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Ubuntu 24.04 is now formally supported. 5 | 6 | upgrade: 7 | - | 8 | Ubuntu 22.04 is no longer supported. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/update-default-max_manifst_size-1077b1abd8813d7f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of ``swift::proxy::slo::max_manifest_size`` has been changed 5 | from ``2097152`` to ``8388608``, following the change in swift itself. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/updater-reaper-interval-23f30950cf7cdd19.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::storage::servce`` defined resource type now supports 5 | the following parameters. 6 | 7 | - ``updater_interval`` used by container-updater and object-updater 8 | - ``reaper_interval`` used by account-reaper 9 | -------------------------------------------------------------------------------- /releasenotes/notes/use-reno-1caaec4ba5aa4285.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Release notes are no longer maintained by hand, we now use the reno tool to 4 | manage them. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/uwsgi-d10bf5ebcf3ff07d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | 3 new classes swift::wsgi::uwsgi_proxy, swift::wsgi::uwsgi_account and 5 | swift::wsgi::uwsgi_container exist to allow configuring uwsgi in 6 | operating systems that support this (ie: currently Debian). This helps 7 | configuring the number of processes and listen socket. 8 | Also, 3 new swift_proxy_uwsgi_config, swift_account_uwsgi_config, and 9 | swift_container_uwsgi_config providers now exist. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/xenial-supported-b17094c90a89945c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | puppet-swift supports Ubuntu 16.04 xenial 4 | features: 5 | - Previous version of puppet-swift hard coded 6 | upstart for ubuntu, that restriction is removed 7 | for ubuntu now. xenial will use systemd by default. 8 | 'swiftinit' service provider now also supports 9 | xenial using systemd for service start at boot 10 | control. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/xfs-label-mount-type-1f80ea3bb0a32e0c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``swift::storage::xfs`` defined resource type now supports 5 | ``type => 'label'``, which uses filesystem label for mount. 6 | When this is used, the defined type adds the label, according to the new 7 | ``label`` parameter, which defaults to the title, when creating a XFS file 8 | system. 9 | -------------------------------------------------------------------------------- /releasenotes/source/2023.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2023.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/2023.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2023.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2023.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2023.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2025.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2025.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2025.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/puppet-swift/4d5a237a67f72dd5d0366c0be146bbfae51e094a/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ====================================== 2 | Welcome to puppet-swift Release Notes! 3 | ====================================== 4 | 5 | Contents 6 | ======== 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | unreleased 12 | 2025.1 13 | 2024.2 14 | 2024.1 15 | 2023.2 16 | 2023.1 17 | zed 18 | yoga 19 | xena 20 | wallaby 21 | victoria 22 | ussuri 23 | train 24 | stein 25 | rocky 26 | queens 27 | pike 28 | ocata 29 | newton 30 | mitaka 31 | 32 | 33 | Indices and tables 34 | ================== 35 | 36 | * :ref:`genindex` 37 | * :ref:`search` 38 | -------------------------------------------------------------------------------- /releasenotes/source/mitaka.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Mitaka Series Release Notes 3 | ============================ 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/mitaka 7 | -------------------------------------------------------------------------------- /releasenotes/source/newton.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Newton Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/newton 7 | -------------------------------------------------------------------------------- /releasenotes/source/ocata.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Ocata Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: origin/stable/ocata 7 | -------------------------------------------------------------------------------- /releasenotes/source/pike.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Pike Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/pike 7 | -------------------------------------------------------------------------------- /releasenotes/source/queens.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Queens Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/queens 7 | -------------------------------------------------------------------------------- /releasenotes/source/rocky.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Rocky Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/rocky 7 | -------------------------------------------------------------------------------- /releasenotes/source/stein.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | Stein Series Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/stein 7 | -------------------------------------------------------------------------------- /releasenotes/source/train.rst: -------------------------------------------------------------------------------- 1 | ========================== 2 | Train Series Release Notes 3 | ========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/train 7 | -------------------------------------------------------------------------------- /releasenotes/source/unreleased.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Current Series Release Notes 3 | ============================== 4 | 5 | .. release-notes:: 6 | -------------------------------------------------------------------------------- /releasenotes/source/ussuri.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | Ussuri Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/ussuri 7 | -------------------------------------------------------------------------------- /releasenotes/source/victoria.rst: -------------------------------------------------------------------------------- 1 | ============================= 2 | Victoria Series Release Notes 3 | ============================= 4 | 5 | .. release-notes:: 6 | :branch: stable/victoria 7 | -------------------------------------------------------------------------------- /releasenotes/source/wallaby.rst: -------------------------------------------------------------------------------- 1 | ============================ 2 | Wallaby Series Release Notes 3 | ============================ 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/wallaby 7 | -------------------------------------------------------------------------------- /releasenotes/source/xena.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Xena Series Release Notes 3 | ========================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/xena 7 | -------------------------------------------------------------------------------- /releasenotes/source/yoga.rst: -------------------------------------------------------------------------------- 1 | ========================= 2 | Yoga Series Release Notes 3 | ========================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/yoga 7 | -------------------------------------------------------------------------------- /releasenotes/source/zed.rst: -------------------------------------------------------------------------------- 1 | ======================== 2 | Zed Series Release Notes 3 | ======================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/zed 7 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = puppet-swift 3 | summary = Puppet module for OpenStack Swift 4 | description_file = 5 | README.md 6 | author = OpenStack 7 | author_email = openstack-discuss@lists.openstack.org 8 | home_page = https://docs.openstack.org/puppet-openstack-guide/latest 9 | license = Apache License, Version 2.0 10 | classifier = 11 | Intended Audience :: Developers 12 | Intended Audience :: Information Technology 13 | Intended Audience :: System Administrators 14 | License :: OSI Approved :: Apache Software License 15 | Operating System :: POSIX :: Linux 16 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | import setuptools 17 | 18 | setuptools.setup( 19 | setup_requires=['pbr>=2.0.0'], 20 | py_modules=[], 21 | pbr=True) 22 | -------------------------------------------------------------------------------- /spec/classes/swift_client_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::client' do 4 | 5 | let :params do 6 | {} 7 | end 8 | 9 | let :default_params do 10 | { :ensure => 'present' } 11 | end 12 | 13 | shared_examples 'swift::client' do 14 | let :p do 15 | default_params.merge(params) 16 | end 17 | 18 | it { is_expected.to contain_class('swift::deps') } 19 | it { is_expected.to contain_class('swift::params') } 20 | 21 | it 'installs swift client package' do 22 | is_expected.to contain_package('swiftclient').with( 23 | :name => platform_params[:client_package_name], 24 | :ensure => p[:ensure], 25 | :tag => 'openstack', 26 | ) 27 | end 28 | 29 | end 30 | 31 | on_supported_os({ 32 | :supported_os => OSDefaults.get_supported_os 33 | }).each do |os,facts| 34 | context "on #{os}" do 35 | let (:facts) do 36 | facts.merge(OSDefaults.get_facts()) 37 | end 38 | 39 | let(:platform_params) do 40 | case facts[:os]['family'] 41 | when 'Debian' 42 | { :client_package_name => 'python3-swiftclient' } 43 | when 'RedHat' 44 | { :client_package_name => 'python3-swiftclient' } 45 | end 46 | end 47 | 48 | it_configures 'swift::client' 49 | end 50 | end 51 | 52 | end 53 | -------------------------------------------------------------------------------- /spec/classes/swift_internal_client_catch_errors_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::internal_client::catch_errors' do 4 | shared_examples 'swift::internal_client::catch_errors' do 5 | it { should contain_swift_internal_client_config('filter:catch_errors/use').with_value('egg:swift#catch_errors') } 6 | end 7 | 8 | on_supported_os({ 9 | :supported_os => OSDefaults.get_supported_os 10 | }).each do |os,facts| 11 | context "on #{os}" do 12 | let (:facts) do 13 | facts.merge(OSDefaults.get_facts()) 14 | end 15 | 16 | it_configures 'swift::internal_client::catch_errors' 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /spec/classes/swift_internal_client_symlink_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::internal_client::symlink' do 4 | shared_examples 'swift::internal_client::symlink' do 5 | context 'when using default parameters' do 6 | it { is_expected.to contain_swift_internal_client_config('filter:symlink/use').with_value('egg:swift#symlink') } 7 | it { is_expected.to contain_swift_internal_client_config('filter:symlink/symloop_max').with_value('') } 8 | end 9 | 10 | context 'when overriding default parameters' do 11 | let :params do 12 | { 13 | :symloop_max => '3' 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_internal_client_config('filter:symlink/use').with_value('egg:swift#symlink') } 18 | it { is_expected.to contain_swift_internal_client_config('filter:symlink/symloop_max').with_value('3') } 19 | end 20 | end 21 | 22 | on_supported_os({ 23 | :supported_os => OSDefaults.get_supported_os 24 | }).each do |os,facts| 25 | context "on #{os}" do 26 | let (:facts) do 27 | facts.merge(OSDefaults.get_facts()) 28 | end 29 | 30 | it_behaves_like 'swift::internal_client::symlink' 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /spec/classes/swift_keystone_dispersion_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::keystone::dispersion' do 4 | shared_examples 'swift::keystone::dispersion' do 5 | describe 'with default class parameters' do 6 | it { is_expected.to contain_keystone_user('dispersion').with( 7 | :ensure => 'present', 8 | :password => 'dispersion_password', 9 | :email => 'swift@localhost', 10 | ) } 11 | 12 | it { is_expected.to contain_keystone_user_role('dispersion@services').with( 13 | :ensure => 'present', 14 | :roles => 'admin', 15 | ) } 16 | end 17 | 18 | describe 'when overriding parameters' do 19 | let :params do 20 | { 21 | :auth_user => 'bar', 22 | :auth_pass => 'foo', 23 | :email => 'bar@example.com', 24 | :tenant => 'dummyTenant' 25 | } 26 | end 27 | 28 | it { is_expected.to contain_keystone_user('bar').with( 29 | :ensure => 'present', 30 | :password => 'foo', 31 | :email => 'bar@example.com', 32 | ) } 33 | 34 | it { is_expected.to contain_keystone_user_role('bar@dummyTenant') } 35 | end 36 | end 37 | 38 | on_supported_os({ 39 | :supported_os => OSDefaults.get_supported_os 40 | }).each do |os,facts| 41 | context "on #{os}" do 42 | let (:facts) do 43 | facts.merge(OSDefaults.get_facts()) 44 | end 45 | 46 | it_configures 'swift::keystone::dispersion' 47 | end 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_account_quotas_spec.rb: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2013 eNovance SAS 3 | # 4 | # Author: Emilien Macchi 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | # Tests for swift::proxy::account_quotas 19 | # 20 | 21 | require 'spec_helper' 22 | 23 | describe 'swift::proxy::account_quotas' do 24 | shared_examples 'swift::proxy::account_quotas' do 25 | it { should contain_swift_proxy_config('filter:account_quotas/use').with_value('egg:swift#account_quotas') } 26 | end 27 | 28 | on_supported_os({ 29 | :supported_os => OSDefaults.get_supported_os 30 | }).each do |os,facts| 31 | context "on #{os}" do 32 | let (:facts) do 33 | facts.merge(OSDefaults.get_facts()) 34 | end 35 | 36 | it_configures 'swift::proxy::account_quotas' 37 | end 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_audit_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::audit' do 4 | shared_examples 'swift::proxy::audit' do 5 | context 'when using default parameters' do 6 | it { is_expected.to contain_swift_proxy_config('filter:audit/paste.filter_factory').with_value('keystonemiddleware.audit:filter_factory') } 7 | it { is_expected.to contain_swift_proxy_config('filter:audit/audit_map_file').with_value('/etc/pycadf/swift_api_audit_map.conf') } 8 | end 9 | 10 | context 'when overriding default parameters' do 11 | let :params do 12 | { 13 | :filter_factory => 'keystonemiddleware.audit:some_audit', 14 | :audit_map_file => '/etc/some_audit/some_audit.conf' 15 | } 16 | end 17 | 18 | it { is_expected.to contain_swift_proxy_config('filter:audit/paste.filter_factory').with_value('keystonemiddleware.audit:some_audit') } 19 | it { is_expected.to contain_swift_proxy_config('filter:audit/audit_map_file').with_value('/etc/some_audit/some_audit.conf') } 20 | end 21 | end 22 | 23 | on_supported_os({ 24 | :supported_os => OSDefaults.get_supported_os 25 | }).each do |os,facts| 26 | context "on #{os}" do 27 | let (:facts) do 28 | facts.merge(OSDefaults.get_facts()) 29 | end 30 | 31 | it_behaves_like 'swift::proxy::audit' 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_catch_errors_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::catch_errors' do 4 | shared_examples 'swift::proxy::catch_errors' do 5 | it { should contain_swift_proxy_config('filter:catch_errors/use').with_value('egg:swift#catch_errors') } 6 | end 7 | 8 | on_supported_os({ 9 | :supported_os => OSDefaults.get_supported_os 10 | }).each do |os,facts| 11 | context "on #{os}" do 12 | let (:facts) do 13 | facts.merge(OSDefaults.get_facts()) 14 | end 15 | 16 | it_configures 'swift::proxy::catch_errors' 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_container_quotas_spec.rb: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (C) 2013 eNovance SAS 3 | # 4 | # Author: Emilien Macchi 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 7 | # not use this file except in compliance with the License. You may obtain 8 | # a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 | # License for the specific language governing permissions and limitations 16 | # under the License. 17 | # 18 | # Tests for swift::proxy::container_quotas 19 | # 20 | 21 | require 'spec_helper' 22 | 23 | describe 'swift::proxy::container_quotas' do 24 | shared_examples 'swift::proxy::container_quotas' do 25 | it { should contain_swift_proxy_config('filter:container_quotas/use').with_value('egg:swift#container_quotas') } 26 | end 27 | 28 | on_supported_os({ 29 | :supported_os => OSDefaults.get_supported_os 30 | }).each do |os,facts| 31 | context "on #{os}" do 32 | let (:facts) do 33 | facts.merge(OSDefaults.get_facts()) 34 | end 35 | 36 | it_configures 'swift::proxy::container_quotas' 37 | end 38 | end 39 | end 40 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_copy_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::copy' do 4 | shared_examples 'swift::proxy::copy' do 5 | describe "when using default parameters" do 6 | it { is_expected.to contain_swift_proxy_config('filter:copy/use').with_value('egg:swift#copy') } 7 | it { is_expected.to contain_swift_proxy_config('filter:copy/object_post_as_copy').with_value('true') } 8 | end 9 | 10 | describe "when overriding default parameters" do 11 | let :params do 12 | { 13 | :object_post_as_copy => false, 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_proxy_config('filter:copy/object_post_as_copy').with_value('false') } 18 | end 19 | end 20 | 21 | on_supported_os({ 22 | :supported_os => OSDefaults.get_supported_os 23 | }).each do |os,facts| 24 | context "on #{os}" do 25 | let (:facts) do 26 | facts.merge(OSDefaults.get_facts()) 27 | end 28 | 29 | it_configures 'swift::proxy::copy' 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_crossdomain_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::crossdomain' do 4 | shared_examples 'swift::proxy::crossdomain' do 5 | describe "when using default parameters" do 6 | it { is_expected.to contain_swift_proxy_config('filter:crossdomain/use').with_value('egg:swift#crossdomain') } 7 | it { is_expected.to contain_swift_proxy_config('filter:crossdomain/cross_domain_policy').with_value('') } 8 | end 9 | 10 | describe "when overriding default parameters" do 11 | let :params do 12 | { 13 | :cross_domain_policy => '', 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_proxy_config('filter:crossdomain/use').with_value('egg:swift#crossdomain') } 18 | it { is_expected.to contain_swift_proxy_config('filter:crossdomain/cross_domain_policy').with_value('') } 19 | end 20 | end 21 | 22 | on_supported_os({ 23 | :supported_os => OSDefaults.get_supported_os 24 | }).each do |os,facts| 25 | context "on #{os}" do 26 | let (:facts) do 27 | facts.merge(OSDefaults.get_facts()) 28 | end 29 | 30 | it_configures 'swift::proxy::crossdomain' 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_dlo_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::dlo' do 4 | shared_examples 'swift::proxy::dlo' do 5 | describe "when using default parameters" do 6 | it { is_expected.to contain_swift_proxy_config('filter:dlo/use').with_value('egg:swift#dlo') } 7 | it { is_expected.to contain_swift_proxy_config('filter:dlo/rate_limit_after_segment').with_value('') } 8 | it { is_expected.to contain_swift_proxy_config('filter:dlo/rate_limit_segments_per_sec').with_value('') } 9 | it { is_expected.to contain_swift_proxy_config('filter:dlo/max_get_time').with_value('') } 10 | end 11 | 12 | describe "when overriding default parameters" do 13 | let :params do 14 | { 15 | :rate_limit_after_segment => '10', 16 | :rate_limit_segments_per_sec => '1', 17 | :max_get_time => '86400', 18 | } 19 | end 20 | 21 | it { is_expected.to contain_swift_proxy_config('filter:dlo/rate_limit_after_segment').with_value('10') } 22 | it { is_expected.to contain_swift_proxy_config('filter:dlo/rate_limit_segments_per_sec').with_value('1') } 23 | it { is_expected.to contain_swift_proxy_config('filter:dlo/max_get_time').with_value('86400') } 24 | end 25 | end 26 | 27 | on_supported_os({ 28 | :supported_os => OSDefaults.get_supported_os 29 | }).each do |os,facts| 30 | context "on #{os}" do 31 | let (:facts) do 32 | facts.merge(OSDefaults.get_facts()) 33 | end 34 | 35 | it_configures 'swift::proxy::dlo' 36 | end 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_encryption_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::encryption' do 4 | shared_examples 'swift::proxy::encryption' do 5 | describe "when using default parameters" do 6 | it { is_expected.to contain_swift_proxy_config('filter:encryption/use').with_value('egg:swift#encryption') } 7 | it { is_expected.to contain_swift_proxy_config('filter:encryption/disable_encryption').with_value('false') } 8 | end 9 | 10 | describe "when overriding default parameters" do 11 | let :params do 12 | { 13 | :disable_encryption => true, 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_proxy_config('filter:encryption/disable_encryption').with_value('true') } 18 | end 19 | end 20 | 21 | on_supported_os({ 22 | :supported_os => OSDefaults.get_supported_os 23 | }).each do |os,facts| 24 | context "on #{os}" do 25 | let (:facts) do 26 | facts.merge(OSDefaults.get_facts()) 27 | end 28 | 29 | it_configures 'swift::proxy::encryption' 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_etag_quoter_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::etag_quoter' do 4 | shared_examples 'swift::proxy::etag_quoter' do 5 | context 'when using default parameters' do 6 | it { is_expected.to contain_swift_proxy_config('filter:etag-quoter/use').with_value('egg:swift#etag_quoter') } 7 | it { is_expected.to contain_swift_proxy_config('filter:etag-quoter/enabled_by_default').with_value('') } 8 | end 9 | 10 | context 'when overriding default parameters' do 11 | let :params do 12 | { 13 | :enabled_by_default => true 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_proxy_config('filter:etag-quoter/use').with_value('egg:swift#etag_quoter') } 18 | it { is_expected.to contain_swift_proxy_config('filter:etag-quoter/enabled_by_default').with_value(true) } 19 | end 20 | end 21 | 22 | on_supported_os({ 23 | :supported_os => OSDefaults.get_supported_os 24 | }).each do |os,facts| 25 | context "on #{os}" do 26 | let (:facts) do 27 | facts.merge(OSDefaults.get_facts()) 28 | end 29 | 30 | it_behaves_like 'swift::proxy::etag_quoter' 31 | end 32 | end 33 | end 34 | 35 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_formpost_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::formpost' do 4 | shared_examples 'swift::proxy::formpost' do 5 | context 'with defaults' do 6 | it { should contain_swift_proxy_config('filter:formpost/use').with_value('egg:swift#formpost') } 7 | it { should contain_swift_proxy_config('filter:formpost/allowed_digests').with_value('') } 8 | end 9 | 10 | context 'with parameters' do 11 | let :params do 12 | { 13 | :allowed_digests => ['sha1', 'sha256', 'sha512'] 14 | } 15 | end 16 | 17 | it { should contain_swift_proxy_config('filter:formpost/allowed_digests').with_value('sha1 sha256 sha512') } 18 | end 19 | end 20 | 21 | on_supported_os({ 22 | :supported_os => OSDefaults.get_supported_os 23 | }).each do |os,facts| 24 | context "on #{os}" do 25 | let (:facts) do 26 | facts.merge(OSDefaults.get_facts()) 27 | end 28 | 29 | it_configures 'swift::proxy::formpost' 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_healthcheck_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::healthcheck' do 4 | shared_examples 'swift::proxy::healthcheck' do 5 | it { should contain_swift_proxy_config('filter:healthcheck/use').with_value('egg:swift#healthcheck') } 6 | end 7 | 8 | on_supported_os({ 9 | :supported_os => OSDefaults.get_supported_os 10 | }).each do |os,facts| 11 | context "on #{os}" do 12 | let (:facts) do 13 | facts.merge(OSDefaults.get_facts()) 14 | end 15 | 16 | it_configures 'swift::proxy::healthcheck' 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_keymaster_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::keymaster' do 4 | shared_examples 'swift::proxy::keymaster' do 5 | let :params do 6 | { 7 | :encryption_root_secret => 'secret', 8 | } 9 | end 10 | 11 | context "when using default parameters" do 12 | it { is_expected.to contain_swift_proxy_config('filter:keymaster/use').with_value('egg:swift#keymaster') } 13 | it { is_expected.to contain_swift_proxy_config('filter:keymaster/encryption_root_secret').with_value('secret').with_secret(true) } 14 | end 15 | end 16 | 17 | on_supported_os({ 18 | :supported_os => OSDefaults.get_supported_os 19 | }).each do |os,facts| 20 | context "on #{os}" do 21 | let (:facts) do 22 | facts.merge(OSDefaults.get_facts()) 23 | end 24 | 25 | it_configures 'swift::proxy::keymaster' 26 | end 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_kms_keymaster_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::kms_keymaster' do 4 | shared_examples 'swift::proxy::kms_keymaster' do 5 | describe "when using default parameters" do 6 | it { should contain_swift_proxy_config('filter:kms_keymaster/use').with_value('egg:swift#kms_keymaster') } 7 | it { should contain_swift_proxy_config('filter:kms_keymaster/keymaster_config_path').with_value('/etc/swift/keymaster.conf') } 8 | end 9 | 10 | describe "when overriding default parameters" do 11 | let :params do 12 | { 13 | :keymaster_config_path => '/tmp/keymaster.conf', 14 | } 15 | end 16 | 17 | it { should contain_swift_proxy_config('filter:kms_keymaster/keymaster_config_path').with_value('/tmp/keymaster.conf') } 18 | end 19 | end 20 | 21 | on_supported_os({ 22 | :supported_os => OSDefaults.get_supported_os 23 | }).each do |os,facts| 24 | context "on #{os}" do 25 | let (:facts) do 26 | facts.merge(OSDefaults.get_facts()) 27 | end 28 | 29 | it_configures 'swift::proxy::kms_keymaster' 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_listing_formats_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::listing_formats' do 4 | shared_examples 'swift::proxy::listing_formats' do 5 | describe "when using default parameters" do 6 | it { is_expected.to contain_swift_proxy_config('filter:listing_formats/use').with_value('egg:swift#listing_formats') } 7 | end 8 | end 9 | 10 | on_supported_os({ 11 | :supported_os => OSDefaults.get_supported_os 12 | }).each do |os,facts| 13 | context "on #{os}" do 14 | let (:facts) do 15 | facts.merge(OSDefaults.get_facts()) 16 | end 17 | 18 | it_configures 'swift::proxy::listing_formats' 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_read_only_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::read_only' do 4 | shared_examples 'swift::proxy::read_only' do 5 | context 'when using default parameters' do 6 | it { is_expected.to contain_swift_proxy_config('filter:read_only/use').with_value('egg:swift#read_only') } 7 | it { is_expected.to contain_swift_proxy_config('filter:read_only/read_only').with_value('') } 8 | it { is_expected.to contain_swift_proxy_config('filter:read_only/allow_deletes').with_value('') } 9 | end 10 | 11 | context 'when overriding default parameters' do 12 | let :params do 13 | { 14 | :read_only => true, 15 | :allow_deletes => false, 16 | } 17 | end 18 | 19 | it { is_expected.to contain_swift_proxy_config('filter:read_only/use').with_value('egg:swift#read_only') } 20 | it { is_expected.to contain_swift_proxy_config('filter:read_only/read_only').with_value(true) } 21 | it { is_expected.to contain_swift_proxy_config('filter:read_only/allow_deletes').with_value(false) } 22 | end 23 | end 24 | 25 | on_supported_os({ 26 | :supported_os => OSDefaults.get_supported_os 27 | }).each do |os,facts| 28 | context "on #{os}" do 29 | let (:facts) do 30 | facts.merge(OSDefaults.get_facts()) 31 | end 32 | 33 | it_behaves_like 'swift::proxy::read_only' 34 | end 35 | end 36 | end 37 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_staticweb_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::staticweb' do 4 | shared_examples 'swift::proxy::staticweb' do 5 | it { is_expected.to contain_swift_proxy_config('filter:staticweb/use').with_value('egg:swift#staticweb') } 6 | 7 | describe "when overriding default parameters" do 8 | let :params do 9 | { 10 | :url_base => 'https://www.example.com', 11 | } 12 | end 13 | 14 | it { is_expected.to contain_swift_proxy_config('filter:staticweb/url_base').with_value('https://www.example.com') } 15 | end 16 | end 17 | 18 | on_supported_os({ 19 | :supported_os => OSDefaults.get_supported_os 20 | }).each do |os,facts| 21 | context "on #{os}" do 22 | let (:facts) do 23 | facts.merge(OSDefaults.get_facts()) 24 | end 25 | 26 | it_configures 'swift::proxy::staticweb' 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_symlink_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::symlink' do 4 | shared_examples 'swift::proxy::symlink' do 5 | context 'when using default parameters' do 6 | it { is_expected.to contain_swift_proxy_config('filter:symlink/use').with_value('egg:swift#symlink') } 7 | it { is_expected.to contain_swift_proxy_config('filter:symlink/symloop_max').with_value('') } 8 | end 9 | 10 | context 'when overriding default parameters' do 11 | let :params do 12 | { 13 | :symloop_max => '3' 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_proxy_config('filter:symlink/use').with_value('egg:swift#symlink') } 18 | it { is_expected.to contain_swift_proxy_config('filter:symlink/symloop_max').with_value('3') } 19 | end 20 | end 21 | 22 | on_supported_os({ 23 | :supported_os => OSDefaults.get_supported_os 24 | }).each do |os,facts| 25 | context "on #{os}" do 26 | let (:facts) do 27 | facts.merge(OSDefaults.get_facts()) 28 | end 29 | 30 | it_behaves_like 'swift::proxy::symlink' 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /spec/classes/swift_proxy_versioned_writes_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::versioned_writes' do 4 | shared_examples 'swift::proxy::versioned_writes' do 5 | describe "when using default parameters" do 6 | it { is_expected.to contain_swift_proxy_config('filter:versioned_writes/use').with_value('egg:swift#versioned_writes') } 7 | it { is_expected.to contain_swift_proxy_config('filter:versioned_writes/allow_versioned_writes').with_value('false') } 8 | end 9 | 10 | describe "when overriding default parameters" do 11 | let :params do 12 | { 13 | :allow_versioned_writes => true, 14 | } 15 | end 16 | 17 | it { is_expected.to contain_swift_proxy_config('filter:versioned_writes/allow_versioned_writes').with_value('true') } 18 | end 19 | end 20 | 21 | on_supported_os({ 22 | :supported_os => OSDefaults.get_supported_os 23 | }).each do |os,facts| 24 | context "on #{os}" do 25 | let (:facts) do 26 | facts.merge(OSDefaults.get_facts()) 27 | end 28 | 29 | it_configures 'swift::proxy::versioned_writes' 30 | end 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /spec/classes/swift_storage_disks_spec.rb: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Red Hat, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | # 15 | require 'spec_helper' 16 | 17 | describe 'swift::storage::disks' do 18 | 19 | shared_examples 'swift::storage::disks' do 20 | let :params do 21 | { 22 | :args => { 23 | 'sdb' => { 24 | 'byte_size' => '2048', 25 | }, 26 | 'sdc' => { 27 | }, 28 | }, 29 | } 30 | end 31 | 32 | it { 33 | is_expected.to contain_swift__storage__disk('sdb').with( 34 | :byte_size => '2048') 35 | is_expected.to contain_swift__storage__disk('sdc') 36 | } 37 | end 38 | 39 | on_supported_os({ 40 | :supported_os => OSDefaults.get_supported_os 41 | }).each do |os,facts| 42 | context "on #{os}" do 43 | let (:facts) do 44 | facts.merge!(OSDefaults.get_facts()) 45 | end 46 | 47 | it_configures 'swift::storage::disks' 48 | end 49 | end 50 | 51 | end 52 | -------------------------------------------------------------------------------- /spec/classes/swift_storage_loopbacks_spec.rb: -------------------------------------------------------------------------------- 1 | # Copyright 2016 Red Hat, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | # 15 | require 'spec_helper' 16 | 17 | describe 'swift::storage::loopbacks' do 18 | 19 | shared_examples 'swift::storage::loopbacks' do 20 | let :params do 21 | { 22 | :args => { 23 | 'loop0' => { 24 | 'seek' => '50000', 25 | }, 26 | 'loop1' => { 27 | }, 28 | }, 29 | } 30 | end 31 | 32 | it { 33 | is_expected.to contain_swift__storage__loopback('loop0').with( 34 | :seek => '50000') 35 | is_expected.to contain_swift__storage__loopback('loop1') 36 | } 37 | end 38 | 39 | on_supported_os({ 40 | :supported_os => OSDefaults.get_supported_os 41 | }).each do |os,facts| 42 | context "on #{os}" do 43 | let (:facts) do 44 | facts.merge!(OSDefaults.get_facts()) 45 | end 46 | 47 | it_configures 'swift::storage::loopbacks' 48 | end 49 | end 50 | 51 | end 52 | -------------------------------------------------------------------------------- /spec/classes/swift_wsgi_uwsgi_account_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::wsgi::uwsgi_account' do 4 | 5 | shared_examples 'swift::wsgi::uwsgi_account' do 6 | context 'with default parameters' do 7 | it { 8 | should contain_class('swift::deps') 9 | } 10 | 11 | it { 12 | is_expected.to contain_swift_account_uwsgi_config('uwsgi/processes').with_value(facts[:os_workers]) 13 | is_expected.to contain_swift_account_uwsgi_config('uwsgi/listen').with_value('100') 14 | } 15 | end 16 | end 17 | 18 | on_supported_os({ 19 | :supported_os => OSDefaults.get_supported_os 20 | }).each do |os,facts| 21 | context "on #{os}" do 22 | let (:facts) do 23 | facts.merge!(OSDefaults.get_facts({ 24 | :os_workers => 8, 25 | })) 26 | end 27 | it_behaves_like 'swift::wsgi::uwsgi_account' 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /spec/classes/swift_wsgi_uwsgi_container_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::wsgi::uwsgi_container' do 4 | 5 | shared_examples 'swift::wsgi::uwsgi_container' do 6 | context 'with default parameters' do 7 | it { 8 | should contain_class('swift::deps') 9 | } 10 | 11 | it { 12 | is_expected.to contain_swift_container_uwsgi_config('uwsgi/processes').with_value(facts[:os_workers]) 13 | is_expected.to contain_swift_container_uwsgi_config('uwsgi/listen').with_value('100') 14 | } 15 | end 16 | end 17 | 18 | on_supported_os({ 19 | :supported_os => OSDefaults.get_supported_os 20 | }).each do |os,facts| 21 | context "on #{os}" do 22 | let (:facts) do 23 | facts.merge!(OSDefaults.get_facts({ 24 | :os_workers => 8, 25 | })) 26 | end 27 | it_behaves_like 'swift::wsgi::uwsgi_container' 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /spec/classes/swift_wsgi_uwsgi_proxy_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::wsgi::uwsgi_proxy' do 4 | 5 | shared_examples 'swift::wsgi::uwsgi_proxy' do 6 | context 'with default parameters' do 7 | it { 8 | should contain_class('swift::deps') 9 | } 10 | 11 | it { 12 | is_expected.to contain_swift_proxy_uwsgi_config('uwsgi/processes').with_value(facts[:os_workers]) 13 | is_expected.to contain_swift_proxy_uwsgi_config('uwsgi/listen').with_value('100') 14 | } 15 | end 16 | end 17 | 18 | on_supported_os({ 19 | :supported_os => OSDefaults.get_supported_os 20 | }).each do |os,facts| 21 | context "on #{os}" do 22 | let (:facts) do 23 | facts.merge!(OSDefaults.get_facts({ 24 | :os_workers => 8, 25 | })) 26 | end 27 | it_behaves_like 'swift::wsgi::uwsgi_proxy' 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /spec/classes/swift_xfs_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::xfs' do 4 | shared_examples 'swift::xfs' do 5 | ['xfsprogs', 'parted'].each do |present_package| 6 | it { is_expected.to contain_package(present_package).with_ensure('installed') } 7 | end 8 | end 9 | 10 | on_supported_os({ 11 | :supported_os => OSDefaults.get_supported_os 12 | }).each do |os,facts| 13 | context "on #{os}" do 14 | let (:facts) do 15 | facts.merge(OSDefaults.get_facts()) 16 | end 17 | 18 | it_configures 'swift::xfs' 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /spec/defines/swift_proxy_tempauth_account_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::proxy::tempauth_account' do 4 | shared_examples 'swift::proxy::tempauth_account' do 5 | let :title do 6 | ' user_admin_admin, adminpass .admin .reseller_admin' 7 | end 8 | 9 | describe 'when passing in a string containing "user__, . ."' do 10 | it { should contain_swift_proxy_config('filter:tempauth/user_admin_admin').with_value('adminpass .admin .reseller_admin').with_secret(true) } 11 | end 12 | end 13 | 14 | on_supported_os({ 15 | :supported_os => OSDefaults.get_supported_os 16 | }).each do |os,facts| 17 | context "on #{os}" do 18 | let (:facts) do 19 | facts.merge(OSDefaults.get_facts()) 20 | end 21 | 22 | it_configures 'swift::proxy::tempauth_account' 23 | end 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /spec/defines/swift_storage_filter_healthcheck_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::storage::filter::healthcheck' do 4 | let :title do 5 | 'account' 6 | end 7 | 8 | shared_examples 'swift::storage::filter::healthcheck' do 9 | it 'should configure the healthcheck middleware' do 10 | is_expected.to contain_swift_account_config('filter:healthcheck/use').\ 11 | with_value('egg:swift#healthcheck') 12 | end 13 | end 14 | 15 | on_supported_os({ 16 | :supported_os => OSDefaults.get_supported_os 17 | }).each do |os,facts| 18 | context "on #{os}" do 19 | let (:facts) do 20 | facts.merge(OSDefaults.get_facts()) 21 | end 22 | 23 | it_configures 'swift::storage::filter::healthcheck' 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /spec/defines/swift_storage_filter_recon_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::storage::filter::recon' do 4 | let :title do 5 | 'account' 6 | end 7 | 8 | shared_examples 'swift::storage::filter::recon' do 9 | describe 'when passing default parameters' do 10 | it 'should configure the recon middleware' do 11 | is_expected.to contain_swift_account_config('filter:recon/use').\ 12 | with_value('egg:swift#recon') 13 | is_expected.to contain_swift_account_config('filter:recon/recon_cache_path').\ 14 | with_value('') 15 | end 16 | end 17 | 18 | describe 'when overriding default parameters' do 19 | let :params do 20 | { 21 | :cache_path => '/var/cache/swift' 22 | } 23 | end 24 | 25 | it 'should configure the recon middleware' do 26 | is_expected.to contain_swift_account_config('filter:recon/use').\ 27 | with_value('egg:swift#recon') 28 | is_expected.to contain_swift_account_config('filter:recon/recon_cache_path').\ 29 | with_value('/var/cache/swift') 30 | end 31 | end 32 | end 33 | 34 | on_supported_os({ 35 | :supported_os => OSDefaults.get_supported_os 36 | }).each do |os,facts| 37 | context "on #{os}" do 38 | let (:facts) do 39 | facts.merge(OSDefaults.get_facts()) 40 | end 41 | 42 | it_configures 'swift::storage::filter::recon' 43 | end 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /spec/defines/swift_storage_loopback_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'swift::storage::loopback' do 4 | # TODO add more unit tests 5 | 6 | let :title do 7 | 'dans_disk' 8 | end 9 | 10 | shared_examples 'swift::storage::loopback' do 11 | it { is_expected.to contain_swift__storage__xfs('dans_disk').with( 12 | :device => '/srv/loopback-device/dans_disk', 13 | :mnt_base_dir => '/srv/node', 14 | :byte_size => '1024', 15 | :subscribe => 'Exec[create_partition-dans_disk]', 16 | :loopback => true 17 | )} 18 | end 19 | 20 | on_supported_os({ 21 | :supported_os => OSDefaults.get_supported_os 22 | }).each do |os,facts| 23 | context "on #{os}" do 24 | let (:facts) do 25 | facts.merge(OSDefaults.get_facts()) 26 | end 27 | 28 | it_configures 'swift::storage::loopback' 29 | end 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /spec/shared_examples.rb: -------------------------------------------------------------------------------- 1 | shared_examples_for "a Puppet::Error" do |description| 2 | it "with message matching #{description.inspect}" do 3 | expect { is_expected.to have_class_count(1) }.to raise_error(Puppet::Error, description) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /spec/spec.opts: -------------------------------------------------------------------------------- 1 | --format 2 | s 3 | --colour 4 | --loadby 5 | mtime 6 | --backtrace 7 | -------------------------------------------------------------------------------- /spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # Load libraries here to simulate how they live together in a real puppet run (for provider unit tests) 2 | $LOAD_PATH.push(File.join(File.dirname(__FILE__), 'fixtures', 'modules', 'inifile', 'lib')) 3 | $LOAD_PATH.push(File.join(File.dirname(__FILE__), 'fixtures', 'modules', 'openstacklib', 'lib')) 4 | 5 | require 'puppetlabs_spec_helper/module_spec_helper' 6 | require 'shared_examples' 7 | require 'webmock/rspec' 8 | require 'puppet-openstack_spec_helper/facts' 9 | 10 | fixture_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures')) 11 | 12 | RSpec.configure do |c| 13 | c.alias_it_should_behave_like_to :it_configures, 'configures' 14 | c.alias_it_should_behave_like_to :it_raises, 'raises' 15 | 16 | c.module_path = File.join(fixture_path, 'modules') 17 | end 18 | 19 | at_exit { RSpec::Puppet::Coverage.report! } 20 | -------------------------------------------------------------------------------- /spec/spec_helper_acceptance.rb: -------------------------------------------------------------------------------- 1 | require 'puppet-openstack_spec_helper/litmus_spec_helper' 2 | -------------------------------------------------------------------------------- /spec/type_aliases/mountdevice_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Swift::MountDevice' do 4 | describe 'valid types' do 5 | context 'with valid types' do 6 | [ 7 | '/dev', 8 | '/dev/sda', 9 | '/opt/swift/diskfile', 10 | 'LABEL=foo', 11 | '50e68500-9920-4ffa-a4cd-34fd2a893530', 12 | 'UUID=50e68500-9920-4ffa-a4cd-34fd2a893530', 13 | ].each do |value| 14 | it { is_expected.to allow_value(value) } 15 | end 16 | end 17 | end 18 | 19 | describe 'invalid types' do 20 | context 'with invalid types' do 21 | [ 22 | 1, 23 | true, 24 | {}, 25 | ['/dev/sda'], 26 | 'dev', 27 | 'dev/sda', 28 | 'LABEL=', 29 | 'LABELfoo', 30 | '50e6850099204ffaa4cd34fd2a893530', 31 | '50e68500-9920-3ffa-a4cd-34fd2a893530', 32 | 'UUID=', 33 | 'UUID=foo', 34 | 'UUID=50e6850099204ffaa4cd34fd2a893530', 35 | 'UUID=50e68500-9920-3ffa-a4cd-34fd2a893530', 36 | ].each do |value| 37 | it { is_expected.not_to allow_value(value) } 38 | end 39 | end 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /spec/type_aliases/ringtype_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Swift::RingType' do 4 | describe 'valid types' do 5 | context 'with valid types' do 6 | [ 7 | 'account', 8 | 'container', 9 | 'object', 10 | 'object-0', 11 | 'object-10' 12 | ].each do |value| 13 | it { is_expected.to allow_value(value) } 14 | end 15 | end 16 | end 17 | 18 | describe 'invalid types' do 19 | context 'with invalid types' do 20 | [ 21 | 'foo', 22 | 'object-', 23 | 'object-a' 24 | ].each do |value| 25 | it { is_expected.not_to allow_value(value) } 26 | end 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /spec/type_aliases/storageservertype_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Swift::StorageServerType' do 4 | describe 'valid types' do 5 | context 'with valid types' do 6 | [ 7 | 'account', 8 | 'container', 9 | 'object', 10 | ].each do |value| 11 | it { is_expected.to allow_value(value) } 12 | end 13 | end 14 | end 15 | 16 | describe 'invalid types' do 17 | context 'with invalid types' do 18 | [ 19 | 'foo', 20 | 'object-', 21 | 'object-0' 22 | ].each do |value| 23 | it { is_expected.not_to allow_value(value) } 24 | end 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /spec/unit/provider/swift_account_uwsgi_config/ini_setting_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | provider_class = Puppet::Type.type(:swift_account_uwsgi_config).provider(:ini_setting) 3 | describe provider_class do 4 | 5 | it 'should default to the default setting when no other one is specified' do 6 | resource = Puppet::Type::Swift_account_uwsgi_config.new( 7 | {:name => 'DEFAULT/foo', :value => 'bar'} 8 | ) 9 | provider = provider_class.new(resource) 10 | expect(provider.section).to eq('DEFAULT') 11 | expect(provider.setting).to eq('foo') 12 | end 13 | 14 | it 'should allow setting to be set explicitly' do 15 | resource = Puppet::Type::Swift_account_uwsgi_config.new( 16 | {:name => 'dude/foo', :value => 'bar'} 17 | ) 18 | provider = provider_class.new(resource) 19 | expect(provider.section).to eq('dude') 20 | expect(provider.setting).to eq('foo') 21 | end 22 | 23 | it 'should ensure absent when is specified as a value' do 24 | resource = Puppet::Type::Swift_account_uwsgi_config.new( 25 | {:name => 'dude/foo', :value => ''} 26 | ) 27 | provider = provider_class.new(resource) 28 | provider.exists? 29 | expect(resource[:ensure]).to eq :absent 30 | end 31 | 32 | it 'should ensure absent when value matches ensure_absent_val' do 33 | resource = Puppet::Type::Swift_account_uwsgi_config.new( 34 | {:name => 'dude/foo', :value => 'foo', :ensure_absent_val => 'foo' } 35 | ) 36 | provider = provider_class.new(resource) 37 | provider.exists? 38 | expect(resource[:ensure]).to eq :absent 39 | end 40 | 41 | end 42 | -------------------------------------------------------------------------------- /spec/unit/provider/swift_config/ini_setting_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | provider_class = Puppet::Type.type(:swift_config).provider(:ini_setting) 4 | 5 | describe provider_class do 6 | 7 | it 'should default to the default setting when no other one is specified' do 8 | resource = Puppet::Type::Swift_config.new( 9 | { 10 | :name => 'DEFAULT/foo', 11 | :value => 'bar' 12 | } 13 | ) 14 | provider = provider_class.new(resource) 15 | expect(provider.section).to eq('DEFAULT') 16 | expect(provider.setting).to eq('foo') 17 | end 18 | 19 | it 'should allow setting to be set explicitly' do 20 | resource = Puppet::Type::Swift_config.new( 21 | { 22 | :name => 'dude/foo', 23 | :value => 'bar' 24 | } 25 | ) 26 | provider = provider_class.new(resource) 27 | expect(provider.section).to eq('dude') 28 | expect(provider.setting).to eq('foo') 29 | end 30 | 31 | it 'should ensure absent when is specified as a value' do 32 | resource = Puppet::Type::Swift_config.new( 33 | {:name => 'dude/foo', :value => ''} 34 | ) 35 | provider = provider_class.new(resource) 36 | provider.exists? 37 | expect(resource[:ensure]).to eq :absent 38 | end 39 | 40 | it 'should ensure absent when value matches ensure_absent_val' do 41 | resource = Puppet::Type::Swift_config.new( 42 | {:name => 'dude/foo', :value => 'foo', :ensure_absent_val => 'foo' } 43 | ) 44 | provider = provider_class.new(resource) 45 | provider.exists? 46 | expect(resource[:ensure]).to eq :absent 47 | end 48 | 49 | end 50 | -------------------------------------------------------------------------------- /spec/unit/provider/swift_proxy_uwsgi_config/ini_setting_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | provider_class = Puppet::Type.type(:swift_proxy_uwsgi_config).provider(:ini_setting) 3 | describe provider_class do 4 | 5 | it 'should default to the default setting when no other one is specified' do 6 | resource = Puppet::Type::Swift_proxy_uwsgi_config.new( 7 | {:name => 'DEFAULT/foo', :value => 'bar'} 8 | ) 9 | provider = provider_class.new(resource) 10 | expect(provider.section).to eq('DEFAULT') 11 | expect(provider.setting).to eq('foo') 12 | end 13 | 14 | it 'should allow setting to be set explicitly' do 15 | resource = Puppet::Type::Swift_proxy_uwsgi_config.new( 16 | {:name => 'dude/foo', :value => 'bar'} 17 | ) 18 | provider = provider_class.new(resource) 19 | expect(provider.section).to eq('dude') 20 | expect(provider.setting).to eq('foo') 21 | end 22 | 23 | it 'should ensure absent when is specified as a value' do 24 | resource = Puppet::Type::Swift_proxy_uwsgi_config.new( 25 | {:name => 'dude/foo', :value => ''} 26 | ) 27 | provider = provider_class.new(resource) 28 | provider.exists? 29 | expect(resource[:ensure]).to eq :absent 30 | end 31 | 32 | it 'should ensure absent when value matches ensure_absent_val' do 33 | resource = Puppet::Type::Swift_proxy_uwsgi_config.new( 34 | {:name => 'dude/foo', :value => 'foo', :ensure_absent_val => 'foo' } 35 | ) 36 | provider = provider_class.new(resource) 37 | provider.exists? 38 | expect(resource[:ensure]).to eq :absent 39 | end 40 | 41 | end 42 | -------------------------------------------------------------------------------- /spec/unit/puppet/type/ring_account_device_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | describe Puppet::Type.type(:ring_account_device) do 3 | it 'should fail if the name does not contain valid ipaddress' do 4 | expect { 5 | Puppet::Type.type(:ring_account_device).new(:name => '192.168.1.256:80/a') 6 | }.to raise_error(Puppet::ResourceError, /invalid address/) 7 | end 8 | 9 | it 'should fail if the name does not contain a "/"' do 10 | expect { 11 | Puppet::Type.type(:ring_account_device).new(:name => 'foo:80') 12 | }.to raise_error(Puppet::Error, /should contain a device/) 13 | end 14 | 15 | it 'should fail if the name contains a policy index' do 16 | expect { 17 | Puppet::Type.type(:ring_account_device).new(:name => '1:192.168.101.13:6002/1') 18 | }.to raise_error(Puppet::Error, /Policy_index is not supported on account device/) 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /spec/unit/puppet/type/ring_container_device_spec.rb: -------------------------------------------------------------------------------- 1 | 2 | require 'puppet' 3 | describe Puppet::Type.type(:ring_container_device) do 4 | it 'should fail if the name does not contain valid ipaddress' do 5 | expect { 6 | Puppet::Type.type(:ring_container_device).new(:name => '192.168.1.256:80/a') 7 | }.to raise_error(Puppet::ResourceError, /invalid address/) 8 | end 9 | 10 | it 'should fail if the name does not contain a "/"' do 11 | expect { 12 | Puppet::Type.type(:ring_container_device).new(:name => 'foo:80') 13 | }.to raise_error(Puppet::Error, /should contain a device/) 14 | end 15 | 16 | it 'should fail if the name contains a policy index' do 17 | expect { 18 | Puppet::Type.type(:ring_container_device).new(:name => '1:192.168.101.13:6002/1') 19 | }.to raise_error(Puppet::Error, /Policy_index is not supported on container device/) 20 | end 21 | 22 | end 23 | -------------------------------------------------------------------------------- /spec/unit/puppet/type/ring_object_device_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | describe Puppet::Type.type(:ring_object_device) do 3 | it 'should fail if the name does not contain valid ipaddress' do 4 | expect { 5 | Puppet::Type.type(:ring_object_device).new(:name => '192.168.1.256:80/a') 6 | }.to raise_error(Puppet::ResourceError, /invalid address/) 7 | end 8 | 9 | it 'should fail if the name does not contain a "/"' do 10 | expect { 11 | Puppet::Type.type(:ring_object_device).new(:name => 'foo:80') 12 | }.to raise_error(Puppet::Error, /should contain a device/) 13 | end 14 | 15 | it 'should not fail if the name contains a policy index' do 16 | expect { 17 | Puppet::Type.type(:ring_object_device).new(:name => '1:192.168.101.13:6002/1') 18 | }.to_not raise_error 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /spec/unit/type/swift_account_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_account_config' 3 | 4 | describe 'Puppet::Type.type(:swift_account_config)' do 5 | before :each do 6 | @swift_account_config = Puppet::Type.type(:swift_account_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_account_config 13 | dependency = @swift_account_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_account_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_bench_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_bench_config' 3 | 4 | describe 'Puppet::Type.type(:swift_bench_config)' do 5 | before :each do 6 | @swift_bench_config = Puppet::Type.type(:swift_bench_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_bench_config 13 | dependency = @swift_bench_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_bench_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_container_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_container_config' 3 | 4 | describe 'Puppet::Type.type(:swift_container_config)' do 5 | before :each do 6 | @swift_container_config = Puppet::Type.type(:swift_container_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_container_config 13 | dependency = @swift_container_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_container_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_container_sync_realms_config.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_container_sync_realms_config' 3 | 4 | describe 'Puppet::Type.type(:swift_container_sync_realms_config)' do 5 | before :each do 6 | @swift_container_sync_realms_config = Puppet::Type.type(:swift_container_sync_realms_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_container_sync_realms_config 13 | dependency = @swift_container_sync_realms_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_container_sync_realms_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_dispersion_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_dispersion_config' 3 | 4 | describe 'Puppet::Type.type(:swift_dispersion_config)' do 5 | before :each do 6 | @swift_dispersion_config = Puppet::Type.type(:swift_dispersion_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_dispersion_config 13 | dependency = @swift_dispersion_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_dispersion_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_drive_audit_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_drive_audit_config' 3 | 4 | describe 'Puppet::Type.type(:swift_drive_audit_config)' do 5 | before :each do 6 | @swift_drive_audit_config = Puppet::Type.type(:swift_drive_audit_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_drive_audit_config 13 | dependency = @swift_drive_audit_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_drive_audit_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_internal_client_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_internal_client_config' 3 | 4 | describe 'Puppet::Type.type(:swift_internal_client_config)' do 5 | before :each do 6 | @swift_internal_client_config = Puppet::Type.type(:swift_internal_client_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_internal_client_config 13 | dependency = @swift_internal_client_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_internal_client_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_keymaster_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_keymaster_config' 3 | 4 | describe 'Puppet::Type.type(:swift_keymaster_config)' do 5 | before :each do 6 | @swift_keymaster_config = Puppet::Type.type(:swift_keymaster_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_keymaster_config 13 | dependency = @swift_keymaster_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_keymaster_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_object_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_object_config' 3 | 4 | describe 'Puppet::Type.type(:swift_object_config)' do 5 | before :each do 6 | @swift_object_config = Puppet::Type.type(:swift_object_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_object_config 13 | dependency = @swift_object_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_object_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_object_expirer_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_object_expirer_config' 3 | 4 | describe 'Puppet::Type.type(:swift_object_expirer_config)' do 5 | before :each do 6 | @swift_object_expirer_config = Puppet::Type.type(:swift_object_expirer_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that installs the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_object_expirer_config 13 | dependency = @swift_object_expirer_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_object_expirer_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /spec/unit/type/swift_proxy_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/swift_proxy_config' 3 | 4 | describe 'Puppet::Type.type(:swift_proxy_config)' do 5 | before :each do 6 | @swift_proxy_config = Puppet::Type.type(:swift_proxy_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should autorequire the package that install the file' do 10 | catalog = Puppet::Resource::Catalog.new 11 | anchor = Puppet::Type.type(:anchor).new(:name => 'swift::install::end') 12 | catalog.add_resource anchor, @swift_proxy_config 13 | dependency = @swift_proxy_config.autorequire 14 | expect(dependency.size).to eq(1) 15 | expect(dependency[0].target).to eq(@swift_proxy_config) 16 | expect(dependency[0].source).to eq(anchor) 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | minversion = 3.1 3 | skipsdist = True 4 | envlist = releasenotes 5 | ignore_basepython_conflict = True 6 | 7 | [testenv] 8 | basepython = python3 9 | 10 | [testenv:releasenotes] 11 | deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} 12 | -r{toxinidir}/doc/requirements.txt 13 | commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html 14 | -------------------------------------------------------------------------------- /types/mountdevice.pp: -------------------------------------------------------------------------------- 1 | type Swift::MountDevice = Variant[ 2 | Stdlib::Absolutepath, 3 | Pattern[/^LABEL=.+$/], 4 | Pattern[/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/], 5 | Pattern[/^UUID=[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/], 6 | ] 7 | -------------------------------------------------------------------------------- /types/pipeline.pp: -------------------------------------------------------------------------------- 1 | type Swift::Pipeline = Array[String[1], 1] 2 | -------------------------------------------------------------------------------- /types/ringtype.pp: -------------------------------------------------------------------------------- 1 | type Swift::RingType = Variant[ 2 | Enum[ 3 | 'account', 4 | 'container', 5 | 'object' 6 | ], 7 | Pattern[/^object-\d+$/] 8 | ] 9 | -------------------------------------------------------------------------------- /types/serviceprovider.pp: -------------------------------------------------------------------------------- 1 | type Swift::ServiceProvider = Optional[Enum['swiftinit', 'systemd']] 2 | -------------------------------------------------------------------------------- /types/sortingmethod.pp: -------------------------------------------------------------------------------- 1 | type Swift::SortingMethod = Enum[ 2 | 'affinity', 3 | 'shuffle', 4 | 'timing' 5 | ] 6 | -------------------------------------------------------------------------------- /types/storageservertype.pp: -------------------------------------------------------------------------------- 1 | type Swift::StorageServerType = Enum[ 2 | 'account', 3 | 'container', 4 | 'object' 5 | ] 6 | --------------------------------------------------------------------------------