debian-forge-composer/internal/target/azure_image_target.go
2024-11-21 11:22:20 +01:00

52 lines
1.9 KiB
Go

package target
const TargetNameAzureImage TargetName = "org.osbuild.azure.image"
type HyperVGenerationType string
const (
HyperVGenV1 HyperVGenerationType = "V1"
HyperVGenV2 HyperVGenerationType = "V2"
)
type AzureImageTargetOptions struct {
TenantID string `json:"tenant_id"`
Location string `json:"location,omitempty"`
SubscriptionID string `json:"subscription_id"`
ResourceGroup string `json:"resource_group"`
HyperVGeneration HyperVGenerationType `json:"hyperv_generation"`
}
func (AzureImageTargetOptions) isTargetOptions() {}
// NewAzureImageTarget creates org.osbuild.azure.image target
//
// This target uploads and registers an Azure Image. The image can be then
// immediately used to spin up a virtual machine.
//
// The target uses Azure OAuth credentials. In most cases you want to create
// a service principal for this purpose, see:
// https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals
// The credentials are not passed in the target options, instead they are
// defined in the worker. If the worker doesn't have Azure credentials
// and gets a job with this target, the job will fail.
//
// The Tenant ID for the authorization process is specified in the target
// options. This means that this target can be used for multi-tenant
// applications.
//
// If you need to just upload a PageBlob into Azure Storage, see the
// org.osbuild.azure target.
func NewAzureImageTarget(options *AzureImageTargetOptions) *Target {
return newTarget(TargetNameAzureImage, options)
}
type AzureImageTargetResultOptions struct {
ImageName string `json:"image_name"`
}
func (AzureImageTargetResultOptions) isTargetResultOptions() {}
func NewAzureImageTargetResult(options *AzureImageTargetResultOptions, artifact *OsbuildArtifact) *TargetResult {
return newTargetResult(TargetNameAzureImage, options, artifact)
}