规避控制器允许从配置创建程序。
evasion-director的Python项目详细描述
内容
Introduction
规避项目允许从配置创建程序。
这是通过从配置加载“控制器部分”来实现的。一个 控制器是一个python包或模块,它提供一些功能。 它在其部分中给出了所有配置。逃犯主任 以类似于Linux上init.d的方式管理控制器。逃避 导演启动并加载每个部分。
最常见的逃逸指挥控制器使用的是逃逸机构。这个 管理“代理人”。代理是一个python包或模块。特工们习惯于 控制硬件设备或服务。该机构提供了一个设备树 可以抽象方式引用的节点。
控制器、代理和所有相关方之间的消息传递可以是 使用逃走信使完成。此项目部分当前正在重写 使用zeromq。旧版本使用了pydispatch、stomp、morbid的组合 经纪人和扭曲。此消息是完全可选的。
注:逃逸机构项目已与局长代码库合并。 “evasion.agency”包现在由evasion director代码库提供。
Other Docs
我正在整理各种文件。暂时 信息可在此处找到:
Basic Examples
Simplest configuration
最基本的例子是使用最小配置“app.ini”:
[director] messaging = 'no'
然后可以从命令行运行此命令:
$ director --config app.ini evasion.director.manager.Manager INFO main: running. evasion.director.manager.Manager INFO controllerSetup: loading controllers from config. evasion.director.manager.Manager INFO controllerSetup: 1 controller(s) recovered. evasion.director.manager.Manager WARNING Ctrl-C, Exiting. $
唯一的控制器负载是“控制器”控制器。这不是很有用 什么都不跑。
Run a program
您可以使用命令行控制器运行和管理任何类型的程序。 例如:
[director] messaging = 'no' [command_line_example] # Set this to 'yes' to stop this controller from being used. disabled = 'no' # This is optional and allows the order in which controllers are started # to be set. order = 1 # Where the "Controller" class is to be found. controller = 'evasion.director.controllers.commandline' # The command line specific options: # # The command to run. command = 'ls' # Where the command is to be run from. workingdir = '/tmp'
运行此配置将获得:
$ director --config app.ini root WARNING No valid logging found in configuration. Using console logging. evasion.director.manager.Manager INFO main: running. evasion.director.manager.Manager INFO controllerSetup: loading controllers from config. evasion.director.manager.Manager INFO controllerSetup: 2 controller(s) recovered. evasion.director.controllers.commandline DEBUG setUp: command <ls> workingdir </tmp> evasion.director.manager.Manager INFO appmain: The controller '<Controller: order:1 name:command_line_example disabled:no>' needs to be started. evasion.director.controllers.commandline INFO start: 'ls' running. PID 87808 evasion.director.manager.Manager INFO appmain: Started ok 'command_line_example'? 'True' 1564b4fc7dd26 ics41562 icssuis1316027648 launch-0FvLcQ launch-7vMUyC launch-9uZ0bO launch-ASdWau launch-RUjEPx launchd-460.ZFsfn1 evasion.director.manager.Manager INFO appmain: The controller '<Controller: order:1 name:command_line_example disabled:no>' needs to be started. evasion.director.controllers.commandline INFO start: 'ls' running. PID 87809 evasion.director.manager.Manager INFO appmain: Started ok 'command_line_example'? 'True' 1564b4fc7dd26 ics41562 icssuis1316027648 launch-0FvLcQ launch-7vMUyC launch-9uZ0bO launch-ASdWau launch-RUjEPx launchd-460.ZFsfn1 evasion.director.manager.Manager INFO appmain: The controller '<Controller: order:1 name:command_line_example disabled:no>' needs to be started. evasion.director.controllers.commandline INFO start: 'ls' running. PID 87810 evasion.director.manager.Manager INFO appmain: Started ok 'command_line_example'? 'True' icssuis1316027648 launch-0FvLcQ launch-7vMUyC launch-9uZ0bO launch-ASdWau launch-RUjEPx launchd-460.ZFsfn1 evasion.director.manager.Manager WARNING Ctrl-C, Exiting. evasion.director.controllers.commandline INFO stop: stopping the process PID:'87810' and all its children. evasion.director.tools.proc INFO kill: pid <87810> evasion.director.controllers.commandline WARNING pkill: call failure [Errno 3] No such process $
控制器加载控制器部分。命令行控制器是 起动。“ls”命令列出“/tmp”目录的内容。这个 输出被捕获并记录。然后,局长注意到命令 退出需要再次运行,流程重复。导演会保留 运行组成程序的所有“控制器”。
Use the Agency
最小代理配置是:
[director] messaging = 'no' [agency] #disabled = 'yes' controller = 'evasion.director.controllers.agencyctrl'
如果运行此命令,您将看到:
$ director --config ../app.ini evasion.director.manager.Manager INFO main: running. evasion.director.manager.Manager INFO controllerSetup: loading controllers from config. evasion.director.manager.Manager INFO controllerSetup: 2 controller(s) recovered. evasion.director.controllers.agencyctrl INFO setUp: setting up the agency and recovering agents. evasion.agency.manager.Manager INFO load: 0 agent(s) present. evasion.agency.manager.Manager WARNING There are no agents to set up. evasion.director.controllers.agencyctrl INFO setUp: agents loaded '0'. evasion.director.manager.Manager INFO appmain: The controller '<Agency: order:2 disabled:no>' needs to be started. evasion.agency.manager.Manager WARNING There are no agents to start. evasion.director.manager.Manager INFO appmain: Started ok 'agency'? 'True' evasion.director.manager.Manager WARNING Ctrl-C, Exiting. evasion.agency.manager.Manager WARNING There are no agents to stop. evasion.agency.manager.Manager WARNING There are no agents to tear down.
这将加载代理,但没有代理可供其管理。
如果我们加上测试代理来给代理管理一些东西, 现在配置如下:
[director] messaging = 'no' [agency] #disabled = 'yes' controller = 'evasion.director.controllers.agencyctrl' # indent is convention to visually distinguish agents from controllers. [testswipe] cat = 'swipe' agent = 'evasion.agency.agents.testing.fake'
如果运行此命令,您将看到:
$ director --config ../app.ini 2012-05-29 17:21:56,674 evasion.director.manager.Manager INFO main: running. 2012-05-29 17:21:56,675 evasion.director.manager.Manager INFO controllerSetup: loading controllers from config. 2012-05-29 17:21:56,711 evasion.director.manager.Manager INFO controllerSetup: 2 controller(s) recovered. 2012-05-29 17:21:56,711 evasion.director.controllers.agencyctrl INFO setUp: setting up the agency and recovering agents. 2012-05-29 17:21:56,712 evasion.agency.manager.Manager INFO load: 1 agent(s) present. 2012-05-29 17:21:56,712 evasion.director.controllers.agencyctrl INFO setUp: agents loaded '1'. 2012-05-29 17:21:56,712 evasion.director.manager.Manager INFO appmain: The controller '<Agency: order:2 disabled:no>' needs to be started. 2012-05-29 17:21:56,712 evasion.director.manager.Manager INFO appmain: Started ok 'agency'? 'True' 2012-05-29 17:21:58,134 evasion.director.manager.Manager WARNING Ctrl-C, Exiting. $
Issues
其他规避的所有问题-*项目部分应记录在 规避主管项目。
Release Notes
1.1.6
逃逸机构储存库代码已与逃逸主管合并。 实际上这意味着逃犯主任现在提供 “evasion.agency”命名空间。导演不再依赖 “逃避机构”。
1.1.4:
Github里程碑释放https://github.com/oisinmulvihill/evasion-director/issues?milestone=1&state=closed
- 固定的
-
RI>系统提升,键盘中断:^ {A3}
- 处理未处理的异常:https://github.com/oisinmulvihill/evasion-director/issues/2
- 代理假定代理中存在“log”属性:https://github.com/oisinmulvihill/evasion-director/issues/1