Skip to content

Commit

Permalink
Add labels to KMS crypto key (#3910)
Browse files Browse the repository at this point in the history
Signed-off-by: Modular Magician <[email protected]>
  • Loading branch information
modular-magician authored and rileykarson committed Jun 25, 2019
1 parent a0622be commit bbd8825
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
39 changes: 39 additions & 0 deletions google/resource_kms_crypto_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ func resourceKmsCryptoKey() *schema.Resource {
Required: true,
ForceNew: true,
},
"labels": {
Type: schema.TypeMap,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"purpose": {
Type: schema.TypeString,
Optional: true,
Expand Down Expand Up @@ -108,6 +113,12 @@ func resourceKmsCryptoKeyCreate(d *schema.ResourceData, meta interface{}) error
config := meta.(*Config)

obj := make(map[string]interface{})
labelsProp, err := expandKmsCryptoKeyLabels(d.Get("labels"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("labels"); !isEmptyValue(reflect.ValueOf(labelsProp)) && (ok || !reflect.DeepEqual(v, labelsProp)) {
obj["labels"] = labelsProp
}
purposeProp, err := expandKmsCryptoKeyPurpose(d.Get("purpose"), d, config)
if err != nil {
return err
Expand Down Expand Up @@ -173,6 +184,9 @@ func resourceKmsCryptoKeyRead(d *schema.ResourceData, meta interface{}) error {
return err
}

if err := d.Set("labels", flattenKmsCryptoKeyLabels(res["labels"], d)); err != nil {
return fmt.Errorf("Error reading CryptoKey: %s", err)
}
if err := d.Set("purpose", flattenKmsCryptoKeyPurpose(res["purpose"], d)); err != nil {
return fmt.Errorf("Error reading CryptoKey: %s", err)
}
Expand All @@ -190,6 +204,12 @@ func resourceKmsCryptoKeyUpdate(d *schema.ResourceData, meta interface{}) error
config := meta.(*Config)

obj := make(map[string]interface{})
labelsProp, err := expandKmsCryptoKeyLabels(d.Get("labels"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("labels"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, labelsProp)) {
obj["labels"] = labelsProp
}
rotationPeriodProp, err := expandKmsCryptoKeyRotationPeriod(d.Get("rotation_period"), d, config)
if err != nil {
return err
Expand All @@ -216,6 +236,10 @@ func resourceKmsCryptoKeyUpdate(d *schema.ResourceData, meta interface{}) error
log.Printf("[DEBUG] Updating CryptoKey %q: %#v", d.Id(), obj)
updateMask := []string{}

if d.HasChange("labels") {
updateMask = append(updateMask, "labels")
}

if d.HasChange("rotation_period") {
updateMask = append(updateMask, "rotationPeriod,nextRotationTime")
}
Expand Down Expand Up @@ -283,6 +307,10 @@ func resourceKmsCryptoKeyImport(d *schema.ResourceData, meta interface{}) ([]*sc
return []*schema.ResourceData{d}, nil
}

func flattenKmsCryptoKeyLabels(v interface{}, d *schema.ResourceData) interface{} {
return v
}

func flattenKmsCryptoKeyPurpose(v interface{}, d *schema.ResourceData) interface{} {
return v
}
Expand Down Expand Up @@ -314,6 +342,17 @@ func flattenKmsCryptoKeyVersionTemplateProtectionLevel(v interface{}, d *schema.
return v
}

func expandKmsCryptoKeyLabels(v interface{}, d TerraformResourceData, config *Config) (map[string]string, error) {
if v == nil {
return map[string]string{}, nil
}
m := make(map[string]string)
for k, val := range v.(map[string]interface{}) {
m[k] = val.(string)
}
return m, nil
}

func expandKmsCryptoKeyPurpose(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
return v, nil
}
Expand Down
3 changes: 3 additions & 0 deletions google/resource_kms_crypto_key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,9 @@ resource "google_kms_key_ring" "key_ring" {
resource "google_kms_crypto_key" "crypto_key" {
name = "%s"
key_ring = "${google_kms_key_ring.key_ring.self_link}"
labels = {
key = "value"
}
}
`, projectId, projectId, projectOrg, projectBillingAccount, keyRingName, cryptoKeyName)
}
Expand Down
4 changes: 4 additions & 0 deletions website/docs/r/kms_crypto_key.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ The following arguments are supported:
- - -


* `labels` -
(Optional)
Labels with user-defined metadata to apply to this reosure.

* `purpose` -
(Optional)
The immutable purpose of this CryptoKey. See the
Expand Down

0 comments on commit bbd8825

Please sign in to comment.