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
if not vm :
90
101
logging .debug ("Creating Virtual machine.." )
@@ -96,6 +107,7 @@ def netbox_create_or_update(self, config):
96
107
platform = self .device_platform .id ,
97
108
vcpus = vcpus ,
98
109
memory = memory ,
110
+ disk = disk ,
99
111
tenant = tenant .id if tenant else None ,
100
112
tags = [{"name" : x } for x in self .tags ],
101
113
)
@@ -111,6 +123,9 @@ def netbox_create_or_update(self, config):
111
123
if vm .memory != memory :
112
124
vm .memory = memory
113
125
updated += 1
126
+ if vm .disk != disk :
127
+ vm .disk = disk
128
+ updated += 1
114
129
115
130
vm_tags = sorted (set ([x .name for x in vm .tags ]))
116
131
tags = sorted (set (self .tags ))
0 commit comments