New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement bypass deferred binding #1462
Implement bypass deferred binding #1462
Conversation
extensions/Worker.Extensions.Storage.Blobs/src/BlobInputAttribute.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.Storage.Blobs/src/BlobStorageConverter.cs
Outdated
Show resolved
Hide resolved
src/DotNetWorker.Core/Converters/Converter/SupportedConverterType.cs
Outdated
Show resolved
Hide resolved
test/FunctionMetadataGeneratorTests/FunctionMetadataGeneratorTests.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, looks good.
The PR title suggests that this change is to skip the new binding behavior (so things will work as hot it is today - populating binding data in host). But this PR has more changes than that (Ex: using converter types advertised by trigger, using supported types published by converter etc.) Consider updating title as needed.
src/DotNetWorker.Core/Converters/Converter/DefaultInputConverterProvider.cs
Outdated
Show resolved
Hide resolved
src/DotNetWorker.Core/Converters/Converter/DefaultInputConverterProvider.cs
Outdated
Show resolved
Hide resolved
Implement bypass deferred binding
Implement bypass deferred binding
* Add E2E tests for blob SDK type bindings (#1360) * Add analyzer for SupportsDeferredBindingAttribute (#1367) * Update SupportsDeferredBinding diagnostic code & update docs (#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (#1406) * Execution flow added * Update pipeline variables to include tags (#1427) * Update extension variables to not use build number with tags (#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
Implement bypass deferred binding
* Add E2E tests for blob SDK type bindings (#1360) * Add analyzer for SupportsDeferredBindingAttribute (#1367) * Update SupportsDeferredBinding diagnostic code & update docs (#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (#1406) * Execution flow added * Update pipeline variables to include tags (#1427) * Update extension variables to not use build number with tags (#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
Implement bypass deferred binding
* Add E2E tests for blob SDK type bindings (#1360) * Add analyzer for SupportsDeferredBindingAttribute (#1367) * Update SupportsDeferredBinding diagnostic code & update docs (#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (#1406) * Execution flow added * Update pipeline variables to include tags (#1427) * Update extension variables to not use build number with tags (#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
Implement bypass deferred binding
* Add E2E tests for blob SDK type bindings (Azure#1360) * Add analyzer for SupportsDeferredBindingAttribute (Azure#1367) * Update SupportsDeferredBinding diagnostic code & update docs (Azure#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (Azure#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (Azure#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (Azure#1406) * Execution flow added * Update pipeline variables to include tags (Azure#1427) * Update extension variables to not use build number with tags (Azure#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (Azure#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (Azure#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (Azure#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
Issue describing the changes in this PR
Resolves #1495
Design doc - Link
Implementation Summary
Binding Attributes are updated as per design doc - (Refer section: class design)
BlobInputAttribute
,BlobTriggerAttribute
,CosmosDBInputAttribute
BlobStorageConverter
,CosmosDBConverter
AllowConverterFallback
,SupportedConverterTypes
Changes in Function Metadata Generator include -
SupportsDeferredBinding
by analyzing attributes advertised byBindingAttributes
andConverters
Changes in
GrpcFunctionDefinition.cs
-PropertyBags
during Function indexing time to avoid type evaluation during invocation time.converter
and value as Properties for that converter such as all the types supported by it and support for Json Deserializable objects.Invocation flow - (Refer section: Invocation flow)
DefaultInputConversionFeature.cs
TargetType
is supported by the converter before invoking it.Pull request checklist
release_notes.md
Additional information
Additional PR information