注意

本文档适用于 Ceph 开发版本。

硬件监控

node-proxy是用于指定正在运行的代理的内部名称,该代理清点机器的硬件,提供不同的状态,并允许操作员执行某些操作。

digraph G {

限制

目前,该node-proxy代理依赖于 RedFish API。node-proxy代理和ceph-mgr守护程序都需要能够访问带外网络才能工作。

部署代理

第一步是为带外管理工具提供凭证。
这可以在使用服务规范文件添加主机时完成:
# cat host.yml
---
service_type: host
hostname: node-10
addr: 10.10.10.10
oob:
  addr: 20.20.20.10
  username: admin
  password: p@ssword

应用规范:

# ceph orch apply -i host.yml
Added host 'node-10' with addr '10.10.10.10'

部署代理:

# ceph config set mgr mgr/cephadm/hw_monitoring true

命令行界面

orch 硬件 status[主机名] [--category 类别] [--format plain | json]

支持的类别是:

  • 摘要(默认)

  • 内存

  • 存储

  • 处理器

  • 网络

  • 电源

  • 风扇

  • 固件

  • 关键

示例

硬件健康状况摘要

# ceph orch hardware status
+------------+---------+-----+-----+--------+-------+------+
|    HOST    | STORAGE | CPU | NET | MEMORY | POWER | FANS |
+------------+---------+-----+-----+--------+-------+------+
|   node-10  |    ok   |  ok |  ok |   ok   |   ok  |  ok  |
+------------+---------+-----+-----+--------+-------+------+

存储设备报告

# ceph orch hardware status IBM-Ceph-1 --category storage
+------------+--------------------------------------------------------+------------------+----------------+----------+----------------+--------+---------+
|    HOST    |                          NAME                          |      MODEL       |      SIZE      | PROTOCOL |       SN       | STATUS |  STATE  |
+------------+--------------------------------------------------------+------------------+----------------+----------+----------------+--------+---------+
|   node-10  | Disk 8 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT99QLL    |   OK   | Enabled |
|   node-10  | Disk 10 in Backplane 1 of Storage Controller in Slot 2 | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT98ZYX    |   OK   | Enabled |
|   node-10  | Disk 11 in Backplane 1 of Storage Controller in Slot 2 | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT98ZWB    |   OK   | Enabled |
|   node-10  | Disk 9 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT98ZC9    |   OK   | Enabled |
|   node-10  | Disk 3 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT9903Y    |   OK   | Enabled |
|   node-10  | Disk 1 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT9901E    |   OK   | Enabled |
|   node-10  | Disk 7 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT98ZQJ    |   OK   | Enabled |
|   node-10  | Disk 2 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT99PA2    |   OK   | Enabled |
|   node-10  | Disk 4 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT99PFG    |   OK   | Enabled |
|   node-10  | Disk 0 in Backplane 0 of Storage Controller in Slot 2  | MZ7L33T8HBNAAD3  | 3840755981824  |   SATA   | S6M5NE0T800539 |   OK   | Enabled |
|   node-10  | Disk 1 in Backplane 0 of Storage Controller in Slot 2  | MZ7L33T8HBNAAD3  | 3840755981824  |   SATA   | S6M5NE0T800554 |   OK   | Enabled |
|   node-10  | Disk 6 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT98ZER    |   OK   | Enabled |
|   node-10  | Disk 0 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT98ZEJ    |   OK   | Enabled |
|   node-10  | Disk 5 in Backplane 1 of Storage Controller in Slot 2  | ST20000NM008D-3D | 20000588955136 |   SATA   |    ZVT99QMH    |   OK   | Enabled |
|   node-10  |           Disk 0 on AHCI Controller in SL 6            |  MTFDDAV240TDU   |  240057409536  |   SATA   |  22373BB1E0F8  |   OK   | Enabled |
|   node-10  |           Disk 1 on AHCI Controller in SL 6            |  MTFDDAV240TDU   |  240057409536  |   SATA   |  22373BB1E0D5  |   OK   | Enabled |
+------------+--------------------------------------------------------+------------------+----------------+----------+----------------+--------+---------+

固件详细信息

# ceph orch hardware status node-10 --category firmwares
+------------+----------------------------------------------------------------------------+--------------------------------------------------------------+----------------------+-------------+--------+
|    HOST    |                                 COMPONENT                                  |                             NAME                             |         DATE         |   VERSION   | STATUS |
+------------+----------------------------------------------------------------------------+--------------------------------------------------------------+----------------------+-------------+--------+
|   node-10  |               current-107649-7.03__raid.backplane.firmware.0               |                         Backplane 0                          | 2022-12-05T00:00:00Z |     7.03    |   OK   |


... omitted output ...


|   node-10  |               previous-25227-6.10.30.20__idrac.embedded.1-1                |             Integrated Remote Access Controller              |      00:00:00Z       |  6.10.30.20 |   OK   |
+------------+----------------------------------------------------------------------------+--------------------------------------------------------------+----------------------+-------------+--------+

硬件关键警告报告

# ceph orch hardware status --category criticals
+------------+-----------+------------+----------+-----------------+
|    HOST    | COMPONENT |    NAME    |  STATUS  |      STATE      |
+------------+-----------+------------+----------+-----------------+
|   node-10  |   power   | PS2 Status | critical |    unplugged    |
+------------+-----------+------------+----------+-----------------+

开发者

cephadm.agent.NodeProxyEndpoint(mgr)
NodeProxyEndpoint.__init__(mgr)
NodeProxyEndpoint.oob(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.data(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.fullreport(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.摘要(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.关键(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.内存(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.存储(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.网络(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.电源(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.处理器(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.风扇(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.固件(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

NodeProxyEndpoint.led(**kwargs)

创建一个新的Mock对象。Mock接受几个可选参数,这些参数指定 Mock 对象的行为:

  • . 如果使用,尝试在 Mock 上设置或获取不在传递给: 这可以是字符串列表或现有对象(类或实例),它充当 Mock 对象的规范。如果你传递一个对象,那么通过调用对象的 dir(排除不支持的魔法属性和方法)将形成字符串列表。访问此列表中未指定的任何属性将引发AttributeError.

    如果. 如果使用,尝试在 Mock 上设置或获取不在传递给是对象(而不是字符串列表)那么mock.__class__返回 spec 对象的类。这允许 Mock 通过isinstance测试。

  • spec_set: spec 的更严格的变体. 如果使用,尝试在 Mock 上设置或获取不在传递给. If used, attempting to set or get an attribute on the mock that isn’t on the object passed as spec_set的对象上的属性将引发AttributeError.

  • side_effect: 每当调用 Mock 时都要调用的函数。参见side_effect属性。对于引发异常或动态更改返回值很有用。该函数使用与 Mock 相同的参数调用,除非它返回DEFAULT,否则该函数的返回值用作返回值。

    如果side_effect是可迭代的,那么每次调用 Mock 都将返回可迭代中的下一个值。如果可迭代中的任何成员是异常,则将引发异常而不是返回。

  • return_value: 调用 Mock 时返回的值。默认情况下,这是一个在第一次访问时创建的新 Mock。参见return_value属性。

  • wraps: Mock 对象要包装的项目。如果wraps不是 None,那么调用 Mock 将将调用传递到包装对象(返回实际结果)。属性访问在 Mock 上将返回一个 Mock 对象,该对象包装了包装对象的相应属性(因此尝试访问不存在的属性将引发AttributeError搜索)。

    如果 Mock 有明确的return_value设置,则调用不会被传递到包装对象,而是返回return_value

  • name: 如果 Mock 有名称,则它将用于 Mock 的 repr。这对于调试很有用。名称传播到子 Mock。

Mocks 还可以用任意关键字参数调用。这些将在 Mock 创建后将用于设置 Mock 的属性。

由 Ceph 基金会提供

Ceph 文档是一个由非盈利Ceph 基金会资助和托管的社会资源。。如果您想支持此项目和其他工作,请考虑现在加入.