Fix role delete validation
* Fixed node filter in RoleValidator Change-Id: Ia3159cb173c72b565ba7afec1d32af3cc38a06bc Closes-bug: #1488091
This commit is contained in:
parent
9f227f2cc0
commit
f813073793
|
@ -29,10 +29,10 @@ class RoleValidator(BasicValidator):
|
|||
clusters = [cluster.id for cluster in release.clusters]
|
||||
node = db().query(models.Node).filter(
|
||||
models.Node.cluster_id.in_(clusters)
|
||||
).filter(sa.not_(sa.and_(
|
||||
).filter(sa.or_(
|
||||
models.Node.roles.any(role_name),
|
||||
models.Node.pending_roles.any(role_name)
|
||||
))).first()
|
||||
)).first()
|
||||
|
||||
if node:
|
||||
raise errors.CannotDelete(
|
||||
|
|
|
@ -121,6 +121,21 @@ class TestRoleApi(BaseRoleTest):
|
|||
self.release.id, role['name'], expect_errors=True)
|
||||
self.assertEqual(delete_resp.status_code, 400)
|
||||
|
||||
def test_delete_role_when_assigned_another_role(self):
|
||||
# There was bug with such validation
|
||||
# https://bugs.launchpad.net/fuel/+bug/1488091
|
||||
role = self.env.create_role(self.release.id, self.role_data).json
|
||||
self.env.create(
|
||||
nodes_kwargs=[
|
||||
{'roles': ['compute'], 'pending_addition': True},
|
||||
],
|
||||
cluster_kwargs={'release_id': self.release.id},
|
||||
)
|
||||
|
||||
delete_resp = self.env.delete_role(
|
||||
self.release.id, role['name'])
|
||||
self.assertEqual(delete_resp.status_code, 204)
|
||||
|
||||
def test_delete_pending_assigned_role(self):
|
||||
role = self.env.create_role(self.release.id, self.role_data).json
|
||||
self.env.create(
|
||||
|
|
Loading…
Reference in New Issue