diff --git a/builder/azure/arm/config.go b/builder/azure/arm/config.go index df0b7a4f6..7dd94efe5 100644 --- a/builder/azure/arm/config.go +++ b/builder/azure/arm/config.go @@ -73,6 +73,15 @@ type SharedImageGallery struct { ImageVersion string `mapstructure:"image_version"` } +type SharedImageGalleryDestination struct { + SigDestinationSubscription string `mapstructure:"subscription"` + SigDestinationResourceGroup string `mapstructure:"resource_group"` + SigDestinationGalleryName string `mapstructure:"gallery_name"` + SigDestinationImageName string `mapstructure:"image_name"` + SigDestinationImageVersion string `mapstructure:"image_version"` + SigDestinationReplicationRegions []string `mapstructure:"replication_regions"` +} + type Config struct { common.PackerConfig `mapstructure:",squash"` @@ -86,6 +95,9 @@ type Config struct { // Shared Gallery SharedGallery SharedImageGallery `mapstructure:"shared_image_gallery"` + // Shared Gallery Destination + SharedGalleryDestination SharedImageGalleryDestination `mapstructure:"shared_image_gallery_destination"` + // Compute ImagePublisher string `mapstructure:"image_publisher"` ImageOffer string `mapstructure:"image_offer"` @@ -559,16 +571,16 @@ func assertRequiredParametersSet(c *Config, errs *packer.MultiError) { } } else if c.ImageUrl == "" && c.ImagePublisher == "" { if c.CustomManagedImageResourceGroupName == "" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("An custom_managed_image_resource_group_name must be specified")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A custom_managed_image_resource_group_name must be specified")) } if c.CustomManagedImageName == "" { errs = packer.MultiErrorAppend(errs, fmt.Errorf("A custom_managed_image_name must be specified")) } if c.ManagedImageResourceGroupName == "" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("An managed_image_resource_group_name must be specified")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A managed_image_resource_group_name must be specified")) } if c.ManagedImageName == "" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("An managed_image_name must be specified")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A managed_image_name must be specified")) } } else { if c.ImagePublisher != "" || c.ImageOffer != "" || c.ImageSku != "" || c.ImageVersion != "" { @@ -623,6 +635,24 @@ func assertRequiredParametersSet(c *Config, errs *packer.MultiError) { } } + if c.SharedGalleryDestination.SigDestinationGalleryName != "" { + if c.SharedGalleryDestination.SigDestinationSubscription == "" { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A subscription must be specified for shared_image_gallery_destination")) + } + if c.SharedGalleryDestination.SigDestinationResourceGroup == "" { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A resource_group must be specified for shared_image_gallery_destination")) + } + if c.SharedGalleryDestination.SigDestinationImageName == "" { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("An image_name must be specified for shared_image_gallery_destination")) + } + if c.SharedGalleryDestination.SigDestinationImageVersion == "" { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("An image_version must be specified for shared_image_gallery_destination")) + } + if len(c.SharedGalleryDestination.SigDestinationReplicationRegions) == 0 { + errs = packer.MultiErrorAppend(errs, fmt.Errorf("A list of replication_regions must be specified for shared_image_gallery_destination")) + } + } + if c.ManagedImageOSDiskSnapshotName != "" { if ok, err := assertManagedImageOSDiskSnapshotName(c.ManagedImageOSDiskSnapshotName, "managed_image_os_disk_snapshot_name"); !ok { errs = packer.MultiErrorAppend(errs, err)