@Override
    public OpenstackVtap updateVtap(OpenstackVtap description) {
        checkNotNull(description, VTAP_DESC_NULL, "vtap");

        Set<DeviceId> txDevices = description.type().isValid(Type.VTAP_TX) ?
                getEdgeDevice(Type.VTAP_TX, description.vtapCriterion()) : ImmutableSet.of();
        Set<DeviceId> rxDevices = description.type().isValid(Type.VTAP_RX) ?
                getEdgeDevice(Type.VTAP_RX, description.vtapCriterion()) : ImmutableSet.of();

        DefaultOpenstackVtap vtap = DefaultOpenstackVtap.builder(description)
                .txDeviceIds(txDevices)
                .rxDeviceIds(rxDevices)
                .build();
        return store.updateVtap(vtap, true);
    }
@Test
    public void testUpdateVtap() {
        OpenstackVtap updated = DefaultOpenstackVtap.builder(VTAP_2)
                .vtapCriterion(VTAP_CRITERION_1)
                .build();
        target.updateVtap(updated);
        assertEquals(ERR_NOT_MATCH, updated.vtapCriterion(), target.getVtap(VTAP_ID_2).vtapCriterion());

        updated = DefaultOpenstackVtap.builder(VTAP_2)
                .build();
        target.updateVtap(updated);

        validateEvents(VTAP_UPDATED, VTAP_UPDATED);
    }