diff options
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/image/docker_registry_options.go | 3 | ||||
-rw-r--r-- | libpod/image/pull.go | 2 | ||||
-rw-r--r-- | libpod/kube.go | 18 |
3 files changed, 21 insertions, 2 deletions
diff --git a/libpod/image/docker_registry_options.go b/libpod/image/docker_registry_options.go index c434f0259..257b7ae8d 100644 --- a/libpod/image/docker_registry_options.go +++ b/libpod/image/docker_registry_options.go @@ -30,6 +30,8 @@ type DockerRegistryOptions struct { OSChoice string // If not "", overrides the use of platform.GOARCH when choosing an image or verifying architecture match. ArchitectureChoice string + // If not "", overrides_VARIANT_ instead of the running architecture variant for choosing images. + VariantChoice string // RegistriesConfPath can be used to override the default path of registries.conf. RegistriesConfPath string } @@ -43,6 +45,7 @@ func (o DockerRegistryOptions) GetSystemContext(parent *types.SystemContext, add DockerArchiveAdditionalTags: additionalDockerArchiveTags, OSChoice: o.OSChoice, ArchitectureChoice: o.ArchitectureChoice, + VariantChoice: o.VariantChoice, BigFilesTemporaryDir: parse.GetTempDir(), } if parent != nil { diff --git a/libpod/image/pull.go b/libpod/image/pull.go index 641698d03..bdcda4016 100644 --- a/libpod/image/pull.go +++ b/libpod/image/pull.go @@ -228,6 +228,7 @@ func (ir *Runtime) pullImageFromHeuristicSource(ctx context.Context, inputName s if dockerOptions != nil { sc.OSChoice = dockerOptions.OSChoice sc.ArchitectureChoice = dockerOptions.ArchitectureChoice + sc.VariantChoice = dockerOptions.VariantChoice } sc.BlobInfoCacheDir = filepath.Join(ir.store.GraphRoot(), "cache") srcRef, err := alltransports.ParseImageName(inputName) @@ -260,6 +261,7 @@ func (ir *Runtime) pullImageFromReference(ctx context.Context, srcRef types.Imag if dockerOptions != nil { sc.OSChoice = dockerOptions.OSChoice sc.ArchitectureChoice = dockerOptions.ArchitectureChoice + sc.VariantChoice = dockerOptions.VariantChoice } goal, err := ir.pullGoalFromImageReference(ctx, srcRef, transports.ImageName(srcRef), sc) if err != nil { diff --git a/libpod/kube.go b/libpod/kube.go index 0068427a5..5f2c9e0fd 100644 --- a/libpod/kube.go +++ b/libpod/kube.go @@ -48,12 +48,22 @@ func (p *Pod) GenerateForKube() (*v1.Pod, []v1.ServicePort, error) { return nil, servicePorts, errors.Errorf("pod %s only has an infra container", p.ID()) } + extraHost := make([]v1.HostAlias, 0) if p.HasInfraContainer() { infraContainer, err := p.getInfraContainer() if err != nil { return nil, servicePorts, err } - + for _, host := range infraContainer.config.ContainerNetworkConfig.HostAdd { + hostSli := strings.SplitN(host, ":", 2) + if len(hostSli) != 2 { + return nil, servicePorts, errors.New("invalid hostAdd") + } + extraHost = append(extraHost, v1.HostAlias{ + IP: hostSli[1], + Hostnames: []string{hostSli[0]}, + }) + } ports, err = ocicniPortMappingToContainerPort(infraContainer.config.PortMappings) if err != nil { return nil, servicePorts, err @@ -61,7 +71,11 @@ func (p *Pod) GenerateForKube() (*v1.Pod, []v1.ServicePort, error) { servicePorts = containerPortsToServicePorts(ports) } pod, err := p.podWithContainers(allContainers, ports) - return pod, servicePorts, err + if err != nil { + return nil, servicePorts, err + } + pod.Spec.HostAliases = extraHost + return pod, servicePorts, nil } func (p *Pod) getInfraContainer() (*Container, error) { |