traffic_stats/influxdb/config.go (38 lines of code) (raw):

/* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package influxdb import ( "flag" "fmt" "strings" influx "github.com/influxdata/influxdb/client/v2" "github.com/pkg/errors" ) // Config holds the requisite information to connect to an influx db instance // prefix is an optional variable that is set via the Flags method, so as to // distinguish between flags for different influxdb instances type Config struct { prefix string User string Password string URL string } // Flags configures the cli flags for the config. If more than one config is // present for a program, it should be differentiated by a different prefix, so // that the flag names don't collide func (c *Config) Flags(prefix string) { c.prefix = prefix flag.StringVar(&c.URL, flagName(c.prefix, "url"), "http://localhost:8086", "The influxdb url and port") flag.StringVar(&c.User, flagName(c.prefix, "user"), "", "The influxdb username to connect to the db") flag.StringVar(&c.Password, flagName(c.prefix, "password"), "", "The influxdb password to connect to the db") } // NewHTTPClient tries to use the given configuration to func (c *Config) NewHTTPClient() (influx.Client, error) { client, err := influx.NewHTTPClient(influx.HTTPConfig{ Addr: c.URL, Username: c.User, Password: c.Password, }) if err != nil { return nil, errors.Wrap(err, "Error creating influx client") } _, _, err = client.Ping(10) return client, errors.Wrap(err, "Error creating influx client") } func flagName(prefix, name string) string { if prefix != "" { prefix = fmt.Sprintf("%s-", prefix) } return strings.ToLower(fmt.Sprintf("%s%s", prefix, name)) }