1
+ import json
1
2
import os
3
+ import subprocess
2
4
3
5
import netbox_agent .dmidecode as dmidecode
4
6
from netbox_agent .config import config
@@ -47,6 +49,14 @@ def get_memory(self):
47
49
def get_vcpus (self ):
48
50
return os .cpu_count ()
49
51
52
+ def get_disk (self ):
53
+ disk_space = 0
54
+ disk_data = subprocess .getoutput ("lshw -json -c disk" )
55
+ for disk in json .loads (disk_data ):
56
+ size = int (disk .get ("size" , 0 )) / 1073741824
57
+ disk_space += size
58
+ return round (disk_space , 1 )
59
+
50
60
def get_netbox_vm (self ):
51
61
hostname = get_hostname (config )
52
62
vm = nb .virtualization .virtual_machines .get (name = hostname )
@@ -85,6 +95,7 @@ def netbox_create_or_update(self, config):
85
95
86
96
vcpus = self .get_vcpus ()
87
97
memory = self .get_memory ()
98
+ disk = self .get_disk ()
88
99
tenant = self .get_netbox_tenant ()
89
100
cluster = self .get_netbox_cluster (config .virtual .cluster_name )
90
101
@@ -97,6 +108,7 @@ def netbox_create_or_update(self, config):
97
108
platform = self .device_platform .id ,
98
109
vcpus = vcpus ,
99
110
memory = memory ,
111
+ disk = disk ,
100
112
tenant = tenant .id if tenant else None ,
101
113
tags = [{"name" : x } for x in self .tags ],
102
114
)
@@ -112,6 +124,9 @@ def netbox_create_or_update(self, config):
112
124
if vm .memory != memory :
113
125
vm .memory = memory
114
126
updated += 1
127
+ if vm .disk != disk :
128
+ vm .disk = disk
129
+ updated += 1
115
130
116
131
vm_tags = sorted (set ([x .name for x in vm .tags ]))
117
132
tags = sorted (set (self .tags ))
0 commit comments