| 387 | return template_dict, template_str, template_size |
| 388 | |
| 389 | def deploy( |
| 390 | self, |
| 391 | deployer, |
| 392 | stack_name, |
| 393 | template_str, |
| 394 | parameters, |
| 395 | capabilities, |
| 396 | execute_changeset, |
| 397 | role_arn, |
| 398 | notification_arns, |
| 399 | s3_uploader, |
| 400 | tags, |
| 401 | fail_on_empty_changeset=False, |
| 402 | disable_rollback=False, |
| 403 | ): |
| 404 | try: |
| 405 | result = deployer.create_and_wait_for_changeset( |
| 406 | stack_name=stack_name, |
| 407 | cfn_template=template_str, |
| 408 | parameter_values=parameters, |
| 409 | capabilities=capabilities, |
| 410 | role_arn=role_arn, |
| 411 | notification_arns=notification_arns, |
| 412 | s3_uploader=s3_uploader, |
| 413 | tags=tags, |
| 414 | ) |
| 415 | except exceptions.ChangeEmptyError as ex: |
| 416 | if fail_on_empty_changeset: |
| 417 | raise |
| 418 | write_exception(ex, outfile=get_stdout_text_writer()) |
| 419 | return 0 |
| 420 | |
| 421 | if execute_changeset: |
| 422 | deployer.execute_changeset( |
| 423 | result.changeset_id, stack_name, disable_rollback |
| 424 | ) |
| 425 | deployer.wait_for_execute(stack_name, result.changeset_type) |
| 426 | sys.stdout.write( |
| 427 | self.MSG_EXECUTE_SUCCESS.format(stack_name=stack_name) |
| 428 | ) |
| 429 | else: |
| 430 | sys.stdout.write( |
| 431 | self.MSG_NO_EXECUTE_CHANGESET.format( |
| 432 | changeset_id=result.changeset_id |
| 433 | ) |
| 434 | ) |
| 435 | |
| 436 | sys.stdout.flush() |
| 437 | return 0 |
| 438 | |
| 439 | def merge_parameters(self, template_dict, parameter_overrides): |
| 440 | """ |