Skip to content

Commit e192aa1

Browse files
Merge pull request openshift#7595 from multi-arch/enable_multi_payload
MIXEDARCH-310: Enable the use of the multi payload for agent installer
2 parents 7f103d4 + 5ba0ab5 commit e192aa1

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

pkg/asset/agent/image/agentartifacts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (a *AgentArtifacts) fetchAgentTuiFiles(releaseImage string, pullSecret stri
9898
files := []string{}
9999

100100
for _, srcFile := range agentTuiFilenames {
101-
extracted, err := release.ExtractFile("agent-installer-utils", srcFile)
101+
extracted, err := release.ExtractFile("agent-installer-utils", srcFile, a.CPUArch)
102102
if err != nil {
103103
return nil, err
104104
}

pkg/asset/agent/image/oc.go

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"strings"
1616
"time"
1717

18+
"github.com/coreos/stream-metadata-go/arch"
1819
"github.com/coreos/stream-metadata-go/stream"
1920
"github.com/pkg/errors"
2021
"github.com/sirupsen/logrus"
@@ -48,7 +49,7 @@ type Config struct {
4849
type Release interface {
4950
GetBaseIso(architecture string) (string, error)
5051
GetBaseIsoVersion(architecture string) (string, error)
51-
ExtractFile(image string, filename string) ([]string, error)
52+
ExtractFile(image string, filename string, architecture string) ([]string, error)
5253
}
5354

5455
type release struct {
@@ -69,15 +70,15 @@ func NewRelease(config Config, releaseImage string, pullSecret string, mirrorCon
6970
}
7071

7172
const (
72-
templateGetImage = "oc adm release info --image-for=%s --insecure=%t %s"
73-
templateGetImageWithIcsp = "oc adm release info --image-for=%s --insecure=%t --icsp-file=%s %s"
74-
templateImageExtract = "oc image extract --path %s:%s --confirm %s"
75-
templateImageExtractWithIcsp = "oc image extract --path %s:%s --confirm --icsp-file=%s %s"
73+
templateGetImage = "oc adm release info --image-for=%s --filter-by-os=linux/%s --insecure=%t %s"
74+
templateGetImageWithIcsp = "oc adm release info --image-for=%s --filter-by-os=linux/%s --insecure=%t --icsp-file=%s %s"
75+
templateImageExtract = "oc image extract --path %s:%s --filter-by-os=linux/%s --confirm %s"
76+
templateImageExtractWithIcsp = "oc image extract --path %s:%s --filter-by-os=linux/%s --confirm --icsp-file=%s %s"
7677
)
7778

7879
// ExtractFile extracts the specified file from the given image name, and store it in the cache dir.
79-
func (r *release) ExtractFile(image string, filename string) ([]string, error) {
80-
imagePullSpec, err := r.getImageFromRelease(image)
80+
func (r *release) ExtractFile(image string, filename string, architecture string) ([]string, error) {
81+
imagePullSpec, err := r.getImageFromRelease(image, architecture)
8182
if err != nil {
8283
return nil, err
8384
}
@@ -87,7 +88,7 @@ func (r *release) ExtractFile(image string, filename string) ([]string, error) {
8788
return nil, err
8889
}
8990

90-
path, err := r.extractFileFromImage(imagePullSpec, filename, cacheDir)
91+
path, err := r.extractFileFromImage(imagePullSpec, filename, cacheDir, architecture)
9192
if err != nil {
9293
return nil, err
9394
}
@@ -97,7 +98,7 @@ func (r *release) ExtractFile(image string, filename string) ([]string, error) {
9798
// Get the CoreOS ISO from the releaseImage.
9899
func (r *release) GetBaseIso(architecture string) (string, error) {
99100
// Get the machine-os-images pullspec from the release and use that to get the CoreOS ISO
100-
image, err := r.getImageFromRelease(machineOsImageName)
101+
image, err := r.getImageFromRelease(machineOsImageName, architecture)
101102
if err != nil {
102103
return "", err
103104
}
@@ -126,7 +127,7 @@ func (r *release) GetBaseIso(architecture string) (string, error) {
126127
}
127128

128129
// Get the base ISO from the payload
129-
path, err := r.extractFileFromImage(image, filename, cacheDir)
130+
path, err := r.extractFileFromImage(image, filename, cacheDir, architecture)
130131
if err != nil {
131132
return "", err
132133
}
@@ -135,7 +136,7 @@ func (r *release) GetBaseIso(architecture string) (string, error) {
135136
}
136137

137138
func (r *release) GetBaseIsoVersion(architecture string) (string, error) {
138-
files, err := r.ExtractFile(machineOsImageName, coreOsStreamFileName)
139+
files, err := r.ExtractFile(machineOsImageName, coreOsStreamFileName, architecture)
139140
if err != nil {
140141
return "", err
141142
}
@@ -166,7 +167,7 @@ func (r *release) GetBaseIsoVersion(architecture string) (string, error) {
166167
return "", errors.New("unable to determine CoreOS release version")
167168
}
168169

169-
func (r *release) getImageFromRelease(imageName string) (string, error) {
170+
func (r *release) getImageFromRelease(imageName string, architecture string) (string, error) {
170171
// This requires the 'oc' command so make sure its available
171172
_, err := exec.LookPath("oc")
172173
var cmd string
@@ -179,16 +180,18 @@ func (r *release) getImageFromRelease(imageName string) (string, error) {
179180
return "", err
180181
}
181182

183+
archName := arch.GoArch(architecture)
184+
182185
if len(r.mirrorConfig) > 0 {
183186
logrus.Debugf("Using mirror configuration")
184187
icspFile, err := getIcspFileFromRegistriesConfig(r.mirrorConfig)
185188
if err != nil {
186189
return "", err
187190
}
188191
defer removeIcspFile(icspFile)
189-
cmd = fmt.Sprintf(templateGetImageWithIcsp, imageName, true, icspFile, r.releaseImage)
192+
cmd = fmt.Sprintf(templateGetImageWithIcsp, imageName, archName, true, icspFile, r.releaseImage)
190193
} else {
191-
cmd = fmt.Sprintf(templateGetImage, imageName, true, r.releaseImage)
194+
cmd = fmt.Sprintf(templateGetImage, imageName, archName, true, r.releaseImage)
192195
}
193196

194197
logrus.Debugf("Fetching image from OCP release (%s)", cmd)
@@ -203,17 +206,18 @@ func (r *release) getImageFromRelease(imageName string) (string, error) {
203206
return image, nil
204207
}
205208

206-
func (r *release) extractFileFromImage(image, file, cacheDir string) ([]string, error) {
209+
func (r *release) extractFileFromImage(image, file, cacheDir string, architecture string) ([]string, error) {
207210
var cmd string
211+
archName := arch.GoArch(architecture)
208212
if len(r.mirrorConfig) > 0 {
209213
icspFile, err := getIcspFileFromRegistriesConfig(r.mirrorConfig)
210214
if err != nil {
211215
return nil, err
212216
}
213217
defer removeIcspFile(icspFile)
214-
cmd = fmt.Sprintf(templateImageExtractWithIcsp, file, cacheDir, icspFile, image)
218+
cmd = fmt.Sprintf(templateImageExtractWithIcsp, file, cacheDir, archName, icspFile, image)
215219
} else {
216-
cmd = fmt.Sprintf(templateImageExtract, file, cacheDir, image)
220+
cmd = fmt.Sprintf(templateImageExtract, file, cacheDir, archName, image)
217221
}
218222
path := filepath.Join(cacheDir, path.Base(file))
219223
// Remove file if it exists
@@ -303,7 +307,7 @@ func (r *release) verifyCacheFile(image, file, architecture string) (bool, error
303307
defer os.RemoveAll(tempDir)
304308

305309
shaFilename := fmt.Sprintf(coreOsSha256FileName, architecture)
306-
shaFile, err := r.extractFileFromImage(image, shaFilename, tempDir)
310+
shaFile, err := r.extractFileFromImage(image, shaFilename, tempDir, architecture)
307311
if err != nil {
308312
logrus.Debug("Could not get SHA from payload for cache comparison")
309313
return false, nil

0 commit comments

Comments
 (0)