Removing port override as it is not needed
This commit is contained in:
parent
70dfb02169
commit
0dec820951
3 changed files with 53 additions and 12 deletions
|
@ -99,7 +99,8 @@ func main() {
|
||||||
fmt.Println("zkUrl: ", zkUrl)
|
fmt.Println("zkUrl: ", zkUrl)
|
||||||
clientOptions = append(clientOptions, realis.ZKUrl(zkUrl))
|
clientOptions = append(clientOptions, realis.ZKUrl(zkUrl))
|
||||||
} else {
|
} else {
|
||||||
clientOptions = append(clientOptions, realis.SchedulerUrl(url))
|
clientOptions = append(clientOptions, realis.SchedulerUrl(url),
|
||||||
|
realis.ZookeeperOptions(realis.ZKAuroraPortOverride(2343), realis.ZKAuroraSchemeOverride("https")))
|
||||||
}
|
}
|
||||||
|
|
||||||
r, err = realis.NewRealisClient(clientOptions...)
|
r, err = realis.NewRealisClient(clientOptions...)
|
||||||
|
|
36
realis.go
36
realis.go
|
@ -26,6 +26,7 @@ import (
|
||||||
"net/http/cookiejar"
|
"net/http/cookiejar"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"sync"
|
"sync"
|
||||||
|
@ -102,6 +103,7 @@ type RealisConfig struct {
|
||||||
clientkey, clientcert string
|
clientkey, clientcert string
|
||||||
options []ClientOption
|
options []ClientOption
|
||||||
debug bool
|
debug bool
|
||||||
|
zkOptions []ZKOpt
|
||||||
}
|
}
|
||||||
|
|
||||||
var defaultBackoff = Backoff{
|
var defaultBackoff = Backoff{
|
||||||
|
@ -140,8 +142,15 @@ func ZKCluster(cluster *Cluster) ClientOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ZKUrl(url string) ClientOption {
|
func ZKUrl(url string) ClientOption {
|
||||||
|
|
||||||
|
opts := []ZKOpt{ZKEndpoints(strings.Split(url, ",")...), ZKPath("/aurora/scheduler")}
|
||||||
|
|
||||||
return func(config *RealisConfig) {
|
return func(config *RealisConfig) {
|
||||||
config.cluster = GetDefaultClusterFromZKUrl(url)
|
if config.zkOptions == nil {
|
||||||
|
config.zkOptions = opts
|
||||||
|
} else {
|
||||||
|
config.zkOptions = append(config.zkOptions, opts...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,6 +196,16 @@ func ClientCerts(clientKey, clientCert string) ClientOption {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use this option if you'd like to override default settings for connecting to Zookeeper.
|
||||||
|
// For example, this can be used to override the port on which to communicate with Aurora.
|
||||||
|
// This may be helpful if Aurora is behind another service and running on a port that is different
|
||||||
|
// what is advertised in Zookeeper.
|
||||||
|
func ZookeeperOptions(opts ...ZKOpt) ClientOption {
|
||||||
|
return func(config *RealisConfig) {
|
||||||
|
config.zkOptions = opts
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Using the word set to avoid name collision with Interface.
|
// Using the word set to avoid name collision with Interface.
|
||||||
func SetLogger(l Logger) ClientOption {
|
func SetLogger(l Logger) ClientOption {
|
||||||
return func(config *RealisConfig) {
|
return func(config *RealisConfig) {
|
||||||
|
@ -257,9 +276,16 @@ func NewRealisClient(options ...ClientOption) (Realis, error) {
|
||||||
var url string
|
var url string
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
// Determine how to get information to connect to the scheduler.
|
// Find the leader using custom Zookeeper options if options are provided
|
||||||
// Prioritize getting leader from ZK over using a direct URL.
|
if config.zkOptions != nil {
|
||||||
if config.cluster != nil {
|
url, err = LeaderFromZKOpts(config.zkOptions...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, NewTemporaryError(errors.Wrap(err, "LeaderFromZK error"))
|
||||||
|
}
|
||||||
|
config.logger.Println("Scheduler URL from ZK: ", url)
|
||||||
|
} else if config.cluster != nil {
|
||||||
|
// Determine how to get information to connect to the scheduler.
|
||||||
|
// Prioritize getting leader from ZK over using a direct URL.
|
||||||
url, err = LeaderFromZK(*config.cluster)
|
url, err = LeaderFromZK(*config.cluster)
|
||||||
// If ZK is configured, throw an error if the leader is unable to be determined
|
// If ZK is configured, throw an error if the leader is unable to be determined
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -270,7 +296,7 @@ func NewRealisClient(options ...ClientOption) (Realis, error) {
|
||||||
url = config.url
|
url = config.url
|
||||||
config.logger.Println("Scheduler URL: ", url)
|
config.logger.Println("Scheduler URL: ", url)
|
||||||
} else {
|
} else {
|
||||||
return nil, errors.New("Incomplete Options -- url or cluster required")
|
return nil, errors.New("Incomplete Options -- url, cluster.json, or Zookeeper address required")
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.jsonTransport {
|
if config.jsonTransport {
|
||||||
|
|
26
zk.go
26
zk.go
|
@ -36,11 +36,12 @@ type ServiceInstance struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type zkConfig struct {
|
type zkConfig struct {
|
||||||
endpoints []string
|
endpoints []string
|
||||||
path string
|
path string
|
||||||
backoff Backoff
|
backoff Backoff
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
logger Logger
|
logger Logger
|
||||||
|
auroraSchemeOverride *string
|
||||||
}
|
}
|
||||||
|
|
||||||
type ZKOpt func(z *zkConfig)
|
type ZKOpt func(z *zkConfig)
|
||||||
|
@ -75,6 +76,12 @@ func ZKLogger(l Logger) ZKOpt {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ZKAuroraSchemeOverride(scheme string) ZKOpt {
|
||||||
|
return func(z *zkConfig) {
|
||||||
|
z.auroraSchemeOverride = &scheme
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Retrieves current Aurora leader from ZK.
|
// Retrieves current Aurora leader from ZK.
|
||||||
func LeaderFromZK(cluster Cluster) (string, error) {
|
func LeaderFromZK(cluster Cluster) (string, error) {
|
||||||
return LeaderFromZKOpts(ZKEndpoints(strings.Split(cluster.ZK, ",")...), ZKPath(cluster.SchedZKPath))
|
return LeaderFromZKOpts(ZKEndpoints(strings.Split(cluster.ZK, ",")...), ZKPath(cluster.SchedZKPath))
|
||||||
|
@ -151,8 +158,15 @@ func LeaderFromZKOpts(options ...ZKOpt) (string, error) {
|
||||||
|
|
||||||
var scheme, host, port string
|
var scheme, host, port string
|
||||||
for k, v := range serviceInst.AdditionalEndpoints {
|
for k, v := range serviceInst.AdditionalEndpoints {
|
||||||
scheme = k
|
|
||||||
|
if config.auroraSchemeOverride == nil {
|
||||||
|
scheme = k
|
||||||
|
} else {
|
||||||
|
scheme = *config.auroraSchemeOverride
|
||||||
|
}
|
||||||
|
|
||||||
host = v.Host
|
host = v.Host
|
||||||
|
|
||||||
port = strconv.Itoa(v.Port)
|
port = strconv.Itoa(v.Port)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue