diff --git a/README.md b/README.md index d579908..5e78bb8 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,7 @@ Attributes for the Image service are in the ['openstack']['image'] namespace. * `openstack['image']['service_tenant_name']` - Tenant name used by glance when interacting with keystone - used in the API and registry paste.ini files * `openstack['image']['service_user']` - User name used by glance when interacting with keystone - used in the API and registry paste.ini files * `openstack['image']['service_role']` - User role used by glance when interacting with keystone - used in the API and registry paste.ini files +* `openstack['image']['api']['workers']` - Set the number of glance api workers. * `openstack['image']['api']['show_image_direct_url']` - Allow glance to return URL referencing where data is stored on the backend. Default 'False' * `openstack['image']['api']['auth']['cache_dir']` - Defaults to `/var/cache/glance/api`. Directory where `auth_token` middleware writes certificates for glance-api * `openstack['image']['registry']['auth']['cache_dir']` - Defaults to `/var/cache/glance/registry`. Directory where `auth_token` middleware writes certificates for glance-registry diff --git a/attributes/default.rb b/attributes/default.rb index e18c52a..7861caf 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -43,6 +43,9 @@ default['openstack']['image']['service_tenant_name'] = 'service' default['openstack']['image']['service_user'] = 'glance' default['openstack']['image']['service_role'] = 'admin' +# Set the number of api workers +default['openstack']['image']['api']['workers'] = [8, node['cpu']['total'].to_i].min + # Return the URL that references where the data is stored on the backend. default['openstack']['image']['api']['show_image_direct_url'] = 'False' diff --git a/spec/api_spec.rb b/spec/api_spec.rb index 09ec015..ba42ede 100644 --- a/spec/api_spec.rb +++ b/spec/api_spec.rb @@ -123,6 +123,18 @@ describe 'openstack-image::api' do /^flavor = keystone\+cachemanagement$/) end + it 'has configurable api workers setting' do + node.set['openstack']['image']['api']['workers'] = 10 + expect(chef_run).to render_file(file.name).with_content( + /^workers = 10$/) + end + + it 'confirms default min value is set' do + node.set['cpu']['total'] = 10 + expect(chef_run).to render_file(file.name).with_content( + /^workers = 8$/) + end + it 'sets show_image_direct_url appropriately' do node.set['openstack']['image']['api']['show_image_direct_url'] = 'True' expect(chef_run).to render_file(file.name).with_content( diff --git a/spec/client-redhat_spec.rb b/spec/client-redhat_spec.rb index adc007c..7361a2e 100644 --- a/spec/client-redhat_spec.rb +++ b/spec/client-redhat_spec.rb @@ -8,6 +8,7 @@ describe 'openstack-image::client' do let(:runner) { ChefSpec::Runner.new(REDHAT_OPTS) } let(:node) { runner.node } let(:chef_run) do + node.set_unless['cpu']['total'] = 1 runner.converge(described_recipe) end diff --git a/spec/client_spec.rb b/spec/client_spec.rb index 0cac41a..827d033 100644 --- a/spec/client_spec.rb +++ b/spec/client_spec.rb @@ -8,6 +8,7 @@ describe 'openstack-image::client' do let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) } let(:node) { runner.node } let(:chef_run) do + node.set_unless['cpu']['total'] = 1 runner.converge(described_recipe) end diff --git a/spec/identity_registration_spec.rb b/spec/identity_registration_spec.rb index 1844c88..0c4c609 100644 --- a/spec/identity_registration_spec.rb +++ b/spec/identity_registration_spec.rb @@ -5,6 +5,7 @@ describe 'openstack-image::identity_registration' do let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) } let(:node) { runner.node } let(:chef_run) do + node.set_unless['cpu']['total'] = 1 runner.converge(described_recipe) end diff --git a/spec/image_upload_spec.rb b/spec/image_upload_spec.rb index 324081c..f096071 100644 --- a/spec/image_upload_spec.rb +++ b/spec/image_upload_spec.rb @@ -7,6 +7,7 @@ describe 'openstack-image::image_upload' do let(:options) { UBUNTU_OPTS.merge(step_into: 'openstack_image_image') } let(:node) { runner.node } let(:chef_run) do + node.set_unless['cpu']['total'] = 1 runner.converge(described_recipe) end diff --git a/spec/registry-redhat_spec.rb b/spec/registry-redhat_spec.rb index dcfe421..5f63b90 100644 --- a/spec/registry-redhat_spec.rb +++ b/spec/registry-redhat_spec.rb @@ -6,6 +6,7 @@ describe 'openstack-image::registry' do let(:runner) { ChefSpec::Runner.new(REDHAT_OPTS) } let(:node) { runner.node } let(:chef_run) do + node.set_unless['cpu']['total'] = 1 runner.converge(described_recipe) end diff --git a/spec/registry_spec.rb b/spec/registry_spec.rb index 85c9ce8..356d70e 100644 --- a/spec/registry_spec.rb +++ b/spec/registry_spec.rb @@ -12,6 +12,7 @@ describe 'openstack-image::registry' do let(:runner) { ChefSpec::Runner.new(UBUNTU_OPTS) } let(:node) { runner.node } let(:chef_run) do + node.set_unless['cpu']['total'] = 1 runner.converge(described_recipe) end diff --git a/templates/default/glance-api.conf.erb b/templates/default/glance-api.conf.erb index 064a01f..be64e2a 100644 --- a/templates/default/glance-api.conf.erb +++ b/templates/default/glance-api.conf.erb @@ -26,7 +26,7 @@ backlog = 4096 # may improve performance (especially if using SSL with # compression turned on). It is typically recommended to set # this value to the number of CPUs present on your machine. -workers = <%= node["cpu"]["total"] %> +workers = <%= node["openstack"]["image"]["api"]["workers"] %> # SQLAlchemy connection string for the reference implementation # registry server. Any valid SQLAlchemy connection string is fine.