MCPcopy
hub / github.com/docker/compose / removeNetwork

Method removeNetwork

pkg/compose/down.go:196–251  ·  pkg/compose/down.go::composeService.removeNetwork
(ctx context.Context, composeNetworkName string, projectName string, name string)

Source from the content-addressed store, hash-verified

194}
195
196func (s *composeService) removeNetwork(ctx context.Context, composeNetworkName string, projectName string, name string) error {
197 res, err := s.apiClient().NetworkList(ctx, client.NetworkListOptions{
198 Filters: projectFilter(projectName).Add("label", networkFilter(composeNetworkName)),
199 })
200 if err != nil {
201 return fmt.Errorf("failed to list networks: %w", err)
202 }
203 networks := res.Items
204
205 if len(networks) == 0 {
206 return nil
207 }
208
209 eventName := fmt.Sprintf("Network %s", name)
210 s.events.On(removingEvent(eventName))
211
212 var found int
213 for _, net := range networks {
214 if net.Name != name {
215 continue
216 }
217 nwInspect, err := s.apiClient().NetworkInspect(ctx, net.ID, client.NetworkInspectOptions{})
218 if errdefs.IsNotFound(err) {
219 s.events.On(newEvent(eventName, api.Warning, "No resource found to remove"))
220 return nil
221 }
222 if err != nil {
223 return err
224 }
225 nw := nwInspect.Network
226 if len(nw.Containers) > 0 {
227 s.events.On(newEvent(eventName, api.Warning, "Resource is still in use"))
228 found++
229 continue
230 }
231
232 if _, err := s.apiClient().NetworkRemove(ctx, net.ID, client.NetworkRemoveOptions{}); err != nil {
233 if errdefs.IsNotFound(err) {
234 continue
235 }
236 s.events.On(errorEvent(eventName, err.Error()))
237 return fmt.Errorf("failed to remove network %s: %w", name, err)
238 }
239 s.events.On(removedEvent(eventName))
240 found++
241 }
242
243 if found == 0 {
244 // in practice, it's extremely unlikely for this to ever occur, as it'd
245 // mean the network was present when we queried at the start of this
246 // method but was then deleted by something else in the interim
247 s.events.On(newEvent(eventName, api.Warning, "No resource found to remove"))
248 return nil
249 }
250 return nil
251}
252
253func (s *composeService) removeImage(ctx context.Context, image string) error {

Callers 1

ensureNetworksDownMethod · 0.95

Calls 13

apiClientMethod · 0.95
projectFilterFunction · 0.85
networkFilterFunction · 0.85
removingEventFunction · 0.85
newEventFunction · 0.85
errorEventFunction · 0.85
removedEventFunction · 0.85
ErrorMethod · 0.80
OnMethod · 0.65
NetworkListMethod · 0.45
AddMethod · 0.45
NetworkInspectMethod · 0.45

Tested by

no test coverage detected