注意

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

硬件监控

node-proxy 是指定运行代理的内部名称,该代理对机器的硬件进行盘点,提供不同的状态并使操作员能够执行一些操作。它从 RedFish API 收集详细信息,处理并将数据推送到 Ceph 管理守护程序中的代理端点。

digraph G { node [shape=record]; mgr [label="{<mgr> ceph manager}"]; dashboard [label="<dashboard> ceph dashboard"]; agent [label="<agent> agent"]; redfish [label="<redfish> redfish"]; agent -> redfish [label=" 1." color=green]; agent -> mgr [label=" 2." color=orange]; dashboard:dashboard -> mgr [label=" 3."color=lightgreen]; node [shape=plaintext]; legend [label=<<table border="0" cellborder="1" cellspacing="0"> <tr><td bgcolor="lightgrey">Legend</td></tr> <tr><td align="center">1. Collects data from redfish API</td></tr> <tr><td align="left">2. Pushes data to ceph mgr</td></tr> <tr><td align="left">3. Query ceph mgr</td></tr> </table>>]; }

限制

目前,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 hardware status [hostname] [--category CATEGORY] [--format plain | json]

支持的类别是

  • summary (默认)

  • memory

  • storage

  • processors

  • network

  • power

  • fans

  • firmwares

  • criticals

示例

硬件健康状态摘要

# 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    |
+------------+-----------+------------+----------+-----------------+

开发者

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

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.data(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.fullreport(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.summary(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.criticals(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.memory(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.storage(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.network(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.power(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.processors(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.fans(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.firmwares(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

NodeProxyEndpoint.led(**kwargs)

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

  • spec:这可以是一个字符串列表或一个现有对象(一个类或实例),用作模拟对象的规范。如果传入一个对象,则通过对该对象调用 dir(不包括不支持的魔术属性和方法)来形成字符串列表。访问此列表中不存在的任何属性都会引发 AttributeError

    如果 spec 是一个对象(而不是字符串列表),则 mock.__class__ 返回 spec 对象的类。这允许模拟通过 isinstance 测试。

  • spec_setspec 的更严格变体。如果使用,尝试在模拟上设置或获取 spec_set 中不存在的属性将引发 AttributeError

  • side_effect:每当调用 Mock 时都会调用的函数。请参阅 side_effect 属性。可用于引发异常或动态更改返回值。该函数使用与模拟相同的参数调用,除非它返回 DEFAULT,否则此函数的返回值将用作返回值。

    如果 side_effect 是一个可迭代对象,则每次对模拟的调用都将返回可迭代对象中的下一个值。如果可迭代对象的任何成员是异常,它们将被引发而不是返回。

  • return_value:调用模拟时返回的值。默认情况下,这是一个新的 Mock(在首次访问时创建)。请参阅 return_value 属性。

  • wraps:模拟对象要包装的项目。如果 wraps 不为 None,则调用 Mock 会将调用传递给被包装对象(返回真实结果)。对模拟的属性访问将返回一个 Mock 对象,该对象包装了被包装对象的相应属性(因此尝试访问不存在的属性将引发 AttributeError)。

    如果模拟设置了显式的 return_value,则调用不会传递给被包装对象,而是返回 return_value

  • name:如果模拟有一个名称,它将用于模拟的 repr 中。这对于调试很有用。名称会传播到子模拟。

模拟也可以使用任意关键字参数调用。这些将用于在创建模拟后设置模拟上的属性。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入