# All plugins should include this module. It defines the basic # operations that all plugins are supposed to support. module Plugin def Plugin.included(c) # Callback, called whenever another class or module includes this # one. The parameter given is the name of the class or module # that included us. @includers ||= [] @includers << c end def Plugin.includers return @includers end def describe_domain(domain) # Provide a "description" of the domain. This is output along # with the domain name and can be anything of use to the system # administrator. raise NotImplementedError end def describe_account(account) # Provide a "description" of the account. This is output along # with the domain name and can be anything of use to the system # administrator. raise NotImplementedError end def delete_domain(domain) # Delete the given domain. raise NotImplementedError end def delete_account(account) # Delete the given account. raise NotImplementedError end def get_leftover_domains(db_domains) # Given a list of domains, determine which domains belonging to this plugin # are not contained in the given list. raise NotImplementedError end def get_leftover_accounts(db_accounts) # Given a list of accounts, determine which accounts belonging to this plugin # are not contained in the given list. raise NotImplementedError end end