diff --git a/_modules/neutronv2/agents.py b/_modules/neutronv2/agents.py
new file mode 100644
index 0000000..15703d2
--- /dev/null
+++ b/_modules/neutronv2/agents.py
@@ -0,0 +1,89 @@
+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
+
+
+@send('get')
+def agent_get_details(agent_id, **kwargs):
+    url = '/agents/{}?{}'.format(agent_id, urlencode(kwargs))
+    return url, {}
+
+
+@send('put')
+def agent_update(agent_id, **kwargs):
+    url = '/agents/{}'.format(agent_id)
+    json = {
+        'agent': kwargs,
+    }
+    return url, {'json': json}
+
+
+@send('delete')
+def agent_delete(agent_id, **kwargs):
+    url = '/agents/{}'.format(agent_id)
+    return url, {}
+
+
+@send('get')
+def l3_agent_router_list(agent_id, **kwargs):
+    url = '/agents/{}/l3-routers'.format(agent_id)
+    return url, {}
+
+
+@get_by_name_or_uuid_multiple([('router', 'router_id')])
+@send('post')
+def l3_agent_router_schedule(router_id, agent_id, **kwargs):
+    url = '/agents/{}/l3-routers'.format(agent_id)
+    json = {
+        'router_id': router_id,
+    }
+    return url, {'json': json}
+
+
+@get_by_name_or_uuid_multiple([('router', 'router_id')])
+@send('delete')
+def l3_agent_router_remove(router_id, agent_id, **kwargs):
+    url = '/agents/{}/l3-routers/{}'.format(agent_id, router_id)
+    return url, {}
+
+
+@get_by_name_or_uuid_multiple([('router', 'router_id')])
+@send('get')
+def l3_agent_by_router_list(router_id, **kwargs):
+    url = '/routers/{}/l3-agents'.format(router_id)
+    return url, {}
+
+
+@send('get')
+def dhcp_agent_list_networks(agent_id, **kwargs):
+    url = '/agents/{}/dhcp-networks'.format(agent_id)
+    return url, {}
+
+
+@get_by_name_or_uuid_multiple([('network', 'network_id')])
+@send('post')
+def dhcp_agent_network_schedule(network_id, agent_id, **kwargs):
+    url = '/agents/{}/dhcp-networks'.format(agent_id)
+    json = {
+        'network_id': network_id,
+    }
+    return url, {'json': json}
+
+
+@get_by_name_or_uuid_multiple([('network', 'network_id')])
+@send('delete')
+def dhcp_agent_network_remove(network_id, agent_id, **kwargs):
+    url = '/agents/{}/dhcp-networks/{}'.format(agent_id, network_id)
+    return url, {}
+
+
+@get_by_name_or_uuid_multiple([('network', 'network_id')])
+@send('get')
+def dhcp_agent_by_network_list(network_id, **kwargs):
+    url = '/networks/{}/dhcp-agents'.format(network_id)
+    return url, {}
