Repository navigation
Rework cross-language pipeline to use WoT codegen output - #1523
Merged
Merged
Conversation
…s-sdks into timtay/ciFix
Tim Taylor (timtay-microsoft)
marked this pull request as ready for review
October 13, 2026 18:44
Tim Taylor (timtay-microsoft)
requested review from
Raul Leclair (RLeclair),
Avishek (avishekpant),
Carter Tinney (cartertinney),
Carl LeCompte (clecompt-msft),
Alexander Köpke (koepalex),
Marc Schier (marcschier),
Maxim Semenov (maximsemenov80),
olivakar,
Valerie Avva Lim (vaavva) and
Varun Puranik (varunpuranik)
as code owners
October 13, 2026 18:44
Carter Tinney (cartertinney)
approved these changes
Oct 13, 2026
Carter Tinney (cartertinney)
left a comment
Member
There was a problem hiding this comment.
Rust changes look okay, although I'm not sure why we are no longer using the sdkPath
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The Windows regeneration script cannot remove its generated directories because it passes multiple paths to a single rmdir invocation.
1 open finding
What changed in this PR
Reworks code-generation and cross-language testing around WoT Thing Models while isolating the legacy DTDL converter and removing unsupported Go generation.
Changes:
- Migrates .NET and Rust counter envoys from DTDL to WoT-generated APIs.
- Updates CI/codegen workflows and removes Go from cross-language testing.
- Separates
Dtdl2Wotand its preview-feed configuration from the main WoT solution.
| File | Description |
|---|---|
wot-codegen/test/Azure.Iot.Operations.Opc2WotLib.UnitTests/Azure.Iot.Operations.Opc2WotLib.UnitTests.csproj |
Pins AngleSharp. |
wot-codegen/src/Dtdl2Wot/nuget.config |
Adds isolated package feeds. |
wot-codegen/src/Dtdl2Wot/Dtdl2Wot.sln |
Adds standalone DTDL converter solution. |
wot-codegen/src/Azure.Iot.Operations.UnitTabulator/Azure.Iot.Operations.UnitTabulator.csproj |
Pins AngleSharp. |
wot-codegen/src/Azure.Iot.Operations.Opc2WotLib/Azure.Iot.Operations.Opc2WotLib.csproj |
Pins AngleSharp. |
wot-codegen/src/Azure.Iot.Operations.Opc2Wot/Azure.Iot.Operations.Opc2Wot.csproj |
Pins AngleSharp. |
wot-codegen/gen_all.sh |
Runs only WoT generators. |
wot-codegen/codegen.sln |
Removes Dtdl2Wot. |
rust/sample_applications/counter/README.md |
Documents WoT generation. |
rust/sample_applications/counter/gen.sh |
Uses WoT codegen. |
rust/sample_applications/counter/envoy/src/lib.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/counter/reset_action_invoker.rs |
Migrates reset invoker. |
rust/sample_applications/counter/envoy/src/counter/reset_action_executor.rs |
Migrates reset executor. |
rust/sample_applications/counter/envoy/src/counter/read_counter_output_arguments.rs |
Adds WoT output type. |
rust/sample_applications/counter/envoy/src/counter/read_counter_output_arguments_serialization.rs |
Updates serialization. |
rust/sample_applications/counter/envoy/src/counter/read_counter_action_invoker.rs |
Migrates read invoker. |
rust/sample_applications/counter/envoy/src/counter/read_counter_action_executor.rs |
Migrates read executor. |
rust/sample_applications/counter/envoy/src/counter/increment_output_arguments.rs |
Adds increment output type. |
rust/sample_applications/counter/envoy/src/counter/increment_output_arguments_serialization.rs |
Updates output serialization. |
rust/sample_applications/counter/envoy/src/counter/increment_input_arguments.rs |
Adds increment input type. |
rust/sample_applications/counter/envoy/src/counter/increment_input_arguments_serialization.rs |
Updates input serialization. |
rust/sample_applications/counter/envoy/src/counter/increment_action_invoker.rs |
Migrates increment invoker. |
rust/sample_applications/counter/envoy/src/counter/increment_action_executor.rs |
Migrates increment executor. |
rust/sample_applications/counter/envoy/src/counter/event_collection.rs |
Renames telemetry payload. |
rust/sample_applications/counter/envoy/src/counter/event_collection_serialization.rs |
Updates event serialization. |
rust/sample_applications/counter/envoy/src/counter/event_collection_sender.rs |
Migrates event sender. |
rust/sample_applications/counter/envoy/src/counter/event_collection_receiver.rs |
Migrates event receiver. |
rust/sample_applications/counter/envoy/src/counter.rs |
Updates generated exports. |
rust/sample_applications/counter/envoy/src/common_types/time_only.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/common_types/options.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/common_types/empty_json.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/common_types/decimal.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/common_types/date_only.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/common_types/b64.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/src/common_types.rs |
Updates generated version. |
rust/sample_applications/counter/envoy/Cargo.toml |
Updates generated version. |
rust/sample_applications/counter/counter_server/src/main.rs |
Uses WoT-generated types. |
rust/sample_applications/counter/counter_client/src/main.rs |
Uses WoT-generated types. |
eng/test/schema-samples/dtdlWithCustomTopicToken.json |
Removes DTDL model. |
eng/test/schema-samples/CustomTopicTokens.TM.json |
Adds equivalent WoT model. |
dotnet/test/Azure.Iot.Operations.Protocol.IntegrationTests/RPCFaultInjectionTests.cs |
Updates generated payload type. |
dotnet/test/Azure.Iot.Operations.Protocol.IntegrationTests/CustomTopicTokenService.cs |
Updates WoT output type. |
dotnet/test/Azure.Iot.Operations.Protocol.IntegrationTests/CustomTopicTokenClient.cs |
Updates event type. |
dotnet/test/Azure.Iot.Operations.Protocol.IntegrationTests/CounterService.cs |
Uses WoT-generated APIs. |
dotnet/test/Azure.Iot.Operations.Protocol.IntegrationTests/CounterEnvoyTests.cs |
Updates generated types. |
dotnet/test/Azure.Iot.Operations.Protocol.IntegrationTests/CounterClient.cs |
Updates event type. |
dotnet/samples/Protocol/TestThing/gen.sh |
Disables project generation. |
dotnet/samples/Protocol/TestEnvoys/ValueExtractor.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/UuidJsonConverter.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/Utf8JsonSerializer.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/TimeJsonConverter.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/schemas/CustomTopicTokens/ReadCustomTopicTokenOutputArguments.schema.json |
Adds output schema. |
dotnet/samples/Protocol/TestEnvoys/schemas/CustomTopicTokens/EventCollection.schema.json |
Adds event schema. |
dotnet/samples/Protocol/TestEnvoys/schemas/Counter/ReadCounterOutputArguments.schema.json |
Adds read schema. |
dotnet/samples/Protocol/TestEnvoys/schemas/Counter/IncrementOutputArguments.schema.json |
Adds increment output schema. |
dotnet/samples/Protocol/TestEnvoys/schemas/Counter/IncrementInputArguments.schema.json |
Adds increment input schema. |
dotnet/samples/Protocol/TestEnvoys/schemas/Counter/EventCollection.schema.json |
Adds counter event schema. |
dotnet/samples/Protocol/TestEnvoys/PropertyTopicAttribute.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/PassthroughSerializer.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/Passthrough/Passthrough.g.cs |
Migrates passthrough API. |
dotnet/samples/Protocol/TestEnvoys/Passthrough/PassCommandExecutor.g.cs |
Removes DTDL executor. |
dotnet/samples/Protocol/TestEnvoys/Passthrough/PassActionInvoker.g.cs |
Adds WoT action invoker. |
dotnet/samples/Protocol/TestEnvoys/Passthrough/PassActionExecutor.g.cs |
Adds WoT action executor. |
dotnet/samples/Protocol/TestEnvoys/Passthrough.TM.json |
Adds passthrough WoT model. |
dotnet/samples/Protocol/TestEnvoys/passthrough.json |
Removes DTDL model. |
dotnet/samples/Protocol/TestEnvoys/gen.sh |
Regenerates supported WoT envoys. |
dotnet/samples/Protocol/TestEnvoys/gen-envoys.cmd |
Adds Windows WoT generation. |
dotnet/samples/Protocol/TestEnvoys/EmptyJson.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/DurationJsonConverter.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/DecimalString.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/DecimalJsonConverter.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/DateJsonConverter.cs |
Refreshes generated output. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/TelemetrySender.g.cs |
Removes DTDL sender. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/TelemetryReceiver.g.cs |
Removes DTDL receiver. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/TelemetryCollection.g.cs |
Removes old payload type. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/ReadCustomTopicTokenOutputArguments.g.cs |
Adds WoT output type. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/ReadCustomTopicTokenCommandExecutor.g.cs |
Removes DTDL executor. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/ReadCustomTopicTokenActionInvoker.g.cs |
Adds action invoker. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/ReadCustomTopicTokenActionExecutor.g.cs |
Adds action executor. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/EventCollectionSender.g.cs |
Adds event sender. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/EventCollectionReceiver.g.cs |
Adds event receiver. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/EventCollection.g.cs |
Adds event payload. |
dotnet/samples/Protocol/TestEnvoys/CustomTopicTokens/CustomTopicTokens.g.cs |
Migrates generated facade. |
dotnet/samples/Protocol/TestEnvoys/Counter/TelemetrySender.g.cs |
Removes DTDL sender. |
dotnet/samples/Protocol/TestEnvoys/Counter/TelemetryReceiver.g.cs |
Removes DTDL receiver. |
dotnet/samples/Protocol/TestEnvoys/Counter/ResetCommandExecutor.g.cs |
Removes DTDL executor. |
dotnet/samples/Protocol/TestEnvoys/Counter/ResetActionInvoker.g.cs |
Adds reset invoker. |
dotnet/samples/Protocol/TestEnvoys/Counter/ResetActionExecutor.g.cs |
Adds reset executor. |
dotnet/samples/Protocol/TestEnvoys/Counter/ReadCounterResponsePayload.g.cs |
Removes old response type. |
dotnet/samples/Protocol/TestEnvoys/Counter/ReadCounterOutputArguments.g.cs |
Adds WoT output type. |
dotnet/samples/Protocol/TestEnvoys/Counter/ReadCounterCommandExecutor.g.cs |
Removes DTDL executor. |
dotnet/samples/Protocol/TestEnvoys/Counter/ReadCounterActionInvoker.g.cs |
Adds read invoker. |
dotnet/samples/Protocol/TestEnvoys/Counter/ReadCounterActionExecutor.g.cs |
Adds read executor. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementResponsePayload.g.cs |
Removes old response type. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementRequestPayload.g.cs |
Removes old request type. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementOutputArguments.g.cs |
Adds WoT output type. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementInputArguments.g.cs |
Adds WoT input type. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementCommandExecutor.g.cs |
Removes DTDL executor. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementActionInvoker.g.cs |
Adds increment invoker. |
dotnet/samples/Protocol/TestEnvoys/Counter/IncrementActionExecutor.g.cs |
Adds increment executor. |
dotnet/samples/Protocol/TestEnvoys/Counter/EventCollectionSender.g.cs |
Adds event sender. |
dotnet/samples/Protocol/TestEnvoys/Counter/EventCollectionReceiver.g.cs |
Adds event receiver. |
dotnet/samples/Protocol/TestEnvoys/Counter/EventCollection.g.cs |
Migrates event payload. |
dotnet/samples/Protocol/TestEnvoys/Counter/Counter.g.cs |
Migrates generated facade. |
dotnet/samples/Protocol/TestEnvoys/BytesJsonConverter.cs |
Refreshes generated output. |
dotnet/samples/Protocol/RPC/SampleServer/CustomTopicTokenService.cs |
Updates WoT output type. |
dotnet/samples/Protocol/RPC/SampleClient/RpcCommandRunner.cs |
Updates response type. |
dotnet/samples/Protocol/RPC/SampleClient/CustomTopicTokenClient.cs |
Updates event type. |
.github/workflows/run-codegen.yml |
Runs only WoT codegen. |
.github/workflows/e2e-cross-language.yml |
Tests .NET and Rust WoT output. |
.github/workflows/ci-go.yml |
Removes legacy codegen steps. |
.github/workflows/ci-dotnet.yml |
Builds and verifies WoT codegen. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Updated script to use for loop for directory removal and improved readability. Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Maxim Semenov (maximsemenov80)
approved these changes
Oct 13, 2026
Avishek (avishekpant)
approved these changes
Oct 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Also: