Merge "Ability to specify a host restricted to admin."
This commit is contained in:
commit
5f1b486f03
@ -7,6 +7,7 @@
|
||||
"compute:create": "",
|
||||
"compute:create:attach_network": "",
|
||||
"compute:create:attach_volume": "",
|
||||
"compute:create:forced_host": "is_admin:True",
|
||||
"compute:get_all": "",
|
||||
|
||||
|
||||
|
@ -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):
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user