Merge changes I70eebbb7,I1e0ce43d,Id481240f

* changes:
  Support reloading of allowProjectOwnersToChangeParent
  Change sshd.requestLog to use event.reject(ConfigKey)
  Add reject method overload to accept a Configkey
This commit is contained in:
David Pursehouse
2018-09-25 23:14:08 +00:00
committed by Gerrit Code Review
5 changed files with 48 additions and 11 deletions

View File

@@ -3684,6 +3684,9 @@ allow the owner to circumvent certain enforced rules (like important
BLOCK rules).
+
Default is false.
+
This value supports configuration reloads:
link:cmd-reload-config.html[reload-config]
[[receive.checkReferencedObjectsAreReachable]]receive.checkReferencedObjectsAreReachable::
+

View File

@@ -66,6 +66,10 @@ public class ConfigUpdatedEvent {
return createUpdate(entries, UpdateResult.APPLIED);
}
public Update reject(ConfigKey entry) {
return reject(Collections.singleton(entry));
}
public Update reject(Set<ConfigKey> entries) {
return createUpdate(entries, UpdateResult.REJECTED);
}

View File

@@ -23,7 +23,9 @@ import static com.google.gerrit.server.project.ProjectResource.PROJECT_KIND;
import static com.google.gerrit.server.project.TagResource.TAG_KIND;
import com.google.gerrit.extensions.registration.DynamicMap;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.gerrit.extensions.restapi.RestApiModule;
import com.google.gerrit.server.config.GerritConfigListener;
import com.google.gerrit.server.project.RefValidationHelper;
import com.google.gerrit.server.restapi.change.CherryPickCommit;
@@ -41,6 +43,8 @@ public class Module extends RestApiModule {
DynamicMap.mapOf(binder(), COMMIT_KIND);
DynamicMap.mapOf(binder(), TAG_KIND);
DynamicSet.bind(binder(), GerritConfigListener.class).to(SetParent.class);
create(PROJECT_KIND).to(CreateProject.class);
put(PROJECT_KIND).to(PutProject.class);
get(PROJECT_KIND).to(GetProject.class);

View File

@@ -30,6 +30,9 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.config.AllUsersName;
import com.google.gerrit.server.config.ConfigKey;
import com.google.gerrit.server.config.ConfigUpdatedEvent;
import com.google.gerrit.server.config.GerritConfigListener;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.meta.MetaDataUpdate;
import com.google.gerrit.server.permissions.GlobalPermission;
@@ -43,18 +46,21 @@ import com.google.gerrit.server.project.ProjectState;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.lib.Config;
@Singleton
public class SetParent implements RestModifyView<ProjectResource, ParentInput> {
public class SetParent
implements RestModifyView<ProjectResource, ParentInput>, GerritConfigListener {
private final ProjectCache cache;
private final PermissionBackend permissionBackend;
private final MetaDataUpdate.Server updateFactory;
private final AllProjectsName allProjects;
private final AllUsersName allUsers;
private final boolean allowProjectOwnersToChangeParent;
private volatile boolean allowProjectOwnersToChangeParent;
@Inject
SetParent(
@@ -164,4 +170,20 @@ public class SetParent implements RestModifyView<ProjectResource, ParentInput> {
}
}
}
@Override
public List<ConfigUpdatedEvent.Update> configUpdated(ConfigUpdatedEvent event) {
ConfigKey receiveSetParent = ConfigKey.create("receive", "allowProjectOwnersToChangeParent");
if (!event.isValueUpdated(receiveSetParent)) {
return Collections.emptyList();
}
try {
boolean enabled =
event.getNewConfig().getBoolean("receive", "allowProjectOwnersToChangeParent", false);
this.allowProjectOwnersToChangeParent = enabled;
return Collections.singletonList(event.accept(receiveSetParent));
} catch (IllegalArgumentException iae) {
return Collections.singletonList(event.reject(receiveSetParent));
}
}
}

View File

@@ -323,16 +323,20 @@ class SshLog implements LifecycleListener, GerritConfigListener {
if (!event.isValueUpdated(sshdRequestLog)) {
return Collections.emptyList();
}
boolean enabled = event.getNewConfig().getBoolean("sshd", "requestLog", true);
boolean stateUpdated;
if (enabled) {
stateUpdated = enableLogging();
} else {
stateUpdated = disableLogging();
try {
boolean enabled = event.getNewConfig().getBoolean("sshd", "requestLog", true);
if (enabled) {
stateUpdated = enableLogging();
} else {
stateUpdated = disableLogging();
}
return stateUpdated
? Collections.singletonList(event.accept(sshdRequestLog))
: Collections.emptyList();
} catch (IllegalArgumentException iae) {
return Collections.singletonList(event.reject(sshdRequestLog));
}
return stateUpdated
? Collections.singletonList(event.accept(sshdRequestLog))
: Collections.emptyList();
}
}