Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion python/rpdk/python/codegen.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,9 @@ def _copy_resource(path, resource_name=None):
handler_package_path.mkdir(parents=True, exist_ok=True)
_copy_resource(handler_package_path / "__init__.py")
_render_template(
handler_package_path / "handlers.py", support_lib_pkg=SUPPORT_LIB_PKG
handler_package_path / "handlers.py",
support_lib_pkg=SUPPORT_LIB_PKG,
type_name=project.type_name,
)
# models.py produced by generate

Expand Down
3 changes: 2 additions & 1 deletion python/rpdk/python/templates/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@

# Use this logger to forward log messages to CloudWatch Logs.
LOG = logging.getLogger(__name__)
TYPE_NAME = "{{ type_name }}"

resource = Resource(ResourceModel)
resource = Resource(TYPE_NAME, ResourceModel)
test_entrypoint = resource.test_entrypoint


Expand Down
5 changes: 4 additions & 1 deletion src/cloudformation_cli_python_lib/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,10 @@ def wrapper(self: Any, event: MutableMapping[str, Any], context: Any) -> Any:


class Resource:
def __init__(self, resouce_model_cls: Type[BaseResourceModel]) -> None:
def __init__(
self, type_name: str, resouce_model_cls: Type[BaseResourceModel]
) -> None:
self.type_name = type_name
self._model_cls: Type[BaseResourceModel] = resouce_model_cls
self._handlers: MutableMapping[Action, HandlerSignature] = {}

Expand Down
13 changes: 7 additions & 6 deletions tests/lib/resource_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,12 @@
"stackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/SampleStack/e"
"722ae60-fe62-11e8-9a0e-0ae8cc519968",
}
TYPE_NAME = "Test::Foo::Bar"


@pytest.fixture
def resource():
return Resource(None)
return Resource(TYPE_NAME, None)


def patch_and_raise(resource, str_to_patch, exc_cls, entrypoint):
Expand All @@ -76,7 +77,7 @@ def test_entrypoint_handler_error(resource):


def test_entrypoint_success():
resource = Resource(Mock())
resource = Resource(TYPE_NAME, Mock())
event = ProgressEvent(status=OperationStatus.SUCCESS, message="")
mock_handler = resource.handler(Action.CREATE)(Mock(return_value=event))

Expand All @@ -98,7 +99,7 @@ def test_entrypoint_success():


def test_entrypoint_success_without_caller_provider_creds():
resource = Resource(Mock())
resource = Resource(TYPE_NAME, Mock())
event = ProgressEvent(status=OperationStatus.SUCCESS, message="")
resource.handler(Action.CREATE)(Mock(return_value=event))

Expand Down Expand Up @@ -145,7 +146,7 @@ def test__parse_request_valid_request():
mock_model = Mock(spec_set=["_deserialize"])
mock_model._deserialize.side_effect = [sentinel.state_out1, sentinel.state_out2]

resource = Resource(mock_model)
resource = Resource(TYPE_NAME, mock_model)

with patch(
"cloudformation_cli_python_lib.resource._get_boto_session"
Expand Down Expand Up @@ -270,7 +271,7 @@ def test__parse_test_request_valid_request():
"callbackContext": None,
}

resource = Resource(mock_model)
resource = Resource(TYPE_NAME, mock_model)

with patch(
"cloudformation_cli_python_lib.resource._get_boto_session"
Expand Down Expand Up @@ -316,7 +317,7 @@ def test_test_entrypoint_success():
mock_model = Mock(spec_set=["_deserialize"])
mock_model._deserialize.side_effect = [None, None]

resource = Resource(mock_model)
resource = Resource(TYPE_NAME, mock_model)
progress_event = ProgressEvent(status=OperationStatus.SUCCESS)
mock_handler = resource.handler(Action.CREATE)(Mock(return_value=progress_event))

Expand Down