星期二, 八月 27, 2013

OCF开发者指南 第三章

3 返回值

对于任意调用,资源代理必须在退出时给出一个返回值,这个值会告诉调用者。返回值的细节将在下面的章节中解释。

3.1 OCF_SUCCESS (0)

行为完全成功执行。这是所有成功的 start, stop, promote, demote, migrate_from, migrate_to, meta_data, help, 和 usage 执行成功后期望获得的返回值;

对于monitor(以及其被放弃的别名 status),使用一个约定来用此返回值:
  • 对于一些基本的(无状态)资源,monitor 行为的 OCF_SUCCESS 意思是这个资源正在运行,没有运行或者正常关闭的资源必须返回 OCF_NOT_RUNNING;
  • 对于master/slave (有状态)资源,OCF_SUCCESS 表示资源以slave 模式运行,以Master资源运行的资源应该返回 OCF_RUNNING_MASTER, 而正常关闭的资源必须返回OCF_NOT_RUNNING
3.2 OCF_ERR_GENERIC (1)

行为返回一个一般错误。没有其他的错误码时,资源代理应该使用这个exit码。

集群资源管理器解释这个退出码为一个软错误。这就意味着,除非另外说明,出现这种错误的资源通常是在相同节点上重启。

3.3 OCF_ERR_ARGS (2)

用错的资源调用参数。这是资源调用时的一个安全保障警示,比如使用错误数量的参数。
Note:资源调用如果使用了不支持的行为参数,不应该用这个返回码,而是使用OCF_ERR_UNIMPLEMENTED
3.4 OCF_ERR_UNIMPLEMENTED (3)

当资源代理执行一个未实现的行为时应该返回这个值。

不是所有资源代理的行为都是强制实现的。promote, demote, migrate_from,notify等都是可选的行为,资源代理可以不实现。比如,当一个无状态的资源代理被错误的配置成 master/slave 资源, 资源代理应该在promote和demote行为时返回OCF_ERR_UNIMPLEMENTED.

3.5 OCF_ERR_PERM (4)

这个错误源于权限不够。也许是资源无权打开一个文件、一个socket、一个目录或者类似。

集群资源管理将这个错误解释为一个硬错误。这意味着,如果没有特别配置,资源管理器将尝试在另外的节点重启资源(也许新节点上没有那个权限问题)。

3.6 OCF_ERR_INSTALLED (5)

这个错误源于行为执行需要的一个组件缺失。这个可能是因为一个需要的二进制文件没有执行或者,或一个至关重要的配置文件不可读。

集群资源管理将这个错误解释为一个硬错误。这意味着,如果没有特别配置,资源管理器将尝试在另外的节点重启资源(也许新节点上相关文件或二进制代码是可得的)。

3.7 OCF_ERR_CONFIGURED (6)

这个错误源于资源错误的配置。比如,比如用户在需要整数的地方配置成一个字母组成的字符串。

集群资源管理将这个错误解释为一个致命错误。因为这个配置文件会扩散到全集群范围,所以无法在另一个节点恢复这个错误。当资源运行出现这个错误,集群管理器会尝试关闭资源,等待系统管理员介入。

3.8 OCF_ERR_RUNNING (7)

资源没有被发现正在运行。这是monitor行为会返回的退出码。注意,返回这个值意味着资源或者安全的关闭了,或者没有启动。

如果资源是因为在一种错误条件下没有运行,monitor行为应该返回OCF_ERR_ 退出码中的一个,或者OCF_FAILED_MASTER

3.9 OCF_RUNNING_MASTER (8)

资源没有以Master身份运行。这个返回值只应用于有状态(Master/Slave)资源,也值针对monitor行为。

注意:没有“slave 身份运行”的退出码。这是因为和无状态资源正常运行没有区别。所以以slave身份运行的有状态资源,monitor行为的返回码应该是 OCF_SUCCESS。

3.10 OCF_FAILED_MASTER (9)

资源被发现以master身份运行失败。这个返回值只应用于有状态的(Master/Slave)资源的monitor行为。

资源管理器将这个错误解释为一个软错误。这意味着,如果没有别的配置,这个资源将就地(在同一节点)降级(demoting),停止,启动并提升(promoting)。

没有评论: