From 0a5181d00709e029c317aeb90c75e9cd4fa7d130 Mon Sep 17 00:00:00 2001 From: spisarski Date: Fri, 21 Jul 2017 08:27:22 -0600 Subject: Created new exceptions for security group settings Raising SecurityGroupSettingsError in SecurityGroupSettings and SecurityGroupRuleSettingsError in SecurityGroupRuleSettings instead of Exception. JIRA: SNAPS-137 Change-Id: I959ffe9a247dc9adffbef460119ba94ad86fd3f0 Signed-off-by: spisarski --- snaps/openstack/create_security_group.py | 34 +++++++++++++++++----- .../openstack/tests/create_security_group_tests.py | 18 +++++++----- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/snaps/openstack/create_security_group.py b/snaps/openstack/create_security_group.py index 3dbf559..4291796 100644 --- a/snaps/openstack/create_security_group.py +++ b/snaps/openstack/create_security_group.py @@ -240,11 +240,11 @@ class SecurityGroupSettings: **rule_setting)) if not self.name: - raise Exception('The attribute name is required') + raise SecurityGroupSettingsError('The attribute name is required') for rule_setting in self.rule_settings: if rule_setting.sec_grp_name is not self.name: - raise Exception( + raise SecurityGroupSettingsError( 'Rule settings must correspond with the name of this ' 'security group') @@ -272,7 +272,7 @@ class SecurityGroupSettings: if project_id: out['project_id'] = project_id else: - raise Exception( + raise SecurityGroupSettingsError( 'Could not find project ID for project named - ' + self.project_name) @@ -305,6 +305,13 @@ class Ethertype(enum.Enum): IPv6 = 6 +class SecurityGroupSettingsError(Exception): + """ + Exception to be thrown when security group settings attributes are + invalid + """ + + class SecurityGroupRuleSettings: """ Class representing a keypair configuration @@ -368,7 +375,8 @@ class SecurityGroupRuleSettings: self.remote_ip_prefix = kwargs.get('remote_ip_prefix') if not self.direction or not self.sec_grp_name: - raise Exception('direction and sec_grp_name are required') + raise SecurityGroupRuleSettingsError( + 'direction and sec_grp_name are required') def dict_for_neutron(self, neutron): """ @@ -399,7 +407,7 @@ class SecurityGroupRuleSettings: if sec_grp: out['security_group_id'] = sec_grp.id else: - raise Exception( + raise SecurityGroupRuleSettingsError( 'Cannot locate security group with name - ' + self.sec_grp_name) if self.remote_group_id: @@ -490,7 +498,8 @@ def map_direction(direction): elif dir_str == 'ingress': return Direction.ingress else: - raise Exception('Invalid Direction - ' + dir_str) + raise SecurityGroupRuleSettingsError( + 'Invalid Direction - ' + dir_str) def map_protocol(protocol): @@ -516,7 +525,8 @@ def map_protocol(protocol): elif proto_str == 'null': return Protocol.null else: - raise Exception('Invalid Protocol - ' + proto_str) + raise SecurityGroupRuleSettingsError( + 'Invalid Protocol - ' + proto_str) def map_ethertype(ethertype): @@ -538,4 +548,12 @@ def map_ethertype(ethertype): elif eth_str == 'IPv4': return Ethertype.IPv4 else: - raise Exception('Invalid Ethertype - ' + eth_str) + raise SecurityGroupRuleSettingsError( + 'Invalid Ethertype - ' + eth_str) + + +class SecurityGroupRuleSettingsError(Exception): + """ + Exception to be thrown when security group rule settings attributes are + invalid + """ diff --git a/snaps/openstack/tests/create_security_group_tests.py b/snaps/openstack/tests/create_security_group_tests.py index 75c6387..dd28d7d 100644 --- a/snaps/openstack/tests/create_security_group_tests.py +++ b/snaps/openstack/tests/create_security_group_tests.py @@ -19,7 +19,9 @@ from snaps.openstack import create_security_group from snaps.openstack.create_security_group import (SecurityGroupSettings, SecurityGroupRuleSettings, Direction, Ethertype, - Protocol) + Protocol, + SecurityGroupRuleSettingsError, + SecurityGroupSettingsError) from snaps.openstack.tests import validation_utils from snaps.openstack.tests.os_source_file_test import OSIntegrationTestCase from snaps.openstack.utils import neutron_utils @@ -33,19 +35,19 @@ class SecurityGroupRuleSettingsUnitTests(unittest.TestCase): """ def test_no_params(self): - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupRuleSettingsError): SecurityGroupRuleSettings() def test_empty_config(self): - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupRuleSettingsError): SecurityGroupRuleSettings(**dict()) def test_name_only(self): - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupRuleSettingsError): SecurityGroupRuleSettings(sec_grp_name='foo') def test_config_with_name_only(self): - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupRuleSettingsError): SecurityGroupRuleSettings(**{'sec_grp_name': 'foo'}) def test_name_and_direction(self): @@ -105,11 +107,11 @@ class SecurityGroupSettingsUnitTests(unittest.TestCase): """ def test_no_params(self): - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupSettingsError): SecurityGroupSettings() def test_empty_config(self): - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupSettingsError): SecurityGroupSettings(**dict()) def test_name_only(self): @@ -123,7 +125,7 @@ class SecurityGroupSettingsUnitTests(unittest.TestCase): def test_invalid_rule(self): rule_setting = SecurityGroupRuleSettings(sec_grp_name='bar', direction=Direction.ingress) - with self.assertRaises(Exception): + with self.assertRaises(SecurityGroupSettingsError): SecurityGroupSettings(name='foo', rule_settings=[rule_setting]) def test_all(self): -- cgit 1.2.3-korg