From 0ad26cce01ecf2a01f68256568c3b2f7b6478ce8 Mon Sep 17 00:00:00 2001 From: OblateSpheroid Date: Mon, 31 Aug 2020 08:36:09 -0400 Subject: [PATCH] Feat (oracle-oci): allow freeform and defined tags to be added instance (#9802) * feat (oracle-oci): allow freeform and defined tags to be added to instance (#6313) * docs (oracle-oci): add descriptions for instance_tags and instance_defined_tags (#6313) * fix: fmt * fix: generate hcl2spec --- builder/oracle/oci/config.go | 4 +++- builder/oracle/oci/config.hcl2spec.go | 4 ++++ builder/oracle/oci/driver_oci.go | 2 ++ website/pages/docs/builders/oracle/oci.mdx | 6 ++++++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/builder/oracle/oci/config.go b/builder/oracle/oci/config.go index c046cecc7..c6ca467e8 100644 --- a/builder/oracle/oci/config.go +++ b/builder/oracle/oci/config.go @@ -61,7 +61,9 @@ type Config struct { ImageName string `mapstructure:"image_name"` // Instance - InstanceName string `mapstructure:"instance_name"` + InstanceName string `mapstructure:"instance_name"` + InstanceTags map[string]string `mapstructure:"instance_tags"` + InstanceDefinedTags map[string]map[string]interface{} `mapstructure:"instance_defined_tags"` // Metadata optionally contains custom metadata key/value pairs provided in the // configuration. While this can be used to set metadata["user_data"] the explicit diff --git a/builder/oracle/oci/config.hcl2spec.go b/builder/oracle/oci/config.hcl2spec.go index 4d86a92f5..7f5fe7d2a 100644 --- a/builder/oracle/oci/config.hcl2spec.go +++ b/builder/oracle/oci/config.hcl2spec.go @@ -79,6 +79,8 @@ type FlatConfig struct { Shape *string `mapstructure:"shape" cty:"shape" hcl:"shape"` ImageName *string `mapstructure:"image_name" cty:"image_name" hcl:"image_name"` InstanceName *string `mapstructure:"instance_name" cty:"instance_name" hcl:"instance_name"` + InstanceTags map[string]string `mapstructure:"instance_tags" cty:"instance_tags" hcl:"instance_tags"` + InstanceDefinedTags map[string]map[string]interface{} `mapstructure:"instance_defined_tags" cty:"instance_defined_tags" hcl:"instance_defined_tags"` Metadata map[string]string `mapstructure:"metadata" cty:"metadata" hcl:"metadata"` UserData *string `mapstructure:"user_data" cty:"user_data" hcl:"user_data"` UserDataFile *string `mapstructure:"user_data_file" cty:"user_data_file" hcl:"user_data_file"` @@ -169,6 +171,8 @@ func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { "shape": &hcldec.AttrSpec{Name: "shape", Type: cty.String, Required: false}, "image_name": &hcldec.AttrSpec{Name: "image_name", Type: cty.String, Required: false}, "instance_name": &hcldec.AttrSpec{Name: "instance_name", Type: cty.String, Required: false}, + "instance_tags": &hcldec.AttrSpec{Name: "instance_tags", Type: cty.Map(cty.String), Required: false}, + "instance_defined_tags": &hcldec.AttrSpec{Name: "instance_defined_tags", Type: cty.Map(cty.String), Required: false}, "metadata": &hcldec.AttrSpec{Name: "metadata", Type: cty.Map(cty.String), Required: false}, "user_data": &hcldec.AttrSpec{Name: "user_data", Type: cty.String, Required: false}, "user_data_file": &hcldec.AttrSpec{Name: "user_data_file", Type: cty.String, Required: false}, diff --git a/builder/oracle/oci/driver_oci.go b/builder/oracle/oci/driver_oci.go index 6c619f48c..4605f3bca 100644 --- a/builder/oracle/oci/driver_oci.go +++ b/builder/oracle/oci/driver_oci.go @@ -54,6 +54,8 @@ func (d *driverOCI) CreateInstance(ctx context.Context, publicKey string) (strin instanceDetails := core.LaunchInstanceDetails{ AvailabilityDomain: &d.cfg.AvailabilityDomain, CompartmentId: &d.cfg.CompartmentID, + DefinedTags: d.cfg.InstanceDefinedTags, + FreeformTags: d.cfg.InstanceTags, ImageId: &d.cfg.BaseImageID, Shape: &d.cfg.Shape, SubnetId: &d.cfg.SubnetID, diff --git a/website/pages/docs/builders/oracle/oci.mdx b/website/pages/docs/builders/oracle/oci.mdx index a04b6f66f..209282f43 100644 --- a/website/pages/docs/builders/oracle/oci.mdx +++ b/website/pages/docs/builders/oracle/oci.mdx @@ -134,6 +134,12 @@ builder. - `instance_name` (string) - The name to assign to the instance used for the image creation process. If not set a name of the form `instanceYYYYMMDDhhmmss` will be used. +- `instance_tags` (map of strings) - Add one or more freeform tags to the instance used for the + image creation process. + +- `instance_defined_tags` (map of maps of strings) - Add one or more defined tags for a given namespace + to the instance used for the image creation process. + - `use_private_ip` (boolean) - Use private ip addresses to connect to the instance via ssh.