diff --git a/main.go b/main.go index 85aeac9..14652c8 100644 --- a/main.go +++ b/main.go @@ -26,15 +26,15 @@ func main() { // webhook, where the Name() method will be used to disambiguate between // the different implementations. cmd.RunWebhookServer(GroupName, - &customDNSProviderSolver{}, + &bluecatDNSProviderSolver{}, ) } -// customDNSProviderSolver implements the provider-specific logic needed to +// bluecatDNSProviderSolver implements the provider-specific logic needed to // 'present' an ACME challenge TXT record for your own DNS provider. // To do so, it must implement the `github.com/jetstack/cert-manager/pkg/acme/webhook.Solver` // interface. -type customDNSProviderSolver struct { +type bluecatDNSProviderSolver struct { // If a Kubernetes 'clientset' is needed, you must: // 1. uncomment the additional `client` field in this structure below // 2. uncomment the "k8s.io/client-go/kubernetes" import at the top of the file @@ -44,7 +44,7 @@ type customDNSProviderSolver struct { //client kubernetes.Clientset } -// customDNSProviderConfig is a structure that is used to decode into when +// bluecatDNSProviderConfig 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 @@ -58,14 +58,12 @@ type customDNSProviderSolver struct { // 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 customDNSProviderConfig struct { - // Change the two fields below according to the format of the configuration - // to be decoded. - // These fields will be set by users in the - // `issuer.spec.acme.dns01.providers.webhook.config` field. - - //Email string `json:"email"` - //APIKeySecretRef v1alpha1.SecretKeySelector `json:"apiKeySecretRef"` +type bluecatDNSProviderConfig struct { + Username string `json:"username"` + Password string `json:"password"` + ServerURL string `json:"server_url"` + ConfigName string `json:"config_name"` + DNSView string `json:"dns_view"` } // Name is used as the name for this DNS solver when referencing it on the ACME @@ -74,8 +72,8 @@ type customDNSProviderConfig struct { // solvers configured with the same Name() **so long as they do not co-exist // within a single webhook deployment**. // For example, `cloudflare` may be used as the name of a solver. -func (c *customDNSProviderSolver) Name() string { - return "my-custom-solver" +func (c *bluecatDNSProviderSolver) Name() string { + return "bluecat" } // Present is responsible for actually presenting the DNS record with the @@ -83,7 +81,7 @@ func (c *customDNSProviderSolver) Name() string { // This method should tolerate being called multiple times with the same value. // cert-manager itself will later perform a self check to ensure that the // solver has correctly configured the DNS provider. -func (c *customDNSProviderSolver) Present(ch *v1alpha1.ChallengeRequest) error { +func (c *bluecatDNSProviderSolver) Present(ch *v1alpha1.ChallengeRequest) error { cfg, err := loadConfig(ch.Config) if err != nil { return err @@ -102,7 +100,7 @@ func (c *customDNSProviderSolver) Present(ch *v1alpha1.ChallengeRequest) error { // value provided on the ChallengeRequest should be cleaned up. // This is in order to facilitate multiple DNS validations for the same domain // concurrently. -func (c *customDNSProviderSolver) CleanUp(ch *v1alpha1.ChallengeRequest) error { +func (c *bluecatDNSProviderSolver) CleanUp(ch *v1alpha1.ChallengeRequest) error { // TODO: add code that deletes a record from the DNS provider's console return nil } @@ -116,7 +114,7 @@ func (c *customDNSProviderSolver) CleanUp(ch *v1alpha1.ChallengeRequest) error { // provider accounts. // The stopCh can be used to handle early termination of the webhook, in cases // where a SIGTERM or similar signal is sent to the webhook process. -func (c *customDNSProviderSolver) Initialize(kubeClientConfig *rest.Config, stopCh <-chan struct{}) error { +func (c *bluecatDNSProviderSolver) Initialize(kubeClientConfig *rest.Config, stopCh <-chan struct{}) error { ///// UNCOMMENT THE BELOW CODE TO MAKE A KUBERNETES CLIENTSET AVAILABLE TO ///// YOUR CUSTOM DNS PROVIDER @@ -133,8 +131,8 @@ func (c *customDNSProviderSolver) Initialize(kubeClientConfig *rest.Config, stop // loadConfig is a small helper function that decodes JSON configuration into // the typed config struct. -func loadConfig(cfgJSON *extapi.JSON) (customDNSProviderConfig, error) { - cfg := customDNSProviderConfig{} +func loadConfig(cfgJSON *extapi.JSON) (bluecatDNSProviderConfig, error) { + cfg := bluecatDNSProviderConfig{} // handle the 'base case' where no configuration has been provided if cfgJSON == nil { return cfg, nil diff --git a/main_test.go b/main_test.go index 0377170..0231a95 100644 --- a/main_test.go +++ b/main_test.go @@ -20,7 +20,7 @@ func TestRunsSuite(t *testing.T) { // // Uncomment the below fixture when implementing your custom DNS provider - //fixture := dns.NewFixture(&customDNSProviderSolver{}, + //fixture := dns.NewFixture(&bluecatDNSProviderSolver{}, // dns.SetResolvedZone(zone), // dns.SetAllowAmbientCredentials(false), // dns.SetManifestPath("testdata/my-custom-solver"),