import centralauth
import requests
import json
import time

DEBUG = False

centralauth_db=centralauth.get_centralauth()

time.sleep(5)

all_text="""
all:
  vars:
      ansible_network_os: arubanetworks.aoscx.aoscx
      ansible_connection: arubanetworks.aoscx.aoscx  # REST API via pyaoscx connection method
      ansible_aoscx_validate_certs: False
      ansible_aoscx_use_proxy: False
      ansible_acx_no_proxy: True
      ansible_ssh_common_args: "-o PreferredAuthentications=password -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
"""


headers = {
    'Accept': 'application/json',
    'Authorization': f'Bearer {centralauth_db['access_token']}',
    }

offset=1
page_size=300

switch_dict={}

while True:

    url = f"{centralauth_db['base_url']}/monitoring/v1/switches?limit={page_size}&offset={offset}"

    response = requests.get(url, headers=headers)

    #print(response.text)

    j=json.loads(response.text)

    if j['count']==0:
        break

    if DEBUG:
        print(json.dumps(j,indent=2))

    for switch in j['switches']:
        if not switch['status'] == 'Down' and not switch['ip_address']=='':
            switch_dict[switch['name']]=switch
            #print (switch['name'],switch['serial'],switch['ip_address'])

    offset+=page_size

current_building=''
for switch_name in sorted(switch_dict):
    switch=switch_dict[switch_name]
    building=switch_name.split("-")[0]
    if not building == current_building:
        print(f"{building}:")
        print( "  hosts:")
        current_building=building
    print(f"    {switch_name}:")
    print(f"      ansible_host: {switch['ip_address']}")
    print(f"      building_name: {current_building}")
    print(f"      serial_num: {switch['serial']}")

print(f"{all_text}")  
