Add octaviav2

V2 stands for using raw REST API requests rather than
python clients which creates problems with not
versioned salt formulas.

Also created executable modules needed and states
to maintain loadbalancers

Also added verify api step for upgrade

Change-Id: If62acd656bdb678e22acfa6f260b01eb73604676
Related-Prod: PROD-22187
diff --git a/_modules/octaviav2/loadbalancers.py b/_modules/octaviav2/loadbalancers.py
new file mode 100644
index 0000000..451880d
--- /dev/null
+++ b/_modules/octaviav2/loadbalancers.py
@@ -0,0 +1,47 @@
+from octaviav2.common import send
+from octaviav2.common import get_by_name_or_uuid
+
+try:
+    from urllib.parse import urlencode
+except ImportError:
+    from urllib import urlencode
+
+RESOURCE_LIST_KEY = 'loadbalancers'
+
+
+@send('get')
+def loadbalancer_list(**kwargs):
+    url = '/v2.0/lbaas/loadbalancers?{}'.format(urlencode(kwargs))
+    return url, {}
+
+@get_by_name_or_uuid(loadbalancer_list, RESOURCE_LIST_KEY)
+@send('get')
+def loadbalancer_get_details(loadbalancer_id, **kwargs):
+    url = '/v2.0/lbaas/loadbalancers/{}?{}'.format(loadbalancer_id, urlencode(kwargs))
+    return url, {}
+
+
+@get_by_name_or_uuid(loadbalancer_list, RESOURCE_LIST_KEY)
+@send('put')
+def loadbalancer_update(loadbalancer_id, **kwargs):
+    url = '/v2.0/lbaas/loadbalancers/{}'.format(loadbalancer_id)
+    json = {
+        'loadbalancer': kwargs,
+    }
+    return url, {'json': json}
+
+
+@get_by_name_or_uuid(loadbalancer_list, RESOURCE_LIST_KEY)
+@send('delete')
+def loadbalancer_delete(loadbalancer_id, **kwargs):
+    url = '/v2.0/lbaas/loadbalancers/{}'.format(loadbalancer_id)
+    return url, {}
+
+
+@send('post')
+def loadbalancer_create(**kwargs):
+    url = '/v2.0/lbaas/loadbalancers'
+    json = {
+        'loadbalancer': kwargs,
+    }
+    return url, {'json': json}