This issue has shown that, when we introduce new providers and propagate the configs to users, then remove the config ("asf" was removed and renamed to "default"), user configuration breaks
- #6358

One way of dealing with this is checking at startup time whether the configured providers are available, and if not, log a warning and fall back to the default provider.
if container.start():
                    return container.service
                else:
                    raise container.errors[-1]
        raise ServiceStateException(
            "service %s is not ready (%s) and could not be started" % (name, container.state)
        )
    
    def items(self):
        return {
            container.service.name(): container.service for container in self._services.values()
        }.items()
    def keys(self):
        return self._services.keys()
    def values(self):
        return [container.service for container in self._services.values()]
    def get(self, key):
        return self.get_service(key)
    def __iter__(self):
        return self._services
class ServicePlugin(Plugin):
    service: Service
    api: str
    @abc.abstractmethod
    def create_service(self) -> Service:
        raise NotImplementedError
    def load(self):
        self.service = self.create_service()
        return self.service
class ServicePluginAdapter(ServicePlugin):