init: configure "Non-Interactive Users" as batch priority
The Non-Interactive Users used to be a special group in the
system_config table to force its members onto the batch queue.
This default behavior was lost somewhere when priority settings
moved to project.config in All-Projects.
Restore the default for this group to use batch priority.
Bug: issue 1886
Change-Id: I3bc27c61fffe6fe33dba00e1260dec42f111b3ae
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/AllProjectsCreator.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/AllProjectsCreator.java
index be1ffbf..0288fdc 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/AllProjectsCreator.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/AllProjectsCreator.java
@@ -23,6 +23,7 @@
import com.google.gerrit.common.data.LabelValue;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule;
+import com.google.gerrit.common.data.PermissionRule.Action;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.Project.InheritableBoolean;
@@ -50,6 +51,7 @@
private final PersonIdent serverUser;
private GroupReference admin;
+ private GroupReference batch;
private GroupReference anonymous;
private GroupReference registered;
private GroupReference owners;
@@ -79,6 +81,11 @@
return this;
}
+ public AllProjectsCreator setBatchUsers(GroupReference batch) {
+ this.batch = batch;
+ return this;
+ }
+
public void create() throws IOException, ConfigInvalidException {
Repository git = null;
try {
@@ -132,6 +139,13 @@
grant(config, cap, GlobalCapability.ADMINISTRATE_SERVER, admin);
grant(config, all, Permission.READ, admin, anonymous);
+ if (batch != null) {
+ Permission priority = cap.getPermission(GlobalCapability.PRIORITY, true);
+ PermissionRule r = rule(config, batch);
+ r.setAction(Action.BATCH);
+ priority.add(r);
+ }
+
LabelType cr = initCodeReviewLabel(config);
grant(config, heads, cr, -1, 1, registered);
grant(config, heads, cr, -2, 2, admin, owners);
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaCreator.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaCreator.java
index 8e8995a..0e89a75 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaCreator.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/SchemaCreator.java
@@ -51,6 +51,7 @@
private AccountGroup anonymous;
private AccountGroup registered;
private AccountGroup owners;
+ private AccountGroup batch;
@Inject
public SchemaCreator(SitePaths site,
@@ -90,6 +91,7 @@
initSystemConfig(db);
allProjectsCreator
.setAdministrators(GroupReference.forGroup(admin))
+ .setBatchUsers(GroupReference.forGroup(batch))
.create();
dataSourceType.getIndexScript().run(db);
}
@@ -131,13 +133,13 @@
c.accountGroupNames().insert(
Collections.singleton(new AccountGroupName(registered)));
- final AccountGroup batchUsers = newGroup(c, "Non-Interactive Users", null);
- batchUsers.setDescription("Users who perform batch actions on Gerrit");
- batchUsers.setOwnerGroupUUID(admin.getGroupUUID());
- batchUsers.setType(AccountGroup.Type.INTERNAL);
- c.accountGroups().insert(Collections.singleton(batchUsers));
+ batch = newGroup(c, "Non-Interactive Users", null);
+ batch.setDescription("Users who perform batch actions on Gerrit");
+ batch.setOwnerGroupUUID(admin.getGroupUUID());
+ batch.setType(AccountGroup.Type.INTERNAL);
+ c.accountGroups().insert(Collections.singleton(batch));
c.accountGroupNames().insert(
- Collections.singleton(new AccountGroupName(batchUsers)));
+ Collections.singleton(new AccountGroupName(batch)));
owners = newGroup(c, "Project Owners", AccountGroup.PROJECT_OWNERS);
owners.setDescription("Any owner of the project");