Skip to content

Commit

Permalink
Adding TPM as an inventory item
Browse files Browse the repository at this point in the history
  • Loading branch information
BerndKue committed Oct 16, 2024
1 parent c1d7611 commit 58dedf4
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
19 changes: 18 additions & 1 deletion netbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,7 @@ def update_device_inventory(self, server_inventory):
# Controllers
if server_inventory.get('Controllers'):

# only get controllers that actually have disitems attached
# only get controllers that actually have disk drives attached
server_inventory_controller = []
for item in server_inventory['Controllers']:
if item.get('DrivesAttached'):
Expand All @@ -568,3 +568,20 @@ def update_device_inventory(self, server_inventory):
server_inventory = server_inventory_controller,
netbox_inventory = netbox_inventory_controller
)

# Trusted Platform Modules
if server_inventory.get('TrustedModules'):

server_inventory_tpm = server_inventory['TrustedModules']

netbox_inventory_tpm = self.filter_items(netbox_inventory, "TPM")
netbox_inventory_tpm = self._check_item_amount(
server_inventory_tpm,
netbox_inventory_tpm
)

self._update_inventory_items(
netbox_device_id = netbox_device_id,
server_inventory = server_inventory_tpm,
netbox_inventory = netbox_inventory_tpm
)
20 changes: 19 additions & 1 deletion redfish_collector.py
Original file line number Diff line number Diff line change
Expand Up @@ -770,6 +770,23 @@ def _get_network_info(self, fields):

self._inventory.update({'NetworkAdapters': network_cards_updated})

def _get_tpm_info(self):
logging.info(" Target %s: Get the TPM data.", self.target)
systeminfo = self.connect_server(self._urls['Systems'])
tpm_modules = []
if systeminfo and systeminfo.get('TrustedModules'):
for tpm in systeminfo['TrustedModules']:
module_type = tpm.get('InterfaceType')
module_state = tpm.get('Status', {}).get('State', 'Unknown')
tpm_info = {
'Description': f'{module_type} - {module_state}',
'Manufacturer': self._inventory['Manufacturer'],
'NetboxName': 'TPM'
}
tpm_modules.append(tpm_info)

self._inventory.update({'TrustedModules': tpm_modules})

def _collect_component_data(self, component, method, component_name, fields=None):
if component in self._urls and self._urls[component]:
if fields:
Expand All @@ -793,9 +810,10 @@ def collect(self):
# Get the System URLs
self._get_system_urls()
if not self._urls.get('Systems'):
return
return None

# Collect data for different components
self._collect_component_data('Systems', self._get_tpm_info, "TPM")
self._collect_component_data('Chassis', self._get_chassis_urls, "Chassis")
self._collect_component_data(
'Storage', self._get_storage_info, "Storage",
Expand Down

0 comments on commit 58dedf4

Please sign in to comment.