Add designate modules and states

Add basic work with zones via designate RESTful API

Change-Id: Ib8dca42fc00c96756f4137acdc57aeb81e95c06c
Related-Issue: PROD-24588
diff --git a/_modules/designatev2/zones.py b/_modules/designatev2/zones.py
new file mode 100644
index 0000000..8c8233d
--- /dev/null
+++ b/_modules/designatev2/zones.py
@@ -0,0 +1,41 @@
+from designatev2.common import send
+from designatev2.arg_converter import get_by_name_or_uuid_multiple
+
+
+@send('post')
+def zone_create(name, email, **kwargs):
+    url = '/zones'
+    json = {
+        'name': name,
+        'email': email,
+    }
+    json.update(kwargs)
+    return url, json
+
+
+@get_by_name_or_uuid_multiple([('zone', 'zone_id')])
+@send('get')
+def zone_get_details(zone_id, **kwargs):
+    url = '/zones/{}'.format(zone_id)
+    return url, None
+
+
+@get_by_name_or_uuid_multiple([('zone', 'zone_id')])
+@send('get')
+def zone_get_name_servers(zone_id, **kwargs):
+    url = '/zones/{}/nameservers'.format(zone_id)
+    return url, None
+
+
+@get_by_name_or_uuid_multiple([('zone', 'zone_id')])
+@send('patch')
+def zone_update(zone_id, **kwargs):
+    url = '/zones/{}'.format(zone_id)
+    return url, kwargs
+
+
+@get_by_name_or_uuid_multiple([('zone', 'zone_id')])
+@send('delete')
+def zone_delete(zone_id, **kwargs):
+    url = '/zones/{}'.format(zone_id)
+    return url, None