Neutron/LBaaS/HAProxyDriver

/!\ Draft

= Scope =

This document describes HAProxy driver for LBaaS.

= Implementation Details =

The driver is implemented according to Quantum/LBaaS/DriverAPI. It supports version 1.4.

Features

 * Protocols: HTTP, TCP
 * LB algorithms: round-robin, least-connections, hash-source, hash-uri
 * Session persistence: source ip, http cookie, application cookie
 * Health monitoring: TCP, HTTP, HTTPS (Note: HAProxy config allows only one health monitor per pool)
 * Stats retrieval per pools, members

Config Life Cycle
The driver uses following algorithm when configuring HAProxy:
 * fetch config file from remote device through SSH
 * parse config file
 * do appropriate changes in the config
 * create tmp file with new config on the remote device
 * check new config file with haproxy
 * if valid - replace old config file with new one and restart haproxy service, otherwise raise error