(recoverCtx *containerRecoverContext, taskItem *task.Task)
| 566 | } |
| 567 | |
| 568 | func stepRecreateContainer(recoverCtx *containerRecoverContext, taskItem *task.Task) error { |
| 569 | ctx := context.Background() |
| 570 | if err := ensureContainerRecoverNetworks(recoverCtx); err != nil { |
| 571 | return err |
| 572 | } |
| 573 | if err := ensureContainerRecoverVolumes(recoverCtx); err != nil { |
| 574 | return err |
| 575 | } |
| 576 | |
| 577 | config := cloneContainerConfig(recoverCtx.inspectInfo.Config) |
| 578 | hostConfig := cloneContainerHostConfig(recoverCtx.inspectInfo.HostConfig) |
| 579 | if config.Image == "" { |
| 580 | config.Image = recoverCtx.meta.Image |
| 581 | } |
| 582 | if config.Image == "" { |
| 583 | return fmt.Errorf("container image not found in backup file") |
| 584 | } |
| 585 | if !checkImageExist(recoverCtx.client, config.Image) { |
| 586 | if err := pullImages(taskItem, recoverCtx.client, config.Image); err != nil { |
| 587 | return err |
| 588 | } |
| 589 | } |
| 590 | |
| 591 | if _, err := recoverCtx.client.ContainerInspect(ctx, recoverCtx.targetName); err == nil { |
| 592 | if err := recoverCtx.client.ContainerRemove(ctx, recoverCtx.targetName, container.RemoveOptions{Force: true, RemoveVolumes: false}); err != nil { |
| 593 | return err |
| 594 | } |
| 595 | } else if !client.IsErrNotFound(err) { |
| 596 | return err |
| 597 | } |
| 598 | |
| 599 | createRes, err := createContainerWithOldNetworks(ctx, recoverCtx.client, config, hostConfig, recoverCtx.inspectInfo.NetworkSettings, recoverCtx.targetName) |
| 600 | if err != nil { |
| 601 | return err |
| 602 | } |
| 603 | recoverCtx.createdContainerID = createRes.ID |
| 604 | return nil |
| 605 | } |
| 606 | |
| 607 | func removeUnsupportedEndpointStaticIPAM(cli *client.Client, primary *network.NetworkingConfig, extras map[string]*network.EndpointSettings) { |
| 608 | if primary != nil { |
no test coverage detected