Beispiel #1
0
    def validate(self):
        self.policy_include = IpRangeHelper.parse_ip_ranges(self.data, 'include')
        self.policy_equal = IpRangeHelper.parse_ip_ranges(self.data, 'equal')

        has_include = self.policy_include is not None
        has_equal = self.policy_equal is not None

        if has_include and has_equal:
            raise FilterValidationError('Cannot have both include and equal.')

        if not has_include and not has_equal:
            raise FilterValidationError('Must have either include or equal.')

        return True
    def process(self, resources, event=None):
        self.policy_include = IpRangeHelper.parse_ip_ranges(
            self.data, 'include')
        self.policy_equal = IpRangeHelper.parse_ip_ranges(self.data, 'equal')
        self.policy_any = IpRangeHelper.parse_ip_ranges(self.data, 'any')
        self.policy_only = IpRangeHelper.parse_ip_ranges(self.data, 'only')

        result, _ = ThreadHelper.execute_in_parallel(
            resources=resources,
            event=event,
            execution_method=self._check_resources,
            executor_factory=self.executor_factory,
            log=self.log)

        return result
Beispiel #3
0
 def validate(self):
     try:
         IpRangeHelper.parse_ip_ranges(self.data, 'include')
         IpRangeHelper.parse_ip_ranges(self.data, 'equal')
         IpRangeHelper.parse_ip_ranges(self.data, 'any')
         IpRangeHelper.parse_ip_ranges(self.data, 'only')
     except AddrFormatError as e:
         raise PolicyValidationError("Invalid IP range found. %s" % e)
     return self
Beispiel #4
0
 def test_parse_alias_invalid(self):
     data = {
         'whatever':
         ['ServiceTags.ApiManagement.Invalid', '1.2.2.127', '1.2.2.128/25']
     }
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = IPSet(['1.2.2.127/32', '1.2.2.128/25'])
     self.assertEqual(expected, actual)
 def test_parse_multi_net_ensure_separation(self):
     '''
     Verify that adjacent nets are not combined into one range
     '''
     data = {'whatever': ['1.2.2.127/32', '1.2.2.128/25']}
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     unexpected = set([IPRange('1.2.2.127', '1.2.2.255')])
     self.assertNotEqual(unexpected, actual)
Beispiel #6
0
 def test_parse_alias_and_blocks(self):
     data = {
         'whatever':
         ['ServiceTags.ApiManagement.WestUS', '1.2.2.127', '1.2.2.128/25']
     }
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = IPSet([
         '13.64.39.16/32', '40.112.242.148/31', '40.112.243.240/28',
         '1.2.2.127/32', '1.2.2.128/25'
     ])
     self.assertEqual(expected, actual)
 def test_parse_single_ip(self):
     data = {'whatever': ['1.2.2.127']}
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = IPSet(IPRange('1.2.2.127', '1.2.2.127'))
     self.assertEqual(expected, actual)
 def test_parse_extra_dash(self):
     data = {'whatever': ['0.0.0.0-10.10.10.10-10.10.10.10']}
     with self.assertRaises(Exception) as context:
         IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected_error = 'Invalid range. Use x.x.x.x-y.y.y.y or x.x.x.x or x.x.x.x/y.'
     self.assertTrue(expected_error in str(context.exception))
 def test_parse_spaces(self):
     data = {'whatever': ['0.0.0.0 - 10.10.10.10', '10.20.20.0 / 24']}
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = IPSet(IPRange('0.0.0.0', '10.10.10.10')) | \
         IPSet(IPRange('10.20.20.0', '10.20.20.255'))
     self.assertEqual(expected, actual)
 def test_parse_multi_net(self):
     data = {'whatever': ['1.2.2.127/32', '1.2.2.128/25']}
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = IPSet(IPRange('1.2.2.127', '1.2.2.127')) | \
         IPSet(IPRange('1.2.2.128', '1.2.2.255'))
     self.assertEqual(expected, actual)
 def test_absent(self):
     data = {'whatever': []}
     actual = IpRangeHelper.parse_ip_ranges(data, 'nosuch')
     self.assertIsNone(actual)
 def test_empty(self):
     data = {'whatever': []}
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = IPSet()
     self.assertEqual(expected, actual)
 def test_parse_range_and_net(self):
     data = {'whatever': ['0.0.0.0-10.10.10.10', '10.20.20.0/24']}
     actual = IpRangeHelper.parse_ip_ranges(data, 'whatever')
     expected = set([IPRange('0.0.0.0', '10.10.10.10'), IPRange('10.20.20.0', '10.20.20.255')])
     self.assertEqual(expected, actual)