func (logger *Logger) Debug(message interface{}, fields ...Fields) { var log logrus.FieldLogger = logger.Logger if len(fields) > 0 { log = log.WithFields(logrus.Fields(fields[0])) } log.Debug(message) }
// open returns a client with no garbage collection. func (c *Config) open(logger logrus.FieldLogger) (*client, error) { if c.InCluster && (c.KubeConfigFile != "") { return nil, errors.New("cannot specify both 'inCluster' and 'kubeConfigFile'") } if !c.InCluster && (c.KubeConfigFile == "") { return nil, errors.New("must specify either 'inCluster' or 'kubeConfigFile'") } var ( cluster k8sapi.Cluster user k8sapi.AuthInfo namespace string err error ) if c.InCluster { cluster, user, namespace, err = inClusterConfig() } else { cluster, user, namespace, err = loadKubeConfig(c.KubeConfigFile) } if err != nil { return nil, err } cli, err := newClient(cluster, user, namespace, logger) if err != nil { return nil, fmt.Errorf("create client: %v", err) } ctx, cancel := context.WithCancel(context.Background()) // Try to synchronously create the third party resources once. This doesn't mean // they'll immediately be available, but ensures that the client will actually try // once. if err := cli.createThirdPartyResources(); err != nil { logger.Errorf("failed creating third party resources: %v", err) go func() { for { if err := cli.createThirdPartyResources(); err != nil { logger.Errorf("failed creating third party resources: %v", err) } else { return } select { case <-ctx.Done(): return case <-time.After(30 * time.Second): } } }() } // If the client is closed, stop trying to create third party resources. cli.cancel = cancel return cli, nil }
func openDB(dbType string, dbArgs string, logger logrus.FieldLogger) *sqlx.DB { logger.Infof("db: opening database %s:%s", dbType, dbArgs) // Error only returns from this if it is an unknown driver. d, err := sqlx.Connect(dbType, dbArgs) if err != nil { panic(fmt.Sprintf("Error connecting to %s database %s: %v", dbType, dbArgs, err)) } // Actually test that we have a working connection err = d.Ping() if err != nil { panic(fmt.Sprintf("db: error connecting to database: %v", err)) } return d }