Ejemplo n.º 1
0
    def test_edit_rules_add_rule_self_as_source_group(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.get(id=3)

        self.mox.StubOutWithMock(api, 'security_group_rule_create')
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_rule_create(IsA(http.HttpRequest),
                                       sec_group.id,
                                       rule.ip_protocol,
                                       int(rule.from_port),
                                       int(rule.to_port),
                                       None,
                                       u'%s' % sec_group.id).AndReturn(rule)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': rule.from_port,
                    'to_port': rule.to_port,
                    'ip_protocol': rule.ip_protocol,
                    'cidr': '0.0.0.0/0',
                    'source_group': sec_group.id}
        res = self.client.post(self.edit_url, formData)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Ejemplo n.º 2
0
    def test_index(self):
        keypairs = self.keypairs.list()
        sec_groups = self.security_groups.list()
        floating_ips = self.floating_ips.list()
        self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
        self.mox.StubOutWithMock(api, 'security_group_list')
        self.mox.StubOutWithMock(api.nova, 'keypair_list')
        self.mox.StubOutWithMock(api.nova, 'server_list')

        api.nova.server_list(IsA(http.HttpRequest),
                             all_tenants=True).AndReturn(self.servers.list())
        api.nova.keypair_list(IsA(http.HttpRequest)).AndReturn(keypairs)
        api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
                                    .AndReturn(floating_ips)
        api.security_group_list(IsA(http.HttpRequest)).AndReturn(sec_groups)

        self.mox.ReplayAll()

        url = reverse('horizon:project:access_and_security:index')
        res = self.client.get(url)

        self.assertTemplateUsed(res, 'project/access_and_security/index.html')
        self.assertItemsEqual(res.context['keypairs_table'].data, keypairs)
        self.assertItemsEqual(res.context['security_groups_table'].data,
                              sec_groups)
        self.assertItemsEqual(res.context['floating_ips_table'].data,
                              floating_ips)
Ejemplo n.º 3
0
    def test_disassociate_post_with_exception(self):
        floating_ip = self.floating_ips.first()
        server = self.servers.first()
        self.mox.StubOutWithMock(api.nova, 'keypair_list')
        self.mox.StubOutWithMock(api, 'security_group_list')
        self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
        self.mox.StubOutWithMock(api, 'tenant_floating_ip_get')
        self.mox.StubOutWithMock(api, 'server_remove_floating_ip')
        self.mox.StubOutWithMock(api.nova, 'server_list')

        api.nova.server_list(IsA(http.HttpRequest),
                             all_tenants=True).AndReturn(self.servers.list())
        api.nova.keypair_list(IsA(http.HttpRequest)) \
                              .AndReturn(self.keypairs.list())
        api.security_group_list(IsA(http.HttpRequest)) \
                                .AndReturn(self.security_groups.list())
        api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
                                    .AndReturn(self.floating_ips.list())

        api.server_remove_floating_ip(IsA(http.HttpRequest),
                                      server.id,
                                      floating_ip.id) \
                                .AndRaise(self.exceptions.nova)
        self.mox.ReplayAll()

        action = "floating_ips__disassociate__%s" % floating_ip.id
        res = self.client.post(INDEX_URL, {"action": action})
        self.assertRedirectsNoFollow(res, INDEX_URL)
Ejemplo n.º 4
0
    def test_edit_rules_add_rule_cidr_and_source_group(self):
        sec_group = self.security_groups.first()
        sec_group_other = self.security_groups.get(id=2)
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.first()

        self.mox.StubOutWithMock(api, 'security_group_get')
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': rule.from_port,
                    'to_port': rule.to_port,
                    'ip_protocol': rule.ip_protocol,
                    'cidr': "127.0.0.1/32",
                    'source_group': sec_group_other.id}
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        msg = 'Either CIDR or Source Group may be specified, but not both.'
        self.assertFormErrors(res, count=1, message=msg)
Ejemplo n.º 5
0
    def test_index(self):
        keypairs = self.keypairs.list()
        sec_groups = self.security_groups.list()
        floating_ips = self.floating_ips.list()
        self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
        self.mox.StubOutWithMock(api, 'security_group_list')
        self.mox.StubOutWithMock(api.nova, 'keypair_list')
        self.mox.StubOutWithMock(api.nova, 'server_list')

        api.nova.server_list(IsA(http.HttpRequest),
                             all_tenants=True).AndReturn(self.servers.list())
        api.nova.keypair_list(IsA(http.HttpRequest)).AndReturn(keypairs)
        api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
                                    .AndReturn(floating_ips)
        api.security_group_list(IsA(http.HttpRequest)).AndReturn(sec_groups)

        self.mox.ReplayAll()

        url = reverse('horizon:project:access_and_security:index')
        res = self.client.get(url)

        self.assertTemplateUsed(res, 'project/access_and_security/index.html')
        self.assertItemsEqual(res.context['keypairs_table'].data, keypairs)
        self.assertItemsEqual(res.context['security_groups_table'].data,
                              sec_groups)
        self.assertItemsEqual(res.context['floating_ips_table'].data,
                              floating_ips)
Ejemplo n.º 6
0
    def test_edit_rules_invalid_port_range(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.first()

        self.mox.StubOutWithMock(api, 'security_group_get')
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': rule.from_port,
            'to_port': int(rule.from_port) - 1,
            'ip_protocol': rule.ip_protocol,
            'cidr': rule.ip_range['cidr'],
            'source_group': ''
        }
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "greater than or equal to")
Ejemplo n.º 7
0
    def test_edit_rules_add_rule_exception(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.first()

        self.mox.StubOutWithMock(api, 'security_group_rule_create')
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_rule_create(IsA(http.HttpRequest), sec_group.id,
                                       rule.ip_protocol, int(rule.from_port),
                                       int(rule.to_port),
                                       rule.ip_range['cidr'],
                                       None).AndRaise(self.exceptions.nova)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': rule.from_port,
            'to_port': rule.to_port,
            'ip_protocol': rule.ip_protocol,
            'cidr': rule.ip_range['cidr'],
            'source_group': ''
        }
        res = self.client.post(self.edit_url, formData)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Ejemplo n.º 8
0
    def test_edit_rules_add_rule_exception(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.first()

        self.mox.StubOutWithMock(api, 'security_group_rule_create')
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_rule_create(IsA(http.HttpRequest),
                                       sec_group.id,
                                       rule.ip_protocol,
                                       int(rule.from_port),
                                       int(rule.to_port),
                                       rule.ip_range['cidr'],
                                       None).AndRaise(self.exceptions.nova)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': rule.from_port,
                    'to_port': rule.to_port,
                    'ip_protocol': rule.ip_protocol,
                    'cidr': rule.ip_range['cidr'],
                    'source_group': ''}
        res = self.client.post(self.edit_url, formData)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Ejemplo n.º 9
0
    def test_edit_rules_add_rule_cidr_and_source_group(self):
        sec_group = self.security_groups.first()
        sec_group_other = self.security_groups.get(id=2)
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.first()

        self.mox.StubOutWithMock(api, 'security_group_get')
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': rule.from_port,
            'to_port': rule.to_port,
            'ip_protocol': rule.ip_protocol,
            'cidr': "127.0.0.1/32",
            'source_group': sec_group_other.id
        }
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        msg = 'Either CIDR or Source Group may be specified, but not both.'
        self.assertFormErrors(res, count=1, message=msg)
Ejemplo n.º 10
0
    def test_edit_rules_add_rule_self_as_source_group(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.get(id=3)

        self.mox.StubOutWithMock(api, 'security_group_rule_create')
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_rule_create(IsA(http.HttpRequest), sec_group.id,
                                       rule.ip_protocol, int(rule.from_port),
                                       int(rule.to_port), None,
                                       u'%s' % sec_group.id).AndReturn(rule)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': rule.from_port,
            'to_port': rule.to_port,
            'ip_protocol': rule.ip_protocol,
            'cidr': '0.0.0.0/0',
            'source_group': sec_group.id
        }
        res = self.client.post(self.edit_url, formData)
        self.assertRedirectsNoFollow(res, INDEX_URL)
Ejemplo n.º 11
0
    def test_edit_rules_get(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()

        self.mox.StubOutWithMock(api, 'security_group_get')
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        res = self.client.get(self.edit_url)
        self.assertTemplateUsed(res,
                'project/access_and_security/security_groups/edit_rules.html')
        self.assertItemsEqual(res.context['security_group'].name,
                              sec_group.name)
Ejemplo n.º 12
0
 def get_security_groups_data(self):
     try:
         security_groups = api.security_group_list(self.request)
     except:
         security_groups = []
         exceptions.handle(self.request,
                           _('Unable to retrieve security groups.'))
     return security_groups
Ejemplo n.º 13
0
 def get_security_groups_data(self):
     try:
         security_groups = api.security_group_list(self.request)
     except:
         security_groups = []
         exceptions.handle(self.request,
                           _('Unable to retrieve security groups.'))
     return security_groups
 def securitygrouplist():
     try:
         fl = api.security_group_list(request)
         sel = [(f.name, f.name) for f in fl]
         return sel
     except api_exceptions.ApiException:
         LOG.error("Unable to retrieve list of security groups", exc_info=True)
         return []
Ejemplo n.º 15
0
    def test_edit_rules_get(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()

        self.mox.StubOutWithMock(api, 'security_group_get')
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        res = self.client.get(self.edit_url)
        self.assertTemplateUsed(
            res, 'project/access_and_security/security_groups/edit_rules.html')
        self.assertItemsEqual(res.context['security_group'].name,
                              sec_group.name)
def index(request, tenant_id):
    delete_form, handled = DeleteGroup.maybe_handle(request,
                                initial={ 'tenant_id': tenant_id })

    if handled:
        return handled

    try:
        security_groups = api.security_group_list(request)
    except api_exceptions.ApiException, e:
        security_groups = []
        LOG.error("ApiException in security_groups index", exc_info=True)
        messages.error(request, 'Error fetching security_groups: %s' % e.message)
Ejemplo n.º 17
0
    def test_edit_rules_invalid_port_range(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        rule = self.security_group_rules.first()

        self.mox.StubOutWithMock(api, 'security_group_get')
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        self.mox.StubOutWithMock(api, 'security_group_list')
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': rule.from_port,
                    'to_port': int(rule.from_port) - 1,
                    'ip_protocol': rule.ip_protocol,
                    'cidr': rule.ip_range['cidr'],
                    'source_group': ''}
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "greater than or equal to")
Ejemplo n.º 18
0
    def test_delete_keypair_exception(self):
        keypair = self.keypairs.first()
        self.mox.StubOutWithMock(api.nova, 'keypair_list')
        self.mox.StubOutWithMock(api.nova, 'keypair_delete')
        self.mox.StubOutWithMock(api, 'security_group_list')
        self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
        self.mox.StubOutWithMock(api.nova, 'server_list')

        api.nova.server_list(IsA(http.HttpRequest),
                             all_tenants=True).AndReturn(self.servers.list())
        api.security_group_list(IsA(http.HttpRequest)) \
                                .AndReturn(self.security_groups.list())
        api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
                                   .AndReturn(self.floating_ips.list())
        api.nova.keypair_list(IsA(http.HttpRequest)) \
                .AndReturn(self.keypairs.list())
        api.nova.keypair_delete(IsA(http.HttpRequest), keypair.name) \
                .AndRaise(self.exceptions.nova)
        self.mox.ReplayAll()

        formData = {'action': 'keypairs__delete__%s' % keypair.name}
        res = self.client.post(INDEX_VIEW_URL, formData)
        self.assertRedirectsNoFollow(res, INDEX_VIEW_URL)
Ejemplo n.º 19
0
    def get_form_kwargs(self):
        kwargs = super(EditRulesView, self).get_form_kwargs()

        try:
            groups = api.security_group_list(self.request)
        except:
            groups = []
            exceptions.handle(self.request,
                              _("Unable to retrieve security groups."))

        security_groups = []
        for group in groups:
            if group.id == int(self.kwargs['security_group_id']):
                security_groups.append((group.id,
                                        _("%s (current)") % group.name))
            else:
                security_groups.append((group.id, group.name))
        kwargs['sg_list'] = security_groups
        return kwargs
Ejemplo n.º 20
0
    def test_edit_rules_invalid_icmp_rule(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        icmp_rule = self.security_group_rules.list()[1]

        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(IsA(
            http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': 256,
            'to_port': icmp_rule.to_port,
            'ip_protocol': icmp_rule.ip_protocol,
            'cidr': icmp_rule.ip_range['cidr'],
            'source_group': ''
        }
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP type not in range (-1, 255)")

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': icmp_rule.from_port,
            'to_port': 256,
            'ip_protocol': icmp_rule.ip_protocol,
            'cidr': icmp_rule.ip_range['cidr'],
            'source_group': ''
        }
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP code not in range (-1, 255)")

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': icmp_rule.from_port,
            'to_port': None,
            'ip_protocol': icmp_rule.ip_protocol,
            'cidr': icmp_rule.ip_range['cidr'],
            'source_group': ''
        }
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP code is invalid")

        formData = {
            'method': 'AddRule',
            'security_group_id': sec_group.id,
            'from_port': None,
            'to_port': icmp_rule.to_port,
            'ip_protocol': icmp_rule.ip_protocol,
            'cidr': icmp_rule.ip_range['cidr'],
            'source_group': ''
        }
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP type is invalid")
Ejemplo n.º 21
0
    def test_edit_rules_invalid_icmp_rule(self):
        sec_group = self.security_groups.first()
        sec_group_list = self.security_groups.list()
        icmp_rule = self.security_group_rules.list()[1]

        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        api.security_group_get(IsA(http.HttpRequest),
                               sec_group.id).AndReturn(sec_group)
        api.security_group_list(
                        IsA(http.HttpRequest)).AndReturn(sec_group_list)
        self.mox.ReplayAll()

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': 256,
                    'to_port': icmp_rule.to_port,
                    'ip_protocol': icmp_rule.ip_protocol,
                    'cidr': icmp_rule.ip_range['cidr'],
                    'source_group': ''}
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP type not in range (-1, 255)")

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': icmp_rule.from_port,
                    'to_port': 256,
                    'ip_protocol': icmp_rule.ip_protocol,
                    'cidr': icmp_rule.ip_range['cidr'],
                    'source_group': ''}
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP code not in range (-1, 255)")

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': icmp_rule.from_port,
                    'to_port': None,
                    'ip_protocol': icmp_rule.ip_protocol,
                    'cidr': icmp_rule.ip_range['cidr'],
                    'source_group': ''}
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP code is invalid")

        formData = {'method': 'AddRule',
                    'security_group_id': sec_group.id,
                    'from_port': None,
                    'to_port': icmp_rule.to_port,
                    'ip_protocol': icmp_rule.ip_protocol,
                    'cidr': icmp_rule.ip_range['cidr'],
                    'source_group': ''}
        res = self.client.post(self.edit_url, formData)
        self.assertNoMessages()
        self.assertContains(res, "The ICMP type is invalid")