From 6786c25cecd94b98a2acf2312a46103e60803f07 Mon Sep 17 00:00:00 2001 From: Grant Spence Date: Wed, 29 May 2024 15:41:09 -0400 Subject: [PATCH] UPSTREAM: 6692: openshift: Fix OCPBUGS-34619 Generate zplugin.go correctly with third-party plugins (#6692) Previously, the generation of zplugin.go would not separate third-party external plugins from CoreDNS plugins in the go import block. This leads to the TestImportOrdering unit test failing, as it requires that third-party imports paths to be in a separate import block. While this issue does not affect the main CoreDNS repo, it can cause unit test failures in forks of CoreDNS that include external third-party plugins. Signed-off-by: Grant Spence --- directives_generate.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/directives_generate.go b/directives_generate.go index ccfd43e43c4..5192bf16e36 100644 --- a/directives_generate.go +++ b/directives_generate.go @@ -58,10 +58,22 @@ func genImports(file, pack string, mi map[string]string) { outs += "\n" } + coreDnsImports := "" + thirdPartyImports := "" + outs += "// Include all plugins.\n" for _, v := range mi { - outs += `_ "` + v + `"` + "\n" + if strings.HasPrefix(v, githubOrg) { + coreDnsImports += `_ "` + v + `"` + "\n" + } else { + thirdPartyImports += `_ "` + v + `"` + "\n" + } } + outs += coreDnsImports + if thirdPartyImports != "" { + outs += "\n" + thirdPartyImports + } + outs += ")\n" if err := formatAndWrite(file, outs); err != nil { @@ -107,7 +119,8 @@ func formatAndWrite(file string, data string) error { } const ( - pluginPath = "github.com/coredns/coredns/plugin/" + githubOrg = "github.com/coredns" + pluginPath = githubOrg + "/coredns/plugin/" pluginFile = "plugin.cfg" pluginFSPath = "plugin/" // Where the plugins are located on the file system header = "// generated by directives_generate.go; DO NOT EDIT\n\n"