spf13 / viper

Go configuration with fangs
MIT License
26.32k stars 2.01k forks source link

Export interface to add custom remote config provider #1730

Open wanliqun opened 6 months ago

wanliqun commented 6 months ago

Preflight Checklist

Problem Description

Can we export some method to register our custom remote config provider?

func getConfigManager(rp viper.RemoteProvider) (crypt.ConfigManager, error) {
    var cm crypt.ConfigManager
    var err error

    endpoints := strings.Split(rp.Endpoint(), ";")
    if rp.SecretKeyring() != "" {
        var kr *os.File
        kr, err = os.Open(rp.SecretKeyring())
        if err != nil {
            return nil, err
        }
        defer kr.Close()
        switch rp.Provider() {
        case "etcd":
            cm, err = crypt.NewEtcdConfigManager(endpoints, kr)
        case "etcd3":
            cm, err = crypt.NewEtcdV3ConfigManager(endpoints, kr)
        case "firestore":
            cm, err = crypt.NewFirestoreConfigManager(endpoints, kr)
        case "nats":
            cm, err = crypt.NewNatsConfigManager(endpoints, kr)
        default:
            cm, err = crypt.NewConsulConfigManager(endpoints, kr)
        }
    } else {
        switch rp.Provider() {
        case "etcd":
            cm, err = crypt.NewStandardEtcdConfigManager(endpoints)
        case "etcd3":
            cm, err = crypt.NewStandardEtcdV3ConfigManager(endpoints)
        case "firestore":
            cm, err = crypt.NewStandardFirestoreConfigManager(endpoints)
        case "nats":
            cm, err = crypt.NewStandardNatsConfigManager(endpoints)
        default:
            cm, err = crypt.NewStandardConsulConfigManager(endpoints)
        }
    }
    if err != nil {
        return nil, err
    }
    return cm, nil
}

func init() {
    viper.RemoteConfig = &remoteConfigProvider{}
}

Proposed Solution

Maybe we should export some method like RegisterRemoteProvider so that we can add our custom remote provider?

Alternatives Considered

No response

Additional Information

No response

github-actions[bot] commented 6 months ago

👋 Thanks for reporting!

A maintainer will take a look at your issue shortly. 👀

In the meantime: We are working on Viper v2 and we would love to hear your thoughts about what you like or don't like about Viper, so we can improve or fix those issues.

⏰ If you have a couple minutes, please take some time and share your thoughts: https://forms.gle/R6faU74qPRPAzchZ9

📣 If you've already given us your feedback, you can still help by spreading the news, either by sharing the above link or telling people about this on Twitter:

https://twitter.com/sagikazarmark/status/1306904078967074816

Thank you! ❤️