func createInnkeeperClient(m *medium) (*innkeeperclient.Client, error) { auth := innkeeperclient.CreateInnkeeperAuthentication(innkeeperclient.AuthOptions{InnkeeperAuthToken: m.oauthToken}) ic, err := innkeeperclient.New(innkeeperclient.Options{ Address: m.urls[0].String(), Insecure: insecure, Authentication: auth}) if err != nil { return nil, err } return ic, nil }
// Run skipper. func Run(o Options) error { // init log err := initLog(o) if err != nil { return err } // init metrics metrics.Init(metrics.Options{ Listener: o.MetricsListener, Prefix: o.MetricsPrefix, EnableDebugGcMetrics: o.EnableDebugGcMetrics, EnableRuntimeMetrics: o.EnableRuntimeMetrics, }) // create authentication for Innkeeper auth := innkeeper.CreateInnkeeperAuthentication(innkeeper.AuthOptions{ InnkeeperAuthToken: o.InnkeeperAuthToken, OAuthCredentialsDir: o.OAuthCredentialsDir, OAuthUrl: o.OAuthUrl, OAuthScope: o.OAuthScope}) // create data client dataClients, err := createDataClients(o, auth) if err != nil { return err } if len(dataClients) == 0 { log.Warning("no route source specified") } // create a filter registry with the available filter specs registered, // and register the custom filters registry := builtin.MakeRegistry() for _, f := range o.CustomFilters { registry.Register(f) } // create routing // create the proxy instance var mo routing.MatchingOptions if o.IgnoreTrailingSlash { mo = routing.IgnoreTrailingSlash } // ensure a non-zero poll timeout if o.SourcePollTimeout <= 0 { o.SourcePollTimeout = defaultSourcePollTimeout } // check for dev mode, and set update buffer of the routes updateBuffer := defaultRoutingUpdateBuffer if o.DevMode { updateBuffer = 0 } // create a routing engine routing := routing.New(routing.Options{ registry, mo, o.SourcePollTimeout, dataClients, o.CustomPredicates, updateBuffer}) // create the proxy proxy := proxy.New(routing, o.ProxyOptions, o.PriorityRoutes...) // create the access log handler loggingHandler := logging.NewHandler(proxy) // start the http server log.Infof("proxy listener on %v", o.Address) return http.ListenAndServe(o.Address, loggingHandler) }
// Run skipper. func Run(o Options) error { // init log err := initLog(o) if err != nil { return err } // init metrics metrics.Init(metrics.Options{ Listener: o.MetricsListener, Prefix: o.MetricsPrefix, EnableDebugGcMetrics: o.EnableDebugGcMetrics, EnableRuntimeMetrics: o.EnableRuntimeMetrics, EnableServeRouteMetrics: o.EnableServeRouteMetrics, EnableServeHostMetrics: o.EnableServeHostMetrics, }) // create authentication for Innkeeper auth := innkeeper.CreateInnkeeperAuthentication(innkeeper.AuthOptions{ InnkeeperAuthToken: o.InnkeeperAuthToken, OAuthCredentialsDir: o.OAuthCredentialsDir, OAuthUrl: o.OAuthUrl, OAuthScope: o.OAuthScope}) // create data clients dataClients, err := createDataClients(o, auth) if err != nil { return err } // append custom data clients dataClients = append(dataClients, o.CustomDataClients...) if len(dataClients) == 0 { log.Warning("no route source specified") } // create a filter registry with the available filter specs registered, // and register the custom filters registry := builtin.MakeRegistry() for _, f := range o.CustomFilters { registry.Register(f) } // create routing // create the proxy instance var mo routing.MatchingOptions if o.IgnoreTrailingSlash { mo = routing.IgnoreTrailingSlash } // ensure a non-zero poll timeout if o.SourcePollTimeout <= 0 { o.SourcePollTimeout = defaultSourcePollTimeout } // check for dev mode, and set update buffer of the routes updateBuffer := defaultRoutingUpdateBuffer if o.DevMode { updateBuffer = 0 } // include bundeled custom predicates o.CustomPredicates = append(o.CustomPredicates, source.New(), interval.NewBetween(), interval.NewBefore(), interval.NewAfter(), cookie.New(), query.New()) // create a routing engine routing := routing.New(routing.Options{ FilterRegistry: registry, MatchingOptions: mo, PollTimeout: o.SourcePollTimeout, DataClients: dataClients, Predicates: o.CustomPredicates, UpdateBuffer: updateBuffer}) defer routing.Close() proxyFlags := proxy.Flags(o.ProxyOptions) | o.ProxyFlags proxyParams := proxy.Params{ Routing: routing, Flags: proxyFlags, PriorityRoutes: o.PriorityRoutes, IdleConnectionsPerHost: o.IdleConnectionsPerHost, CloseIdleConnsPeriod: o.CloseIdleConnsPeriod, FlushInterval: o.BackendFlushInterval, ExperimentalUpgrade: o.ExperimentalUpgrade} if o.DebugListener != "" { do := proxyParams do.Flags |= proxy.Debug dbg := proxy.WithParams(do) log.Infof("debug listener on %v", o.DebugListener) go func() { http.ListenAndServe(o.DebugListener, dbg) }() } // create the proxy proxy := proxy.WithParams(proxyParams) defer proxy.Close() return listenAndServe(proxy, &o) }