Automatically add the current user to new ACL groups. Also add the user
to the group if all users are removed from the ACL group.
Risk: low
Visibility: medium (changing behavior)
Signed-off-by: James Ren <jamesren@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1904 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/rpc_interface.py b/frontend/afe/rpc_interface.py
index 501ca11..25d8dc4 100644
--- a/frontend/afe/rpc_interface.py
+++ b/frontend/afe/rpc_interface.py
@@ -183,35 +183,45 @@
# acl groups
def add_acl_group(name, description=None):
- return models.AclGroup.add_object(name=name, description=description).id
+ group = models.AclGroup.add_object(name=name, description=description)
+ group.users.add(thread_local.get_user())
+ return group.id
def modify_acl_group(id, **data):
- models.AclGroup.smart_get(id).update_object(data)
+ group = models.AclGroup.smart_get(id)
+ group.check_for_acl_violation_acl_group()
+ group.update_object(data)
+ group.add_current_user_if_empty()
def acl_group_add_users(id, users):
- users = [models.User.smart_get(user) for user in users]
group = models.AclGroup.smart_get(id)
+ group.check_for_acl_violation_acl_group()
+ users = [models.User.smart_get(user) for user in users]
group.users.add(*users)
def acl_group_remove_users(id, users):
- users = [models.User.smart_get(user) for user in users]
group = models.AclGroup.smart_get(id)
+ group.check_for_acl_violation_acl_group()
+ users = [models.User.smart_get(user) for user in users]
group.users.remove(*users)
+ group.add_current_user_if_empty()
def acl_group_add_hosts(id, hosts):
- hosts = [models.Host.smart_get(host) for host in hosts]
group = models.AclGroup.smart_get(id)
+ group.check_for_acl_violation_acl_group()
+ hosts = [models.Host.smart_get(host) for host in hosts]
group.hosts.add(*hosts)
group.on_host_membership_change()
def acl_group_remove_hosts(id, hosts):
- hosts = [models.Host.smart_get(host) for host in hosts]
group = models.AclGroup.smart_get(id)
+ group.check_for_acl_violation_acl_group()
+ hosts = [models.Host.smart_get(host) for host in hosts]
group.hosts.remove(*hosts)
group.on_host_membership_change()