diff --git a/plstackapi/planetstack/api/__init__.py b/plstackapi/planetstack/api/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/plstackapi/planetstack/api/__init__.py
diff --git a/plstackapi/planetstack/api/roles.py b/plstackapi/planetstack/api/roles.py
new file mode 100644
index 0000000..cd737b0
--- /dev/null
+++ b/plstackapi/planetstack/api/roles.py
@@ -0,0 +1,34 @@
+from plstackapi.openstack.client import OpenStackClient
+from plstackapi.openstack.driver import OpenStackDriver
+from plstackapi.planetstack.models import * 
+
+
+def auth_check(auth):
+    client = OpenStackShell(username=auth['Username'],
+                            password=auth['AuthMethod',
+                            tenant=auth['LoginBase'])
+    client.authenticate()
+    return client
+
+
+def add_role(auth, name):
+    client = auth_check(auth)
+    keystone_role = client.keystone.roles.create(name)
+    role = Role(role_type=name, role_id=keystone_role.id)
+    role.save()
+    return role
+
+def delete_role(auth, name):
+    client = auth_check(auth)
+    role = Role.objects.filter(role_type=name)
+    client.keystone.roles.delete(role.role_id)
+    role.delete()
+    return 1
+
+def get_roles(auth, filter):
+    client = auth_check(auth)
+    roles = Role.objects.filter(**filter)
+    return roles             
+        
+
+    
