aboutsummaryrefslogtreecommitdiffstats
path: root/keystone-moon/keystone/common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystone-moon/keystone/common/models.py')
-rw-r--r--keystone-moon/keystone/common/models.py182
1 files changed, 182 insertions, 0 deletions
diff --git a/keystone-moon/keystone/common/models.py b/keystone-moon/keystone/common/models.py
new file mode 100644
index 00000000..3b3aabe1
--- /dev/null
+++ b/keystone-moon/keystone/common/models.py
@@ -0,0 +1,182 @@
+# Copyright (C) 2011 OpenStack Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Base model for keystone internal services
+
+Unless marked otherwise, all fields are strings.
+
+"""
+
+
+class Model(dict):
+ """Base model class."""
+ def __hash__(self):
+ return self['id'].__hash__()
+
+ @property
+ def known_keys(cls):
+ return cls.required_keys + cls.optional_keys
+
+
+class Token(Model):
+ """Token object.
+
+ Required keys:
+ id
+ expires (datetime)
+
+ Optional keys:
+ user
+ tenant
+ metadata
+ trust_id
+ """
+
+ required_keys = ('id', 'expires')
+ optional_keys = ('extra',)
+
+
+class Service(Model):
+ """Service object.
+
+ Required keys:
+ id
+ type
+ name
+
+ Optional keys:
+ """
+
+ required_keys = ('id', 'type', 'name')
+ optional_keys = tuple()
+
+
+class Endpoint(Model):
+ """Endpoint object
+
+ Required keys:
+ id
+ region
+ service_id
+
+ Optional keys:
+ internalurl
+ publicurl
+ adminurl
+ """
+
+ required_keys = ('id', 'region', 'service_id')
+ optional_keys = ('internalurl', 'publicurl', 'adminurl')
+
+
+class User(Model):
+ """User object.
+
+ Required keys:
+ id
+ name
+ domain_id
+
+ Optional keys:
+ password
+ description
+ email
+ enabled (bool, default True)
+ default_project_id
+ """
+
+ required_keys = ('id', 'name', 'domain_id')
+ optional_keys = ('password', 'description', 'email', 'enabled',
+ 'default_project_id')
+
+
+class Group(Model):
+ """Group object.
+
+ Required keys:
+ id
+ name
+ domain_id
+
+ Optional keys:
+
+ description
+
+ """
+
+ required_keys = ('id', 'name', 'domain_id')
+ optional_keys = ('description',)
+
+
+class Project(Model):
+ """Project object.
+
+ Required keys:
+ id
+ name
+ domain_id
+
+ Optional Keys:
+ description
+ enabled (bool, default True)
+
+ """
+
+ required_keys = ('id', 'name', 'domain_id')
+ optional_keys = ('description', 'enabled')
+
+
+class Role(Model):
+ """Role object.
+
+ Required keys:
+ id
+ name
+
+ """
+
+ required_keys = ('id', 'name')
+ optional_keys = tuple()
+
+
+class Trust(Model):
+ """Trust object.
+
+ Required keys:
+ id
+ trustor_user_id
+ trustee_user_id
+ project_id
+ """
+
+ required_keys = ('id', 'trustor_user_id', 'trustee_user_id', 'project_id')
+ optional_keys = ('expires_at',)
+
+
+class Domain(Model):
+ """Domain object.
+
+ Required keys:
+ id
+ name
+
+ Optional keys:
+
+ description
+ enabled (bool, default True)
+
+ """
+
+ required_keys = ('id', 'name')
+ optional_keys = ('description', 'enabled')