'Get the disk type(s) of an aggregate (may be a list).'

def _get_aggregate_disk_types(self, aggregate_name, shared=False):

    disk_types = set()
    if shared:
        disk_raid_info = {'disk-shared-info': {'aggregate-list': {'shared-aggregate-info': {'aggregate-name': aggregate_name}}}}
    else:
        disk_raid_info = {'disk-aggregate-info': {'aggregate-name': aggregate_name}}
    api_args = {'query': {'storage-disk-info': {'disk-raid-info': disk_raid_info}}, 'desired-attributes': {'storage-disk-info': {'disk-raid-info': {'effective-disk-type': None}}}}
    try:
        result = self.send_iter_request('storage-disk-get-iter', api_args, enable_tunneling=False)
    except netapp_api.NaApiError as e:
        if (e.code == netapp_api.EAPINOTFOUND):
            LOG.debug('Disk    types    can    only    be    collected    with    cluster    scoped    credentials.')
        else:
            LOG.exception('Failed    to    get    disk    info    for    aggregate    %s.', aggregate_name)
        return disk_types
    attributes_list = (result.get_child_by_name('attributes-list') or netapp_api.NaElement('none'))
    for storage_disk_info in attributes_list.get_children():
        disk_raid_info = (storage_disk_info.get_child_by_name('disk-raid-info') or netapp_api.NaElement('none'))
        disk_type = disk_raid_info.get_child_content('effective-disk-type')
        if disk_type:
            disk_types.add(disk_type)
    return disk_types
