├── .gitignore ├── .gitreview ├── .pdkignore ├── .zuul.yaml ├── CONTRIBUTING.rst ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── bindep.txt ├── doc └── requirements.txt ├── examples └── init.pp ├── lib └── puppet │ ├── provider │ ├── octavia_api_uwsgi_config │ │ └── ini_setting.rb │ ├── octavia_config │ │ └── openstackconfig.rb │ └── octavia_ovn_provider_config │ │ └── ini_setting.rb │ └── type │ ├── octavia_api_uwsgi_config.rb │ ├── octavia_config.rb │ └── octavia_ovn_provider_config.rb ├── manifests ├── api.pp ├── audit.pp ├── certificates.pp ├── cinder.pp ├── client.pp ├── compute.pp ├── config.pp ├── controller.pp ├── cors.pp ├── db.pp ├── db │ ├── mysql.pp │ ├── postgresql.pp │ ├── sync.pp │ └── sync_persistence.pp ├── deps.pp ├── driver_agent.pp ├── glance.pp ├── health_manager.pp ├── healthcheck.pp ├── housekeeping.pp ├── init.pp ├── keystone │ ├── auth.pp │ └── authtoken.pp ├── logging.pp ├── networking.pp ├── neutron.pp ├── nova.pp ├── params.pp ├── policy.pp ├── provider │ └── ovn.pp ├── quota.pp ├── reports.pp ├── roles.pp ├── service_auth.pp ├── task_flow.pp ├── worker.pp └── wsgi │ ├── apache.pp │ └── uwsgi.pp ├── metadata.json ├── releasenotes ├── notes │ ├── add-amp-active-retries-amp-active-wait-sec-55a0d5c3c08dd866.yaml │ ├── add-amp-secgroup-list-d3dcc292465b0fe7.yaml │ ├── add-amp_image_owner_id-to-controller-11dca7ae392d1e17.yaml │ ├── add-amphora-project-name-0afeebd83e114328.yaml │ ├── add-api-enable_proxy_headers_parsing-e04ae349155978bc.yaml │ ├── add-api-handler-a935135d2345ef23.yaml │ ├── add-auth-strategy-99518a6623bcb665.yaml │ ├── add-build-active-retries-and-port-detach-timeout-parameters-5dc21de1a97699ef.yaml │ ├── add-certificates-configuration-6e956bd99e5c2a2b.yaml │ ├── add-connection-logging-parameter-d92bc438db6f51bb.yaml │ ├── add-connection-retry-params-61cf6df5afab51dc.yaml │ ├── add-controller_ip_port_list-dd70205aa2cc8182.yaml │ ├── add-driver-agent-71b506e3d81e92fe.yaml │ ├── add-enable-ssh-access-param-1f2454d898b9b59b.yaml │ ├── add-health_manager-worker-default-6259b601e01db4f3.yaml │ ├── add-log-offloading-1a7836381de33644.yaml │ ├── add-octavia-client-f5421024b0a945f0.yaml │ ├── add-octavia-client-red-hat-family-4188177cb4ebe503.yaml │ ├── add-octavia-quota-class-7d786b98740f85a8.yaml │ ├── add-openstackclient-client-ad889aef4a5c7322.yaml │ ├── add-ovn-nb-connection-config-474ee0bdfa307fb6.yaml │ ├── add-ovn-provider-71b506e3d81e92fe.yaml │ ├── add-pool_timeout-option-for-db-9130bf45e981c845.yaml │ ├── add-provider-driver-config-9f5352879efe3f9d.yaml │ ├── add-roles-for-octavia-2207bc1adea61c55.yaml │ ├── add-service-auth-configuration-f70310c15b15443c.yaml │ ├── add-service-auth-region_name-48573c729f77a6b7.yaml │ ├── add-service_description-option-b1f36384181629be.yaml │ ├── add-sshkey-gen-management-d76f17ed3f6056b9.yaml │ ├── add-use_journal-option-for-logging-9f95c7513816de6f.yaml │ ├── add-vrrp-keepalived-params-81f235f8cc411c42.yaml │ ├── add-work-driver-7097e125fccb11b5.yaml │ ├── add-wsgi-script-args-1129563527a3e618.yaml │ ├── add_db_sync_timeout-8b8cbf569af9d917.yaml │ ├── add_failover_threshold-913a4325e540f897.yaml │ ├── add_messaging_default_parameters-8a235ef98135d357.yaml │ ├── add_mysql_enable_ndb-option-9f3a4bef514e040d.yaml │ ├── add_rabbit_kombu_options-b446553d924dc219.yaml │ ├── add_watch_log_file-option-ba1a0d5eaa8182f6.yaml │ ├── agent_request_read_timeout-66a1de2c273fd4c8.yaml │ ├── agent_tls_protocol-6d161f6c693ca090.yaml │ ├── allow_ping_health_monitors-3f00c296714b663b.yaml │ ├── amphora-log-offloading-opts-4aac954e374e75ff.yaml │ ├── amphora_delete-opts-187baf4230e484fb.yaml │ ├── amqp_auto_delete-2a8027b3f6ca4bc6.yaml │ ├── apache-headers-66a08f8feb62208d.yaml │ ├── api-allow_prometheus_listeners-827a53c448d24234.yaml │ ├── api-allow_tls_terminated_listeners-5555b0b3bc8c5313.yaml │ ├── api-manage-service-3a54c606e08ee623.yaml │ ├── api-tls-params-48cefc42aee491ab.yaml │ ├── api-v1-v2-options-393e026d4d22b94d.yaml │ ├── audit-opts-1cb6a5b4058f8469.yaml │ ├── authtoken_manage_memcache_package-88dca510e70ef1e1.yaml │ ├── bug-1797130-789318b2dff121d3.yaml │ ├── build_rate_limit-7da036d02e5ccea8.yaml │ ├── build_retry_interval-96aa9efb9689362d.yaml │ ├── centos-9-support-38896bfa2323fb75.yaml │ ├── certificate-folder-after-pkg-802703c4a8d646b3.yaml │ ├── certificate-no-diff-4e4d156963752b6d.yaml │ ├── certificate_source-e66d13973d818351.yaml │ ├── certificates-options-45294bca5186878e.yaml │ ├── certificates-opts-4913f5eb2ecfca0c.yaml │ ├── change-amphora-flavor-property-178cb1a154af80ba.yaml │ ├── change-oslo-policy-to-yaml-e4efbaeafa2fbb1c.yaml │ ├── change-service-type-c7bea5ac392fd0d1.yaml │ ├── cleanup-controler-opts-from-octavia-workers-f06b45dd705eb875.yaml │ ├── client-ca-b05d5a5e4a93bfe3.yaml │ ├── compute-877faaf860156a97.yaml │ ├── configure_service-6b3c1d06ebc42afa.yaml │ ├── controller-workers-947eada7f23b5da9.yaml │ ├── convert-provider_drivers-922ba756396e154c.yaml │ ├── cors-0a1240b26cf2b8b2.yaml │ ├── db-commit-retries-6143ddb798d0c1c7.yaml │ ├── db-init-7a0087aca12e0530.yaml │ ├── default-domain-77d3a64d09ee42ea.yaml │ ├── default-log_file-2324105c32200c85.yaml │ ├── default_connection_limit-4006e77c67997e01.yaml │ ├── deprecate-health_manage-workers-e7fa2378afed538d.yaml │ ├── deprecate-rabbit_heartbeat_in_pthread-d18828a91f93d95f.yaml │ ├── deprecate-spares-pool-feature-a4f19adc1b454904.yaml │ ├── deprecate-watch_log_file-cef86f1b04110ace.yaml │ ├── deprecate_allow_insecure_clients-option-8a20653486eba410.yaml │ ├── deprecate_auth_uri_parameter-8eb7b53f730ada01.yaml │ ├── deprecate_database_min_pool_size-option-9dfa542ba4fb4200.yaml │ ├── deprecate_database_options-4109325de40ec4cb.yaml │ ├── deprecate_ensure_package_parameter-71358a34df982376.yaml │ ├── deprecate_idle_timeout_parameter-91484626097ef011.yaml │ ├── deprecate_pki_related_parameters-8f8279bb51ec2b19.yaml │ ├── deprecate_revocation_cache_time_parameter-a1812c70688d809e.yaml │ ├── deprecate_rpc_backend_parameter-d0a8b677bcf5b39e.yaml │ ├── deprecate_signing_dir_parameter-1a34ef813a913548.yaml │ ├── deprecate_spare_amphorae_pool_size_name-f7b3324f8fcf9670.yaml │ ├── dont-include-logging-init-c86c2eca3dbeee40.yaml │ ├── dont-initialize-db-in-init-85ac6f87576814d6.yaml │ ├── driver-agent-redhat-a36354fb074bf05c.yaml │ ├── drop-fedora-85e3a9176496c3e1.yaml │ ├── enable_cancel_on_failover-d9c143d33af343dc.yaml │ ├── enable_provider_drivers-db3b1fb5f07c4140.yaml │ ├── event_notifications-81ee1ce39b3f2c76.yaml │ ├── executor_thread_pool_size-4fe786c1a3896dfa.yaml │ ├── external_install_mgmt_hook-1e652961711571a3.yaml │ ├── fix-generated-server_certs_key_passphrase-in-spec-524a44297ec76bd0.yaml │ ├── flavor-default-project-a931f9e7649c531c.yaml │ ├── generate-server_certs_key_passphrase-45d716a67b0e83b3.yaml │ ├── haproxy_amphora-connection-opts-abb413396c1d98b8.yaml │ ├── hc-enable_by_file_paths-a26a14bb13665e0e.yaml │ ├── health_manager-tunables-a6fc91c0c1af0e15.yaml │ ├── healthcheck-50bfeb1b2523b307.yaml │ ├── healthcheck-allowed_source_ranges-977eb6fc2b6c93ba.yaml │ ├── healthcheck-ignore_proxied_requests-469c9920d10ce6b4.yaml │ ├── healthcheck_refresh_interval-861418bae80c15d5.yaml │ ├── httpd-logs-piped-syslog-a6a544a20b4913cd.yaml │ ├── image_driver-37560e3159ece607.yaml │ ├── jobboard-etcd-backend-484c6173cd698fa4.yaml │ ├── jobboard_backend_username-bb192a3a436c75c6.yaml │ ├── jobboard_redis_backend_db-f80010244e87b2c9.yaml │ ├── keystone-authtoken-interface-7d13b1d876b5d8b6.yaml │ ├── keystone-authtoken-service_type-28c5a0e20cd5bdd4.yaml │ ├── l7-default-quota-810c3475d7b3e795.yaml │ ├── log-json-98686537151bb119.yaml │ ├── max_request_body_size-152d9e3efb95a859.yaml │ ├── more-certificates-opts-b88e8a352b4851e5.yaml │ ├── move-common-hm-opts-antelope-7bc5a6d57b672afa.yaml │ ├── move-common-hm-opts-dbaaa1b575e6ae1c.yaml │ ├── networking-cleanup-26b95cf9d6d51487.yaml │ ├── networking-d136ed112f3cdfe8.yaml │ ├── neutron-sdk-opts-eda1fae468d8bf50.yaml │ ├── notification-retry-9c8c2a29fcc18867.yaml │ ├── octaiva-api-pagination_max_limit-d179a43fa2234930.yaml │ ├── octavia-api-wsgi-2d9469478fd2cd28.yaml │ ├── octavia-driver-agent-8b61e27e91e49b59.yaml │ ├── octavia-glance-37d48b9829d6ca8d.yaml │ ├── octavia-neutron-7d3d9cc0e95ecb11.yaml │ ├── octavia-neutron-class-a4fd7a5c86dab7d5.yaml │ ├── octavia-nova-0205d7406d58e871.yaml │ ├── octavia-quota-default-2f256d6e40fd1510.yaml │ ├── openstack_db_tag-825e070a8eda32b3.yaml │ ├── oslo-reports-469c44ae8dd3c863.yaml │ ├── oslo_policy-enforce_scope-97ad3dc14b829db2.yaml │ ├── ovn-provider-package-af40f696662e7052.yaml │ ├── ovn-tunables-103622c80b71d03d.yaml │ ├── ovnsb-params-e7bdca2b53465ed9.yaml │ ├── policy-dirs-e20f57e2b7987350.yaml │ ├── policy-enforce_new_defaults-ca7f1e7e532fad43.yaml │ ├── policy_default_rule-9a7ee88f25808fdc.yaml │ ├── policy_purge_config-3596771b095d31fe.yaml │ ├── puppet-8-e44e6614e05cedd1.yaml │ ├── puppet4-mysql-func-2a3fa2c6b7e24554.yaml │ ├── quota-cleanup-255ebc9eb81c9a0d.yaml │ ├── rabbit_qos_prefetch_count-28487b2e87b5ac05.yaml │ ├── rabbit_transient_queues_ttl-e128789222dee23c.yaml │ ├── rabbit_transient_quorum_queue-7866f8e36097eaf9.yaml │ ├── rabbitmq-heartbeat-over-pthread-9ade0b50b7da0598.yaml │ ├── redis-sentinel-auth-and-ssl-92a5415f7f310ec0.yaml │ ├── release-note-ubuntu-py3-ff9dcddda18683a6.yaml │ ├── remove-amqp1-fff95d2280bd6669.yaml │ ├── remove-amqp_allow_insecure_clients-4498cb1826cc2624.yaml │ ├── remove-api-ovn_nb_connection-2d85f0ece3db7576.yaml │ ├── remove-api-provider_drivers-61afe0c19e9d6189.yaml │ ├── remove-auth-uri-4cd453c34ab04962.yaml │ ├── remove-centos-8-2c0dade02105f41b.yaml │ ├── remove-database-params-6af198c038340c34.yaml │ ├── remove-deprecated-neutron-opts-7c661594cb70fcf5.yaml │ ├── remove-deprecated-rabbit-params-975b0c89b2ef85fc.yaml │ ├── remove-event-streamer-driver-48a4bb259b4649a4.yaml │ ├── remove-event_streamer_driver-fe328ce546d09975.yaml │ ├── remove-haproxy-amphora-key-path-bf21706a6504e28f.yaml │ ├── remove-hm-workers-698f4ec645474030.yaml │ ├── remove-puppet-6-ffc8d0bae994afa9.yaml │ ├── remove-spares-pool-feature-2ed29ea73a2454aa.yaml │ ├── remove-watch_log_file-94838004c9579f69.yaml │ ├── remove_deprecated_ensure_package_option-8b6ede6e5dc3761c.yaml │ ├── remove_deprecated_keystone_revocation_cache_time_option-8eeeaac0ccc5c8fa.yaml │ ├── remove_deprecated_keystone_signing_dir_option-833cd0913febeea1.yaml │ ├── remove_deprecated_pki_related_options-b64a27e569eaf682.yaml │ ├── remove_idle_timeout_option-b86daee751340b12.yaml │ ├── restart-service-certificate-b4000c445374129c.yaml │ ├── service_auth-defaults-d8f26d966207f906.yaml │ ├── service_token_roles-9257977b41bcaa6e.yaml │ ├── service_token_roles_required-8294ec1e5b3fc75f.yaml │ ├── set-amphora-timezone-103b078b31ab7aeb.yaml │ ├── set-common-configuration-options-across-services-91a9057d62b52de0.yaml │ ├── ssh-cert-files-42b8a31092405454.yaml │ ├── ssh_key_type-08bccff227a885e2.yaml │ ├── support-populating-cert-files-86533953f901d3b2.yaml │ ├── system_scope-all-0895d770ca1afffb.yaml │ ├── system_scope-keystone-dda7488fa52854e0.yaml │ ├── task_flow-89c5a7003e705a9d.yaml │ ├── task_flow-backend_package-390484b756669544.yaml │ ├── ubuntu-jammy-93978b575d818231.yaml │ ├── ubuntu-noble-dd7ea4362dce0d2d.yaml │ ├── uwsgi-22d71c90d9b6bf65.yaml │ ├── volume-based-amphora-62f3429adad36962.yaml │ └── workers-worker-default-os_workers-5b36d9814cc469fb.yaml └── source │ ├── 2023.1.rst │ ├── 2023.2.rst │ ├── 2024.1.rst │ ├── 2024.2.rst │ ├── 2025.1.rst │ ├── _static │ └── .placeholder │ ├── conf.py │ ├── index.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_octavia_spec.rb │ └── 99_octavia_config_spec.rb ├── classes │ ├── octavia_api_spec.rb │ ├── octavia_audit_spec.rb │ ├── octavia_certificates_spec.rb │ ├── octavia_cinder_spec.rb │ ├── octavia_client_spec.rb │ ├── octavia_compute_spec.rb │ ├── octavia_controller_spec.rb │ ├── octavia_cors_spec.rb │ ├── octavia_db_mysql_spec.rb │ ├── octavia_db_postgresql_spec.rb │ ├── octavia_db_spec.rb │ ├── octavia_db_sync_persistence_spec.rb │ ├── octavia_db_sync_spec.rb │ ├── octavia_driver_agent_spec.rb │ ├── octavia_glance_spec.rb │ ├── octavia_health_manager_spec.rb │ ├── octavia_healthcheck_spec.rb │ ├── octavia_housekeeping_spec.rb │ ├── octavia_init_spec.rb │ ├── octavia_keystone_auth_spec.rb │ ├── octavia_keystone_authtoken_spec.rb │ ├── octavia_logging_spec.rb │ ├── octavia_networking_spec.rb │ ├── octavia_neutron_spec.rb │ ├── octavia_nova_spec.rb │ ├── octavia_policy_spec.rb │ ├── octavia_provider_ovn_spec.rb │ ├── octavia_quota_spec.rb │ ├── octavia_reports_spec.rb │ ├── octavia_roles_spec.rb │ ├── octavia_service_auth_spec.rb │ ├── octavia_task_flow_spec.rb │ ├── octavia_worker_spec.rb │ ├── octavia_wsgi_apache_spec.rb │ └── octavia_wsgi_uwsgi_spec.rb ├── shared_examples.rb ├── spec_helper.rb ├── spec_helper_acceptance.rb ├── type_aliases │ └── jobboardbackenddriver_spec.rb └── unit │ ├── provider │ ├── octavia_api_uwsgi_config │ │ └── openstackconfig_spec.rb │ ├── octavia_config │ │ └── openstackconfig_spec.rb │ └── octavia_ovn_provider_config │ │ └── ini_setting_spec.rb │ └── type │ ├── octavia_api_uwsgi_config_spec.rb │ ├── octavia_config_spec.rb │ └── octavia_ovn_provider_config_spec.rb ├── tox.ini └── types └── jobboardbackenddriver.pp /.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-octavia.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 | -------------------------------------------------------------------------------- /.zuul.yaml: -------------------------------------------------------------------------------- 1 | - project: 2 | templates: 3 | - puppet-openstack-check-jobs 4 | - puppet-openstack-module-unit-jobs 5 | - puppet-openstack-integration-jobs-scenario004 6 | - puppet-openstack-integration-jobs-scenario005 7 | - puppet-openstack-litmus-jobs 8 | - release-notes-jobs-python3 9 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | The source repository for this project can be found at: 2 | 3 | https://opendev.org/openstack/puppet-octavia 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-octavia 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Team and repository tags 2 | ======================== 3 | 4 | [![Team and repository tags](https://governance.openstack.org/tc/badges/puppet-octavia.svg)](https://governance.openstack.org/tc/reference/tags/index.html) 5 | 6 | 7 | 8 | octavia 9 | ======= 10 | 11 | #### Table of Contents 12 | 13 | 1. [Overview - What is the octavia module?](#overview) 14 | 2. [Module Description - What does the module do?](#module-description) 15 | 3. [Setup - The basics of getting started with octavia](#setup) 16 | 4. [Implementation - An under-the-hood peek at what the module is doing](#implementation) 17 | 5. [Limitations - OS compatibility, etc.](#limitations) 18 | 6. [Development - Guide for contributing to the module](#development) 19 | 7. [Contributors - Those with commits](#contributors) 20 | 8. [Release Notes - Release notes for the project](#release-notes) 21 | 9. [Repository - The project source code repository](#repository) 22 | 23 | Overview 24 | -------- 25 | 26 | The octavia module is a part of [OpenStack](https://opendev.org/openstack), an effort by the OpenStack infrastructure team to provide continuous integration testing and code review for OpenStack and OpenStack community projects not part of the core software. The module its self is used to flexibly configure and manage the scalable load balancer service for OpenStack. 27 | 28 | Module Description 29 | ------------------ 30 | 31 | The octavia module is a thorough attempt to make Puppet capable of managing the entirety of octavia. This includes manifests to provision region specific endpoint and database connections. Types are shipped as part of the octavia module to assist in manipulation of configuration files. 32 | 33 | Setup 34 | ----- 35 | 36 | **What the octavia module affects** 37 | 38 | * [Octavia](https://docs.openstack.org/octavia/latest/), the scalable load balancer service for OpenStack. 39 | 40 | ### Installing octavia 41 | 42 | octavia is not currently in Puppet Forge, but is anticipated to be added soon. Once that happens, you'll be able to install octavia with: 43 | puppet module install openstack/octavia 44 | 45 | ### Beginning with octavia 46 | 47 | To utilize the octavia module's functionality you will need to declare multiple resources. 48 | 49 | Implementation 50 | -------------- 51 | 52 | ### octavia 53 | 54 | octavia is a combination of Puppet manifest and ruby code to delivery configuration and extra functionality through types and providers. 55 | 56 | Limitations 57 | ------------ 58 | 59 | * All the octavia types use the CLI tools and so need to be ran on the octavia node. 60 | 61 | Development 62 | ----------- 63 | 64 | Developer documentation for the entire puppet-openstack project. 65 | 66 | * https://docs.openstack.org/puppet-openstack-guide/latest/ 67 | 68 | Contributors 69 | ------------ 70 | 71 | * https://github.com/openstack/puppet-octavia/graphs/contributors 72 | 73 | Release Notes 74 | ------------- 75 | 76 | * https://docs.openstack.org/releasenotes/puppet-octavia 77 | 78 | Repository 79 | ---------- 80 | 81 | * https://opendev.org/openstack/puppet-octavia 82 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /examples/init.pp: -------------------------------------------------------------------------------- 1 | # The baseline for module testing used by Puppet Inc. is that each manifest 2 | # should have a corresponding test manifest that declares that class or defined 3 | # type. 4 | # 5 | # Tests are then run by using puppet apply --noop (to check for compilation 6 | # errors and view a log of events) or by fully applying the test in a virtual 7 | # environment (to compare the resulting system state to the desired state). 8 | # 9 | # Learn more about module testing here: 10 | # https://puppet.com/docs/puppet/latest/bgtm.html#testing-your-module 11 | # 12 | include octavia 13 | -------------------------------------------------------------------------------- /lib/puppet/provider/octavia_api_uwsgi_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:octavia_api_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/octavia/octavia-api-uwsgi.ini' 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/puppet/provider/octavia_config/openstackconfig.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:octavia_config).provide( 2 | :openstackconfig, 3 | :parent => Puppet::Type.type(:openstack_config).provider(:ruby) 4 | ) do 5 | 6 | def self.file_path 7 | '/etc/octavia/octavia.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/provider/octavia_ovn_provider_config/ini_setting.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.type(:octavia_ovn_provider_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/octavia/conf.d/ovn.conf' 8 | end 9 | 10 | end 11 | -------------------------------------------------------------------------------- /lib/puppet/type/octavia_api_uwsgi_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:octavia_api_uwsgi_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from /etc/octavia/octavia-api-uwsgi.ini' 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 | end 19 | 20 | newparam(:ensure_absent_val) do 21 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 22 | defaultto('') 23 | end 24 | 25 | autorequire(:anchor) do 26 | ['octavia::install::end'] 27 | end 28 | 29 | end 30 | -------------------------------------------------------------------------------- /lib/puppet/type/octavia_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:octavia_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from octavia.conf' 7 | newvalues(/\S+\/\S+/) 8 | end 9 | 10 | newproperty(:value, :array_matching => :all) do 11 | desc 'The value of the setting to be defined.' 12 | def insync?(is) 13 | return true if @should.empty? 14 | return false unless is.is_a? Array 15 | return false unless is.length == @should.length 16 | return ( 17 | is & @should == is or 18 | is & @should.map(&:to_s) == is 19 | ) 20 | end 21 | munge do |value| 22 | value = value.to_s.strip 23 | value.capitalize! if value =~ /^(true|false)$/i 24 | value 25 | end 26 | 27 | def is_to_s( currentvalue ) 28 | if resource.secret? 29 | return '[old secret redacted]' 30 | else 31 | return currentvalue 32 | end 33 | end 34 | 35 | def should_to_s( newvalue ) 36 | if resource.secret? 37 | return '[new secret redacted]' 38 | else 39 | return newvalue 40 | end 41 | end 42 | end 43 | 44 | newparam(:secret, :boolean => true) do 45 | desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' 46 | 47 | newvalues(:true, :false) 48 | 49 | defaultto false 50 | end 51 | 52 | newparam(:ensure_absent_val) do 53 | desc 'A value that is specified as the value property will behave as if ensure => absent was specified' 54 | defaultto('') 55 | end 56 | 57 | autorequire(:anchor) do 58 | ['octavia::install::end'] 59 | end 60 | 61 | end 62 | -------------------------------------------------------------------------------- /lib/puppet/type/octavia_ovn_provider_config.rb: -------------------------------------------------------------------------------- 1 | Puppet::Type.newtype(:octavia_ovn_provider_config) do 2 | 3 | ensurable 4 | 5 | newparam(:name, :namevar => true) do 6 | desc 'Section/setting name to manage from conf.d/ovn.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 | ['octavia::install::end'] 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /manifests/audit.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::audit 2 | # 3 | # Configure audit middleware options 4 | # 5 | # == Params 6 | # 7 | # [*enabled*] 8 | # (Optional) Enable auditing of API requests 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*audit_map_file*] 12 | # (Optional) Path to audit map file for octavia-api service. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*ignore_req_list*] 16 | # (Optional) Comma separated list of octavia REST API HTTP methods 17 | # to be ignored during audit logging. 18 | # Defaults to $facts['os_service_default'] 19 | # 20 | class octavia::audit ( 21 | $enabled = $facts['os_service_default'], 22 | $audit_map_file = $facts['os_service_default'], 23 | $ignore_req_list = $facts['os_service_default'], 24 | ) { 25 | 26 | include octavia::deps 27 | 28 | octavia_config { 29 | 'audit/enabled': value => $enabled; 30 | 'audit/audit_map_file': value => $audit_map_file; 31 | 'audit/ignore_req_list': value => join(any2array($ignore_req_list), ','); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /manifests/cinder.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::cinder 2 | # 3 | # Setup and configure octavia.conf cinder section. 4 | # 5 | # === Parameters: 6 | # 7 | # [*service_name*] 8 | # (Optional) The name of the cinder service in the keystone catalog. 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*endpoint*] 12 | # (Optional) Custom cinder endpoint if override is necessary. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*region_name*] 16 | # (Optional) Region in catalog to use for cinder. 17 | # Defaults to $facts['os_service_default'] 18 | # 19 | # [*endpoint_type*] 20 | # (Optional) Endpoint type in catalog to use for cinder. 21 | # Defaults to $facts['os_service_default'] 22 | # 23 | # [*availability_zone*] 24 | # (Optional) Availability zone to use for creating volume. 25 | # Defaults to $facts['os_service_default'] 26 | # 27 | # [*volume_size*] 28 | # (Optional) Size of volume, in GB, for Amphora instance 29 | # Defaults to $facts['os_service_default'] 30 | # 31 | # [*volume_type*] 32 | # (Optional) Type of volume for Amphorae volume root disk 33 | # Defaults to $facts['os_service_default'] 34 | # 35 | # [*volume_create_retry_interval*] 36 | # (Optional) Interval time to wait volume is created in available state 37 | # Defaults to $facts['os_service_default'] 38 | # 39 | # [*volume_create_timeout*] 40 | # (Optional) Timeout to wait volume is created in available 41 | # Defaults to $facts['os_service_default'] 42 | # 43 | # [*volume_create_max_retries*] 44 | # (Optional) Maximum number of retries to create volume 45 | # Defaults to $facts['os_service_default'] 46 | # 47 | class octavia::cinder ( 48 | $service_name = $facts['os_service_default'], 49 | $endpoint = $facts['os_service_default'], 50 | $region_name = $facts['os_service_default'], 51 | $endpoint_type = $facts['os_service_default'], 52 | $availability_zone = $facts['os_service_default'], 53 | $volume_size = $facts['os_service_default'], 54 | $volume_type = $facts['os_service_default'], 55 | $volume_create_retry_interval = $facts['os_service_default'], 56 | $volume_create_timeout = $facts['os_service_default'], 57 | $volume_create_max_retries = $facts['os_service_default'], 58 | ) { 59 | 60 | include octavia::deps 61 | 62 | octavia_config { 63 | 'cinder/service_name': value => $service_name; 64 | 'cinder/endpoint': value => $endpoint; 65 | 'cinder/region_name': value => $region_name; 66 | 'cinder/endpoint_type': value => $endpoint_type; 67 | 'cinder/availability_zone': value => $availability_zone; 68 | 'cinder/volume_size': value => $volume_size; 69 | 'cinder/volume_type': value => $volume_type; 70 | 'cinder/volume_create_retry_interval': value => $volume_create_retry_interval; 71 | 'cinder/volume_create_timeout': value => $volume_create_timeout; 72 | 'cinder/volume_create_max_retries': value => $volume_create_max_retries; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /manifests/client.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::client 2 | # 3 | # Installs the octavia python library. 4 | # 5 | # === Parameters 6 | # 7 | # [*ensure*] 8 | # (Optional) Ensure state for package. 9 | # 10 | class octavia::client ( 11 | $ensure = 'present' 12 | ) { 13 | 14 | include octavia::deps 15 | include octavia::params 16 | 17 | package { 'python-octaviaclient': 18 | ensure => $ensure, 19 | name => $::octavia::params::client_package_name, 20 | tag => ['openstack', 'openstackclient'], 21 | } 22 | include openstacklib::openstackclient 23 | } 24 | -------------------------------------------------------------------------------- /manifests/compute.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::compute 2 | # 3 | # Setup and configure octavia.conf compute section. 4 | # 5 | # === Parameters: 6 | # 7 | # [*max_retries*] 8 | # (Optional) The maximum attempts to retry an action with the compute 9 | # service. 10 | # Defaults to $facts['os_service_default'] 11 | # 12 | # [*retry_interval*] 13 | # (Optional) Seconds to wait before retrying an action with the compute 14 | # service. 15 | # Defaults to $facts['os_service_default'] 16 | # 17 | # [*retry_backoff*] 18 | # (Optional) The seconds to backoff retry attempts. 19 | # Defaults to $facts['os_service_default'] 20 | # 21 | # [*retry_max*] 22 | # (Optional) The maximum interval in seconds between retry attempts. 23 | # Defaults to $facts['os_service_default'] 24 | # 25 | class octavia::compute ( 26 | $max_retries = $facts['os_service_default'], 27 | $retry_interval = $facts['os_service_default'], 28 | $retry_backoff = $facts['os_service_default'], 29 | $retry_max = $facts['os_service_default'], 30 | ) { 31 | 32 | include octavia::deps 33 | 34 | octavia_config { 35 | 'compute/max_retries': value => $max_retries; 36 | 'compute/retry_interval': value => $retry_interval; 37 | 'compute/retry_backoff': value => $retry_backoff; 38 | 'compute/retry_max': value => $retry_max; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /manifests/config.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::config 2 | # 3 | # This class is used to manage arbitrary octavia configurations. 4 | # 5 | # === Parameters 6 | # 7 | # [*octavia_config*] 8 | # (optional) Allow configuration of arbitrary octavia configurations. 9 | # The value is an hash of octavia_config resources. Example: 10 | # { 'DEFAULT/foo' => { value => 'fooValue'}, 11 | # 'DEFAULT/bar' => { value => 'barValue'} 12 | # } 13 | # In yaml format, Example: 14 | # octavia_config: 15 | # DEFAULT/foo: 16 | # value: fooValue 17 | # DEFAULT/bar: 18 | # value: barValue 19 | # 20 | # NOTE: The configuration MUST NOT be already handled by this module 21 | # or Puppet catalog compilation will fail with duplicate resources. 22 | # 23 | class octavia::config ( 24 | Hash $octavia_config = {}, 25 | ) { 26 | 27 | include octavia::deps 28 | 29 | create_resources('octavia_config', $octavia_config) 30 | } 31 | -------------------------------------------------------------------------------- /manifests/cors.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::cors 2 | # 3 | # Configure the octavia cors 4 | # 5 | # === Parameters 6 | # 7 | # [*allowed_origin*] 8 | # (Optional) Indicate whether this resource may be shared with the domain 9 | # received in the requests "origin" header. 10 | # (string value) 11 | # Defaults to $facts['os_service_default']. 12 | # 13 | # [*allow_credentials*] 14 | # (Optional) Indicate that the actual request can include user credentials. 15 | # (boolean value) 16 | # Defaults to $facts['os_service_default']. 17 | # 18 | # [*expose_headers*] 19 | # (Optional) Indicate which headers are safe to expose to the API. 20 | # (list value) 21 | # Defaults to $facts['os_service_default']. 22 | # 23 | # [*max_age*] 24 | # (Optional) Maximum cache age of CORS preflight requests. 25 | # (integer value) 26 | # Defaults to $facts['os_service_default']. 27 | # 28 | # [*allow_methods*] 29 | # (Optional) Indicate which methods can be used during the actual request. 30 | # (list value) 31 | # Defaults to $facts['os_service_default']. 32 | # 33 | # [*allow_headers*] 34 | # (Optional) Indicate which header field names may be used during the actual 35 | # request. 36 | # (list value) 37 | # Defaults to $facts['os_service_default']. 38 | # 39 | class octavia::cors ( 40 | $allowed_origin = $facts['os_service_default'], 41 | $allow_credentials = $facts['os_service_default'], 42 | $expose_headers = $facts['os_service_default'], 43 | $max_age = $facts['os_service_default'], 44 | $allow_methods = $facts['os_service_default'], 45 | $allow_headers = $facts['os_service_default'], 46 | ) { 47 | 48 | include octavia::deps 49 | 50 | oslo::cors { 'octavia_config': 51 | allowed_origin => $allowed_origin, 52 | allow_credentials => $allow_credentials, 53 | expose_headers => $expose_headers, 54 | max_age => $max_age, 55 | allow_methods => $allow_methods, 56 | allow_headers => $allow_headers, 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /manifests/db.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::db 2 | # 3 | # Configure the octavia database 4 | # 5 | # === Parameters 6 | # 7 | # [*database_connection*] 8 | # (Optional) Url used to connect to database. 9 | # Defaults to 'sqlite:////var/lib/octavia/octavia.sqlite'. 10 | # 11 | # [*database_connection_recycle_time*] 12 | # (Optional) Timeout when db connections should be reaped. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*database_max_retries*] 16 | # (Optional) Maximum number of database connection retries during startup. 17 | # Setting -1 implies an infinite retry count. 18 | # Defaults to $facts['os_service_default'] 19 | # 20 | # [*database_retry_interval*] 21 | # (Optional) Interval between retries of opening a database connection. 22 | # Defaults to $facts['os_service_default'] 23 | # 24 | # [*database_max_pool_size*] 25 | # (Optional) Maximum number of SQL connections to keep open in a pool. 26 | # Defaults to $facts['os_service_default'] 27 | # 28 | # [*database_max_overflow*] 29 | # (Optional) If set, use this value for max_overflow with sqlalchemy. 30 | # Defaults to $facts['os_service_default'] 31 | # 32 | # [*database_pool_timeout*] 33 | # (Optional) If set, use this value for pool_timeout with SQLAlchemy. 34 | # Defaults to $facts['os_service_default'] 35 | # 36 | # [*mysql_enable_ndb*] 37 | # (Optional) If True, transparently enables support for handling MySQL 38 | # Cluster (NDB). 39 | # Defaults to $facts['os_service_default'] 40 | # 41 | # [*database_db_max_retries*] 42 | # (Optional) Maximum retries in case of connection error or deadlock error 43 | # before error is raised. Set to -1 to specify an infinite retry count. 44 | # Defaults to $facts['os_service_default'] 45 | # 46 | class octavia::db ( 47 | $database_connection = 'sqlite:////var/lib/octavia/octavia.sqlite', 48 | $database_connection_recycle_time = $facts['os_service_default'], 49 | $database_max_pool_size = $facts['os_service_default'], 50 | $database_max_retries = $facts['os_service_default'], 51 | $database_retry_interval = $facts['os_service_default'], 52 | $database_max_overflow = $facts['os_service_default'], 53 | $database_pool_timeout = $facts['os_service_default'], 54 | $mysql_enable_ndb = $facts['os_service_default'], 55 | $database_db_max_retries = $facts['os_service_default'], 56 | ) { 57 | 58 | include octavia::deps 59 | 60 | oslo::db { 'octavia_config': 61 | connection => $database_connection, 62 | connection_recycle_time => $database_connection_recycle_time, 63 | max_pool_size => $database_max_pool_size, 64 | max_retries => $database_max_retries, 65 | retry_interval => $database_retry_interval, 66 | max_overflow => $database_max_overflow, 67 | pool_timeout => $database_pool_timeout, 68 | mysql_enable_ndb => $mysql_enable_ndb, 69 | db_max_retries => $database_db_max_retries, 70 | } 71 | 72 | # all db settings should be applied and all packages should be installed 73 | # before dbsync starts 74 | Oslo::Db['octavia_config'] -> Anchor['octavia::dbsync::begin'] 75 | } 76 | -------------------------------------------------------------------------------- /manifests/db/mysql.pp: -------------------------------------------------------------------------------- 1 | # The octavia::db::mysql class implements mysql backend for octavia 2 | # 3 | # This class can be used to create tables, users and grant 4 | # privilege for a mysql octavia database. 5 | # 6 | # == Parameters 7 | # 8 | # [*password*] 9 | # (Required) Password to connect to the database. 10 | # 11 | # [*dbname*] 12 | # (Optional) Name of the database. 13 | # Defaults to 'octavia'. 14 | # 15 | # [*persistence_dbname*] 16 | # (Optional) Name of the database dedicated to task_flow persistence. 17 | # Defaults to 'undef'. 18 | # 19 | # [*user*] 20 | # (Optional) User to connect to the database. 21 | # Defaults to 'octavia'. 22 | # 23 | # [*host*] 24 | # (Optional) The default source host user is allowed to connect from. 25 | # Defaults to '127.0.0.1' 26 | # 27 | # [*allowed_hosts*] 28 | # (Optional) Other hosts the user is allowed to connect from. 29 | # Defaults to 'undef'. 30 | # 31 | # [*charset*] 32 | # (Optional) The database charset. 33 | # Defaults to 'utf8' 34 | # 35 | # [*collate*] 36 | # (Optional) The database collate. 37 | # Only used with mysql modules >= 2.2. 38 | # Defaults to 'utf8_general_ci' 39 | # 40 | class octavia::db::mysql( 41 | String[1] $password, 42 | $dbname = 'octavia', 43 | $persistence_dbname = undef, 44 | $user = 'octavia', 45 | $host = '127.0.0.1', 46 | $charset = 'utf8', 47 | $collate = 'utf8_general_ci', 48 | $allowed_hosts = undef 49 | ) { 50 | 51 | include octavia::deps 52 | 53 | openstacklib::db::mysql { 'octavia': 54 | user => $user, 55 | password => $password, 56 | dbname => $dbname, 57 | host => $host, 58 | charset => $charset, 59 | collate => $collate, 60 | allowed_hosts => $allowed_hosts, 61 | } 62 | 63 | if $persistence_dbname { 64 | openstacklib::db::mysql { 'octavia_persistence': 65 | user => $user, 66 | password => $password, 67 | dbname => $persistence_dbname, 68 | host => $host, 69 | charset => $charset, 70 | collate => $collate, 71 | allowed_hosts => $allowed_hosts, 72 | create_user => false, 73 | } 74 | } 75 | 76 | Anchor['octavia::db::begin'] 77 | ~> Class['octavia::db::mysql'] 78 | ~> Anchor['octavia::db::end'] 79 | 80 | } 81 | -------------------------------------------------------------------------------- /manifests/db/postgresql.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::db::postgresql 2 | # 3 | # Class that configures postgresql for octavia 4 | # Requires the Puppetlabs postgresql module. 5 | # 6 | # === Parameters 7 | # 8 | # [*password*] 9 | # (Required) Password to connect to the database. 10 | # 11 | # [*dbname*] 12 | # (Optional) Name of the database. 13 | # Defaults to 'octavia'. 14 | # 15 | # [*persistence_dbname*] 16 | # (Optional) Name of the database dedicated to task_flow persistence. 17 | # Defaults to 'undef'. 18 | # 19 | # [*user*] 20 | # (Optional) User to connect to the database. 21 | # Defaults to 'octavia'. 22 | # 23 | # [*encoding*] 24 | # (Optional) The charset to use for the database. 25 | # Default to undef. 26 | # 27 | # [*privileges*] 28 | # (Optional) Privileges given to the database user. 29 | # Default to 'ALL' 30 | # 31 | class octavia::db::postgresql( 32 | $password, 33 | $dbname = 'octavia', 34 | $persistence_dbname = undef, 35 | $user = 'octavia', 36 | $encoding = undef, 37 | $privileges = 'ALL', 38 | ) { 39 | 40 | include octavia::deps 41 | 42 | openstacklib::db::postgresql { 'octavia': 43 | password => $password, 44 | dbname => $dbname, 45 | user => $user, 46 | encoding => $encoding, 47 | privileges => $privileges, 48 | } 49 | 50 | if $persistence_dbname { 51 | openstacklib::db::postgresql { 'octavia_persistence': 52 | password => $password, 53 | dbname => $persistence_dbname, 54 | user => $user, 55 | encoding => $encoding, 56 | privileges => $privileges, 57 | } 58 | } 59 | 60 | Anchor['octavia::db::begin'] 61 | ~> Class['octavia::db::postgresql'] 62 | ~> Anchor['octavia::db::end'] 63 | 64 | } 65 | -------------------------------------------------------------------------------- /manifests/db/sync.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Class to execute octavia-db-manage upgrade head 3 | # 4 | # == Parameters 5 | # 6 | # [*extra_params*] 7 | # (Optional) String of extra command line parameters to append 8 | # to the octavia-db-manage command. 9 | # Defaults to undef 10 | # 11 | # [*db_sync_timeout*] 12 | # (Optional) Timeout for the execution of the db_sync 13 | # Defaults to 300 14 | # 15 | class octavia::db::sync( 16 | $extra_params = undef, 17 | $db_sync_timeout = 300, 18 | ) { 19 | 20 | include octavia::deps 21 | include octavia::params 22 | 23 | exec { 'octavia-db-sync': 24 | command => "octavia-db-manage upgrade head ${extra_params}", 25 | path => '/usr/bin', 26 | user => $::octavia::params::user, 27 | refreshonly => true, 28 | try_sleep => 5, 29 | tries => 10, 30 | timeout => $db_sync_timeout, 31 | logoutput => on_failure, 32 | subscribe => [ 33 | Anchor['octavia::install::end'], 34 | Anchor['octavia::config::end'], 35 | Anchor['octavia::dbsync::begin'] 36 | ], 37 | notify => Anchor['octavia::dbsync::end'], 38 | tag => 'openstack-db', 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /manifests/db/sync_persistence.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Class to execute octavia-db-manage upgrade_persistence 3 | # 4 | # == Parameters 5 | # 6 | # [*extra_params*] 7 | # (Optional) String of extra command line parameters to append 8 | # to the octavia-db-manage command. 9 | # Defaults to undef 10 | # 11 | # [*db_sync_timeout*] 12 | # (Optional) Timeout for the execution of the db_sync 13 | # Defaults to 300 14 | # 15 | class octavia::db::sync_persistence( 16 | $extra_params = undef, 17 | $db_sync_timeout = 300, 18 | ) { 19 | 20 | include octavia::deps 21 | include octavia::params 22 | 23 | exec { 'octavia-db-sync-persistence': 24 | command => "octavia-db-manage upgrade_persistence ${extra_params}", 25 | path => '/usr/bin', 26 | user => $::octavia::params::user, 27 | refreshonly => true, 28 | try_sleep => 5, 29 | tries => 10, 30 | timeout => $db_sync_timeout, 31 | logoutput => on_failure, 32 | subscribe => [ 33 | Anchor['octavia::install::end'], 34 | Anchor['octavia::config::end'], 35 | Anchor['octavia::dbsync::begin'] 36 | ], 37 | notify => Anchor['octavia::dbsync::end'], 38 | tag => 'openstack-db', 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /manifests/deps.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::deps 2 | # 3 | # Octavia anchors and dependency management 4 | # 5 | class octavia::deps { 6 | # Setup anchors for install, config and service phases of the module. These 7 | # anchors allow external modules to hook the begin and end of any of these 8 | # phases. Package or service management can also be replaced by ensuring the 9 | # package is absent or turning off service management and having the 10 | # replacement depend on the appropriate anchors. When applicable, end tags 11 | # should be notified so that subscribers can determine if installation, 12 | # config or service state changed and act on that if needed. 13 | anchor { 'octavia::install::begin': } 14 | -> Package<| tag == 'octavia-package'|> 15 | ~> anchor { 'octavia::install::end': } 16 | -> anchor { 'octavia::config::begin': } 17 | -> Octavia_config<||> 18 | ~> anchor { 'octavia::config::end': } 19 | -> anchor { 'octavia::certificate::begin': } 20 | -> File<| tag == 'octavia-certificate' |> 21 | ~> anchor { 'octavia::certificate::end': } 22 | -> anchor { 'octavia::db::begin': } 23 | -> anchor { 'octavia::db::end': } 24 | ~> anchor { 'octavia::dbsync::begin': } 25 | -> anchor { 'octavia::dbsync::end': } 26 | ~> anchor { 'octavia::service::begin': } 27 | ~> Service<| tag == 'octavia-service' |> 28 | ~> anchor { 'octavia::service::end': } 29 | 30 | Anchor['octavia::config::begin'] 31 | -> Octavia_api_uwsgi_config<||> 32 | -> Anchor['octavia::config::end'] 33 | 34 | # Installation or config changes will always restart services. 35 | Anchor['octavia::install::end'] ~> Anchor['octavia::service::begin'] 36 | Anchor['octavia::config::end'] ~> Anchor['octavia::service::begin'] 37 | 38 | # Changes in certificate or folders will restart services. 39 | Anchor['octavia::certificate::end'] ~> Anchor['octavia::service::begin'] 40 | } 41 | -------------------------------------------------------------------------------- /manifests/glance.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::glance 2 | # 3 | # Setup and configure octavia.conf glance section. 4 | # 5 | # === Parameters: 6 | # 7 | # [*service_name*] 8 | # (Optional) The name of the glance service in the keystone catalog. 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*endpoint*] 12 | # (Optional) Custom glance endpoint if override is necessary. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*region_name*] 16 | # (Optional) Region in catalog to use for glance. 17 | # Defaults to $facts['os_service_default'] 18 | # 19 | # [*endpoint_type*] 20 | # (Optional) Endpoint type in catalog to use for glance. 21 | # Defaults to $facts['os_service_default'] 22 | # 23 | class octavia::glance ( 24 | $service_name = $facts['os_service_default'], 25 | $endpoint = $facts['os_service_default'], 26 | $region_name = $facts['os_service_default'], 27 | $endpoint_type = $facts['os_service_default'], 28 | ) { 29 | 30 | include octavia::deps 31 | 32 | octavia_config { 33 | 'glance/service_name': value => $service_name; 34 | 'glance/endpoint': value => $endpoint; 35 | 'glance/region_name': value => $region_name; 36 | 'glance/endpoint_type': value => $endpoint_type; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /manifests/healthcheck.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::healthcheck 2 | # 3 | # Configure oslo_middleware options in healthcheck section 4 | # 5 | # == Params 6 | # 7 | # [*detailed*] 8 | # (Optional) Show more detailed information as part of the response. 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*backends*] 12 | # (Optional) Additional backends that can perform health checks and report 13 | # that information back as part of a request. 14 | # Defaults to $facts['os_service_default'] 15 | # 16 | # [*allowed_source_ranges*] 17 | # (Optional) A list of network addresses to limit source ip allowed to access 18 | # healthcheck information. 19 | # Defaults to $facts['os_service_default'] 20 | # 21 | # [*ignore_proxied_requests*] 22 | # (Optional) Ignore requests with proxy headers 23 | # Defaults to $facts['os_service_default'] 24 | # 25 | # [*disable_by_file_path*] 26 | # (Optional) Check the presence of a file to determine if an application 27 | # is running on a port. 28 | # Defaults to $facts['os_service_default'] 29 | # 30 | # [*disable_by_file_paths*] 31 | # (Optional) Check the presence of a file to determine if an application 32 | # is running on a port. Expects a "port:path" list of strings. 33 | # Defaults to $facts['os_service_default'] 34 | # 35 | # [*enable_by_file_paths*] 36 | # (Optional) Check the presence of files. Used by EnableByFilesHealthcheck 37 | # plugin. 38 | # Defaults to $facts['os_service_default'] 39 | # 40 | class octavia::healthcheck ( 41 | $detailed = $facts['os_service_default'], 42 | $backends = $facts['os_service_default'], 43 | $allowed_source_ranges = $facts['os_service_default'], 44 | $ignore_proxied_requests = $facts['os_service_default'], 45 | $disable_by_file_path = $facts['os_service_default'], 46 | $disable_by_file_paths = $facts['os_service_default'], 47 | $enable_by_file_paths = $facts['os_service_default'], 48 | ) { 49 | 50 | include octavia::deps 51 | 52 | oslo::healthcheck { 'octavia_config': 53 | detailed => $detailed, 54 | backends => $backends, 55 | allowed_source_ranges => $allowed_source_ranges, 56 | ignore_proxied_requests => $ignore_proxied_requests, 57 | disable_by_file_path => $disable_by_file_path, 58 | disable_by_file_paths => $disable_by_file_paths, 59 | enable_by_file_paths => $enable_by_file_paths, 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /manifests/housekeeping.pp: -------------------------------------------------------------------------------- 1 | # Installs and configures the octavia housekeeping service 2 | # 3 | # == Parameters 4 | # 5 | # [*enabled*] 6 | # (optional) Should the service be enabled. 7 | # Defaults to true 8 | # 9 | # [*manage_service*] 10 | # (optional) Whether the service should be managed by Puppet. 11 | # Defaults to true. 12 | # 13 | # [*package_ensure*] 14 | # (optional) ensure state for package. 15 | # Defaults to 'present' 16 | # 17 | # [*cleanup_interval*] 18 | # (optional) DB cleanup interval in seconds. 19 | # Defaults to $facts['os_service_default'] 20 | # 21 | # [*amphora_expiry_age*] 22 | # (optional) Amphora expiry age in seconds. 23 | # Defaults to $facts['os_service_default'] 24 | # 25 | # [*load_balancer_expiry_age*] 26 | # (optional) Load balancer expiry age in seconds. 27 | # Defaults to $facts['os_service_default'] 28 | # 29 | # [*cert_interval*] 30 | # (optional) Certificate check interval in seconds. 31 | # Defaults to $facts['os_service_default'] 32 | # 33 | # [*cert_expiry_buffer*] 34 | # (optional) Seconds until certificate expiry. 35 | # Defaults to $facts['os_service_default'] 36 | # 37 | # [*cert_rotate_threads*] 38 | # (optional) Number of threads performing amphora certificate rotation. 39 | # Defaults to $facts['os_service_default'] 40 | # 41 | class octavia::housekeeping ( 42 | Boolean $manage_service = true, 43 | Boolean $enabled = true, 44 | $package_ensure = 'present', 45 | $cleanup_interval = $facts['os_service_default'], 46 | $amphora_expiry_age = $facts['os_service_default'], 47 | $load_balancer_expiry_age = $facts['os_service_default'], 48 | $cert_interval = $facts['os_service_default'], 49 | $cert_expiry_buffer = $facts['os_service_default'], 50 | $cert_rotate_threads = $facts['os_service_default'], 51 | ) { 52 | 53 | include octavia::deps 54 | include octavia::params 55 | 56 | package { 'octavia-housekeeping': 57 | ensure => $package_ensure, 58 | name => $::octavia::params::housekeeping_package_name, 59 | tag => ['openstack', 'octavia-package'], 60 | } 61 | 62 | if $manage_service { 63 | if $enabled { 64 | $service_ensure = 'running' 65 | } else { 66 | $service_ensure = 'stopped' 67 | } 68 | 69 | service { 'octavia-housekeeping': 70 | ensure => $service_ensure, 71 | name => $::octavia::params::housekeeping_service_name, 72 | enable => $enabled, 73 | hasstatus => true, 74 | hasrestart => true, 75 | tag => ['octavia-service'], 76 | } 77 | } 78 | 79 | octavia_config { 80 | 'house_keeping/cleanup_interval' : value => $cleanup_interval; 81 | 'house_keeping/amphora_expiry_age' : value => $amphora_expiry_age; 82 | 'house_keeping/load_balancer_expiry_age' : value => $load_balancer_expiry_age; 83 | 'house_keeping/cert_interval' : value => $cert_interval; 84 | 'house_keeping/cert_expiry_buffer' : value => $cert_expiry_buffer; 85 | 'house_keeping/cert_rotate_threads' : value => $cert_rotate_threads; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /manifests/networking.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::networking 2 | # 3 | # Setup and configure octavia.conf networking section. 4 | # 5 | # === Parameters: 6 | # 7 | # [*max_retries*] 8 | # (Optional) The maximum attempts to retry an action with the networking 9 | # service. 10 | # Defaults to $facts['os_service_default'] 11 | # 12 | # [*retry_interval*] 13 | # (Optional) Seconds to wait before retrying an action with the networking 14 | # service. 15 | # Defaults to $facts['os_service_default'] 16 | # 17 | # [*retry_backoff*] 18 | # (Optional) The seconds to backoff retry attempts. 19 | # Defaults to $facts['os_service_default'] 20 | # 21 | # [*retry_max*] 22 | # (Optional) The maximum interval in seconds between retry attempts. 23 | # Defaults to $facts['os_service_default'] 24 | # 25 | # [*port_detach_timeout*] 26 | # (Optional) Seconds to wait for a port to detach from an amphora. 27 | # Defaults to $facts['os_service_default'] 28 | # 29 | # [*allow_vip_network_id*] 30 | # (Optional) Can users supply a network_id for their VIP? 31 | # Defaults to $facts['os_service_default'] 32 | # 33 | # [*allow_vip_subnet_id*] 34 | # (Optional) Can users supply a subnet_id for their VIP? 35 | # Defaults to $facts['os_service_default'] 36 | # 37 | # [*allow_vip_port_id*] 38 | # (Optional) Can users supply a port_id for their VIP? 39 | # Defaults to $facts['os_service_default'] 40 | # 41 | # [*valid_vip_networks*] 42 | # (Optional) List of network_ids that are valid for VIP creation. 43 | # Defaults to $facts['os_service_default'] 44 | # 45 | # [*reserved_ips*] 46 | # (Optional) List of IP addresses reserved from being used for member 47 | # addresses. 48 | # Defaults to $facts['os_service_default'] 49 | # 50 | # [*allow_invisible_resource_usage*] 51 | # (Optional) When True, users can use network resources they cannot normally 52 | # see as VIP or member subnets. 53 | # Defaults to $facts['os_service_default'] 54 | # 55 | class octavia::networking ( 56 | $max_retries = $facts['os_service_default'], 57 | $retry_interval = $facts['os_service_default'], 58 | $retry_backoff = $facts['os_service_default'], 59 | $retry_max = $facts['os_service_default'], 60 | $port_detach_timeout = $facts['os_service_default'], 61 | $allow_vip_network_id = $facts['os_service_default'], 62 | $allow_vip_subnet_id = $facts['os_service_default'], 63 | $allow_vip_port_id = $facts['os_service_default'], 64 | $valid_vip_networks = $facts['os_service_default'], 65 | $reserved_ips = $facts['os_service_default'], 66 | $allow_invisible_resource_usage = $facts['os_service_default'], 67 | ) { 68 | 69 | include octavia::deps 70 | 71 | octavia_config { 72 | 'networking/max_retries': value => $max_retries; 73 | 'networking/retry_interval': value => $retry_interval; 74 | 'networking/retry_backoff': value => $retry_backoff; 75 | 'networking/retry_max': value => $retry_max; 76 | 'networking/port_detach_timeout': value => $port_detach_timeout; 77 | 'networking/allow_vip_network_id': value => $allow_vip_network_id; 78 | 'networking/allow_vip_subnet_id': value => $allow_vip_subnet_id; 79 | 'networking/allow_vip_port_id': value => $allow_vip_port_id; 80 | 'networking/valid_vip_networks': value => join(any2array($valid_vip_networks), ','); 81 | 'networking/reserved_ips': value => join(any2array($reserved_ips), ','); 82 | 'networking/allow_invisible_resource_usage': value => $allow_invisible_resource_usage; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /manifests/neutron.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::neutron 2 | # 3 | # Setup and configure octavia.conf neutron section. 4 | # 5 | # === Parameters: 6 | # 7 | # [*password*] 8 | # (Required) Password for user 9 | # 10 | # [*auth_url*] 11 | # (Optional) Keystone Authentication URL 12 | # Defaults to 'http://localhost:5000' 13 | # 14 | # [*username*] 15 | # (Optional) User for accessing neutron 16 | # Defaults to 'neutron' 17 | # 18 | # [*project_name*] 19 | # (Optional) Tenant for accessing neutron 20 | # Defaults to 'services' 21 | # 22 | # [*user_domain_name*] 23 | # (Optional) keystone user domain 24 | # Defaults to 'Default' 25 | # 26 | # [*project_domain_name*] 27 | # (Optional) keystone project domain 28 | # Defaults to 'Default' 29 | # 30 | # [*system_scope*] 31 | # (Optional) Scope for system operations. 32 | # Defaults to $facts['os_service_default'] 33 | # 34 | # [*auth_type*] 35 | # (Optional) keystone authentication type 36 | # Defaults to 'password' 37 | # 38 | # [*region_name*] 39 | # (Optional) The region in which the identity server can be found. 40 | # Defaults to $facts['os_service_default'] 41 | # 42 | # [*service_name*] 43 | # (Optional) The name of the neutron service in the keystone catalog. 44 | # Defaults to $facts['os_service_default'] 45 | # 46 | # [*endpoint_override*] 47 | # (Optional) Always use this endpoint URL for requests for this client. 48 | # Defaults to $facts['os_service_default'] 49 | # 50 | # [*valid_interfaces*] 51 | # (Optional) List of interfaces, in order of preference for endpoint URL. 52 | # Defaults to $facts['os_service_default'] 53 | # 54 | class octavia::neutron ( 55 | $password, 56 | $auth_url = 'http://localhost:5000', 57 | $username = 'neutron', 58 | $project_name = 'services', 59 | $user_domain_name = 'Default', 60 | $project_domain_name = 'Default', 61 | $system_scope = $facts['os_service_default'], 62 | $auth_type = 'password', 63 | $region_name = $facts['os_service_default'], 64 | $service_name = $facts['os_service_default'], 65 | $endpoint_override = $facts['os_service_default'], 66 | $valid_interfaces = $facts['os_service_default'], 67 | ) { 68 | 69 | include octavia::deps 70 | 71 | if is_service_default($system_scope) { 72 | $project_name_real = $project_name 73 | $project_domain_name_real = $project_domain_name 74 | } else { 75 | $project_name_real = $facts['os_service_default'] 76 | $project_domain_name_real = $facts['os_service_default'] 77 | } 78 | 79 | octavia_config { 80 | 'neutron/auth_url': value => $auth_url; 81 | 'neutron/username': value => $username; 82 | 'neutron/project_name': value => $project_name_real; 83 | 'neutron/password': value => $password, secret => true; 84 | 'neutron/user_domain_name': value => $user_domain_name; 85 | 'neutron/project_domain_name': value => $project_domain_name_real; 86 | 'neutron/system_scope': value => $system_scope; 87 | 'neutron/auth_type': value => $auth_type; 88 | 'neutron/region_name': value => $region_name; 89 | 'neutron/service_name': value => $service_name; 90 | 'neutron/endpoint_override': value => $endpoint_override; 91 | 'neutron/valid_interfaces': value => join(any2array($valid_interfaces), ','); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /manifests/nova.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::nova 2 | # 3 | # Setup and configure octavia.conf nova section. 4 | # 5 | # === Parameters: 6 | # 7 | # [*service_name*] 8 | # (Optional) The name of the nova service in the keystone catalog. 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*endpoint*] 12 | # (Optional) Custom nova endpoint if override is necessary. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*region_name*] 16 | # (Optional) Region in catalog to use for nova. 17 | # Defaults to $facts['os_service_default'] 18 | # 19 | # [*endpoint_type*] 20 | # (Optional) Endpoint type in catalog to use for nova. 21 | # Defaults to $facts['os_service_default'] 22 | # 23 | # [*availability_zone*] 24 | # (Optional) Availability zone to use for creating Amphorae. 25 | # Defaults to $facts['os_service_default'] 26 | # 27 | # [*enable_anti_affinity*] 28 | # (Optional) Enable anti-affinity in nova. 29 | # Defaults to $facts['os_service_default'] 30 | # 31 | # [*anti_affinity_policy*] 32 | # (Optional) Set the anti-affinity policy to what is suitable. 33 | # Nova supports: anti-affinity and soft-anti-affinity. 34 | # Defaults to $facts['os_service_default'] 35 | # 36 | class octavia::nova ( 37 | $service_name = $facts['os_service_default'], 38 | $endpoint = $facts['os_service_default'], 39 | $region_name = $facts['os_service_default'], 40 | $endpoint_type = $facts['os_service_default'], 41 | $availability_zone = $facts['os_service_default'], 42 | $enable_anti_affinity = $facts['os_service_default'], 43 | $anti_affinity_policy = $facts['os_service_default'], 44 | ) { 45 | 46 | include octavia::deps 47 | 48 | octavia_config { 49 | 'nova/service_name': value => $service_name; 50 | 'nova/endpoint': value => $endpoint; 51 | 'nova/region_name': value => $region_name; 52 | 'nova/endpoint_type': value => $endpoint_type; 53 | 'nova/availability_zone': value => $availability_zone; 54 | 'nova/enable_anti_affinity': value => $enable_anti_affinity; 55 | 'nova/anti_affinity_policy': value => $anti_affinity_policy; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /manifests/params.pp: -------------------------------------------------------------------------------- 1 | # Parameters for puppet-octavia 2 | # 3 | class octavia::params { 4 | include openstacklib::defaults 5 | 6 | $api_service_name = 'octavia-api' 7 | $worker_service_name = 'octavia-worker' 8 | $health_manager_service_name = 'octavia-health-manager' 9 | $housekeeping_service_name = 'octavia-housekeeping' 10 | $driver_agent_service_name = 'octavia-driver-agent' 11 | $client_package_name = 'python3-octaviaclient' 12 | $ovn_provider_package_name = 'python3-ovn-octavia-provider' 13 | $user = 'octavia' 14 | $group = 'octavia' 15 | 16 | case $facts['os']['family'] { 17 | 'RedHat': { 18 | $common_package_name = 'openstack-octavia-common' 19 | $api_package_name = 'openstack-octavia-api' 20 | $worker_package_name = 'openstack-octavia-worker' 21 | $health_manager_package_name = 'openstack-octavia-health-manager' 22 | $housekeeping_package_name = 'openstack-octavia-housekeeping' 23 | $driver_agent_package_name = 'openstack-octavia-driver-agent' 24 | $octavia_wsgi_script_path = '/var/www/cgi-bin/octavia' 25 | $octavia_wsgi_script_source = '/usr/bin/octavia-wsgi' 26 | $python_redis_package_name = 'python3-redis' 27 | $python_kazoo_package_name = 'python3-kazoo' 28 | $python_etcd3gw_package_name = 'python3-etcd3gw' 29 | } 30 | 'Debian': { 31 | $common_package_name = 'octavia-common' 32 | $api_package_name = 'octavia-api' 33 | $worker_package_name = 'octavia-worker' 34 | $health_manager_package_name = 'octavia-health-manager' 35 | $housekeeping_package_name = 'octavia-housekeeping' 36 | $driver_agent_package_name = 'octavia-driver-agent' 37 | $octavia_wsgi_script_path = '/usr/lib/cgi-bin/octavia' 38 | $octavia_wsgi_script_source = '/usr/bin/octavia-wsgi' 39 | $python_redis_package_name = 'python3-redis' 40 | $python_kazoo_package_name = 'python3-kazoo' 41 | $python_etcd3gw_package_name = 'python3-etcd3gw' 42 | } 43 | default: { 44 | fail("Unsupported osfamily: ${facts['os']['family']}") 45 | } 46 | 47 | } # Case $facts['os']['family'] 48 | } 49 | -------------------------------------------------------------------------------- /manifests/policy.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::policy 2 | # 3 | # Configure the octavia policies 4 | # 5 | # === Parameters 6 | # 7 | # [*enforce_scope*] 8 | # (Optional) Whether or not to enforce scope when evaluating policies. 9 | # Defaults to $facts['os_service_default']. 10 | # 11 | # [*enforce_new_defaults*] 12 | # (Optional) Whether or not to use old deprecated defaults when evaluating 13 | # policies. 14 | # Defaults to $facts['os_service_default']. 15 | # 16 | # [*policies*] 17 | # (Optional) Set of policies to configure for octavia 18 | # Example : 19 | # { 20 | # 'octavia-context_is_admin' => { 21 | # 'key' => 'context_is_admin', 22 | # 'value' => 'true' 23 | # }, 24 | # 'octavia-default' => { 25 | # 'key' => 'default', 26 | # 'value' => 'rule:admin_or_owner' 27 | # } 28 | # } 29 | # Defaults to empty hash. 30 | # 31 | # [*policy_path*] 32 | # (Optional) Path to the octavia policy.yaml file 33 | # Defaults to /etc/octavia/policy.yaml 34 | # 35 | # [*policy_default_rule*] 36 | # (Optional) Default rule. Enforced when a requested rule is not found. 37 | # Defaults to $facts['os_service_default']. 38 | # 39 | # [*policy_dirs*] 40 | # (Optional) Path to the octavia policy folder 41 | # Defaults to $facts['os_service_default'] 42 | # 43 | # [*purge_config*] 44 | # (optional) Whether to set only the specified policy rules in the policy 45 | # file. 46 | # Defaults to false. 47 | # 48 | class octavia::policy ( 49 | $enforce_scope = $facts['os_service_default'], 50 | $enforce_new_defaults = $facts['os_service_default'], 51 | Hash $policies = {}, 52 | $policy_path = '/etc/octavia/policy.yaml', 53 | $policy_default_rule = $facts['os_service_default'], 54 | $policy_dirs = $facts['os_service_default'], 55 | Boolean $purge_config = false, 56 | ) { 57 | 58 | include octavia::deps 59 | include octavia::params 60 | 61 | $policy_parameters = { 62 | policies => $policies, 63 | policy_path => $policy_path, 64 | file_user => 'root', 65 | file_group => $::octavia::params::group, 66 | file_format => 'yaml', 67 | purge_config => $purge_config, 68 | tag => 'octavia', 69 | } 70 | 71 | create_resources('openstacklib::policy', { $policy_path => $policy_parameters }) 72 | 73 | # policy config should occur in the config block also. 74 | Anchor['octavia::config::begin'] 75 | -> Openstacklib::Policy[$policy_path] 76 | -> Anchor['octavia::config::end'] 77 | 78 | oslo::policy { 'octavia_config': 79 | enforce_scope => $enforce_scope, 80 | enforce_new_defaults => $enforce_new_defaults, 81 | policy_file => $policy_path, 82 | policy_default_rule => $policy_default_rule, 83 | policy_dirs => $policy_dirs, 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /manifests/quota.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::quota 2 | # 3 | # Setup and configure octavia quotas. 4 | # 5 | # === Parameters: 6 | # 7 | # [*default_load_balancer_quota*] 8 | # (optional) Default per project load balancer quota 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*default_listener_quota*] 12 | # (optional) Default per project listener quota. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*default_member_quota*] 16 | # (optional) Default per project member quota. 17 | # Defaults to $facts['os_service_default'] 18 | # 19 | # [*default_pool_quota*] 20 | # (optional) Default per project pool quota. 21 | # Defaults to $facts['os_service_default'] 22 | # 23 | # [*default_health_monitor_quota*] 24 | # (optional) Default per project health monitor quota. 25 | # Defaults to $facts['os_service_default'] 26 | # 27 | # [*default_l7policy_quota*] 28 | # (optional) Default per project l7policy quota. 29 | # Defaults to $facts['os_service_default'] 30 | # 31 | # [*default_l7rule_quota*] 32 | # (optional) Default per project l7rule quota. 33 | # Defaults to $facts['os_service_default'] 34 | # 35 | class octavia::quota ( 36 | $default_load_balancer_quota = $facts['os_service_default'], 37 | $default_listener_quota = $facts['os_service_default'], 38 | $default_member_quota = $facts['os_service_default'], 39 | $default_pool_quota = $facts['os_service_default'], 40 | $default_health_monitor_quota = $facts['os_service_default'], 41 | $default_l7policy_quota = $facts['os_service_default'], 42 | $default_l7rule_quota = $facts['os_service_default'], 43 | ) { 44 | 45 | include octavia::deps 46 | 47 | octavia_config { 48 | 'quotas/default_load_balancer_quota': value => $default_load_balancer_quota; 49 | 'quotas/default_listener_quota': value => $default_listener_quota; 50 | 'quotas/default_member_quota': value => $default_member_quota; 51 | 'quotas/default_pool_quota': value => $default_pool_quota; 52 | 'quotas/default_health_monitor_quota': value => $default_health_monitor_quota; 53 | 'quotas/default_l7policy_quota': value => $default_l7policy_quota; 54 | 'quotas/default_l7rule_quota': value => $default_l7rule_quota; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /manifests/reports.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::reports 2 | # 3 | # Configure oslo_reports options 4 | # 5 | # === Parameters 6 | # 7 | # [*log_dir*] 8 | # (Optional) Path to a log directory where to create a file 9 | # Defaults to $facts['os_service_default'] 10 | # 11 | # [*file_event_handler*] 12 | # (Optional) The path to a file to watch for changes to trigger the reports. 13 | # Defaults to $facts['os_service_default'] 14 | # 15 | # [*file_event_handler_interval*] 16 | # (Optional) How many seconds to wait between pools when file_event_handler 17 | # is set. 18 | # Defaults to $facts['os_service_default'] 19 | # 20 | class octavia::reports( 21 | $log_dir = $facts['os_service_default'], 22 | $file_event_handler = $facts['os_service_default'], 23 | $file_event_handler_interval = $facts['os_service_default'], 24 | ) { 25 | 26 | include octavia::deps 27 | 28 | oslo::reports { 'octavia_config': 29 | log_dir => $log_dir, 30 | file_event_handler => $file_event_handler, 31 | file_event_handler_interval => $file_event_handler_interval, 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /manifests/roles.pp: -------------------------------------------------------------------------------- 1 | # == Class: octavia::roles 2 | # 3 | # Configure the octavia roles 4 | # 5 | # === Parameters 6 | # 7 | # [*role_names*] 8 | # (optional) Create keystone roles to comply with Octavia policies. 9 | # Defaults to ['load-balancer_observer', 'load-balancer_global_observer', 10 | # 'load-balancer_member', 'load-balancer_quota_admin', 'load-balancer_admin', 11 | # 'admin'] 12 | # 13 | class octavia::roles ( 14 | $role_names = [ 15 | 'load-balancer_observer', 16 | 'load-balancer_global_observer', 17 | 'load-balancer_member', 18 | 'load-balancer_quota_admin', 19 | 'load-balancer_admin', 20 | 'admin' 21 | ] 22 | ) { 23 | if $role_names { 24 | keystone_role { $role_names: 25 | ensure => present 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /manifests/service_auth.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Configures credentials for service to service communication. 3 | # 4 | # === Parameters: 5 | # 6 | # [*password*] 7 | # (required) Password for user 8 | # 9 | # [*auth_url*] 10 | # (Optional) Keystone Authentication URL 11 | # Defaults to 'http://localhost:5000' 12 | # 13 | # [*username*] 14 | # (Optional) User for accessing neutron and other services. 15 | # Defaults to 'octavia' 16 | # 17 | # [*project_name*] 18 | # (Optional) Tenant for accessing neutron and other services 19 | # Defaults to 'services' 20 | # 21 | # [*user_domain_name*] 22 | # (Optional) keystone user domain 23 | # Defaults to 'Default' 24 | # 25 | # [*project_domain_name*] 26 | # (Optional) keystone project domain 27 | # Defaults to 'Default' 28 | # 29 | # [*system_scope*] 30 | # (Optional) Scope for system operations. 31 | # Defaults to $facts['os_service_default'] 32 | # 33 | # [*auth_type*] 34 | # (Optional) keystone authentication type 35 | # Defaults to 'password' 36 | # 37 | # [*region_name*] 38 | # (Optional) The region in which the identity server can be found. 39 | # Defaults to $facts['os_service_default']. 40 | # 41 | class octavia::service_auth ( 42 | $password, 43 | $auth_url = 'http://localhost:5000', 44 | $username = 'octavia', 45 | $project_name = 'services', 46 | $user_domain_name = 'Default', 47 | $project_domain_name = 'Default', 48 | $system_scope = $facts['os_service_default'], 49 | $auth_type = 'password', 50 | $region_name = $facts['os_service_default'], 51 | ) { 52 | 53 | include octavia::deps 54 | 55 | if is_service_default($system_scope) { 56 | $project_name_real = $project_name 57 | $project_domain_name_real = $project_domain_name 58 | } else { 59 | $project_name_real = $facts['os_service_default'] 60 | $project_domain_name_real = $facts['os_service_default'] 61 | } 62 | 63 | octavia_config { 64 | 'service_auth/auth_url' : value => $auth_url; 65 | 'service_auth/username' : value => $username; 66 | 'service_auth/project_name' : value => $project_name_real; 67 | 'service_auth/password' : value => $password, secret => true; 68 | 'service_auth/user_domain_name' : value => $user_domain_name; 69 | 'service_auth/project_domain_name' : value => $project_domain_name_real; 70 | 'service_auth/system_scope' : value => $system_scope; 71 | 'service_auth/auth_type' : value => $auth_type; 72 | 'service_auth/region_name' : value => $region_name; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /manifests/wsgi/uwsgi.pp: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2021 Thomas Goirand 3 | # 4 | # Author: Thomas Goirand 5 | # 6 | # == Class: octavia::wsgi::uwsgi 7 | # 8 | # Configure the UWSGI service for Octavia API. 9 | # 10 | # == Parameters 11 | # 12 | # [*processes*] 13 | # (Optional) Number of processes. 14 | # Defaults to $facts['os_workers']. 15 | # 16 | # [*threads*] 17 | # (Optional) Number of threads. 18 | # Defaults to 32. 19 | # 20 | # [*listen_queue_size*] 21 | # (Optional) Socket listen queue size. 22 | # Defaults to 100 23 | # 24 | class octavia::wsgi::uwsgi ( 25 | $processes = $facts['os_workers'], 26 | $threads = 32, 27 | $listen_queue_size = 100, 28 | ){ 29 | 30 | include octavia::deps 31 | 32 | if $facts['os']['name'] != 'Debian'{ 33 | warning('This class is only valid for Debian, as other operating systems are not using uwsgi by default.') 34 | } 35 | 36 | octavia_api_uwsgi_config { 37 | 'uwsgi/processes': value => $processes; 38 | 'uwsgi/threads': value => $threads; 39 | 'uwsgi/listen': value => $listen_queue_size; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "OpenStack Contributors", 3 | "dependencies": [ 4 | { 5 | "name": "puppetlabs/inifile", 6 | "version_requirement": ">=2.0.0 <7.0.0" 7 | }, 8 | { 9 | "name": "puppetlabs/stdlib", 10 | "version_requirement": ">=5.0.0 <10.0.0" 11 | }, 12 | { 13 | "name": "openstack/keystone", 14 | "version_requirement": ">=26.0.0 <27.0.0" 15 | }, 16 | { 17 | "name": "openstack/nova", 18 | "version_requirement": ">=26.0.0 <27.0.0" 19 | }, 20 | { 21 | "name": "openstack/openstacklib", 22 | "version_requirement": ">=26.0.0 <27.0.0" 23 | }, 24 | { 25 | "name": "openstack/oslo", 26 | "version_requirement": ">=26.0.0 <27.0.0" 27 | }, 28 | { 29 | "name": "puppet/ssh_keygen", 30 | "version_requirement": ">=2.0.1 <7.0.0" 31 | } 32 | ], 33 | "description": "Installs and configures OpenStack Octavia.", 34 | "issues_url": "https://bugs.launchpad.net/puppet-octavia", 35 | "license": "Apache-2.0", 36 | "name": "openstack-octavia", 37 | "operatingsystem_support": [ 38 | { 39 | "operatingsystem": "Debian", 40 | "operatingsystemrelease": [ 41 | "12" 42 | ] 43 | }, 44 | { 45 | "operatingsystem": "RedHat", 46 | "operatingsystemrelease": [ 47 | "9" 48 | ] 49 | }, 50 | { 51 | "operatingsystem": "CentOS", 52 | "operatingsystemrelease": [ 53 | "9" 54 | ] 55 | }, 56 | { 57 | "operatingsystem": "Ubuntu", 58 | "operatingsystemrelease": [ 59 | "24.04" 60 | ] 61 | } 62 | ], 63 | "project_page": "https://launchpad.net/puppet-octavia", 64 | "requirements": [ 65 | { 66 | "name": "puppet", 67 | "version_requirement": ">= 7.0.0 < 9.0.0" 68 | } 69 | ], 70 | "source": "https://opendev.org/openstack/puppet-octavia.git", 71 | "summary": "Puppet module for OpenStack Octavia", 72 | "version": "26.0.0" 73 | } 74 | -------------------------------------------------------------------------------- /releasenotes/notes/add-amp-active-retries-amp-active-wait-sec-55a0d5c3c08dd866.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added parameters octavia::controller::amp_active_retries and 5 | octavia::controller::amp_active_wait_sec. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-amp-secgroup-list-d3dcc292465b0fe7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - support for configuring amp_secgroup_list has been added which allows to 4 | configure the security groups to be setup on the amphorae 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-amp_image_owner_id-to-controller-11dca7ae392d1e17.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Support amp_image_owner_id setting in octavia controller 5 | Set using ``octavia::controller::amp_image_owner_id``` 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-amphora-project-name-0afeebd83e114328.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds 'amp_project_name' to configure project access to the nova flavor for creating amphorae. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-api-enable_proxy_headers_parsing-e04ae349155978bc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::api::enable_proxy_headers_parsing`` parameter was added 5 | to support ``enable_proxy_headers_parsing`` parameter in Octavia. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-api-handler-a935135d2345ef23.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add new parameter "api_handler", the handler that the API 4 | communicates with. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-auth-strategy-99518a6623bcb665.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - support for configuring auth_strategy for the Octavia api service has 4 | been added and the keystone authtoken support properly initialized. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-build-active-retries-and-port-detach-timeout-parameters-5dc21de1a97699ef.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Added build_active_retries and port_detach_timeout parameters. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-certificates-configuration-6e956bd99e5c2a2b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - You can now configure the paths for the certificates which are used to the 4 | public key infrastructure system which is used to authenticate to amphorae. -------------------------------------------------------------------------------- /releasenotes/notes/add-connection-logging-parameter-d92bc438db6f51bb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Added the "connection_logging" parameter. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-connection-retry-params-61cf6df5afab51dc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds connection_max_retries and connection_retry_interval to control retry 5 | behavior when the contacting the amphora. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-controller_ip_port_list-dd70205aa2cc8182.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added octavia::controller::controller_ip_port_list which can be used to configure 5 | the [health_manager]/controller_ip_port_list configuration option. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-driver-agent-71b506e3d81e92fe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added octavia::driver_agent for configuring driver agent properties. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-enable-ssh-access-param-1f2454d898b9b59b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added 'octavia::worker::enable_ssh_access' parameter to enable 5 | configuring without an OpenStack SSH key. Note that when set to false, 6 | configuration of SSH key related properties is disabled. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-health_manager-worker-default-6259b601e01db4f3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add new parameter, "workers" to health_manager which 4 | defaults to $::os_workers 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-log-offloading-1a7836381de33644.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Added parameters to enable amphora log offloading. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-octavia-client-f5421024b0a945f0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add support of configuring octavia client. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-octavia-client-red-hat-family-4188177cb4ebe503.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Defined Octavia client package name for Red Hat family. 5 | python-octaviaclient is being packaged starting in RHOSP 13, 6 | RDO Queens and Fedora 28. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-octavia-quota-class-7d786b98740f85a8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add a new class octavia::quota to manage the quota settings in Octavia. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-openstackclient-client-ad889aef4a5c7322.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add openstackclient installation to the client class. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-ovn-nb-connection-config-474ee0bdfa307fb6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Adds octavia::api::ovn_nb_connection to configure ovn nb connection string 4 | for OVN Provider driver. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-ovn-provider-71b506e3d81e92fe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added octavia::provider::ovn for configuring OVN driver properties. 5 | deprecations: 6 | - | 7 | octavia::api::ovn_nb_connection is now deprecated and will be removed in the 8 | future release. Please use octavia::provider::ovn::ovn_nb_connection instead. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/add-pool_timeout-option-for-db-9130bf45e981c845.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the pool_timeout option for configuring oslo.db. This will 5 | configure this value for pool_timeout with SQLAlchemy. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-provider-driver-config-9f5352879efe3f9d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added octavia::api::provider_drivers and 5 | octavia::api::default_provider_driver configuration to support configuring 6 | different load balancer drivers in octavia. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-roles-for-octavia-2207bc1adea61c55.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added `octavia::roles::role_names` parameter to enable creation of the 5 | keystone roles supported by the Octavia API. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-service-auth-configuration-f70310c15b15443c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add support for configuring 'service_auth' section parameters in octavia. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-service-auth-region_name-48573c729f77a6b7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new octavia::service_auth::region_name parameter was added to specify 5 | keystone region where we expect service auth indentity is created 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-service_description-option-b1f36384181629be.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the service_description option to config description 5 | of the service. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-sshkey-gen-management-d76f17ed3f6056b9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Support for configuring ssh key pair generation for 4 | amphora to use. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-use_journal-option-for-logging-9f95c7513816de6f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the use_journal option for configuring oslo.log. This will enable 5 | passing the logs to journald. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-vrrp-keepalived-params-81f235f8cc411c42.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Added Keepalived VRRP parameters. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-work-driver-7097e125fccb11b5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Added configuration for amphora_driver, compute_driver 4 | and network_driver 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-wsgi-script-args-1129563527a3e618.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | It is now possible to specify `octavia::wsgi::apache::wsgi_script_dir` 5 | and `octavia::wsgi::apache::wsgi_script_source` to override operating 6 | system defaults. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add_db_sync_timeout-8b8cbf569af9d917.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Adds db_sync_timeout parameter to db sync. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add_failover_threshold-913a4325e540f897.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add new parameter ``failover_threshold`` to the ``octavia::health_manager`` 5 | class. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add_messaging_default_parameters-8a235ef98135d357.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add new parameter "control_exchange", the default exchange under 4 | which topics are scoped. May be overridden by an exchange name 5 | specified in the transport_url option. 6 | - Add new parameter "rpc_response_timeout", seconds to wait for a 7 | response from a call 8 | -------------------------------------------------------------------------------- /releasenotes/notes/add_mysql_enable_ndb-option-9f3a4bef514e040d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add mysql_enable_ndb parameter to select mysql storage engine. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add_rabbit_kombu_options-b446553d924dc219.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the kombu_failover_strategy option for configuring oslo.messaging.rabbit. 5 | This will determines how the next RabbitMQ node is chosen in case the one we 6 | are currently connected to becomes unavailable. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add_watch_log_file-option-ba1a0d5eaa8182f6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::logging::watch_log_file`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/agent_request_read_timeout-66a1de2c273fd4c8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::controller::agent_read_timeout`` parameter has been 5 | added. This paraemeter controls the ``[amphora_agent] agent_read_timeout`` 6 | option in octavia.conf. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/agent_tls_protocol-6d161f6c693ca090.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::controller::agent_tls_protocol`` parameter has been 5 | added. This parameter controls the [amphora_agent] agent_tls_protocol`` 6 | option in octavia.conf. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/allow_ping_health_monitors-3f00c296714b663b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added parameter ``allow_ping_health_monitors`` to the ``octavia::api`` class 5 | -------------------------------------------------------------------------------- /releasenotes/notes/amphora-log-offloading-opts-4aac954e374e75ff.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::controller`` class now supports the following parameters, 5 | to customize behavior of the log offloading feature. 6 | 7 | - ``log_protocol`` 8 | - ``log_retry_count`` 9 | - ``log_retry_interval`` 10 | - ``log_queue_size`` 11 | - ``logging_template_override`` 12 | -------------------------------------------------------------------------------- /releasenotes/notes/amphora_delete-opts-187baf4230e484fb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::controller`` class now supports the following two new 5 | parameters. 6 | 7 | - ``amphora_delete_retries`` 8 | - ``amphora_delete_retry_interval`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/amqp_auto_delete-2a8027b3f6ca4bc6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add a new ``amqp_auto_delete`` parameter, so that transient queues are 5 | automatically deleted. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/apache-headers-66a08f8feb62208d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::wsgi::apache`` class now supports customizing 5 | request/response headers added by apache. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/api-allow_prometheus_listeners-827a53c448d24234.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::api::allow_prometheus_listeners`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/api-allow_tls_terminated_listeners-5555b0b3bc8c5313.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameter octavia::api::allow_tls_terminated_listeners which can 5 | be used to set the allow_tls_terminated_listeners config option. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/api-manage-service-3a54c606e08ee623.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fix the `manage_service` parameter for the api class. If `manage_service` 5 | is set to false then the octavia-api service will not be defined in puppet 6 | allowing the user to manage the service themselves or elsewhere. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/api-tls-params-48cefc42aee491ab.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``octavia::api`` class. 5 | These parameters allows customizing the same parameters in 6 | the ``[api_setting]`` section. 7 | 8 | - ``default_listener_ciphers`` 9 | - ``default_pool_ciphers`` 10 | - ``tls_cipher_prohibit_list`` 11 | - ``default_listener_tls_versions`` 12 | - ``default_pool_tls_versions`` 13 | - ``minimum_tls_version`` 14 | -------------------------------------------------------------------------------- /releasenotes/notes/api-v1-v2-options-393e026d4d22b94d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameters octavia::api::api_v1_enabled and api_v2_enabled that 5 | can be used for enable/disable the API versions. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/audit-opts-1cb6a5b4058f8469.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::audit`` class has been added. This class manages options 5 | of the audit middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/authtoken_manage_memcache_package-88dca510e70ef1e1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Passes parameter to keystone authtoken define to manage python-memcache package install. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1797130-789318b2dff121d3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Listeners default timeouts can be set by config in section haproxy_amphora: 5 | 6 | * `timeout_client_data`: Frontend client inactivity timeout 7 | * `timeout_member_connect`: Backend member connection timeout 8 | * `timeout_member_data`: Backend member inactivity timeout 9 | * `timeout_tcp_inspect`: Time to wait for TCP packets for content inspection 10 | 11 | The value for all of these options is expected to be in milliseconds. -------------------------------------------------------------------------------- /releasenotes/notes/build_rate_limit-7da036d02e5ccea8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Support for the ``[haproxy_amphora] build_rate_limit`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/build_retry_interval-96aa9efb9689362d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::controller::build_retry_interval`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/centos-9-support-38896bfa2323fb75.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now this module supports CentOS 9 and Red Hat Enterprise Linux 9. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/certificate-folder-after-pkg-802703c4a8d646b3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixed a bug where certificate folders that depended on paths provided 5 | by packages failed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/certificate-no-diff-4e4d156963752b6d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | security: 3 | - | 4 | Certificate changes no longer shows diffs in output. 5 | fixes: 6 | - | 7 | Fixed a bug where certificate changes would show the diffs. 8 | Certificate are now considered secrets and not displayed. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/certificate_source-e66d13973d818351.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add possibility to add cert/key/ca as source instead of content parameter 5 | -------------------------------------------------------------------------------- /releasenotes/notes/certificates-options-45294bca5186878e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameter cert_generator, cert_manager, region_name and endpoint_type 5 | to the octavia::certificates class that configures the certificates section in 6 | the octavia.conf file. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/certificates-opts-4913f5eb2ecfca0c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::certificates`` class now supports the following parameters. 5 | 6 | - ``barbican_auth`` 7 | - ``service_name`` 8 | - ``endpoint`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/change-amphora-flavor-property-178cb1a154af80ba.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Change amphora flavor is_public property from true to false. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/change-oslo-policy-to-yaml-e4efbaeafa2fbb1c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - Octavia switched oslo.policy from JSON to YAML format output. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/change-service-type-c7bea5ac392fd0d1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | This patch alters the default keystone service type from "octavia" to "load-balancer" to 5 | sync with https://review.opendev.org/#/c/450916/. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/cleanup-controler-opts-from-octavia-workers-f06b45dd705eb875.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following deprecated parameters of the ``octavia::worker`` class have 5 | been removed. Use the same parameters in the ``octavia::controller`` class. 6 | 7 | - ``amp_flavor_id`` 8 | - ``amp_image_tag`` 9 | - ``amp_secgroup_list`` 10 | - ``amp_boot_network_list`` 11 | - ``loadbalancer_topology`` 12 | - ``amphora_driver`` 13 | - ``compute_driver`` 14 | - ``network_driver`` 15 | - ``amp_ssh_key_name`` 16 | - ``enable_ssh_access`` 17 | - ``timeout_client_data`` 18 | - ``timeout_member_connect`` 19 | - ``timeout_member_data`` 20 | - ``timeout_tcp_inspect`` 21 | -------------------------------------------------------------------------------- /releasenotes/notes/client-ca-b05d5a5e4a93bfe3.yaml: -------------------------------------------------------------------------------- 1 | features: 2 | - | 3 | Added new parameter client_ca and client_data_data to octavia::certificates. 4 | These can be used to separate the ca_certificate/server_ca and client_ca used 5 | which is something you want to do in production environment to avoid a compromised 6 | Amphora being able to connect to the other running amphoras. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/compute-877faaf860156a97.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::compute`` class has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/configure_service-6b3c1d06ebc42afa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::keystone::auth::configure_service`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/controller-workers-947eada7f23b5da9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new parameter octavia::worker::workers that can be used to set the 5 | number of worker processes. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/convert-provider_drivers-922ba756396e154c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::api::provider_drivers`` parameter now supports array or hash 5 | value, and the given value is conveted to correctly formatted string when 6 | being put into octavia.conf. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/cors-0a1240b26cf2b8b2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::cors`` class has been added. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/db-commit-retries-6143ddb798d0c1c7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::controller`` class now supports the tunable parameters to 5 | customize database coomit retry attempts. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/db-init-7a0087aca12e0530.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added all databases parameters in octavia::db in octavia::init. 5 | upgrade: 6 | - | 7 | The octavia::db class should now be considered a private class. 8 | You should set all your database parameters in the init class. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/default-domain-77d3a64d09ee42ea.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | issues: 3 | - | 4 | Keystone v2.0 API was removed so we need to set a default value 5 | for user_domain_name and project_domain name, which will be 6 | Default as it is already in some other classes in modules. 7 | 8 | -------------------------------------------------------------------------------- /releasenotes/notes/default-log_file-2324105c32200c85.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Default value of ``octavia::logging::log_file`` has been changed and now 5 | it defaults to service default, to make sure each octavia daemon uses 6 | a specific log file. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/default_connection_limit-4006e77c67997e01.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::controller::default_connection_limit`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-health_manage-workers-e7fa2378afed538d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``octavia::health_manager::workers`` parameter has been deprecated. 5 | Use the ``health_update_threads`` parameter and 6 | the ``stats_update_threads`` parameter instead. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-rabbit_heartbeat_in_pthread-d18828a91f93d95f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``octavia::rabbit_heartbeat_in_pthread`` parameter has been deprecated 5 | and will be removed in the future release. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-spares-pool-feature-a4f19adc1b454904.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following parameters in the ``octavia::housekeeping`` class have been 5 | deprecated and will be removed in a future release. 6 | 7 | - ``spare_check_interval`` 8 | - ``spare_amphora_pool_size`` 9 | 10 | upgrade: 11 | - | 12 | The ``octavia::housekeeping::spare_amphorae_pool_size`` parameter has been 13 | removed. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-watch_log_file-cef86f1b04110ace.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``octavia::logging::watch_log_file`` parameter has been deprecated. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_allow_insecure_clients-option-8a20653486eba410.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - allow_insecure_clients option is now deprecated for removal, the 4 | parameter has no effect. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_auth_uri_parameter-8eb7b53f730ada01.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - auth_uri is deprecated and will be removed in a future release. 4 | Please use www_authenticate_uri instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_database_min_pool_size-option-9dfa542ba4fb4200.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - database_min_pool_size option is now deprecated for removal, the 4 | parameter has no effect. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_database_options-4109325de40ec4cb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following options have been deprecated, as those options have been 5 | moved to octavia::db class. 6 | 7 | - ``octavia::database_connection`` 8 | - ``octavia::database_idle_timeout`` 9 | - ``octavia::database_max_overflow`` 10 | - ``octavia::database_max_pool_size`` 11 | - ``octavia::database_max_retries`` 12 | - ``octavia::database_retry_interval`` 13 | - ``octavia::database_pool_timeout`` 14 | - ``octavia::database_db_max_retries`` 15 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_ensure_package_parameter-71358a34df982376.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - octavia::ensure_package is now deprecated and will be removed in the 4 | future release. Please use octavia::package_ensure instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_idle_timeout_parameter-91484626097ef011.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - database_idle_timeout is deprecated and will be removed in a future 4 | release. Please use database_connection_recycle_time instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_pki_related_parameters-8f8279bb51ec2b19.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - check_revocations_for_cached option is now deprecated for removal, the 4 | parameter has no effect. 5 | - hash_algorithms option is now deprecated for removal, the parameter 6 | has no effect. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_revocation_cache_time_parameter-a1812c70688d809e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - revocation_cache_time option is now deprecated for removal, the 4 | parameter has no effect. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_rpc_backend_parameter-d0a8b677bcf5b39e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - octavia::rpc_backend is deprecated and will be removed in a future 4 | release. Please use octavia::default_transport_url instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_signing_dir_parameter-1a34ef813a913548.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - signing_dir option is now deprecated for removal, the 4 | parameter has no effect. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate_spare_amphorae_pool_size_name-f7b3324f8fcf9670.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - octavia::housekeeping::spare_amphorae_pool_size is deprecated and will be removed in the future release. 4 | Please use octavia::housekeeping::spare_amphora_pool_size instead. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/dont-include-logging-init-c86c2eca3dbeee40.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | octavia::logging is now not included in init class by default. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/dont-initialize-db-in-init-85ac6f87576814d6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - In previous releases, ::octavia::db was included in ::octavia even though 4 | it isn't required by all users of that class. It has been removed from 5 | ::octavia and added to ::octavia::api where it is required. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/driver-agent-redhat-a36354fb074bf05c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::driver_agent`` class now supports managing the package and 5 | the service required to run the ``octavia-driver-agent`` process in Cent OS 6 | and RHEL. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-fedora-85e3a9176496c3e1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Fedora is no longer supported. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/enable_cancel_on_failover-d9c143d33af343dc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::rabbit_enable_cancel_on_failover`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/enable_provider_drivers-db3b1fb5f07c4140.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``octavia::api::provider_drivers`` parameter has been deprecated in 5 | favor of the new ``octavia::api::enabled_provider_drivers`` parameter. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/event_notifications-81ee1ce39b3f2c76.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::controller::event_notifications`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/executor_thread_pool_size-4fe786c1a3896dfa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::executor_thread_pool_size`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/external_install_mgmt_hook-1e652961711571a3.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/fix-generated-server_certs_key_passphrase-in-spec-524a44297ec76bd0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - The passphrase for config option 'server_certs_key_passphrase', is used as 4 | a Fernet key in Octavia and thus must be 32 chars long. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/flavor-default-project-a931f9e7649c531c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Default value of the ``octavia::worker::amp_project_name`` parameter has 5 | been changed and now the flavor is created in the ``services`` project 6 | by default. Update the parameter to ensure the flavor is created in 7 | the project which the octavia service user belongs to. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/generate-server_certs_key_passphrase-45d716a67b0e83b3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - The passphrase for config option 'server_certs_key_passphrase', that was 4 | recently added to Octavia, will now be auto-generated. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/haproxy_amphora-connection-opts-abb413396c1d98b8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``octavia::controller`` 5 | class. 6 | 7 | - ``active_connection_max_retries`` 8 | - ``active_connection_retry_interval`` 9 | - ``failover_connection_max_retries`` 10 | - ``failover_connection_retry_interval`` 11 | -------------------------------------------------------------------------------- /releasenotes/notes/hc-enable_by_file_paths-a26a14bb13665e0e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::healthcheck::enable_by_file_paths`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/health_manager-tunables-a6fc91c0c1af0e15.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``octavia::health_manager`` 5 | class. 6 | 7 | - ``failover_threads`` 8 | - ``hearteat_timeout`` 9 | - ``health_check_interval`` 10 | - ``sock_rlimit`` 11 | -------------------------------------------------------------------------------- /releasenotes/notes/healthcheck-50bfeb1b2523b307.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::api::healthcheck_enabled`` parameter has been added. 5 | 6 | - | 7 | The new ``octavia::healthcheck`` class has been added. This class manages 8 | parameters of healthcheck middlware in oslo.middleware. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/healthcheck-allowed_source_ranges-977eb6fc2b6c93ba.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::healthcheck::allowed_source_ranges`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/healthcheck-ignore_proxied_requests-469c9920d10ce6b4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::healthcheck::ignore_proxied_requests`` parameter has 5 | been added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/healthcheck_refresh_interval-861418bae80c15d5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::api::healthcheck_refresh_interval`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/httpd-logs-piped-syslog-a6a544a20b4913cd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added parameters for advanced configuration of httpd access and error log 5 | destinations including piped logging and syslog (see `mod_syslog`). Note 6 | that mod_syslog requires Apache2 >= 2.5.0. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/image_driver-37560e3159ece607.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::controller::image_driver`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/jobboard-etcd-backend-484c6173cd698fa4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::task_flow`` class now supports configuring jobboard etcd 5 | backend. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/jobboard_backend_username-bb192a3a436c75c6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::task_flow::jobboard_backend_username`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/jobboard_redis_backend_db-f80010244e87b2c9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::task_flow::jobboard_redis_backend_db`` parameter has 5 | been added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/keystone-authtoken-interface-7d13b1d876b5d8b6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::keystone::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-28c5a0e20cd5bdd4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::keystone::authtoken::service_type`` parameter has been 5 | added to configure the service_type parameter in authtoken middleware. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/l7-default-quota-810c3475d7b3e795.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::quota`` class now supports the following two parameters. 5 | 6 | - ``default_l7policy_quota`` 7 | - ``default_l7rule_quota`` 8 | -------------------------------------------------------------------------------- /releasenotes/notes/log-json-98686537151bb119.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Expose use_json logging parameter, which enables JSON formatted logging. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/max_request_body_size-152d9e3efb95a859.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::api::max_request_body_size`` option has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/more-certificates-opts-b88e8a352b4851e5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::certificates`` class now supports the following two new 5 | parameters. 6 | 7 | - ``signing_digest`` 8 | - ``cert_validity_time`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/move-common-hm-opts-antelope-7bc5a6d57b672afa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following parameters of the ``octavia::health_manager`` class have been 5 | removed. 6 | 7 | - ``heartbeat_interval`` 8 | - ``heartbeat_key`` 9 | 10 | - | 11 | Now the ``octavia::controller::heartbeat_key`` parameter is required. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/move-common-hm-opts-dbaaa1b575e6ae1c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following parameters of the ``octavia::health_manager`` class have been 5 | deprecated. Use the same parameters of the ``octavia::controller`` class 6 | instead. 7 | 8 | - ``heartbeat_interval`` 9 | - ``heartbeat_key`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/networking-cleanup-26b95cf9d6d51487.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::controller::port_detach_timeout`` parameter has been 5 | removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/networking-d136ed112f3cdfe8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::networking`` class has been added. 5 | 6 | deprecations: 7 | - | 8 | The ``octavia::controller::port_detach_timeout`` parameter has been 9 | deprecated in favor of the new ``octavia::networking::port_detach_timeout`` 10 | parameter. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/neutron-sdk-opts-eda1fae468d8bf50.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::neutron`` class now supports basic keystoneauth options. 5 | 6 | deprecations: 7 | - | 8 | The following parameters of the ``octavia::neutron`` class have been 9 | deprecated. 10 | 11 | - ``endpoint`` 12 | - ``endpoint_type`` 13 | -------------------------------------------------------------------------------- /releasenotes/notes/notification-retry-9c8c2a29fcc18867.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::notification_retry`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/octaiva-api-pagination_max_limit-d179a43fa2234930.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octaiva::api::pagination_max_limit`` parameter has been 5 | added to configure the pagination_max_limit parameter in octavia. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-api-wsgi-2d9469478fd2cd28.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new class octavia::wsgi::apache, you can now run the API under Apache 5 | with mod_wsgi. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-driver-agent-8b61e27e91e49b59.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now the ``octavia::driver_agent`` class can manage the package and 5 | the service required to run the octavia-driver-agent service. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-glance-37d48b9829d6ca8d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new octavia::glance class that can be used to configure the glance section 5 | in octavia.conf 6 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-neutron-7d3d9cc0e95ecb11.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new octavia::neutron class that can be used to configure the neutron section 5 | in octavia.conf 6 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-neutron-class-a4fd7a5c86dab7d5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::neutron`` class is now required and atleast the ``password`` 5 | should be configured but you should verify that ``auth_url`` and other 6 | parameters is specified correctly. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-nova-0205d7406d58e871.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added new octavia::nova class that can be used to configure the nova section 5 | in octavia.conf 6 | -------------------------------------------------------------------------------- /releasenotes/notes/octavia-quota-default-2f256d6e40fd1510.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Now all parameters of the ``quota::class`` class are prefixed with 5 | ``defualt_``, to be consistent with the parameter names in Octavia. 6 | All exisitng parameters without the ``default_`` prefix are deprecated and 7 | will be removed in a future release. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/openstack_db_tag-825e070a8eda32b3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Add openstack-db tag to Exec that run db-sync. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/oslo-reports-469c44ae8dd3c863.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::reports`` class has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/oslo_policy-enforce_scope-97ad3dc14b829db2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::policy::enforce_scope`` parameter has been added to 5 | support the corresponding parameter in oslo.policy library. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/ovn-provider-package-af40f696662e7052.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Now the ``octavia::provider::ovn`` can manage the package required to use 5 | OVN Octavia provider. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/ovn-tunables-103622c80b71d03d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added to the ``octavia::provider::ovn`` 5 | class. 6 | 7 | - ``ovsdb_connection_timeout`` 8 | - ``ovsdb_retry_max_interval`` 9 | - ``ovsdb_probe_interval`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/ovnsb-params-e7bdca2b53465ed9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Support for the ``ovn_sb_*`` parameters has been added to 5 | the ``octavia::provider::ovn`` class. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/policy-dirs-e20f57e2b7987350.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | There is now a new policy_dirs parameter in the octavia::policy class, 5 | so one can set a custom path. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/policy-enforce_new_defaults-ca7f1e7e532fad43.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::policy::enforce_new_defaults`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/policy_default_rule-9a7ee88f25808fdc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::policy::policy_default_rule`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/policy_purge_config-3596771b095d31fe.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds new purge_config parameter. When set to true, the policy file is 5 | cleared during configuration process. This allows to remove any existing 6 | rules before applying them or clean the file when all policies got removed. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/puppet-8-e44e6614e05cedd1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | This module now officially supports Puppet 8. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/puppet4-mysql-func-2a3fa2c6b7e24554.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | This module now requires a puppetlabs-mysql version >= 6.0.0 5 | -------------------------------------------------------------------------------- /releasenotes/notes/quota-cleanup-255ebc9eb81c9a0d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following deprecated parameters of the ``octavia::quota`` class have 5 | been removed. 6 | 7 | - ``load_balancer_quota`` 8 | - ``listener_quota`` 9 | - ``member_quota`` 10 | - ``pool_quota`` 11 | - ``health_monitor_quota`` 12 | -------------------------------------------------------------------------------- /releasenotes/notes/rabbit_qos_prefetch_count-28487b2e87b5ac05.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::rabbit_qos_prefetch_count`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/rabbit_transient_queues_ttl-e128789222dee23c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new parameter ``rabbit_transient_queues_ttl`` has been added to the 5 | octavia class to configure how long transient queue should stay until 6 | they are automatically deleted. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/rabbit_transient_quorum_queue-7866f8e36097eaf9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::rabbit_transient_quorum_queue`` parameter has been 5 | added. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/rabbitmq-heartbeat-over-pthread-9ade0b50b7da0598.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Allow users to run the RabbitMQ heartbeat over a native python thread in the 5 | oslo.messaging RabbitMQ driver, by using the `rabbit_heartbeat_in_pthread` 6 | option in configuration. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/redis-sentinel-auth-and-ssl-92a5415f7f310ec0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following options have been added to the ``octavia::task_flow`` class. 5 | 6 | - ``jobboard_redis_sentinel_username`` 7 | - ``jobboard_redis_sentinel_password`` 8 | - ``jobboard_redis_sentinel_ssl_options`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/release-note-ubuntu-py3-ff9dcddda18683a6.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-amqp1-fff95d2280bd6669.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for amqp1 messaging driver has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-amqp_allow_insecure_clients-4498cb1826cc2624.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::amqp_allow_insecure_clients`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-api-ovn_nb_connection-2d85f0ece3db7576.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::api::ovn_nb_connection`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-api-provider_drivers-61afe0c19e9d6189.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated ``octavia::api::provider_drivers`` parameter has been 5 | removed. Use the ``enabled_provider_drivers`` parameter instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-auth-uri-4cd453c34ab04962.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated parameter auth_uri is now removed, please use www_authenticate_uri. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-centos-8-2c0dade02105f41b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | CentOS 8 Stream is no longer supported by this module. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-database-params-6af198c038340c34.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following parameters of the ``octavia`` class has been removed. 5 | 6 | - ``database_min_pool_size`` 7 | - ``database_connection`` 8 | - ``database_db_max_retries`` 9 | - ``database_idle_timeout`` 10 | - ``database_max_overflow`` 11 | - ``database_max_pool_size`` 12 | - ``database_max_retries`` 13 | - ``database_pool_timeout`` 14 | - ``database_retry_interval`` 15 | 16 | - | 17 | The ``database_min_pool_size`` parameter of the ``octavia::db`` class has 18 | been removed. 19 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-neutron-opts-7c661594cb70fcf5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following parameters of the ``octavia::neutron`` class have been 5 | removed. 6 | 7 | - ``endpoint`` 8 | - ``endpoint_type`` 9 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-rabbit-params-975b0c89b2ef85fc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated octavia::rpc_backend is now removed. Please use 5 | octavia::default_transport_url instead. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-event-streamer-driver-48a4bb259b4649a4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Parameter event_streamer_driver has been removed as part of Neutron LBaaS 5 | project retirement in Train. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-event_streamer_driver-fe328ce546d09975.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::health_manager::event_streamer_driver`` parameter has been 5 | removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-haproxy-amphora-key-path-bf21706a6504e28f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Octavia option [haproxy_amphora]/key_path will no longer be set. None of 4 | the maintained Octavia releases support it (removed in Mitaka). 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-hm-workers-698f4ec645474030.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated ``octavia::health_manager::workers`` parameter has been 5 | removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-puppet-6-ffc8d0bae994afa9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Puppet 6 is no longer supported. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-spares-pool-feature-2ed29ea73a2454aa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The following parameters in the ``octavia::housekeeping`` class have been 5 | removed. 6 | - ``spare_check_interval`` 7 | - ``spare_amphora_pool_size`` 8 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-watch_log_file-94838004c9579f69.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::logging::watch_log_file`` parameter has been removed. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_deprecated_ensure_package_option-8b6ede6e5dc3761c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Deprecated ensure_package option has been removed. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_deprecated_keystone_revocation_cache_time_option-8eeeaac0ccc5c8fa.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Deprecated keystone::authtoken::revocation_cache_time option has been removed. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_deprecated_keystone_signing_dir_option-833cd0913febeea1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Deprecated keystone authtoken signing_dir option is removed in Pike. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_deprecated_pki_related_options-b64a27e569eaf682.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The deprecated pki related options check_revocations_for_cached and 5 | hash_algorithms option has been removed. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/remove_idle_timeout_option-b86daee751340b12.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - Deprecated idle_timeout option has been removed. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/restart-service-certificate-b4000c445374129c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | When certificate data or file paths change in octavia::certificates it will 5 | not cause a restart of the Octavia services so that for example the 6 | octavia-worker service can use the new certificates. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/service_auth-defaults-d8f26d966207f906.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The ``octavia::service_auth::password`` parameter is now required. 5 | 6 | - | 7 | Default values of the ``octavia::service_auth`` parameeters have been 8 | updated, so that standalone deployment can be set up with less parameters 9 | set. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/service_token_roles-9257977b41bcaa6e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add support to configure service_token_roles in authtoken middleware 5 | -------------------------------------------------------------------------------- /releasenotes/notes/service_token_roles_required-8294ec1e5b3fc75f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Service_token_roles_required missing in the server config file which 4 | allows backwards compatibility to ensure that the service tokens are 5 | compared against a list of possible roles for validity. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/set-amphora-timezone-103b078b31ab7aeb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the ``[controller_worker] amp_timezone`` configuration 5 | parameter. It allows to configure the timezone of the amphora. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/set-common-configuration-options-across-services-91a9057d62b52de0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The following octavia::worker parameters are deprecated and have been 5 | moved to octavia::controller class. When you start using octavia::controller 6 | make sure it's defined before octavia::worker. 7 | 8 | * amp_flavor_id 9 | * amp_image_tag 10 | * amp_secgroup_list 11 | * amp_boot_network_list 12 | * loadbalancer_topology 13 | * amphora_driver 14 | * compute_driver 15 | * network_driver 16 | * amp_ssh_key_name 17 | * enable_ssh_access 18 | * timeout_member_connect 19 | * timeout_member_data 20 | * timeout_tcp_inspect 21 | fixes: 22 | - | 23 | There are a couple of configuration options that need to be set not only 24 | for the worker but also for other Octavia services. For example, on a 25 | composable node deployment where the API runs on a separate node than 26 | the rest of the Octavia services, the network driver was not being set 27 | (hence defaulting to noop driver) while for the worker the driver was 28 | allowed_address_pairs_driver. Another example is the database that was only 29 | being set for the API service. Such configuration misalignment and 30 | omissions lead to operate Octavia services and its resources. 31 | upgrade: 32 | - | 33 | If you want to use the new octavia::controller class you must define it 34 | before the octavia::worker class. 35 | -------------------------------------------------------------------------------- /releasenotes/notes/ssh-cert-files-42b8a31092405454.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds `amp_ssh_key_name`, `key_path` configuration options for configuring 5 | secure communications with amphorae. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/ssh_key_type-08bccff227a885e2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The following parameters have been added the ``octavia::worker`` class, to 5 | support customizing type of the ssh key generated when 6 | the ``manage_keygen`` parameter is ``True``. 7 | 8 | - ``ssh_key_type`` 9 | - ``ssh_key_bits`` 10 | -------------------------------------------------------------------------------- /releasenotes/notes/support-populating-cert-files-86533953f901d3b2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds parameters to 'octavia::certificates' to support populating certificate 5 | and key files with data provided. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/system_scope-all-0895d770ca1afffb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::service_auth::system_scope`` parameter has been added. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/system_scope-keystone-dda7488fa52854e0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``system_scope`` parameter has been added to 5 | the ``octavia::keystone::authtoken`` class. 6 | 7 | - | 8 | The ``octavia::keystone::auth`` class now supports customizing roles 9 | assigned to the octavia service user. 10 | 11 | - | 12 | The ``octavia::keystone::auth`` class now supports defining assignmet of 13 | system-scoped roles to the octavia service user. 14 | -------------------------------------------------------------------------------- /releasenotes/notes/task_flow-89c5a7003e705a9d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::task_flow`` class has been added. This class manages 5 | parameters in the ``task_flow`` section, which are required to use 6 | the amphora v2 driver. 7 | 8 | - | 9 | The ``octavia::db::mysql`` class and the ``octavia::db::postgresql`` class 10 | now support creating a separate database for taskflow persistence. 11 | 12 | - | 13 | The ``octavia::db::sync_persistence`` class has been added. This class 14 | invokes the command to initialize the taskflow persistence database. 15 | -------------------------------------------------------------------------------- /releasenotes/notes/task_flow-backend_package-390484b756669544.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``octavia::task_flow`` class now ensures the backend package is 5 | installed. Package management can be disabled by setting the new 6 | ``manage_backend_package`` parameter to ``false``. The package status 7 | can be customized by the new ``package_ensure`` parameter. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/ubuntu-jammy-93978b575d818231.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-dd7ea4362dce0d2d.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/uwsgi-22d71c90d9b6bf65.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | A new class octavia::wsgi::uwsgi exist to allow configuring uwsgi in 5 | operating systems that support this (ie: currently Debian). This helps 6 | configuring the number of processes, threads and listen socket. 7 | Also, a new octavia_api_uwsgi_config provider now exist. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/volume-based-amphora-62f3429adad36962.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The new ``octavia::cinder`` class has been added. This class manages 5 | parameters of the ``[cinder]`` section. 6 | 7 | - | 8 | The new ``octavia::controller::volume_type`` parameter has been added. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/workers-worker-default-os_workers-5b36d9814cc469fb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | The number of workers for octavia-worker now defaults to os_workers 5 | -------------------------------------------------------------------------------- /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-octavia/c6fcfb83294b84acc419bd9edb0dde20232744c4/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ======================================== 2 | Welcome to puppet-octavia 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 | 30 | 31 | Indices and tables 32 | ================== 33 | 34 | * :ref:`genindex` 35 | * :ref:`search` 36 | -------------------------------------------------------------------------------- /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-octavia 3 | summary = Puppet module for OpenStack Octavia 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/acceptance/10_basic_octavia_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper_acceptance' 2 | 3 | describe 'basic octavia' do 4 | 5 | context 'default parameters' do 6 | 7 | it 'should work with no errors' do 8 | pp= <<-EOS 9 | include openstack_integration 10 | include openstack_integration::repos 11 | include openstack_integration::apache 12 | include openstack_integration::rabbitmq 13 | include openstack_integration::mysql 14 | include openstack_integration::memcached 15 | include openstack_integration::redis 16 | include openstack_integration::keystone 17 | include openstack_integration::placement 18 | include openstack_integration::nova 19 | include openstack_integration::octavia 20 | EOS 21 | 22 | # Run it twice and test for idempotency 23 | apply_manifest(pp, :catch_failures => true) 24 | apply_manifest(pp, :catch_changes => true) 25 | end 26 | 27 | if os[:family].casecmp('RedHat') == 0 28 | describe port(9876) do 29 | it { is_expected.to be_listening } 30 | end 31 | end 32 | 33 | end 34 | 35 | end 36 | -------------------------------------------------------------------------------- /spec/acceptance/99_octavia_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper_acceptance' 2 | 3 | describe 'basic octavia_config resource' do 4 | 5 | context 'default parameters' do 6 | 7 | it 'should work with no errors' do 8 | pp= <<-EOS 9 | Exec { logoutput => 'on_failure' } 10 | 11 | File <||> -> Octavia_config <||> 12 | 13 | file { '/etc/octavia' : 14 | ensure => directory, 15 | } 16 | file { '/etc/octavia/octavia.conf' : 17 | ensure => file, 18 | } 19 | 20 | octavia_config { 'DEFAULT/thisshouldexist' : 21 | value => 'foo', 22 | } 23 | 24 | octavia_config { 'DEFAULT/thisshouldnotexist' : 25 | value => '', 26 | } 27 | 28 | octavia_config { 'DEFAULT/thisshouldexist2' : 29 | value => '', 30 | ensure_absent_val => 'toto', 31 | } 32 | 33 | octavia_config { 'DEFAULT/thisshouldnotexist2' : 34 | value => 'toto', 35 | ensure_absent_val => 'toto', 36 | } 37 | 38 | octavia_config { 'DEFAULT/thisshouldexist3' : 39 | value => ['foo', 'bar'], 40 | } 41 | EOS 42 | 43 | 44 | # Run it twice and test for idempotency 45 | apply_manifest(pp, :catch_failures => true) 46 | apply_manifest(pp, :catch_changes => true) 47 | end 48 | 49 | describe file('/etc/octavia/octavia.conf') do 50 | it { is_expected.to exist } 51 | it { is_expected.to contain('thisshouldexist=foo') } 52 | it { is_expected.to contain('thisshouldexist2=') } 53 | it { is_expected.to contain('thisshouldexist3=foo') } 54 | it { is_expected.to contain('thisshouldexist3=bar') } 55 | 56 | describe '#content' do 57 | subject { super().content } 58 | it { is_expected.to_not match /thisshouldnotexist/ } 59 | end 60 | end 61 | end 62 | end 63 | -------------------------------------------------------------------------------- /spec/classes/octavia_audit_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::audit' do 4 | 5 | shared_examples_for 'octavia::audit' do 6 | 7 | context 'with default parameters' do 8 | let :params do 9 | {} 10 | end 11 | 12 | it 'configures default values' do 13 | is_expected.to contain_octavia_config('audit/enabled').with_value('') 14 | is_expected.to contain_octavia_config('audit/audit_map_file').with_value('') 15 | is_expected.to contain_octavia_config('audit/ignore_req_list').with_value('') 16 | end 17 | end 18 | 19 | context 'with specific parameters' do 20 | let :params do 21 | { 22 | :enabled => true, 23 | :audit_map_file => '/etc/octavia/api_audit_map.conf', 24 | :ignore_req_list => 'GET,POST', 25 | } 26 | end 27 | 28 | it 'configures specified values' do 29 | is_expected.to contain_octavia_config('audit/enabled').with_value(true) 30 | is_expected.to contain_octavia_config('audit/audit_map_file').with_value('/etc/octavia/api_audit_map.conf') 31 | is_expected.to contain_octavia_config('audit/ignore_req_list').with_value('GET,POST') 32 | end 33 | end 34 | 35 | context 'with ignore_req_list in array' do 36 | let :params do 37 | { 38 | :ignore_req_list => ['GET', 'POST'], 39 | } 40 | end 41 | 42 | it 'configures ignore_req_list with a comma separated list' do 43 | is_expected.to contain_octavia_config('audit/ignore_req_list').with_value('GET,POST') 44 | end 45 | end 46 | end 47 | 48 | on_supported_os({ 49 | :supported_os => OSDefaults.get_supported_os 50 | }).each do |os,facts| 51 | context "on #{os}" do 52 | let (:facts) do 53 | facts.merge!(OSDefaults.get_facts()) 54 | end 55 | 56 | it_configures 'octavia::audit' 57 | end 58 | end 59 | 60 | end 61 | -------------------------------------------------------------------------------- /spec/classes/octavia_cinder_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::cinder' do 4 | shared_examples 'octavia::cinder' do 5 | context 'with default parameters' do 6 | it { 7 | should contain_octavia_config('cinder/service_name').with_value('') 8 | should contain_octavia_config('cinder/endpoint').with_value('') 9 | should contain_octavia_config('cinder/region_name').with_value('') 10 | should contain_octavia_config('cinder/endpoint_type').with_value('') 11 | should contain_octavia_config('cinder/availability_zone').with_value('') 12 | should contain_octavia_config('cinder/volume_size').with_value('') 13 | should contain_octavia_config('cinder/volume_type').with_value('') 14 | should contain_octavia_config('cinder/volume_create_retry_interval').with_value('') 15 | should contain_octavia_config('cinder/volume_create_timeout').with_value('') 16 | should contain_octavia_config('cinder/volume_create_max_retries').with_value('') 17 | } 18 | end 19 | 20 | context 'with specified parameters' do 21 | let :params do 22 | { 23 | :service_name => 'compute', 24 | :endpoint => 'http://127.0.0.1:8776', 25 | :region_name => 'RegionOne', 26 | :endpoint_type => 'internalURL', 27 | :availability_zone => 'nova', 28 | :volume_size => 16, 29 | :volume_type => 'default', 30 | :volume_create_retry_interval => 5, 31 | :volume_create_timeout => 300, 32 | :volume_create_max_retries => 5, 33 | } 34 | end 35 | 36 | it { 37 | should contain_octavia_config('cinder/service_name').with_value('compute') 38 | should contain_octavia_config('cinder/endpoint').with_value('http://127.0.0.1:8776') 39 | should contain_octavia_config('cinder/region_name').with_value('RegionOne') 40 | should contain_octavia_config('cinder/endpoint_type').with_value('internalURL') 41 | should contain_octavia_config('cinder/availability_zone').with_value('nova') 42 | should contain_octavia_config('cinder/volume_size').with_value(16) 43 | should contain_octavia_config('cinder/volume_type').with_value('default') 44 | should contain_octavia_config('cinder/volume_create_retry_interval').with_value(5) 45 | should contain_octavia_config('cinder/volume_create_timeout').with_value(300) 46 | should contain_octavia_config('cinder/volume_create_max_retries').with_value(5) 47 | } 48 | end 49 | end 50 | 51 | on_supported_os({ 52 | :supported_os => OSDefaults.get_supported_os 53 | }).each do |os,facts| 54 | context "on #{os}" do 55 | let (:facts) do 56 | facts.merge(OSDefaults.get_facts()) 57 | end 58 | 59 | it_behaves_like 'octavia::cinder' 60 | end 61 | end 62 | 63 | end 64 | -------------------------------------------------------------------------------- /spec/classes/octavia_client_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::client' do 4 | 5 | shared_examples_for 'octavia client' do 6 | 7 | it { is_expected.to contain_class('octavia::deps') } 8 | it { is_expected.to contain_class('octavia::params') } 9 | 10 | it 'installs octavia client package' do 11 | is_expected.to contain_package('python-octaviaclient').with( 12 | :name => platform_params[:client_package_name], 13 | :ensure => 'present', 14 | :tag => ['openstack', 'openstackclient'] 15 | ) 16 | end 17 | 18 | it { is_expected.to contain_class('openstacklib::openstackclient') } 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 | let(:platform_params) do 30 | case facts[:os]['family'] 31 | when 'Debian' 32 | { :client_package_name => 'python3-octaviaclient' } 33 | when 'RedHat' 34 | { :client_package_name => 'python3-octaviaclient' } 35 | end 36 | end 37 | 38 | it_behaves_like 'octavia client' 39 | end 40 | end 41 | 42 | end 43 | -------------------------------------------------------------------------------- /spec/classes/octavia_compute_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::compute' do 4 | shared_examples 'octavia::compute' do 5 | context 'with default parameters' do 6 | it { 7 | should contain_octavia_config('compute/max_retries').with_value('') 8 | should contain_octavia_config('compute/retry_interval').with_value('') 9 | should contain_octavia_config('compute/retry_backoff').with_value('') 10 | should contain_octavia_config('compute/retry_max').with_value('') 11 | } 12 | end 13 | 14 | context 'with parameters set' do 15 | let :params do 16 | { 17 | :max_retries => 15, 18 | :retry_interval => 1, 19 | :retry_backoff => 2, 20 | :retry_max => 10, 21 | } 22 | end 23 | 24 | it { 25 | should contain_octavia_config('compute/max_retries').with_value(15) 26 | should contain_octavia_config('compute/retry_interval').with_value(1) 27 | should contain_octavia_config('compute/retry_backoff').with_value(2) 28 | should contain_octavia_config('compute/retry_max').with_value(10) 29 | } 30 | end 31 | end 32 | 33 | on_supported_os({ 34 | :supported_os => OSDefaults.get_supported_os 35 | }).each do |os,facts| 36 | context "on #{os}" do 37 | let (:facts) do 38 | facts.merge(OSDefaults.get_facts()) 39 | end 40 | 41 | it_behaves_like 'octavia::compute' 42 | end 43 | end 44 | 45 | end 46 | -------------------------------------------------------------------------------- /spec/classes/octavia_cors_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::cors' do 4 | 5 | shared_examples_for 'octavia::cors' do 6 | it 'configure cors default params' do 7 | is_expected.to contain_oslo__cors('octavia_config').with( 8 | :allowed_origin => '', 9 | :allow_credentials => '', 10 | :expose_headers => '', 11 | :max_age => '', 12 | :allow_methods => '', 13 | :allow_headers => '', 14 | ) 15 | end 16 | 17 | context 'with specific parameters' do 18 | let :params do 19 | { :allowed_origin => '*', 20 | :allow_credentials => true, 21 | :expose_headers => 'Content-Language,Expires', 22 | :max_age => 3600, 23 | :allow_methods => 'GET,POST,PUT,DELETE,OPTIONS', 24 | :allow_headers => 'Content-Type,Cache-Control', 25 | } 26 | end 27 | 28 | it 'configure cors params' do 29 | is_expected.to contain_oslo__cors('octavia_config').with( 30 | :allowed_origin => '*', 31 | :allow_credentials => true, 32 | :expose_headers => 'Content-Language,Expires', 33 | :max_age => 3600, 34 | :allow_methods => 'GET,POST,PUT,DELETE,OPTIONS', 35 | :allow_headers => 'Content-Type,Cache-Control', 36 | ) 37 | end 38 | end 39 | end 40 | 41 | on_supported_os({ 42 | :supported_os => OSDefaults.get_supported_os 43 | }).each do |os,facts| 44 | context "on #{os}" do 45 | let (:facts) do 46 | facts.merge!(OSDefaults.get_facts()) 47 | end 48 | 49 | it_behaves_like 'octavia::cors' 50 | end 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /spec/classes/octavia_db_mysql_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::db::mysql' do 4 | let :pre_condition do 5 | "include mysql::server 6 | include octavia::db::sync" 7 | end 8 | 9 | let :params do 10 | { 11 | :password => 'octaviapass', 12 | } 13 | end 14 | 15 | shared_examples 'octavia::db::mysql' do 16 | it { is_expected.to contain_class('octavia::deps') } 17 | 18 | context 'with only required params' do 19 | it { should contain_openstacklib__db__mysql('octavia').with( 20 | :user => 'octavia', 21 | :password => 'octaviapass', 22 | :dbname => 'octavia', 23 | :host => '127.0.0.1', 24 | :charset => 'utf8', 25 | :collate => 'utf8_general_ci', 26 | )} 27 | it { should_not contain_openstacklib__db__mysql('octavia_persistence') } 28 | end 29 | 30 | context 'overriding allowed_hosts param to array' do 31 | before do 32 | params.merge!( :allowed_hosts => ['127.0.0.1','%'] ) 33 | end 34 | 35 | it { should contain_openstacklib__db__mysql('octavia').with( 36 | :user => 'octavia', 37 | :password => 'octaviapass', 38 | :dbname => 'octavia', 39 | :host => '127.0.0.1', 40 | :charset => 'utf8', 41 | :collate => 'utf8_general_ci', 42 | :allowed_hosts => ['127.0.0.1','%'] 43 | )} 44 | end 45 | 46 | context 'overriding allowed_hosts param to string' do 47 | before do 48 | params.merge!( :allowed_hosts => '192.168.1.1' ) 49 | end 50 | 51 | it { should contain_openstacklib__db__mysql('octavia').with( 52 | :user => 'octavia', 53 | :password => 'octaviapass', 54 | :dbname => 'octavia', 55 | :host => '127.0.0.1', 56 | :charset => 'utf8', 57 | :collate => 'utf8_general_ci', 58 | :allowed_hosts => '192.168.1.1' 59 | )} 60 | end 61 | 62 | context 'with persistence database enabled' do 63 | before do 64 | params.merge!( :persistence_dbname => 'octavia_persistence' ) 65 | end 66 | 67 | it { should contain_openstacklib__db__mysql('octavia').with( 68 | :user => 'octavia', 69 | :password => 'octaviapass', 70 | :dbname => 'octavia', 71 | :host => '127.0.0.1', 72 | :charset => 'utf8', 73 | :collate => 'utf8_general_ci', 74 | )} 75 | it { should contain_openstacklib__db__mysql('octavia_persistence').with( 76 | :user => 'octavia', 77 | :password => 'octaviapass', 78 | :dbname => 'octavia_persistence', 79 | :host => '127.0.0.1', 80 | :charset => 'utf8', 81 | :collate => 'utf8_general_ci', 82 | :create_user => false, 83 | )} 84 | end 85 | end 86 | 87 | on_supported_os({ 88 | :supported_os => OSDefaults.get_supported_os 89 | }).each do |os,facts| 90 | context "on #{os}" do 91 | let (:facts) do 92 | facts.merge!(OSDefaults.get_facts()) 93 | end 94 | 95 | it_behaves_like 'octavia::db::mysql' 96 | end 97 | end 98 | end 99 | -------------------------------------------------------------------------------- /spec/classes/octavia_db_postgresql_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::db::postgresql' do 4 | 5 | shared_examples_for 'octavia::db::postgresql' do 6 | let :req_params do 7 | { :password => 'octaviapass' } 8 | end 9 | 10 | let :pre_condition do 11 | 'include postgresql::server' 12 | end 13 | 14 | context 'with only required parameters' do 15 | let :params do 16 | req_params 17 | end 18 | 19 | it { is_expected.to contain_class('octavia::deps') } 20 | 21 | it { is_expected.to contain_openstacklib__db__postgresql('octavia').with( 22 | :user => 'octavia', 23 | :password => 'octaviapass', 24 | :dbname => 'octavia', 25 | :encoding => nil, 26 | :privileges => 'ALL', 27 | )} 28 | it { is_expected.to_not contain_openstacklib__db__postgresql('octavia_persistence') } 29 | end 30 | 31 | context 'with persistence database enabled' do 32 | let :params do 33 | req_params.merge!(:persistence_dbname => 'octavia_persistence') 34 | end 35 | 36 | it { is_expected.to contain_class('octavia::deps') } 37 | 38 | it { is_expected.to contain_openstacklib__db__postgresql('octavia').with( 39 | :user => 'octavia', 40 | :password => 'octaviapass', 41 | :dbname => 'octavia', 42 | :encoding => nil, 43 | :privileges => 'ALL', 44 | )} 45 | it { is_expected.to contain_openstacklib__db__postgresql('octavia_persistence').with( 46 | :user => 'octavia', 47 | :password => 'octaviapass', 48 | :dbname => 'octavia_persistence', 49 | :encoding => nil, 50 | :privileges => 'ALL', 51 | )} 52 | end 53 | end 54 | 55 | on_supported_os({ 56 | :supported_os => OSDefaults.get_supported_os 57 | }).each do |os,facts| 58 | context "on #{os}" do 59 | let (:facts) do 60 | facts.merge(OSDefaults.get_facts({ 61 | # puppet-postgresql requires the service_provider fact provided by 62 | # puppetlabs-postgresql. 63 | :service_provider => 'systemd' 64 | })) 65 | end 66 | 67 | it_configures 'octavia::db::postgresql' 68 | end 69 | end 70 | 71 | end 72 | -------------------------------------------------------------------------------- /spec/classes/octavia_db_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::db' do 4 | shared_examples 'octavia::db' do 5 | context 'with default parameters' do 6 | it { should contain_oslo__db('octavia_config').with( 7 | :db_max_retries => '', 8 | :connection => 'sqlite:////var/lib/octavia/octavia.sqlite', 9 | :connection_recycle_time => '', 10 | :max_pool_size => '', 11 | :max_retries => '', 12 | :retry_interval => '', 13 | :max_overflow => '', 14 | :pool_timeout => '', 15 | :mysql_enable_ndb => '', 16 | )} 17 | end 18 | 19 | context 'with specific parameters' do 20 | let :params do 21 | { 22 | :database_connection => 'mysql+pymysql://octavia:octavia@localhost/octavia', 23 | :database_connection_recycle_time => '3601', 24 | :database_max_retries => '11', 25 | :database_retry_interval => '11', 26 | :database_max_pool_size => '11', 27 | :database_max_overflow => '21', 28 | :database_pool_timeout => '21', 29 | :mysql_enable_ndb => true, 30 | :database_db_max_retries => '-1', 31 | } 32 | end 33 | 34 | it { should contain_oslo__db('octavia_config').with( 35 | :db_max_retries => '-1', 36 | :connection => 'mysql+pymysql://octavia:octavia@localhost/octavia', 37 | :connection_recycle_time => '3601', 38 | :max_pool_size => '11', 39 | :max_retries => '11', 40 | :retry_interval => '11', 41 | :max_overflow => '21', 42 | :pool_timeout => '21', 43 | :mysql_enable_ndb => true, 44 | )} 45 | end 46 | end 47 | 48 | on_supported_os({ 49 | :supported_os => OSDefaults.get_supported_os 50 | }).each do |os,facts| 51 | context "on #{os}" do 52 | let (:facts) do 53 | facts.merge!(OSDefaults.get_facts()) 54 | end 55 | 56 | it_behaves_like 'octavia::db' 57 | end 58 | end 59 | end 60 | -------------------------------------------------------------------------------- /spec/classes/octavia_db_sync_persistence_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::db::sync_persistence' do 4 | 5 | shared_examples_for 'octavia::db::sync_persistence' do 6 | 7 | it { is_expected.to contain_class('octavia::deps') } 8 | 9 | it 'runs octavia-manage db upgrade' do 10 | is_expected.to contain_exec('octavia-db-sync-persistence').with( 11 | :command => 'octavia-db-manage upgrade_persistence ', 12 | :user => 'octavia', 13 | :path => '/usr/bin', 14 | :refreshonly => 'true', 15 | :try_sleep => 5, 16 | :tries => 10, 17 | :timeout => 300, 18 | :logoutput => 'on_failure', 19 | :subscribe => ['Anchor[octavia::install::end]', 20 | 'Anchor[octavia::config::end]', 21 | 'Anchor[octavia::dbsync::begin]'], 22 | :notify => 'Anchor[octavia::dbsync::end]', 23 | :tag => 'openstack-db', 24 | ) 25 | end 26 | 27 | describe "overriding params" do 28 | let :params do 29 | { 30 | :extra_params => '--config-file /etc/octavia/octavia.conf', 31 | :db_sync_timeout => 750, 32 | } 33 | end 34 | 35 | it { 36 | is_expected.to contain_exec('octavia-db-sync-persistence').with( 37 | :command => 'octavia-db-manage upgrade_persistence --config-file /etc/octavia/octavia.conf', 38 | :user => 'octavia', 39 | :path => '/usr/bin', 40 | :refreshonly => 'true', 41 | :try_sleep => 5, 42 | :tries => 10, 43 | :timeout => 750, 44 | :logoutput => 'on_failure', 45 | :subscribe => ['Anchor[octavia::install::end]', 46 | 'Anchor[octavia::config::end]', 47 | 'Anchor[octavia::dbsync::begin]'], 48 | :notify => 'Anchor[octavia::dbsync::end]', 49 | :tag => 'openstack-db', 50 | ) 51 | } 52 | end 53 | 54 | end 55 | 56 | on_supported_os({ 57 | :supported_os => OSDefaults.get_supported_os 58 | }).each do |os,facts| 59 | context "on #{os}" do 60 | let (:facts) do 61 | facts.merge(OSDefaults.get_facts()) 62 | end 63 | 64 | it_configures 'octavia::db::sync_persistence' 65 | end 66 | end 67 | 68 | end 69 | -------------------------------------------------------------------------------- /spec/classes/octavia_db_sync_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::db::sync' do 4 | 5 | shared_examples_for 'octavia::db::sync' do 6 | 7 | it { is_expected.to contain_class('octavia::deps') } 8 | 9 | it 'runs octavia-manage db upgrade' do 10 | is_expected.to contain_exec('octavia-db-sync').with( 11 | :command => 'octavia-db-manage upgrade head ', 12 | :user => 'octavia', 13 | :path => '/usr/bin', 14 | :refreshonly => 'true', 15 | :try_sleep => 5, 16 | :tries => 10, 17 | :timeout => 300, 18 | :logoutput => 'on_failure', 19 | :subscribe => ['Anchor[octavia::install::end]', 20 | 'Anchor[octavia::config::end]', 21 | 'Anchor[octavia::dbsync::begin]'], 22 | :notify => 'Anchor[octavia::dbsync::end]', 23 | :tag => 'openstack-db', 24 | ) 25 | end 26 | 27 | describe "overriding params" do 28 | let :params do 29 | { 30 | :extra_params => '--config-file /etc/octavia/octavia.conf', 31 | :db_sync_timeout => 750, 32 | } 33 | end 34 | 35 | it { 36 | is_expected.to contain_exec('octavia-db-sync').with( 37 | :command => 'octavia-db-manage upgrade head --config-file /etc/octavia/octavia.conf', 38 | :user => 'octavia', 39 | :path => '/usr/bin', 40 | :refreshonly => 'true', 41 | :try_sleep => 5, 42 | :tries => 10, 43 | :timeout => 750, 44 | :logoutput => 'on_failure', 45 | :subscribe => ['Anchor[octavia::install::end]', 46 | 'Anchor[octavia::config::end]', 47 | 'Anchor[octavia::dbsync::begin]'], 48 | :notify => 'Anchor[octavia::dbsync::end]', 49 | :tag => 'openstack-db', 50 | ) 51 | } 52 | end 53 | 54 | end 55 | 56 | on_supported_os({ 57 | :supported_os => OSDefaults.get_supported_os 58 | }).each do |os,facts| 59 | context "on #{os}" do 60 | let (:facts) do 61 | facts.merge(OSDefaults.get_facts()) 62 | end 63 | 64 | it_configures 'octavia::db::sync' 65 | end 66 | end 67 | 68 | end 69 | -------------------------------------------------------------------------------- /spec/classes/octavia_glance_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::glance' do 4 | shared_examples 'octavia::glance' do 5 | context 'with default parameters' do 6 | it { 7 | should contain_octavia_config('glance/service_name').with_value('') 8 | should contain_octavia_config('glance/endpoint').with_value('') 9 | should contain_octavia_config('glance/region_name').with_value('') 10 | should contain_octavia_config('glance/endpoint_type').with_value('') 11 | } 12 | end 13 | 14 | context 'with specified parameters' do 15 | let :params do 16 | { 17 | :service_name => 'image', 18 | :endpoint => 'http://127.0.0.1:9292', 19 | :region_name => 'RegionOne', 20 | :endpoint_type => 'internalURL', 21 | } 22 | end 23 | 24 | it { 25 | should contain_octavia_config('glance/service_name').with_value('image') 26 | should contain_octavia_config('glance/endpoint').with_value('http://127.0.0.1:9292') 27 | should contain_octavia_config('glance/region_name').with_value('RegionOne') 28 | should contain_octavia_config('glance/endpoint_type').with_value('internalURL') 29 | } 30 | end 31 | end 32 | 33 | on_supported_os({ 34 | :supported_os => OSDefaults.get_supported_os 35 | }).each do |os,facts| 36 | context "on #{os}" do 37 | let (:facts) do 38 | facts.merge(OSDefaults.get_facts()) 39 | end 40 | 41 | it_behaves_like 'octavia::glance' 42 | end 43 | end 44 | 45 | end 46 | -------------------------------------------------------------------------------- /spec/classes/octavia_healthcheck_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::healthcheck' do 4 | 5 | shared_examples_for 'octavia::healthcheck' do 6 | 7 | context 'with default parameters' do 8 | let :params do 9 | {} 10 | end 11 | 12 | it 'configures default values' do 13 | is_expected.to contain_oslo__healthcheck('octavia_config').with( 14 | :detailed => '', 15 | :backends => '', 16 | :allowed_source_ranges => '', 17 | :ignore_proxied_requests => '', 18 | :disable_by_file_path => '', 19 | :disable_by_file_paths => '', 20 | :enable_by_file_paths => '', 21 | ) 22 | end 23 | end 24 | 25 | context 'with specific parameters' do 26 | let :params do 27 | { 28 | :detailed => true, 29 | :backends => ['disable_by_file'], 30 | :allowed_source_ranges => ['10.0.0.0/24', '10.0.1.0/24'], 31 | :ignore_proxied_requests => false, 32 | :disable_by_file_path => '/etc/octavia/healthcheck/disabled', 33 | :disable_by_file_paths => ['9876:/etc/octavia/healthcheck/disabled'], 34 | :enable_by_file_paths => ['/etc/octavia/healthcheck/enabled'], 35 | } 36 | end 37 | 38 | it 'configures specified values' do 39 | is_expected.to contain_oslo__healthcheck('octavia_config').with( 40 | :detailed => true, 41 | :backends => ['disable_by_file'], 42 | :allowed_source_ranges => ['10.0.0.0/24', '10.0.1.0/24'], 43 | :ignore_proxied_requests => false, 44 | :disable_by_file_path => '/etc/octavia/healthcheck/disabled', 45 | :disable_by_file_paths => ['9876:/etc/octavia/healthcheck/disabled'], 46 | :enable_by_file_paths => ['/etc/octavia/healthcheck/enabled'], 47 | ) 48 | end 49 | end 50 | end 51 | 52 | on_supported_os({ 53 | :supported_os => OSDefaults.get_supported_os 54 | }).each do |os,facts| 55 | context "on #{os}" do 56 | let (:facts) do 57 | facts.merge!(OSDefaults.get_facts()) 58 | end 59 | 60 | it_configures 'octavia::healthcheck' 61 | end 62 | end 63 | 64 | end 65 | -------------------------------------------------------------------------------- /spec/classes/octavia_housekeeping_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::housekeeping' do 4 | 5 | let :params do 6 | { :enabled => true, 7 | :manage_service => true, 8 | :package_ensure => 'latest', 9 | } 10 | end 11 | 12 | shared_examples_for 'octavia-housekeeping' do 13 | 14 | it 'installs octavia-housekeeping package' do 15 | is_expected.to contain_package('octavia-housekeeping').with( 16 | :ensure => 'latest', 17 | :name => platform_params[:housekeeping_package_name], 18 | :tag => ['openstack', 'octavia-package'], 19 | ) 20 | end 21 | 22 | context 'check parameters with defaults' do 23 | ['cleanup_interval', 'amphora_expiry_age', 'load_balancer_expiry_age', 24 | 'cert_interval', 'cert_expiry_buffer', 'cert_rotate_threads'].each do |param_with_default| 25 | it { is_expected.to contain_octavia_config("house_keeping/#{param_with_default}").with_value('') } 26 | end 27 | end 28 | 29 | let :default_parameters do 30 | { :cleanup_interval => 26, 31 | :amphora_expiry_age => 200000, 32 | :load_balancer_expiry_age => 23131, 33 | :cert_interval => 200, 34 | :cert_expiry_buffer => 20000056, 35 | :cert_rotate_threads => 20, 36 | } 37 | end 38 | 39 | context 'check with non-default parameters' do 40 | before :each do 41 | params.merge!(default_parameters) 42 | end 43 | ['cleanup_interval', 'amphora_expiry_age', 'load_balancer_expiry_age', 44 | 'cert_interval', 'cert_expiry_buffer', 'cert_rotate_threads'].each do |param_with_default| 45 | it { is_expected.to contain_octavia_config("house_keeping/#{param_with_default}").with_value(default_parameters[param_with_default.to_sym]) } 46 | end 47 | end 48 | 49 | 50 | [{:enabled => true}, {:enabled => false}].each do |param_hash| 51 | context "when service should be #{param_hash[:enabled] ? 'enabled' : 'disabled'}" do 52 | before do 53 | params.merge!(param_hash) 54 | end 55 | 56 | it 'configures octavia-housekeeping service' do 57 | is_expected.to contain_service('octavia-housekeeping').with( 58 | :ensure => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped', 59 | :name => platform_params[:housekeeping_service_name], 60 | :enable => params[:enabled], 61 | :hasstatus => true, 62 | :hasrestart => true, 63 | :tag => ['octavia-service'], 64 | ) 65 | end 66 | end 67 | end 68 | 69 | context 'with disabled service managing' do 70 | before do 71 | params.merge!({ 72 | :manage_service => false, 73 | :enabled => false }) 74 | end 75 | 76 | it 'does not configure octavia-housekeeping service' do 77 | is_expected.to_not contain_service('octavia-housekeeping') 78 | end 79 | end 80 | 81 | end 82 | 83 | on_supported_os({ 84 | :supported_os => OSDefaults.get_supported_os 85 | }).each do |os,facts| 86 | context "on #{os}" do 87 | let (:facts) do 88 | facts.merge!(OSDefaults.get_facts()) 89 | end 90 | let(:platform_params) do 91 | case facts[:os]['family'] 92 | when 'Debian' 93 | { :housekeeping_package_name => 'octavia-housekeeping', 94 | :housekeeping_service_name => 'octavia-housekeeping' } 95 | when 'RedHat' 96 | { :housekeeping_package_name => 'openstack-octavia-housekeeping', 97 | :housekeeping_service_name => 'octavia-housekeeping' } 98 | end 99 | end 100 | it_behaves_like 'octavia-housekeeping' 101 | end 102 | end 103 | 104 | end 105 | -------------------------------------------------------------------------------- /spec/classes/octavia_keystone_auth_spec.rb: -------------------------------------------------------------------------------- 1 | # 2 | # Unit tests for octavia::keystone::auth 3 | # 4 | 5 | require 'spec_helper' 6 | 7 | describe 'octavia::keystone::auth' do 8 | shared_examples_for 'octavia::keystone::auth' do 9 | context 'with default class parameters' do 10 | let :params do 11 | { :password => 'octavia_password' } 12 | end 13 | 14 | it { is_expected.to contain_keystone__resource__service_identity('octavia').with( 15 | :configure_user => true, 16 | :configure_user_role => true, 17 | :configure_endpoint => true, 18 | :configure_service => true, 19 | :service_name => 'octavia', 20 | :service_type => 'load-balancer', 21 | :service_description => 'OpenStack Load Balancing Service', 22 | :region => 'RegionOne', 23 | :auth_name => 'octavia', 24 | :password => 'octavia_password', 25 | :email => 'octavia@localhost', 26 | :tenant => 'services', 27 | :roles => ['admin'], 28 | :system_scope => 'all', 29 | :system_roles => [], 30 | :public_url => 'http://127.0.0.1:9876', 31 | :internal_url => 'http://127.0.0.1:9876', 32 | :admin_url => 'http://127.0.0.1:9876', 33 | ) } 34 | end 35 | 36 | context 'when overriding parameters' do 37 | let :params do 38 | { :password => 'octavia_password', 39 | :auth_name => 'alt_octavia', 40 | :email => 'alt_octavia@alt_localhost', 41 | :tenant => 'alt_service', 42 | :roles => ['admin', 'service'], 43 | :system_scope => 'atl_all', 44 | :system_roles => ['admin', 'member', 'reader'], 45 | :configure_endpoint => false, 46 | :configure_user => false, 47 | :configure_user_role => false, 48 | :configure_service => false, 49 | :service_description => 'Alternative OpenStack Load Balancing Service', 50 | :service_name => 'alt_service', 51 | :service_type => 'alt_load-balancer', 52 | :region => 'RegionTwo', 53 | :public_url => 'https://10.10.10.10:80', 54 | :internal_url => 'http://10.10.10.11:81', 55 | :admin_url => 'http://10.10.10.12:81' } 56 | end 57 | 58 | it { is_expected.to contain_keystone__resource__service_identity('octavia').with( 59 | :configure_user => false, 60 | :configure_user_role => false, 61 | :configure_endpoint => false, 62 | :configure_service => false, 63 | :service_name => 'alt_service', 64 | :service_type => 'alt_load-balancer', 65 | :service_description => 'Alternative OpenStack Load Balancing Service', 66 | :region => 'RegionTwo', 67 | :auth_name => 'alt_octavia', 68 | :password => 'octavia_password', 69 | :email => 'alt_octavia@alt_localhost', 70 | :tenant => 'alt_service', 71 | :roles => ['admin', 'service'], 72 | :system_scope => 'atl_all', 73 | :system_roles => ['admin', 'member', 'reader'], 74 | :public_url => 'https://10.10.10.10:80', 75 | :internal_url => 'http://10.10.10.11:81', 76 | :admin_url => 'http://10.10.10.12:81', 77 | ) } 78 | end 79 | end 80 | 81 | on_supported_os({ 82 | :supported_os => OSDefaults.get_supported_os 83 | }).each do |os,facts| 84 | context "on #{os}" do 85 | let (:facts) do 86 | facts.merge!(OSDefaults.get_facts()) 87 | end 88 | 89 | it_behaves_like 'octavia::keystone::auth' 90 | end 91 | end 92 | end 93 | -------------------------------------------------------------------------------- /spec/classes/octavia_networking_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::networking' do 4 | shared_examples 'octavia::networking' do 5 | context 'with default parameters' do 6 | it { 7 | should contain_octavia_config('networking/max_retries').with_value('') 8 | should contain_octavia_config('networking/retry_interval').with_value('') 9 | should contain_octavia_config('networking/retry_backoff').with_value('') 10 | should contain_octavia_config('networking/retry_max').with_value('') 11 | should contain_octavia_config('networking/port_detach_timeout').with_value('') 12 | should contain_octavia_config('networking/allow_vip_network_id').with_value('') 13 | should contain_octavia_config('networking/allow_vip_subnet_id').with_value('') 14 | should contain_octavia_config('networking/allow_vip_port_id').with_value('') 15 | should contain_octavia_config('networking/valid_vip_networks').with_value('') 16 | should contain_octavia_config('networking/reserved_ips').with_value('') 17 | should contain_octavia_config('networking/allow_invisible_resource_usage').with_value('') 18 | } 19 | end 20 | 21 | context 'with parameters set' do 22 | let :params do 23 | { 24 | :max_retries => 15, 25 | :retry_interval => 1, 26 | :retry_backoff => 2, 27 | :retry_max => 10, 28 | :port_detach_timeout => 300, 29 | :allow_vip_network_id => true, 30 | :allow_vip_subnet_id => true, 31 | :allow_vip_port_id => true, 32 | :valid_vip_networks => 'net1,net2', 33 | :reserved_ips => '169.254.169.254', 34 | :allow_invisible_resource_usage => false 35 | } 36 | end 37 | 38 | it { 39 | should contain_octavia_config('networking/max_retries').with_value(15) 40 | should contain_octavia_config('networking/retry_interval').with_value(1) 41 | should contain_octavia_config('networking/retry_backoff').with_value(2) 42 | should contain_octavia_config('networking/retry_max').with_value(10) 43 | should contain_octavia_config('networking/port_detach_timeout').with_value(300) 44 | should contain_octavia_config('networking/allow_vip_network_id').with_value(true) 45 | should contain_octavia_config('networking/allow_vip_subnet_id').with_value(true) 46 | should contain_octavia_config('networking/allow_vip_port_id').with_value(true) 47 | should contain_octavia_config('networking/valid_vip_networks').with_value('net1,net2') 48 | should contain_octavia_config('networking/reserved_ips').with_value('169.254.169.254') 49 | should contain_octavia_config('networking/allow_invisible_resource_usage').with_value(false) 50 | } 51 | end 52 | 53 | context 'with array values' do 54 | let :params do 55 | { 56 | :valid_vip_networks => ['net1', 'net2'], 57 | :reserved_ips => ['169.254.169.254', '192.168.0.1'], 58 | } 59 | end 60 | 61 | it { 62 | should contain_octavia_config('networking/valid_vip_networks').with_value('net1,net2') 63 | should contain_octavia_config('networking/reserved_ips').with_value('169.254.169.254,192.168.0.1') 64 | } 65 | end 66 | end 67 | 68 | on_supported_os({ 69 | :supported_os => OSDefaults.get_supported_os 70 | }).each do |os,facts| 71 | context "on #{os}" do 72 | let (:facts) do 73 | facts.merge(OSDefaults.get_facts()) 74 | end 75 | 76 | it_behaves_like 'octavia::networking' 77 | end 78 | end 79 | 80 | end 81 | -------------------------------------------------------------------------------- /spec/classes/octavia_nova_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::nova' do 4 | shared_examples 'octavia::nova' do 5 | context 'with default parameters' do 6 | it { 7 | should contain_octavia_config('nova/service_name').with_value('') 8 | should contain_octavia_config('nova/endpoint').with_value('') 9 | should contain_octavia_config('nova/region_name').with_value('') 10 | should contain_octavia_config('nova/endpoint_type').with_value('') 11 | should contain_octavia_config('nova/availability_zone').with_value('') 12 | should contain_octavia_config('nova/enable_anti_affinity').with_value('') 13 | should contain_octavia_config('nova/anti_affinity_policy').with_value('') 14 | } 15 | end 16 | 17 | context 'with specified parameters' do 18 | let :params do 19 | { 20 | :service_name => 'compute', 21 | :endpoint => 'http://127.0.0.1:8774', 22 | :region_name => 'RegionOne', 23 | :endpoint_type => 'internalURL', 24 | :availability_zone => 'nova', 25 | :enable_anti_affinity => true, 26 | :anti_affinity_policy => 'anti-affinity', 27 | } 28 | end 29 | 30 | it { 31 | should contain_octavia_config('nova/service_name').with_value('compute') 32 | should contain_octavia_config('nova/endpoint').with_value('http://127.0.0.1:8774') 33 | should contain_octavia_config('nova/region_name').with_value('RegionOne') 34 | should contain_octavia_config('nova/endpoint_type').with_value('internalURL') 35 | should contain_octavia_config('nova/availability_zone').with_value('nova') 36 | should contain_octavia_config('nova/enable_anti_affinity').with_value(true) 37 | should contain_octavia_config('nova/anti_affinity_policy').with_value('anti-affinity') 38 | } 39 | end 40 | end 41 | 42 | on_supported_os({ 43 | :supported_os => OSDefaults.get_supported_os 44 | }).each do |os,facts| 45 | context "on #{os}" do 46 | let (:facts) do 47 | facts.merge(OSDefaults.get_facts()) 48 | end 49 | 50 | it_behaves_like 'octavia::nova' 51 | end 52 | end 53 | 54 | end 55 | -------------------------------------------------------------------------------- /spec/classes/octavia_policy_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::policy' do 4 | shared_examples 'octavia::policy' do 5 | 6 | context 'setup policy with parameters' do 7 | let :params do 8 | { 9 | :enforce_scope => false, 10 | :enforce_new_defaults => false, 11 | :policy_path => '/etc/octavia/policy.yaml', 12 | :policy_default_rule => 'default', 13 | :policy_dirs => '/etc/octavia/policy.d', 14 | :policies => { 15 | 'context_is_admin' => { 16 | 'key' => 'context_is_admin', 17 | 'value' => 'foo:bar' 18 | } 19 | } 20 | } 21 | end 22 | 23 | it 'set up the policies' do 24 | is_expected.to contain_openstacklib__policy('/etc/octavia/policy.yaml').with( 25 | :policies => { 26 | 'context_is_admin' => { 27 | 'key' => 'context_is_admin', 28 | 'value' => 'foo:bar' 29 | } 30 | }, 31 | :policy_path => '/etc/octavia/policy.yaml', 32 | :file_user => 'root', 33 | :file_group => 'octavia', 34 | :file_format => 'yaml', 35 | :purge_config => false, 36 | :tag => 'octavia', 37 | ) 38 | is_expected.to contain_oslo__policy('octavia_config').with( 39 | :enforce_scope => false, 40 | :enforce_new_defaults => false, 41 | :policy_file => '/etc/octavia/policy.yaml', 42 | :policy_default_rule => 'default', 43 | :policy_dirs => '/etc/octavia/policy.d', 44 | ) 45 | end 46 | end 47 | 48 | context 'with empty policies and purge_config enabled' do 49 | let :params do 50 | { 51 | :enforce_scope => false, 52 | :enforce_new_defaults => false, 53 | :policy_path => '/etc/octavia/policy.yaml', 54 | :policies => {}, 55 | :purge_config => true, 56 | } 57 | end 58 | 59 | it 'set up the policies' do 60 | is_expected.to contain_openstacklib__policy('/etc/octavia/policy.yaml').with( 61 | :policies => {}, 62 | :policy_path => '/etc/octavia/policy.yaml', 63 | :file_user => 'root', 64 | :file_group => 'octavia', 65 | :file_format => 'yaml', 66 | :purge_config => true, 67 | :tag => 'octavia', 68 | ) 69 | is_expected.to contain_oslo__policy('octavia_config').with( 70 | :enforce_scope => false, 71 | :enforce_new_defaults => false, 72 | :policy_file => '/etc/octavia/policy.yaml', 73 | ) 74 | end 75 | end 76 | end 77 | 78 | on_supported_os({ 79 | :supported_os => OSDefaults.get_supported_os 80 | }).each do |os,facts| 81 | context "on #{os}" do 82 | let (:facts) do 83 | facts.merge!(OSDefaults.get_facts()) 84 | end 85 | 86 | it_behaves_like 'octavia::policy' 87 | end 88 | end 89 | end 90 | -------------------------------------------------------------------------------- /spec/classes/octavia_quota_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::quota' do 4 | let :default_params do 5 | { 6 | :default_load_balancer_quota => '', 7 | :default_listener_quota => '', 8 | :default_member_quota => '', 9 | :default_pool_quota => '', 10 | :default_health_monitor_quota => '', 11 | :default_l7policy_quota => '', 12 | :default_l7rule_quota => '', 13 | } 14 | end 15 | 16 | let :params do 17 | {} 18 | end 19 | 20 | shared_examples_for 'octavia quota' do 21 | 22 | let :p do 23 | default_params.merge(params) 24 | end 25 | 26 | it 'contains default values' do 27 | is_expected.to contain_octavia_config('quotas/default_load_balancer_quota').with_value(p[:default_load_balancer_quota]) 28 | is_expected.to contain_octavia_config('quotas/default_listener_quota').with_value(p[:default_listener_quota]) 29 | is_expected.to contain_octavia_config('quotas/default_member_quota').with_value(p[:default_member_quota]) 30 | is_expected.to contain_octavia_config('quotas/default_pool_quota').with_value(p[:default_pool_quota]) 31 | is_expected.to contain_octavia_config('quotas/default_health_monitor_quota').with_value(p[:default_health_monitor_quota]) 32 | is_expected.to contain_octavia_config('quotas/default_l7policy_quota').with_value(p[:default_l7policy_quota]) 33 | is_expected.to contain_octavia_config('quotas/default_l7rule_quota').with_value(p[:default_l7rule_quota]) 34 | end 35 | 36 | context 'configure quota with parameters' do 37 | before :each do 38 | params.merge!({ 39 | :default_load_balancer_quota => 10, 40 | :default_listener_quota => 20, 41 | :default_member_quota => 30, 42 | :default_pool_quota => 40, 43 | :default_health_monitor_quota => 50, 44 | :default_l7policy_quota => 60, 45 | :default_l7rule_quota => 70, 46 | }) 47 | end 48 | 49 | it 'contains the defined values' do 50 | is_expected.to contain_octavia_config('quotas/default_load_balancer_quota').with_value(p[:default_load_balancer_quota]) 51 | is_expected.to contain_octavia_config('quotas/default_listener_quota').with_value(p[:default_listener_quota]) 52 | is_expected.to contain_octavia_config('quotas/default_member_quota').with_value(p[:default_member_quota]) 53 | is_expected.to contain_octavia_config('quotas/default_pool_quota').with_value(p[:default_pool_quota]) 54 | is_expected.to contain_octavia_config('quotas/default_health_monitor_quota').with_value(p[:default_health_monitor_quota]) 55 | is_expected.to contain_octavia_config('quotas/default_l7policy_quota').with_value(p[:default_l7policy_quota]) 56 | is_expected.to contain_octavia_config('quotas/default_l7rule_quota').with_value(p[:default_l7rule_quota]) 57 | end 58 | end 59 | end 60 | 61 | on_supported_os({ 62 | :supported_os => OSDefaults.get_supported_os 63 | }).each do |os,facts| 64 | context "on #{os}" do 65 | let (:facts) do 66 | facts.merge(OSDefaults.get_facts()) 67 | end 68 | 69 | it_configures 'octavia quota' 70 | end 71 | end 72 | 73 | end 74 | -------------------------------------------------------------------------------- /spec/classes/octavia_reports_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::reports' do 4 | shared_examples 'octavia::reports' do 5 | context 'with default parameters' do 6 | it { 7 | is_expected.to contain_oslo__reports('octavia_config').with( 8 | :log_dir => '', 9 | :file_event_handler => '', 10 | :file_event_handler_interval => '', 11 | ) 12 | } 13 | end 14 | 15 | context 'with specified parameters' do 16 | let :params do 17 | { 18 | :log_dir => '/var/log/octavia', 19 | :file_event_handler => '/var/tmp/octavia/reports', 20 | :file_event_handler_interval => 1, 21 | } 22 | end 23 | 24 | it { 25 | is_expected.to contain_oslo__reports('octavia_config').with( 26 | :log_dir => '/var/log/octavia', 27 | :file_event_handler => '/var/tmp/octavia/reports', 28 | :file_event_handler_interval => 1, 29 | ) 30 | } 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_behaves_like 'octavia::reports' 43 | end 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /spec/classes/octavia_roles_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::roles' do 4 | 5 | let :params do 6 | { 7 | } 8 | end 9 | 10 | shared_examples_for 'octavia-roles' do 11 | 12 | context 'when using default args' do 13 | it 'creates keystone roles' do 14 | is_expected.to contain_keystone_role('load-balancer_observer') 15 | is_expected.to contain_keystone_role('load-balancer_global_observer') 16 | is_expected.to contain_keystone_role('load-balancer_member') 17 | is_expected.to contain_keystone_role('load-balancer_quota_admin') 18 | is_expected.to contain_keystone_role('load-balancer_admin') 19 | is_expected.to contain_keystone_role('admin') 20 | end 21 | end 22 | 23 | context 'when using custom roles' do 24 | before do 25 | params.merge!({ 26 | :role_names => ['foo', 'bar', 'krispy'] 27 | }) 28 | end 29 | it 'creates custom keystone roles' do 30 | is_expected.to contain_keystone_role('foo') 31 | is_expected.to contain_keystone_role('bar') 32 | is_expected.to contain_keystone_role('krispy') 33 | is_expected.not_to contain_keystone_role('load-balancer_observer') 34 | end 35 | end 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 | it_behaves_like 'octavia-roles' 47 | end 48 | end 49 | 50 | end 51 | -------------------------------------------------------------------------------- /spec/classes/octavia_service_auth_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::service_auth' do 4 | 5 | shared_examples_for 'service-auth' do 6 | 7 | let :params do 8 | { 9 | :password => 'secrete' 10 | } 11 | end 12 | 13 | context 'with default params' do 14 | it 'configures default auth' do 15 | is_expected.to contain_octavia_config('service_auth/auth_url').with_value('http://localhost:5000') 16 | is_expected.to contain_octavia_config('service_auth/username').with_value('octavia') 17 | is_expected.to contain_octavia_config('service_auth/project_name').with_value('services') 18 | is_expected.to contain_octavia_config('service_auth/password').with_value('secrete').with_secret(true) 19 | is_expected.to contain_octavia_config('service_auth/user_domain_name').with_value('Default') 20 | is_expected.to contain_octavia_config('service_auth/project_domain_name').with_value('Default') 21 | is_expected.to contain_octavia_config('service_auth/system_scope').with_value('') 22 | is_expected.to contain_octavia_config('service_auth/auth_type').with_value('password') 23 | is_expected.to contain_octavia_config('service_auth/region_name').with_value('') 24 | end 25 | end 26 | 27 | context 'when credentials are configured' do 28 | before do 29 | params.merge!({ 30 | :auth_url => 'http://127.0.0.1:5000', 31 | :username => 'some_user', 32 | :project_name => 'some_project_name', 33 | :user_domain_name => 'my_domain_name', 34 | :project_domain_name => 'our_domain_name', 35 | :auth_type => 'v3password', 36 | :region_name => 'regionOne', 37 | }) 38 | end 39 | 40 | it 'configures credentials' do 41 | is_expected.to contain_octavia_config('service_auth/auth_url').with_value('http://127.0.0.1:5000') 42 | is_expected.to contain_octavia_config('service_auth/username').with_value('some_user') 43 | is_expected.to contain_octavia_config('service_auth/project_name').with_value('some_project_name') 44 | is_expected.to contain_octavia_config('service_auth/password').with_value('secrete').with_secret(true) 45 | is_expected.to contain_octavia_config('service_auth/user_domain_name').with_value('my_domain_name') 46 | is_expected.to contain_octavia_config('service_auth/project_domain_name').with_value('our_domain_name') 47 | is_expected.to contain_octavia_config('service_auth/system_scope').with_value('') 48 | is_expected.to contain_octavia_config('service_auth/auth_type').with_value('v3password') 49 | is_expected.to contain_octavia_config('service_auth/region_name').with_value('regionOne') 50 | end 51 | end 52 | 53 | context 'when system_scope is set' do 54 | before do 55 | params.merge!( 56 | :system_scope => 'all' 57 | ) 58 | end 59 | it 'configures system-scoped credential' do 60 | is_expected.to contain_octavia_config('service_auth/project_domain_name').with_value('') 61 | is_expected.to contain_octavia_config('service_auth/project_name').with_value('') 62 | is_expected.to contain_octavia_config('service_auth/system_scope').with_value('all') 63 | end 64 | end 65 | end 66 | 67 | on_supported_os({ 68 | :supported_os => OSDefaults.get_supported_os 69 | }).each do |os,facts| 70 | context "on #{os}" do 71 | let (:facts) do 72 | facts.merge!(OSDefaults.get_facts()) 73 | end 74 | it_behaves_like 'service-auth' 75 | end 76 | end 77 | end 78 | -------------------------------------------------------------------------------- /spec/classes/octavia_wsgi_uwsgi_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'octavia::wsgi::uwsgi' do 4 | 5 | shared_examples 'octavia::wsgi::uwsgi' do 6 | context 'with default parameters' do 7 | it { 8 | should contain_class('octavia::deps') 9 | } 10 | 11 | it { 12 | is_expected.to contain_octavia_api_uwsgi_config('uwsgi/processes').with_value(facts[:os_workers]) 13 | is_expected.to contain_octavia_api_uwsgi_config('uwsgi/threads').with_value('32') 14 | is_expected.to contain_octavia_api_uwsgi_config('uwsgi/listen').with_value('100') 15 | } 16 | end 17 | end 18 | 19 | on_supported_os({ 20 | :supported_os => OSDefaults.get_supported_os 21 | }).each do |os,facts| 22 | context "on #{os}" do 23 | let (:facts) do 24 | facts.merge!(OSDefaults.get_facts({ 25 | :os_workers => 8, 26 | })) 27 | end 28 | it_behaves_like 'octavia::wsgi::uwsgi' 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_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 | require 'puppetlabs_spec_helper/module_spec_helper' 5 | require 'shared_examples' 6 | require 'puppet-openstack_spec_helper/facts' 7 | 8 | fixture_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures')) 9 | 10 | RSpec.configure do |c| 11 | c.alias_it_should_behave_like_to :it_configures, 'configures' 12 | c.alias_it_should_behave_like_to :it_raises, 'raises' 13 | 14 | c.module_path = File.join(fixture_path, 'modules') 15 | end 16 | 17 | at_exit { RSpec::Puppet::Coverage.report! } 18 | -------------------------------------------------------------------------------- /spec/spec_helper_acceptance.rb: -------------------------------------------------------------------------------- 1 | require 'puppet-openstack_spec_helper/litmus_spec_helper' 2 | -------------------------------------------------------------------------------- /spec/type_aliases/jobboardbackenddriver_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | describe 'Octavia::JobboardBackendDriver' do 4 | describe 'valid types' do 5 | context 'with valid types' do 6 | [ 7 | 'etcd_taskflow_driver', 8 | 'redis_taskflow_driver', 9 | 'zookeeper_taskflow_driver' 10 | ].each do |value| 11 | describe value.inspect do 12 | it { is_expected.to allow_value(value) } 13 | end 14 | end 15 | end 16 | end 17 | 18 | describe 'invalid types' do 19 | context 'with garbage inputs' do 20 | [ 21 | 'bad_taskflow_driver', 22 | 'bad', 23 | '' 24 | ].each do |value| 25 | describe value.inspect do 26 | it { is_expected.not_to allow_value(value) } 27 | end 28 | end 29 | end 30 | end 31 | end 32 | 33 | -------------------------------------------------------------------------------- /spec/unit/provider/octavia_api_uwsgi_config/openstackconfig_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | provider_class = Puppet::Type.type(:octavia_api_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::Octavia_api_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::Octavia_api_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::Octavia_api_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::Octavia_api_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/octavia_config/openstackconfig_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | provider_class = Puppet::Type.type(:octavia_config).provider(:openstackconfig) 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::Octavia_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::Octavia_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::Octavia_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::Octavia_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/octavia_ovn_provider_config/ini_setting_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | provider_class = Puppet::Type.type(:octavia_ovn_provider_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::Octavia_ovn_provider_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::Octavia_ovn_provider_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::Octavia_ovn_provider_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::Octavia_ovn_provider_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/type/octavia_api_uwsgi_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/octavia_api_uwsgi_config' 3 | 4 | describe 'Puppet::Type.type(:octavia_api_uwsgi_config)' do 5 | before :each do 6 | @octavia_api_uwsgi_config = Puppet::Type.type(:octavia_api_uwsgi_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should require a name' do 10 | expect { 11 | Puppet::Type.type(:octavia_api_uwsgi_config).new({}) 12 | }.to raise_error(Puppet::Error, 'Title or name must be provided') 13 | end 14 | 15 | it 'should not expect a name with whitespace' do 16 | expect { 17 | Puppet::Type.type(:octavia_api_uwsgi_config).new(:name => 'f oo') 18 | }.to raise_error(Puppet::Error, /Parameter name failed/) 19 | end 20 | 21 | it 'should fail when there is no section' do 22 | expect { 23 | Puppet::Type.type(:octavia_api_uwsgi_config).new(:name => 'foo') 24 | }.to raise_error(Puppet::Error, /Parameter name failed/) 25 | end 26 | 27 | it 'should not require a value when ensure is absent' do 28 | Puppet::Type.type(:octavia_api_uwsgi_config).new(:name => 'DEFAULT/foo', :ensure => :absent) 29 | end 30 | 31 | it 'should accept a valid value' do 32 | @octavia_api_uwsgi_config[:value] = 'bar' 33 | expect(@octavia_api_uwsgi_config[:value]).to eq('bar') 34 | end 35 | 36 | it 'should accept a value with whitespace' do 37 | @octavia_api_uwsgi_config[:value] = 'b ar' 38 | expect(@octavia_api_uwsgi_config[:value]).to eq('b ar') 39 | end 40 | 41 | it 'should accept valid ensure values' do 42 | @octavia_api_uwsgi_config[:ensure] = :present 43 | expect(@octavia_api_uwsgi_config[:ensure]).to eq(:present) 44 | @octavia_api_uwsgi_config[:ensure] = :absent 45 | expect(@octavia_api_uwsgi_config[:ensure]).to eq(:absent) 46 | end 47 | 48 | it 'should not accept invalid ensure values' do 49 | expect { 50 | @octavia_api_uwsgi_config[:ensure] = :latest 51 | }.to raise_error(Puppet::Error, /Invalid value/) 52 | end 53 | 54 | it 'should autorequire the package that install the file' do 55 | catalog = Puppet::Resource::Catalog.new 56 | anchor = Puppet::Type.type(:anchor).new(:name => 'octavia::install::end') 57 | catalog.add_resource anchor, @octavia_api_uwsgi_config 58 | dependency = @octavia_api_uwsgi_config.autorequire 59 | expect(dependency.size).to eq(1) 60 | expect(dependency[0].target).to eq(@octavia_api_uwsgi_config) 61 | expect(dependency[0].source).to eq(anchor) 62 | end 63 | 64 | end 65 | -------------------------------------------------------------------------------- /spec/unit/type/octavia_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/octavia_config' 3 | 4 | describe 'Puppet::Type.type(:octavia_config)' do 5 | before :each do 6 | @octavia_config = Puppet::Type.type(:octavia_config).new(:name => 'DEFAULT/foo', :value => 'bar') 7 | end 8 | 9 | it 'should require a name' do 10 | expect { 11 | Puppet::Type.type(:octavia_config).new({}) 12 | }.to raise_error(Puppet::Error, 'Title or name must be provided') 13 | end 14 | 15 | it 'should not expect a name with whitespace' do 16 | expect { 17 | Puppet::Type.type(:octavia_config).new(:name => 'f oo') 18 | }.to raise_error(Puppet::Error, /Parameter name failed/) 19 | end 20 | 21 | it 'should fail when there is no section' do 22 | expect { 23 | Puppet::Type.type(:octavia_config).new(:name => 'foo') 24 | }.to raise_error(Puppet::Error, /Parameter name failed/) 25 | end 26 | 27 | it 'should not require a value when ensure is absent' do 28 | Puppet::Type.type(:octavia_config).new(:name => 'DEFAULT/foo', :ensure => :absent) 29 | end 30 | 31 | it 'should accept a valid value' do 32 | @octavia_config[:value] = 'bar' 33 | expect(@octavia_config[:value]).to eq(['bar']) 34 | end 35 | 36 | it 'should accept a value with whitespace' do 37 | @octavia_config[:value] = 'b ar' 38 | expect(@octavia_config[:value]).to eq(['b ar']) 39 | end 40 | 41 | it 'should accept valid ensure values' do 42 | @octavia_config[:ensure] = :present 43 | expect(@octavia_config[:ensure]).to eq(:present) 44 | @octavia_config[:ensure] = :absent 45 | expect(@octavia_config[:ensure]).to eq(:absent) 46 | end 47 | 48 | it 'should not accept invalid ensure values' do 49 | expect { 50 | @octavia_config[:ensure] = :latest 51 | }.to raise_error(Puppet::Error, /Invalid value/) 52 | end 53 | 54 | it 'should autorequire the package that install the file' do 55 | catalog = Puppet::Resource::Catalog.new 56 | anchor = Puppet::Type.type(:anchor).new(:name => 'octavia::install::end') 57 | catalog.add_resource anchor, @octavia_config 58 | dependency = @octavia_config.autorequire 59 | expect(dependency.size).to eq(1) 60 | expect(dependency[0].target).to eq(@octavia_config) 61 | expect(dependency[0].source).to eq(anchor) 62 | end 63 | 64 | end 65 | -------------------------------------------------------------------------------- /spec/unit/type/octavia_ovn_provider_config_spec.rb: -------------------------------------------------------------------------------- 1 | require 'puppet' 2 | require 'puppet/type/octavia_ovn_provider_config' 3 | describe 'Puppet::Type.type(:octavia_ovn_provider_config)' do 4 | before :each do 5 | @octavia_ovn_provider_config = Puppet::Type.type(:octavia_ovn_provider_config).new(:name => 'DEFAULT/foo', :value => 'bar') 6 | end 7 | 8 | it 'should require a name' do 9 | expect { 10 | Puppet::Type.type(:octavia_ovn_provider_config).new({}) 11 | }.to raise_error(Puppet::Error, 'Title or name must be provided') 12 | end 13 | 14 | it 'should not expect a name with whitespace' do 15 | expect { 16 | Puppet::Type.type(:octavia_ovn_provider_config).new(:name => 'f oo') 17 | }.to raise_error(Puppet::Error, /Parameter name failed/) 18 | end 19 | 20 | it 'should fail when there is no section' do 21 | expect { 22 | Puppet::Type.type(:octavia_ovn_provider_config).new(:name => 'foo') 23 | }.to raise_error(Puppet::Error, /Parameter name failed/) 24 | end 25 | 26 | it 'should not require a value when ensure is absent' do 27 | Puppet::Type.type(:octavia_ovn_provider_config).new(:name => 'DEFAULT/foo', :ensure => :absent) 28 | end 29 | 30 | it 'should accept a valid value' do 31 | @octavia_ovn_provider_config[:value] = 'bar' 32 | expect(@octavia_ovn_provider_config[:value]).to eq('bar') 33 | end 34 | 35 | it 'should accept a value with whitespace' do 36 | @octavia_ovn_provider_config[:value] = 'b ar' 37 | expect(@octavia_ovn_provider_config[:value]).to eq('b ar') 38 | end 39 | 40 | it 'should accept valid ensure values' do 41 | @octavia_ovn_provider_config[:ensure] = :present 42 | expect(@octavia_ovn_provider_config[:ensure]).to eq(:present) 43 | @octavia_ovn_provider_config[:ensure] = :absent 44 | expect(@octavia_ovn_provider_config[:ensure]).to eq(:absent) 45 | end 46 | 47 | it 'should not accept invalid ensure values' do 48 | expect { 49 | @octavia_ovn_provider_config[:ensure] = :latest 50 | }.to raise_error(Puppet::Error, /Invalid value/) 51 | end 52 | 53 | it 'should autorequire the package that install the file' do 54 | catalog = Puppet::Resource::Catalog.new 55 | anchor = Puppet::Type.type(:anchor).new(:name => 'octavia::install::end') 56 | catalog.add_resource anchor, @octavia_ovn_provider_config 57 | dependency = @octavia_ovn_provider_config.autorequire 58 | expect(dependency.size).to eq(1) 59 | expect(dependency[0].target).to eq(@octavia_ovn_provider_config) 60 | expect(dependency[0].source).to eq(anchor) 61 | end 62 | 63 | 64 | end 65 | -------------------------------------------------------------------------------- /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/jobboardbackenddriver.pp: -------------------------------------------------------------------------------- 1 | type Octavia::JobboardBackendDriver = Enum[ 2 | 'etcd_taskflow_driver', 3 | 'redis_taskflow_driver', 4 | 'zookeeper_taskflow_driver' 5 | ] 6 | --------------------------------------------------------------------------------