Fix #1774 : Implement ListServices method in ConsulNodeDiscoveryProvider #1776
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.
… service listing
Implemented a new asynchronous method, ListServices, in the ConsulNodeDiscoveryProvider class. This method returns all CAP services, providing a consistent interface similar to GetNodes, while addressing the lack of direct namespace support in Consul.
Description:
This PR fixes the missing implementation of the
ListServicesmethod in theConsulNodeDiscoveryProviderclass. When the Dashboard route/api/list-svc/{namespace}was called, it would throw aNotImplementedExceptionbecauseConsulNodeDiscoveryProviderdid not implement theListServicesmethod, resulting in a 404 error response.By implementing the
ListServicesmethod, the Consul node discovery provider can now correctly return a list of services, maintaining consistent behavior with the Kubernetes node discovery provider.Issue(s) addressed:
NotImplementedExceptioncaused by missingListServicesimplementation inConsulNodeDiscoveryProvider/api/list-svc/{namespace}Changes:
ListServices(string ns = null)method in theConsulNodeDiscoveryProviderclassListServicesmethod internally calls the existingGetNodesmethod to retrieve all CAP servicesnsparameter is passed but not used (consistent with the existing behavior ofGetNodes)Affected components:
src/DotNetCore.CAP.Dashboard/NodeDiscovery/INodeDiscoveryProvider.Consul.cs- AddedListServicesmethod implementation/api/list-svc/{namespace}- Now functions correctlyHow to test:
GET /cap/api/list-svc/{namespace}{namespace}with any value (since Consul doesn't use namespaces)NotImplementedExceptionor return 404 errorsAdditional notes (optional):
ListServicesmethod inK8sNodeDiscoveryProvidernsparameter is not used in the current implementation, but is retained for interface compatibilityChecklist:
Reviewers: