Esempio n. 1
0
File: config.go Progetto: logan/heim
func getConfig(ctx scope.Context) (*backend.ServerConfig, error) {
	if initializedConfig != nil {
		return initializedConfig, nil
	}

	if *config == "" {
		if initializedCluster == nil {
			var err error
			initializedCluster, err = backend.Config.Cluster.EtcdCluster(ctx)
			if err != nil {
				return nil, err
			}
		}
		if err := backend.Config.LoadFromEtcd(initializedCluster); err != nil {
			return nil, fmt.Errorf("config: %s", err)
		}
	} else {
		if err := backend.Config.LoadFromFile(*config); err != nil {
			return nil, fmt.Errorf("config: %s", err)
		}
	}

	backend.RegisterBackend("mock", func(*proto.Heim) (proto.Backend, error) {
		return &mock.TestBackend{}, nil
	})
	backend.RegisterBackend("psql", func(heim *proto.Heim) (proto.Backend, error) {
		return psql.NewBackend(heim, backend.Config.DB.DSN)
	})

	return &backend.Config, nil
}
Esempio n. 2
0
func getBackend(ctx scope.Context, cs cluster.Cluster) (*psql.Backend, error) {
	return psql.NewBackend(ctx, backend.Config.DB.DSN, cs, backend.Config.Cluster.DescribeSelf())
}