Merge pull request #2324 from tcahill/group-launch-permissions

Fix setting ami_groups
This commit is contained in:
Mitchell Hashimoto 2015-06-29 09:30:51 -07:00
commit 95dd79740f
2 changed files with 32 additions and 11 deletions

View File

@ -44,12 +44,21 @@ func (s *StepModifyAMIAttributes) Run(state multistep.StateBag) multistep.StepAc
if len(s.Groups) > 0 {
groups := make([]*string, len(s.Groups))
adds := make([]*ec2.LaunchPermission, len(s.Groups))
addGroups := &ec2.ModifyImageAttributeInput{
LaunchPermission: &ec2.LaunchPermissionModifications{},
}
for i, g := range s.Groups {
groups[i] = &g
}
options["groups"] = &ec2.ModifyImageAttributeInput{
UserGroups: groups,
groups[i] = aws.String(g)
adds[i] = &ec2.LaunchPermission{
Group: aws.String(g),
}
}
addGroups.UserGroups = groups
addGroups.LaunchPermission.Add = adds
options["groups"] = addGroups
}
if len(s.Users) > 0 {

View File

@ -50,11 +50,11 @@ func TestBuilderAcc_amiSharing(t *testing.T) {
PreCheck: func() { testAccPreCheck(t) },
Builder: &Builder{},
Template: testBuilderAccSharing,
Check: checkAMISharing(1, "932021504756"),
Check: checkAMISharing(2, "932021504756", "all"),
})
}
func checkAMISharing(count int, uid string) builderT.TestCheckFunc {
func checkAMISharing(count int, uid, group string) builderT.TestCheckFunc {
return func(artifacts []packer.Artifact) error {
if len(artifacts) > 1 {
return fmt.Errorf("more than 1 artifact")
@ -84,17 +84,28 @@ func checkAMISharing(count int, uid string) builderT.TestCheckFunc {
return fmt.Errorf("Error in Image Attributes, expected (%d) Launch Permissions, got (%d)", count, len(imageResp.LaunchPermissions))
}
found := false
userFound := false
for _, lp := range imageResp.LaunchPermissions {
if uid == *lp.UserID {
found = true
if lp.UserID != nil && uid == *lp.UserID {
userFound = true
}
}
if !found {
if !userFound {
return fmt.Errorf("Error in Image Attributes, expected User ID (%s) to have Launch Permissions, but was not found", uid)
}
groupFound := false
for _, lp := range imageResp.LaunchPermissions {
if lp.Group != nil && group == *lp.Group {
groupFound = true
}
}
if !groupFound {
return fmt.Errorf("Error in Image Attributes, expected Group ID (%s) to have Launch Permissions, but was not found", group)
}
return nil
}
}
@ -203,7 +214,8 @@ const testBuilderAccSharing = `
"source_ami": "ami-76b2a71e",
"ssh_username": "ubuntu",
"ami_name": "packer-test {{timestamp}}",
"ami_users":["932021504756"]
"ami_users":["932021504756"],
"ami_groups":["all"]
}]
}
`