From 2371ed37cd92ef5a55c69e968db02ddbaa2af731 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Mon, 19 Jan 2026 14:37:27 +0100 Subject: [PATCH] wip: remove previous implementation --- providers/dns/bluecatv2/bluecatv2.go | 92 +---------------------- providers/dns/bluecatv2/bluecatv2_test.go | 74 +----------------- providers/dns/bluecatv2/internal/types.go | 2 +- 3 files changed, 5 insertions(+), 163 deletions(-) diff --git a/providers/dns/bluecatv2/bluecatv2.go b/providers/dns/bluecatv2/bluecatv2.go index 225d033ec..0efe99661 100644 --- a/providers/dns/bluecatv2/bluecatv2.go +++ b/providers/dns/bluecatv2/bluecatv2.go @@ -134,7 +134,7 @@ func (d *DNSProvider) Present(domain, token, keyAuth string) error { return fmt.Errorf("bluecatv2: %w", err) } - zone, err := d.findZoneAlt(ctx, info.EffectiveFQDN) + zone, err := d.findZone(ctx, info.EffectiveFQDN) if err != nil { return fmt.Errorf("bluecatv2: %w", err) } @@ -221,9 +221,10 @@ func (d *DNSProvider) Timeout() (timeout, interval time.Duration) { return d.config.PropagationTimeout, d.config.PollingInterval } -func (d *DNSProvider) findZoneAlt(ctx context.Context, fqdn string) (*internal.ZoneResource, error) { +func (d *DNSProvider) findZone(ctx context.Context, fqdn string) (*internal.ZoneResource, error) { for name := range dns01.UnFqdnDomainsSeq(fqdn) { opts := &internal.CollectionOptions{ + Fields: "id,absoluteName,configuration.id,configuration.name,view.id,view.name", Filter: internal.And( internal.Eq("absoluteName", name), internal.Eq("configuration.name", d.config.ConfigName), @@ -246,90 +247,3 @@ func (d *DNSProvider) findZoneAlt(ctx context.Context, fqdn string) (*internal.Z return nil, fmt.Errorf("no zone found for fqdn: %s", fqdn) } - -func (d *DNSProvider) findZone(ctx context.Context, fqdn string) (*internal.ZoneResource, error) { - configuration, err := d.findConfiguration(ctx) - if err != nil { - return nil, err - } - - view, err := d.findConfigurationView(ctx, configuration.ID) - if err != nil { - return nil, err - } - - zone, err := d.findViewZone(ctx, view.ID, fqdn) - if err != nil { - return nil, err - } - - return zone, nil -} - -func (d *DNSProvider) findConfiguration(ctx context.Context) (*internal.CommonResource, error) { - options := internal.CollectionOptions{ - Filter: internal.Eq("name", d.config.ConfigName).String(), - } - - configurations, err := d.client.RetrieveConfigurations(ctx, &options) - if err != nil { - return nil, fmt.Errorf("retrieve configurations: %w", err) - } - - if len(configurations) == 0 { - return nil, fmt.Errorf("zero configuration found with name: %s", d.config.ConfigName) - } - - for _, configuration := range configurations { - if configuration.Name == d.config.ConfigName { - return &configuration, nil - } - } - - return nil, fmt.Errorf("no configuration found with name: %s", d.config.ConfigName) -} - -func (d *DNSProvider) findConfigurationView(ctx context.Context, configurationID int64) (*internal.CommonResource, error) { - options := internal.CollectionOptions{ - Filter: internal.Eq("name", d.config.ViewName).String(), - } - - views, err := d.client.RetrieveConfigurationViews(ctx, configurationID, &options) - if err != nil { - return nil, fmt.Errorf("retrieve views: %w", err) - } - - if len(views) == 0 { - return nil, fmt.Errorf("zero view found with name: %s", d.config.ViewName) - } - - for _, view := range views { - if view.Name == d.config.ViewName { - return &view, nil - } - } - - return nil, fmt.Errorf("no view found with name: %s", d.config.ViewName) -} - -func (d *DNSProvider) findViewZone(ctx context.Context, viewID int64, fqdn string) (*internal.ZoneResource, error) { - for name := range dns01.UnFqdnDomainsSeq(fqdn) { - options := internal.CollectionOptions{ - Filter: internal.Eq("absoluteName", name).String(), - } - - zones, err := d.client.RetrieveViewZones(ctx, viewID, &options) - if err != nil { - // TODO(ldez) maybe add a log in v5. - continue - } - - for _, zone := range zones { - if zone.AbsoluteName == name { - return &zone, nil - } - } - } - - return nil, fmt.Errorf("no zone found for fqdn: %s", fqdn) -} diff --git a/providers/dns/bluecatv2/bluecatv2_test.go b/providers/dns/bluecatv2/bluecatv2_test.go index 9038b4f3e..c8029053e 100644 --- a/providers/dns/bluecatv2/bluecatv2_test.go +++ b/providers/dns/bluecatv2/bluecatv2_test.go @@ -264,78 +264,6 @@ func mockBuilder() *servermock.Builder[*DNSProvider] { } func TestDNSProvider_Present(t *testing.T) { - t.Skip("wip on alt") - - provider := mockBuilder(). - Route("POST /api/v2/sessions", - servermock.ResponseFromInternal("postSession.json"), - servermock.CheckRequestJSONBodyFromInternal("postSession-request.json"), - ). - Route("GET /api/v2/configurations", - servermock.ResponseFromInternal("configurations.json"), - servermock.CheckQueryParameter().Strict(). - With("filter", "name:eq('myConfiguration')"), - ). - Route("GET /api/v2/configurations/12345/views", - servermock.ResponseFromInternal("views.json"), - servermock.CheckQueryParameter().Strict(). - With("filter", "name:eq('myView')"), - ). - Route("GET /api/v2/views/12345/zones", - http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { - filter := req.URL.Query().Get("filter") - - if filter == internal.Eq("absoluteName", "example.com").String() { - servermock.ResponseFromInternal("zones.json").ServeHTTP(rw, req) - - return - } - - servermock.ResponseFromInternal("error.json"). - WithStatusCode(http.StatusNotFound).ServeHTTP(rw, req) - }), - ). - Route("POST /api/v2/zones/12345/resourceRecords", - servermock.ResponseFromInternal("postZoneResourceRecord.json"), - servermock.CheckRequestJSONBodyFromInternal("postZoneResourceRecord-request.json"), - ). - Route("POST /api/v2/zones/12345/deployments", - servermock.ResponseFromInternal("postZoneDeployment.json"). - WithStatusCode(http.StatusCreated), - servermock.CheckRequestJSONBodyFromInternal("postZoneDeployment-request.json"), - ). - Build(t) - - err := provider.Present("example.com", "abc", "123d==") - require.NoError(t, err) -} - -func TestDNSProvider_CleanUp(t *testing.T) { - t.Skip("wip on alt") - - provider := mockBuilder(). - Route("POST /api/v2/sessions", - servermock.ResponseFromInternal("postSession.json"), - servermock.CheckRequestJSONBodyFromInternal("postSession-request.json"), - ). - Route("DELETE /api/v2/resourceRecords/12345", - servermock.ResponseFromInternal("deleteResourceRecord.json"), - ). - Route("POST /api/v2/zones/456789/deployments", - servermock.ResponseFromInternal("postZoneDeployment.json"). - WithStatusCode(http.StatusCreated), - servermock.CheckRequestJSONBodyFromInternal("postZoneDeployment-request.json"), - ). - Build(t) - - provider.zoneIDs["abc"] = 456789 - provider.recordIDs["abc"] = 12345 - - err := provider.CleanUp("example.com", "abc", "123d==") - require.NoError(t, err) -} - -func TestDNSProvider_Present_alt(t *testing.T) { provider := mockBuilder(). Route("POST /api/v2/sessions", servermock.ResponseFromInternal("postSession.json"), @@ -380,7 +308,7 @@ func TestDNSProvider_Present_alt(t *testing.T) { require.NoError(t, err) } -func TestDNSProvider_CleanUp_alt(t *testing.T) { +func TestDNSProvider_CleanUp(t *testing.T) { provider := mockBuilder(). Route("POST /api/v2/sessions", servermock.ResponseFromInternal("postSession.json"), diff --git a/providers/dns/bluecatv2/internal/types.go b/providers/dns/bluecatv2/internal/types.go index 0c7decd28..562fd60b0 100644 --- a/providers/dns/bluecatv2/internal/types.go +++ b/providers/dns/bluecatv2/internal/types.go @@ -51,7 +51,7 @@ type Collection[T any] struct { } type CollectionOptions struct { - // https://docs.bluecatnetworks.com/r/Address-Manager-RESTful-v2-API-Guide/Referencing-fields/9.6.0 + // https://docs.bluecatnetworks.com/r/Address-Manager-RESTful-v2-API-Guide/Fields/9.6.0 Fields string `url:"fields,omitempty"` // https://docs.bluecatnetworks.com/r/Address-Manager-RESTful-v2-API-Guide/Pagination/9.6.0