Add policy checking to nova.network.api.API
Partially implements bp interim-nova-authz-service Change-Id: Ib93d854ee1a7f22f4e7f313a9d50300df8b8596b
This commit is contained in:
@@ -88,5 +88,39 @@
|
||||
"volume:create_snapshot": [],
|
||||
"volume:delete_snapshot": [],
|
||||
"volume:get_snapshot": [],
|
||||
"volume:get_all_snapshots": []
|
||||
"volume:get_all_snapshots": [],
|
||||
|
||||
|
||||
"network:get_all_networks": [],
|
||||
"network:get_network": [],
|
||||
"network:delete_network": [],
|
||||
"network:disassociate_network": [],
|
||||
"network:get_vifs_by_instance": [],
|
||||
"network:allocate_for_instance": [],
|
||||
"network:deallocate_for_instance": [],
|
||||
"network:validate_networks": [],
|
||||
"network:get_instance_uuids_by_ip_filter": [],
|
||||
|
||||
"network:get_floating_ip": [],
|
||||
"network:get_floating_ip_pools": [],
|
||||
"network:get_floating_ip_by_address": [],
|
||||
"network:get_floating_ips_by_project": [],
|
||||
"network:get_floating_ips_by_fixed_address": [],
|
||||
"network:allocate_floating_ip": [],
|
||||
"network:deallocate_floating_ip": [],
|
||||
"network:associate_floating_ip": [],
|
||||
"network:disassociate_floating_ip": [],
|
||||
|
||||
"network:get_fixed_ip": [],
|
||||
"network:add_fixed_ip_to_instance": [],
|
||||
"network:remove_fixed_ip_from_instance": [],
|
||||
"network:add_network_to_project": [],
|
||||
"network:get_instance_nw_info": [],
|
||||
|
||||
"network:get_dns_zones": [],
|
||||
"network:add_dns_entry": [],
|
||||
"network:modify_dns_entry": [],
|
||||
"network:delete_dns_entry": [],
|
||||
"network:get_dns_entries_by_address": [],
|
||||
"network:get_dns_entries_by_name": []
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ from nova import db
|
||||
from nova import exception
|
||||
from nova import flags
|
||||
from nova import log as logging
|
||||
import nova.policy
|
||||
from nova import rpc
|
||||
from nova import test
|
||||
from nova import utils
|
||||
@@ -230,7 +231,7 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
self.mox.ReplayAll()
|
||||
|
||||
self.assertRaises(exception.FixedIpInvalid,
|
||||
self.network.validate_networks, None,
|
||||
self.network.validate_networks, self.context,
|
||||
requested_networks)
|
||||
|
||||
def test_validate_networks_empty_fixed_ip(self):
|
||||
@@ -243,7 +244,7 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
|
||||
self.assertRaises(exception.FixedIpInvalid,
|
||||
self.network.validate_networks,
|
||||
None, requested_networks)
|
||||
self.context, requested_networks)
|
||||
|
||||
def test_validate_networks_none_fixed_ip(self):
|
||||
self.mox.StubOutWithMock(db, 'network_get_all_by_uuids')
|
||||
@@ -253,7 +254,7 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
mox.IgnoreArg()).AndReturn(networks)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
self.network.validate_networks(None, requested_networks)
|
||||
self.network.validate_networks(self.context, requested_networks)
|
||||
|
||||
def test_add_fixed_ip_instance_without_vpn_requested_networks(self):
|
||||
self.mox.StubOutWithMock(db, 'network_get')
|
||||
@@ -813,12 +814,17 @@ class VlanNetworkTestCase(test.TestCase):
|
||||
|
||||
|
||||
class CommonNetworkTestCase(test.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(CommonNetworkTestCase, self).setUp()
|
||||
self.context = context.RequestContext('fake', 'fake')
|
||||
|
||||
def fake_create_fixed_ips(self, context, network_id):
|
||||
return None
|
||||
|
||||
def test_remove_fixed_ip_from_instance(self):
|
||||
manager = fake_network.FakeNetworkManager()
|
||||
manager.remove_fixed_ip_from_instance(None, 99, '10.0.0.1')
|
||||
manager.remove_fixed_ip_from_instance(self.context, 99, '10.0.0.1')
|
||||
|
||||
self.assertEquals(manager.deallocate_called, '10.0.0.1')
|
||||
|
||||
@@ -826,7 +832,7 @@ class CommonNetworkTestCase(test.TestCase):
|
||||
manager = fake_network.FakeNetworkManager()
|
||||
self.assertRaises(exception.FixedIpNotFoundForSpecificInstance,
|
||||
manager.remove_fixed_ip_from_instance,
|
||||
None, 99, 'bad input')
|
||||
self.context, 99, 'bad input')
|
||||
|
||||
def test_validate_cidrs(self):
|
||||
manager = fake_network.FakeNetworkManager()
|
||||
@@ -1320,3 +1326,32 @@ class FloatingIPTestCase(test.TestCase):
|
||||
self.assertRaises(exception.NotFound,
|
||||
self.network.delete_dns_entry, self.context,
|
||||
name1, zone)
|
||||
|
||||
|
||||
class NetworkPolicyTestCase(test.TestCase):
|
||||
def setUp(self):
|
||||
super(NetworkPolicyTestCase, self).setUp()
|
||||
|
||||
nova.policy.reset()
|
||||
nova.policy.init()
|
||||
|
||||
self.context = context.get_admin_context()
|
||||
|
||||
def tearDown(self):
|
||||
super(NetworkPolicyTestCase, self).tearDown()
|
||||
nova.policy.reset()
|
||||
|
||||
def _set_rules(self, rules):
|
||||
nova.common.policy.set_brain(nova.common.policy.HttpBrain(rules))
|
||||
|
||||
def test_check_policy(self):
|
||||
self.mox.StubOutWithMock(nova.policy, 'enforce')
|
||||
target = {
|
||||
'project_id': self.context.project_id,
|
||||
'user_id': self.context.user_id,
|
||||
}
|
||||
nova.policy.enforce(self.context, 'network:get_all', target)
|
||||
self.mox.ReplayAll()
|
||||
network_manager.check_policy(self.context, 'get_all')
|
||||
self.mox.UnsetStubs()
|
||||
self.mox.VerifyAll()
|
||||
|
||||
Reference in New Issue
Block a user