code: def load_plugin(self, p):
          
          if p.is_loaded():
              return
          # load required plugins first
          reqnames = p.required
          reqplugins = []
          for name in reqnames:
              try:
                  reqplugins.append(self.__plugins[name])
              except KeyError as e:
                  log.error("Required Plugin %s not found. Cannot load %s." % (name, p))
                  raise errors.PluginInitError('Required Plugin %s not found. Cannot load %s. Reason: %s' % (name, p, e))
          for plug in reqplugins:
              try:
                  self.load_plugin(plug)
              except errors.PluginInitError as e:
                  log.error("Required Plugin %s could not be loaded. Cannot load %s" % (plug, p))
                  raise errors.PluginInitError('Required Plugin %s could not be loaded. Cannot load %s. Reason: %s' % (plug,p, e))
          # load the actual plugin
          p._load()
          log.info('Initialized the plugin: %s' % p)
docs: Load the specified plugin
  
          :param p: The plugin to load
          :type p: Subclass of JB_Plugin
          :returns: None
          :rtype: None
          :raises: errors.PluginInitError