Skip to content

Commit 6254a5d

Browse files
authored
Merge pull request #333 from rogerhu/rogerh/ISSUE-332-2
UEFI_COMPATIBLE is not needed when passing in image guest OS features
2 parents 2657ce0 + 7ffa1b1 commit 6254a5d

5 files changed

Lines changed: 74 additions & 37 deletions

File tree

builder/googlecompute/config_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -850,9 +850,7 @@ func testConfig(t *testing.T) (config map[string]interface{}, tempAccountFile st
850850
"image_licenses": []string{
851851
"test-license",
852852
},
853-
"image_guest_os_features": []string{
854-
"UEFI_COMPATIBLE",
855-
},
853+
"image_guest_os_features": []string{},
856854
"image_storage_locations": []string{
857855
"us-east1",
858856
},

builder/googlecompute/step_create_image.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (s *StepCreateImage) Run(ctx context.Context, state multistep.StateBag) mul
5858
})
5959
}
6060

61-
shieldedVMStateConfig, shieldErr := common.CreateShieldedVMStateConfig(config.ImageGuestOsFeatures, config.ImagePlatformKey, config.ImageKeyExchangeKey, config.ImageSignaturesDB, config.ImageForbiddenSignaturesDB)
61+
shieldedVMStateConfig, shieldErr := common.CreateShieldedVMStateConfig(config.ImagePlatformKey, config.ImageKeyExchangeKey, config.ImageSignaturesDB, config.ImageForbiddenSignaturesDB)
6262

6363
if shieldErr != nil {
6464
ui.Error(shieldErr.Error())

builder/googlecompute/step_create_image_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,47 @@ func TestStepCreateImage_setsDeprecationFields(t *testing.T) {
9393
assert.Equal(t, c.DeleteAt, d.DeprecatedImageStatus.Deleted, "DeleteAt mismatch")
9494
assert.Contains(t, []string{"DEPRECATED", "ACTIVE"}, d.DeprecatedImageStatus.State, "State should be DEPRECATED or ACTIVE")
9595
}
96+
97+
func TestStepCreateImageNonUEFI_image(t *testing.T) {
98+
state := testState(t)
99+
step := new(StepCreateImage)
100+
defer step.Cleanup(state)
101+
102+
c := state.Get("config").(*Config)
103+
c.ImageGuestOsFeatures = []string{}
104+
105+
// run the step
106+
action := step.Run(context.Background(), state)
107+
assert.Equal(t, action, multistep.ActionContinue, "Step did not pass.")
108+
109+
uncastImage, ok := state.GetOk("image")
110+
assert.True(t, ok, "State does not have resulting image.")
111+
image, ok := uncastImage.(*common.Image)
112+
assert.True(t, ok, "Image in state is not an Image.")
113+
114+
assert.Len(t, image.ShieldedInstanceInitialState.Keks, 1)
115+
assert.Len(t, image.ShieldedInstanceInitialState.Dbs, 1)
116+
assert.Len(t, image.ShieldedInstanceInitialState.Dbxs, 1)
117+
}
118+
119+
func TestStepCreateImageUEFI_image(t *testing.T) {
120+
state := testState(t)
121+
step := new(StepCreateImage)
122+
defer step.Cleanup(state)
123+
124+
c := state.Get("config").(*Config)
125+
c.ImageGuestOsFeatures = []string{"UEFI_COMPATIBLE"}
126+
127+
// run the step
128+
action := step.Run(context.Background(), state)
129+
assert.Equal(t, action, multistep.ActionContinue, "Step did not pass.")
130+
131+
uncastImage, ok := state.GetOk("image")
132+
assert.True(t, ok, "State does not have resulting image.")
133+
image, ok := uncastImage.(*common.Image)
134+
assert.True(t, ok, "Image in state is not an Image.")
135+
136+
assert.Len(t, image.ShieldedInstanceInitialState.Keks, 1)
137+
assert.Len(t, image.ShieldedInstanceInitialState.Dbs, 1)
138+
assert.Len(t, image.ShieldedInstanceInitialState.Dbxs, 1)
139+
}

lib/common/shielded_vms.go

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -33,40 +33,35 @@ func FillFileContentBuffer(certOrKeyFile string) (*compute.FileContentBuffer, er
3333
return shield, nil
3434
}
3535

36-
func CreateShieldedVMStateConfig(imageGuestOsFeatures []string, imagePlatformKey string, imageKeyExchangeKey []string, imageSignaturesDB []string, imageForbiddenSignaturesDB []string) (*compute.InitialStateConfig, error) {
36+
func CreateShieldedVMStateConfig(imagePlatformKey string, imageKeyExchangeKey []string, imageSignaturesDB []string, imageForbiddenSignaturesDB []string) (*compute.InitialStateConfig, error) {
3737
shieldedVMStateConfig := &compute.InitialStateConfig{}
38-
for _, v := range imageGuestOsFeatures {
39-
if v == "UEFI_COMPATIBLE" {
40-
if imagePlatformKey != "" {
41-
shieldedData, err := FillFileContentBuffer(imagePlatformKey)
42-
if err != nil {
43-
return nil, err
44-
}
45-
shieldedVMStateConfig.Pk = shieldedData
46-
}
47-
for _, v := range imageKeyExchangeKey {
48-
shieldedData, err := FillFileContentBuffer(v)
49-
if err != nil {
50-
return nil, err
51-
}
52-
shieldedVMStateConfig.Keks = append(shieldedVMStateConfig.Keks, shieldedData)
53-
}
54-
for _, v := range imageSignaturesDB {
55-
shieldedData, err := FillFileContentBuffer(v)
56-
if err != nil {
57-
return nil, err
58-
}
59-
shieldedVMStateConfig.Dbs = append(shieldedVMStateConfig.Dbs, shieldedData)
60-
}
61-
for _, v := range imageForbiddenSignaturesDB {
62-
shieldedData, err := FillFileContentBuffer(v)
63-
if err != nil {
64-
return nil, err
65-
}
66-
shieldedVMStateConfig.Dbxs = append(shieldedVMStateConfig.Dbxs, shieldedData)
67-
}
68-
38+
if imagePlatformKey != "" {
39+
shieldedData, err := FillFileContentBuffer(imagePlatformKey)
40+
if err != nil {
41+
return nil, err
42+
}
43+
shieldedVMStateConfig.Pk = shieldedData
44+
}
45+
for _, v := range imageKeyExchangeKey {
46+
shieldedData, err := FillFileContentBuffer(v)
47+
if err != nil {
48+
return nil, err
49+
}
50+
shieldedVMStateConfig.Keks = append(shieldedVMStateConfig.Keks, shieldedData)
51+
}
52+
for _, v := range imageSignaturesDB {
53+
shieldedData, err := FillFileContentBuffer(v)
54+
if err != nil {
55+
return nil, err
56+
}
57+
shieldedVMStateConfig.Dbs = append(shieldedVMStateConfig.Dbs, shieldedData)
58+
}
59+
for _, v := range imageForbiddenSignaturesDB {
60+
shieldedData, err := FillFileContentBuffer(v)
61+
if err != nil {
62+
return nil, err
6963
}
64+
shieldedVMStateConfig.Dbxs = append(shieldedVMStateConfig.Dbxs, shieldedData)
7065
}
7166
return shieldedVMStateConfig, nil
7267
}

post-processor/googlecompute-import/post-processor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, artifa
221221
return nil, false, false, err
222222
}
223223

224-
shieldedVMStateConfig, err := common.CreateShieldedVMStateConfig(p.config.ImageGuestOsFeatures, p.config.ImagePlatformKey, p.config.ImageKeyExchangeKey, p.config.ImageSignaturesDB, p.config.ImageForbiddenSignaturesDB)
224+
shieldedVMStateConfig, err := common.CreateShieldedVMStateConfig(p.config.ImagePlatformKey, p.config.ImageKeyExchangeKey, p.config.ImageSignaturesDB, p.config.ImageForbiddenSignaturesDB)
225225
if err != nil {
226226
return nil, false, false, err
227227
}

0 commit comments

Comments
 (0)