From 3b598da6fe7548431093c4b8bf7108daf8d0e747 Mon Sep 17 00:00:00 2001 From: Juan Antonio Osorio Robles Date: Wed, 24 Aug 2016 09:02:07 +0300 Subject: [PATCH] Add support for new vendordata plugins A new way of using vendordata plugins was introduced recently. So this adds support for the parameters that it requires. Change-Id: I46dc7974799875559ce970f718377fa2f4b67a6f --- manifests/api.pp | 86 ++++++++++++++----- ...rdata-plugin-support-6880c73c27c87d74.yaml | 3 + spec/classes/nova_api_spec.rb | 12 +++ 3 files changed, 79 insertions(+), 22 deletions(-) create mode 100644 releasenotes/notes/Add-new-vendordata-plugin-support-6880c73c27c87d74.yaml diff --git a/manifests/api.pp b/manifests/api.pp index 38102b542..588705179 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -139,6 +139,26 @@ # information from a JSON file, whose path is configured by this option # Defaults to $::os_service_default # +# [*vendordata_providers*] +# (optional) vendordata providers are how deployers can provide metadata via +# configdrive and metadata that is specific to their deployment. There are +# currently two supported providers: StaticJSON and DynamicJSON. +# Defaults to $::os_service_default +# +# [*vendordata_dynamic_targets*] +# (optional) A list of targets for the dynamic vendordata provider. These +# targets are of the form @. +# Defaults to $::os_service_default +# +# [*vendordata_dynamic_connect_timeout*] +# (optional) Maximum wait time for an external REST service to connect. +# Defaults to $::os_service_default +# +# [*vendordata_dynamic_read_timeout*] +# (optional) Maximum wait time for an external REST service to return data +# once connected. +# Defaults to $::os_service_default +# # [*osapi_max_limit*] # (optional) This option is limit the maximum number of items in a single response. # Defaults to $::os_service_default @@ -261,6 +281,10 @@ class nova::api( $enable_proxy_headers_parsing = $::os_service_default, $metadata_cache_expiration = $::os_service_default, $vendordata_jsonfile_path = $::os_service_default, + $vendordata_providers = $::os_service_default, + $vendordata_dynamic_targets = $::os_service_default, + $vendordata_dynamic_connect_timeout = $::os_service_default, + $vendordata_dynamic_read_timeout = $::os_service_default, $osapi_max_limit = $::os_service_default, $osapi_compute_link_prefix = $::os_service_default, $osapi_glance_link_prefix = $::os_service_default, @@ -341,6 +365,20 @@ class nova::api( } + if !is_service_default($vendordata_providers) and !empty($vendordata_providers){ + validate_array($vendordata_providers) + $vendordata_providers_real = join($vendordata_providers, ',') + } else { + $vendordata_providers_real = $::os_service_default + } + + if !is_service_default($vendordata_dynamic_targets) and !empty($vendordata_dynamic_targets){ + validate_array($vendordata_dynamic_targets) + $vendordata_dynamic_targets_real = join($vendordata_dynamic_targets, ',') + } else { + $vendordata_dynamic_targets_real = $::os_service_default + } + # metadata can't be run in wsgi so we have to enable it in eventlet anyway. if ('metadata' in $enabled_apis and $service_name == 'httpd') { $enable_metadata = true @@ -387,28 +425,32 @@ class nova::api( } nova_config { - 'wsgi/api_paste_config': value => $api_paste_config; - 'DEFAULT/enabled_apis': value => join($enabled_apis_real, ','); - 'DEFAULT/osapi_compute_listen': value => $api_bind_address; - 'DEFAULT/metadata_listen': value => $metadata_listen; - 'DEFAULT/metadata_listen_port': value => $metadata_listen_port; - 'DEFAULT/osapi_compute_listen_port': value => $osapi_compute_listen_port; - 'DEFAULT/osapi_volume_listen': value => $api_bind_address; - 'DEFAULT/osapi_compute_workers': value => $osapi_compute_workers; - 'DEFAULT/metadata_workers': value => $metadata_workers; - 'DEFAULT/use_forwarded_for': value => $use_forwarded_for; - 'DEFAULT/default_floating_pool': value => $default_floating_pool; - 'DEFAULT/fping_path': value => $fping_path; - 'DEFAULT/metadata_cache_expiration': value => $metadata_cache_expiration; - 'DEFAULT/vendordata_jsonfile_path': value => $vendordata_jsonfile_path; - 'DEFAULT/osapi_max_limit': value => $osapi_max_limit; - 'DEFAULT/osapi_compute_link_prefix': value => $osapi_compute_link_prefix; - 'DEFAULT/osapi_glance_link_prefix': value => $osapi_glance_link_prefix; - 'DEFAULT/osapi_hide_server_address_states': value => $osapi_hide_server_address_states; - 'DEFAULT/allow_instance_snapshots': value => $allow_instance_snapshots; - 'DEFAULT/enable_network_quota': value => $enable_network_quota; - 'DEFAULT/enable_instance_password': value => $enable_instance_password; - 'DEFAULT/password_length': value => $password_length; + 'wsgi/api_paste_config': value => $api_paste_config; + 'DEFAULT/enabled_apis': value => join($enabled_apis_real, ','); + 'DEFAULT/osapi_compute_listen': value => $api_bind_address; + 'DEFAULT/metadata_listen': value => $metadata_listen; + 'DEFAULT/metadata_listen_port': value => $metadata_listen_port; + 'DEFAULT/osapi_compute_listen_port': value => $osapi_compute_listen_port; + 'DEFAULT/osapi_volume_listen': value => $api_bind_address; + 'DEFAULT/osapi_compute_workers': value => $osapi_compute_workers; + 'DEFAULT/metadata_workers': value => $metadata_workers; + 'DEFAULT/use_forwarded_for': value => $use_forwarded_for; + 'DEFAULT/default_floating_pool': value => $default_floating_pool; + 'DEFAULT/fping_path': value => $fping_path; + 'DEFAULT/metadata_cache_expiration': value => $metadata_cache_expiration; + 'DEFAULT/vendordata_jsonfile_path': value => $vendordata_jsonfile_path; + 'DEFAULT/vendordata_providers': value => $vendordata_providers_real; + 'DEFAULT/vendordata_dynamic_targets': value => $vendordata_dynamic_targets_real; + 'DEFAULT/vendordata_dynamic_connect_timeout': value => $vendordata_dynamic_connect_timeout; + 'DEFAULT/vendordata_dynamic_read_timeout': value => $vendordata_dynamic_read_timeout; + 'DEFAULT/osapi_max_limit': value => $osapi_max_limit; + 'DEFAULT/osapi_compute_link_prefix': value => $osapi_compute_link_prefix; + 'DEFAULT/osapi_glance_link_prefix': value => $osapi_glance_link_prefix; + 'DEFAULT/osapi_hide_server_address_states': value => $osapi_hide_server_address_states; + 'DEFAULT/allow_instance_snapshots': value => $allow_instance_snapshots; + 'DEFAULT/enable_network_quota': value => $enable_network_quota; + 'DEFAULT/enable_instance_password': value => $enable_instance_password; + 'DEFAULT/password_length': value => $password_length; } oslo::middleware {'nova_config': diff --git a/releasenotes/notes/Add-new-vendordata-plugin-support-6880c73c27c87d74.yaml b/releasenotes/notes/Add-new-vendordata-plugin-support-6880c73c27c87d74.yaml new file mode 100644 index 000000000..16e71905f --- /dev/null +++ b/releasenotes/notes/Add-new-vendordata-plugin-support-6880c73c27c87d74.yaml @@ -0,0 +1,3 @@ +--- +features: + - Adds support to configure the new vendordata plugins for nova. diff --git a/spec/classes/nova_api_spec.rb b/spec/classes/nova_api_spec.rb index 2f65733e9..3bfbe2b24 100644 --- a/spec/classes/nova_api_spec.rb +++ b/spec/classes/nova_api_spec.rb @@ -67,6 +67,10 @@ describe 'nova::api' do is_expected.to contain_nova_config('oslo_middleware/enable_proxy_headers_parsing').with('value' => '') is_expected.to contain_nova_config('DEFAULT/metadata_cache_expiration').with('value' => '') is_expected.to contain_nova_config('DEFAULT/vendordata_jsonfile_path').with('value' => '') + is_expected.to contain_nova_config('DEFAULT/vendordata_providers').with('value' => '') + is_expected.to contain_nova_config('DEFAULT/vendordata_dynamic_targets').with('value' => '') + is_expected.to contain_nova_config('DEFAULT/vendordata_dynamic_connect_timeout').with('value' => '') + is_expected.to contain_nova_config('DEFAULT/vendordata_dynamic_read_timeout').with('value' => '') is_expected.to contain_nova_config('DEFAULT/osapi_max_limit').with('value' => '') is_expected.to contain_nova_config('DEFAULT/osapi_compute_link_prefix').with('value' => '') is_expected.to contain_nova_config('DEFAULT/osapi_glance_link_prefix').with('value' => '') @@ -107,6 +111,10 @@ describe 'nova::api' do :enable_proxy_headers_parsing => true, :metadata_cache_expiration => 15, :vendordata_jsonfile_path => '/tmp', + :vendordata_providers => ['StaticJSON', 'DynamicJSON'], + :vendordata_dynamic_targets => ['join@http://127.0.0.1:9999/v1/'], + :vendordata_dynamic_connect_timeout => 30, + :vendordata_dynamic_read_timeout => 30, :osapi_max_limit => 1000, :osapi_compute_link_prefix => 'https://10.0.0.1:7777/', :osapi_glance_link_prefix => 'https://10.0.0.1:6666/', @@ -161,6 +169,10 @@ describe 'nova::api' do is_expected.to contain_nova_config('DEFAULT/default_floating_pool').with('value' => 'public') is_expected.to contain_nova_config('DEFAULT/metadata_cache_expiration').with('value' => '15') is_expected.to contain_nova_config('DEFAULT/vendordata_jsonfile_path').with('value' => '/tmp') + is_expected.to contain_nova_config('DEFAULT/vendordata_providers').with('value' => 'StaticJSON,DynamicJSON') + is_expected.to contain_nova_config('DEFAULT/vendordata_dynamic_targets').with('value' => 'join@http://127.0.0.1:9999/v1/') + is_expected.to contain_nova_config('DEFAULT/vendordata_dynamic_connect_timeout').with('value' => '30') + is_expected.to contain_nova_config('DEFAULT/vendordata_dynamic_read_timeout').with('value' => '30') is_expected.to contain_nova_config('DEFAULT/osapi_max_limit').with('value' => '1000') is_expected.to contain_nova_config('DEFAULT/osapi_compute_link_prefix').with('value' => 'https://10.0.0.1:7777/') is_expected.to contain_nova_config('DEFAULT/osapi_glance_link_prefix').with('value' => 'https://10.0.0.1:6666/')