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)
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)
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)
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)
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")
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)
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)
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)
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)
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 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 []
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)
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")
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)
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
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")
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")