in cmd/gce_metadata_script_runner/scriptrunner.go [332:378]
func mdsScriptKeys(prefix string, os string) ([]string, error) {
config := cfg.Retrieve()
switch prefix {
case "specialize":
prefix = "sysprep-specialize"
case "startup":
if os == "windows" {
prefix = "windows-" + prefix
if !config.MetadataScripts.StartupWindows {
return nil, fmt.Errorf("windows startup scripts disabled in instance config")
}
} else {
if !config.MetadataScripts.Startup {
return nil, fmt.Errorf("startup scripts disabled in instance config")
}
}
case "shutdown":
if os == "windows" {
prefix = "windows-" + prefix
if !config.MetadataScripts.ShutdownWindows {
return nil, fmt.Errorf("windows shutdown scripts disabled in instance config")
}
} else {
if !config.MetadataScripts.Shutdown {
return nil, fmt.Errorf("shutdown scripts disabled in instance config")
}
}
default:
return nil, fmt.Errorf("unsupported event type %q, should be one of [specialize, startup, shutdown]", prefix)
}
var mdkeys []string
var suffixes []string
if os == "windows" {
suffixes = []string{"ps1", "cmd", "bat", "url"}
} else {
suffixes = []string{"url"}
// The 'bare' startup-script or shutdown-script key, not supported on Windows.
mdkeys = append(mdkeys, fmt.Sprintf("%s-script", prefix))
}
for _, suffix := range suffixes {
mdkeys = append(mdkeys, fmt.Sprintf("%s-script-%s", prefix, suffix))
}
return mdkeys, nil
}