From fa5cf665ce7e36a5a8abd6c43b558365f3c4fe41 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Thu, 14 Apr 2022 11:13:04 -0400 Subject: [PATCH] Fixes #9128: Resolve component labels per module bay position when installing modules --- docs/release-notes/version-3.2.md | 1 + .../dcim/models/device_component_templates.py | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/release-notes/version-3.2.md b/docs/release-notes/version-3.2.md index 33cfd140d..e73c3048e 100644 --- a/docs/release-notes/version-3.2.md +++ b/docs/release-notes/version-3.2.md @@ -26,6 +26,7 @@ * [#9100](https://github.com/netbox-community/netbox/issues/9100) - Include position field in module type YAML export * [#9116](https://github.com/netbox-community/netbox/issues/9116) - `assigned_to_interface` filter for IP addresses should not match FHRP group assignments * [#9118](https://github.com/netbox-community/netbox/issues/9118) - Fix validation error when importing VM child interfaces +* [#9128](https://github.com/netbox-community/netbox/issues/9128) - Resolve component labels per module bay position when installing modules --- diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index b363d6ea4..647abe148 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -124,6 +124,11 @@ class ModularComponentTemplateModel(ComponentTemplateModel): return self.name.replace('{module}', module.module_bay.position) return self.name + def resolve_label(self, module): + if module: + return self.label.replace('{module}', module.module_bay.position) + return self.label + class ConsolePortTemplate(ModularComponentTemplateModel): """ @@ -147,7 +152,7 @@ class ConsolePortTemplate(ModularComponentTemplateModel): def instantiate(self, **kwargs): return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, **kwargs ) @@ -175,7 +180,7 @@ class ConsoleServerPortTemplate(ModularComponentTemplateModel): def instantiate(self, **kwargs): return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, **kwargs ) @@ -215,7 +220,7 @@ class PowerPortTemplate(ModularComponentTemplateModel): def instantiate(self, **kwargs): return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, maximum_draw=self.maximum_draw, allocated_draw=self.allocated_draw, @@ -286,7 +291,7 @@ class PowerOutletTemplate(ModularComponentTemplateModel): power_port = None return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, power_port=power_port, feed_leg=self.feed_leg, @@ -326,7 +331,7 @@ class InterfaceTemplate(ModularComponentTemplateModel): def instantiate(self, **kwargs): return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, mgmt_only=self.mgmt_only, **kwargs @@ -397,7 +402,7 @@ class FrontPortTemplate(ModularComponentTemplateModel): rear_port = None return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, color=self.color, rear_port=rear_port, @@ -437,7 +442,7 @@ class RearPortTemplate(ModularComponentTemplateModel): def instantiate(self, **kwargs): return self.component_model( name=self.resolve_name(kwargs.get('module')), - label=self.label, + label=self.resolve_label(kwargs.get('module')), type=self.type, color=self.color, positions=self.positions,