added avinetworks lbaas funcionality

Change-Id: I3a511d89b52dab49f74870bdb6c9279b76cb09b3
diff --git a/README.rst b/README.rst
index efa1e7c..8a8d5c7 100644
--- a/README.rst
+++ b/README.rst
@@ -58,6 +58,35 @@
 because a single request may fail (timeout). This is enabled with both
 parameters *allow_pagination* and *pagination_max_limit* as shown above.
 
+Neutron lbaas provides on the controller node
+
+.. code-block:: yaml
+
+  neutron:
+    server:
+      lbaas:
+        enabled: true
+        providers:
+          avi_adc:
+            enabled: true
+            engine: avinetworks
+            controller_address: 10.182.129.239
+            controller_user: admin
+            controller_password: Cloudlab2016
+            controller_cloud_name: Default-Cloud
+          avi_adc2:
+            engine: avinetworks
+            ...
+
+Note: If you want contrail lbaas then backend is only required. Lbaas in pillar should be define only if it should be disabled.
+
+.. code-block:: yaml
+
+  neutron:
+    server:
+      lbaas:
+        enabled: disabled
+
 
 Neutron VXLAN tenant networks with Network Nodes (with DVR for East-West
  and Network node for North-South)
diff --git a/neutron/files/mitaka/neutron-server.conf.Debian b/neutron/files/mitaka/neutron-server.conf.Debian
index bc05c66..a18203e 100644
--- a/neutron/files/mitaka/neutron-server.conf.Debian
+++ b/neutron/files/mitaka/neutron-server.conf.Debian
@@ -40,7 +40,9 @@
 
 core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
 
-service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
+service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin{%- if server.lbaas is defined -%}
+,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2
+{%- endif -%}
 
 {% endif %}
 
@@ -1627,7 +1629,31 @@
 # cipher list format. (string value)
 #ciphers = <None>
 [service_providers]
-{% if server.backend.engine == "contrail" %}
+
+{% if server.lbaas is defined -%}
+
+{%- if server.lbaas.enabled -%}
+
+{%- for lbaas_name, lbaas in server.lbaas.providers.iteritems() %}
+
+{%- if lbaas.engine == "avinetworks" -%}
+service_provider=LOADBALANCERV2:{{ lbaas_name }}:neutron_lbaas.drivers.avi.avi_driver.AviDriver
+
+[{{ lbaas_name }}]
+address={{ lbaas.controller_address }}
+user={{ lbaas.controller_user }}
+password={{ lbaas.controller_password }}
+cloud={{ lbaas.controller_cloud_name }}
+{%- endif -%}
+
+{%- endfor -%}
+
+{% endif %}
+
+{% elif server.backend.engine == "contrail" %}
+
 service_provider = LOADBALANCER:Opencontrail:neutron_plugin_contrail.plugins.opencontrail.loadbalancer.driver.OpencontrailLoadbalancerDriver:default
+
 {% include "neutron/files/"+server.version+"/ContrailPlugin.ini" %}
+
 {% endif %}