# -*- coding: utf-8 -*-
'''
virt.query outputter
====================

Used to display the output from the :mod:`virt.query <salt.runners.virt.query>`
runner.
'''

# Import python libs
from __future__ import absolute_import, print_function, unicode_literals

# Import 3rd-party libs
from salt.ext import six


def output(data, **kwargs):  # pylint: disable=unused-argument
    '''
    Display output for the salt-run virt.query function
    '''
    out = ''
    for id_ in data['data']:
        out += '{0}\n'.format(id_)
        for vm_ in data['data'][id_]['vm_info']:
            out += '  {0}\n'.format(vm_)
            vm_data = data[id_]['vm_info'][vm_]
            if 'cpu' in vm_data:
                out += '    CPU: {0}\n'.format(vm_data['cpu'])
            if 'mem' in vm_data:
                out += '    Memory: {0}\n'.format(vm_data['mem'])
            if 'state' in vm_data:
                out += '    State: {0}\n'.format(vm_data['state'])
            if 'graphics' in vm_data:
                if vm_data['graphics'].get('type', '') == 'vnc':
                    out += '    Graphics: vnc - {0}:{1}\n'.format(
                            id_,
                            vm_data['graphics']['port'])
            if 'disks' in vm_data:
                for disk, d_data in six.iteritems(vm_data['disks']):
                    out += '    Disk - {0}:\n'.format(disk)
                    out += '      Size: {0}\n'.format(d_data['disk size'])
                    out += '      File: {0}\n'.format(d_data['file'])
                    out += '      File Format: {0}\n'.format(d_data['file format'])
            if 'nics' in vm_data:
                for mac in vm_data['nics']:
                    out += '    Nic - {0}:\n'.format(mac)
                    out += '      Source: {0}\n'.format(
                                vm_data['nics'][mac]['source'][next(six.iterkeys(vm_data['nics'][mac]['source']))])
                    out += '      Type: {0}\n'.format(vm_data['nics'][mac]['type'])
    return out
