MCPcopy Create free account
hub / github.com/dagger/dagger / setupNetwork

Method setupNetwork

engine/engineutil/executor_spec.go:170–335  ·  view source on GitHub ↗

nolint:gocyclo

(ctx context.Context, state *execState)

Source from the content-addressed store, hash-verified

168
169//nolint:gocyclo
170func (c *Client) setupNetwork(ctx context.Context, state *execState) error {
171 provider, ok := c.NetworkProviders[state.procInfo.Meta.NetMode]
172 if !ok {
173 return fmt.Errorf("unknown network mode %s", state.procInfo.Meta.NetMode)
174 }
175
176 networkHostname := state.procInfo.Meta.Hostname
177 switch {
178 case networkHostname != "":
179 case state.procInfo.Meta.SecurityMode == pb.SecurityMode_INSECURE:
180 networkHostname = uuid.NewString()
181 state.procInfo.Meta.Hostname = networkHostname
182 default:
183 state.procInfo.Meta.Hostname = defaultHostname
184 }
185
186 networkNamespace, err := provider.New(ctx, networkHostname)
187 if err != nil {
188 return fmt.Errorf("create network namespace: %w", err)
189 }
190 state.cleanups.Add("close network namespace", networkNamespace.Close)
191 state.networkNamespace = networkNamespace
192
193 state.resolvConfPath, err = oci.GetResolvConf(ctx, c.ExecutorRoot, c.IdentityMapping, c.DNSConfig, state.procInfo.Meta.NetMode)
194 if err != nil {
195 return fmt.Errorf("get base resolv.conf: %w", err)
196 }
197
198 var cleanupBaseHosts func()
199 state.hostsFilePath, cleanupBaseHosts, err = oci.GetHostsFile(
200 ctx, c.ExecutorRoot, state.procInfo.Meta.ExtraHosts, c.IdentityMapping, state.procInfo.Meta.Hostname)
201 if err != nil {
202 return fmt.Errorf("get base hosts file: %w", err)
203 }
204 if cleanupBaseHosts != nil {
205 state.cleanups.Add("cleanup base hosts file", cleanups.Infallible(cleanupBaseHosts))
206 }
207
208 if state.sessionID == "" {
209 return nil
210 }
211
212 extraSearchDomains := []string{}
213 if state.execMD != nil {
214 extraSearchDomains = append(extraSearchDomains, state.execMD.ExtraSearchDomains...)
215 }
216 extraSearchDomains = append(extraSearchDomains, network.SessionDomain(state.sessionID))
217
218 baseResolvFile, err := os.Open(state.resolvConfPath)
219 if err != nil {
220 return fmt.Errorf("open base resolv.conf: %w", err)
221 }
222 defer baseResolvFile.Close()
223
224 baseResolvStat, err := baseResolvFile.Stat()
225 if err != nil {
226 return fmt.Errorf("stat base resolv.conf: %w", err)
227 }

Calls 15

GetResolvConfFunction · 0.92
GetHostsFileFunction · 0.92
InfallibleFunction · 0.92
SessionDomainFunction · 0.92
NewMethod · 0.65
AddMethod · 0.65
OpenMethod · 0.65
CloseMethod · 0.65
StatMethod · 0.65
NameMethod · 0.65
ErrMethod · 0.65
NewStringMethod · 0.45