Add agent modules and states

Add REST API wrapper for agents, l3_agents and dhcp_agents

Change-Id: I63ce0a4224b7cd4d65ce80f1efd0c5cfb6f0617e
Closes-Issue: PROD-22594
diff --git a/_modules/neutronv2/subnets.py b/_modules/neutronv2/subnets.py
index 3a29969..7388584 100644
--- a/_modules/neutronv2/subnets.py
+++ b/_modules/neutronv2/subnets.py
@@ -1,21 +1,13 @@
-from neutronv2.common import send, get_by_name_or_uuid
-from neutronv2 import networks
+from neutronv2.common import send
+from neutronv2.arg_converter import get_by_name_or_uuid_multiple
+
 try:
     from urllib.parse import urlencode
 except ImportError:
     from urllib import urlencode
 
-RESOURCE_LIST_KEY = 'subnets'
 
-
-@send('get')
-def subnet_list(**kwargs):
-    url = '/subnets?{}'.format(urlencode(kwargs))
-    return url, {}
-
-
-@get_by_name_or_uuid(networks.network_list, networks.RESOURCE_LIST_KEY,
-                     res_id_key='network_id')
+@get_by_name_or_uuid_multiple([('network', 'network_id')])
 @send('post')
 def subnet_create(network_id, ip_version, cidr, **kwargs):
     url = '/subnets'
@@ -39,14 +31,14 @@
     return url, {'json': json}
 
 
-@get_by_name_or_uuid(subnet_list, RESOURCE_LIST_KEY)
+@get_by_name_or_uuid_multiple([('subnet', 'subnet_id')])
 @send('get')
 def subnet_get_details(subnet_id, **kwargs):
     url = '/subnets/{}'.format(subnet_id)
     return url, {}
 
 
-@get_by_name_or_uuid(subnet_list, RESOURCE_LIST_KEY)
+@get_by_name_or_uuid_multiple([('subnet', 'subnet_id')])
 @send('put')
 def subnet_update(subnet_id, **kwargs):
     url = '/subnets/{}'.format(subnet_id)
@@ -56,7 +48,7 @@
     return url, {'json': json}
 
 
-@get_by_name_or_uuid(subnet_list, RESOURCE_LIST_KEY)
+@get_by_name_or_uuid_multiple([('subnet', 'subnet_id')])
 @send('delete')
 def subnet_delete(subnet_id, **kwargs):
     url = '/subnets/{}'.format(subnet_id)