Use device_id for zwave_js/replace_failed_node command (#72785)

This commit is contained in:
Raman Gupta 2022-06-01 00:42:07 -04:00 committed by GitHub
parent 1ef59d1e73
commit 394442e8a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 27 deletions

View File

@ -1083,8 +1083,7 @@ async def websocket_remove_node(
@websocket_api.websocket_command( @websocket_api.websocket_command(
{ {
vol.Required(TYPE): "zwave_js/replace_failed_node", vol.Required(TYPE): "zwave_js/replace_failed_node",
vol.Required(ENTRY_ID): str, vol.Required(DEVICE_ID): str,
vol.Required(NODE_ID): int,
vol.Optional(INCLUSION_STRATEGY, default=InclusionStrategy.DEFAULT): vol.All( vol.Optional(INCLUSION_STRATEGY, default=InclusionStrategy.DEFAULT): vol.All(
vol.Coerce(int), vol.Coerce(int),
vol.In( vol.In(
@ -1107,18 +1106,16 @@ async def websocket_remove_node(
) )
@websocket_api.async_response @websocket_api.async_response
@async_handle_failed_command @async_handle_failed_command
@async_get_entry @async_get_node
async def websocket_replace_failed_node( async def websocket_replace_failed_node(
hass: HomeAssistant, hass: HomeAssistant,
connection: ActiveConnection, connection: ActiveConnection,
msg: dict, msg: dict,
entry: ConfigEntry, node: Node,
client: Client,
driver: Driver,
) -> None: ) -> None:
"""Replace a failed node with a new node.""" """Replace a failed node with a new node."""
controller = driver.controller assert node.client.driver
node_id = msg[NODE_ID] controller = node.client.driver.controller
inclusion_strategy = InclusionStrategy(msg[INCLUSION_STRATEGY]) inclusion_strategy = InclusionStrategy(msg[INCLUSION_STRATEGY])
force_security = msg.get(FORCE_SECURITY) force_security = msg.get(FORCE_SECURITY)
provisioning = ( provisioning = (
@ -1232,7 +1229,7 @@ async def websocket_replace_failed_node(
try: try:
result = await controller.async_replace_failed_node( result = await controller.async_replace_failed_node(
controller.nodes[node_id], node,
INCLUSION_STRATEGY_NOT_SMART_START[inclusion_strategy.value], INCLUSION_STRATEGY_NOT_SMART_START[inclusion_strategy.value],
force_security=force_security, force_security=force_security,
provisioning=provisioning, provisioning=provisioning,

View File

@ -1511,7 +1511,7 @@ async def test_replace_failed_node(
dev_reg = dr.async_get(hass) dev_reg = dr.async_get(hass)
# Create device registry entry for mock node # Create device registry entry for mock node
dev_reg.async_get_or_create( device = dev_reg.async_get_or_create(
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,
identifiers={(DOMAIN, "3245146787-67")}, identifiers={(DOMAIN, "3245146787-67")},
name="Node 67", name="Node 67",
@ -1526,8 +1526,7 @@ async def test_replace_failed_node(
{ {
ID: 1, ID: 1,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
INCLUSION_STRATEGY: InclusionStrategy.DEFAULT.value, INCLUSION_STRATEGY: InclusionStrategy.DEFAULT.value,
} }
) )
@ -1607,10 +1606,12 @@ async def test_replace_failed_node(
assert msg["event"]["event"] == "node removed" assert msg["event"]["event"] == "node removed"
# Verify device was removed from device registry # Verify device was removed from device registry
device = dev_reg.async_get_device( assert (
identifiers={(DOMAIN, "3245146787-67")}, dev_reg.async_get_device(
identifiers={(DOMAIN, "3245146787-67")},
)
is None
) )
assert device is None
client.driver.receive_event(nortek_thermostat_added_event) client.driver.receive_event(nortek_thermostat_added_event)
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
@ -1686,8 +1687,7 @@ async def test_replace_failed_node(
{ {
ID: 2, ID: 2,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value, INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value,
PLANNED_PROVISIONING_ENTRY: { PLANNED_PROVISIONING_ENTRY: {
DSK: "test", DSK: "test",
@ -1719,8 +1719,7 @@ async def test_replace_failed_node(
{ {
ID: 3, ID: 3,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value, INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value,
QR_PROVISIONING_INFORMATION: { QR_PROVISIONING_INFORMATION: {
VERSION: 0, VERSION: 0,
@ -1772,8 +1771,7 @@ async def test_replace_failed_node(
{ {
ID: 4, ID: 4,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value, INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value,
QR_CODE_STRING: "90testtesttesttesttesttesttesttesttesttesttesttesttest", QR_CODE_STRING: "90testtesttesttesttesttesttesttesttesttesttesttesttest",
} }
@ -1800,8 +1798,7 @@ async def test_replace_failed_node(
{ {
ID: 6, ID: 6,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
INCLUSION_STRATEGY: InclusionStrategy.DEFAULT.value, INCLUSION_STRATEGY: InclusionStrategy.DEFAULT.value,
QR_CODE_STRING: "90testtesttesttesttesttesttesttesttesttesttesttesttest", QR_CODE_STRING: "90testtesttesttesttesttesttesttesttesttesttesttesttest",
} }
@ -1821,8 +1818,7 @@ async def test_replace_failed_node(
{ {
ID: 7, ID: 7,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
} }
) )
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
@ -1839,8 +1835,7 @@ async def test_replace_failed_node(
{ {
ID: 8, ID: 8,
TYPE: "zwave_js/replace_failed_node", TYPE: "zwave_js/replace_failed_node",
ENTRY_ID: entry.entry_id, DEVICE_ID: device.id,
NODE_ID: 67,
} }
) )
msg = await ws_client.receive_json() msg = await ws_client.receive_json()