@@ -307,6 +307,72 @@ def _get_dvs_uplink_portgroup(dvs, portgroup_name):
307
307
return None
308
308
309
309
310
+ def get_hardware_grains (service_instance ):
311
+ '''
312
+ Return hardware info for standard minion grains if the service_instance is a HostAgent type
313
+
314
+ service_instance
315
+ The service instance object to get hardware info for
316
+
317
+ .. versionadded:: Carbon
318
+ '''
319
+ hw_grain_data = {}
320
+ if get_inventory (service_instance ).about .apiType == 'HostAgent' :
321
+ view = service_instance .content .viewManager .CreateContainerView (service_instance .RetrieveContent ().rootFolder ,
322
+ [vim .HostSystem ], True )
323
+ if view :
324
+ if view .view :
325
+ if len (view .view ) > 0 :
326
+ hw_grain_data ['manufacturer' ] = view .view [0 ].hardware .systemInfo .vendor
327
+ hw_grain_data ['productname' ] = view .view [0 ].hardware .systemInfo .model
328
+
329
+ for _data in view .view [0 ].hardware .systemInfo .otherIdentifyingInfo :
330
+ if _data .identifierType .key == 'ServiceTag' :
331
+ hw_grain_data ['serialnumber' ] = _data .identifierValue
332
+
333
+ hw_grain_data ['osfullname' ] = view .view [0 ].summary .config .product .fullName
334
+ hw_grain_data ['osmanufacturer' ] = view .view [0 ].summary .config .product .vendor
335
+ hw_grain_data ['osrelease' ] = view .view [0 ].summary .config .product .version
336
+ hw_grain_data ['osbuild' ] = view .view [0 ].summary .config .product .build
337
+ hw_grain_data ['os_family' ] = view .view [0 ].summary .config .product .name
338
+ hw_grain_data ['os' ] = view .view [0 ].summary .config .product .name
339
+ hw_grain_data ['mem_total' ] = view .view [0 ].hardware .memorySize / 1024 / 1024
340
+ hw_grain_data ['biosversion' ] = view .view [0 ].hardware .biosInfo .biosVersion
341
+ hw_grain_data ['biosreleasedate' ] = view .view [0 ].hardware .biosInfo .releaseDate .date ().strftime ('%m/%d/%Y' )
342
+ hw_grain_data ['cpu_model' ] = view .view [0 ].hardware .cpuPkg [0 ].description
343
+ hw_grain_data ['kernel' ] = view .view [0 ].summary .config .product .productLineId
344
+ hw_grain_data ['num_cpu_sockets' ] = view .view [0 ].hardware .cpuInfo .numCpuPackages
345
+ hw_grain_data ['num_cpu_cores' ] = view .view [0 ].hardware .cpuInfo .numCpuCores
346
+ hw_grain_data ['num_cpus' ] = hw_grain_data ['num_cpu_sockets' ] * hw_grain_data ['num_cpu_cores' ]
347
+ hw_grain_data ['ip_interfaces' ] = {}
348
+ hw_grain_data ['ip4_interfaces' ] = {}
349
+ hw_grain_data ['ip6_interfaces' ] = {}
350
+ hw_grain_data ['hwaddr_interfaces' ] = {}
351
+ for _vnic in view .view [0 ].configManager .networkSystem .networkConfig .vnic :
352
+ hw_grain_data ['ip_interfaces' ][_vnic .device ] = []
353
+ hw_grain_data ['ip4_interfaces' ][_vnic .device ] = []
354
+ hw_grain_data ['ip6_interfaces' ][_vnic .device ] = []
355
+
356
+ hw_grain_data ['ip_interfaces' ][_vnic .device ].append (_vnic .spec .ip .ipAddress )
357
+ hw_grain_data ['ip4_interfaces' ][_vnic .device ].append (_vnic .spec .ip .ipAddress )
358
+ if _vnic .spec .ip .ipV6Config :
359
+ hw_grain_data ['ip6_interfaces' ][_vnic .device ].append (_vnic .spec .ip .ipV6Config .ipV6Address )
360
+ hw_grain_data ['hwaddr_interfaces' ][_vnic .device ] = _vnic .spec .mac
361
+ hw_grain_data ['host' ] = view .view [0 ].configManager .networkSystem .dnsConfig .hostName
362
+ hw_grain_data ['domain' ] = view .view [0 ].configManager .networkSystem .dnsConfig .domainName
363
+ hw_grain_data ['fqdn' ] = '{0}{1}{2}' .format (
364
+ view .view [0 ].configManager .networkSystem .dnsConfig .hostName ,
365
+ ('.' if view .view [0 ].configManager .networkSystem .dnsConfig .domainName else '' ),
366
+ view .view [0 ].configManager .networkSystem .dnsConfig .domainName )
367
+
368
+ for _pnic in view .view [0 ].configManager .networkSystem .networkInfo .pnic :
369
+ hw_grain_data ['hwaddr_interfaces' ][_pnic .device ] = _pnic .mac
370
+
371
+ hw_grain_data ['timezone' ] = view .view [0 ].configManager .dateTimeSystem .dateTimeInfo .timeZone .name
372
+ view = None
373
+ return hw_grain_data
374
+
375
+
310
376
def get_inventory (service_instance ):
311
377
'''
312
378
Return the inventory of a Service Instance Object.
0 commit comments