From a17ff67164645328d301ee1884c7ba42f35ef7ba Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Tue, 18 May 2021 09:41:37 -0700 Subject: [PATCH] fix(bigtable): Guard for nil EncryptionConfig in Clusters, GetCluster (#4113) * fix(bigtable): Fixes #4105 by guarding on nil EncryptionConfig --- bigtable/admin.go | 13 +++++++++++-- bigtable/integration_test.go | 1 - 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/bigtable/admin.go b/bigtable/admin.go index 3ea3ff539c8..d7c5655067f 100644 --- a/bigtable/admin.go +++ b/bigtable/admin.go @@ -1158,17 +1158,22 @@ func (iac *InstanceAdminClient) Clusters(ctx context.Context, instanceID string) if err != nil { return nil, err } + var cis []*ClusterInfo for _, c := range res.Clusters { nameParts := strings.Split(c.Name, "/") locParts := strings.Split(c.Location, "/") + kmsKeyName := "" + if c.EncryptionConfig != nil { + kmsKeyName = c.EncryptionConfig.KmsKeyName + } cis = append(cis, &ClusterInfo{ Name: nameParts[len(nameParts)-1], Zone: locParts[len(locParts)-1], ServeNodes: int(c.ServeNodes), State: c.State.String(), StorageType: storageTypeFromProto(c.DefaultStorageType), - KMSKeyName: c.EncryptionConfig.KmsKeyName, + KMSKeyName: kmsKeyName, }) } if len(res.FailedLocations) > 0 { @@ -1195,6 +1200,10 @@ func (iac *InstanceAdminClient) GetCluster(ctx context.Context, instanceID, clus return nil, err } + kmsKeyName := "" + if c.EncryptionConfig != nil { + kmsKeyName = c.EncryptionConfig.KmsKeyName + } nameParts := strings.Split(c.Name, "/") locParts := strings.Split(c.Location, "/") cis := &ClusterInfo{ @@ -1203,7 +1212,7 @@ func (iac *InstanceAdminClient) GetCluster(ctx context.Context, instanceID, clus ServeNodes: int(c.ServeNodes), State: c.State.String(), StorageType: storageTypeFromProto(c.DefaultStorageType), - KMSKeyName: c.EncryptionConfig.KmsKeyName, + KMSKeyName: kmsKeyName, } return cis, nil } diff --git a/bigtable/integration_test.go b/bigtable/integration_test.go index 11c4322b988..f377c02fdaa 100644 --- a/bigtable/integration_test.go +++ b/bigtable/integration_test.go @@ -2396,7 +2396,6 @@ func TestIntegration_InstanceUpdate(t *testing.T) { if err != nil { t.Errorf("InstanceInfo: %v", err) } - if iInfo.Name != adminClient.instance { t.Errorf("InstanceInfo returned name %#v, want %#v", iInfo.Name, adminClient.instance) }