func updateStack(svc *cloudformation.CloudFormation, stackName, stackBody string) (string, error) { input := &cloudformation.UpdateStackInput{ Capabilities: []*string{aws.String(cloudformation.CapabilityCapabilityIam)}, StackName: aws.String(stackName), TemplateBody: aws.String(stackBody), } updateOutput, err := svc.UpdateStack(input) if err != nil { return "", fmt.Errorf("Error updating cloudformation stack: %v", err) } return updateOutput.String(), waitForStackUpdateComplete(svc, *updateOutput.StackId) }
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 }
}) AfterEach(func() { if fakeServer != nil { fakeServer.Close() } }) It("should properly parse nested structs in the input", func() { client.UpdateStack( &cloudformation.UpdateStackInput{ StackName: aws.String("some-stack-name"), Parameters: []*cloudformation.Parameter{ &cloudformation.Parameter{ ParameterKey: aws.String("some-key-0"), ParameterValue: aws.String("some-value-0"), }, &cloudformation.Parameter{ ParameterKey: aws.String("some-key-1"), ParameterValue: aws.String("some-value-1"), }, }, }) Expect(fakeBackend.UpdateStackCall.Receives).NotTo(BeNil()) Expect(fakeBackend.UpdateStackCall.Receives.StackName).To(Equal(aws.String("some-stack-name"))) Expect(fakeBackend.UpdateStackCall.Receives.Parameters).To(Equal( []*cloudformation.Parameter{ &cloudformation.Parameter{ ParameterKey: aws.String("some-key-0"), ParameterValue: aws.String("some-value-0"), },