/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.addthis.hydra.job.spawn; import com.google.common.base.Preconditions; /** Simple immutable wrapper of various system settings/states (mostly for generating ui json). */ public class Settings { public final String debug; public final boolean quiesce; public final String queryHost; public final String spawnHost; public final String meshHttpHost; public final String disabled; public final int defaultReplicaCount; public final boolean sslDefault; public final int authTimeout; public final int sudoTimeout; public static class Builder { private String debug; private Boolean quiesce; private String queryHost; private String spawnHost; private String meshHttpHost; private String disabled; private Integer defaultReplicaCount; private Boolean sslDefault; private Integer authTimeout; private Integer sudoTimeout; public Builder setDebug(String debug) { this.debug = debug; return this; } public Builder setQuiesce(Boolean quiesce) { this.quiesce = quiesce; return this; } public Builder setQueryHost(String queryHost) { this.queryHost = queryHost; return this; } public Builder setSpawnHost(String spawnHost) { this.spawnHost = spawnHost; return this; } public Builder setMeshHttpHost(String meshHttpHost) { this.meshHttpHost = meshHttpHost; return this; } public Builder setDisabled(String disabled) { this.disabled = disabled; return this; } public Builder setDefaultReplicaCount(Integer defaultReplicaCount) { this.defaultReplicaCount = defaultReplicaCount; return this; } public Builder setSslDefault(Boolean sslDefault) { this.sslDefault = sslDefault; return this; } public Builder setAuthTimeout(Integer authTimeout) { this.authTimeout = authTimeout; return this; } public Builder setSudoTimeout(Integer sudoTimeout) { this.sudoTimeout = sudoTimeout; return this; } public Settings build() { Preconditions.checkArgument(quiesce != null, "parameter quiesce must be specified"); Preconditions.checkArgument(queryHost != null, "parameter queryHost must be specified"); Preconditions.checkArgument(spawnHost != null, "parameter spawnHost must be specified"); Preconditions.checkArgument(disabled != null, "parameter disabled must be specified"); Preconditions.checkArgument(defaultReplicaCount != null, "parameter defaultReplicaCount must be specified"); Preconditions.checkArgument(sslDefault != null, "parameter sslDefault must be specified"); Preconditions.checkArgument(authTimeout != null, "parameter authTimeout must be specified"); Preconditions.checkArgument(sudoTimeout != null, "parameter sudoTimeout must be specified"); return new Settings(debug, quiesce, queryHost, spawnHost, meshHttpHost, disabled, defaultReplicaCount, sslDefault, authTimeout, sudoTimeout); } } private Settings( String debug, boolean quiesce, String queryHost, String spawnHost, String meshHttpHost, String disabled, int defaultReplicaCount, boolean sslDefault, int authTimeout, int sudoTimeout) { this.debug = debug; this.queryHost = queryHost; this.spawnHost = spawnHost; this.meshHttpHost = meshHttpHost; this.quiesce = quiesce; this.disabled = disabled; this.defaultReplicaCount = defaultReplicaCount; this.sslDefault = sslDefault; this.authTimeout = authTimeout; this.sudoTimeout = sudoTimeout; } }