Add a Maintain Server global capability
This capability allows for general maintenance tasks like flushing caches and reindexing changes, without requiring either Administrate Server (which is too broad) or a handful of other minor capabilities (which we don't want to grow out of control). Change-Id: I3dd75d14e7b0303b23bad24dffb9bfdfb515efc8
This commit is contained in:
@@ -14,12 +14,13 @@
|
||||
|
||||
package com.google.gerrit.sshd.commands;
|
||||
|
||||
import static com.google.gerrit.common.data.GlobalCapability.FLUSH_CACHES;
|
||||
import static com.google.gerrit.common.data.GlobalCapability.MAINTAIN_SERVER;
|
||||
import static com.google.gerrit.server.config.PostCaches.Operation.FLUSH;
|
||||
import static com.google.gerrit.server.config.PostCaches.Operation.FLUSH_ALL;
|
||||
import static com.google.gerrit.sshd.CommandMetaData.Mode.MASTER_OR_SLAVE;
|
||||
|
||||
import com.google.gerrit.common.data.GlobalCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresAnyCapability;
|
||||
import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
import com.google.gerrit.server.config.ConfigResource;
|
||||
import com.google.gerrit.server.config.ListCaches;
|
||||
@@ -36,7 +37,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/** Causes the caches to purge all entries and reload. */
|
||||
@RequiresCapability(GlobalCapability.FLUSH_CACHES)
|
||||
@RequiresAnyCapability({FLUSH_CACHES, MAINTAIN_SERVER})
|
||||
@CommandMetaData(name = "flush-caches", description = "Flush some/all server caches from memory",
|
||||
runsAt = MASTER_OR_SLAVE)
|
||||
final class FlushCaches extends SshCommand {
|
||||
|
||||
@@ -14,12 +14,13 @@
|
||||
|
||||
package com.google.gerrit.sshd.commands;
|
||||
|
||||
import static com.google.gerrit.common.data.GlobalCapability.MAINTAIN_SERVER;
|
||||
import static com.google.gerrit.common.data.GlobalCapability.RUN_GC;
|
||||
import static com.google.gerrit.sshd.CommandMetaData.Mode.MASTER_OR_SLAVE;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.gerrit.common.data.GarbageCollectionResult;
|
||||
import com.google.gerrit.common.data.GlobalCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresAnyCapability;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.server.git.GarbageCollection;
|
||||
import com.google.gerrit.server.project.ProjectCache;
|
||||
@@ -35,7 +36,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/** Runs the Git garbage collection. */
|
||||
@RequiresCapability(GlobalCapability.RUN_GC)
|
||||
@RequiresAnyCapability({RUN_GC, MAINTAIN_SERVER})
|
||||
@CommandMetaData(name = "gc", description = "Run Git garbage collection",
|
||||
runsAt = MASTER_OR_SLAVE)
|
||||
public class GarbageCollectionCommand extends SshCommand {
|
||||
|
||||
@@ -14,8 +14,10 @@
|
||||
|
||||
package com.google.gerrit.sshd.commands;
|
||||
|
||||
import com.google.gerrit.common.data.GlobalCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresCapability;
|
||||
import static com.google.gerrit.common.data.GlobalCapability.KILL_TASK;
|
||||
import static com.google.gerrit.common.data.GlobalCapability.MAINTAIN_SERVER;
|
||||
|
||||
import com.google.gerrit.extensions.annotations.RequiresAnyCapability;
|
||||
import com.google.gerrit.extensions.restapi.AuthException;
|
||||
import com.google.gerrit.extensions.restapi.IdString;
|
||||
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
@@ -34,7 +36,7 @@ import java.util.List;
|
||||
|
||||
/** Kill a task in the work queue. */
|
||||
@AdminHighPriorityCommand
|
||||
@RequiresCapability(GlobalCapability.KILL_TASK)
|
||||
@RequiresAnyCapability({KILL_TASK, MAINTAIN_SERVER})
|
||||
final class KillCommand extends SshCommand {
|
||||
@Inject
|
||||
private TasksCollection tasksCollection;
|
||||
|
||||
@@ -14,13 +14,14 @@
|
||||
|
||||
package com.google.gerrit.sshd.commands;
|
||||
|
||||
import static com.google.gerrit.common.data.GlobalCapability.MAINTAIN_SERVER;
|
||||
import static com.google.gerrit.common.data.GlobalCapability.VIEW_CACHES;
|
||||
import static com.google.gerrit.sshd.CommandMetaData.Mode.MASTER_OR_SLAVE;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.common.TimeUtil;
|
||||
import com.google.gerrit.common.Version;
|
||||
import com.google.gerrit.common.data.GlobalCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresCapability;
|
||||
import com.google.gerrit.extensions.annotations.RequiresAnyCapability;
|
||||
import com.google.gerrit.extensions.events.LifecycleListener;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.config.ConfigResource;
|
||||
@@ -53,7 +54,7 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
/** Show the current cache states. */
|
||||
@RequiresCapability(GlobalCapability.VIEW_CACHES)
|
||||
@RequiresAnyCapability({VIEW_CACHES, MAINTAIN_SERVER})
|
||||
@CommandMetaData(name = "show-caches", description = "Display current cache statistics",
|
||||
runsAt = MASTER_OR_SLAVE)
|
||||
final class ShowCaches extends SshCommand {
|
||||
@@ -154,7 +155,7 @@ final class ShowCaches extends SshCommand {
|
||||
printDiskCaches(caches);
|
||||
stdout.print('\n');
|
||||
|
||||
if (self.get().getCapabilities().canAdministrateServer()) {
|
||||
if (self.get().getCapabilities().canMaintainServer()) {
|
||||
sshSummary();
|
||||
|
||||
SummaryInfo summary =
|
||||
|
||||
Reference in New Issue
Block a user