Search code examples
pythonpython-3.xerrbotchatops

Errbot: getting yapsy error when trying to configure plugins via command line interface


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.


Solution

  • 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'}}}