fix: create dns nameserver on network creation;

This commit is contained in:
VishalDalwadi
2025-12-16 16:46:07 +05:30
parent 56ce2abe17
commit 5838e892f4
4 changed files with 30 additions and 10 deletions

View File

@@ -554,6 +554,8 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
slog.Error("error publishing node update to node", "node", node.ID, "error", err)
}
}
_ = logic.DeleteNetworkNameservers(network)
if servercfg.IsDNSMode() {
logic.SetDNS()
}
@@ -681,6 +683,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
logic.CreateDefaultAclNetworkPolicies(models.NetworkID(network.NetID))
logic.CreateDefaultTags(models.NetworkID(network.NetID))
logic.AddNetworkToAllocatedIpMap(network.NetID)
logic.CreateGoogleDNSNameserver(network.NetID)
go func() {
defaultHosts := logic.GetDefaultHosts()

View File

@@ -13,6 +13,7 @@ import (
"time"
validator "github.com/go-playground/validator/v10"
"github.com/google/uuid"
"github.com/gravitl/netmaker/database"
"github.com/gravitl/netmaker/db"
"github.com/gravitl/netmaker/logger"
@@ -23,7 +24,7 @@ import (
)
const (
GooglePublicDNSID = "1f6c873e-8be8-4b31-8b34-20763f9fc8ff"
GooglePublicNameserverName = "Google Public DNS"
)
var GetNameserversForNode = getNameserversForNode
@@ -66,16 +67,22 @@ var GlobalNsList = map[string]GlobalNs{
}
func CreateGoogleDNSNameserver(networkID string) error {
err := (&schema.Nameserver{
ID: GooglePublicDNSID,
}).Get(db.WithContext(context.TODO()))
if err == nil {
return nil
nameservers, err := (&schema.Nameserver{
NetworkID: networkID,
}).ListByNetwork(db.WithContext(context.TODO()))
if err != nil {
return err
}
for _, ns := range nameservers {
if ns.Default && ns.Name == GooglePublicNameserverName {
return nil
}
}
ns := schema.Nameserver{
ID: GooglePublicDNSID,
Name: "Google Public DNS",
ID: uuid.NewString(),
Name: GooglePublicNameserverName,
NetworkID: networkID,
Description: "",
Default: true,
@@ -103,6 +110,12 @@ func CreateGoogleDNSNameserver(networkID string) error {
return ns.Create(db.WithContext(context.TODO()))
}
func DeleteNetworkNameservers(networkID string) error {
return (&schema.Nameserver{
NetworkID: networkID,
}).Delete(db.WithContext(context.TODO()))
}
// SetDNS - sets the dns on file
func SetDNS() error {
hostfile, err := txeh.NewHosts(&txeh.HostsConfig{})

View File

@@ -100,6 +100,8 @@ func migrateNameservers() {
}
for _, netI := range nets {
_ = logic.CreateGoogleDNSNameserver(netI.NetID)
_, cidr, err := net.ParseCIDR(netI.AddressRange)
if err != nil {
continue
@@ -155,8 +157,6 @@ func migrateNameservers() {
netI.NameServers = []string{}
logic.SaveNetwork(&netI)
}
_ = logic.CreateGoogleDNSNameserver(netI.NetID)
}
nodes, _ := logic.GetAllNodes()
for _, node := range nodes {

View File

@@ -53,6 +53,10 @@ func (ns *Nameserver) Delete(ctx context.Context) error {
return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Delete(&ns).Error
}
func (ns *Nameserver) DeleteByNetwork(ctx context.Context) error {
return db.FromContext(ctx).Model(&Nameserver{}).Where("network_id = ?", ns.NetworkID).Delete(&ns).Error
}
func (ns *Nameserver) UpdateStatus(ctx context.Context) error {
return db.FromContext(ctx).Model(&Nameserver{}).Where("id = ?", ns.ID).Updates(map[string]any{
"status": ns.Status,