Ejemplo n.º 1
0
    def run(self):

        try:
            _parameter_override_keys = get_template_parameters(
                template_file=self.template_file)
        except ValueError as ex:
            LOG.debug("Failed to parse SAM template", exc_info=ex)
            raise GuidedDeployFailedError(str(ex)) from ex

        guided_config = GuidedConfig(template_file=self.template_file,
                                     section=self.config_section)
        guided_config.read_config_showcase(
            self.config_file or DEFAULT_CONFIG_FILE_NAME, )

        self.guided_prompts(_parameter_override_keys)

        if self.save_to_config:
            guided_config.save_config(
                self._parameter_overrides,
                self.config_env or DEFAULT_ENV,
                self.config_file or DEFAULT_CONFIG_FILE_NAME,
                stack_name=self.guided_stack_name,
                s3_bucket=self.guided_s3_bucket,
                s3_prefix=self.guided_s3_prefix,
                image_repositories=self.guided_image_repositories,
                region=self.guided_region,
                profile=self.guided_profile,
                confirm_changeset=self.confirm_changeset,
                capabilities=self._capabilities,
                signing_profiles=self.signing_profiles,
            )
Ejemplo n.º 2
0
    def run(self):

        try:
            _parameter_override_keys = get_template_parameters(
                template_file=self.template_file)
        except ValueError as ex:
            LOG.debug("Failed to parse SAM template", exc_info=ex)
            raise GuidedDeployFailedError(str(ex))

        guided_config = GuidedConfig(template_file=self.template_file,
                                     section=self.config_section)
        guided_config.read_config_showcase()

        self.guided_prompts(_parameter_override_keys)

        if self.save_to_config:
            guided_config.save_config(
                self._parameter_overrides,
                stack_name=self.guided_stack_name,
                s3_bucket=self.guided_s3_bucket,
                s3_prefix=self.guided_s3_prefix,
                region=self.guided_region,
                profile=self.guided_profile,
                confirm_changeset=self.confirm_changeset,
                capabilities=self._capabilities,
            )
Ejemplo n.º 3
0
    def test_must_read_file_and_get_parameters(self, pathlib_mock, yaml_parse_mock):
        filename = "filename"
        file_data = "contents of the file"
        parse_result = {"Parameters": {"Myparameter": "String"}}

        pathlib_mock.Path.return_value.exists.return_value = True  # Fake that the file exists

        m = mock_open(read_data=file_data)
        yaml_parse_mock.return_value = parse_result

        with patch("samcli.commands._utils.template.open", m):
            result = get_template_parameters(filename)

            self.assertEqual(result, {"Myparameter": "String"})

        m.assert_called_with(filename, "r", encoding="utf-8")
        yaml_parse_mock.assert_called_with(file_data)
Ejemplo n.º 4
0
def do_cli(
    template_file,
    stack_name,
    s3_bucket,
    force_upload,
    s3_prefix,
    kms_key_id,
    parameter_overrides,
    capabilities,
    no_execute_changeset,
    role_arn,
    notification_arns,
    fail_on_empty_changeset,
    use_json,
    tags,
    metadata,
    guided,
    confirm_changeset,
    region,
    profile,
):
    from samcli.commands.package.package_context import PackageContext
    from samcli.commands.deploy.deploy_context import DeployContext

    # set capabilities and changeset decision to None, before guided gets input from the user
    changeset_decision = None
    _capabilities = None
    _parameter_overrides = None
    guided_stack_name = None
    guided_s3_bucket = None
    guided_s3_prefix = None
    guided_region = None

    if guided:

        try:
            _parameter_override_keys = get_template_parameters(template_file=template_file)
        except ValueError as ex:
            LOG.debug("Failed to parse SAM template", exc_info=ex)
            raise GuidedDeployFailedError(str(ex))

        read_config_showcase(template_file=template_file)

        guided_stack_name, guided_s3_bucket, guided_s3_prefix, guided_region, guided_profile, changeset_decision, _capabilities, _parameter_overrides, save_to_config = guided_deploy(
            stack_name, s3_bucket, region, profile, confirm_changeset, _parameter_override_keys, parameter_overrides
        )

        if save_to_config:
            save_config(
                template_file,
                stack_name=guided_stack_name,
                s3_bucket=guided_s3_bucket,
                s3_prefix=guided_s3_prefix,
                region=guided_region,
                profile=guided_profile,
                confirm_changeset=changeset_decision,
                capabilities=_capabilities,
                parameter_overrides=_parameter_overrides,
            )

    print_deploy_args(
        stack_name=guided_stack_name if guided else stack_name,
        s3_bucket=guided_s3_bucket if guided else s3_bucket,
        region=guided_region if guided else region,
        capabilities=_capabilities if guided else capabilities,
        parameter_overrides=_parameter_overrides if guided else parameter_overrides,
        confirm_changeset=changeset_decision if guided else confirm_changeset,
    )

    with osutils.tempfile_platform_independent() as output_template_file:

        with PackageContext(
            template_file=template_file,
            s3_bucket=guided_s3_bucket if guided else s3_bucket,
            s3_prefix=guided_s3_prefix if guided else s3_prefix,
            output_template_file=output_template_file.name,
            kms_key_id=kms_key_id,
            use_json=use_json,
            force_upload=force_upload,
            metadata=metadata,
            on_deploy=True,
            region=guided_region if guided else region,
            profile=profile,
        ) as package_context:
            package_context.run()

        with DeployContext(
            template_file=output_template_file.name,
            stack_name=guided_stack_name if guided else stack_name,
            s3_bucket=guided_s3_bucket if guided else s3_bucket,
            force_upload=force_upload,
            s3_prefix=guided_s3_prefix if guided else s3_prefix,
            kms_key_id=kms_key_id,
            parameter_overrides=sanitize_parameter_overrides(_parameter_overrides) if guided else parameter_overrides,
            capabilities=_capabilities if guided else capabilities,
            no_execute_changeset=no_execute_changeset,
            role_arn=role_arn,
            notification_arns=notification_arns,
            fail_on_empty_changeset=fail_on_empty_changeset,
            tags=tags,
            region=guided_region if guided else region,
            profile=profile,
            confirm_changeset=changeset_decision if guided else confirm_changeset,
        ) as deploy_context:
            deploy_context.run()