From 630b9bf4b5b10001b3b039b42a27185d7e695e98 Mon Sep 17 00:00:00 2001 From: Pavel Dotsulenko Date: Thu, 7 May 2020 12:49:58 +0300 Subject: [PATCH 1/2] [LXD] Allow arch override to ensure that correct image is selected for sub-arch --- backend/lxd.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/backend/lxd.go b/backend/lxd.go index c4725ab3c..ec306f2c4 100644 --- a/backend/lxd.go +++ b/backend/lxd.go @@ -25,6 +25,7 @@ import ( ) var ( + lxdArchOverride = "" lxdLimitCPU = "2" lxdLimitCPUBurst = false lxdLimitDisk = "10GB" @@ -41,9 +42,10 @@ var ( lxdDockerPool = "" lxdDockerDisk = "10GB" lxdNetworkIPv6Filtering = "true" - lxdSecurityPrivileged = "false" + lxdSecurityPrivileged = "false" lxdHelp = map[string]string{ + "ARCH_OVERRIDE": fmt.Sprintf("override arch value from job config (default %q)", lxdArchOverride), "EXEC_CMD": fmt.Sprintf("command to run via exec/ssh (default %q)", lxdExecCmd), "EXEC_UID": fmt.Sprintf("UID of travis user (default %d)", lxdExecUID), "MEMORY": fmt.Sprintf("memory to allocate to each container (default %q)", lxdLimitMemory), @@ -63,7 +65,7 @@ var ( "NETWORK_STATIC": fmt.Sprintf("whether to statically set network configuration (default %v)", lxdNetworkStatic), "NETWORK_DNS": fmt.Sprintf("comma separated list of DNS servers (requires NETWORK_STATIC) (default %q)", lxdNetworkDns), "NETWORK_IPV6_FILTERING": fmt.Sprintf("prevent the containers from spoofing another's IPv6 address (default %s)", lxdNetworkIPv6Filtering), - "SECURITY_PRIVILEGED": fmt.Sprintf("request a container to run without a UID mapping when set true (default %s)", lxdSecurityPrivileged), + "SECURITY_PRIVILEGED": fmt.Sprintf("request a container to run without a UID mapping when set true (default %s)", lxdSecurityPrivileged), } ) @@ -110,7 +112,7 @@ type lxdProvider struct { networkLeases map[string]string networkLeasesLock sync.Mutex networkIPv6Filtering string - securityPrivileged string + securityPrivileged string pool string dockerCache string @@ -126,6 +128,11 @@ func newLXDProvider(cfg *config.ProviderConfig) (Provider, error) { return nil, err } + archOverride := lxdArchOverride + if cfg.IsSet("ARCH_OVERRIDE") { + archOverride = cfg.Get("ARCH_OVERRIDE") + } + execCmd := strings.Split(lxdExecCmd, " ") if cfg.IsSet("EXEC_CMD") { execCmd = strings.Split(cfg.Get("EXEC_CMD"), " ") @@ -307,6 +314,8 @@ func newLXDProvider(cfg *config.ProviderConfig) (Provider, error) { return &lxdProvider{ client: client, + archOverride: archOverride, + limitCPU: limitCPU, limitCPUBurst: limitCPUBurst, limitDisk: limitDisk, @@ -330,7 +339,7 @@ func newLXDProvider(cfg *config.ProviderConfig) (Provider, error) { networkDNS: networkDNS, networkLeases: networkLeases, networkIPv6Filtering: networkIPv6Filtering, - securityPrivileged: securityPrivileged, + securityPrivileged: securityPrivileged, pool: pool, dockerCache: dockerCache, @@ -500,8 +509,13 @@ func (p *lxdProvider) Start(ctx gocontext.Context, startAttributes *StartAttribu if startAttributes.ImageName != "" { imageName = startAttributes.ImageName } else { + imageArch := startAttributes.Arch + if p.archOverride != "" { + imageArch = p.archOverride + } + imageName, err = p.imageSelector.Select(ctx, &image.Params{ - Infra: "lxd-" + startAttributes.Arch, + Infra: "lxd-" + imageArch, Language: startAttributes.Language, OsxImage: startAttributes.OsxImage, Dist: startAttributes.Dist, From 8d68a65d82a14f196e5c39420dc54593a477d4aa Mon Sep 17 00:00:00 2001 From: Pavel Dotsulenko Date: Thu, 7 May 2020 13:08:22 +0300 Subject: [PATCH 2/2] Add missing field definition --- backend/lxd.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/lxd.go b/backend/lxd.go index ec306f2c4..572fda38b 100644 --- a/backend/lxd.go +++ b/backend/lxd.go @@ -95,9 +95,10 @@ type lxdProvider struct { limitNetwork string limitProcess string - image string - runCmd []string - runUID int64 + archOverride string + image string + runCmd []string + runUID int64 imageSelectorType string imageSelector image.Selector