mirror of
https://github.com/home-assistant/core.git
synced 2026-09-03 10:05:58 -05:00
Fix Proxmox VE storage usage percentage crash on missing used_fraction (#167136)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
190ee49e3a
commit
437f5ef66c
@@ -426,7 +426,11 @@ STORAGE_SENSORS: tuple[ProxmoxStorageSensorEntityDescription, ...] = (
|
||||
ProxmoxStorageSensorEntityDescription(
|
||||
key="storage_used_percentage",
|
||||
translation_key="storage_used_percentage",
|
||||
value_fn=lambda data: round(data["used_fraction"] * 100, 1),
|
||||
value_fn=lambda data: (
|
||||
round(value * 100, 1)
|
||||
if (value := data.get("used_fraction")) is not None
|
||||
else None
|
||||
),
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
|
||||
@@ -5,13 +5,17 @@ from unittest.mock import MagicMock, patch
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.const import STATE_UNKNOWN, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
from . import setup_integration
|
||||
|
||||
from tests.common import MockConfigEntry, snapshot_platform
|
||||
from tests.common import (
|
||||
MockConfigEntry,
|
||||
async_load_json_array_fixture,
|
||||
snapshot_platform,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
@@ -38,3 +42,29 @@ async def test_all_entities(
|
||||
snapshot,
|
||||
mock_config_entry.entry_id,
|
||||
)
|
||||
|
||||
|
||||
async def test_storage_missing_used_fraction(
|
||||
hass: HomeAssistant,
|
||||
mock_proxmox_client: MagicMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
) -> None:
|
||||
"""Test storage usage percentage sensor when used_fraction is missing."""
|
||||
storage_data = await async_load_json_array_fixture(
|
||||
hass, "nodes/storage.json", "proxmoxve"
|
||||
)
|
||||
# Remove used_fraction from all storage entries
|
||||
storage_without_fraction = [
|
||||
{key: value for key, value in storage.items() if key != "used_fraction"}
|
||||
for storage in storage_data
|
||||
]
|
||||
mock_proxmox_client._node_mock.storage.get.return_value = storage_without_fraction
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.proxmoxve.PLATFORMS",
|
||||
[Platform.SENSOR],
|
||||
):
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
|
||||
state = hass.states.get("sensor.storage_local_storage_usage_percentage")
|
||||
assert state.state == STATE_UNKNOWN
|
||||
|
||||
Reference in New Issue
Block a user