Stop Neutron advanced service external processes

Some of Neutron advanced services (LBaaS, VPNaaS, ....) creates
external processes and they should be stopped in unstack.
This commit defines neutron_<XaaS>_stop functions for all services
and implements the cleanup logics if necessary.

Also cleanup_neutron removes netns used by LBaaS haproxy.

Change-Id: Ied3a2c374ffcb6b59ecaf1027fb6e6083eded2ae
diff --git a/lib/neutron b/lib/neutron
index b05b16d..851b2ac 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -508,6 +508,19 @@
         pid=$(ps aux | awk '/neutron-ns-metadata-proxy/ { print $2 }')
         [ ! -z "$pid" ] && sudo kill -9 $pid
     fi
+
+    if is_service_enabled q-lbaas; then
+        neutron_lbaas_stop
+    fi
+    if is_service_enabled q-fwaas; then
+        neutron_fwaas_stop
+    fi
+    if is_service_enabled q-vpn; then
+        neutron_vpn_stop
+    fi
+    if is_service_enabled q-metering; then
+        neutron_metering_stop
+    fi
 }
 
 # cleanup_neutron() - Remove residual data files, anything left over from previous
@@ -518,7 +531,7 @@
     fi
 
     # delete all namespaces created by neutron
-    for ns in $(sudo ip netns list | grep -o -e qdhcp-[0-9a-f\-]* -e qrouter-[0-9a-f\-]*); do
+    for ns in $(sudo ip netns list | grep -o -E '(qdhcp|qrouter|qlbaas)-[0-9a-f-]*'); do
         sudo ip netns delete ${ns}
     done
 }