github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/client/taskenv/network.go (about) 1 package taskenv 2 3 import ( 4 "github.com/hashicorp/nomad/nomad/structs" 5 ) 6 7 // InterpolateNetworks returns an interpolated copy of the task group networks 8 // with values from the task's environment. 9 // 10 // Current interoperable fields: 11 // - Hostname 12 // - DNS 13 func InterpolateNetworks(taskEnv *TaskEnv, networks structs.Networks) structs.Networks { 14 15 // Guard against not having a valid taskEnv. This can be the case if the 16 // PreKilling or Exited hook is run before Poststart. 17 if taskEnv == nil || networks == nil { 18 return nil 19 } 20 21 // Create a copy of the networks array, so we can manipulate the copy. 22 interpolated := networks.Copy() 23 24 // Iterate the copy and perform the interpolation. 25 for i := range interpolated { 26 interpolated[i].Hostname = taskEnv.ReplaceEnv(interpolated[i].Hostname) 27 if interpolated[i].DNS != nil { 28 interpolated[i].DNS.Servers = taskEnv.ParseAndReplace(interpolated[i].DNS.Servers) 29 interpolated[i].DNS.Searches = taskEnv.ParseAndReplace(interpolated[i].DNS.Searches) 30 interpolated[i].DNS.Options = taskEnv.ParseAndReplace(interpolated[i].DNS.Options) 31 } 32 } 33 34 return interpolated 35 }