Merge "Ability to specify a host restricted to admin."

This commit is contained in:
Jenkins 2012-11-06 18:06:38 +00:00 committed by Gerrit Code Review
commit 5f1b486f03
3 changed files with 20 additions and 1 deletions

View File

@ -7,6 +7,7 @@
"compute:create": "",
"compute:create:attach_network": "",
"compute:create:attach_volume": "",
"compute:create:forced_host": "is_admin:True",
"compute:get_all": "",

View File

@ -500,7 +500,8 @@ class API(base.Base):
LOG.debug(_("Going to run %s instances...") % num_instances)
filter_properties = dict(scheduler_hints=scheduler_hints)
if context.is_admin and forced_host:
if forced_host:
check_policy(context, 'create:forced_host', {})
filter_properties['force_hosts'] = [forced_host]
for i in xrange(num_instances):

View File

@ -5220,6 +5220,23 @@ class ComputePolicyTestCase(BaseTestCase):
self.compute_api.get_instance_faults,
self.context, instances)
def test_force_host_fail(self):
rules = {"compute:create": [],
"compute:create:forced_host": [["role:fake"]]}
self._set_rules(rules)
self.assertRaises(exception.PolicyNotAuthorized,
self.compute_api.create, self.context, None, '1',
availability_zone='1:1')
def test_force_host_pass(self):
rules = {"compute:create": [],
"compute:create:forced_host": []}
self._set_rules(rules)
self.compute_api.create(self.context, None, '1',
availability_zone='1:1')
class ComputeHostAPITestCase(BaseTestCase):
def setUp(self):