示例#1
0
 def test_router_resetrouterrules(self):
     pre_router = self.routers_with_rules.first()
     post_router = copy.deepcopy(pre_router)
     default_rules = [{'source': 'any', 'destination': 'any',
                       'action': 'permit', 'nexthops': [], 'id': '2'}]
     del post_router['router_rules'][:]
     post_router['router_rules'].extend(default_rules)
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(post_router)
     params = {}
     params['router_rules'] = rulemanager.format_for_api(
         post_router['router_rules'])
     router_update = api.neutron.router_update(IsA(http.HttpRequest),
                                               pre_router.id, **params)
     router_update.AndReturn({'router': post_router})
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(post_router)
     api.neutron.port_list(IsA(http.HttpRequest),
                           device_id=pre_router.id)\
         .AndReturn([self.ports.first()])
     self._mock_external_network_get(pre_router)
     self._mock_network_list(pre_router['tenant_id'])
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(post_router)
     self.mox.ReplayAll()
     form_data = {'router_id': pre_router.id,
                  'action': 'routerrules__resetrules'}
     url = reverse(self.DETAIL_PATH, args=[pre_router.id])
     res = self.client.post(url, form_data)
     self.assertNoFormErrors(res)
示例#2
0
 def test_router_removerouterrule(self):
     pre_router = self.routers_with_rules.first()
     post_router = copy.deepcopy(pre_router)
     rule = post_router['router_rules'].pop()
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(pre_router)
     params = {}
     params['router_rules'] = rulemanager.format_for_api(
         post_router['router_rules'])
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(pre_router)
     router_update = api.neutron.router_update(IsA(http.HttpRequest),
                                               pre_router.id, **params)
     router_update.AndReturn({'router': post_router})
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(pre_router)
     api.neutron.port_list(IsA(http.HttpRequest),
                           device_id=pre_router.id)\
         .AndReturn([self.ports.first()])
     self._mock_external_network_get(pre_router)
     self.mox.ReplayAll()
     form_rule_id = rule['source'] + rule['destination']
     form_data = {'router_id': pre_router.id,
                  'action': 'routerrules__delete__%s' % form_rule_id}
     url = reverse(self.DETAIL_PATH, args=[pre_router.id])
     res = self.client.post(url, form_data)
     self.assertNoFormErrors(res)
示例#3
0
    def _test_router_addrouterrule(self, raise_error=False):
        pre_router = self.routers_with_rules.first()
        post_router = copy.deepcopy(pre_router)
        rule = {'source': '1.2.3.4/32', 'destination': '4.3.2.1/32', 'id': 99,
                'action': 'permit', 'nexthops': ['1.1.1.1', '2.2.2.2']}
        post_router['router_rules'].insert(0, rule)
        api.neutron.router_get(IsA(http.HttpRequest),
                               pre_router.id).AndReturn(pre_router)
        params = {}
        params['router_rules'] = rulemanager.format_for_api(
            post_router['router_rules'])
        router_update = api.neutron.router_update(IsA(http.HttpRequest),
                                                  pre_router.id, **params)
        if raise_error:
            router_update.AndRaise(self.exceptions.neutron)
        else:
            router_update.AndReturn({'router': post_router})
        self.mox.ReplayAll()

        form_data = {'router_id': pre_router.id,
                     'source': rule['source'],
                     'destination': rule['destination'],
                     'action': rule['action'],
                     'nexthops': ','.join(rule['nexthops'])}

        url = reverse('horizon:%s:l3routers:addrouterrule' % self.DASHBOARD,
                      args=[pre_router.id])
        res = self.client.post(url, form_data)
        self.assertNoFormErrors(res)
        detail_url = reverse(self.DETAIL_PATH, args=[pre_router.id])
        self.assertRedirectsNoFollow(res, detail_url)
示例#4
0
 def test_router_removerouterrule(self):
     pre_router = self.routers_with_rules.first()
     post_router = copy.deepcopy(pre_router)
     rule = post_router['router_rules'].pop()
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(pre_router)
     params = {}
     params['router_rules'] = rulemanager.format_for_api(
         post_router['router_rules'])
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(pre_router)
     router_update = api.neutron.router_update(IsA(http.HttpRequest),
                                               pre_router.id, **params)
     router_update.AndReturn({'router': post_router})
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(pre_router)
     api.neutron.port_list(IsA(http.HttpRequest),
                           device_id=pre_router.id)\
         .AndReturn([self.ports.first()])
     self._mock_external_network_get(pre_router)
     self.mox.ReplayAll()
     form_rule_id = rule['source'] + rule['destination']
     form_data = {
         'router_id': pre_router.id,
         'action': 'routerrules__delete__%s' % form_rule_id
     }
     url = reverse(self.DETAIL_PATH, args=[pre_router.id])
     res = self.client.post(url, form_data)
     self.assertNoFormErrors(res)
示例#5
0
    def _test_router_addrouterrule(self, raise_error=False):
        pre_router = self.routers_with_rules.first()
        post_router = copy.deepcopy(pre_router)
        rule = {
            'source': '1.2.3.4/32',
            'destination': '4.3.2.1/32',
            'id': 99,
            'action': 'permit',
            'nexthops': ['1.1.1.1', '2.2.2.2']
        }
        post_router['router_rules'].insert(0, rule)
        api.neutron.router_get(IsA(http.HttpRequest),
                               pre_router.id).AndReturn(pre_router)
        params = {}
        params['router_rules'] = rulemanager.format_for_api(
            post_router['router_rules'])
        router_update = api.neutron.router_update(IsA(http.HttpRequest),
                                                  pre_router.id, **params)
        if raise_error:
            router_update.AndRaise(self.exceptions.neutron)
        else:
            router_update.AndReturn({'router': post_router})
        self.mox.ReplayAll()

        form_data = {
            'router_id': pre_router.id,
            'source': rule['source'],
            'destination': rule['destination'],
            'action': rule['action'],
            'nexthops': ','.join(rule['nexthops'])
        }

        url = reverse('horizon:%s:l3routers:addrouterrule' % self.DASHBOARD,
                      args=[pre_router.id])
        res = self.client.post(url, form_data)
        self.assertNoFormErrors(res)
        detail_url = reverse(self.DETAIL_PATH, args=[pre_router.id])
        self.assertRedirectsNoFollow(res, detail_url)
示例#6
0
 def test_router_resetrouterrules(self):
     pre_router = self.routers_with_rules.first()
     post_router = copy.deepcopy(pre_router)
     default_rules = [{
         'source': 'any',
         'destination': 'any',
         'action': 'permit',
         'nexthops': [],
         'id': '2'
     }]
     del post_router['router_rules'][:]
     post_router['router_rules'].extend(default_rules)
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(post_router)
     params = {}
     params['router_rules'] = rulemanager.format_for_api(
         post_router['router_rules'])
     router_update = api.neutron.router_update(IsA(http.HttpRequest),
                                               pre_router.id, **params)
     router_update.AndReturn({'router': post_router})
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(post_router)
     api.neutron.port_list(IsA(http.HttpRequest),
                           device_id=pre_router.id)\
         .AndReturn([self.ports.first()])
     self._mock_external_network_get(pre_router)
     self._mock_network_list(pre_router['tenant_id'])
     api.neutron.router_get(IsA(http.HttpRequest),
                            pre_router.id).AndReturn(post_router)
     self.mox.ReplayAll()
     form_data = {
         'router_id': pre_router.id,
         'action': 'routerrules__resetrules'
     }
     url = reverse(self.DETAIL_PATH, args=[pre_router.id])
     res = self.client.post(url, form_data)
     self.assertNoFormErrors(res)