func (r *Run) runCreate(client *cf.CloudFormation, d tacks.Document, stack string) error { e := d.Environment tacks.Logger().Infof("Creating stack %s", e.StackName) var ( capabilities []*string onFailure = "DO_NOTHING" tags []*cf.Tag timeoutInMinutes uint8 = 15 ) if d.IsIamCapabilitiesRequired() { capabilities = append(capabilities, aws.String("CAPABILITY_IAM")) } if e.DeleteOnFailure { onFailure = "DELETE" } if e.Timeout > 0 { timeoutInMinutes = e.Timeout } for key, value := range e.Tags { tags = append(tags, &cf.Tag{ Key: aws.String(key), Value: aws.String(value), }) } _, err := client.CreateStack(&cf.CreateStackInput{ Capabilities: capabilities, OnFailure: aws.String(onFailure), StackName: aws.String(e.StackName), Tags: tags, TemplateBody: aws.String(stack), TimeoutInMinutes: aws.Long(int64(timeoutInMinutes)), }) return err }
func (r *Run) runUpdate(client *cf.CloudFormation, d tacks.Document, stack string) error { e := d.Environment tacks.Logger().Infof("Updating stack %s", e.StackName) var ( capabilities []*string ) if d.IsIamCapabilitiesRequired() { capabilities = append(capabilities, aws.String("CAPABILITY_IAM")) } _, err := client.UpdateStack(&cf.UpdateStackInput{ Capabilities: capabilities, StackName: aws.String(e.StackName), TemplateBody: aws.String(stack), }) return err }