def vni_add(self, **kwargs):
        """Add VNIs to the EVPN Instance
        Args:
            rbridge_id (str): rbridge-id for device.
            evpn_instance (str): Name of the evpn instance.
            vni (str): vnis to the evpn instance
            get (bool): Get config instead of editing config. (True, False)
            delete (bool): True, delete the vni configuration
            callback (function): A function executed upon completion of the
                method.  The only parameter passed to `callback` will be the
                ``ElementTree`` `config`.
        Returns:
            Return value of `callback`.

        Raises:
            KeyError: if `rbridge_id`,`evpn_instance`, 'vni' is not passed.
            ValueError: if `rbridge_id`, `evpn_instance`, 'vni' is invalid.
        Examples:
            >>> import pynos.device
            >>> switches = ['10.24.39.211', '10.24.39.203']
            >>> auth = ('admin', 'password')
            >>> for switch in switches:
            ...     conn = (switch, '22')
            ...     with pynos.device.Device(conn=conn, auth=auth) as dev:
            ...         output = dev.bgp.vni_add(rbridge_id='2',
            ...         evpn_instance="leaf1", vni='10')
            ...         output = dev.bgp.vni_add(rbridge_id='2',
            ...         evpn_instance="leaf1", vni='10', delete=True)
            ...         output = dev.bgp.vni_add(rbridge_id='2',
            ...         evpn_instance="leaf1", vni='10', delete=True)
            ...         output = dev.bgp.vni_add(rbridge_id='2',
            ...         get=True)

        """
        rbridge_id = kwargs['rbridge_id']
        get_config = kwargs.pop('get', False)
        delete = kwargs.pop('delete', False)
        callback = kwargs.pop('callback', self._callback)
        result = []

        method_class = self._rbridge
        if not get_config:
            evpn_instance = kwargs['evpn_instance']
            vni = kwargs['vni']
            if not delete:
                method_name = 'rbridge_id_evpn_instance_vni_vni_add_add'
                vni_add = getattr(method_class, method_name)
                vni_args = dict(rbridge_id=rbridge_id,
                                instance_name=evpn_instance,
                                add=vni)
                config = vni_add(**vni_args)
            else:
                method_name = 'rbridge_id_evpn_instance_vni_vni_add_remove'
                vni_add = getattr(method_class, method_name)
                vni_args = dict(rbridge_id=rbridge_id,
                                instance_name=evpn_instance,
                                remove=vni)
                config = vni_add(**vni_args)
                config.find('.//*vni-add').set('operation', 'delete')
            result = callback(config)

        elif get_config:
            evpn_instance = kwargs.pop('evpn_instance', '')
            method_name = 'rbridge_id_evpn_instance_vni_vni_add_add'
            vni_add = getattr(method_class, method_name)
            vni_args = dict(rbridge_id=rbridge_id, instance_name=evpn_instance,
                            add='')
            config = vni_add(**vni_args)
            evpninstance = ''
            evpn_vni = ''
            output = callback(config, handler='get_config')
            for item in output.data.findall('.//{*}evpn-instance'):
                if item.find('.//{*}instance-name') is not None:
                    evpninstance = item.find('.//{*}instance-name').text

                if item.find('.//{*}add') is not None:
                    evpn_vni = item.find('.//{*}add').text
            tmp = {'rbridge_id': rbridge_id, 'evpn_instance': evpninstance,
                   'vni': evpn_vni}
            result.append(tmp)
        return result