Merge "Set default API_WORKERS"
diff --git a/lib/ceilometer b/lib/ceilometer
index 0449254..242ff6c 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -154,7 +154,7 @@
 
     if [ "$CEILOMETER_BACKEND" = 'mysql' ] || [ "$CEILOMETER_BACKEND" = 'postgresql' ] ; then
         iniset $CEILOMETER_CONF database connection `database_connection_url ceilometer`
-        iniset $CEILOMETER_CONF DEFAULT collector_workers $(( ($(nproc) + 1) / 2 ))
+        iniset $CEILOMETER_CONF DEFAULT collector_workers $API_WORKERS
     else
         iniset $CEILOMETER_CONF database connection mongodb://localhost:27017/ceilometer
         configure_mongodb
diff --git a/lib/cinder b/lib/cinder
index 5c487a2..e767fa8 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -307,9 +307,7 @@
     iniset $CINDER_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
     iniset $CINDER_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
 
-    if [ -n "$API_WORKERS" ]; then
-        iniset $CINDER_CONF DEFAULT osapi_volume_workers "$API_WORKERS"
-    fi
+    iniset $CINDER_CONF DEFAULT osapi_volume_workers "$API_WORKERS"
 }
 
 # create_cinder_accounts() - Set up common required cinder accounts
diff --git a/lib/glance b/lib/glance
index d6d12ca..054a7af 100644
--- a/lib/glance
+++ b/lib/glance
@@ -138,9 +138,7 @@
     # sections.
     iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
 
-    if [ -n "$API_WORKERS" ]; then
-        iniset $GLANCE_API_CONF DEFAULT workers "$API_WORKERS"
-    fi
+    iniset $GLANCE_API_CONF DEFAULT workers "$API_WORKERS"
 
     # Store the images in swift if enabled.
     if is_service_enabled s-proxy; then
diff --git a/lib/nova b/lib/nova
index c3558cb..0fed00d 100644
--- a/lib/nova
+++ b/lib/nova
@@ -519,11 +519,9 @@
     iniset_rpc_backend nova $NOVA_CONF DEFAULT
     iniset $NOVA_CONF glance api_servers "$GLANCE_HOSTPORT"
 
-    if [ -n "$API_WORKERS" ]; then
-        iniset $NOVA_CONF DEFAULT osci_compute_workers "$API_WORKERS"
-        iniset $NOVA_CONF DEFAULT ec2_workers "$API_WORKERS"
-        iniset $NOVA_CONF DEFAULT metadata_workers "$API_WORKERS"
-    fi
+    iniset $NOVA_CONF DEFAULT osci_compute_workers "$API_WORKERS"
+    iniset $NOVA_CONF DEFAULT ec2_workers "$API_WORKERS"
+    iniset $NOVA_CONF DEFAULT metadata_workers "$API_WORKERS"
 }
 
 function init_nova_cells {
diff --git a/stackrc b/stackrc
index 936eb9c..580fabf 100644
--- a/stackrc
+++ b/stackrc
@@ -511,10 +511,11 @@
 # Allow the use of an alternate protocol (such as https) for service endpoints
 SERVICE_PROTOCOL=${SERVICE_PROTOCOL:-http}
 
-# Sets the maximum number of workers for various services and can restrict
+# Sets the maximum number of workers for most services to reduce
 # the memory used where there are a large number of CPUs present
 # (the default number of workers for many services is the number of CPUs)
-# API_WORKERS=4
+# Also sets the minimum number of workers to 2.
+API_WORKERS=${API_WORKERS:=$(( ($(nproc)/2)<2 ? 2 : ($(nproc)/2) ))}
 
 # Local variables:
 # mode: shell-script