This is an automated email from the ASF dual-hosted git repository.

zrhoffman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new aa90857  Change lib/go-atscfg Make funcs to take Opts (#6001)
aa90857 is described below

commit aa90857708002fd84ca5dc4036f26b9d83793d44
Author: Robert O Butts <[email protected]>
AuthorDate: Wed Aug 4 12:05:34 2021 -0600

    Change lib/go-atscfg Make funcs to take Opts (#6001)
    
    This will reduce future breaking changes.
    
    This allows us to add new options, without changing the function
    signature, to greatly reduce users getting compile errors on upgrade.
---
 CHANGELOG.md                                   |   1 +
 cache-config/t3c-generate/cfgfile/wrappers.go  |  89 +++++++++------
 lib/go-atscfg/astatsdotconfig.go               |  15 ++-
 lib/go-atscfg/atsdotrules.go                   |  15 ++-
 lib/go-atscfg/atsdotrules_test.go              |   2 +-
 lib/go-atscfg/bgfetchdotconfig.go              |  15 ++-
 lib/go-atscfg/bgfetchdotconfig_test.go         |   2 +-
 lib/go-atscfg/cachedotconfig.go                |  24 +++-
 lib/go-atscfg/cachedotconfig_test.go           |   2 +-
 lib/go-atscfg/chkconfig.go                     |   8 ++
 lib/go-atscfg/chkconfig_test.go                |   2 +-
 lib/go-atscfg/dropqstringdotconfig.go          |  15 ++-
 lib/go-atscfg/dropqstringdotconfig_test.go     |   2 +-
 lib/go-atscfg/facts.go                         |  15 ++-
 lib/go-atscfg/facts_test.go                    |   2 +-
 lib/go-atscfg/headerrewritedotconfig.go        |  15 ++-
 lib/go-atscfg/headerrewritedotconfig_test.go   |   8 +-
 lib/go-atscfg/hostingdotconfig.go              |  15 ++-
 lib/go-atscfg/hostingdotconfig_test.go         |   4 +-
 lib/go-atscfg/ipallowdotconfig.go              |  15 ++-
 lib/go-atscfg/ipallowdotconfig_test.go         |   8 +-
 lib/go-atscfg/ipallowdotyaml.go                |  15 ++-
 lib/go-atscfg/ipallowdotyaml_test.go           |   8 +-
 lib/go-atscfg/loggingdotconfig.go              |  15 ++-
 lib/go-atscfg/loggingdotconfig_test.go         |   2 +-
 lib/go-atscfg/loggingdotyaml.go                |  15 ++-
 lib/go-atscfg/loggingdotyaml_test.go           |   4 +-
 lib/go-atscfg/logsdotxml.go                    |  15 ++-
 lib/go-atscfg/logsdotxml_test.go               |   2 +-
 lib/go-atscfg/meta.go                          |   8 ++
 lib/go-atscfg/meta_test.go                     |   4 +-
 lib/go-atscfg/packages.go                      |   8 ++
 lib/go-atscfg/packages_test.go                 |   2 +-
 lib/go-atscfg/parentdotconfig.go               |   5 +-
 lib/go-atscfg/parentdotconfig_test.go          |  36 +++---
 lib/go-atscfg/plugindotconfig.go               |  15 ++-
 lib/go-atscfg/plugindotconfig_test.go          |   2 +-
 lib/go-atscfg/recordsdotconfig.go              |  15 ++-
 lib/go-atscfg/recordsdotconfig_test.go         |   5 +-
 lib/go-atscfg/regexremapdotconfig.go           |  15 ++-
 lib/go-atscfg/regexremapdotconfig_test.go      |   6 +-
 lib/go-atscfg/regexrevalidatedotconfig.go      |  15 ++-
 lib/go-atscfg/regexrevalidatedotconfig_test.go |   2 +-
 lib/go-atscfg/remapdotconfig.go                |  15 ++-
 lib/go-atscfg/remapdotconfig_test.go           | 147 +++++++++++++++----------
 lib/go-atscfg/servercachedotconfig.go          |   7 +-
 lib/go-atscfg/servercachedotconfig_test.go     |   2 +-
 lib/go-atscfg/serverunknown.go                 |  15 ++-
 lib/go-atscfg/serverunknown_test.go            |   2 +-
 lib/go-atscfg/setdscpdotconfig.go              |  15 ++-
 lib/go-atscfg/setdscpdotconfig_test.go         |   4 +-
 lib/go-atscfg/snidotyaml.go                    |   5 +-
 lib/go-atscfg/sslmulticertdotconfig.go         |  15 ++-
 lib/go-atscfg/sslmulticertdotconfig_test.go    |   4 +-
 lib/go-atscfg/sslservernamedotyaml.go          |   5 +-
 lib/go-atscfg/sslservernamedotyaml_test.go     |   6 +-
 lib/go-atscfg/storagedotconfig.go              |  15 ++-
 lib/go-atscfg/storagedotconfig_test.go         |   2 +-
 lib/go-atscfg/sysctldotconf.go                 |  15 ++-
 lib/go-atscfg/sysctldotconf_test.go            |   2 +-
 lib/go-atscfg/urisigningconfig.go              |   8 ++
 lib/go-atscfg/urisigningconfig_test.go         |   2 +-
 lib/go-atscfg/urlsigconfig.go                  |  15 ++-
 lib/go-atscfg/urlsigconfig_test.go             |   4 +-
 lib/go-atscfg/volumedotconfig.go               |  15 ++-
 lib/go-atscfg/volumedotconfig_test.go          |   6 +-
 66 files changed, 593 insertions(+), 221 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index ad3881f..91db29d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -114,6 +114,7 @@ The format is based on [Keep a 
Changelog](http://keepachangelog.com/en/1.0.0/).
 - The format of the `/servers/{{host name}}/update_status` Traffic Ops API 
endpoint has been changed to use a top-level `response` property, in keeping 
with (most of) the rest of the API.
 - The API v4 Traffic Ops Go client has been overhauled compared to its 
predecessors to have a consistent call signature that allows passing query 
string parameters and HTTP headers to any client method.
 - Updated BouncyCastle libraries in Traffic Router to v1.68.
+- lib/go-atscfg Make funcs to take Opts, to reduce future breaking changes.
 - CDN in a Box now uses `t3c` for cache configuration.
 - CDN in a Box now uses Apache Traffic Server 8.1.
 
diff --git a/cache-config/t3c-generate/cfgfile/wrappers.go 
b/cache-config/t3c-generate/cfgfile/wrappers.go
index 70e569c..0e2f0bb 100644
--- a/cache-config/t3c-generate/cfgfile/wrappers.go
+++ b/cache-config/t3c-generate/cfgfile/wrappers.go
@@ -44,70 +44,82 @@ func MakeConfigFilesList(toData *t3cutil.ConfigData, dir 
string) ([]atscfg.CfgMe
                toData.GlobalParams,
                toData.CacheGroups,
                toData.Topologies,
+               &atscfg.ConfigFilesListOpts{},
        )
        return configFiles, warnings, err
 }
 
 func Make12MFacts(toData *t3cutil.ConfigData, fileName string, hdrCommentTxt 
string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.Make12MFacts(toData.Server, hdrCommentTxt)
+       opts := &atscfg.Config12MFactsOpts{HdrComment: hdrCommentTxt}
+       return atscfg.Make12MFacts(toData.Server, opts)
 }
 
 func MakeATSDotRules(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeATSDotRules(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.ATSDotRulesOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeATSDotRules(toData.Server, toData.ServerParams, opts)
 }
 
 func MakeAstatsDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeAStatsDotConfig(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.AStatsDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeAStatsDotConfig(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeBGFetchDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeBGFetchDotConfig(toData.Server, hdrCommentTxt)
+       opts := &atscfg.BGFetchDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeBGFetchDotConfig(toData.Server, opts)
 }
 
 func MakeCacheDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeCacheDotConfig(toData.Server, toData.Servers, 
toData.DeliveryServices, toData.DeliveryServiceServers, hdrCommentTxt)
+       opts := &atscfg.CacheDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeCacheDotConfig(toData.Server, toData.Servers, 
toData.DeliveryServices, toData.DeliveryServiceServers, opts)
 }
 
 func MakeChkconfig(toData *t3cutil.ConfigData, fileName string, hdrCommentTxt 
string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeChkconfig(toData.ServerParams)
+       return atscfg.MakeChkconfig(toData.ServerParams, nil)
 }
 
 func MakeDropQStringDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeDropQStringDotConfig(toData.Server, 
toData.ServerParams, hdrCommentTxt)
+       opts := &atscfg.DropQStringDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeDropQStringDotConfig(toData.Server, 
toData.ServerParams, opts)
 }
 
 func MakeHostingDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeHostingDotConfig(toData.Server, toData.Servers, 
toData.ServerParams, toData.DeliveryServices, toData.DeliveryServiceServers, 
toData.Topologies, hdrCommentTxt)
+       opts := &atscfg.HostingDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeHostingDotConfig(toData.Server, toData.Servers, 
toData.ServerParams, toData.DeliveryServices, toData.DeliveryServiceServers, 
toData.Topologies, opts)
 }
 
 func MakeIPAllowDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
+       opts := &atscfg.IPAllowDotConfigOpts{HdrComment: hdrCommentTxt}
        return atscfg.MakeIPAllowDotConfig(
                toData.ServerParams,
                toData.Server,
                toData.Servers,
                toData.CacheGroups,
                toData.Topologies,
-               hdrCommentTxt,
+               opts,
        )
 }
 
 func MakeIPAllowDotYAML(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
+       opts := &atscfg.IPAllowDotYAMLOpts{HdrComment: hdrCommentTxt}
        return atscfg.MakeIPAllowDotYAML(
                toData.ServerParams,
                toData.Server,
                toData.Servers,
                toData.CacheGroups,
                toData.Topologies,
-               hdrCommentTxt,
+               opts,
        )
 }
 
 func MakeLoggingDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeLoggingDotConfig(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.LoggingDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeLoggingDotConfig(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeLoggingDotYAML(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeLoggingDotYAML(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.LoggingDotYAMLOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeLoggingDotYAML(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeSSLServerNameYAML(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
@@ -122,7 +134,7 @@ func MakeSSLServerNameYAML(toData *t3cutil.ConfigData, 
fileName string, hdrComme
                toData.CacheGroups,
                toData.ServerCapabilities,
                toData.DSRequiredCapabilities,
-               atscfg.SSLServerNameYAMLOpts{
+               &atscfg.SSLServerNameYAMLOpts{
                        HdrComment:         hdrCommentTxt,
                        VerboseComments:    true, // TODO add a CLI flag
                        DefaultTLSVersions: cfg.DefaultTLSVersions,
@@ -143,7 +155,7 @@ func MakeSNIDotYAML(toData *t3cutil.ConfigData, fileName 
string, hdrCommentTxt s
                toData.CacheGroups,
                toData.ServerCapabilities,
                toData.DSRequiredCapabilities,
-               atscfg.SNIDotYAMLOpts{
+               &atscfg.SNIDotYAMLOpts{
                        HdrComment:         hdrCommentTxt,
                        VerboseComments:    true, // TODO add a CLI flag
                        DefaultTLSVersions: cfg.DefaultTLSVersions,
@@ -153,11 +165,12 @@ func MakeSNIDotYAML(toData *t3cutil.ConfigData, fileName 
string, hdrCommentTxt s
 }
 
 func MakeLogsXMLDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeLogsXMLDotConfig(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.LogsXMLDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeLogsXMLDotConfig(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakePackages(toData *t3cutil.ConfigData, fileName string, hdrCommentTxt 
string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakePackages(toData.ServerParams)
+       return atscfg.MakePackages(toData.ServerParams, nil)
 }
 
 func MakeParentDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
@@ -173,7 +186,7 @@ func MakeParentDotConfig(toData *t3cutil.ConfigData, 
fileName string, hdrComment
                toData.CacheGroups,
                toData.DeliveryServiceServers,
                toData.CDN,
-               atscfg.ParentConfigOpts{
+               &atscfg.ParentConfigOpts{
                        HdrComment:  hdrCommentTxt,
                        AddComments: cfg.ParentComments, // TODO add a CLI flag?
                },
@@ -181,26 +194,29 @@ func MakeParentDotConfig(toData *t3cutil.ConfigData, 
fileName string, hdrComment
 }
 
 func MakePluginDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakePluginDotConfig(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.PluginDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakePluginDotConfig(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeRecordsDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
        return atscfg.MakeRecordsDotConfig(
                toData.Server,
                toData.ServerParams,
-               hdrCommentTxt,
-               atscfg.RecordsConfigOpts{
+               &atscfg.RecordsConfigOpts{
                        ReleaseViaStr:           cfg.ViaRelease,
                        DNSLocalBindServiceAddr: cfg.SetDNSLocalBind,
+                       HdrComment:              hdrCommentTxt,
                },
        )
 }
 
 func MakeRegexRevalidateDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeRegexRevalidateDotConfig(toData.Server, 
toData.DeliveryServices, toData.GlobalParams, toData.Jobs, hdrCommentTxt)
+       opts := &atscfg.RegexRevalidateDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeRegexRevalidateDotConfig(toData.Server, 
toData.DeliveryServices, toData.GlobalParams, toData.Jobs, opts)
 }
 
 func MakeRemapDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
+       opts := &atscfg.RemapDotConfigOpts{HdrComment: hdrCommentTxt}
        return atscfg.MakeRemapDotConfig(
                toData.Server,
                toData.DeliveryServices,
@@ -213,27 +229,32 @@ func MakeRemapDotConfig(toData *t3cutil.ConfigData, 
fileName string, hdrCommentT
                toData.CacheGroups,
                toData.ServerCapabilities,
                toData.DSRequiredCapabilities,
-               hdrCommentTxt,
+               opts,
        )
 }
 
 func MakeSSLMultiCertDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeSSLMultiCertDotConfig(toData.Server, 
toData.DeliveryServices, hdrCommentTxt)
+       opts := &atscfg.SSLMultiCertDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeSSLMultiCertDotConfig(toData.Server, 
toData.DeliveryServices, opts)
 }
 
 func MakeStorageDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeStorageDotConfig(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.StorageDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeStorageDotConfig(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeSysCtlDotConf(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeSysCtlDotConf(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.SysCtlDotConfOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeSysCtlDotConf(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeVolumeDotConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeVolumeDotConfig(toData.Server, toData.ServerParams, 
hdrCommentTxt)
+       opts := &atscfg.VolumeDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeVolumeDotConfig(toData.Server, toData.ServerParams, 
opts)
 }
 
 func MakeHeaderRewrite(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
+       opts := &atscfg.HeaderRewriteDotConfigOpts{HdrComment: hdrCommentTxt}
        return atscfg.MakeHeaderRewriteDotConfig(
                fileName,
                toData.DeliveryServices,
@@ -245,26 +266,30 @@ func MakeHeaderRewrite(toData *t3cutil.ConfigData, 
fileName string, hdrCommentTx
                toData.ServerCapabilities,
                toData.DSRequiredCapabilities,
                toData.Topologies,
-               hdrCommentTxt,
+               opts,
        )
 }
 
 func MakeRegexRemap(toData *t3cutil.ConfigData, fileName string, hdrCommentTxt 
string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeRegexRemapDotConfig(fileName, toData.Server, 
toData.DeliveryServices, hdrCommentTxt)
+       opts := &atscfg.RegexRemapDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeRegexRemapDotConfig(fileName, toData.Server, 
toData.DeliveryServices, opts)
 }
 
 func MakeSetDSCP(toData *t3cutil.ConfigData, fileName string, hdrCommentTxt 
string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeSetDSCPDotConfig(fileName, toData.Server, 
hdrCommentTxt)
+       opts := &atscfg.SetDSCPDotConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeSetDSCPDotConfig(fileName, toData.Server, opts)
 }
 
 func MakeURLSigConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeURLSigConfig(fileName, toData.Server, 
toData.ServerParams, toData.URLSigKeys, hdrCommentTxt)
+       opts := &atscfg.URLSigConfigOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeURLSigConfig(fileName, toData.Server, 
toData.ServerParams, toData.URLSigKeys, opts)
 }
 
 func MakeURISigningConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeURISigningConfig(fileName, toData.URISigningKeys)
+       return atscfg.MakeURISigningConfig(fileName, toData.URISigningKeys, nil)
 }
 
 func MakeUnknownConfig(toData *t3cutil.ConfigData, fileName string, 
hdrCommentTxt string, cfg config.Cfg) (atscfg.Cfg, error) {
-       return atscfg.MakeServerUnknown(fileName, toData.Server, 
toData.ServerParams, hdrCommentTxt)
+       opts := &atscfg.ServerUnknownOpts{HdrComment: hdrCommentTxt}
+       return atscfg.MakeServerUnknown(fileName, toData.Server, 
toData.ServerParams, opts)
 }
diff --git a/lib/go-atscfg/astatsdotconfig.go b/lib/go-atscfg/astatsdotconfig.go
index 129eb5e..9dc09c7 100644
--- a/lib/go-atscfg/astatsdotconfig.go
+++ b/lib/go-atscfg/astatsdotconfig.go
@@ -29,11 +29,22 @@ const AstatsFileName = "astats.config"
 const ContentTypeAstatsDotConfig = ContentTypeTextASCII
 const LineCommentAstatsDotConfig = LineCommentHash
 
+// AStatsDotConfigOpts contains settings to configure generation options.
+type AStatsDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeAStatsDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *AStatsDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &AStatsDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -43,7 +54,7 @@ func MakeAStatsDotConfig(
        serverParams = filterParams(serverParams, AstatsFileName, "", "", 
"location")
        paramData, paramWarns := paramsToMap(serverParams)
        warnings = append(warnings, paramWarns...)
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        txt := genericProfileConfig(paramData, AstatsSeparator)
        if txt == "" {
                txt = "\n" // If no params exist, don't send "not found," but 
an empty file. We know the profile exists.
diff --git a/lib/go-atscfg/atsdotrules.go b/lib/go-atscfg/atsdotrules.go
index 77fd206..ea80de4 100644
--- a/lib/go-atscfg/atsdotrules.go
+++ b/lib/go-atscfg/atsdotrules.go
@@ -29,11 +29,22 @@ const ATSDotRulesFileName = StorageFileName
 const ContentTypeATSDotRules = ContentTypeTextASCII
 const LineCommentATSDotRules = LineCommentHash
 
+// ATSDotRulesOpts contains settings to configure generation options.
+type ATSDotRulesOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeATSDotRules(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *ATSDotRulesOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &ATSDotRulesOpts{}
+       }
        warnings := []string{}
        if server.Profile == nil {
                return Cfg{}, makeErr(warnings, "server missing Profile")
@@ -42,7 +53,7 @@ func MakeATSDotRules(
        serverParams = filterParams(serverParams, ATSDotRulesFileName, "", "", 
"location")
        paramData, paramWarns := paramsToMap(serverParams)
        warnings = append(warnings, paramWarns...)
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        drivePrefix := strings.TrimPrefix(paramData["Drive_Prefix"], `/dev/`)
        drivePostfix := strings.Split(paramData["Drive_Letters"], ",")
diff --git a/lib/go-atscfg/atsdotrules_test.go 
b/lib/go-atscfg/atsdotrules_test.go
index 272ada8..7bf7c1d 100644
--- a/lib/go-atscfg/atsdotrules_test.go
+++ b/lib/go-atscfg/atsdotrules_test.go
@@ -60,7 +60,7 @@ func TestMakeATSDotRules(t *testing.T) {
                },
        }
 
-       cfg, err := MakeATSDotRules(server, serverParams, hdr)
+       cfg, err := MakeATSDotRules(server, serverParams, 
&ATSDotRulesOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/bgfetchdotconfig.go 
b/lib/go-atscfg/bgfetchdotconfig.go
index 55531bd..0caa5b6 100644
--- a/lib/go-atscfg/bgfetchdotconfig.go
+++ b/lib/go-atscfg/bgfetchdotconfig.go
@@ -22,17 +22,28 @@ package atscfg
 const ContentTypeBGFetchDotConfig = ContentTypeTextASCII
 const LineCommentBGFetchDotConfig = LineCommentHash
 
+// BGFetchDotConfigOpts contains settings to configure generation options.
+type BGFetchDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeBGFetchDotConfig(
        server *Server,
-       hdrComment string,
+       opt *BGFetchDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &BGFetchDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.CDNName == nil {
                return Cfg{}, makeErr(warnings, "server missing CDNName")
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
        text += "include User-Agent *\n"
 
        return Cfg{
diff --git a/lib/go-atscfg/bgfetchdotconfig_test.go 
b/lib/go-atscfg/bgfetchdotconfig_test.go
index 45ae836..d9c5c42 100644
--- a/lib/go-atscfg/bgfetchdotconfig_test.go
+++ b/lib/go-atscfg/bgfetchdotconfig_test.go
@@ -31,7 +31,7 @@ func TestMakeBGFetchDotConfig(t *testing.T) {
        server.CDNName = &cdnName
        hdr := "myHeaderComment"
 
-       cfg, err := MakeBGFetchDotConfig(server, hdr)
+       cfg, err := MakeBGFetchDotConfig(server, 
&BGFetchDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/cachedotconfig.go b/lib/go-atscfg/cachedotconfig.go
index e77a95d..a98da67 100644
--- a/lib/go-atscfg/cachedotconfig.go
+++ b/lib/go-atscfg/cachedotconfig.go
@@ -29,18 +29,29 @@ import (
 const ContentTypeCacheDotConfig = ContentTypeTextASCII
 const LineCommentCacheDotConfig = LineCommentHash
 
+// CacheDotConfigOpts contains settings to configure generation options.
+type CacheDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeCacheDotConfig makes the ATS cache.config config file.
 func MakeCacheDotConfig(
        server *Server,
        servers []Server,
        deliveryServices []DeliveryService,
        deliveryServiceServers []DeliveryServiceServer,
-       hdrComment string,
+       opt *CacheDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &CacheDotConfigOpts{}
+       }
        if tc.CacheTypeFromString(server.Type) == tc.CacheTypeMid {
-               return makeCacheDotConfigMid(server, deliveryServices, 
hdrComment)
+               return makeCacheDotConfigMid(server, deliveryServices, opt)
        } else {
-               return makeCacheDotConfigEdge(server, servers, 
deliveryServices, deliveryServiceServers, hdrComment)
+               return makeCacheDotConfigEdge(server, servers, 
deliveryServices, deliveryServiceServers, opt)
        }
 }
 
@@ -49,8 +60,11 @@ func makeCacheDotConfigEdge(
        servers []Server,
        deliveryServices []DeliveryService,
        deliveryServiceServers []DeliveryServiceServer,
-       hdrComment string,
+       opt *CacheDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &CacheDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -139,7 +153,7 @@ func makeCacheDotConfigEdge(
        if text == "" {
                text = "\n" // If no params exist, don't send "not found," but 
an empty file. We know the profile exists.
        }
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        text = hdr + text
 
        return Cfg{
diff --git a/lib/go-atscfg/cachedotconfig_test.go 
b/lib/go-atscfg/cachedotconfig_test.go
index 3b8bca1..5e45947 100644
--- a/lib/go-atscfg/cachedotconfig_test.go
+++ b/lib/go-atscfg/cachedotconfig_test.go
@@ -60,7 +60,7 @@ func TestMakeCacheDotConfig(t *testing.T) {
 
        hdr := "myHeaderComment"
 
-       cfg, err := MakeCacheDotConfig(server, servers, dses, dss, hdr)
+       cfg, err := MakeCacheDotConfig(server, servers, dses, dss, 
&CacheDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/chkconfig.go b/lib/go-atscfg/chkconfig.go
index dbdc5e1..67ba959 100644
--- a/lib/go-atscfg/chkconfig.go
+++ b/lib/go-atscfg/chkconfig.go
@@ -31,11 +31,19 @@ const ChkconfigParamConfigFile = `chkconfig`
 const ContentTypeChkconfig = ContentTypeTextASCII
 const LineCommentChkconfig = LineCommentHash
 
+// ChkconfigOpts contains settings to configure generation options.
+type ChkconfigOpts struct {
+}
+
 // MakeChkconfig returns the 'chkconfig' ATS config file endpoint.
 // This is a JSON object, and should be served with an 'application/json' 
Content-Type.
 func MakeChkconfig(
        serverParams []tc.Parameter,
+       opt *ChkconfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &ChkconfigOpts{}
+       }
        warnings := []string{}
 
        serverParams = filterParams(serverParams, ChkconfigParamConfigFile, "", 
"", "")
diff --git a/lib/go-atscfg/chkconfig_test.go b/lib/go-atscfg/chkconfig_test.go
index 45a8efd..8865807 100644
--- a/lib/go-atscfg/chkconfig_test.go
+++ b/lib/go-atscfg/chkconfig_test.go
@@ -49,7 +49,7 @@ func TestMakeChkconfig(t *testing.T) {
                },
        }
 
-       cfg, err := MakeChkconfig(params)
+       cfg, err := MakeChkconfig(params, &ChkconfigOpts{})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/dropqstringdotconfig.go 
b/lib/go-atscfg/dropqstringdotconfig.go
index 42d13a7..c8d8d9c 100644
--- a/lib/go-atscfg/dropqstringdotconfig.go
+++ b/lib/go-atscfg/dropqstringdotconfig.go
@@ -28,11 +28,22 @@ const DropQStringDotConfigParamName = "content"
 const ContentTypeDropQStringDotConfig = ContentTypeTextASCII
 const LineCommentDropQStringDotConfig = LineCommentHash
 
+// DropQStringDotConfigOpts contains settings to configure generation options.
+type DropQStringDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeDropQStringDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *DropQStringDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &DropQStringDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -51,7 +62,7 @@ func MakeDropQStringDotConfig(
                break
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
        if dropQStringVal != nil {
                text += *dropQStringVal + "\n"
        } else {
diff --git a/lib/go-atscfg/dropqstringdotconfig_test.go 
b/lib/go-atscfg/dropqstringdotconfig_test.go
index 29bb6b2..9c0f012 100644
--- a/lib/go-atscfg/dropqstringdotconfig_test.go
+++ b/lib/go-atscfg/dropqstringdotconfig_test.go
@@ -44,7 +44,7 @@ func TestMakeDropQStringDotConfig(t *testing.T) {
 
        hdr := "myHeaderComment"
 
-       cfg, err := MakeDropQStringDotConfig(server, params, hdr)
+       cfg, err := MakeDropQStringDotConfig(server, params, 
&DropQStringDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/facts.go b/lib/go-atscfg/facts.go
index a9652df..750e23a 100644
--- a/lib/go-atscfg/facts.go
+++ b/lib/go-atscfg/facts.go
@@ -22,17 +22,28 @@ package atscfg
 const ContentType12MFacts = ContentTypeTextASCII
 const LineComment12MFacts = LineCommentHash
 
+// Config12MFactsOpts contains settings to configure generation options.
+type Config12MFactsOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func Make12MFacts(
        server *Server,
-       hdrComment string,
+       opt *Config12MFactsOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &Config12MFactsOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
                return Cfg{}, makeErr(warnings, "this server missing Profile")
        }
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        txt := hdr
        txt += "profile:" + *server.Profile + "\n"
 
diff --git a/lib/go-atscfg/facts_test.go b/lib/go-atscfg/facts_test.go
index eeb284d..8af1e0d 100644
--- a/lib/go-atscfg/facts_test.go
+++ b/lib/go-atscfg/facts_test.go
@@ -31,7 +31,7 @@ func TestMake12MFacts(t *testing.T) {
 
        hdr := "myHeaderComment"
 
-       cfg, err := Make12MFacts(server, hdr)
+       cfg, err := Make12MFacts(server, &Config12MFactsOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/headerrewritedotconfig.go 
b/lib/go-atscfg/headerrewritedotconfig.go
index 27cf47d..c7f4172 100644
--- a/lib/go-atscfg/headerrewritedotconfig.go
+++ b/lib/go-atscfg/headerrewritedotconfig.go
@@ -57,6 +57,14 @@ func LastHeaderRewriteConfigFileName(dsName string) string {
        return HeaderRewriteLastPrefix + dsName + ConfigSuffix
 }
 
+// HeaderRewriteDotConfigOpts contains settings to configure generation 
options.
+type HeaderRewriteDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeHeaderRewriteDotConfig makes the header rewrite file for
 // an Edge hdr_rw_ or Mid hdr_rw_mid_ or Topology hdr_rw_{first,inner,last} 
file,
 // as generated by MakeMetaConfigFilesList.
@@ -71,8 +79,11 @@ func MakeHeaderRewriteDotConfig(
        serverCapabilities map[int]map[ServerCapability]struct{},
        requiredCapabilities map[int]map[ServerCapability]struct{},
        topologiesArr []tc.Topology,
-       hdrComment string,
+       opt *HeaderRewriteDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &HeaderRewriteDotConfigOpts{}
+       }
        warnings := []string{}
        if server.CDNName == nil {
                return Cfg{}, makeErr(warnings, "this server missing CDNName")
@@ -168,7 +179,7 @@ func MakeHeaderRewriteDotConfig(
                return Cfg{}, makeErr(warnings, "getting header rewrite text 
from delivery service: "+err.Error())
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        // Add the TC directives (which may be empty).
        // NOTE!! Custom TC injections MUST NOT EVER have a `[L]`. Doing so 
will break custom header rewrites!
diff --git a/lib/go-atscfg/headerrewritedotconfig_test.go 
b/lib/go-atscfg/headerrewritedotconfig_test.go
index c069280..946e982 100644
--- a/lib/go-atscfg/headerrewritedotconfig_test.go
+++ b/lib/go-atscfg/headerrewritedotconfig_test.go
@@ -77,7 +77,7 @@ func TestMakeHeaderRewriteDotConfig(t *testing.T) {
        serverCaps := map[int]map[ServerCapability]struct{}{}
        dsRequiredCaps := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, server, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, hdr)
+       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, server, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, 
&HeaderRewriteDotConfigOpts{HdrComment: hdr})
 
        if err != nil {
                t.Errorf("error expected nil, actual '%v'\n", err)
@@ -157,7 +157,7 @@ func TestMakeHeaderRewriteDotConfigNoMaxOriginConnections(t 
*testing.T) {
        serverCaps := map[int]map[ServerCapability]struct{}{}
        dsRequiredCaps := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, server, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, hdr)
+       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, server, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, 
&HeaderRewriteDotConfigOpts{HdrComment: hdr})
 
        if err != nil {
                t.Errorf("error expected nil, actual '%v'\n", err)
@@ -239,7 +239,7 @@ func TestMakeHeaderRewriteMidDotConfig(t *testing.T) {
        serverCaps := map[int]map[ServerCapability]struct{}{}
        dsRequiredCaps := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, server, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, hdr)
+       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, server, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, 
&HeaderRewriteDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Error(err)
        }
@@ -328,7 +328,7 @@ func TestMakeHeaderRewriteMidDotConfigNoMaxConns(t 
*testing.T) {
        serverCaps := map[int]map[ServerCapability]struct{}{}
        dsRequiredCaps := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, mid0, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, hdr)
+       cfg, err := MakeHeaderRewriteDotConfig(fileName, dses, dss, mid0, 
servers, cgs, serverParams, serverCaps, dsRequiredCaps, topologies, 
&HeaderRewriteDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Error(err)
        }
diff --git a/lib/go-atscfg/hostingdotconfig.go 
b/lib/go-atscfg/hostingdotconfig.go
index 69fec0e..d81b9cd 100644
--- a/lib/go-atscfg/hostingdotconfig.go
+++ b/lib/go-atscfg/hostingdotconfig.go
@@ -38,6 +38,14 @@ const ParamRAMDrivePrefix = "RAM_Drive_Prefix"
 const ServerHostingDotConfigMidIncludeInactive = false
 const ServerHostingDotConfigEdgeIncludeInactive = true
 
+// HostingDotConfigOpts contains settings to configure generation options.
+type HostingDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeHostingDotConfig(
        server *Server,
        servers []Server,
@@ -45,8 +53,11 @@ func MakeHostingDotConfig(
        deliveryServices []DeliveryService,
        deliveryServiceServers []DeliveryServiceServer,
        topologies []tc.Topology,
-       hdrComment string,
+       opt *HostingDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &HostingDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.CDNID == nil {
@@ -147,7 +158,7 @@ func MakeHostingDotConfig(
                filteredDSes = append(filteredDSes, ds)
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        nameTopologies := makeTopologyNameMap(topologies)
 
diff --git a/lib/go-atscfg/hostingdotconfig_test.go 
b/lib/go-atscfg/hostingdotconfig_test.go
index f79de62..1f0d0f6 100644
--- a/lib/go-atscfg/hostingdotconfig_test.go
+++ b/lib/go-atscfg/hostingdotconfig_test.go
@@ -77,7 +77,7 @@ func TestMakeHostingDotConfig(t *testing.T) {
        servers := []Server{*server}
        dss := makeDSS(servers, dses)
 
-       cfg, err := MakeHostingDotConfig(server, servers, serverParams, dses, 
dss, nil, hdr)
+       cfg, err := MakeHostingDotConfig(server, servers, serverParams, dses, 
dss, nil, &HostingDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -204,7 +204,7 @@ func TestMakeHostingDotConfigTopologiesIgnoreDSS(t 
*testing.T) {
        servers := []Server{*server}
        dss := makeDSS(servers, dses)
 
-       cfg, err := MakeHostingDotConfig(server, servers, serverParams, dses, 
dss, topologies, hdr)
+       cfg, err := MakeHostingDotConfig(server, servers, serverParams, dses, 
dss, topologies, &HostingDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/ipallowdotconfig.go 
b/lib/go-atscfg/ipallowdotconfig.go
index 827b793..ab45f6e 100644
--- a/lib/go-atscfg/ipallowdotconfig.go
+++ b/lib/go-atscfg/ipallowdotconfig.go
@@ -44,6 +44,14 @@ const DefaultCoalesceNumberV4 = 5
 const DefaultCoalesceMaskLenV6 = 48
 const DefaultCoalesceNumberV6 = 5
 
+// IPAllowDotConfigOpts contains settings to configure generation options.
+type IPAllowDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeIPAllowDotConfig creates the ip_allow.config ATS config file.
 // The childServers is a list of servers which are children for this Mid-tier 
server. This should be empty for Edge servers.
 // More specifically, it should be the list of edges whose cachegroup's 
parent_cachegroup or secondary_parent_cachegroup is the cachegroup of this Mid 
server.
@@ -53,8 +61,11 @@ func MakeIPAllowDotConfig(
        servers []Server,
        cacheGroups []tc.CacheGroupNullable,
        topologies []tc.Topology,
-       hdrComment string,
+       opt *IPAllowDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &IPAllowDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Cachegroup == nil {
@@ -310,7 +321,7 @@ func MakeIPAllowDotConfig(
                })
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
        for _, al := range ipAllowDat {
                text += `src_ip=` + al.Src + ` action=` + al.Action + ` 
method=` + al.Method + "\n"
        }
diff --git a/lib/go-atscfg/ipallowdotconfig_test.go 
b/lib/go-atscfg/ipallowdotconfig_test.go
index c69e5e1..eaf5e0d 100644
--- a/lib/go-atscfg/ipallowdotconfig_test.go
+++ b/lib/go-atscfg/ipallowdotconfig_test.go
@@ -78,7 +78,7 @@ func TestMakeIPAllowDotConfig(t *testing.T) {
 
        topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, 
&IPAllowDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -176,7 +176,7 @@ func TestMakeIPAllowDotConfigEdge(t *testing.T) {
 
        topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, 
&IPAllowDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -262,7 +262,7 @@ func TestMakeIPAllowDotConfigNonDefaultV6Number(t 
*testing.T) {
 
        topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, 
&IPAllowDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -368,7 +368,7 @@ func TestMakeIPAllowDotConfigTopologies(t *testing.T) {
 
        //      topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotConfig(params, sv, svs, cgs, topologies, 
&IPAllowDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/ipallowdotyaml.go b/lib/go-atscfg/ipallowdotyaml.go
index 444a3fe..e2b7663 100644
--- a/lib/go-atscfg/ipallowdotyaml.go
+++ b/lib/go-atscfg/ipallowdotyaml.go
@@ -48,6 +48,14 @@ const LineCommentIPAllowDotYAML = LineCommentHash
 const MethodPush = `PUSH`
 const MethodPurge = `PURGE`
 
+// AStatsDotConfigOpts contains settings to configure generation options.
+type IPAllowDotYAMLOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeIPAllowDotYAML creates the ip_allow.yaml ATS 9+ config file.
 func MakeIPAllowDotYAML(
        serverParams []tc.Parameter,
@@ -55,8 +63,11 @@ func MakeIPAllowDotYAML(
        servers []Server,
        cacheGroups []tc.CacheGroupNullable,
        topologies []tc.Topology,
-       hdrComment string,
+       opt *IPAllowDotYAMLOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &IPAllowDotYAMLOpts{}
+       }
        warnings := []string{}
 
        if server.Cachegroup == nil {
@@ -312,7 +323,7 @@ func MakeIPAllowDotYAML(
                })
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
        text += `
 ip_allow:`
        for _, al := range ipAllowDat {
diff --git a/lib/go-atscfg/ipallowdotyaml_test.go 
b/lib/go-atscfg/ipallowdotyaml_test.go
index 5f64804..3cbdbe0 100644
--- a/lib/go-atscfg/ipallowdotyaml_test.go
+++ b/lib/go-atscfg/ipallowdotyaml_test.go
@@ -78,7 +78,7 @@ func TestMakeIPAllowDotYAML(t *testing.T) {
 
        topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, 
&IPAllowDotYAMLOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -182,7 +182,7 @@ func TestMakeIPAllowDotYAMLEdge(t *testing.T) {
 
        topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, 
&IPAllowDotYAMLOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -268,7 +268,7 @@ func TestMakeIPAllowDotYAMLNonDefaultV6Number(t *testing.T) 
{
 
        topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, 
&IPAllowDotYAMLOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -374,7 +374,7 @@ func TestMakeIPAllowDotYAMLTopologies(t *testing.T) {
 
        //      topologies := []tc.Topology{}
 
-       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, hdr)
+       cfg, err := MakeIPAllowDotYAML(params, sv, svs, cgs, topologies, 
&IPAllowDotYAMLOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/loggingdotconfig.go 
b/lib/go-atscfg/loggingdotconfig.go
index bbd559c..24878c9 100644
--- a/lib/go-atscfg/loggingdotconfig.go
+++ b/lib/go-atscfg/loggingdotconfig.go
@@ -33,13 +33,24 @@ const LoggingFileName = "logging.config"
 const ContentTypeLoggingDotConfig = ContentTypeTextASCII
 const LineCommentLoggingDotConfig = LineCommentHash
 
+// LoggingDotConfigOpts contains settings to configure generation options.
+type LoggingDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeStorageDotConfig creates storage.config for a given ATS Profile.
 // The paramData is the map of parameter names to values, for all parameters 
assigned to the given profile, with the config_file "storage.config".
 func MakeLoggingDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrCommentTxt string,
+       opt *LoggingDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &LoggingDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -49,7 +60,7 @@ func MakeLoggingDotConfig(
        paramData, paramWarns := paramsToMap(filterParams(serverParams, 
LoggingFileName, "", "", "location"))
        warnings = append(warnings, paramWarns...)
 
-       hdrComment := makeHdrComment(hdrCommentTxt)
+       hdrComment := makeHdrComment(opt.HdrComment)
        // This is an LUA file, so we need to massage the header a bit for LUA 
commenting.
        hdrComment = strings.Replace(hdrComment, `# `, ``, -1)
        hdrComment = strings.Replace(hdrComment, "\n", ``, -1)
diff --git a/lib/go-atscfg/loggingdotconfig_test.go 
b/lib/go-atscfg/loggingdotconfig_test.go
index 634aa5d..8c24021 100644
--- a/lib/go-atscfg/loggingdotconfig_test.go
+++ b/lib/go-atscfg/loggingdotconfig_test.go
@@ -40,7 +40,7 @@ func TestMakeLoggingDotConfig(t *testing.T) {
                "LogObject.Invalid":        "ShouldNotBeHere",
        })
 
-       cfg, err := MakeLoggingDotConfig(server, params, hdrComment)
+       cfg, err := MakeLoggingDotConfig(server, params, 
&LoggingDotConfigOpts{HdrComment: hdrComment})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/loggingdotyaml.go b/lib/go-atscfg/loggingdotyaml.go
index 34063c2..aa05a8a 100644
--- a/lib/go-atscfg/loggingdotyaml.go
+++ b/lib/go-atscfg/loggingdotyaml.go
@@ -31,11 +31,22 @@ const LoggingYAMLFileName = "logging.yaml"
 const ContentTypeLoggingDotYAML = "application/yaml; charset=us-ascii" // Note 
YAML has no IANA standard mime type. This is one of several common usages, and 
is likely to be the standardized value. If you're reading this, please check 
IANA to see if YAML has been added, and change this to the IANA definition if 
so. Also note we include 'charset=us-ascii' because YAML is commonly UTF-8, but 
ATS is likely to be unable to handle UTF.
 const LineCommentLoggingDotYAML = LineCommentHash
 
+// LoggingDotYAMLOpts contains settings to configure generation options.
+type LoggingDotYAMLOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeLoggingDotYAML(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opts *LoggingDotYAMLOpts,
 ) (Cfg, error) {
+       if opts == nil {
+               opts = &LoggingDotYAMLOpts{}
+       }
        warnings := []string{}
        requiredIndent := 0
 
@@ -46,7 +57,7 @@ func MakeLoggingDotYAML(
        paramData, paramWarns := paramsToMap(filterParams(serverParams, 
LoggingYAMLFileName, "", "", "location"))
        warnings = append(warnings, paramWarns...)
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opts.HdrComment)
 
        version, vWarn := getATSMajorVersion(serverParams)
        warnings = append(warnings, vWarn...)
diff --git a/lib/go-atscfg/loggingdotyaml_test.go 
b/lib/go-atscfg/loggingdotyaml_test.go
index 693e51d..0a0a132 100644
--- a/lib/go-atscfg/loggingdotyaml_test.go
+++ b/lib/go-atscfg/loggingdotyaml_test.go
@@ -43,7 +43,7 @@ func TestMakeLoggingDotYAML(t *testing.T) {
                "LogObject.Invalid":        "ShouldNotBeHere",
        })
 
-       cfg, err := MakeLoggingDotYAML(server, params, hdr)
+       cfg, err := MakeLoggingDotYAML(server, params, 
&LoggingDotYAMLOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -103,7 +103,7 @@ func TestMakeLoggingDotYAMLMultiFormat(t *testing.T) {
        server := makeGenericServer()
        server.Profile = &profileName
 
-       cfg, err := MakeLoggingDotYAML(server, paramData, hdr)
+       cfg, err := MakeLoggingDotYAML(server, paramData, 
&LoggingDotYAMLOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/logsdotxml.go b/lib/go-atscfg/logsdotxml.go
index b02ae29..a493821 100644
--- a/lib/go-atscfg/logsdotxml.go
+++ b/lib/go-atscfg/logsdotxml.go
@@ -31,11 +31,22 @@ const ContentTypeLogsDotXML = `text/xml`
 
 const LineCommentLogsDotXML = `<!--`
 
+// LogsXMLDotConfigOpts contains settings to configure generation options.
+type LogsXMLDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeLogsXMLDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrCommentTxt string,
+       opt *LogsXMLDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &LogsXMLDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -48,7 +59,7 @@ func MakeLogsXMLDotConfig(
        // Note LineCommentLogsDotXML must be a single-line comment!
        // But this file doesn't have a single-line format, so we use <!-- for 
the header and promise it's on a single line
        // Note! if this file is ever changed to have multi-line comments, 
LineCommentLogsDotXML will have to be changed to the empty string.
-       hdrComment := makeHdrComment(hdrCommentTxt)
+       hdrComment := makeHdrComment(opt.HdrComment)
        hdrComment = strings.Replace(hdrComment, `# `, ``, -1)
        hdrComment = strings.Replace(hdrComment, "\n", ``, -1)
        text := "<!-- " + hdrComment + " -->\n"
diff --git a/lib/go-atscfg/logsdotxml_test.go b/lib/go-atscfg/logsdotxml_test.go
index 8654d28..8bde2e6 100644
--- a/lib/go-atscfg/logsdotxml_test.go
+++ b/lib/go-atscfg/logsdotxml_test.go
@@ -39,7 +39,7 @@ func TestMakeLogsXMLDotConfig(t *testing.T) {
        server := makeGenericServer()
        server.Profile = &profileName
 
-       cfg, err := MakeLogsXMLDotConfig(server, paramData, hdr)
+       cfg, err := MakeLogsXMLDotConfig(server, paramData, 
&LogsXMLDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/meta.go b/lib/go-atscfg/meta.go
index 8a51448..d04af3a 100644
--- a/lib/go-atscfg/meta.go
+++ b/lib/go-atscfg/meta.go
@@ -32,6 +32,10 @@ type CfgMeta struct {
        Path string
 }
 
+// ConfigFilesListOpts contains settings to configure generation options.
+type ConfigFilesListOpts struct {
+}
+
 // MakeMetaObj returns the list of config files, any warnings, and any errors.
 func MakeConfigFilesList(
        configDir string,
@@ -42,7 +46,11 @@ func MakeConfigFilesList(
        globalParams []tc.Parameter,
        cacheGroupArr []tc.CacheGroupNullable,
        topologies []tc.Topology,
+       opt *ConfigFilesListOpts,
 ) ([]CfgMeta, []string, error) {
+       if opt == nil {
+               opt = &ConfigFilesListOpts{}
+       }
        warnings := []string{}
 
        if server.Cachegroup == nil {
diff --git a/lib/go-atscfg/meta_test.go b/lib/go-atscfg/meta_test.go
index 831a26a..45355bb 100644
--- a/lib/go-atscfg/meta_test.go
+++ b/lib/go-atscfg/meta_test.go
@@ -86,7 +86,7 @@ func TestMakeMetaConfig(t *testing.T) {
                makeLocationParam("external.config"),
        }
 
-       cfg, _, err := MakeConfigFilesList(cfgPath, server, serverParams, 
deliveryServices, dss, globalParams, cgs, topologies)
+       cfg, _, err := MakeConfigFilesList(cfgPath, server, serverParams, 
deliveryServices, dss, globalParams, cgs, topologies, &ConfigFilesListOpts{})
        if err != nil {
                t.Fatalf("MakeConfigFilesList: " + err.Error())
        }
@@ -184,7 +184,7 @@ func TestMakeMetaConfig(t *testing.T) {
        }
 
        server.Type = "MID"
-       cfg, _, err = MakeConfigFilesList(cfgPath, server, serverParams, 
deliveryServices, dss, globalParams, cgs, topologies)
+       cfg, _, err = MakeConfigFilesList(cfgPath, server, serverParams, 
deliveryServices, dss, globalParams, cgs, topologies, &ConfigFilesListOpts{})
        if err != nil {
                t.Fatalf("MakeConfigFilesList: " + err.Error())
        }
diff --git a/lib/go-atscfg/packages.go b/lib/go-atscfg/packages.go
index b7bf448..c6e4b29 100644
--- a/lib/go-atscfg/packages.go
+++ b/lib/go-atscfg/packages.go
@@ -32,11 +32,19 @@ const PackagesParamConfigFile = `package`
 const ContentTypePackages = ContentTypeTextASCII
 const LineCommentPackages = ""
 
+// PackagesOpts contains settings to configure generation options.
+type PackagesOpts struct {
+}
+
 // MakePackages returns the 'packages' ATS config file endpoint.
 // This is a JSON object, and should be served with an 'application/json' 
Content-Type.
 func MakePackages(
        serverParams []tc.Parameter,
+       opts *PackagesOpts,
 ) (Cfg, error) {
+       if opts == nil {
+               opts = &PackagesOpts{}
+       }
        warnings := []string{}
 
        params := paramsToMultiMap(filterParams(serverParams, 
PackagesParamConfigFile, "", "", ""))
diff --git a/lib/go-atscfg/packages_test.go b/lib/go-atscfg/packages_test.go
index 0627bb7..dad4cad 100644
--- a/lib/go-atscfg/packages_test.go
+++ b/lib/go-atscfg/packages_test.go
@@ -31,7 +31,7 @@ func TestMakePackages(t *testing.T) {
        }
        paramData := makeParamsFromMapArr("serverProfile", LogsXMLFileName, 
params)
 
-       cfg, err := MakePackages(paramData)
+       cfg, err := MakePackages(paramData, nil)
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/parentdotconfig.go b/lib/go-atscfg/parentdotconfig.go
index c24f795..1ade8d8 100644
--- a/lib/go-atscfg/parentdotconfig.go
+++ b/lib/go-atscfg/parentdotconfig.go
@@ -93,8 +93,11 @@ func MakeParentDotConfig(
        cacheGroupArr []tc.CacheGroupNullable,
        dss []DeliveryServiceServer,
        cdn *tc.CDN,
-       opt ParentConfigOpts,
+       opt *ParentConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &ParentConfigOpts{}
+       }
        warnings := []string{}
 
        if server.HostName == nil || *server.HostName == "" {
diff --git a/lib/go-atscfg/parentdotconfig_test.go 
b/lib/go-atscfg/parentdotconfig_test.go
index 7e6718d..ef47b20 100644
--- a/lib/go-atscfg/parentdotconfig_test.go
+++ b/lib/go-atscfg/parentdotconfig_test.go
@@ -28,7 +28,7 @@ import (
 )
 
 func TestMakeParentDotConfig(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -146,7 +146,7 @@ func TestMakeParentDotConfig(t *testing.T) {
 }
 
 func TestMakeParentDotConfigCapabilities(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -290,7 +290,7 @@ func TestMakeParentDotConfigCapabilities(t *testing.T) {
 }
 
 func TestMakeParentDotConfigMSOSecondaryParent(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -405,7 +405,7 @@ func TestMakeParentDotConfigMSOSecondaryParent(t 
*testing.T) {
 }
 
 func TestMakeParentDotConfigTopologies(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -547,7 +547,7 @@ func TestMakeParentDotConfigTopologies(t *testing.T) {
 
 // TestMakeParentDotConfigNotInTopologies tests when a given edge is NOT in a 
Topology, that it doesn't add a remap line.
 func TestMakeParentDotConfigNotInTopologies(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -677,7 +677,7 @@ func TestMakeParentDotConfigNotInTopologies(t *testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesCapabilities(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0.ID = util.IntPtr(42)
@@ -835,7 +835,7 @@ func TestMakeParentDotConfigTopologiesCapabilities(t 
*testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesOmitOfflineParents(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -978,7 +978,7 @@ func TestMakeParentDotConfigTopologiesOmitOfflineParents(t 
*testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesOmitDifferentCDNParents(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -1122,7 +1122,7 @@ func 
TestMakeParentDotConfigTopologiesOmitDifferentCDNParents(t *testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesMSO(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds1 := makeParentDS()
        ds1.ID = util.IntPtr(43)
@@ -1254,7 +1254,7 @@ func TestMakeParentDotConfigTopologiesMSO(t *testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesMSOWithCapabilities(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds1 := makeParentDS()
        ds1.ID = util.IntPtr(43)
@@ -1395,7 +1395,7 @@ func 
TestMakeParentDotConfigTopologiesMSOWithCapabilities(t *testing.T) {
 }
 
 func TestMakeParentDotConfigMSOWithCapabilities(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds1 := makeParentDS()
        ds1.ID = util.IntPtr(43)
@@ -1522,7 +1522,7 @@ func TestMakeParentDotConfigMSOWithCapabilities(t 
*testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesMSOParams(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds1 := makeParentDS()
        ds1.ID = util.IntPtr(43)
@@ -1698,7 +1698,7 @@ func TestMakeParentDotConfigTopologiesMSOParams(t 
*testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesParams(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds1 := makeParentDS()
        ds1.ID = util.IntPtr(43)
@@ -1874,7 +1874,7 @@ func TestMakeParentDotConfigTopologiesParams(t 
*testing.T) {
 }
 
 func TestMakeParentDotConfigTopologiesNonStandardServerTypes(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -2018,7 +2018,7 @@ func 
TestMakeParentDotConfigTopologiesNonStandardServerTypes(t *testing.T) {
 
 func TestMakeParentDotConfigSecondaryMode(t *testing.T) {
 
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -2179,7 +2179,7 @@ func TestMakeParentDotConfigSecondaryMode(t *testing.T) {
 }
 
 func TestMakeParentDotConfigNoSecondaryMode(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -2341,7 +2341,7 @@ func TestMakeParentDotConfigNoSecondaryMode(t *testing.T) 
{
 }
 
 func TestMakeParentDotConfigComments(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: true, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: true, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -2462,7 +2462,7 @@ func TestMakeParentDotConfigComments(t *testing.T) {
 }
 
 func TestMakeParentDotConfigCommentTopology(t *testing.T) {
-       hdr := ParentConfigOpts{AddComments: true, HdrComment: 
"myHeaderComment"}
+       hdr := &ParentConfigOpts{AddComments: true, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
diff --git a/lib/go-atscfg/plugindotconfig.go b/lib/go-atscfg/plugindotconfig.go
index 4bdf7b2..1d2d43d 100644
--- a/lib/go-atscfg/plugindotconfig.go
+++ b/lib/go-atscfg/plugindotconfig.go
@@ -28,11 +28,22 @@ const PluginFileName = "plugin.config"
 const ContentTypePluginDotConfig = ContentTypeTextASCII
 const LineCommentPluginDotConfig = LineCommentHash
 
+// PluginDotConfigOpts contains settings to configure generation options.
+type PluginDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakePluginDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *PluginDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &PluginDotConfigOpts{}
+       }
        warnings := []string{}
        if server.Profile == nil {
                return Cfg{}, makeErr(warnings, "server profile missing")
@@ -41,7 +52,7 @@ func MakePluginDotConfig(
        paramData, paramWarns := paramsToMap(filterParams(serverParams, 
PluginFileName, "", "", "location"))
        warnings = append(warnings, paramWarns...)
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        txt := genericProfileConfig(paramData, PluginSeparator)
        if txt == "" {
                txt = "\n" // If no params exist, don't send "not found," but 
an empty file. We know the profile exists.
diff --git a/lib/go-atscfg/plugindotconfig_test.go 
b/lib/go-atscfg/plugindotconfig_test.go
index 9387054..78aa125 100644
--- a/lib/go-atscfg/plugindotconfig_test.go
+++ b/lib/go-atscfg/plugindotconfig_test.go
@@ -37,7 +37,7 @@ func TestMakePluginDotConfig(t *testing.T) {
        server := makeGenericServer()
        server.Profile = &profileName
 
-       cfg, err := MakePluginDotConfig(server, paramData, hdr)
+       cfg, err := MakePluginDotConfig(server, paramData, 
&PluginDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/recordsdotconfig.go 
b/lib/go-atscfg/recordsdotconfig.go
index a09913d..6b75d43 100644
--- a/lib/go-atscfg/recordsdotconfig.go
+++ b/lib/go-atscfg/recordsdotconfig.go
@@ -41,14 +41,21 @@ type RecordsConfigOpts struct {
        // DNSLocalBindServiceAddr is whether to set the server's service 
addresses
        // as the records.config proxy.config.dns.local_ipv* settings.
        DNSLocalBindServiceAddr bool
+
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
 }
 
 func MakeRecordsDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
-       opt RecordsConfigOpts,
+       opt *RecordsConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &RecordsConfigOpts{}
+       }
        warnings := []string{}
        if server.Profile == nil {
                return Cfg{}, makeErr(warnings, "server profile missing")
@@ -57,7 +64,7 @@ func MakeRecordsDotConfig(
        params, paramWarns := paramsToMap(filterParams(serverParams, 
RecordsFileName, "", "", "location"))
        warnings = append(warnings, paramWarns...)
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        txt := genericProfileConfig(params, RecordsSeparator)
        if txt == "" {
                txt = "\n" // If no params exist, don't send "not found," but 
an empty file. We know the profile exists.
@@ -78,7 +85,7 @@ func MakeRecordsDotConfig(
 
 // addRecordsDotConfigOverrides modifies the records.config text and adds any 
overrides.
 // Returns the modified text and any warnings.
-func addRecordsDotConfigOverrides(txt string, server *Server, opt 
RecordsConfigOpts) (string, []string) {
+func addRecordsDotConfigOverrides(txt string, server *Server, opt 
*RecordsConfigOpts) (string, []string) {
        warnings := []string{}
        txt, ipWarns := addRecordsDotConfigOutgoingIP(txt, server)
        warnings = append(warnings, ipWarns...)
diff --git a/lib/go-atscfg/recordsdotconfig_test.go 
b/lib/go-atscfg/recordsdotconfig_test.go
index cd19c44..95f5106 100644
--- a/lib/go-atscfg/recordsdotconfig_test.go
+++ b/lib/go-atscfg/recordsdotconfig_test.go
@@ -46,9 +46,10 @@ func TestMakeRecordsDotConfig(t *testing.T) {
        ip6CIDR := ip6Str + "/48" // set the ip to a cidr, to make sure addr 
logic removes it
        setIP6(server, ip6CIDR)
        server.Profile = util.StrPtr(profileName)
-       opt := RecordsConfigOpts{}
+       opt := &RecordsConfigOpts{}
        opt.DNSLocalBindServiceAddr = true
-       cfg, err := MakeRecordsDotConfig(server, paramData, hdr, opt)
+       opt.HdrComment = hdr
+       cfg, err := MakeRecordsDotConfig(server, paramData, opt)
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/regexremapdotconfig.go 
b/lib/go-atscfg/regexremapdotconfig.go
index 6e27e7f..bb21cc7 100644
--- a/lib/go-atscfg/regexremapdotconfig.go
+++ b/lib/go-atscfg/regexremapdotconfig.go
@@ -28,12 +28,23 @@ import (
 const ContentTypeRegexRemapDotConfig = ContentTypeTextASCII
 const LineCommentRegexRemapDotConfig = LineCommentHash
 
+// RegexRemapDotConfigOpts contains settings to configure generation options.
+type RegexRemapDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeRegexRemapDotConfig(
        fileName string,
        server *Server,
        deliveryServices []DeliveryService,
-       hdrComment string,
+       opt *RegexRemapDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &RegexRemapDotConfigOpts{}
+       }
        warnings := []string{}
        if server.CDNName == nil {
                return Cfg{}, makeErr(warnings, "server CDNName missing")
@@ -68,7 +79,7 @@ func MakeRegexRemapDotConfig(
        dses, dsWarns := deliveryServicesToCDNDSes([]DeliveryService{ds})
        warnings = append(warnings, dsWarns...)
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        cdnDS, ok := dses[tc.DeliveryServiceName(dsName)]
        if !ok {
diff --git a/lib/go-atscfg/regexremapdotconfig_test.go 
b/lib/go-atscfg/regexremapdotconfig_test.go
index 1390a9f..090eaa4 100644
--- a/lib/go-atscfg/regexremapdotconfig_test.go
+++ b/lib/go-atscfg/regexremapdotconfig_test.go
@@ -44,7 +44,7 @@ func TestMakeRegexRemapDotConfig(t *testing.T) {
 
        dses := []DeliveryService{*ds}
 
-       cfg, err := MakeRegexRemapDotConfig(fileName, server, dses, hdr)
+       cfg, err := MakeRegexRemapDotConfig(fileName, server, dses, 
&RegexRemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -93,7 +93,7 @@ func TestMakeRegexRemapDotConfigUnusedDS(t *testing.T) {
 
        dses := []DeliveryService{*ds, *ds1}
 
-       cfg, err := MakeRegexRemapDotConfig(fileName, server, dses, hdr)
+       cfg, err := MakeRegexRemapDotConfig(fileName, server, dses, 
&RegexRemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -146,7 +146,7 @@ func TestMakeRegexRemapDotConfigReplaceReturns(t 
*testing.T) {
 
        dses := []DeliveryService{*ds}
 
-       cfg, err := MakeRegexRemapDotConfig(fileName, server, dses, hdr)
+       cfg, err := MakeRegexRemapDotConfig(fileName, server, dses, 
&RegexRemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/regexrevalidatedotconfig.go 
b/lib/go-atscfg/regexrevalidatedotconfig.go
index 594a658..f20d78b 100644
--- a/lib/go-atscfg/regexrevalidatedotconfig.go
+++ b/lib/go-atscfg/regexrevalidatedotconfig.go
@@ -45,13 +45,24 @@ const RegexRevalidateMinTTL = time.Hour
 const ContentTypeRegexRevalidateDotConfig = ContentTypeTextASCII
 const LineCommentRegexRevalidateDotConfig = LineCommentHash
 
+// RegexRevalidateDotConfigOpts contains settings to configure generation 
options.
+type RegexRevalidateDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeRegexRevalidateDotConfig(
        server *Server,
        deliveryServices []DeliveryService,
        globalParams []tc.Parameter,
        jobs []tc.InvalidationJob,
-       hdrComment string,
+       opt *RegexRevalidateDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &RegexRevalidateDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.CDNName == nil {
@@ -98,7 +109,7 @@ func MakeRegexRevalidateDotConfig(
        cfgJobs, jobWarns := filterJobs(dsJobs, maxReval, RegexRevalidateMinTTL)
        warnings = append(warnings, jobWarns...)
 
-       txt := makeHdrComment(hdrComment)
+       txt := makeHdrComment(opt.HdrComment)
        for _, job := range cfgJobs {
                txt += job.AssetURL + " " + 
strconv.FormatInt(job.PurgeEnd.Unix(), 10)
                if job.Type != "" {
diff --git a/lib/go-atscfg/regexrevalidatedotconfig_test.go 
b/lib/go-atscfg/regexrevalidatedotconfig_test.go
index f89a24f..add0439 100644
--- a/lib/go-atscfg/regexrevalidatedotconfig_test.go
+++ b/lib/go-atscfg/regexrevalidatedotconfig_test.go
@@ -84,7 +84,7 @@ func TestMakeRegexRevalidateDotConfig(t *testing.T) {
                },
        }
 
-       cfg, err := MakeRegexRevalidateDotConfig(server, dses, params, jobs, 
hdr)
+       cfg, err := MakeRegexRevalidateDotConfig(server, dses, params, jobs, 
&RegexRevalidateDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/remapdotconfig.go b/lib/go-atscfg/remapdotconfig.go
index 1a70cb1..08f8886 100644
--- a/lib/go-atscfg/remapdotconfig.go
+++ b/lib/go-atscfg/remapdotconfig.go
@@ -36,6 +36,14 @@ const LineCommentRemapDotConfig = LineCommentHash
 
 const RemapConfigRangeDirective = `__RANGE_DIRECTIVE__`
 
+// RemapDotConfigOpts contains settings to configure generation options.
+type RemapDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeRemapDotConfig(
        server *Server,
        unfilteredDSes []DeliveryService,
@@ -48,8 +56,11 @@ func MakeRemapDotConfig(
        cacheGroupArr []tc.CacheGroupNullable,
        serverCapabilities map[int]map[ServerCapability]struct{},
        dsRequiredCapabilities map[int]map[ServerCapability]struct{},
-       hdrComment string,
+       opt *RemapDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &RemapDotConfigOpts{}
+       }
        warnings := []string{}
        if server.HostName == nil {
                return Cfg{}, makeErr(warnings, "server HostName missing")
@@ -84,7 +95,7 @@ func MakeRemapDotConfig(
 
        nameTopologies := makeTopologyNameMap(topologies)
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        txt := ""
        typeWarns := []string{}
        if tc.CacheTypeFromString(server.Type) == tc.CacheTypeMid {
diff --git a/lib/go-atscfg/remapdotconfig_test.go 
b/lib/go-atscfg/remapdotconfig_test.go
index b13d3c0..3ec89d5 100644
--- a/lib/go-atscfg/remapdotconfig_test.go
+++ b/lib/go-atscfg/remapdotconfig_test.go
@@ -129,7 +129,8 @@ func TestMakeRemapDotConfig0(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
+
        if err != nil {
                t.Fatal(err)
        }
@@ -246,7 +247,7 @@ func TestMakeRemapDotConfigMidLiveLocalExcluded(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -346,7 +347,7 @@ func TestMakeRemapDotConfigMid(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -460,7 +461,8 @@ func TestMakeRemapDotConfigNilOrigin(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
+
        if err != nil {
                t.Fatal(err)
        }
@@ -560,7 +562,8 @@ func TestMakeRemapDotConfigEmptyOrigin(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
+
        if err != nil {
                t.Fatal(err)
        }
@@ -698,7 +701,7 @@ func TestMakeRemapDotConfigDuplicateOrigins(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -797,7 +800,7 @@ func TestMakeRemapDotConfigNilMidRewrite(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -898,7 +901,7 @@ func TestMakeRemapDotConfigMidHasNoEdgeRewrite(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -1012,7 +1015,7 @@ func TestMakeRemapDotConfigMidProfileCacheKey(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -1162,7 +1165,7 @@ func TestMakeRemapDotConfigMidBgFetchHandling(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -1278,7 +1281,7 @@ func TestMakeRemapDotConfigMidRangeRequestHandling(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -1418,7 +1421,7 @@ func 
TestMakeRemapDotConfigMidSlicePluginRangeRequestHandling(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -1559,7 +1562,7 @@ func TestMakeRemapDotConfigAnyMap(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -1956,7 +1959,7 @@ func TestMakeRemapDotConfigEdgeMissingRemapData(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2060,7 +2063,7 @@ func TestMakeRemapDotConfigEdgeHostRegexReplacement(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2181,7 +2184,7 @@ func TestMakeRemapDotConfigEdgeHostRegexReplacementHTTP(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2302,7 +2305,7 @@ func 
TestMakeRemapDotConfigEdgeHostRegexReplacementHTTPS(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2423,7 +2426,7 @@ func 
TestMakeRemapDotConfigEdgeHostRegexReplacementHTTPToHTTPS(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2544,7 +2547,7 @@ func 
TestMakeRemapDotConfigEdgeRemapUnderscoreHTTPReplace(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2667,7 +2670,7 @@ func TestMakeRemapDotConfigEdgeDSCPRemap(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2790,7 +2793,7 @@ func TestMakeRemapDotConfigEdgeNoDSCPRemap(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -2913,7 +2916,7 @@ func TestMakeRemapDotConfigEdgeHeaderRewrite(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3040,7 +3043,7 @@ func TestMakeRemapDotConfigEdgeHeaderRewriteEmpty(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3167,7 +3170,7 @@ func TestMakeRemapDotConfigEdgeHeaderRewriteNil(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3300,7 +3303,7 @@ func TestMakeRemapDotConfigEdgeSigningURLSig(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3427,7 +3430,7 @@ func TestMakeRemapDotConfigEdgeSigningURISigning(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3549,7 +3552,7 @@ func TestMakeRemapDotConfigEdgeSigningNone(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3671,7 +3674,7 @@ func TestMakeRemapDotConfigEdgeSigningEmpty(t *testing.T) 
{
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3793,7 +3796,7 @@ func TestMakeRemapDotConfigEdgeSigningWrong(t *testing.T) 
{
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -3915,7 +3918,7 @@ func TestMakeRemapDotConfigEdgeQStringDropAtEdge(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4035,7 +4038,7 @@ func TestMakeRemapDotConfigEdgeQStringIgnorePassUp(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4170,7 +4173,7 @@ func 
TestMakeRemapDotConfigEdgeQStringIgnorePassUpWithCacheKeyParameter(t *testi
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4297,7 +4300,7 @@ func 
TestMakeRemapDotConfigEdgeQStringIgnorePassUpCacheURLParamCacheURL(t *testi
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4432,7 +4435,7 @@ func TestMakeRemapDotConfigEdgeCacheKeyParams(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4558,7 +4561,7 @@ func TestMakeRemapDotConfigEdgeRegexRemap(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4681,7 +4684,7 @@ func TestMakeRemapDotConfigEdgeRegexRemapEmpty(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4800,7 +4803,7 @@ func TestMakeRemapDotConfigEdgeRangeRequestNil(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4906,10 +4909,26 @@ func TestMakeRemapDotConfigEdgeRangeRequestDontCache(t 
*testing.T) {
 
        remapConfigParams := []tc.Parameter{
                tc.Parameter{
+                       ConfigFile: "cacheurl.config",
+                       Profiles:   []byte(`["not-dsprofile"]`),
+               },
+               tc.Parameter{
+                       Name:       "cachekeykey",
+                       ConfigFile: "cachekey.config",
+                       Value:      "cachekeyval",
+                       Profiles:   []byte(`["dsprofile"]`),
+               },
+               tc.Parameter{
                        Name:       "not_location",
                        ConfigFile: "cachekey.config",
                        Value:      "notinconfig",
-                       Profiles:   []byte(`["global"]`),
+                       Profiles:   []byte(`["dsprofile"]`),
+               },
+               tc.Parameter{
+                       Name:       "not_location",
+                       ConfigFile: "cachekey.config",
+                       Value:      "notinconfig",
+                       Profiles:   []byte(`["dsprofile"]`),
                },
        }
 
@@ -4923,7 +4942,7 @@ func TestMakeRemapDotConfigEdgeRangeRequestDontCache(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -4945,13 +4964,21 @@ func TestMakeRemapDotConfigEdgeRangeRequestDontCache(t 
*testing.T) {
                t.Errorf("expected to start with 'map', actual '%v'", txt)
        }
 
-       if strings.Contains(remapLine, "background_fetch.so") {
-               t.Errorf("expected remap on edge server with ds dont-cache 
range request handling to not contain background fetch plugin, actual '%v'", 
txt)
+       if !strings.Contains(remapLine, "cachekey.so") {
+               t.Errorf("expected remap on edge server with ds cache key 
params to contain cachekey plugin, actual '%v'", txt)
        }
 
-       if strings.Contains(remapLine, "cache_range_requests.so") {
-               t.Errorf("expected remap on edge server with ds dont-cache 
range request handling to not contain cache_range_requests plugin, actual 
'%v'", txt)
+       if !strings.Contains(remapLine, "cachekeykey") {
+               t.Errorf("expected remap on edge server with ds cache key 
params to contain param keys, actual '%v'", txt)
+       }
+       if !strings.Contains(remapLine, "cachekeyval") {
+               t.Errorf("expected remap on edge server with ds cache key 
params to contain param vals, actual '%v'", txt)
        }
+
+       if strings.Contains(remapLine, "shouldnotinclude") {
+               t.Errorf("expected remap on edge server to not include 
different ds cache key params, actual '%v'", txt)
+       }
+
 }
 
 func TestMakeRemapDotConfigEdgeRangeRequestBGFetch(t *testing.T) {
@@ -5058,7 +5085,7 @@ func TestMakeRemapDotConfigEdgeRangeRequestBGFetch(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -5191,7 +5218,7 @@ func TestMakeRemapDotConfigEdgeRangeRequestSlice(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -5325,7 +5352,7 @@ func TestMakeRemapDotConfigMidRangeRequestSlicePparam(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -5469,7 +5496,7 @@ func TestMakeRemapDotConfigEdgeRangeRequestSlicePparam(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -5609,7 +5636,7 @@ func TestMakeRemapDotConfigRawRemapRangeDirective(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -5754,7 +5781,7 @@ func 
TestMakeRemapDotConfigRawRemapWithoutRangeDirective(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -5892,7 +5919,7 @@ func TestMakeRemapDotConfigEdgeRangeRequestCache(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6019,7 +6046,7 @@ func TestMakeRemapDotConfigEdgeFQPacingNil(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6138,7 +6165,7 @@ func TestMakeRemapDotConfigEdgeFQPacingNegative(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6257,7 +6284,7 @@ func TestMakeRemapDotConfigEdgeFQPacingZero(t *testing.T) 
{
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6376,7 +6403,7 @@ func TestMakeRemapDotConfigEdgeFQPacingPositive(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6499,7 +6526,7 @@ func TestMakeRemapDotConfigEdgeDNS(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6618,7 +6645,7 @@ func TestMakeRemapDotConfigEdgeDNSNoRoutingName(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6727,7 +6754,7 @@ func TestMakeRemapDotConfigEdgeRegexTypeNil(t *testing.T) 
{
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6841,7 +6868,7 @@ func TestMakeRemapDotConfigNoHeaderRewrite(t *testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -6960,7 +6987,7 @@ func TestMakeRemapDotConfigMidNoHeaderRewrite(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -7079,7 +7106,7 @@ func TestMakeRemapDotConfigMidNoNoCacheRemapLine(t 
*testing.T) {
        serverCapabilities := map[int]map[ServerCapability]struct{}{}
        dsRequiredCapabilities := map[int]map[ServerCapability]struct{}{}
 
-       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, hdr)
+       cfg, err := MakeRemapDotConfig(server, dses, dss, dsRegexes, 
serverParams, cdn, remapConfigParams, topologies, cgs, serverCapabilities, 
dsRequiredCapabilities, &RemapDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/servercachedotconfig.go 
b/lib/go-atscfg/servercachedotconfig.go
index 735bb9d..0bfad5b 100644
--- a/lib/go-atscfg/servercachedotconfig.go
+++ b/lib/go-atscfg/servercachedotconfig.go
@@ -32,8 +32,11 @@ const ServerCacheDotConfigIncludeInactiveDSes = false
 func makeCacheDotConfigMid(
        server *Server,
        deliveryServices []DeliveryService,
-       hdrComment string,
+       opt *CacheDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &CacheDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.HostName == nil {
@@ -56,7 +59,7 @@ func makeCacheDotConfigMid(
                dses[tc.DeliveryServiceName(*ds.XMLID)] = 
serverCacheConfigDS{OrgServerFQDN: *ds.OrgServerFQDN, Type: *ds.Type}
        }
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        lines := []string{}
 
diff --git a/lib/go-atscfg/servercachedotconfig_test.go 
b/lib/go-atscfg/servercachedotconfig_test.go
index 034b90f..9f4eddd 100644
--- a/lib/go-atscfg/servercachedotconfig_test.go
+++ b/lib/go-atscfg/servercachedotconfig_test.go
@@ -56,7 +56,7 @@ func TestMakeServerCacheDotConfig(t *testing.T) {
                makeDS("ds-nocache", "http://ds-nocache.example.test";, 
tc.DSTypeHTTPNoCache),
        }
 
-       cfg, err := makeCacheDotConfigMid(server, dses, hdr)
+       cfg, err := makeCacheDotConfigMid(server, dses, 
&CacheDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/serverunknown.go b/lib/go-atscfg/serverunknown.go
index 9fd6d34..810044e 100644
--- a/lib/go-atscfg/serverunknown.go
+++ b/lib/go-atscfg/serverunknown.go
@@ -28,12 +28,23 @@ import (
 
 const ContentTypeServerUnknownConfig = ContentTypeTextASCII
 
+// ServerUnknownOpts contains settings to configure generation options.
+type ServerUnknownOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeServerUnknown(
        fileName string,
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *ServerUnknownOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &ServerUnknownOpts{}
+       }
        warnings := []string{}
 
        if server.HostName == nil {
@@ -44,7 +55,7 @@ func MakeServerUnknown(
 
        params := paramsToMultiMap(filterParams(serverParams, fileName, "", "", 
""))
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
 
        txt := ""
 
diff --git a/lib/go-atscfg/serverunknown_test.go 
b/lib/go-atscfg/serverunknown_test.go
index 076844e..bb3df80 100644
--- a/lib/go-atscfg/serverunknown_test.go
+++ b/lib/go-atscfg/serverunknown_test.go
@@ -43,7 +43,7 @@ func TestMakeServerUnknown(t *testing.T) {
                "header":     []string{"//hdr"},
        })
 
-       cfg, err := MakeServerUnknown(fileName, server, params, hdr)
+       cfg, err := MakeServerUnknown(fileName, server, params, 
&ServerUnknownOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/setdscpdotconfig.go 
b/lib/go-atscfg/setdscpdotconfig.go
index 287ebef..1de930c 100644
--- a/lib/go-atscfg/setdscpdotconfig.go
+++ b/lib/go-atscfg/setdscpdotconfig.go
@@ -27,11 +27,22 @@ import (
 const ContentTypeSetDSCPDotConfig = ContentTypeTextASCII
 const LineCommentSetDSCPDotConfig = LineCommentHash
 
+// SetDSCPDotConfigOpts contains settings to configure generation options.
+type SetDSCPDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeSetDSCPDotConfig(
        fileName string,
        server *Server,
-       hdrComment string,
+       opt *SetDSCPDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &SetDSCPDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.CDNName == nil {
@@ -43,7 +54,7 @@ func MakeSetDSCPDotConfig(
        dscpNumStr = strings.TrimPrefix(dscpNumStr, "set_dscp_")
        dscpNumStr = strings.TrimSuffix(dscpNumStr, ".config")
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        if _, err := strconv.Atoi(dscpNumStr); err != nil {
                // TODO warn? We don't generally warn for client errors, 
because it can be an attack vector. Provide a more informative error return? 
Return a 404?
diff --git a/lib/go-atscfg/setdscpdotconfig_test.go 
b/lib/go-atscfg/setdscpdotconfig_test.go
index 279339a..6872335 100644
--- a/lib/go-atscfg/setdscpdotconfig_test.go
+++ b/lib/go-atscfg/setdscpdotconfig_test.go
@@ -33,7 +33,7 @@ func TestMakeSetDSCPDotConfig(t *testing.T) {
        hdr := "myHeaderComment"
        fileName := "set_dscp_42.config"
 
-       cfg, err := MakeSetDSCPDotConfig(fileName, server, hdr)
+       cfg, err := MakeSetDSCPDotConfig(fileName, server, 
&SetDSCPDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -58,7 +58,7 @@ func TestMakeSetDSCPDotConfigNonNumber(t *testing.T) {
        hdr := "myHeaderComment"
        fileName := "set_dscp_42a.config"
 
-       cfg, err := MakeSetDSCPDotConfig(fileName, server, hdr)
+       cfg, err := MakeSetDSCPDotConfig(fileName, server, 
&SetDSCPDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/snidotyaml.go b/lib/go-atscfg/snidotyaml.go
index bfa2a28..3fdd504 100644
--- a/lib/go-atscfg/snidotyaml.go
+++ b/lib/go-atscfg/snidotyaml.go
@@ -61,8 +61,11 @@ func MakeSNIDotYAML(
        cacheGroupArr []tc.CacheGroupNullable,
        serverCapabilities map[int]map[ServerCapability]struct{},
        dsRequiredCapabilities map[int]map[ServerCapability]struct{},
-       opt SNIDotYAMLOpts,
+       opt *SNIDotYAMLOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &SNIDotYAMLOpts{}
+       }
        if len(opt.DefaultTLSVersions) == 0 {
                opt.DefaultTLSVersions = DefaultDefaultTLSVersions
        }
diff --git a/lib/go-atscfg/sslmulticertdotconfig.go 
b/lib/go-atscfg/sslmulticertdotconfig.go
index d57cca0..4c5ffa1 100644
--- a/lib/go-atscfg/sslmulticertdotconfig.go
+++ b/lib/go-atscfg/sslmulticertdotconfig.go
@@ -31,11 +31,22 @@ const ContentTypeSSLMultiCertDotConfig = 
ContentTypeTextASCII
 const LineCommentSSLMultiCertDotConfig = LineCommentHash
 const SSLMultiCertConfigFileName = `ssl_multicert.config`
 
+// SSLMultiCertDotConfigOpts contains settings to configure generation options.
+type SSLMultiCertDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeSSLMultiCertDotConfig(
        server *Server,
        deliveryServices []DeliveryService,
-       hdrComment string,
+       opt *SSLMultiCertDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &SSLMultiCertDotConfigOpts{}
+       }
        warnings := []string{}
        if server.CDNName == nil {
                return Cfg{}, makeErr(warnings, "server missing CDNName")
@@ -44,7 +55,7 @@ func MakeSSLMultiCertDotConfig(
        dses, dsWarns := DeliveryServicesToSSLMultiCertDSes(deliveryServices)
        warnings = append(warnings, dsWarns...)
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
 
        dses = GetSSLMultiCertDotConfigDeliveryServices(dses)
 
diff --git a/lib/go-atscfg/sslmulticertdotconfig_test.go 
b/lib/go-atscfg/sslmulticertdotconfig_test.go
index 87fc067..779780d 100644
--- a/lib/go-atscfg/sslmulticertdotconfig_test.go
+++ b/lib/go-atscfg/sslmulticertdotconfig_test.go
@@ -48,7 +48,7 @@ func TestMakeSSLMultiCertDotConfig(t *testing.T) {
                makeDS("my-https-to-http-ds", tc.DSTypeHTTP, 3 /* https to http 
*/, "https://my-https-to-http-ds.example.net";),
        }
 
-       cfg, err := MakeSSLMultiCertDotConfig(server, dses, hdr)
+       cfg, err := MakeSSLMultiCertDotConfig(server, dses, 
&SSLMultiCertDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -92,7 +92,7 @@ func TestMakeSSLMultiCertDotConfigHTTPDeliveryService(t 
*testing.T) {
                makeDS("myds", tc.DSTypeHTTP, 0 /* http */, 
"https://myds.example.net";),
        }
 
-       cfg, err := MakeSSLMultiCertDotConfig(server, dses, hdr)
+       cfg, err := MakeSSLMultiCertDotConfig(server, dses, 
&SSLMultiCertDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/sslservernamedotyaml.go 
b/lib/go-atscfg/sslservernamedotyaml.go
index e156482..538672e 100644
--- a/lib/go-atscfg/sslservernamedotyaml.go
+++ b/lib/go-atscfg/sslservernamedotyaml.go
@@ -115,8 +115,11 @@ func MakeSSLServerNameYAML(
        cacheGroupArr []tc.CacheGroupNullable,
        serverCapabilities map[int]map[ServerCapability]struct{},
        dsRequiredCapabilities map[int]map[ServerCapability]struct{},
-       opt SSLServerNameYAMLOpts,
+       opt *SSLServerNameYAMLOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &SSLServerNameYAMLOpts{}
+       }
        if len(opt.DefaultTLSVersions) == 0 {
                opt.DefaultTLSVersions = DefaultDefaultTLSVersions
        }
diff --git a/lib/go-atscfg/sslservernamedotyaml_test.go 
b/lib/go-atscfg/sslservernamedotyaml_test.go
index 93c1e67..4ce0e4b 100644
--- a/lib/go-atscfg/sslservernamedotyaml_test.go
+++ b/lib/go-atscfg/sslservernamedotyaml_test.go
@@ -28,7 +28,7 @@ import (
 )
 
 func TestMakeSSLServerNameYAML(t *testing.T) {
-       opts := SSLServerNameYAMLOpts{VerboseComments: false, HdrComment: 
"myHeaderComment"}
+       opts := &SSLServerNameYAMLOpts{VerboseComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -147,7 +147,7 @@ func TestMakeSSLServerNameYAML(t *testing.T) {
 }
 
 func TestMakeSSLServerNameYAMLParams(t *testing.T) {
-       opts := SSLServerNameYAMLOpts{VerboseComments: false, HdrComment: 
"myHeaderComment"}
+       opts := &SSLServerNameYAMLOpts{VerboseComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
@@ -279,7 +279,7 @@ func TestMakeSSLServerNameYAMLParams(t *testing.T) {
 }
 
 func TestMakeSSLServerNameYAMLParamInvalid(t *testing.T) {
-       opts := SSLServerNameYAMLOpts{VerboseComments: false, HdrComment: 
"myHeaderComment"}
+       opts := &SSLServerNameYAMLOpts{VerboseComments: false, HdrComment: 
"myHeaderComment"}
 
        ds0 := makeParentDS()
        ds0Type := tc.DSTypeHTTP
diff --git a/lib/go-atscfg/storagedotconfig.go 
b/lib/go-atscfg/storagedotconfig.go
index c37aeb1..1ddd77a 100644
--- a/lib/go-atscfg/storagedotconfig.go
+++ b/lib/go-atscfg/storagedotconfig.go
@@ -31,13 +31,24 @@ const StorageFileName = "storage.config"
 const ContentTypeStorageDotConfig = ContentTypeTextASCII
 const LineCommentStorageDotConfig = LineCommentHash
 
+// StorageDotConfigOpts contains settings to configure generation options.
+type StorageDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeStorageDotConfig creates storage.config for a given ATS Profile.
 // The paramData is the map of parameter names to values, for all parameters 
assigned to the given profile, with the config_file "storage.config".
 func MakeStorageDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *StorageDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &StorageDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -80,7 +91,7 @@ func MakeStorageDotConfig(
        if text == "" {
                text = "\n" // If no params exist, don't send "not found," but 
an empty file. We know the profile exists.
        }
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        text = hdr + text
 
        return Cfg{
diff --git a/lib/go-atscfg/storagedotconfig_test.go 
b/lib/go-atscfg/storagedotconfig_test.go
index 1731540..bbd316b 100644
--- a/lib/go-atscfg/storagedotconfig_test.go
+++ b/lib/go-atscfg/storagedotconfig_test.go
@@ -58,7 +58,7 @@ func TestMakeStorageDotConfig(t *testing.T) {
                /dev/ssk volume=3
        */
 
-       cfg, err := MakeStorageDotConfig(server, params, hdr)
+       cfg, err := MakeStorageDotConfig(server, params, 
&StorageDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/sysctldotconf.go b/lib/go-atscfg/sysctldotconf.go
index d2fecdb..bb2e765 100644
--- a/lib/go-atscfg/sysctldotconf.go
+++ b/lib/go-atscfg/sysctldotconf.go
@@ -28,11 +28,22 @@ const SysctlFileName = "sysctl.conf"
 const ContentTypeSysctlDotConf = ContentTypeTextASCII
 const LineCommentSysctlDotConf = LineCommentHash
 
+// SysCtlDotConfOpts contains settings to configure generation options.
+type SysCtlDotConfOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeSysCtlDotConf(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *SysCtlDotConfOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &SysCtlDotConfOpts{}
+       }
        warnings := []string{}
        if server.Profile == nil {
                return Cfg{}, makeErr(warnings, "server missing Profile")
@@ -41,7 +52,7 @@ func MakeSysCtlDotConf(
        paramData, paramWarns := paramsToMap(filterParams(serverParams, 
SysctlFileName, "", "", "location"))
        warnings = append(warnings, paramWarns...)
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
        txt := genericProfileConfig(paramData, SysctlSeparator)
        if txt == "" {
                txt = "\n" // If no params exist, don't send "not found," but 
an empty file. We know the profile exists.
diff --git a/lib/go-atscfg/sysctldotconf_test.go 
b/lib/go-atscfg/sysctldotconf_test.go
index a49adb6..a93b828 100644
--- a/lib/go-atscfg/sysctldotconf_test.go
+++ b/lib/go-atscfg/sysctldotconf_test.go
@@ -38,7 +38,7 @@ func TestMakeSysCtlDotConf(t *testing.T) {
 
        params := makeParamsFromMap(*server.Profile, SysctlFileName, paramData)
 
-       cfg, err := MakeSysCtlDotConf(server, params, hdr)
+       cfg, err := MakeSysCtlDotConf(server, params, 
&SysCtlDotConfOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/urisigningconfig.go 
b/lib/go-atscfg/urisigningconfig.go
index 6e84570..600ef75 100644
--- a/lib/go-atscfg/urisigningconfig.go
+++ b/lib/go-atscfg/urisigningconfig.go
@@ -28,10 +28,18 @@ import (
 const ContentTypeURISigningDotConfig = `application/json; charset=us-ascii`
 const LineCommentURISigningDotConfig = ""
 
+// URISigningConfigOpts contains settings to configure generation options.
+type URISigningConfigOpts struct {
+}
+
 func MakeURISigningConfig(
        fileName string,
        uriSigningKeys map[tc.DeliveryServiceName][]byte,
+       opt *URISigningConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &URISigningConfigOpts{}
+       }
        warnings := []string{}
 
        dsName := getDSFromURISigningConfigFileName(fileName)
diff --git a/lib/go-atscfg/urisigningconfig_test.go 
b/lib/go-atscfg/urisigningconfig_test.go
index dc03f50..260e92b 100644
--- a/lib/go-atscfg/urisigningconfig_test.go
+++ b/lib/go-atscfg/urisigningconfig_test.go
@@ -32,7 +32,7 @@ func TestMakeURISigningConfig(t *testing.T) {
                "myds": keyBts,
        }
 
-       cfg, err := MakeURISigningConfig(fileName, keys)
+       cfg, err := MakeURISigningConfig(fileName, keys, nil)
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/urlsigconfig.go b/lib/go-atscfg/urlsigconfig.go
index e77d8cf..22bb4c7 100644
--- a/lib/go-atscfg/urlsigconfig.go
+++ b/lib/go-atscfg/urlsigconfig.go
@@ -29,13 +29,24 @@ import (
 const ContentTypeURLSig = ContentTypeTextASCII
 const LineCommentURLSig = LineCommentHash
 
+// URLSigConfigOpts contains settings to configure generation options.
+type URLSigConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 func MakeURLSigConfig(
        fileName string,
        server *Server,
        serverParams []tc.Parameter,
        allURLSigKeys map[tc.DeliveryServiceName]tc.URLSigKeys,
-       hdrComment string,
+       opt *URLSigConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &URLSigConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -56,7 +67,7 @@ func MakeURLSigConfig(
                urlSigKeys = tc.URLSigKeys{}
        }
 
-       hdr := makeHdrComment(hdrComment)
+       hdr := makeHdrComment(opt.HdrComment)
 
        sep := " = "
 
diff --git a/lib/go-atscfg/urlsigconfig_test.go 
b/lib/go-atscfg/urlsigconfig_test.go
index 8b86c8f..a8a95e6 100644
--- a/lib/go-atscfg/urlsigconfig_test.go
+++ b/lib/go-atscfg/urlsigconfig_test.go
@@ -46,7 +46,7 @@ func TestMakeURLSigConfig(t *testing.T) {
 
        params := makeParamsFromMap(*server.Profile, fileName, paramData)
 
-       cfg, err := MakeURLSigConfig(fileName, server, params, allURLSigKeys, 
hdr)
+       cfg, err := MakeURLSigConfig(fileName, server, params, allURLSigKeys, 
&URLSigConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -68,7 +68,7 @@ func TestMakeURLSigConfig(t *testing.T) {
                "myds": urlSigKeys,
        }
 
-       cfg, err = MakeURLSigConfig(fileName, server, params, allURLSigKeys, 
hdr)
+       cfg, err = MakeURLSigConfig(fileName, server, params, allURLSigKeys, 
&URLSigConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
diff --git a/lib/go-atscfg/volumedotconfig.go b/lib/go-atscfg/volumedotconfig.go
index 8b5eb93..9619cd3 100644
--- a/lib/go-atscfg/volumedotconfig.go
+++ b/lib/go-atscfg/volumedotconfig.go
@@ -29,13 +29,24 @@ const VolumeFileName = StorageFileName
 const ContentTypeVolumeDotConfig = ContentTypeTextASCII
 const LineCommentVolumeDotConfig = LineCommentHash
 
+// VolumeDotConfigOpts contains settings to configure generation options.
+type VolumeDotConfigOpts struct {
+       // HdrComment is the header comment to include at the beginning of the 
file.
+       // This should be the text desired, without comment syntax (like # or 
//). The file's comment syntax will be added.
+       // To omit the header comment, pass the empty string.
+       HdrComment string
+}
+
 // MakeVolumeDotConfig creates volume.config for a given ATS Profile.
 // The paramData is the map of parameter names to values, for all parameters 
assigned to the given profile, with the config_file "storage.config".
 func MakeVolumeDotConfig(
        server *Server,
        serverParams []tc.Parameter,
-       hdrComment string,
+       opt *VolumeDotConfigOpts,
 ) (Cfg, error) {
+       if opt == nil {
+               opt = &VolumeDotConfigOpts{}
+       }
        warnings := []string{}
 
        if server.Profile == nil {
@@ -45,7 +56,7 @@ func MakeVolumeDotConfig(
        paramData, paramWarns := paramsToMap(filterParams(serverParams, 
VolumeFileName, "", "", ""))
        warnings = append(warnings, paramWarns...)
 
-       text := makeHdrComment(hdrComment)
+       text := makeHdrComment(opt.HdrComment)
 
        numVolumes := getNumVolumes(paramData)
 
diff --git a/lib/go-atscfg/volumedotconfig_test.go 
b/lib/go-atscfg/volumedotconfig_test.go
index bbcde99..ad10f86 100644
--- a/lib/go-atscfg/volumedotconfig_test.go
+++ b/lib/go-atscfg/volumedotconfig_test.go
@@ -41,7 +41,7 @@ func TestMakeVolumeDotConfig(t *testing.T) {
 
        params := makeParamsFromMap(*server.Profile, VolumeFileName, paramData)
 
-       cfg, err := MakeVolumeDotConfig(server, params, hdr)
+       cfg, err := MakeVolumeDotConfig(server, params, 
&VolumeDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -61,7 +61,7 @@ func TestMakeVolumeDotConfig(t *testing.T) {
        delete(paramData, "SSD_Drive_Letters")
        params = makeParamsFromMap(*server.Profile, VolumeFileName, paramData)
 
-       cfg, err = MakeVolumeDotConfig(server, params, hdr)
+       cfg, err = MakeVolumeDotConfig(server, params, 
&VolumeDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }
@@ -79,7 +79,7 @@ func TestMakeVolumeDotConfig(t *testing.T) {
        delete(paramData, "RAM_Drive_Letters")
        params = makeParamsFromMap(*server.Profile, VolumeFileName, paramData)
 
-       cfg, err = MakeVolumeDotConfig(server, params, hdr)
+       cfg, err = MakeVolumeDotConfig(server, params, 
&VolumeDotConfigOpts{HdrComment: hdr})
        if err != nil {
                t.Fatal(err)
        }

Reply via email to