Skip to content

Commit

Permalink
Pass ReadHeaderTimeout to lagerlevel Server
Browse files Browse the repository at this point in the history
  • Loading branch information
mariash authored and ebroberson committed Sep 12, 2024
1 parent 4d0052d commit b1fc8c3
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 56 deletions.
28 changes: 15 additions & 13 deletions src/code.cloudfoundry.org/bosh-dns-adapter/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,25 @@ import (
"fmt"
"net"

"code.cloudfoundry.org/cf-networking-helpers/flags"
"gopkg.in/validator.v2"
)

type Config struct {
Address string `json:"address" validate:"nonzero"`
Port string `json:"port" validate:"nonzero"`
ServiceDiscoveryControllerAddress string `json:"service_discovery_controller_address" validate:"nonzero"`
ServiceDiscoveryControllerPort string `json:"service_discovery_controller_port" validate:"nonzero"`
ClientCert string `json:"client_cert" validate:"nonzero"`
ClientKey string `json:"client_key" validate:"nonzero"`
CACert string `json:"ca_cert" validate:"nonzero"`
MetronPort int `json:"metron_port" validate:"min=1"`
MetricsEmitSeconds int `json:"metrics_emit_seconds" validate:"min=1"`
LogLevelAddress string `json:"log_level_address" validate:"nonzero"`
LogLevelPort int `json:"log_level_port" validate:"min=1"`
InternalServiceMeshDomains []string `json:"internal_service_mesh_domains"`
InternalRouteVIPRange string `json:"internal_route_vip_range" validate:"cidr"`
Address string `json:"address" validate:"nonzero"`
Port string `json:"port" validate:"nonzero"`
ReadHeaderTimeout flags.DurationFlag `json:"read_header_timeout"`
ServiceDiscoveryControllerAddress string `json:"service_discovery_controller_address" validate:"nonzero"`
ServiceDiscoveryControllerPort string `json:"service_discovery_controller_port" validate:"nonzero"`
ClientCert string `json:"client_cert" validate:"nonzero"`
ClientKey string `json:"client_key" validate:"nonzero"`
CACert string `json:"ca_cert" validate:"nonzero"`
MetronPort int `json:"metron_port" validate:"min=1"`
MetricsEmitSeconds int `json:"metrics_emit_seconds" validate:"min=1"`
LogLevelAddress string `json:"log_level_address" validate:"nonzero"`
LogLevelPort int `json:"log_level_port" validate:"min=1"`
InternalServiceMeshDomains []string `json:"internal_service_mesh_domains"`
InternalRouteVIPRange string `json:"internal_route_vip_range" validate:"cidr"`
}

func init() {
Expand Down
2 changes: 1 addition & 1 deletion src/code.cloudfoundry.org/bosh-dns-adapter/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func main() {

members := grouper.Members{
{Name: "metrics-emitter", Runner: metricsEmitter},
{Name: "log-level-server", Runner: lagerlevel.NewServer(config.LogLevelAddress, config.LogLevelPort, reconfigurableSink, logger.Session("log-level-server"))},
{Name: "log-level-server", Runner: lagerlevel.NewServer(config.LogLevelAddress, config.LogLevelPort, time.Duration(config.ReadHeaderTimeout), reconfigurableSink, logger.Session("log-level-server"))},
}
group := grouper.NewOrdered(os.Interrupt, members)
monitor := ifrit.Invoke(sigmon.New(group))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,50 +7,28 @@ import (
"fmt"
"net/url"
"os"
"strconv"
"time"

"code.cloudfoundry.org/cf-networking-helpers/flags"
"gopkg.in/validator.v2"
)

type DurationFlag time.Duration

func (f DurationFlag) MarshalJSON() ([]byte, error) {
return json.Marshal(time.Duration(f).String())
}

func (f *DurationFlag) UnmarshalJSON(b []byte) error {
s, err := strconv.Unquote(string(b))
if err != nil {
return err
}
parsedDuration, err := time.ParseDuration(s)
if err != nil {
return err
}

*f = DurationFlag(parsedDuration)

return nil
}

type Config struct {
Address string `json:"address" validate:"nonzero"`
Port string `json:"port" validate:"nonzero"`
Nats NatsConfig `json:"nats"`
Index string `json:"index"`
ServerCert string `json:"server_cert" validate:"nonzero"`
ServerKey string `json:"server_key" validate:"nonzero"`
CACert string `json:"ca_cert" validate:"nonzero"`
MetronPort int `json:"metron_port" validate:"min=1"`
LogLevelAddress string `json:"log_level_address"`
LogLevelPort int `json:"log_level_port"`
StalenessThresholdSeconds int `json:"staleness_threshold_seconds" validate:"min=1"`
PruningIntervalSeconds int `json:"pruning_interval_seconds" validate:"min=1"`
MetricsEmitSeconds int `json:"metrics_emit_seconds" validate:"min=1"`
ResumePruningDelaySeconds int `json:"resume_pruning_delay_seconds" validate:"min=0"`
WarmDurationSeconds int `json:"warm_duration_seconds" validate:"min=0"`
ReadHeaderTimeout DurationFlag `json:"read_header_timeout"`
Address string `json:"address" validate:"nonzero"`
Port string `json:"port" validate:"nonzero"`
Nats NatsConfig `json:"nats"`
Index string `json:"index"`
ServerCert string `json:"server_cert" validate:"nonzero"`
ServerKey string `json:"server_key" validate:"nonzero"`
CACert string `json:"ca_cert" validate:"nonzero"`
MetronPort int `json:"metron_port" validate:"min=1"`
LogLevelAddress string `json:"log_level_address"`
LogLevelPort int `json:"log_level_port"`
StalenessThresholdSeconds int `json:"staleness_threshold_seconds" validate:"min=1"`
PruningIntervalSeconds int `json:"pruning_interval_seconds" validate:"min=1"`
MetricsEmitSeconds int `json:"metrics_emit_seconds" validate:"min=1"`
ResumePruningDelaySeconds int `json:"resume_pruning_delay_seconds" validate:"min=0"`
WarmDurationSeconds int `json:"warm_duration_seconds" validate:"min=0"`
ReadHeaderTimeout flags.DurationFlag `json:"read_header_timeout"`
}

type NatsConfig struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"fmt"
"time"

"code.cloudfoundry.org/cf-networking-helpers/flags"
. "code.cloudfoundry.org/service-discovery-controller/config"
testhelpers "code.cloudfoundry.org/test-helpers"
. "github.com/onsi/ginkgo/v2"
Expand Down Expand Up @@ -68,7 +69,7 @@ var _ = Describe("Config", func() {
Expect(parsedConfig.MetricsEmitSeconds).To(Equal(6))
Expect(parsedConfig.ResumePruningDelaySeconds).To(Equal(2))
Expect(parsedConfig.WarmDurationSeconds).To(Equal(5))
Expect(parsedConfig.ReadHeaderTimeout).To(Equal(DurationFlag(10 * time.Second)))
Expect(parsedConfig.ReadHeaderTimeout).To(Equal(flags.DurationFlag(10 * time.Second)))
})
})

Expand Down Expand Up @@ -192,7 +193,7 @@ var _ = Describe("Config", func() {
config, err := NewConfig(cfgBytes)

Expect(err).NotTo(HaveOccurred())
Expect(config.ReadHeaderTimeout).To(Equal(DurationFlag(0)))
Expect(config.ReadHeaderTimeout).To(Equal(flags.DurationFlag(0)))
})
})
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ func mainWithError() error {
logLevelServer := lagerlevel.NewServer(
conf.LogLevelAddress,
conf.LogLevelPort,
time.Duration(conf.ReadHeaderTimeout),
sink,
logger.Session("log-level-server"),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"strconv"
"time"

"code.cloudfoundry.org/cf-networking-helpers/flags"
"code.cloudfoundry.org/cf-networking-helpers/testsupport/ports"
"code.cloudfoundry.org/lager/v3"
"code.cloudfoundry.org/lager/v3/lagertest"
Expand Down Expand Up @@ -52,7 +53,7 @@ var _ = Describe("Server", func() {
CACert: caFile,
ServerCert: serverCert,
ServerKey: serverKey,
ReadHeaderTimeout: config.DurationFlag(200 * time.Millisecond),
ReadHeaderTimeout: flags.DurationFlag(200 * time.Millisecond),
}
addressTable = &fakes.AddressTable{}
dnsRequestRecorder = &fakes.DNSRequestRecorder{}
Expand Down

0 comments on commit b1fc8c3

Please sign in to comment.