Search in sources :

Example 16 with OvsdbRowStore

use of org.onosproject.ovsdb.controller.OvsdbRowStore in project onos by opennetworkinglab.

the class DefaultOvsdbClient method dropInterface.

@Override
public boolean dropInterface(String ifaceName) {
    OvsdbRowStore rowStore = getRowStore(DATABASENAME, BRIDGE);
    if (rowStore == null) {
        log.warn("Failed to get BRIDGE table");
        return false;
    }
    ConcurrentMap<String, Row> bridgeTableRows = rowStore.getRowStore();
    if (bridgeTableRows == null) {
        log.warn("Failed to get BRIDGE table rows");
        return false;
    }
    // interface name is unique
    Optional<String> bridgeId = bridgeTableRows.keySet().stream().filter(uuid -> getPortUuid(ifaceName, uuid) != null).findFirst();
    if (bridgeId.isPresent()) {
        String portId = getPortUuid(ifaceName, bridgeId.get());
        deleteConfig(PORT, UUID, portId, BRIDGE, PORTS, Uuid.uuid(portId));
        return true;
    } else {
        log.warn("Unable to find the interface with name {}", ifaceName);
        return false;
    }
}
Also used : QUEUE_EXTERNAL_ID_KEY(org.onosproject.ovsdb.controller.OvsdbConstant.QUEUE_EXTERNAL_ID_KEY) Controller(org.onosproject.ovsdb.rfc.table.Controller) ColumnSchemaNotFoundException(org.onosproject.ovsdb.rfc.exception.ColumnSchemaNotFoundException) OFPORT(org.onosproject.ovsdb.controller.OvsdbConstant.OFPORT) PortNumber(org.onosproject.net.PortNumber) QueueId(org.onosproject.net.behaviour.QueueId) FromJsonUtil(org.onosproject.ovsdb.rfc.utils.FromJsonUtil) Map(java.util.Map) JsonNode(com.fasterxml.jackson.databind.JsonNode) Update(org.onosproject.ovsdb.rfc.operations.Update) Qos(org.onosproject.ovsdb.rfc.table.Qos) Callback(org.onosproject.ovsdb.rfc.jsonrpc.Callback) Set(java.util.Set) MIRRORS(org.onosproject.ovsdb.controller.OvsdbConstant.MIRRORS) OvsdbQueue(org.onosproject.ovsdb.controller.OvsdbQueue) Bridge(org.onosproject.ovsdb.rfc.table.Bridge) MIRROR(org.onosproject.ovsdb.controller.OvsdbConstant.MIRROR) Mirror(org.onosproject.ovsdb.rfc.table.Mirror) OvsdbPort(org.onosproject.ovsdb.controller.OvsdbPort) OperationResult(org.onosproject.ovsdb.rfc.message.OperationResult) OvsdbStore(org.onosproject.ovsdb.controller.OvsdbStore) DeviceId(org.onosproject.net.DeviceId) DATABASENAME(org.onosproject.ovsdb.controller.OvsdbConstant.DATABASENAME) Interface(org.onosproject.ovsdb.rfc.table.Interface) JsonRpcWriterUtil(org.onosproject.ovsdb.rfc.utils.JsonRpcWriterUtil) MirroringStatistics(org.onosproject.net.behaviour.MirroringStatistics) PORTS(org.onosproject.ovsdb.controller.OvsdbConstant.PORTS) ArrayList(java.util.ArrayList) DeviceCpuStats(org.onosproject.net.behaviour.DeviceCpuStats) Lists(com.google.common.collect.Lists) OvsdbInterface(org.onosproject.ovsdb.controller.OvsdbInterface) INTERFACE(org.onosproject.ovsdb.controller.OvsdbConstant.INTERFACE) BRIDGE_CONTROLLER(org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGE_CONTROLLER) OvsdbPortName(org.onosproject.ovsdb.controller.OvsdbPortName) QUEUE(org.onosproject.ovsdb.controller.OvsdbConstant.QUEUE) QosId(org.onosproject.net.behaviour.QosId) OvsdbRowStore(org.onosproject.ovsdb.controller.OvsdbRowStore) EXTERNAL_ID(org.onosproject.ovsdb.controller.OvsdbConstant.EXTERNAL_ID) EXTERNAL_ID_INTERFACE_ID(org.onosproject.ovsdb.controller.OvsdbConstant.EXTERNAL_ID_INTERFACE_ID) Uuid(org.onosproject.ovsdb.rfc.notation.Uuid) OvsdbTable(org.onosproject.ovsdb.rfc.table.OvsdbTable) Channel(io.netty.channel.Channel) ExecutionException(java.util.concurrent.ExecutionException) Futures(com.google.common.util.concurrent.Futures) OvsdbBridge(org.onosproject.ovsdb.controller.OvsdbBridge) Column(org.onosproject.ovsdb.rfc.notation.Column) MutationUtil(org.onosproject.ovsdb.rfc.utils.MutationUtil) OvsdbClientService(org.onosproject.ovsdb.controller.OvsdbClientService) Row(org.onosproject.ovsdb.rfc.notation.Row) CONTROLLER(org.onosproject.ovsdb.controller.OvsdbConstant.CONTROLLER) TableGenerator(org.onosproject.ovsdb.rfc.table.TableGenerator) ControlProtocolVersion(org.onosproject.net.behaviour.ControlProtocolVersion) Mutation(org.onosproject.ovsdb.rfc.notation.Mutation) OvsdbPortNumber(org.onosproject.ovsdb.controller.OvsdbPortNumber) OvsdbTableStore(org.onosproject.ovsdb.controller.OvsdbTableStore) QOS_EXTERNAL_ID_KEY(org.onosproject.ovsdb.controller.OvsdbConstant.QOS_EXTERNAL_ID_KEY) LoggerFactory(org.slf4j.LoggerFactory) TimeoutException(java.util.concurrent.TimeoutException) SettableFuture(com.google.common.util.concurrent.SettableFuture) DeviceMemoryStats(org.onosproject.net.behaviour.DeviceMemoryStats) QUEUES(org.onosproject.ovsdb.controller.OvsdbConstant.QUEUES) Delete(org.onosproject.ovsdb.rfc.operations.Delete) UUID(org.onosproject.ovsdb.controller.OvsdbConstant.UUID) ConditionUtil(org.onosproject.ovsdb.rfc.utils.ConditionUtil) Function(com.google.common.base.Function) ImmutableSet(com.google.common.collect.ImmutableSet) OFPORT_ERROR(org.onosproject.ovsdb.controller.OvsdbConstant.OFPORT_ERROR) TYPEVXLAN(org.onosproject.ovsdb.controller.OvsdbConstant.TYPEVXLAN) InetSocketAddress(java.net.InetSocketAddress) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) Operation(org.onosproject.ovsdb.rfc.operations.Operation) Objects(java.util.Objects) List(java.util.List) Optional(java.util.Optional) Queue(org.onosproject.ovsdb.rfc.table.Queue) OvsdbQos(org.onosproject.ovsdb.controller.OvsdbQos) Insert(org.onosproject.ovsdb.rfc.operations.Insert) MoreExecutors(com.google.common.util.concurrent.MoreExecutors) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) OvsdbNodeId(org.onosproject.ovsdb.controller.OvsdbNodeId) OvsdbMirror(org.onosproject.ovsdb.controller.OvsdbMirror) HashMap(java.util.HashMap) AtomicReference(java.util.concurrent.atomic.AtomicReference) ConcurrentMap(java.util.concurrent.ConcurrentMap) BRIDGE(org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGE) OvsdbMap(org.onosproject.ovsdb.rfc.notation.OvsdbMap) HashSet(java.util.HashSet) PORT(org.onosproject.ovsdb.controller.OvsdbConstant.PORT) ImmutableList(com.google.common.collect.ImmutableList) TableUpdates(org.onosproject.ovsdb.rfc.message.TableUpdates) OvsdbSet(org.onosproject.ovsdb.rfc.notation.OvsdbSet) PORT_QOS(org.onosproject.ovsdb.controller.OvsdbConstant.PORT_QOS) DatabaseSchema(org.onosproject.ovsdb.rfc.schema.DatabaseSchema) TableSchema(org.onosproject.ovsdb.rfc.schema.TableSchema) ColumnSchema(org.onosproject.ovsdb.rfc.schema.ColumnSchema) IpAddress(org.onlab.packet.IpAddress) Port(org.onosproject.ovsdb.rfc.table.Port) ControllerInfo(org.onosproject.net.behaviour.ControllerInfo) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) VersionMismatchException(org.onosproject.ovsdb.rfc.exception.VersionMismatchException) MirroringName(org.onosproject.net.behaviour.MirroringName) BRIDGES(org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGES) Maps(com.google.common.collect.Maps) INTERFACES(org.onosproject.ovsdb.controller.OvsdbConstant.INTERFACES) TimeUnit(java.util.concurrent.TimeUnit) Consumer(java.util.function.Consumer) QOS(org.onosproject.ovsdb.controller.OvsdbConstant.QOS) QueueDescription(org.onosproject.net.behaviour.QueueDescription) Mutate(org.onosproject.ovsdb.rfc.operations.Mutate) Collections(java.util.Collections) Condition(org.onosproject.ovsdb.rfc.notation.Condition) Row(org.onosproject.ovsdb.rfc.notation.Row) OvsdbRowStore(org.onosproject.ovsdb.controller.OvsdbRowStore)

Example 17 with OvsdbRowStore

use of org.onosproject.ovsdb.controller.OvsdbRowStore in project onos by opennetworkinglab.

the class DefaultOvsdbClient method getQoses.

@Override
public Set<OvsdbQos> getQoses() {
    Set<OvsdbQos> ovsdbQoses = new HashSet<>();
    OvsdbRowStore rowStore = getRowStore(DATABASENAME, QOS);
    if (rowStore == null) {
        log.debug("The qos uuid is null");
        return ovsdbQoses;
    }
    ConcurrentMap<String, Row> rows = rowStore.getRowStore();
    ovsdbQoses = rows.keySet().stream().map(uuid -> getRow(DATABASENAME, QOS, uuid)).map(this::getOvsdbQos).filter(Objects::nonNull).collect(Collectors.toSet());
    return ovsdbQoses;
}
Also used : OvsdbQos(org.onosproject.ovsdb.controller.OvsdbQos) Objects(java.util.Objects) Row(org.onosproject.ovsdb.rfc.notation.Row) OvsdbRowStore(org.onosproject.ovsdb.controller.OvsdbRowStore) HashSet(java.util.HashSet)

Example 18 with OvsdbRowStore

use of org.onosproject.ovsdb.controller.OvsdbRowStore in project onos by opennetworkinglab.

the class DefaultOvsdbClient method dropQos.

@Override
public void dropQos(QosId qosId) {
    OvsdbRowStore rowStore = getRowStore(DATABASENAME, QOS);
    if (rowStore != null) {
        ConcurrentMap<String, Row> qosTableRows = rowStore.getRowStore();
        Row qosRow = qosTableRows.values().stream().filter(r -> {
            OvsdbMap ovsdbMap = (OvsdbMap) (r.getColumn(EXTERNAL_ID).data());
            return qosId.name().equals(ovsdbMap.map().get(QOS_EXTERNAL_ID_KEY));
        }).findFirst().orElse(null);
        if (qosRow != null) {
            deleteConfig(QOS, UUID, qosRow.uuid().value(), PORT, PORT_QOS, qosRow.uuid());
        }
    }
}
Also used : OvsdbMap(org.onosproject.ovsdb.rfc.notation.OvsdbMap) Row(org.onosproject.ovsdb.rfc.notation.Row) OvsdbRowStore(org.onosproject.ovsdb.controller.OvsdbRowStore)

Example 19 with OvsdbRowStore

use of org.onosproject.ovsdb.controller.OvsdbRowStore in project onos by opennetworkinglab.

the class DefaultOvsdbClient method getLocalPorts.

@Override
public Set<OvsdbPort> getLocalPorts(Iterable<String> ifaceids) {
    Set<OvsdbPort> ovsdbPorts = new HashSet<>();
    OvsdbTableStore tableStore = getTableStore(DATABASENAME);
    if (tableStore == null) {
        return null;
    }
    OvsdbRowStore rowStore = tableStore.getRows(INTERFACE);
    if (rowStore == null) {
        return null;
    }
    ConcurrentMap<String, Row> rows = rowStore.getRowStore();
    for (String uuid : rows.keySet()) {
        Row row = getRow(DATABASENAME, INTERFACE, uuid);
        DatabaseSchema dbSchema = getDatabaseSchema(DATABASENAME);
        Interface intf = (Interface) TableGenerator.getTable(dbSchema, row, OvsdbTable.INTERFACE);
        if (intf == null || getIfaceid(intf) == null) {
            continue;
        }
        String portName = intf.getName();
        if (portName == null) {
            continue;
        }
        Set<String> ifaceidSet = Sets.newHashSet(ifaceids);
        if (portName.startsWith(TYPEVXLAN) || !ifaceidSet.contains(getIfaceid(intf))) {
            continue;
        }
        long ofPort = getOfPort(intf);
        if (ofPort < 0) {
            continue;
        }
        ovsdbPorts.add(new OvsdbPort(new OvsdbPortNumber(ofPort), new OvsdbPortName(portName)));
    }
    return ovsdbPorts;
}
Also used : OvsdbTableStore(org.onosproject.ovsdb.controller.OvsdbTableStore) OvsdbPortNumber(org.onosproject.ovsdb.controller.OvsdbPortNumber) OvsdbPortName(org.onosproject.ovsdb.controller.OvsdbPortName) OvsdbRowStore(org.onosproject.ovsdb.controller.OvsdbRowStore) OvsdbPort(org.onosproject.ovsdb.controller.OvsdbPort) Row(org.onosproject.ovsdb.rfc.notation.Row) Interface(org.onosproject.ovsdb.rfc.table.Interface) OvsdbInterface(org.onosproject.ovsdb.controller.OvsdbInterface) HashSet(java.util.HashSet) DatabaseSchema(org.onosproject.ovsdb.rfc.schema.DatabaseSchema)

Example 20 with OvsdbRowStore

use of org.onosproject.ovsdb.controller.OvsdbRowStore in project onos by opennetworkinglab.

the class DefaultOvsdbClient method getFirstRow.

@Override
public Optional<Object> getFirstRow(String dbName, OvsdbTable tblName) {
    DatabaseSchema dbSchema = getDatabaseSchema(dbName);
    if (Objects.isNull(dbSchema)) {
        return Optional.empty();
    }
    OvsdbTableStore tableStore = ovsdbStore.getOvsdbTableStore(dbName);
    if (tableStore == null) {
        return Optional.empty();
    }
    OvsdbRowStore rowStore = tableStore.getRows(tblName.tableName());
    if (rowStore == null) {
        return Optional.empty();
    }
    ConcurrentMap<String, Row> rows = rowStore.getRowStore();
    if (rows == null) {
        log.debug("The {} Table Rows is null", tblName);
        return Optional.empty();
    }
    // There should be only 1 row in this table
    Optional<String> uuid = rows.keySet().stream().findFirst();
    if (uuid.isPresent() && rows.containsKey(uuid.get())) {
        return Optional.of(TableGenerator.getTable(dbSchema, rows.get(uuid.get()), tblName));
    } else {
        return Optional.empty();
    }
}
Also used : OvsdbTableStore(org.onosproject.ovsdb.controller.OvsdbTableStore) Row(org.onosproject.ovsdb.rfc.notation.Row) OvsdbRowStore(org.onosproject.ovsdb.controller.OvsdbRowStore) DatabaseSchema(org.onosproject.ovsdb.rfc.schema.DatabaseSchema)

Aggregations

OvsdbRowStore (org.onosproject.ovsdb.controller.OvsdbRowStore)26 Row (org.onosproject.ovsdb.rfc.notation.Row)21 DatabaseSchema (org.onosproject.ovsdb.rfc.schema.DatabaseSchema)16 Uuid (org.onosproject.ovsdb.rfc.notation.Uuid)12 OvsdbMap (org.onosproject.ovsdb.rfc.notation.OvsdbMap)11 OvsdbTableStore (org.onosproject.ovsdb.controller.OvsdbTableStore)10 HashMap (java.util.HashMap)9 HashSet (java.util.HashSet)9 OvsdbBridge (org.onosproject.ovsdb.controller.OvsdbBridge)8 Operation (org.onosproject.ovsdb.rfc.operations.Operation)8 Map (java.util.Map)7 ConcurrentMap (java.util.concurrent.ConcurrentMap)7 Bridge (org.onosproject.ovsdb.rfc.table.Bridge)7 Condition (org.onosproject.ovsdb.rfc.notation.Condition)6 Mutation (org.onosproject.ovsdb.rfc.notation.Mutation)6 OvsdbSet (org.onosproject.ovsdb.rfc.notation.OvsdbSet)6 Mutate (org.onosproject.ovsdb.rfc.operations.Mutate)6 ImmutableSet (com.google.common.collect.ImmutableSet)5 ArrayList (java.util.ArrayList)5 Set (java.util.Set)5