diff --git a/jobs/cloud_controller_ng/spec b/jobs/cloud_controller_ng/spec index a50f109456..0a4fd326ab 100644 --- a/jobs/cloud_controller_ng/spec +++ b/jobs/cloud_controller_ng/spec @@ -864,6 +864,10 @@ properties: default: 1.0 description: "Exponential backoff for service related polling jobs. Default is 1.0, which means there is no exponential backoff." + cc.broker_client_max_async_poll_interval_seconds: + default: 86400 + description: "Maximum polling interval for service related polling jobs. If the retry-after header or the calculated next polling interval exceeds this value, CC will use this value instead. Default is 24 hours." + cc.broker_client_response_parser.log_errors: default: false description: "Log errors happening when parsing service broker responses." diff --git a/jobs/cloud_controller_ng/templates/cloud_controller_ng.yml.erb b/jobs/cloud_controller_ng/templates/cloud_controller_ng.yml.erb index 076cbd9386..2b3068ee2e 100644 --- a/jobs/cloud_controller_ng/templates/cloud_controller_ng.yml.erb +++ b/jobs/cloud_controller_ng/templates/cloud_controller_ng.yml.erb @@ -436,6 +436,7 @@ broker_client_timeout_seconds: <%= p("cc.broker_client_timeout_seconds") %> broker_client_default_async_poll_interval_seconds: <%= p('cc.broker_client_default_async_poll_interval_seconds') %> broker_client_max_async_poll_duration_minutes: <%= p('cc.broker_client_max_async_poll_duration_minutes') %> broker_client_async_poll_exponential_backoff_rate: <%= p('cc.broker_client_async_poll_exponential_backoff_rate') %> +broker_client_max_async_poll_interval_seconds: <%= p('cc.broker_client_max_async_poll_interval_seconds') %> broker_client_response_parser: log_errors: <%= p("cc.broker_client_response_parser.log_errors") %> diff --git a/jobs/cloud_controller_worker/spec b/jobs/cloud_controller_worker/spec index c6685c4427..2e405ae667 100644 --- a/jobs/cloud_controller_worker/spec +++ b/jobs/cloud_controller_worker/spec @@ -504,6 +504,10 @@ properties: default: 1.0 description: "Exponential backoff for service related polling jobs. Default is 1.0, which means there is no exponential backoff." + cc.broker_client_max_async_poll_interval_seconds: + default: 86400 + description: "Maximum polling interval for service related polling jobs. If the retry-after header or the calculated next polling interval exceeds this value, CC will use this value instead. Default is 24 hours." + cc.broker_client_response_parser.log_errors: default: false description: "Log errors happening when parsing service broker responses." diff --git a/jobs/cloud_controller_worker/templates/cloud_controller_ng.yml.erb b/jobs/cloud_controller_worker/templates/cloud_controller_ng.yml.erb index db439071b3..1832e1164a 100644 --- a/jobs/cloud_controller_worker/templates/cloud_controller_ng.yml.erb +++ b/jobs/cloud_controller_worker/templates/cloud_controller_ng.yml.erb @@ -272,6 +272,7 @@ broker_client_timeout_seconds: <%= p("cc.broker_client_timeout_seconds") %> broker_client_default_async_poll_interval_seconds: <%= p('cc.broker_client_default_async_poll_interval_seconds') %> broker_client_max_async_poll_duration_minutes: <%= p('cc.broker_client_max_async_poll_duration_minutes') %> broker_client_async_poll_exponential_backoff_rate: <%= p('cc.broker_client_async_poll_exponential_backoff_rate') %> +broker_client_max_async_poll_interval_seconds: <%= p('cc.broker_client_max_async_poll_interval_seconds') %> broker_client_response_parser: log_errors: <%= p("cc.broker_client_response_parser.log_errors") %> diff --git a/spec/cloud_controller_ng/cloud_controller_ng_spec.rb b/spec/cloud_controller_ng/cloud_controller_ng_spec.rb index 0caaff1353..0aebd32d29 100644 --- a/spec/cloud_controller_ng/cloud_controller_ng_spec.rb +++ b/spec/cloud_controller_ng/cloud_controller_ng_spec.rb @@ -562,6 +562,24 @@ module Test end end + describe 'broker_client_max_async_poll_interval_seconds config' do + it 'defaults to 86400 seconds' do + template_hash = YAML.safe_load(template.render(merged_manifest_properties, consumes: links)) + expect(template_hash['broker_client_max_async_poll_interval_seconds']).to eq(86_400) + end + + context 'when set in the manifest' do + before do + merged_manifest_properties['cc']['broker_client_max_async_poll_interval_seconds'] = 3600 + end + + it 'renders the value from the manifest' do + template_hash = YAML.safe_load(template.render(merged_manifest_properties, consumes: links)) + expect(template_hash['broker_client_max_async_poll_interval_seconds']).to eq(3600) + end + end + end + describe 'broker_client_response_parser config' do context 'when nothing is configured' do it 'renders default values' do diff --git a/spec/cloud_controller_worker/cloud_controller_worker_spec.rb b/spec/cloud_controller_worker/cloud_controller_worker_spec.rb index 819d4b42fd..e02addb549 100644 --- a/spec/cloud_controller_worker/cloud_controller_worker_spec.rb +++ b/spec/cloud_controller_worker/cloud_controller_worker_spec.rb @@ -211,6 +211,24 @@ module Test end end + describe 'broker_client_max_async_poll_interval_seconds config' do + it 'defaults to 86400 seconds' do + template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links)) + expect(template_hash['broker_client_max_async_poll_interval_seconds']).to eq(86_400) + end + + context 'when set in the manifest' do + before do + manifest_properties['cc']['broker_client_max_async_poll_interval_seconds'] = 3600 + end + + it 'renders the value from the manifest' do + template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links)) + expect(template_hash['broker_client_max_async_poll_interval_seconds']).to eq(3600) + end + end + end + describe 'broker_client_response_parser config' do context 'when nothing is configured' do it 'renders default values' do