Skip to content

Commit

Permalink
Flake fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
hipek8 committed Feb 28, 2025
1 parent 49a85d3 commit 5e6d96a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 14 deletions.
32 changes: 20 additions & 12 deletions src/ralph/data_center/admin_actions.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import re
from typing import Union

from django.utils.translation import ugettext_lazy as _
from typing import Union

from ralph.data_center.models import DataCenterAsset

Expand All @@ -18,7 +18,7 @@ def assign_management_hostname_and_ip(modeladmin, request, queryset):
try:
rack_number_int = int(re.match(r'.*?(\d+).*?', dca.rack.name).groups()[0])
rack_number = '%03d' % rack_number_int # type: str
except:
except: # noqa
raise RuntimeError(f"invalid rack name {dca.rack.name}")

hostname = _infer_hostname(dca, rack_number)
Expand All @@ -27,19 +27,27 @@ def assign_management_hostname_and_ip(modeladmin, request, queryset):

if dca.slot_no: # blade server
dca.management_hostname = hostname
modeladmin.message_user(request, f"Updated management hostname for asset id: {dca.id}", level="INFO")
elif ip := _infer_ip(dca, rack_number): # others (i.e. server rack)
dca.management_ip = ip
dca.management_hostname = hostname
modeladmin.message_user(request, f"Updated management hostname and IP for asset id: {dca.id}", level="INFO")
modeladmin.message_user(
request, f"Updated management hostname for asset id: {dca.id}", level="INFO"
)
else:
raise RuntimeError("unknown error")
except Exception as e:
ip = _infer_ip(dca, rack_number) # others (i.e. server rack)
if ip:
dca.management_ip = ip
dca.management_hostname = hostname
modeladmin.message_user(
request,
f"Updated management hostname and IP for asset id: {dca.id}", level="INFO"
)
raise RuntimeError("unknown error")
except Exception as e: # noqa
modeladmin.message_user(request, f"Can't update asset id: {dca.id}: {e}", level="ERROR")
return


assign_management_hostname_and_ip.short_description = _("Assign management hostname and IP")


def _infer_hostname(asset: DataCenterAsset, rack_number: str) -> Union[str, None]:
dc = asset.rack.server_room.data_center
hostname_suffix = dc.management_hostname_suffix
Expand All @@ -53,6 +61,7 @@ def _infer_hostname(asset: DataCenterAsset, rack_number: str) -> Union[str, None
else:
return None


def _infer_ip(asset: DataCenterAsset, rack_number: str) -> Union[str, None]:
try:
ip_prefix = asset.rack.server_room.data_center.management_ip_prefix
Expand All @@ -61,13 +70,12 @@ def _infer_ip(asset: DataCenterAsset, rack_number: str) -> Union[str, None]:
# convert to int to remove zeros at the beginning
rack_ip_part = int(rack_number[1] + rack_number[0] + rack_number[2])
assert int(rack_ip_part) <= 255
except:
except: # noqa
raise RuntimeError(f"invalid rack name {asset.rack.name}")

try:
position_ip_part = asset.position + 200 # a magic number
if ip_prefix and rack_ip_part and position_ip_part:
return f"{ip_prefix}.{rack_ip_part}.{position_ip_part}"
except:
except: # noqa
raise RuntimeError(f"can't infer management IP address")

6 changes: 4 additions & 2 deletions src/ralph/data_center/tests/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from django.test import override_settings, RequestFactory, TransactionTestCase
from django.urls import reverse


from ralph.accounts.tests.factories import UserFactory
from ralph.assets.tests.factories import (
ServiceEnvironmentFactory,
Expand All @@ -18,7 +17,10 @@
from ralph.data_center.models import DataCenterAsset
from ralph.data_center.tests.factories import (
DataCenterAssetFactory,
RackFactory, DataCenterFactory, ServerRoomFactory, DataCenterAssetFullFactory
DataCenterAssetFullFactory,
DataCenterFactory,
RackFactory,
ServerRoomFactory
)
from ralph.lib.custom_fields.models import (
CustomField,
Expand Down

0 comments on commit 5e6d96a

Please sign in to comment.