diff --git a/builder/openstack/image_config.go b/builder/openstack/image_config.go index 124449eab..b52ad2c67 100644 --- a/builder/openstack/image_config.go +++ b/builder/openstack/image_config.go @@ -8,7 +8,8 @@ import ( // ImageConfig is for common configuration related to creating Images. type ImageConfig struct { - ImageName string `mapstructure:"image_name"` + ImageName string `mapstructure:"image_name"` + ImageMetadata map[string]string `mapstructure:"metadata"` } func (c *ImageConfig) Prepare(ctx *interpolate.Context) []error { diff --git a/builder/openstack/step_create_image.go b/builder/openstack/step_create_image.go index b777e8b0b..9b6ac0cd8 100644 --- a/builder/openstack/step_create_image.go +++ b/builder/openstack/step_create_image.go @@ -30,7 +30,8 @@ func (s *stepCreateImage) Run(state multistep.StateBag) multistep.StepAction { // Create the image ui.Say(fmt.Sprintf("Creating the image: %s", config.ImageName)) imageId, err := servers.CreateImage(client, server.ID, servers.CreateImageOpts{ - Name: config.ImageName, + Name: config.ImageName, + Metadata: config.ImageMetadata, }).ExtractImageID() if err != nil { err := fmt.Errorf("Error creating image: %s", err) diff --git a/website/source/docs/builders/openstack.html.markdown b/website/source/docs/builders/openstack.html.markdown index 01eb3c7e1..56db25474 100644 --- a/website/source/docs/builders/openstack.html.markdown +++ b/website/source/docs/builders/openstack.html.markdown @@ -100,6 +100,9 @@ builder. Rackconnect to assign the machine an IP address before connecting via SSH. Defaults to false. +- `metadata` (object of key/value strings) - Glance metadata that will be applied + to the image. + ## Basic Example: Rackspace public cloud Here is a basic example. This is a working example to build a Ubuntu 12.04 LTS