summaryrefslogtreecommitdiffstats
path: root/snaps/domain
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-07-12 08:34:14 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-07-13 07:31:05 -0600
commitf5f0f1cbcb757a9229a92c3a7f4ea400db11dd07 (patch)
tree1c6ee337f2f135f7564ec603d67c8746b833991b /snaps/domain
parente572055192d85954efa81dfa4b3ca5ad80db9434 (diff)
Crteated domain class for projects.
Created Project domain class so keystone_utils.py functions returning project objects will not be leaking out implementation details as each API version can change these data structures and this should all be handled by the SNAPS keystone utility. JIRA: SNAPS-114 Change-Id: Id7bce929604278c8228622161eba1838ecd5e067 Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/domain')
-rw-r--r--snaps/domain/project.py32
-rw-r--r--snaps/domain/test/project_tests.py33
2 files changed, 65 insertions, 0 deletions
diff --git a/snaps/domain/project.py b/snaps/domain/project.py
new file mode 100644
index 0000000..818645b
--- /dev/null
+++ b/snaps/domain/project.py
@@ -0,0 +1,32 @@
+# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# 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.
+
+
+class Project:
+ """
+ SNAPS domain object for Projects. Should contain attributes that
+ are shared amongst cloud providers
+ """
+ def __init__(self, name, project_id):
+ """
+ Constructor
+ :param name: the project's name
+ :param project_id: the project's id
+ """
+ self.name = name
+ self.id = project_id
+
+ def __eq__(self, other):
+ return self.name == other.name and self.id == other.id
diff --git a/snaps/domain/test/project_tests.py b/snaps/domain/test/project_tests.py
new file mode 100644
index 0000000..4056bba
--- /dev/null
+++ b/snaps/domain/test/project_tests.py
@@ -0,0 +1,33 @@
+# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# 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.
+
+import unittest
+from snaps.domain.project import Project
+
+
+class ProjectDomainObjectTests(unittest.TestCase):
+ """
+ Tests the construction of the snaps.domain.test.Project class
+ """
+
+ def test_construction_positional(self):
+ project = Project('foo', '123-456')
+ self.assertEqual('foo', project.name)
+ self.assertEqual('123-456', project.id)
+
+ def test_construction_named(self):
+ project = Project(project_id='123-456', name='foo')
+ self.assertEqual('foo', project.name)
+ self.assertEqual('123-456', project.id)