@@ -84,7 +84,7 @@ class OpenStackHandler(SourceBase):
8484 "region" : None ,
8585 "user_domain" : None ,
8686 "project_domain" : None ,
87- "group_name" : "Openstack"
87+ "group_name" : "Openstack" ,
8888 "validate_tls_certs" : False ,
8989 "cluster_exclude_filter" : None ,
9090 "cluster_include_filter" : None ,
@@ -163,6 +163,7 @@ def __init__(self, name=None, settings=None, inventory=None):
163163 self .init_successful = True
164164 self .permitted_clusters = dict ()
165165 self .cluster_host_map = dict ()
166+ self .volume_map = dict ()
166167 self .processed_host_names = dict ()
167168 self .processed_vm_names = dict ()
168169 self .processed_vm_uuid = list ()
@@ -354,14 +355,18 @@ def apply(self):
354355 for availability_zone in availability_zones :
355356 self .add_cluster (availability_zone )
356357
357- servers = self .session .compute .servers (details = True , all_projects = True )
358- for server in servers :
359- self .add_virtual_machine (server )
360-
361358 hypervisors = self .session .compute .hypervisors (details = True )
362359 for hypervisor in hypervisors :
363360 self .add_host (hypervisor )
364361
362+ volumes = self .session .block_storage .volumes (details = True , all_projects = True )
363+ for volume in volumes :
364+ self .add_volume (volume )
365+
366+ servers = self .session .compute .servers (details = True , all_projects = True )
367+ for server in servers :
368+ self .add_virtual_machine (server )
369+
365370 self .update_basic_data ()
366371
367372 @staticmethod
@@ -951,7 +956,7 @@ def add_host(self, obj):
951956 if log .level == DEBUG3 :
952957 try :
953958 log .info ("Cluster data" )
954- dump (obj .service_details )
959+ dump (obj .service_details . to_dict () )
955960 except Exception as e :
956961 log .error (e )
957962
@@ -1043,9 +1048,19 @@ def add_host(self, obj):
10431048
10441049 return
10451050
1051+ def add_volume (self , obj ):
1052+ """
1053+ Parse OpenStack volume and store in in a map.
1054+ """
1055+
1056+ id = obj .id
1057+ size = obj .size
1058+
1059+ self .volume_map [id ] = size
1060+
10461061 def add_virtual_machine (self , obj ):
10471062 """
1048- Parse a OpenStack VM add to NetBox once all data is gathered.
1063+ Parse a OpenStack VM add to NetBox once all data is gathered.
10491064
10501065 Parameters
10511066 ----------
@@ -1109,7 +1124,11 @@ def add_virtual_machine(self, obj):
11091124 if platform is not None :
11101125 platform = self .get_object_relation (platform , "vm_platform_relation" , fallback = platform )
11111126
1112- disk = int (obj .flavor ["disk" ])
1127+ disk = 0
1128+ for volume in obj .attached_volumes :
1129+ volid = volume ["id" ]
1130+ size = self .volume_map [volid ]
1131+ disk += int (size )
11131132
11141133 annotation = None
11151134 if bool (self .skip_vm_comments ) is False :
@@ -1145,9 +1164,9 @@ def add_virtual_machine(self, obj):
11451164 nic_ips [network ] = list ()
11461165 for address in addresses :
11471166 nic_ips [network ].append (address ["addr" ])
1148- if address ["version" ] == 4 :
1167+ if int ( address ["version" ]) == 4 :
11491168 vm_primary_ip4 = address ["addr" ]
1150- if address ["version" ] == 6 :
1169+ if int ( address ["version" ]) == 6 :
11511170 vm_primary_ip6 = address ["addr" ]
11521171 full_name = unquote (f"vNIC{ count } ({ network } )" )
11531172 vm_nic_data = {
0 commit comments