Skip to content

Commit

Permalink
v1: remove upload request
Browse files Browse the repository at this point in the history
  • Loading branch information
chloenayon committed Sep 7, 2022
1 parent 03b130c commit e44c5ee
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 61 deletions.
1 change: 0 additions & 1 deletion internal/v1/api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,6 @@ components:
required:
- architecture
- image_type
- upload_request
properties:
architecture:
type: string
Expand Down
98 changes: 38 additions & 60 deletions internal/v1/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -610,23 +610,28 @@ func (h *Handlers) ComposeImage(ctx echo.Context) error {
})
}

func (s *Server) buildAWSS3UploadOptions(options []byte, composerImageType composer.ImageTypes) (composer.UploadOptions, composer.ImageTypes, error) {
var awsOptions AWSS3UploadRequestOptions
err := json.Unmarshal(options, &awsOptions)
if err != nil {
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Unable to unmarshal UploadRequestOptions")
}
return composer.AWSS3UploadOptions{
Region: s.aws.Region,
}, composerImageType, nil
}

func (s *Server) buildUploadOptions(ur UploadRequest, it ImageTypes) (composer.UploadOptions, composer.ImageTypes, error) {
// HACK deepmap doesn't really support `oneOf`, so marshal and unmarshal into target object
optionsJSON, err := json.Marshal(ur.Options)
if err != nil {
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Unable to marshal UploadRequestOptions")
}
switch ur.Type {
case UploadTypesAws:
var composerImageType composer.ImageTypes
switch it {
case ImageTypesAws:
fallthrough
case ImageTypesAmi:
composerImageType = composer.ImageTypesAws
default:
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Invalid image type for upload target")
}

switch it {

// Upload Type AWS
case ImageTypesAmi, ImageTypesAws:
var awsOptions AWSUploadRequestOptions
err = json.Unmarshal(optionsJSON, &awsOptions)
if err != nil {
Expand All @@ -635,43 +640,22 @@ func (s *Server) buildUploadOptions(ur UploadRequest, it ImageTypes) (composer.U
return composer.AWSEC2UploadOptions{
Region: s.aws.Region,
ShareWithAccounts: awsOptions.ShareWithAccounts,
}, composerImageType, nil
case UploadTypesAwsS3:
var composerImageType composer.ImageTypes
switch it {
case ImageTypesEdgeCommit:
fallthrough
case ImageTypesRhelEdgeCommit:
composerImageType = composer.ImageTypesEdgeCommit
case ImageTypesEdgeInstaller:
fallthrough
case ImageTypesRhelEdgeInstaller:
composerImageType = composer.ImageTypesEdgeInstaller
case ImageTypesGuestImage:
composerImageType = composer.ImageTypesGuestImage
case ImageTypesImageInstaller:
composerImageType = composer.ImageTypesImageInstaller
case ImageTypesVsphere:
composerImageType = composer.ImageTypesVsphere
default:
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Invalid image type for upload target")
}
var awsOptions AWSS3UploadRequestOptions
err = json.Unmarshal(optionsJSON, &awsOptions)
if err != nil {
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Unable to unmarshal UploadRequestOptions")
}
return composer.AWSS3UploadOptions{
Region: s.aws.Region,
}, composerImageType, nil
case UploadTypesGcp:
var composerImageType composer.ImageTypes
switch it {
case ImageTypesGcp:
composerImageType = composer.ImageTypesGcp
default:
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Invalid image type for upload target")
}
}, composer.ImageTypesAws, nil

// Upload Type AWS S3
case ImageTypesEdgeCommit, ImageTypesRhelEdgeCommit:
return s.buildAWSS3UploadOptions(optionsJSON, composer.ImageTypesEdgeCommit)
case ImageTypesEdgeInstaller, ImageTypesRhelEdgeInstaller:
return s.buildAWSS3UploadOptions(optionsJSON, composer.ImageTypesEdgeInstaller)
case ImageTypesGuestImage:
return s.buildAWSS3UploadOptions(optionsJSON, composer.ImageTypesGuestImage)
case ImageTypesImageInstaller:
return s.buildAWSS3UploadOptions(optionsJSON, composer.ImageTypesImageInstaller)
case ImageTypesVsphere:
return s.buildAWSS3UploadOptions(optionsJSON, composer.ImageTypesVsphere)

// Upload Type GCP
case ImageTypesGcp:
var gcpOptions GCPUploadRequestOptions
err = json.Unmarshal(optionsJSON, &gcpOptions)
if err != nil {
Expand All @@ -681,17 +665,10 @@ func (s *Server) buildUploadOptions(ur UploadRequest, it ImageTypes) (composer.U
Bucket: s.gcp.Bucket,
Region: s.gcp.Region,
ShareWithAccounts: &gcpOptions.ShareWithAccounts,
}, composerImageType, nil
case UploadTypesAzure:
var composerImageType composer.ImageTypes
switch it {
case ImageTypesAzure:
fallthrough
case ImageTypesVhd:
composerImageType = composer.ImageTypesAzure
default:
return nil, "", echo.NewHTTPError(http.StatusBadRequest, "Invalid image type for upload target")
}
}, composer.ImageTypesGcp, nil

// Upload Type Azure
case ImageTypesAzure, ImageTypesVhd:
var azureOptions AzureUploadRequestOptions
err = json.Unmarshal(optionsJSON, &azureOptions)
if err != nil {
Expand All @@ -702,7 +679,8 @@ func (s *Server) buildUploadOptions(ur UploadRequest, it ImageTypes) (composer.U
SubscriptionId: azureOptions.SubscriptionId,
ResourceGroup: azureOptions.ResourceGroup,
Location: s.azure.Location,
}, composerImageType, nil
}, composer.ImageTypesAzure, nil

default:
return nil, "", echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Unknown UploadRequest type %s", ur.Type))
}
Expand Down

0 comments on commit e44c5ee

Please sign in to comment.