diff --git a/apps/console/internal/app/dns-server.go b/apps/console/internal/app/dns-server.go index c0eea26e4..6b6257f5d 100644 --- a/apps/console/internal/app/dns-server.go +++ b/apps/console/internal/app/dns-server.go @@ -73,11 +73,13 @@ func (h *dnsHandler) resolver(ctx context.Context, domain string, qtype uint16) question := m.Question[0] sp := strings.SplitN(strings.ToLower(question.Name), fmt.Sprintf(".%s", h.kloudliteDNSSuffix), 2) if len(sp) < 2 { + h.logger.Debug("INVALID DNS QUERY", "domain", domain, "qtype", qtype) return nil, errInvalidDNSQuery } if strings.HasSuffix(sp[0], ".local") { // INFO: domains ending with .local are supposed to be reserved for local machine only + h.logger.Debug("LOCAL DOMAIN", "domain", domain, "qtype", qtype) return h.newRR(question.Name, 7*24*60*60, "127.0.0.1") } @@ -87,6 +89,7 @@ func (h *dnsHandler) resolver(ctx context.Context, domain string, qtype uint16) sb, err := h.serviceBindingDomain.FindServiceBindingByHostname(ctx, accountName, hostname) if err != nil { + h.logger.Debug("failed to find service binding, got", "err", err, "domain", domain, "qtype", qtype) return nil, errors.NewEf(err, "failed to find service binding") } diff --git a/apps/console/internal/domain/service-binding.go b/apps/console/internal/domain/service-binding.go index e830c8183..62f5a78ae 100644 --- a/apps/console/internal/domain/service-binding.go +++ b/apps/console/internal/domain/service-binding.go @@ -32,20 +32,22 @@ func (d *domain) OnServiceBindingUpdateMessage(ctx ConsoleContext, svcb *network return errors.Newf("no service binding found") } - if svcb.Spec.Hostname == "" { - return nil + filter := repos.Filter{ + fc.AccountName: ctx.AccountName, + fc.ServiceBindingSpecHostname: svcb.Spec.Hostname, } - if svcb.Spec.ServiceIP == nil { + if svcb.Spec.ServiceIP == nil || svcb.Spec.Hostname == "" { + // INFO: it means that service binding has been de-allocated + if err := d.serviceBindingRepo.DeleteOne(ctx, filter); err != nil { + if !errors.Is(err, repos.ErrNoDocuments) { + return err + } + } return nil } - if _, err := d.serviceBindingRepo.Upsert(ctx, repos.Filter{ - fc.AccountName: ctx.AccountName, - // fc.ClusterName: opts.ClusterName, - // fc.MetadataName: svcb.Name, - fc.ServiceBindingSpecHostname: svcb.Spec.Hostname, - }, &entities.ServiceBinding{ + if _, err := d.serviceBindingRepo.Upsert(ctx, filter, &entities.ServiceBinding{ ServiceBinding: *svcb, AccountName: ctx.AccountName, ClusterName: opts.ClusterName, diff --git a/apps/console/main.go b/apps/console/main.go index d655ba441..d9af441ee 100644 --- a/apps/console/main.go +++ b/apps/console/main.go @@ -5,7 +5,6 @@ import ( "flag" "log/slog" "os" - "strings" "time" "github.com/kloudlite/api/pkg/errors" @@ -28,7 +27,7 @@ func main() { flag.BoolVar(&debug, "debug", false, "--debug") flag.Parse() - logger, err := logging.New(&logging.Options{Name: "console", ShowDebugLog: isDev || strings.ToLower(os.Getenv("LOG_LEVEL")) == "debug"}) + logger, err := logging.New(&logging.Options{Name: "console", ShowDebugLog: debug}) if err != nil { panic(err) }