package vkcloud import ( "encoding/json" "fmt" cmmetav1 "github.com/cert-manager/cert-manager/pkg/apis/meta/v1" extapi "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" ) // Config is a structure that is used to decode into when // solving a DNS01 challenge. // // This information is provided by cert-manager, and may be a reference to // additional configuration that's needed to solve the challenge for this // particular certificate or issuer. // // This typically includes references to Secret resources containing DNS // provider credentials, in cases where a 'multi-tenant' DNS solver is being // created. // // If you do *not* require per-issuer or per-certificate configuration to be // provided to your webhook, you can skip decoding altogether in favour of // using CLI flags or similar to provide configuration. // // You should not include sensitive information here. If credentials need to // be used by your provider here, you should reference a Kubernetes Secret // resource and fetch these credentials using a Kubernetes clientset. type Config struct { IdentityEndpoint string `json:"identityEndpoint"` DNSEndpoint string `json:"dnsEndpoint"` ProjectID string `json:"projectID"` UserDomainName string `json:"userDomainName"` UsernameSecretRef cmmetav1.SecretKeySelector `json:"usernameSecretRef"` PasswordSecretRef cmmetav1.SecretKeySelector `json:"passwordSecretRef"` } // loadConfig is a small helper function that decodes JSON configuration into // the typed config struct. func loadConfig(cfgJSON *extapi.JSON) (Config, error) { cfg := Config{} // handle the 'base case' where no configuration has been provided if cfgJSON == nil { return cfg, nil } if err := json.Unmarshal(cfgJSON.Raw, &cfg); err != nil { return cfg, fmt.Errorf("error decoding solver config: %v", err) } return cfg, nil }