Add role inference calls, domains

Also rework get_by_name_or_uuid method to work with multiple keys
and add get_by_name_or_uuid decorator for role assign, unassgin and check.

Change-Id: I808ce0c1aa1a7231875256ae6f22e986d78f8f00
Related-Issue: PROD-21388
diff --git a/_modules/keystonev3/endpoints.py b/_modules/keystonev3/endpoints.py
index 4230ad3..9f378d5 100644
--- a/_modules/keystonev3/endpoints.py
+++ b/_modules/keystonev3/endpoints.py
@@ -1,5 +1,5 @@
 from keystonev3.common import send
-
+from keystonev3.arg_converter import get_by_name_or_uuid_multiple
 try:
     from urllib.parse import urlencode
 except ImportError:
@@ -27,16 +27,16 @@
     return url, None
 
 
-@send('get')
-def endpoint_list(**kwargs):
-    url = '/endpoints?{}'.format(urlencode(kwargs))
-    return url, None
-
-
+@get_by_name_or_uuid_multiple([('service', 'service_id')])
 @send('post')
-def endpoint_create(**kwargs):
-    url = '/endpoints'
+def endpoint_create(service_id, url, interface, **kwargs):
+    api_url = '/endpoints'
     json = {
-        'endpoint': kwargs,
+        'endpoint': {
+            'service_id': service_id,
+            'url': url,
+            'interface': interface,
+        }
     }
-    return url, json
+    json['endpoint'].update(kwargs)
+    return api_url, json