# === Parameters:
 #
 # [*controller_host*]
+#  (Deprecated)Host or group of hosts to load-balance the services
+#  Can be a string or an array.
+#  Defaults to undef
+#
+# [*controller_hosts*]
 #  Host or group of hosts to load-balance the services
 #  Can be a string or an array.
 #  Defaults to undef
 #  Defaults to false
 #
 class tripleo::loadbalancer (
-  $controller_host,
   $controller_virtual_ip,
   $control_virtual_interface,
   $public_virtual_interface,
   $public_virtual_ip,
+  $controller_host           = undef,
+  $controller_hosts          = undef,
   $galera_master_hostname    = undef,
   $keystone_admin            = false,
   $keystone_public           = false,
   $rabbitmq                  = false,
 ) {
 
+  if !$controller_host and !$controller_hosts {
+    fail('$controller_hosts or $controller_host (now deprecated) is a mandatory parameter')
+  }
+  if $controller_hosts {
+    $controller_hosts_real = $controller_hosts
+  } else {
+    warning('$controller_host has been deprecated in favor of $controller_hosts')
+    $controller_hosts_real = $controller_host
+  }
+
   case $::osfamily {
     'RedHat': {
       $keepalived_name_is_process = false
     haproxy::balancermember { 'keystone_admin':
       listening_service => 'keystone_admin',
       ports             => '35357',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'keystone_public':
       listening_service => 'keystone_public',
       ports             => '5000',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'neutron':
       listening_service => 'neutron',
       ports             => '9696',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'cinder':
       listening_service => 'cinder',
       ports             => '8776',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'glance_api':
       listening_service => 'glance_api',
       ports             => '9292',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'glance_registry':
       listening_service => 'glance_registry',
       ports             => '9191',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'nova_ec2':
       listening_service => 'nova_ec2',
       ports             => '8773',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'nova_osapi':
       listening_service => 'nova_osapi',
       ports             => '8774',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'nova_metadata':
       listening_service => 'nova_metadata',
       ports             => '8775',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'nova_novncproxy':
       listening_service => 'nova_novncproxy',
       ports             => '6080',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'ceilometer':
       listening_service => 'ceilometer',
       ports             => '8777',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => [],
     }
   }
     haproxy::balancermember { 'swift_proxy_server':
       listening_service => 'swift_proxy_server',
       ports             => '8080',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'heat_api':
       listening_service => 'heat_api',
       ports             => '8004',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'heat_cloudwatch':
       listening_service => 'heat_cloudwatch',
       ports             => '8003',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'heat_cfn':
       listening_service => 'heat_cfn',
       ports             => '8000',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'horizon':
       listening_service => 'horizon',
       ports             => '80',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }
     haproxy::balancermember { 'mysql':
       listening_service => 'mysql',
       ports             => '3306',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => $options_real,
     }
   }
     haproxy::balancermember { 'rabbitmq':
       listening_service => 'rabbitmq',
       ports             => '5672',
-      ipaddresses       => $controller_host,
+      ipaddresses       => $controller_hosts_real,
       options           => ['check', 'inter 2000', 'rise 2', 'fall 5'],
     }
   }