oz123 / coredns-netbox-plugin

A coredns plugin to get dns records from Netbox
Apache License 2.0
63 stars 25 forks source link

Support for netbox-dns plugin #41

Open apoxa opened 9 months ago

apoxa commented 9 months ago

I'm using the netbox-dns-plugin, which extends NetBox with complete DNS zone management functionality. This adds additional features like zones and other record types. It'd be great if I could query this information from coredns with your plugin.

I had a look at the plugin code and have some ideas how to implement this. I'd add a boolean argument in setup.go, which toggles if the native API or the DNS plugin API is used.

case "zoneplugin":
    if !c.NextArg() {
        return nil, c.ArgErr()
    }
    zoneplugin, err := strconv.ParseBool(c.Val())
    if err != nil {
        return n, c.Errf("could not parse 'zoneplugin': %s", err)
    }
    n.ZonePlugin = zoneplugin

Then I'd convert func query() to a wrapper function which calls either the existing query() (renamed to e.g. queryNative()) function or a new function queryZonePlugin().

func (n *Netbox) query(host string, family int) ([]net.IP, error) {
    if n.ZonePlugin {
        return n.queryZonePlugin(host, family)
    }
    return n.queryNative(host, family)
}

I'd be happy to try and implement that functionality into your plugin, if you find this useful.

oz123 commented 9 months ago

Seems like a useful thing.

oz123 commented 9 months ago

Accidentally closed. Please submit a PR.

bsirayne commented 7 months ago

Adding support for the netbox-dns plugin would be a game changer, in my opinion.

I don't think I'm skilled enough to help with the actual implementation, but if there's anything I can do to assist (even if that just means buying ya'll some coffee), please let me know! 😁

oz123 commented 7 months ago

You can contact me in private. I am actually interested in that, I am just not interested in doing all the work for free. A few coffees might be enough ;-)