def get_assigned_licenses(service_instance, entity_ref=None, entity_name=None,
                          license_assignment_manager=None):
    '''
    Returns the licenses assigned to an entity. If entity ref is not provided,
    then entity_name is assumed to be the vcenter. This is later checked if
    the entity name is provided.

    service_instance
        The Service Instance Object from which to obtain the licenses.

    entity_ref
        VMware entity to get the assigned licenses for.
        If None, the entity is the vCenter itself.
        Default is None.

    entity_name
        Entity name used in logging.
        Default is None.

    license_assignment_manager
        The LicenseAssignmentManager object of the service instance.
        If not provided it will be retrieved.
        Default is None.
    '''
    if not license_assignment_manager:
        license_assignment_manager = \
                get_license_assignment_manager(service_instance)
    if not entity_name:
        raise salt.exceptions.ArgumentValueError('No entity_name passed')
    # If entity_ref is not defined, then interested in the vcenter
    entity_id = None
    entity_type = 'moid'
    check_name = False
    if not entity_ref:
        if entity_name:
            check_name = True
        entity_type = 'uuid'
        try:
            entity_id = service_instance.content.about.instanceUuid
        except vim.fault.NoPermission as exc:
            log.exception(exc)
            raise salt.exceptions.VMwareApiError(
                'Not enough permissions. Required privilege: '
                '{0}'.format(exc.privilegeId))
        except vim.fault.VimFault as exc:
            log.exception(exc)
            raise salt.exceptions.VMwareApiError(exc.msg)
        except vmodl.RuntimeFault as exc:
            log.exception(exc)
            raise salt.exceptions.VMwareRuntimeError(exc.msg)
    else:
        entity_id = entity_ref._moId

    log.trace('Retrieving licenses assigned to \'%s\'', entity_name)
    try:
        assignments = \
                license_assignment_manager.QueryAssignedLicenses(entity_id)
    except vim.fault.NoPermission as exc:
        log.exception(exc)
        raise salt.exceptions.VMwareApiError(
            'Not enough permissions. Required privilege: '
            '{0}'.format(exc.privilegeId))
    except vim.fault.VimFault as exc:
        log.exception(exc)
        raise salt.exceptions.VMwareApiError(exc.msg)
    except vmodl.RuntimeFault as exc:
        log.exception(exc)
        raise salt.exceptions.VMwareRuntimeError(exc.msg)

    if entity_type == 'uuid' and len(assignments) > 1:
        log.trace('Unexpectectedly retrieved more than one'
                  ' VCenter license assignment.')
        raise salt.exceptions.VMwareObjectRetrievalError(
            'Unexpected return. Expect only a single assignment')

    if check_name:
        if entity_name != assignments[0].entityDisplayName:
            log.trace('Getting license info for wrong vcenter: %s != %s',
                      entity_name, assignments[0].entityDisplayName)
            raise salt.exceptions.VMwareObjectRetrievalError(
                'Got license assignment info for a different vcenter')

    return [a.assignedLicense for a in assignments]
def get_assigned_licenses ( service_instance , entity_ref = None , entity_name = None , license_assignment_manager = None ) : if not license_assignment_manager : license_assignment_manager = get_license_assignment_manager ( service_instance ) if not entity_name : raise salt . exceptions . ArgumentValueError ( 'No entity_name passed' ) entity_id = None entity_type = 'moid' check_name = False if not entity_ref : if entity_name : check_name = True entity_type = 'uuid' try : entity_id = service_instance . content . about . instanceUuid except vim . fault . NoPermission as exc : log . exception ( exc ) raise salt . exceptions . VMwareApiError ( 'Not enough permissions. Required privilege: ' '{0}' . format ( exc . privilegeId ) ) except vim . fault . VimFault as exc : log . exception ( exc ) raise salt . exceptions . VMwareApiError ( exc . msg ) except vmodl . RuntimeFault as exc : log . exception ( exc ) raise salt . exceptions . VMwareRuntimeError ( exc . msg ) else : entity_id = entity_ref . _moId log . trace ( 'Retrieving licenses assigned to \'%s\'' , entity_name ) try : assignments = license_assignment_manager . QueryAssignedLicenses ( entity_id ) except vim . fault . NoPermission as exc : log . exception ( exc ) raise salt . exceptions . VMwareApiError ( 'Not enough permissions. Required privilege: ' '{0}' . format ( exc . privilegeId ) ) except vim . fault . VimFault as exc : log . exception ( exc ) raise salt . exceptions . VMwareApiError ( exc . msg ) except vmodl . RuntimeFault as exc : log . exception ( exc ) raise salt . exceptions . VMwareRuntimeError ( exc . msg ) if entity_type == 'uuid' and len ( assignments ) > 1 : log . trace ( 'Unexpectectedly retrieved more than one' ' VCenter license assignment.' ) raise salt . exceptions . VMwareObjectRetrievalError ( 'Unexpected return. Expect only a single assignment' ) if check_name : if entity_name != assignments [ 0 ] . entityDisplayName : log . trace ( 'Getting license info for wrong vcenter: %s != %s' , entity_name , assignments [ 0 ] . entityDisplayName ) raise salt . exceptions . VMwareObjectRetrievalError ( 'Got license assignment info for a different vcenter' ) return [ a . assignedLicense for a in assignments ]
Returns the licenses assigned to an entity. If entity ref is not provided,
    then entity_name is assumed to be the vcenter. This is later checked if
    the entity name is provided.

    service_instance
        The Service Instance Object from which to obtain the licenses.

    entity_ref
        VMware entity to get the assigned licenses for.
        If None, the entity is the vCenter itself.
        Default is None.

    entity_name
        Entity name used in logging.
        Default is None.

    license_assignment_manager
        The LicenseAssignmentManager object of the service instance.
        If not provided it will be retrieved.
        Default is None.