Make project provider agnostic with support for UniFi, Omada, and UISP#71
Draft
Make project provider agnostic with support for UniFi, Omada, and UISP#71
Conversation
Co-authored-by: GoliathLabs <8057646+GoliathLabs@users.noreply.github.com>
Copilot stopped work on behalf of
GoliathLabs due to an error
December 20, 2025 11:43
Member
|
@copilot try again. We might want to add omada or UISP as well. That's the goal of this PR |
- Created provider.py with abstract Provider base class - Implemented UnifiProvider as first concrete provider - Refactored unifi_client.py to extract reusable get_infos_from_config() - Updated config.py to support multi-provider format with backward compatibility - Updated respondd_client.py to aggregate data from multiple providers - Added example config for multi-provider setup - Updated README with documentation for multi-provider support - Maintained full backward compatibility with legacy single-controller config Co-authored-by: GoliathLabs <8057646+GoliathLabs@users.noreply.github.com>
Contributor
Author
Done! I've implemented a complete provider abstraction architecture that supports multiple controller types (UniFi, Omada, UISP) and multiple instances of each. The implementation includes:
You can now configure multiple UniFi controllers, and the architecture is ready for adding Omada and UISP providers by implementing the Commit: 416912c |
- Update provider type documentation to reflect UniFi/Omada/UISP focus - Add validation in get_infos() to handle multi-provider configs gracefully - Add helpful error message directing users to ResponddClient for multi-provider setup Co-authored-by: GoliathLabs <8057646+GoliathLabs@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Make project provider agnostic with configurable providers
Make project provider agnostic with support for UniFi, Omada, and UISP
Dec 20, 2025
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.
Implements a complete provider abstraction architecture that allows unifi_respondd to support multiple controller types (UniFi, Omada, UISP) and multiple instances of each type simultaneously.
Changes Made
Provider Architecture
provider.pywith abstractProviderbase class defining the interface for all controller providersUnifiProvideras the first concrete provider implementationcreate_provider()for instantiating providers by typeConfiguration Structure
providerslist withtypeandconfigfor each providerconfig.pywithProviderConfigdataclass for provider configurationCode Refactoring
get_infos_from_config()with explicit parameters for reusability by providersget_infos()wrapper for backward compatibility with validation for multi-provider configsDocumentation & Examples
unifi_respondd.multi-provider.yaml.examplewith configuration examples for multiple UniFi controllers and stubs for Omada/UISPKey Features
Testing
Future Work
To add Omada or UISP support, contributors can implement new provider classes following the
Providerinterface and register them in thecreate_provider()factory function. Example stubs are provided in the multi-provider configuration example.Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.