示例#1
0
    def __new__(cls, group, **kwargs):
        log.debug("FreeNAS_Group.__new__: enter")
        log.debug("FreeNAS_Group.__new__: group = %s", group)

        if 'dflags' in kwargs:
            dflags = kwargs['dflags']
        else:
            dflags = _get_dflags()

        obj = None
        if dflags & U_AD_ENABLED:
            obj = FreeNAS_ActiveDirectory_Group(group, **kwargs)
        elif dflags & U_NT4_ENABLED:
            obj = FreeNAS_NT4_Group(group, **kwargs)
        elif dflags & U_NIS_ENABLED:
            obj = FreeNAS_NIS_Group(group, **kwargs)
        elif dflags & U_LDAP_ENABLED:
            obj = FreeNAS_LDAP_Group(group, **kwargs)
        elif dflags & U_DC_ENABLED:
            obj = FreeNAS_DomainController_Group(group, **kwargs)

        if obj is None:
            obj = FreeNAS_Local_Group(group, **kwargs)

        if not obj or not obj._gr:
            obj = None

        if obj:
            obj = obj._gr

        log.debug("FreeNAS_Group.__new__: leave")
        return obj
示例#2
0
    def __new__(cls, group, **kwargs):

        if 'dflags' in kwargs:
            dflags = kwargs['dflags']
        else:
            dflags = _get_dflags()

        obj = None
        try:
            if dflags & U_AD_ENABLED:
                obj = FreeNAS_ActiveDirectory_Group(group, **kwargs)
            elif dflags & U_NIS_ENABLED:
                obj = FreeNAS_NIS_Group(group, **kwargs)
            elif dflags & U_LDAP_ENABLED:
                obj = FreeNAS_LDAP_Group(group, **kwargs)
            elif dflags & U_DC_ENABLED:
                obj = FreeNAS_DomainController_Group(group, **kwargs)
        except:
            log.debug(
                'Failed to get group from directory service, falling back to local',
                exc_info=True)

        if obj is None:
            obj = FreeNAS_Local_Group(group, **kwargs)

        if not obj or not obj._gr:
            obj = None

        if obj:
            obj = obj._gr

        return obj