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.util.Map;
import javax.inject.Inject;
import com.netflix.config.DynamicBooleanProperty;
import com.netflix.config.DynamicStringProperty;
public class MachineLauncher extends GenericServiceLauncher implements InitializationTask {
private static final DynamicStringProperty MACHINE_BINARY = ArchaiusUtil.getString("machine.service.executable");
private static final DynamicBooleanProperty LAUNCH_MACHINE = ArchaiusUtil.getBoolean("machine.execute");
@Inject
ClusterService clusterService;
@Override
protected boolean shouldRun() {
return LAUNCH_MACHINE.get() && clusterService.isMaster();
}
@Override
protected String binaryPath() {
return MACHINE_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;
}
}