From 8bd26c2d75108037430fde83ea57ab0b964f0058 Mon Sep 17 00:00:00 2001 From: spisarski Date: Thu, 6 Jul 2017 13:09:46 -0600 Subject: Created domain object for flavors. OpenStack implementation details were leaking out into the flavor creator. JIRA: SNAPS-111 Change-Id: I59a77d02e30065a7f4560e74295b2084a83686df Signed-off-by: spisarski --- snaps/domain/flavor.py | 43 +++++++++++++++++++++++++++++++++ snaps/domain/test/flavor_tests.py | 50 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 snaps/domain/flavor.py create mode 100644 snaps/domain/test/flavor_tests.py (limited to 'snaps/domain') diff --git a/snaps/domain/flavor.py b/snaps/domain/flavor.py new file mode 100644 index 0000000..035ca64 --- /dev/null +++ b/snaps/domain/flavor.py @@ -0,0 +1,43 @@ +# 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 Flavor: + """ + SNAPS domain object for Flavors. Should contain attributes that + are shared amongst cloud providers + """ + def __init__(self, **kwargs): + """ + Constructor + :param name: the flavor's name + :param flavor_id: the flavor's id + :param ram: the flavor's RAM in MB + :param disk: the flavor's disk size in GB + :param vcpus: the flavor's number of virtual CPUs + :param ephemeral: the flavor's ephemeral disk in GB + :param swap: the flavor's swap space in MB + :param rxtx_factor: the flavor's RX/TX factor integer value + :param is_public: denotes if flavor can be used by other projects + """ + self.name = kwargs.get('name') + self.id = kwargs.get('id') + self.ram = kwargs.get('ram') + self.disk = kwargs.get('disk') + self.vcpus = kwargs.get('vcpus') + self.ephemeral = kwargs.get('ephemeral') + self.swap = kwargs.get('swap') + self.rxtx_factor = kwargs.get('rxtx_factor') + self.is_public = kwargs.get('is_public') diff --git a/snaps/domain/test/flavor_tests.py b/snaps/domain/test/flavor_tests.py new file mode 100644 index 0000000..4b74bd7 --- /dev/null +++ b/snaps/domain/test/flavor_tests.py @@ -0,0 +1,50 @@ +# 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.flavor import Flavor + + +class FlavorDomainObjectTests(unittest.TestCase): + """ + Tests the construction of the snaps.domain.test.Flavor class + """ + + def test_construction_kwargs(self): + flavor = Flavor(**{'name': 'name', 'id': 'id', 'ram': 10, 'disk': 20, + 'vcpus': 3, 'ephemeral': 30, 'swap': 100, + 'rxtx_factor': 5, 'is_public': True}) + self.assertEqual('name', flavor.name) + self.assertEqual('id', flavor.id) + self.assertEqual(10, flavor.ram) + self.assertEqual(20, flavor.disk) + self.assertEqual(3, flavor.vcpus) + self.assertEqual(30, flavor.ephemeral) + self.assertEqual(100, flavor.swap) + self.assertEqual(5, flavor.rxtx_factor) + self.assertTrue(flavor.is_public) + + def test_construction_named(self): + flavor = Flavor(is_public=True, rxtx_factor=5, swap=100, ephemeral=30, + vcpus=3, disk=20, ram=10, id='id', name='name') + self.assertEqual('name', flavor.name) + self.assertEqual('id', flavor.id) + self.assertEqual(10, flavor.ram) + self.assertEqual(20, flavor.disk) + self.assertEqual(3, flavor.vcpus) + self.assertEqual(30, flavor.ephemeral) + self.assertEqual(100, flavor.swap) + self.assertEqual(5, flavor.rxtx_factor) + self.assertTrue(flavor.is_public) -- cgit 1.2.3-korg