Beispiel #1
0
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)
}
Beispiel #2
0
// 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
}
Beispiel #3
0
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
}