summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-06-20 10:04:04 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-06-20 10:04:04 -0600
commit918460035fc28375c3553783a893e00898e5b1a5 (patch)
tree7102d856efcdd845437ec8b158ca44940469a80c
parenta11bb69ff2b1bb31a0c95613f05a93cfd6e4a269 (diff)
Changes to ProjectSettings constructors to use kwargs.
And changed line lengths to 79 for pep8 Change-Id: I3ea32e221608d759466973071dd86f9037ad2996 Signed-off-by: spisarski <s.pisarski@cablelabs.com>
-rw-r--r--snaps/openstack/create_project.py62
-rw-r--r--snaps/openstack/tests/create_project_tests.py94
2 files changed, 92 insertions, 64 deletions
diff --git a/snaps/openstack/create_project.py b/snaps/openstack/create_project.py
index b60d396..8d72fdb 100644
--- a/snaps/openstack/create_project.py
+++ b/snaps/openstack/create_project.py
@@ -15,7 +15,6 @@
import logging
from keystoneclient.exceptions import NotFound
-
from snaps.openstack.utils import keystone_utils
__author__ = 'spisarski'
@@ -44,16 +43,18 @@ class OpenStackProject:
def create(self, cleanup=False):
"""
Creates the image in OpenStack if it does not already exist
- :param cleanup: Denotes whether or not this is being called for cleanup or not
+ :param cleanup: Denotes whether or not this is being called for cleanup
:return: The OpenStack Image object
"""
self.__keystone = keystone_utils.keystone_client(self.__os_creds)
- self.__project = keystone_utils.get_project(keystone=self.__keystone,
- project_name=self.project_settings.name)
+ self.__project = keystone_utils.get_project(
+ keystone=self.__keystone, project_name=self.project_settings.name)
if self.__project:
- logger.info('Found project with name - ' + self.project_settings.name)
+ logger.info(
+ 'Found project with name - ' + self.project_settings.name)
elif not cleanup:
- self.__project = keystone_utils.create_project(self.__keystone, self.project_settings)
+ self.__project = keystone_utils.create_project(
+ self.__keystone, self.project_settings)
else:
logger.info('Did not create image due to cleanup mode')
@@ -92,44 +93,43 @@ class OpenStackProject:
:return:
"""
if not self.__role:
- self.__role = keystone_utils.create_role(self.__keystone, self.project_settings.name + '-role')
+ self.__role = keystone_utils.create_role(
+ self.__keystone, self.project_settings.name + '-role')
- keystone_utils.assoc_user_to_project(self.__keystone, self.__role, user, self.__project)
+ keystone_utils.assoc_user_to_project(self.__keystone, self.__role,
+ user, self.__project)
class ProjectSettings:
"""
- Class to hold the configuration settings required for creating OpenStack project objects
+ Class to hold the configuration settings required for creating OpenStack
+ project objects
"""
- def __init__(self, config=None, name=None, domain='default', description=None, enabled=True):
+
+ def __init__(self, **kwargs):
"""
Constructor
- :param config: dict() object containing the configuration settings using the attribute names below as each
- member's the key and overrides any of the other parameters.
:param name: the project's name (required)
- :param domain: the project's domain name (default 'default'). Field is used for v3 clients
+ :param domain: the project's domain name (default 'default'). Field is
+ used for v3 clients
:param description: the description (optional)
- :param enabled: denotes whether or not the user is enabled (default True)
+ :param enabled: denotes whether or not the user is enabled
+ (default True)
"""
- if config:
- self.name = config.get('name')
- if config.get('domain'):
- self.domain = config['domain']
- else:
- self.domain = domain
-
- self.description = config.get('description')
- if config.get('enabled') is not None:
- self.enabled = config['enabled']
- else:
- self.enabled = enabled
+ self.name = kwargs.get('name')
+ if kwargs.get('domain'):
+ self.domain = kwargs['domain']
+ else:
+ self.domain = 'default'
+
+ self.description = kwargs.get('description')
+ if kwargs.get('enabled') is not None:
+ self.enabled = kwargs['enabled']
else:
- self.name = name
- self.domain = domain
- self.description = description
- self.enabled = enabled
+ self.enabled = True
if not self.name:
- raise Exception("The attribute name is required for ProjectSettings")
+ raise Exception(
+ "The attribute name is required for ProjectSettings")
diff --git a/snaps/openstack/tests/create_project_tests.py b/snaps/openstack/tests/create_project_tests.py
index ede8b4b..068ab95 100644
--- a/snaps/openstack/tests/create_project_tests.py
+++ b/snaps/openstack/tests/create_project_tests.py
@@ -12,8 +12,8 @@
# 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 uuid
import unittest
+import uuid
from snaps.openstack.create_project import OpenStackProject, ProjectSettings
from snaps.openstack.create_security_group import OpenStackSecurityGroup
@@ -37,7 +37,7 @@ class ProjectSettingsUnitTests(unittest.TestCase):
def test_empty_config(self):
with self.assertRaises(Exception):
- ProjectSettings(config=dict())
+ ProjectSettings(**dict())
def test_name_only(self):
settings = ProjectSettings(name='foo')
@@ -47,21 +47,24 @@ class ProjectSettingsUnitTests(unittest.TestCase):
self.assertTrue(settings.enabled)
def test_config_with_name_only(self):
- settings = ProjectSettings(config={'name': 'foo'})
+ settings = ProjectSettings(**{'name': 'foo'})
self.assertEqual('foo', settings.name)
self.assertEqual('default', settings.domain)
self.assertIsNone(settings.description)
self.assertTrue(settings.enabled)
def test_all(self):
- settings = ProjectSettings(name='foo', domain='bar', description='foobar', enabled=False)
+ settings = ProjectSettings(name='foo', domain='bar',
+ description='foobar', enabled=False)
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.domain)
self.assertEqual('foobar', settings.description)
self.assertFalse(settings.enabled)
def test_config_all(self):
- settings = ProjectSettings(config={'name': 'foo', 'domain': 'bar', 'description': 'foobar', 'enabled': False})
+ settings = ProjectSettings(
+ **{'name': 'foo', 'domain': 'bar', 'description': 'foobar',
+ 'enabled': False})
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.domain)
self.assertEqual('foobar', settings.description)
@@ -75,8 +78,8 @@ class CreateProjectSuccessTests(OSComponentTestCase):
def setUp(self):
"""
- Instantiates the CreateImage object that is responsible for downloading and creating an OS image file
- within OpenStack
+ Instantiates the CreateImage object that is responsible for downloading
+ and creating an OS image file within OpenStack
"""
guid = str(uuid.uuid4())[:-19]
guid = self.__class__.__name__ + '-' + guid
@@ -98,35 +101,42 @@ class CreateProjectSuccessTests(OSComponentTestCase):
"""
Tests the creation of an OpenStack project.
"""
- self.project_creator = OpenStackProject(self.os_creds, self.project_settings)
+ self.project_creator = OpenStackProject(self.os_creds,
+ self.project_settings)
created_project = self.project_creator.create()
self.assertIsNotNone(created_project)
- retrieved_project = keystone_utils.get_project(keystone=self.keystone, project_name=self.project_settings.name)
+ retrieved_project = keystone_utils.get_project(
+ keystone=self.keystone, project_name=self.project_settings.name)
self.assertIsNotNone(retrieved_project)
self.assertEqual(created_project, retrieved_project)
def test_create_project_2x(self):
"""
- Tests the creation of an OpenStack project twice to ensure it only creates one.
+ Tests the creation of an OpenStack project twice to ensure it only
+ creates one.
"""
- self.project_creator = OpenStackProject(self.os_creds, self.project_settings)
+ self.project_creator = OpenStackProject(self.os_creds,
+ self.project_settings)
created_project = self.project_creator.create()
self.assertIsNotNone(created_project)
- retrieved_project = keystone_utils.get_project(keystone=self.keystone, project_name=self.project_settings.name)
+ retrieved_project = keystone_utils.get_project(
+ keystone=self.keystone, project_name=self.project_settings.name)
self.assertIsNotNone(retrieved_project)
self.assertEqual(created_project, retrieved_project)
- project2 = OpenStackProject(self.os_creds, self.project_settings).create()
+ project2 = OpenStackProject(self.os_creds,
+ self.project_settings).create()
self.assertEqual(retrieved_project, project2)
def test_create_delete_project(self):
"""
- Tests the creation of an OpenStack project, it's deletion, then cleanup.
+ Tests the creation of an OpenStack project, it's deletion, then cleanup
"""
# Create Image
- self.project_creator = OpenStackProject(self.os_creds, self.project_settings)
+ self.project_creator = OpenStackProject(self.os_creds,
+ self.project_settings)
created_project = self.project_creator.create()
self.assertIsNotNone(created_project)
@@ -146,8 +156,8 @@ class CreateProjectUserTests(OSComponentTestCase):
def setUp(self):
"""
- Instantiates the CreateImage object that is responsible for downloading and creating an OS image file
- within OpenStack
+ Instantiates the CreateImage object that is responsible for downloading
+ and creating an OS image file within OpenStack
"""
guid = str(uuid.uuid4())[:-19]
self.guid = self.__class__.__name__ + '-' + guid
@@ -176,61 +186,79 @@ class CreateProjectUserTests(OSComponentTestCase):
def test_create_project_sec_grp_one_user(self):
"""
- Tests the creation of an OpenStack object to a project with a new users and to create a security group
+ Tests the creation of an OpenStack object to a project with a new users
+ and to create a security group
"""
- self.project_creator = OpenStackProject(self.os_creds, self.project_settings)
+ self.project_creator = OpenStackProject(self.os_creds,
+ self.project_settings)
created_project = self.project_creator.create()
self.assertIsNotNone(created_project)
- user_creator = OpenStackUser(self.os_creds, UserSettings(name=self.guid + '-user', password=self.guid))
+ user_creator = OpenStackUser(self.os_creds,
+ UserSettings(name=self.guid + '-user',
+ password=self.guid))
self.project_creator.assoc_user(user_creator.create())
self.user_creators.append(user_creator)
- sec_grp_os_creds = user_creator.get_os_creds(self.project_creator.get_project().name)
+ sec_grp_os_creds = user_creator.get_os_creds(
+ self.project_creator.get_project().name)
sec_grp_creator = OpenStackSecurityGroup(
- sec_grp_os_creds, SecurityGroupSettings(name=self.guid + '-name', description='hello group'))
+ sec_grp_os_creds, SecurityGroupSettings(name=self.guid + '-name',
+ description='hello group'))
sec_grp = sec_grp_creator.create()
self.assertIsNotNone(sec_grp)
self.sec_grp_creators.append(sec_grp_creator)
if 'tenant_id' in sec_grp['security_group']:
- self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['tenant_id'])
+ self.assertEqual(self.project_creator.get_project().id,
+ sec_grp['security_group']['tenant_id'])
elif 'project_id' in sec_grp['security_group']:
- self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['project_id'])
+ self.assertEqual(self.project_creator.get_project().id,
+ sec_grp['security_group']['project_id'])
else:
self.fail('Cannot locate the project or tenant ID')
def test_create_project_sec_grp_two_users(self):
"""
- Tests the creation of an OpenStack object to a project with two new users and use each user to create a
- security group
+ Tests the creation of an OpenStack object to a project with two new
+ users and use each user to create a security group
"""
- self.project_creator = OpenStackProject(self.os_creds, self.project_settings)
+ self.project_creator = OpenStackProject(self.os_creds,
+ self.project_settings)
created_project = self.project_creator.create()
self.assertIsNotNone(created_project)
- user_creator_1 = OpenStackUser(self.os_creds, UserSettings(name=self.guid + '-user1', password=self.guid))
+ user_creator_1 = OpenStackUser(self.os_creds,
+ UserSettings(name=self.guid + '-user1',
+ password=self.guid))
self.project_creator.assoc_user(user_creator_1.create())
self.user_creators.append(user_creator_1)
- user_creator_2 = OpenStackUser(self.os_creds, UserSettings(name=self.guid + '-user2', password=self.guid))
+ user_creator_2 = OpenStackUser(self.os_creds,
+ UserSettings(name=self.guid + '-user2',
+ password=self.guid))
self.project_creator.assoc_user(user_creator_2.create())
self.user_creators.append(user_creator_2)
ctr = 0
for user_creator in self.user_creators:
ctr += 1
- sec_grp_os_creds = user_creator.get_os_creds(self.project_creator.get_project().name)
+ sec_grp_os_creds = user_creator.get_os_creds(
+ self.project_creator.get_project().name)
sec_grp_creator = OpenStackSecurityGroup(
- sec_grp_os_creds, SecurityGroupSettings(name=self.guid + '-name', description='hello group'))
+ sec_grp_os_creds,
+ SecurityGroupSettings(name=self.guid + '-name',
+ description='hello group'))
sec_grp = sec_grp_creator.create()
self.assertIsNotNone(sec_grp)
self.sec_grp_creators.append(sec_grp_creator)
if 'tenant_id' in sec_grp['security_group']:
- self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['tenant_id'])
+ self.assertEqual(self.project_creator.get_project().id,
+ sec_grp['security_group']['tenant_id'])
elif 'project_id' in sec_grp['security_group']:
- self.assertEqual(self.project_creator.get_project().id, sec_grp['security_group']['project_id'])
+ self.assertEqual(self.project_creator.get_project().id,
+ sec_grp['security_group']['project_id'])
else:
self.fail('Cannot locate the project or tenant ID')