Example #1
0
    def test_update_rule_protocol_to_any_post(self):
        rule = self.fw_rules.first()

        api_fwaas.rule_get(IsA(http.HttpRequest), rule.id).AndReturn(rule)

        data = {'name': 'new name',
                'description': 'new desc',
                'protocol': None,
                'action': 'allow',
                'shared': False,
                'enabled': True,
                'ip_version': rule.ip_version,
                'source_ip_address': rule.source_ip_address,
                'destination_ip_address': None,
                'source_port': None,
                'destination_port': rule.destination_port,
                }
        api_fwaas.rule_update(IsA(http.HttpRequest), rule.id, **data)\
            .AndReturn(rule)

        self.mox.ReplayAll()

        form_data = data.copy()
        form_data['destination_ip_address'] = ''
        form_data['source_port'] = ''
        form_data['protocol'] = 'any'

        res = self.client.post(
            reverse(self.UPDATERULE_PATH, args=(rule.id,)), form_data)

        self.assertNoFormErrors(res)
        self.assertRedirectsNoFollow(res, str(self.INDEX_URL))
Example #2
0
 def handle(self, request, context):
     rule_id = self.initial['rule_id']
     name_or_id = context.get('name') or rule_id
     if context['protocol'] == 'ANY':
         context['protocol'] = None
     for f in [
             'source_ip_address', 'destination_ip_address', 'source_port',
             'destination_port'
     ]:
         if not context[f]:
             context[f] = None
     try:
         rule = api_fwaas.rule_update(request, rule_id, **context)
         msg = _('Rule %s was successfully updated.') % name_or_id
         messages.success(request, msg)
         return rule
     except Exception as e:
         LOG.error('Failed to update rule %(id)s: %(reason)s', {
             'id': rule_id,
             'reason': e
         })
         msg = (_('Failed to update rule %(name)s: %(reason)s') % {
             'name': name_or_id,
             'reason': e
         })
         redirect = reverse(self.failure_url)
         exceptions.handle(request, msg, redirect=redirect)
Example #3
0
    def handle(self, request, context):
        rule_id = self.initial['id']
        name_or_id = context.get('name') or rule_id
        if context['protocol'] == 'any':
            context['protocol'] = None
        for f in [
                'source_ip_address', 'destination_ip_address', 'source_port',
                'destination_port'
        ]:
            if not context[f]:
                context[f] = None

        # Remove 'shared' from the context if the user is not allowed to
        # change this field
        if self.ignore_shared and 'shared' in context:
            del context['shared']

        try:
            rule = api_fwaas.rule_update(request, rule_id, **context)
            msg = _('Rule %s was successfully updated.') % name_or_id
            messages.success(request, msg)
            return rule
        except Exception as e:
            LOG.error('Failed to update rule %(id)s: %(reason)s', {
                'id': rule_id,
                'reason': e
            })
            msg = (_('Failed to update rule %(name)s: %(reason)s') % {
                'name': name_or_id,
                'reason': e
            })
            redirect = reverse(self.failure_url)
            exceptions.handle(request, msg, redirect=redirect)
    def test_rule_update(self):
        rule = self.fw_rules.first()
        rule_dict = self.api_fw_rules.first()

        rule.name = 'new name'
        rule.description = 'new desc'
        rule.protocol = 'icmp'
        rule.action = 'deny'
        rule.shared = True
        rule.enabled = False

        rule_dict['name'] = 'new name'
        rule_dict['description'] = 'new desc'
        rule_dict['protocol'] = 'icmp'
        rule_dict['action'] = 'deny'
        rule_dict['shared'] = True
        rule_dict['enabled'] = False

        form_data = {
            'name': rule.name,
            'description': rule.description,
            'protocol': rule.protocol,
            'action': rule.action,
            'shared': rule.shared,
            'enabled': rule.enabled
        }
        form_dict = {'firewall_rule': form_data}
        ret_dict = {'firewall_rule': rule_dict}

        neutronclient.update_firewall_rule(rule.id,
                                           form_dict).AndReturn(ret_dict)
        self.mox.ReplayAll()

        ret_val = api_fwaas.rule_update(self.request, rule.id, **form_data)
        self.assertIsInstance(ret_val, api_fwaas.Rule)
        self.assertEqual(rule.name, ret_val.name)
        self.assertTrue(ret_val.id)