package io.cattle.platform.docker.machine.launch;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.core.model.Credential;
import io.cattle.platform.hazelcast.membership.ClusterService;
import io.cattle.platform.lock.definition.LockDefinition;
import io.cattle.platform.server.context.ServerContext;
import io.cattle.platform.server.context.ServerContext.BaseProtocol;
import io.cattle.platform.service.launcher.GenericServiceLauncher;
import io.cattle.platform.util.type.InitializationTask;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import com.netflix.config.DynamicStringProperty;
public class TelemetryLauncher extends GenericServiceLauncher implements InitializationTask {
private static final DynamicStringProperty TELEMETRY_BINARY = ArchaiusUtil.getString("telemetry.service.executable");
private static final DynamicStringProperty LAUNCH_TELEMETRY = ArchaiusUtil.getString("telemetry.opt");
@Inject
ClusterService clusterService;
@Override
protected boolean shouldRun() {
return "in".equals(LAUNCH_TELEMETRY.get()) && clusterService.isMaster();
}
@Override
protected String binaryPath() {
return TELEMETRY_BINARY.get();
}
@Override
protected void setEnvironment(Map<String, String> env) {
Credential cred = getCredential();
env.put("CATTLE_ACCESS_KEY", cred.getPublicValue());
env.put("CATTLE_SECRET_KEY", cred.getSecretValue());
env.put("CATTLE_URL", ServerContext.getLocalhostUrl(BaseProtocol.HTTP));
}
@Override
protected LockDefinition getLock() {
return null;
}
@Override
protected boolean isReady() {
return true;
}
@Override
protected void prepareProcess(ProcessBuilder pb) throws IOException {
pb.command().add("client");
}
@Override
protected List<DynamicStringProperty> getReloadSettings() {
return Arrays.asList(LAUNCH_TELEMETRY);
}
}