コード例 #1
0
    def _test_add_firewall_post(self, router_extension=False):
        firewall = self.firewalls.first()
        policies = self.fw_policies.list()
        tenant_id = self.tenant.id
        if router_extension:
            routers = self.routers.list()
            firewalls = self.firewalls.list()

        form_data = {'name': firewall.name,
                     'description': firewall.description,
                     'firewall_policy_id': firewall.firewall_policy_id,
                     'admin_state_up': firewall.admin_state_up
                     }
        if router_extension:
            form_data['router_ids'] = firewall.router_ids
            api.neutron.router_list(
                IsA(http.HttpRequest), tenant_id=tenant_id).AndReturn(routers)
            api_fwaas.firewall_list_for_tenant(
                IsA(http.HttpRequest),
                tenant_id=tenant_id).AndReturn(firewalls)

        api.neutron.is_extension_supported(
            IsA(http.HttpRequest),
            'fwaasrouterinsertion').AndReturn(router_extension)
        api_fwaas.policy_list_for_tenant(
            IsA(http.HttpRequest), tenant_id).AndReturn(policies)
        api_fwaas.firewall_create(
            IsA(http.HttpRequest), **form_data).AndReturn(firewall)

        self.mox.ReplayAll()

        res = self.client.post(reverse(self.ADDFIREWALL_PATH), form_data)

        self.assertNoFormErrors(res)
        self.assertRedirectsNoFollow(res, str(self.INDEX_URL))
コード例 #2
0
    def test_update_firewall_post(self):
        firewall = self.firewalls.first()
        tenant_id = self.tenant.id
        api_fwaas.firewall_get(IsA(http.HttpRequest),
                               firewall.id).AndReturn(firewall)

        data = {'name': 'new name',
                'description': 'new desc',
                'firewall_policy_id': firewall.firewall_policy_id,
                'admin_state_up': False
                }

        policies = self.fw_policies.list()
        api_fwaas.policy_list_for_tenant(
            IsA(http.HttpRequest), tenant_id).AndReturn(policies)

        api_fwaas.firewall_update(IsA(http.HttpRequest), firewall.id, **data)\
            .AndReturn(firewall)

        self.mox.ReplayAll()

        res = self.client.post(
            reverse(self.UPDATEFIREWALL_PATH, args=(firewall.id,)), data)

        self.assertNoFormErrors(res)
        self.assertRedirectsNoFollow(res, str(self.INDEX_URL))
コード例 #3
0
    def set_up_expect(self, fwaas_router_extension=True):
        # retrieve rules
        tenant_id = self.tenant.id

        api.neutron.is_extension_supported(
            IsA(http.HttpRequest), 'fwaasrouterinsertion'
        ).MultipleTimes().AndReturn(fwaas_router_extension)

        api_fwaas.rule_list_for_tenant(
            IsA(http.HttpRequest),
            tenant_id).AndReturn(self.fw_rules.list())

        # retrieves policies
        policies = self.fw_policies.list()
        api_fwaas.policy_list_for_tenant(
            IsA(http.HttpRequest), tenant_id).AndReturn(policies)

        # retrieves firewalls
        firewalls = self.firewalls.list()
        api_fwaas.firewall_list_for_tenant(
            IsA(http.HttpRequest), tenant_id).AndReturn(firewalls)

        routers = self.routers.list()
        api.neutron.router_list(
            IsA(http.HttpRequest), tenant_id=tenant_id).AndReturn(routers)
        api_fwaas.firewall_unassociated_routers_list(
            IsA(http.HttpRequest), tenant_id).\
            MultipleTimes().AndReturn(routers)
コード例 #4
0
    def set_up_expect_with_exception(self):
        tenant_id = self.tenant.id

        api.neutron.is_extension_supported(IsA(
            http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True)

        api_fwaas.rule_list_for_tenant(IsA(
            http.HttpRequest), tenant_id).AndRaise(self.exceptions.neutron)
        api_fwaas.policy_list_for_tenant(IsA(
            http.HttpRequest), tenant_id).AndRaise(self.exceptions.neutron)
        api_fwaas.firewall_list_for_tenant(IsA(
            http.HttpRequest), tenant_id).AndRaise(self.exceptions.neutron)
コード例 #5
0
    def test_delete_policy(self):
        api.neutron.is_extension_supported(
            IsA(http.HttpRequest), 'fwaasrouterinsertion').AndReturn(True)

        policy = self.fw_policies.first()
        api_fwaas.policy_list_for_tenant(
            IsA(http.HttpRequest),
            self.tenant.id).AndReturn(self.fw_policies.list())
        api_fwaas.policy_delete(IsA(http.HttpRequest), policy.id)
        self.mox.ReplayAll()

        form_data = {"action": "policiestable__deletepolicy__%s" % policy.id}
        res = self.client.post(self.INDEX_URL, form_data)

        self.assertNoFormErrors(res)
コード例 #6
0
    def test_update_firewall_get(self):
        firewall = self.firewalls.first()
        policies = self.fw_policies.list()
        tenant_id = self.tenant.id

        api_fwaas.policy_list_for_tenant(
            IsA(http.HttpRequest), tenant_id).AndReturn(policies)

        api_fwaas.firewall_get(IsA(http.HttpRequest),
                               firewall.id).AndReturn(firewall)

        self.mox.ReplayAll()

        res = self.client.get(
            reverse(self.UPDATEFIREWALL_PATH, args=(firewall.id,)))

        self.assertTemplateUsed(res, 'project/firewalls/updatefirewall.html')
コード例 #7
0
    def test_add_firewall_post_with_error(self):
        firewall = self.firewalls.first()
        policies = self.fw_policies.list()
        tenant_id = self.tenant.id
        form_data = {'name': firewall.name,
                     'description': firewall.description,
                     'firewall_policy_id': None,
                     'admin_state_up': firewall.admin_state_up
                     }
        api.neutron.is_extension_supported(
            IsA(http.HttpRequest),
            'fwaasrouterinsertion').AndReturn(False)
        api_fwaas.policy_list_for_tenant(
            IsA(http.HttpRequest), tenant_id).AndReturn(policies)

        self.mox.ReplayAll()

        res = self.client.post(reverse(self.ADDFIREWALL_PATH), form_data)

        self.assertFormErrors(res, 1)
コード例 #8
0
    def get_policiestable_data(self):
        try:
            tenant_id = self.request.user.tenant_id
            request = self.tab_group.request
            policies = api_fwaas.policy_list_for_tenant(request, tenant_id)
        except Exception:
            policies = []
            exceptions.handle(self.tab_group.request,
                              _('Unable to retrieve policies list.'))

        return policies
コード例 #9
0
    def test_policy_list_for_tenant(self):
        tenant_id = self.request.user.project_id
        exp_policies = self.fw_policies.list()
        policies_dict = {'firewall_policies': self.api_fw_policies.list()}
        rules_dict = {'firewall_rules': self.api_fw_rules.list()}

        neutronclient.list_firewall_policies(tenant_id=tenant_id,
                                             shared=False).AndReturn(
                                                 {'firewall_policies': []})
        neutronclient.list_firewall_policies(
            shared=True).AndReturn(policies_dict)
        neutronclient.list_firewall_rules().AndReturn(rules_dict)
        self.mox.ReplayAll()

        ret_val = api_fwaas.policy_list_for_tenant(self.request, tenant_id)
        for (v, d) in zip(ret_val, exp_policies):
            self._assert_policy_return_value(v, d)
コード例 #10
0
    def __init__(self, request, *args, **kwargs):
        super(AddFirewallAction, self).__init__(request, *args, **kwargs)

        firewall_policy_id_choices = [('', _("Select a policy"))]
        try:
            tenant_id = self.request.user.tenant_id
            policies = api_fwaas.policy_list_for_tenant(request, tenant_id)
            policies = sorted(policies, key=lambda policy: policy.name)
        except Exception as e:
            exceptions.handle(
                request,
                _('Unable to retrieve policy list (%(error)s).') %
                {'error': str(e)})
            policies = []
        for p in policies:
            firewall_policy_id_choices.append((p.id, p.name_or_id))
        self.fields['firewall_policy_id'].choices = firewall_policy_id_choices
コード例 #11
0
    def __init__(self, request, *args, **kwargs):
        super(UpdateFirewall, self).__init__(request, *args, **kwargs)

        try:
            tenant_id = self.request.user.tenant_id
            policies = api_fwaas.policy_list_for_tenant(request, tenant_id)
            policies = sorted(policies, key=lambda policy: policy.name)
        except Exception:
            exceptions.handle(request, _('Unable to retrieve policy list.'))
            policies = []

        policy_id = kwargs['initial']['firewall_policy_id']
        policy_name = [p.name for p in policies if p.id == policy_id][0]

        firewall_policy_id_choices = [(policy_id, policy_name)]
        for p in policies:
            if p.id != policy_id:
                firewall_policy_id_choices.append((p.id, p.name_or_id))

        self.fields['firewall_policy_id'].choices = firewall_policy_id_choices
コード例 #12
0
    def test_policy_list_for_tenant(self):
        tenant_id = self.request.user.project_id
        exp_policies = self.fw_policies.list()
        policies_dict = {'firewall_policies': self.api_fw_policies.list()}
        rules_dict = {'firewall_rules': self.api_fw_rules.list()}

        self.mock_list_firewall_policies.side_effect = [
            {'firewall_policies': []},
            policies_dict,
        ]
        self.mock_list_firewall_rules.return_value = rules_dict

        ret_val = api_fwaas.policy_list_for_tenant(self.request, tenant_id)
        for (v, d) in zip(ret_val, exp_policies):
            self._assert_policy_return_value(v, d)
        self.assertEqual(2, self.mock_list_firewall_policies.call_count)
        self.mock_list_firewall_policies.assert_has_calls([
            mock.call(tenant_id=tenant_id, shared=False),
            mock.call(shared=True),
        ])
        self.mock_list_firewall_rules.assert_called_once_with()