Skip to content

Commit 99f47b0

Browse files
kingsleyzissoumvo5
authored andcommitted
cmd/upload: add fedora ami to aws upload
Fedora aws images were getting ignored since we renamed the base image type to `server-ami`, this commit adds that type back so that we can build Fedora based aws images.
1 parent d2da251 commit 99f47b0

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

cmd/image-builder/upload.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func uploaderCheckWithProgress(pbar progress.ProgressBar, uploader cloud.Uploade
6767

6868
func uploaderFor(cmd *cobra.Command, typeOrCloud string, targetArch string, bootMode *platform.BootMode) (cloud.Uploader, error) {
6969
switch typeOrCloud {
70-
case "ami", "aws":
70+
case "ami", "server-ami", "aws":
7171
return uploaderForCmdAWS(cmd, targetArch, bootMode)
7272
default:
7373
return nil, fmt.Errorf("%w: %q", ErrUploadTypeUnsupported, typeOrCloud)

cmd/image-builder/upload_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,58 @@ func TestBuildAndUploadWithAWSMock(t *testing.T) {
207207
assert.Equal(t, "fake-img-raw\n", fa.uploadAndRegisterRead.String())
208208
}
209209

210+
func TestBuildAndUploadFedoraWithAWSMock(t *testing.T) {
211+
if testing.Short() {
212+
t.Skip("manifest generation takes a while")
213+
}
214+
if !hasDepsolveDnf() {
215+
t.Skip("no osbuild-depsolve-dnf binary found")
216+
}
217+
218+
var regionName, bucketName, amiName string
219+
var fa fakeAwsUploader
220+
var uploadOpts *awscloud.UploaderOptions
221+
restore := main.MockAwscloudNewUploader(func(region string, bucket string, ami string, opts *awscloud.UploaderOptions) (cloud.Uploader, error) {
222+
regionName = region
223+
bucketName = bucket
224+
amiName = ami
225+
uploadOpts = opts
226+
return &fa, nil
227+
})
228+
defer restore()
229+
230+
outputDir := t.TempDir()
231+
fakeOsbuildScript := makeFakeOsbuildScript()
232+
testutil.MockCommand(t, "osbuild", fakeOsbuildScript)
233+
234+
var fakeStdout bytes.Buffer
235+
restore = main.MockOsStdout(&fakeStdout)
236+
defer restore()
237+
238+
restore = main.MockOsArgs([]string{
239+
"build",
240+
"--output-dir", outputDir,
241+
"--aws-region=aws-region-1",
242+
"--aws-bucket=aws-bucket-2",
243+
"--aws-ami-name=aws-ami-3",
244+
"server-ami",
245+
"--distro=fedora-42",
246+
})
247+
defer restore()
248+
249+
err := main.Run()
250+
require.NoError(t, err)
251+
252+
assert.Equal(t, regionName, "aws-region-1")
253+
assert.Equal(t, bucketName, "aws-bucket-2")
254+
assert.Equal(t, amiName, "aws-ami-3")
255+
expectedBootMode := platform.BOOT_HYBRID
256+
assert.Equal(t, &awscloud.UploaderOptions{BootMode: &expectedBootMode, TargetArch: arch.Current()}, uploadOpts)
257+
assert.Equal(t, 1, fa.checkCalls)
258+
assert.Equal(t, 1, fa.uploadAndRegisterCalls)
259+
assert.Equal(t, "fake-img-raw\n", fa.uploadAndRegisterRead.String())
260+
}
261+
210262
func TestBuildAmiButNotUpload(t *testing.T) {
211263
if testing.Short() {
212264
t.Skip("manifest generation takes a while")

0 commit comments

Comments
 (0)