This repository has been archived by the owner on Oct 19, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 14
/
utils.py
67 lines (47 loc) · 2.89 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import os
import json
from assisted_service_client import ApiClient, Configuration, api, models
class InventoryHost:
def __init__(self, host_dict):
self._host = host_dict
self._inventory = json.loads(host_dict['inventory'])
def get_inventory_host_nics_data(self):
interfaces_list = self._inventory['interfaces']
return [{'name': interface.get('name', ''), 'model': interface.get('product', ''), 'mac': interface.get('mac_address'), 'ip': self._get_network_interface_ip(interface), 'speed': interface.get('speed_mbps', 0)} for interface in interfaces_list]
def get_inventory_host_cpu_data(self):
cpu = self._inventory['cpu']
return {'model': cpu.get('model_name', ''), 'arch': cpu.get('architecture', ''), 'flags': cpu.get('flags', ''), 'clockMegahertz': cpu.get('frequency', 0.0), 'count': cpu.get('count', 0)}
def get_inventory_host_storage_data(self):
disks_list = self._inventory['disks']
return [{'name': disk.get('name', ''), 'vendor': disk.get('vendor', ''), 'sizeBytes': disk.get('size_bytes', 0), 'model': disk.get('model', ''), 'wwn': disk.get('wwn', ''), 'hctl': disk.get('hctl', None), 'serialNumber': disk.get('serial', ''), 'rotational': True if disk.get('drive_type', '') == 'HDD' else False} for disk in disks_list]
def get_inventory_host_memory(self):
memory = self._inventory['memory']
return int(memory.get('physical_bytes', 0) / 1024 / 1024)
def get_inventory_host_name(self):
return self._host.get('requested_hostname', '')
def get_inventory_host_system_vendor(self):
system_vendor =self._inventory['system_vendor']
return {'manufacturer': system_vendor.get('manufacturer', ''), 'productName': system_vendor.get('product_name', ''), 'serialNumber': system_vendor.get('serial_number', None)}
def is_role(self, role):
return self._host['role'] == role
def _get_network_interface_ip(self, interface):
ipv4_addresses = interface.get('ipv4_addresses', [])
if len(ipv4_addresses) > 0:
return ipv4_addresses[0].split("/")[0]
ipv6_addresses = interface.get('ipv6_addresses', [])
if len(ipv6_addresses) > 0:
return ipv6_addresses[0].split("/")[0]
return " "
def get_inventory_hosts(inventory_endpoint, cluster_id, token, skip_cert_verification=False, ca_cert_path=None):
configs = Configuration()
configs.host = inventory_endpoint
configs.api_key["X-Secret-Key"] = token
configs.verify_ssl = not skip_cert_verification
configs.ssl_ca_cert = ca_cert_path
apiClient = ApiClient(configuration=configs)
client = api.InstallerApi(api_client=apiClient)
hosts_list = client.list_hosts(cluster_id=cluster_id)
hosts_list.sort(key=sortFunc)
return [InventoryHost(host) for host in hosts_list if host['status'] != 'disabled']
def sortFunc(host):
return host['requested_hostname']