Skip to content

Conversation

@timheuer
Copy link
Member

@timheuer timheuer commented Apr 6, 2024

Not caught in PR, but just discovered in use, the WithReference changed the shape of the type from ProjectResource to IResourceWithEnvironment -- not making it compatible with other components.

Microsoft Reviewers: Open in CodeFlow

@timheuer timheuer requested a review from eerhardt April 6, 2024 00:19
@ghost ghost added the area-integrations Issues pertaining to Aspire Integrations packages label Apr 6, 2024
Copy link
Member

@eerhardt eerhardt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I'll cherry pick this into the release/8.0 PR

@eerhardt eerhardt merged commit c4ef238 into main Apr 6, 2024
@eerhardt eerhardt deleted the th/fixwithref branch April 6, 2024 02:29
eerhardt pushed a commit to eerhardt/aspire that referenced this pull request Apr 6, 2024
@davidfowl
Copy link
Member

This should be a generic method with a constraint IResourceWithEnviroment. See

public static IResourceBuilder<TDestination> WithReference<TDestination>(this IResourceBuilder<TDestination> builder, IResourceBuilder<IResourceWithConnectionString> source, string? connectionName = null, bool optional = false)

eerhardt added a commit that referenced this pull request Apr 8, 2024
…3416)

* Initial work for Qdrant resource and component (#3131)

This PR adds a Resource and initial Component (plus playground and tests)

Resource exposes two API access endpoints (REST + gRPC). The QdrantClient for .NET uses gRPC by default but Semantic Kernel does not use that client library so the other exposed endpoint is helpful.

REST endpoint by default exposes a Web UI dashboard -- this is excluded in Publish (per documentation in source, confirmed with Qdrant contributors).

Endpoints are secured non-optionally with an API Key (using ParameterResource -- will generate random if not provided).

Component used QdrantClient .NET version (recommended from Qdrant). This component uses gRPC endpoint by default. Settings will read from standard env vars for ConnectionString + API key or from config for the component itself if provided.

* Initial draft of QdrantServerResource
- exposed gRPC endpoint as primary (c# client uses that)
- exposes HTTP endpoint optionally (as dashboard is there)
- defaults to secure the access via API key (mainly due to dashboard)

* Fix-up after main rebase on removing InputAnnotation

* Remove dashboard in Publish mode
- change how dashboard is removed in Publish (per docs)
- add 'qdrant' to spelling.dic
- fix tests

* Fixup code style violations

* Change ApiKey reference
- Add WithReference overload (setting cn string + key)
- Added tests for named parameter on manifest
- Changed playground app

* Initial Qdrant component work
- adds component (using Qdrant.QdrantClient)
- Change playground to use DI component

* Changed rest endpoint name
- changed to 'rest' as named endpoint
- added to reference as a ConnectionString_{name}_rest (for support for SK)
- fixed tests

* Addressing PR feedback
- Changed parameters to component config
- change playground app to keyed services
- changed playground to use shared servicedefaults

* Fixing volume mounts to correct target location

* Add missing README to component

* Adding logo usage comment to readme after permission from Andrey V from Qdrant

* Changed playground sample
- matching sample Qdrant/.NET workbook sample

* PR Feedback: Name maps to client name used

* PR feedback on connection sring
- Moved to Endpoint/Key connection string
- Renamed to Key
- Modified schema to match/updated tests
- Changed primary endpoint to use scheme instead of hardcode
- removed env var for API key only
- fixed renamed component proj location in sln

* Updating readme/comments to match config

* Endpoint property typo fix

* PR Feedback
- No need for endpoint null check
- Fixed tests

* Cleanup of ServiceDefaults
Change to ReferenceExpression.Create

* More PR Feedback
- Rename component correctly
- Add component client tests
- Add component logging (and document)
- Add property for 2nd endpoint on resource directly

* PR feedback

* Fix up the playground to run with latest changes.

* Rename QdrantSettings to QdrantClientSettings to match the pattern in other components.

Add class level summary docs.

---------

Co-authored-by: Eric Erhardt <[email protected]>

* Addressing port/endpoint issues on Qdrant (#3422)

* Addressing port/endpoint issues on Qdrant

* PR feedback (param name)

* Fix up tests

* Respond to PR feedback.

Rename ports and endpoint names to be consistent.

* PR feedback
- moved to using grpc/http endpoint name consistent with config and prior art
- fixed wrong link in readme
- fixed/validated resource hosting test

---------

Co-authored-by: Eric Erhardt <[email protected]>

* Fix WithReference extension return type (#3449)

* Fix Qdrant WithReference to allow any IResourceWithEnvironment.

Also fix the same pattern in AWS.

---------

Co-authored-by: Tim Heuer <[email protected]>
@github-actions github-actions bot locked and limited conversation to collaborators May 8, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-integrations Issues pertaining to Aspire Integrations packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants