internal/awscloud: use AWS.Register() from osbuild/images
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
parent
27bae770e9
commit
a3937e99ce
6 changed files with 52 additions and 225 deletions
|
|
@ -4,7 +4,11 @@ import (
|
|||
"flag"
|
||||
"fmt"
|
||||
|
||||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
|
||||
"github.com/osbuild/images/pkg/arch"
|
||||
"github.com/osbuild/images/pkg/platform"
|
||||
"github.com/osbuild/osbuild-composer/internal/cloud/awscloud"
|
||||
"github.com/osbuild/osbuild-composer/internal/common"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
@ -17,8 +21,8 @@ func main() {
|
|||
var filename string
|
||||
var imageName string
|
||||
var shareWith string
|
||||
var arch string
|
||||
var bootMode string
|
||||
var archOpt string
|
||||
var bootModeOpt string
|
||||
flag.StringVar(&accessKeyID, "access-key-id", "", "access key ID")
|
||||
flag.StringVar(&secretAccessKey, "secret-access-key", "", "secret access key")
|
||||
flag.StringVar(&sessionToken, "session-token", "", "session token")
|
||||
|
|
@ -28,8 +32,8 @@ func main() {
|
|||
flag.StringVar(&filename, "image", "", "image file to upload")
|
||||
flag.StringVar(&imageName, "name", "", "AMI name")
|
||||
flag.StringVar(&shareWith, "account-id", "", "account id to share image with")
|
||||
flag.StringVar(&arch, "arch", "", "arch (x86_64 or aarch64)")
|
||||
flag.StringVar(&bootMode, "boot-mode", "", "boot mode (legacy-bios, uefi, uefi-preferred)")
|
||||
flag.StringVar(&archOpt, "arch", "", "arch (x86_64 or aarch64)")
|
||||
flag.StringVar(&bootModeOpt, "boot-mode", "", "boot mode (legacy-bios, uefi, uefi-preferred)")
|
||||
flag.Parse()
|
||||
|
||||
a, err := awscloud.New(region, accessKeyID, secretAccessKey, sessionToken)
|
||||
|
|
@ -51,16 +55,32 @@ func main() {
|
|||
share = append(share, shareWith)
|
||||
}
|
||||
|
||||
var bootModePtr *string
|
||||
if bootMode != "" {
|
||||
bootModePtr = &bootMode
|
||||
}
|
||||
|
||||
ami, err := a.Register(imageName, bucketName, keyName, share, arch, bootModePtr)
|
||||
imgArch, err := arch.FromString(archOpt)
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("AMI registered: %s\n", *ami)
|
||||
var bootMode *platform.BootMode
|
||||
switch bootModeOpt {
|
||||
case string(ec2types.BootModeValuesLegacyBios):
|
||||
bootMode = common.ToPtr(platform.BOOT_LEGACY)
|
||||
case string(ec2types.BootModeValuesUefi):
|
||||
bootMode = common.ToPtr(platform.BOOT_UEFI)
|
||||
case string(ec2types.BootModeValuesUefiPreferred):
|
||||
bootMode = common.ToPtr(platform.BOOT_HYBRID)
|
||||
case "":
|
||||
// do nothing
|
||||
default:
|
||||
println("Unknown boot mode %q, must be one of: legacy-bios, uefi, uefi-preferred", bootModeOpt)
|
||||
return
|
||||
}
|
||||
|
||||
ami, _, err := a.Register(imageName, bucketName, keyName, share, imgArch, bootMode, nil)
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("AMI registered: %s\n", ami)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,13 +23,16 @@ import (
|
|||
"github.com/osbuild/images/pkg/osbuild"
|
||||
"github.com/osbuild/images/pkg/sbom"
|
||||
|
||||
"github.com/osbuild/osbuild-composer/internal/common"
|
||||
"github.com/osbuild/osbuild-composer/internal/upload/oci"
|
||||
"github.com/osbuild/osbuild-composer/internal/upload/pulp"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
ec2types "github.com/aws/aws-sdk-go-v2/service/ec2/types"
|
||||
"github.com/osbuild/images/pkg/cloud/azure"
|
||||
"github.com/osbuild/images/pkg/platform"
|
||||
"github.com/osbuild/images/pkg/upload/koji"
|
||||
"github.com/osbuild/osbuild-composer/internal/cloud/awscloud"
|
||||
"github.com/osbuild/osbuild-composer/internal/cloud/gcp"
|
||||
|
|
@ -725,18 +728,30 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
|
|||
break
|
||||
}
|
||||
|
||||
ami, err := a.Register(jobTarget.ImageName, bucket, targetOptions.Key, targetOptions.ShareWithAccounts, arch.Current().String(), targetOptions.BootMode)
|
||||
// XXX: We should adjust the target options type for the boot mode to replace the following workaround
|
||||
// but that will require a backwards compatibility layer for old worker / new composer.
|
||||
var bootMode *platform.BootMode
|
||||
if targetOptions.BootMode != nil {
|
||||
switch *targetOptions.BootMode {
|
||||
case string(ec2types.BootModeValuesLegacyBios):
|
||||
bootMode = common.ToPtr(platform.BOOT_LEGACY)
|
||||
case string(ec2types.BootModeValuesUefi):
|
||||
bootMode = common.ToPtr(platform.BOOT_UEFI)
|
||||
case string(ec2types.BootModeValuesUefiPreferred):
|
||||
bootMode = common.ToPtr(platform.BOOT_HYBRID)
|
||||
default:
|
||||
logrus.Warnf("Unknown boot mode %q, using default", *targetOptions.BootMode)
|
||||
}
|
||||
}
|
||||
|
||||
ami, _, err := a.Register(jobTarget.ImageName, bucket, targetOptions.Key, targetOptions.ShareWithAccounts, arch.Current(), bootMode, nil)
|
||||
if err != nil {
|
||||
targetResult.TargetError = clienterrors.New(clienterrors.ErrorImportingImage, err.Error(), nil)
|
||||
break
|
||||
}
|
||||
|
||||
if ami == nil {
|
||||
targetResult.TargetError = clienterrors.New(clienterrors.ErrorImportingImage, "No ami returned", nil)
|
||||
break
|
||||
}
|
||||
targetResult.Options = &target.AWSTargetResultOptions{
|
||||
Ami: *ami,
|
||||
Ami: ami,
|
||||
Region: targetOptions.Region,
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue