package com.sequenceiq.cloudbreak.conf;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.sequenceiq.cloudbreak.service.registry.DNSServiceAddressResolver;
import com.sequenceiq.cloudbreak.service.registry.RetryingServiceAddressResolver;
import com.sequenceiq.cloudbreak.service.registry.ServiceAddressResolver;
import com.sequenceiq.cloudbreak.service.registry.ServiceAddressResolvingException;
@Configuration
public class ServiceEndpointConfig {
@Value("${cb.address.resolving.timeout:}")
private int resolvingTimeout;
@Value("${cb.db.port.5432.tcp.addr:}")
private String dbHost;
@Value("${cb.db.port.5432.tcp.port:}")
private String dbPort;
@Value("${cb.db.serviceid:}")
private String databaseId;
@Value("${cb.identity.server.url:}")
private String identityServiceUrl;
@Value("${cb.identity.serviceid:}")
private String identityServiceId;
@Bean
public ServiceAddressResolver serviceAddressResolver() {
return new RetryingServiceAddressResolver(new DNSServiceAddressResolver(), resolvingTimeout);
}
@Bean
public String databaseAddress() throws ServiceAddressResolvingException {
return serviceAddressResolver().resolveHostPort(dbHost, dbPort, databaseId);
}
@Bean
public String identityServerUrl() throws ServiceAddressResolvingException {
return serviceAddressResolver().resolveUrl(identityServiceUrl, "http", identityServiceId);
}
}