问题
My goal is to utilize puppet to initialize an instance of errbot, as well as pre-configure plugins via a script.
I followed their user guide found here:
http://errbot.io/en/latest/user_guide/provisioning.html#reading-stored-values
However I keep getting this error : "rejected by strategy 'SpecificBackendLocator'"
Here is my output(I do have my log variable in my config.py set to DEBUG):
/opt/errbot$ /opt/errbot/bin/errbot --storage-get core
05:30:46 INFO errbot.cli Config check passed...
05:30:46 INFO errbot.specific_plugin_ma storage search paths {'/opt/errbot/lib/python3.4/site-packages/errbot/storage', '/opt/errbot/extra/devops', '/opt/errbot/extra/weatherbot'}
05:30:46 INFO errbot.specific_plugin_ma Found those plugings available:
05:30:46 INFO errbot.specific_plugin_ma Memory (/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.py)
05:30:46 INFO errbot.specific_plugin_ma Shelf (/opt/errbot/lib/python3.4/site-packages/errbot/storage/shelf.py)
05:30:46 INFO errbot.specific_plugin_ma DevOpsReactions (/opt/errbot/extra/devops/devops.py)
05:30:46 INFO errbot.specific_plugin_ma WeatherBot (/opt/errbot/extra/weatherbot/weatherBot.py)
05:30:46 INFO errbot.bootstrap Found Storage plugin: 'Memory'
Description: This is the storage plugin for an in-memory store (non-persistent).
05:30:46 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/storage/shelf.plug' rejected by strategy 'SpecificBackendLocator'
05:30:46 WARNING yapsy Plugin candidate '/opt/errbot/extra/devops/devops.plug' rejected by strategy 'SpecificBackendLocator'
05:30:46 WARNING yapsy Plugin candidate '/opt/errbot/extra/weatherbot/weatherbot.plug' rejected by strategy 'SpecificBackendLocator'
{}
What I have tried:
I have tried using both the 'shelf', and 'memory' storage types
I have run in both python2.7 and 3.4
I have searched through all errbot related questions on this forum, I have searched through the github repo, as well as googled the error I am getting.
I have not been able to find anything that helps me resolve the issue.
I am not sure is this is more of an issue with the errbot module, or if it is how it is being run in my python environment. Any push in the right direction would be appreciated.
********** EDIT****************
Per @gbin's advice I followed his process exactly:
vagrant@ops-hq-tools-chatops-app1:/opt/errbot/data$ sudo /opt/errbot/bin/errbot -c /opt/errbot/config.py -T
06:56:38 INFO errbot.cli Config check passed...
06:56:38 INFO errbot.cli Selected backend 'Text'.
06:56:38 INFO errbot.cli Checking for '/opt/errbot/data'...
06:56:38 INFO errbot.specific_plugin_ma storage search paths {'/opt/errbot/lib/python3.4/site-packages/errbot/storage', '/opt/errbot/extra/devops'}
06:56:38 INFO errbot.specific_plugin_ma Found those plugings available:
06:56:38 INFO errbot.specific_plugin_ma Memory (/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.py)
06:56:38 INFO errbot.specific_plugin_ma Shelf (/opt/errbot/lib/python3.4/site-packages/errbot/storage/shelf.py)
06:56:38 INFO errbot.specific_plugin_ma DevOpsReactions (/opt/errbot/extra/devops/devops.py)
06:56:38 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
06:56:38 DEBUG errbot.specific_plugin_ma Refilter the plugins...
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/extra/devops/devops.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 DEBUG errbot.specific_plugin_ma Load the one remaining...
06:56:38 DEBUG errbot.specific_plugin_ma Class to load ShelfStoragePlugin
06:56:38 DEBUG errbot.storage Opening storage 'repomgr'
06:56:38 DEBUG errbot.storage.shelf Open shelf storage /opt/errbot/data/repomgr.db
06:56:38 DEBUG errbot.storage Opening storage 'core'
06:56:38 DEBUG errbot.storage.shelf Open shelf storage /opt/errbot/data/core.db
06:56:38 INFO errbot.specific_plugin_ma backends search paths {'/opt/errbot/lib/python3.4/site-packages/errbot/backends'}
06:56:38 INFO errbot.specific_plugin_ma Found those plugings available:
06:56:38 INFO errbot.specific_plugin_ma Test (/opt/errbot/lib/python3.4/site-packages/errbot/backends/test.py)
06:56:38 INFO errbot.specific_plugin_ma Graphic (/opt/errbot/lib/python3.4/site-packages/errbot/backends/graphic.py)
06:56:38 INFO errbot.specific_plugin_ma Text (/opt/errbot/lib/python3.4/site-packages/errbot/backends/text.py)
06:56:38 INFO errbot.specific_plugin_ma Telegram (/opt/errbot/lib/python3.4/site-packages/errbot/backends/telegram_messenger.py)
06:56:38 INFO errbot.specific_plugin_ma XMPP (/opt/errbot/lib/python3.4/site-packages/errbot/backends/xmpp.py)
06:56:38 INFO errbot.specific_plugin_ma Slack (/opt/errbot/lib/python3.4/site-packages/errbot/backends/slack.py)
06:56:38 INFO errbot.specific_plugin_ma Hipchat (/opt/errbot/lib/python3.4/site-packages/errbot/backends/hipchat.py)
06:56:38 INFO errbot.specific_plugin_ma Null (/opt/errbot/lib/python3.4/site-packages/errbot/backends/null.py)
06:56:38 INFO errbot.specific_plugin_ma IRC (/opt/errbot/lib/python3.4/site-packages/errbot/backends/irc.py)
06:56:38 INFO errbot.bootstrap Found Backend plugin: 'Text'
Description: This is the text backend for Err.
06:56:38 DEBUG errbot.specific_plugin_ma Refilter the plugins...
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/test.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/graphic.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/telegram_messenger.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/xmpp.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/slack.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/hipchat.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/null.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/backends/irc.plug' rejected by strategy 'SpecificBackendLocator'
06:56:38 DEBUG errbot.specific_plugin_ma Load the one remaining...
06:56:38 DEBUG errbot.specific_plugin_ma Class to load TextBackend
06:56:38 DEBUG errbot.core ErrBot init.
06:56:38 DEBUG errbot.backends.base Backend init.
06:56:38 DEBUG errbot.core created a thread pool of size 10.
06:56:38 DEBUG errbot.backends.text Text Backend Init.
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.smart_strong".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.smart_strong.SmartEmphasisExtension".
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.fenced_code".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.fenced_code.FencedCodeExtension".
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.footnotes".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.footnotes.FootnoteExtension".
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.attr_list".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.attr_list.AttrListExtension".
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.def_list".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.def_list.DefListExtension".
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.tables".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.tables.TableExtension".
06:56:38 DEBUG MARKDOWN Successfuly imported extension module "markdown.extensions.abbr".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.abbr.AbbrExtension".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "markdown.extensions.extra.ExtraExtension".
06:56:38 DEBUG MARKDOWN Successfully loaded extension "errbot.rendering.ansiext.AnsiExtension".
06:56:38 DEBUG errbot.core Initializing backend storage
06:56:38 DEBUG errbot.storage Opening storage 'text_backend'
06:56:38 DEBUG errbot.storage.shelf Open shelf storage /opt/errbot/data/text_backend.db
06:56:38 DEBUG errbot.plugin_manager All plugin roots:
06:56:38 DEBUG errbot.plugin_manager -> /opt/errbot/lib/python3.4/site-packages/errbot/core_plugins
06:56:38 DEBUG errbot.plugin_manager Add /opt/errbot/lib/python3.4/site-packages/errbot/core_plugins to sys.path
06:56:38 DEBUG errbot.plugin_manager -> /opt/errbot/extra/devops
06:56:38 DEBUG errbot.plugin_manager /opt/errbot/lib/python3.4/site-packages/errbot/core_plugins has no requirements.txt file
06:56:38 DEBUG errbot.plugin_manager /opt/errbot/extra/devops has no requirements.txt file
06:56:38 INFO errbot webhooks: Flag to bind /echo to echo
06:56:38 DEBUG errbot.bootstrap Start serving commands from the text backend
>>> !plugin config Webserver
Default configuration for this plugin (you can copy and paste this directly as a command):
!plugin config Webserver
{'HOST': '0.0.0.0',
'PORT': 3141,
'SSL': {'certificate': '',
'enabled': False,
'host': '0.0.0.0',
'key': '',
'port': 3142}}
Current configuration:
!plugin config Webserver
{'HOST': '0.0.0.0',
'PORT': 3141,
'SSL': {'certificate': '',
'enabled': False,
'host': '0.0.0.0',
'key': '',
'port': 3142}}
>>> !plugin config Webserver {'HOST': '0.0.0.0', 'PORT': 3141, 'SSL': {'certificate': '', 'enabled': False, 'host': '0.0.0.0', 'key': '', 'port': 3142}}
Plugin configuration done.
So far so good, then I make sure to issue the following command with sudo:
/opt/errbot/bin/errbot -c /opt/errbot/config.py --storage-get core
07:01:19 INFO errbot.cli Config check passed...
07:01:19 INFO errbot.specific_plugin_ma storage search paths {'/opt/errbot/extra/devops', '/opt/errbot/lib/python3.4/site-packages/errbot/storage'}
07:01:19 INFO errbot.specific_plugin_ma Found those plugings available:
07:01:19 INFO errbot.specific_plugin_ma DevOpsReactions (/opt/errbot/extra/devops/devops.py)
07:01:19 INFO errbot.specific_plugin_ma Memory (/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.py)
07:01:19 INFO errbot.specific_plugin_ma Shelf (/opt/errbot/lib/python3.4/site-packages/errbot/storage/shelf.py)
07:01:19 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
07:01:19 WARNING yapsy Plugin candidate '/opt/errbot/extra/devops/devops.plug' rejected by strategy 'SpecificBackendLocator'
07:01:19 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
{'configs': {'Webserver': {'PORT': 3141, 'HOST': '0.0.0.0', 'SSL': {'host': '0.0.0.0', 'key': '', 'enabled': False, 'port': 3142, 'certificate': ''}}, 'giphy': {'API_KEY': 'test'}, 'WeatherBot': None}}
So the --storage-get function is working as expected. However, when I try --storage-set/merge:
sudo echo "{'configs': {'Webserver': {'PORT': 9999}}}" | /opt/errbot/bin/errbot -c /opt/errbot/config.py --storage-merge core
07:02:46 INFO errbot.cli Config check passed...
07:02:46 INFO errbot.specific_plugin_ma storage search paths {'/opt/errbot/lib/python3.4/site-packages/errbot/storage', '/opt/errbot/extra/devops'}
07:02:46 INFO errbot.specific_plugin_ma Found those plugings available:
07:02:46 INFO errbot.specific_plugin_ma Memory (/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.py)
07:02:46 INFO errbot.specific_plugin_ma Shelf (/opt/errbot/lib/python3.4/site-packages/errbot/storage/shelf.py)
07:02:46 INFO errbot.specific_plugin_ma DevOpsReactions (/opt/errbot/extra/devops/devops.py)
07:02:46 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
07:02:46 WARNING yapsy Plugin candidate '/opt/errbot/lib/python3.4/site-packages/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
07:02:46 WARNING yapsy Plugin candidate '/opt/errbot/extra/devops/devops.plug' rejected by strategy 'SpecificBackendLocator'
Storage does not appear to have been opened yet
I get this error "Storage does not appear to be open yet.
I found this link by googling the error:
http://errbot.io/en/latest/_modules/errbot/storage.html
but I am having trouble understanding what I need to change so that I can merge, or set config values.
回答1:
rejected by strategy 'SpecificBackendLocator'
is a misleading warning from yapsy saying that a plugin is not what it is looking at the moment while looping over all the plugins, it is a normal behavior.
The entry you are getting for core
is {}
, empty. Simply your Errbot instance has not store anything yet there.
For example check out this session:
(errbot)mymachine ➜ errbot (master) errbot -T
08:36:27 INFO errbot.cli Config check passed...
08:36:27 INFO errbot.cli Selected backend 'Text'.
08:36:27 INFO errbot.cli Checking for '../errbot-data'...
08:36:27 INFO errbot.specific_plugin_ma storage search paths {'/home/gbinet/projects/errbot/errbot/storage'}
08:36:27 INFO errbot.specific_plugin_ma Found those plugings available:
08:36:27 INFO errbot.specific_plugin_ma Shelf (/home/gbinet/projects/errbot/errbot/storage/shelf.py)
08:36:27 INFO errbot.specific_plugin_ma Memory (/home/gbinet/projects/errbot/errbot/storage/memory.py)
08:36:27 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
08:36:27 WARNING yapsy Plugin candidate '/home/gbinet/projects/errbot/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
08:36:27 INFO errbot.specific_plugin_ma backends search paths {'/home/gbinet/projects/errbot/errbot/backends'}
[...]
08:36:27 INFO errbot.bootstrap Found Backend plugin: 'Text'
Description: This is the text backend for Err.
08:36:27 WARNING yapsy Plugin candidate '/home/gbinet/projects/errbot/errbot/backends/irc.plug' rejected by strategy 'SpecificBackendLocator'
[...]
>>> !plugin config Webserver
Default configuration for this plugin (you can copy and paste this directly as a command):
!plugin config Webserver
{'HOST': '0.0.0.0',
'PORT': 3141,
'SSL': {'certificate': '',
'enabled': False,
'host': '0.0.0.0',
'key': '',
'port': 3142}}
>>> !plugin config Webserver {'HOST': '0.0.0.0', 'PORT': 3141, 'SSL': {'certificate': '', 'enabled': False, 'host': '0.0.0.0', 'key': '', 'port': 3142}}
Plugin configuration done.
>>> ^C
This has stored a config for the plugin "Webserver", then you can see it when you dump all the configs back from the command line with:
(errbot)mymachine ➜ errbot (master) errbot --storage-get core
08:37:54 INFO errbot.cli Config check passed...
08:37:54 INFO errbot.specific_plugin_ma storage search paths {'/home/gbinet/projects/errbot/errbot/storage'}
08:37:54 INFO errbot.specific_plugin_ma Found those plugings available:
08:37:54 INFO errbot.specific_plugin_ma Shelf (/home/gbinet/projects/errbot/errbot/storage/shelf.py)
08:37:54 INFO errbot.specific_plugin_ma Memory (/home/gbinet/projects/errbot/errbot/storage/memory.py)
08:37:54 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
08:37:54 WARNING yapsy Plugin candidate '/home/gbinet/projects/errbot/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
{'configs': {'Webserver': {'PORT': 3141, 'SSL': {'enabled': False, 'port': 3142, 'key': '', 'host': '0.0.0.0', 'certificate': ''}, 'HOST': '0.0.0.0'}}}
回答2:
I did exactly what you did and it works for me.
Is there anything special in your config ?
(errbot)mymachine ➜ errbot (master) echo "{'configs': {'Webserver': {'PORT': 9999}}}" | errbot --storage-merge core <<<
14:22:12 INFO errbot.cli Config check passed...
14:22:12 INFO errbot.specific_plugin_ma storage search paths {'/home/gbinet/projects/errbot/errbot/storage'}
14:22:12 INFO errbot.specific_plugin_ma Found those plugings available:
14:22:12 INFO errbot.specific_plugin_ma Shelf (/home/gbinet/projects/errbot/errbot/storage/shelf.py)
14:22:12 INFO errbot.specific_plugin_ma Memory (/home/gbinet/projects/errbot/errbot/storage/memory.py)
14:22:12 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
14:22:12 WARNING yapsy Plugin candidate '/home/gbinet/projects/errbot/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
(errbot)mymachine ➜ errbot (master) errbot --storage-get core
14:22:57 INFO errbot.cli Config check passed...
14:22:57 INFO errbot.specific_plugin_ma storage search paths {'/home/gbinet/projects/errbot/errbot/storage'}
14:22:57 INFO errbot.specific_plugin_ma Found those plugings available:
14:22:57 INFO errbot.specific_plugin_ma Shelf (/home/gbinet/projects/errbot/errbot/storage/shelf.py)
14:22:57 INFO errbot.specific_plugin_ma Memory (/home/gbinet/projects/errbot/errbot/storage/memory.py)
14:22:57 INFO errbot.bootstrap Found Storage plugin: 'Shelf'
Description: This is the storage plugin for the traditional shelf store for errbot.
14:22:57 WARNING yapsy Plugin candidate '/home/gbinet/projects/errbot/errbot/storage/memory.plug' rejected by strategy 'SpecificBackendLocator'
{'configs': {'Webserver': {'PORT': 9999}}}
来源:https://stackoverflow.com/questions/42486120/errbot-getting-yapsy-error-when-trying-to-configure-plugins-via-command-line-in