mirror of
https://github.com/certbot/certbot.git
synced 2026-08-02 00:22:28 +02:00
Merge pull request #2852 from letsencrypt/discover-all-plugins
Discover all plugins
This commit is contained in:
@@ -8,6 +8,9 @@ from acme import challenges
|
|||||||
SETUPTOOLS_PLUGINS_ENTRY_POINT = "certbot.plugins"
|
SETUPTOOLS_PLUGINS_ENTRY_POINT = "certbot.plugins"
|
||||||
"""Setuptools entry point group name for plugins."""
|
"""Setuptools entry point group name for plugins."""
|
||||||
|
|
||||||
|
OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT = "letsencrypt.plugins"
|
||||||
|
"""Plugins Setuptools entry point before rename."""
|
||||||
|
|
||||||
CLI_DEFAULTS = dict(
|
CLI_DEFAULTS = dict(
|
||||||
config_files=[
|
config_files=[
|
||||||
"/etc/letsencrypt/cli.ini",
|
"/etc/letsencrypt/cli.ini",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
"""Utilities for plugins discovery and selection."""
|
"""Utilities for plugins discovery and selection."""
|
||||||
import collections
|
import collections
|
||||||
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
|
|
||||||
@@ -164,8 +165,12 @@ class PluginsRegistry(collections.Mapping):
|
|||||||
def find_all(cls):
|
def find_all(cls):
|
||||||
"""Find plugins using setuptools entry points."""
|
"""Find plugins using setuptools entry points."""
|
||||||
plugins = {}
|
plugins = {}
|
||||||
for entry_point in pkg_resources.iter_entry_points(
|
entry_points = itertools.chain(
|
||||||
constants.SETUPTOOLS_PLUGINS_ENTRY_POINT):
|
pkg_resources.iter_entry_points(
|
||||||
|
constants.SETUPTOOLS_PLUGINS_ENTRY_POINT),
|
||||||
|
pkg_resources.iter_entry_points(
|
||||||
|
constants.OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT),)
|
||||||
|
for entry_point in entry_points:
|
||||||
plugin_ep = PluginEntryPoint(entry_point)
|
plugin_ep = PluginEntryPoint(entry_point)
|
||||||
assert plugin_ep.name not in plugins, (
|
assert plugin_ep.name not in plugins, (
|
||||||
"PREFIX_FREE_DISTRIBUTIONS messed up")
|
"PREFIX_FREE_DISTRIBUTIONS messed up")
|
||||||
|
|||||||
@@ -9,11 +9,16 @@ from certbot import errors
|
|||||||
from certbot import interfaces
|
from certbot import interfaces
|
||||||
|
|
||||||
from certbot.plugins import standalone
|
from certbot.plugins import standalone
|
||||||
|
from certbot.plugins import webroot
|
||||||
|
|
||||||
EP_SA = pkg_resources.EntryPoint(
|
EP_SA = pkg_resources.EntryPoint(
|
||||||
"sa", "certbot.plugins.standalone",
|
"sa", "certbot.plugins.standalone",
|
||||||
attrs=("Authenticator",),
|
attrs=("Authenticator",),
|
||||||
dist=mock.MagicMock(key="certbot"))
|
dist=mock.MagicMock(key="certbot"))
|
||||||
|
EP_WR = pkg_resources.EntryPoint(
|
||||||
|
"wr", "certbot.plugins.webroot",
|
||||||
|
attrs=("Authenticator",),
|
||||||
|
dist=mock.MagicMock(key="certbot"))
|
||||||
|
|
||||||
|
|
||||||
class PluginEntryPointTest(unittest.TestCase):
|
class PluginEntryPointTest(unittest.TestCase):
|
||||||
@@ -176,10 +181,13 @@ class PluginsRegistryTest(unittest.TestCase):
|
|||||||
def test_find_all(self):
|
def test_find_all(self):
|
||||||
from certbot.plugins.disco import PluginsRegistry
|
from certbot.plugins.disco import PluginsRegistry
|
||||||
with mock.patch("certbot.plugins.disco.pkg_resources") as mock_pkg:
|
with mock.patch("certbot.plugins.disco.pkg_resources") as mock_pkg:
|
||||||
mock_pkg.iter_entry_points.return_value = iter([EP_SA])
|
mock_pkg.iter_entry_points.side_effect = [iter([EP_SA]),
|
||||||
|
iter([EP_WR])]
|
||||||
plugins = PluginsRegistry.find_all()
|
plugins = PluginsRegistry.find_all()
|
||||||
self.assertTrue(plugins["sa"].plugin_cls is standalone.Authenticator)
|
self.assertTrue(plugins["sa"].plugin_cls is standalone.Authenticator)
|
||||||
self.assertTrue(plugins["sa"].entry_point is EP_SA)
|
self.assertTrue(plugins["sa"].entry_point is EP_SA)
|
||||||
|
self.assertTrue(plugins["wr"].plugin_cls is webroot.Authenticator)
|
||||||
|
self.assertTrue(plugins["wr"].entry_point is EP_WR)
|
||||||
|
|
||||||
def test_getitem(self):
|
def test_getitem(self):
|
||||||
self.assertEqual(self.plugin_ep, self.reg["mock"])
|
self.assertEqual(self.plugin_ep, self.reg["mock"])
|
||||||
|
|||||||
Reference in New Issue
Block a user