Skip to content

Instantly share code, notes, and snippets.

@grafuls
Created October 24, 2025 10:16
Show Gist options
  • Select an option

  • Save grafuls/37540f1ca050f0e90697ef68d6d89298 to your computer and use it in GitHub Desktop.

Select an option

Save grafuls/37540f1ca050f0e90697ef68d6d89298 to your computer and use it in GitHub Desktop.
host metadata import from inventory yml
#! /usr/bin/env python3
import yaml
import urllib3
import os
from dotenv import load_dotenv
from quads_lib import QuadsApi
load_dotenv()
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
QUADS_USERNAME = os.getenv('QUADS_USERNAME')
QUADS_PASSWORD = os.getenv('QUADS_PASSWORD')
QUADS_BASEURL = os.getenv('QUADS_BASEURL')
def parse_inventory(inventory_file):
with open(inventory_file, 'r') as file:
inventory = yaml.load(file, Loader=yaml.FullLoader)
return inventory
def get_hosts(quads, model):
hosts = quads.filter_hosts({'model': model, 'retired': False, 'broken': False})
return hosts
def create_processor(quads, host, data):
processor = quads.create_processor(host.get('name'), data)
return processor
def create_memory(quads, host, data):
memory = quads.create_memory(host.get('name'), data)
return memory
def create_disk(quads, host, data):
disk = quads.create_disk(host.get('name'), data)
return disk
def main():
inventory = parse_inventory('inventory.yaml')
quads = QuadsApi(QUADS_USERNAME, QUADS_PASSWORD, QUADS_BASEURL)
quads.login()
for model in inventory:
hosts = get_hosts(quads, model['model'])
for host in hosts:
print(host.get('name'))
specs = model['specs']
if not host.get('processors'):
print("Processor:")
for processor in specs['processor']:
processor = create_processor(quads, host, processor)
print(f"Processor {processor.get('id')} created for {host.get('name')}")
if not host.get('memory'):
if specs.get('ram'):
memory = create_memory(quads, host, specs['ram'])
print(f"Memory {memory.get('id')} created for {host.get('name')}")
if not host.get('disks'):
if specs.get('storage'):
for storage in specs['storage']:
disk = create_disk(quads, host, storage)
print(f"Disk {disk.get('id')} created for {host.get('name')}")
quads.logout()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment